vbnewer 发表于 2024-12-24 16:40:40

多义线的70码怎么会变成128和129

本帖最后由 vbnewer 于 2024-12-24 16:43 编辑

我这里有个dwg文件,只要在这个图中将直线转换成多段线,非闭合多段线的70码就会变成128,闭合多段线的70码就会变成129。正常应该是0和1的呀,怎么会这样?查了下资料,说是128代表多义线重生,也不知道是什么意思。各位有没有遇到过这种情况?

文件见附件,有兴趣可以测试一下。

llsheng_73 发表于 2024-12-24 18:38:08

自贡黄明儒 发表于 2024-12-24 17:36
我炸开,再转成多段线,就是1 0,不知道你那个128 129怎么来的。

70多段线标志(按位编码);默认值为 0:
   1 = 关闭;128 = Plinegen
最下边那个线型生成开启就会在原来的0,1基础上加128

炸开,再转成多段线,就是1或0而不是129或128是因为系统变量PLINEGEN
保存位置:图形
初始值:0


设置围绕二维多段线的顶点生成线型图案的方式。 这并不适用于具有锥状线段的多段线。

0
在每个顶点以虚线开始并以虚线结束生成多段线

1
围绕多段线顶点生成连续的线型图案

如果PLINEGEN =0,那么新生成的多段线70组只会是0或1,同样线型会在每个顶点重新开始,如果它等于1,那么新生成的多段线70组就会有128,线型连续而不会重新开始

自贡黄明儒 发表于 2024-12-24 17:36:50

我炸开,再转成多段线,就是1 0,不知道你那个128 129怎么来的。

Andyhon 发表于 2024-12-24 17:41:37

http://www.mjtd.com/thread-19016-1-1.html

masterlong 发表于 2024-12-24 18:16:00

这种问题要探究
通常要列出所有系统变量
与正常dwg进行比对
加油

尘缘一生 发表于 2024-12-24 18:40:59

;;是否是曲线---(一级)---
(defun sl-iscur (e)
        (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list e))))
)
;;曲线是否封闭--(一级)----
;;(sl:isClosed (car (entsel)))
(defun sl:isClosed (e)
        (if (sl-iscur e)
                (or (vlax-curve-isclosed e) (equal (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e) 1e-5))
                nil
        )
)

vbnewer 发表于 2024-12-24 20:13:54

本帖最后由 vbnewer 于 2024-12-24 20:19 编辑

llsheng_73 发表于 2024-12-24 18:38
70多段线标志(按位编码);默认值为 0:
   1 = 关闭;128 = Plinegen
最下边那个线型生成开启就 ...
感谢解惑,问题解决了,就是这样原因。
看来这个PLINEGEN变量是存储在文件里的啊,在一个文件里设置只对该文件有效,我电脑里所有dwg文件只有这个文件是这种现象,其他文件都正常,我不知道有这个变量,更没有去设置过,不知道是怎么产生的。

vbnewer 发表于 2024-12-24 20:21:18

也感谢另外几位大神的关注。

gzcsun 发表于 2024-12-24 21:20:58

本帖最后由 gzcsun 于 2024-12-24 21:23 编辑

尘缘一生 发表于 2024-12-24 18:40
;;是否是曲线---(一级)---
(defun sl-iscur (e)
      (not (vl-catch-all-error-p (vl-catch-all-apply 'vlax ...
;;曲线是否封闭--(一级)----

应该是:曲线是否可以封闭。因为有些曲线不封闭而可以封闭的不显示nil,会显示数值。
页: [1]
查看完整版本: 多义线的70码怎么会变成128和129