如何一键控制外部参照的图层状态?
由于使用外部参照比较多,每次都要修改外部参照中的图层状态,比如说外部参照中的图层有:1、2、3、4、5、6需要冻结图层1、2,将图层3、4的颜色(在宿主中显示的颜色)改为251,将图层5、6的颜色改为8,每次参照新的图纸都要去修改这些图层的状态,外部参照仅图名不一样,图层名都是一样的,实际图层比举例中要多得多 ,能不能实现“一键改外部参照图层状态”呢?请高手支招
这个问题貌似大家不感兴趣啊,自己顶一下 (defun C:FF (/ EN L X ad layers)
(setq EN (nentsel "\nSelect Xref: ") L (cdr (assoc 8 (entget (car EN)))) X
(substr L 1 (vl-string-position (ascii "|") L)) )
(setq AD (vla-get-ActiveDocument (vlax-get-Acad-Object)) layers (vla-get-Layers
ad))
(if(/= (vl-string-search "|" L) nil)
(progn
(vlax-for layer layers
(if (/= (vl-string-search (strcatX "|") (vla-get-name layer)) nil)(vla-put-
Color layer 250))
)
(command ".REGEN")
)
(alert "Not an Xref!")
)
(prin1)
) 本帖最后由 theisland 于 2013-12-8 16:37 编辑
flyfox1047 发表于 2013-12-8 16:31 static/image/common/back.gif
(defun C:FF (/ EN L X ad layers)
(setq EN (nentsel "\nSelect Xref: ") L (cdr (assoc 8 (entget ...
好神速,赶紧试用~~开心~~
有这个提示
Select Xref: ; 错误: no function definition: VLA-PUT-
程序中怎么没看到其他多图层信息呢? (defun C:FF ()
(setq laylst nil)
(while
(setq entsll
(nentsel "\n 选择需要改变层颜色上的对象: ")
)
(setq laynam (cdr (assoc 8 (entget (car entsll)))))
(if (null laylst)
(setq laylst laynam)
(setq laylst (strcat laylst "," laynam))
)
(prompt (strcat "\n {" laylst "}"))
)
;end while
(if laylst
(progn
(setq lay-col (getint "\n输入层的新颜色: "))
(command "layer" "c" lay-col laylst "")
)
)
;end if
(princ)
)
;end function
;;;====================================================================
(PROMPT "\n 使用FF命令改变外部参照层的颜色.")
(PRINC) 没有改成一键自动的,至少是半自动了,源码上了,可以根据自己的想法稍加修改就行了 还是没反应哦 本帖最后由 flyfox1047 于 2013-12-8 17:48 编辑
theisland 发表于 2013-12-8 17:39 static/image/common/back.gif
还是没反应哦
这个手动输入的,需改变层的颜色需要在命令栏输入的 桑心啊,这个问题大家没什么兴趣,难道大家都不用外部参照吗?
页:
[1]
2