怎么在PU清理时保留原有ACAD.DWT模版里已经设定好的图层
ACAD.DWT模版已经预设了经常需要的图层及颜色,但作图时有些图层可能并没有任何对象,执行PU命令时没有任何对象的图层就会被清理掉,请问怎么实现在PU清理时保留原有ACAD.DWT模版里已经设定好的图层而不被清理掉。 本帖最后由 caoyin 于 2011-5-13 00:53 编辑(vlax-ldata-put "data" "layer-01" (tblobjname "layer" "图层名")) 回复 caoyin 的帖子
谢谢你,辛苦了! 回复 caoyin 的帖子
请教 caoyin 版主,怎样把“(vlax-ldata-put "data" "layer-01" (tblobjname "layer" "图层名"))”加到我的程序中或者怎样改呢?
我想保留所有的标注样式(defun c:puu()
(command "zoom""e" "purge" "la" "" "n" """purge" "lt" "" "n" "" "purge" "r" "" "n" "" "purge"
"b" "" "n" "" "purge" "p" "" "n" "" "purge" "st" "" "n" "" "qsave"))
我常用的图层有
谢谢了!
防止不被清理的最好方法就是使用它。 本帖最后由 mandala 于 2011-6-30 09:32 编辑
介绍一个实用的办法:
新建一个空的dwg,把这些图层加入后保存。写一个pu.lsp,在pu之后插入这个dwg。
回复 mandala 的帖子
自己写pu,把句柄靠前的图层保留 大师写的有条有里,我却看得云里雾里!
(defun c:relay ()
(setq oldcmd (getvar "cmdecho"))
(setvar "cmdecho" 0)
(setq laylist '("00图框" "3虚线" "33螺线" "3细线"
"4中心线" "5标注" "6点划线" "7不打印"
"8双点线" "90文字" "9标注"
)
)
(setq lay_n (length laylist)
m 0
lay_list '()
)
(while (/= m lay_n)
(setq lay_name (nth m laylist))
(if (/= (TBLOBJNAME "LAYER" lay_name) nil)
(progn
(setq lay_c (cdr (assoc 62 (tblsearch "layer" lay_name)))
lay_lt (cdr (assoc 6 (tblsearch "layer" lay_name)))
lay_n_lst (list lay_name lay_c lay_lt)
)
(setq lay_list (cons lay_n_lst lay_list))
)
)
(setq m (1+ m))
)
(command "purge" "a" "" "n")
(setq n (length lay_list)
m 0
)
(while (/= m n)
(setq lay_n_lst (nth m lay_list))
(if (= (TBLOBJNAME "LAYER" (nth 0 lay_n_lst)) nil)
(command "layer" "m" (nth 0 lay_n_lst)"c"(nth 1 lay_n_lst) "" "l" (nth 2 lay_n_lst) "" "")
)
(setq m (1+ m))
)
(setvar "cmdecho" oldcmd)
)
回复 zhynt 的帖子
zhynt大师,你的程序非常好,非常给力!我把我的部分加进去了,非常好用!
只有一丁点不解:会自动切换当前图层。
不过一点也不影响使用!
再次感谢 zhynt大师 对喜欢CAD 的 lsp 菜鸟们的热情帮助!
页:
[1]
2