该测试是出于好奇使用(cond vs.(or)。
我在我的理由中说明了不让它全球化。每个图形只执行一次,使其全局化的目的变得毫无意义。
mapcar语句仅在定义vla get layers后执行。
仔细观察后,我发现#层在mapcar语句中没有访问。。。不太清楚我在说什么。。
我的道歉AJ-你说得很对。 英雄联盟
没问题。
我以前收到过这种形式的代码,但那是很久以前的事了,我不知道如何启动这种代码。会是这样吗?
(DEFUN C:MRGLAYR ()
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
(PRINC)
)
(defun MergeLayers (#OldLayers #NewLayers / #Layers)
(setq #Layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(mapcar
'(lambda (o n)
(and (tblsearch "layer" o)
(or (tblsearch "layer" n) (vla-add #Layers n))
(vl-cmdf "_.-laymrg" "_n" o "" "_n" n "_y")
) ;_ and
) ;_ lambda
#OldLayers
#NewLayers
) ;_ mapcar
) ;_ defun
或者,如果运行脚本,您可以这样做:
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
在脚本中,或者在命令行中。
我可以把这一行放在一个脚本中,它将运行这个lisp程序?我不知道。如果我这样写剧本:
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
Zoom
E
QSAVE
它将合并A-1、B-2、C-3、D-4、最大化和保存? 对的 很不错的。。。我试试看。。。谢谢 很高兴你得到了你需要的。
并不是说这是最好的方法,但你甚至可以把一切都放在一个。scr文件并加载。
(defun MergeLayers (#OldLayers #NewLayers / #Layers)
(setq #Layers (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(mapcar
'(lambda (o n)
(and (tblsearch "layer" o)
(or (tblsearch "layer" n) (vla-add #Layers n))
(vl-cmdf "_.-laymrg" "_n" o "" "_n" n "_y")
) ;_ and
) ;_ lambda
#OldLayers
#NewLayers
) ;_ mapcar
)
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
页:
1
[2]