【一个想法】修改图形里Bylayer的图元为指定颜色,线型
例如 "Line_11" 图层,颜色:绿;线型:虚线,能不能通过程序把里面的所有Bylayer的图元颜色改为绿色,线型改为虚线,包括块里面的,
这样就可以很方便的合并和删除多余图层了,谢谢~~~
很好的一个想法啊,这样把一个杂乱的图形修改为标准图层就方便多了。
希望大家能给点意见,谢谢了~~~ 不然的话,合并修改图层的话bylayer的图层会跟新的图层一个颜色和线型,这样图形就变了,所以有了这个想法,希望大虾们给点建议谢谢~~~ 颜色和线型都可以bylayer要怎么改呢? 回复 tm20038175 的帖子
(defun c:tt(/ laydata doc ms blocks)
(setq layers (vla-get-Layers (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))))
(setq blocks (vla-get-blocks doc))
(vlax-for lay layers
(setq laydata (cons (list (vla-get-name lay) (vla-get-color lay) (vla-get-linetype lay)) laydata))
)
(vlax-for block blocks
(vlax-for obj block
(if (and (= 256 (vla-get-color obj)) (/= "0" (vla-get-layer obj)))
(vla-put-color obj (cadr (assoc (vla-get-layer obj) laydata)))
)
(if (and(= "ByLayer" (vla-get-linetype obj))(/= "0" (vla-get-layer obj)))
(vla-put-linetype obj (caddr (assoc (vla-get-layer obj) laydata)))
)
)
)
(setq ms (vla-get-ModelSpace doc))
(vlax-for obj ms
(if (= 256 (vla-get-color obj))
(vla-put-color obj (cadr (assoc (vla-get-layer obj) laydata)))
)
(if (= "ByLayer" (vla-get-linetype obj))
(vla-put-linetype obj (caddr (assoc (vla-get-layer obj) laydata)))
)
)
(princ)
)
回复 ZZXXQQ 的帖子
就是不要bylayer,每条线最好指定颜色,线型,不然合并的时候变成其他图层的颜色和线型了 回复 Gu_xl 的帖子
就是这个,十分感谢啦,可惜只有修改颜色的,线型也能修改吗? 回复 tm20038175 的帖子
程序已经包括线型和颜色了 回复 Gu_xl 的帖子
十分感谢您的回复,我拷贝了您的tt程序,执行后,发现颜色改为指定颜色了,线型全部是Bylayer,不是指定的线型(如实线,虚线,点化线……),奇怪了,难道是我的电脑出问题了吗? 回复 tm20038175 的帖子
我测试没问题!你把下面的代码修改一下试试:
(= "ByLayer" (vla-get-linetype obj))
===>
(= "BYLAYER" (strcase (vla-get-linetype obj)))
页:
[1]
2