删除Mult中的特定层
大家好!我是AutoLISP的新手,希望能得到一些帮助。我想要一个lisp例程,可以从特定目录中的所有图形中删除特定层(以及其中的任何实体)(我可以在例程开始时选择)。图层列表可以特定于例程,因为所有图形都具有相同的图层。
我有1000多张画,我需要这样做,我真的不想把它们都单独做。
提前感谢您的帮助! 听起来像是一个脚本,可以批量处理一个文件夹充满了图纸将是一种方式。 评论
以下是我目前掌握的信息:
(defun c:ELAYER (/ aDoc name)
(setvar 'Clayer "0")
(repeat 4
(vla-purgeall
(setq aDoc (vla-get-ActiveDocument
(vlax-get-acad-object)))))
(vlax-for
itm
(vla-get-layers aDoc)
(if (and
(not (wcmatch
(setq name (vla-get-name itm))
"*|*"))
(not (eq name "0"))
(not (member name
'("STREETCL_CENTERLINE"
"SPOT_X_WATER_TEST"
"SPOT_X_GROUND_TEXT"
"SPOT_X_GROUND"
"SPOT_X_BRIDGE_TEXT"
"SPOT_X_BRIDGE"
"RAILROAD_CENTERLINE"
"CONTOUR_SIXHUNDEREDEIGHTYONE"
"CONTOUR_LABEL"
"CONTOUR_INTER_DEP"
"CONTOUR_INTER"
"CONTOUR_INDEX_DEP"
"CONTOUR_INDEX"
"CONTOUR_FOURNINETYTWO"
"SPOT_X_WATER"))))
(progn
(vla-put-lock itm :vlax-false)
(vl-cmdf "_.-laydel" "_N" name "" "_Y"))
)
)
(repeat 4 (vla-purgeall aDoc))
(princ)
)
我在vlax get acad object命令中遇到一个错误,它还没有批处理。有什么想法吗? 好的,我修复了错误,现在例程运行得很好。我怎样才能使它成为一个多批处理。dxf图形在同一文件夹中?
(defun c:ELAYER (/ aDoc name)
(setvar 'Clayer "0")
(repeat 4
(vla-purgeall
(setq aDoc (vla-get-ActiveDocument
(vlax-get-acad-object)))))
(vlax-for
itm
(vla-get-layers aDoc)
(if (and
(not (wcmatch
(setq name (vla-get-name itm))
"*|*"))
(not (eq name "0"))
(not (member name
'("STREETCL_CENTERLINE"
"SPOT_X_WATER_TEST"
"SPOT_X_GROUND_TEXT"
"SPOT_X_GROUND"
"SPOT_X_BRIDGE_TEXT"
"SPOT_X_BRIDGE"
"RAILROAD_CENTERLINE"
"CONTOUR_SIXHUNDEREDEIGHTYONE"
"CONTOUR_LABEL"
"CONTOUR_INTER_DEP"
"CONTOUR_INTER"
"CONTOUR_INDEX_DEP"
"CONTOUR_INDEX"
"CONTOUR_FOURNINETYTWO"
"SPOT_X_WATER"))))
(progn
(vla-put-lock itm :vlax-false)
(vl-cmdf "_.-laydel" "_N" name "" "_Y"))
)
)
(repeat 4 (vla-purgeall aDoc))
(princ)
)
我认为您必须编写一个“调用”lisp例程的脚本。 您可以使用以下脚本行,通过我的旧脚本编写器应用程序评估您的程序:
根据需要更改红色标记的项目。 请你妥善处理好吗
脚本名称和命令。
如果你能放在youtube上,像这样打印屏幕示例,那就更容易了
当做
伊姆兰 如何使用脚本请制作打印屏幕
举个例子。 关于特定的同一层,你能帮我删除多个图形(打印边界)我如何删除打印边界(所有多个图形) 这条线索可能很有趣:
https://www.theswamp.org/index.php?topic=40745.msg460267#msg460267
多亏了李·麦克
页:
[1]