wizman 发表于 2022-7-6 10:50:50

我向李道歉,但我必须同意艾伦的观点。

alanjt 发表于 2022-7-6 10:52:52

 
 
该测试是出于好奇使用(cond vs.(or)。
 
我在我的理由中说明了不让它全球化。每个图形只执行一次,使其全局化的目的变得毫无意义。
 
mapcar语句仅在定义vla get layers后执行。

Lee Mac 发表于 2022-7-6 10:58:15

 
仔细观察后,我发现#层在mapcar语句中没有访问。。。不太清楚我在说什么。。
 
我的道歉AJ-你说得很对。

alanjt 发表于 2022-7-6 11:00:33

英雄联盟
没问题。

AQucsaiJr 发表于 2022-7-6 11:02:40

 
 
我以前收到过这种形式的代码,但那是很久以前的事了,我不知道如何启动这种代码。会是这样吗?
(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

Lee Mac 发表于 2022-7-6 11:05:06

或者,如果运行脚本,您可以这样做:
 
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
 
在脚本中,或者在命令行中。

AQucsaiJr 发表于 2022-7-6 11:08:48

 
我可以把这一行放在一个脚本中,它将运行这个lisp程序?我不知道。如果我这样写剧本:
(MergeLayers '("A" "B" "C" "D") '("1" "2" "3" "4"))
Zoom
E
QSAVE
它将合并A-1、B-2、C-3、D-4、最大化和保存?

Lee Mac 发表于 2022-7-6 11:11:19

对的

AQucsaiJr 发表于 2022-7-6 11:15:19

很不错的。。。我试试看。。。谢谢

alanjt 发表于 2022-7-6 11:18:07

很高兴你得到了你需要的。
并不是说这是最好的方法,但你甚至可以把一切都放在一个。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]
查看完整版本: 层太多!!!需要mer