AutoLISP删除图层
你好我是AutoLISP的新手,需要编写一个程序来删除文件中的所有层,但这些层除外:夹具形状、检查通道、拱门墙内部(构造)、拱门墙内部、拱门墙外部。到目前为止,我得到了一条错误消息:“错误:输入列表格式错误”
谢谢你! 欢迎来到CADTutor,劳雷尔!
您已经考虑过PURGE和LAYDEL命令了吗?
至于删除层,你发布的代码有几个错误(没什么大不了的),但我更感兴趣的是了解更多关于你到底想做什么的信息?您的代码删除了所有层上的实体,除了您希望保留的实体,而不是这些实体所在的层。
需要更多信息。 以下是一个快速参考,提供了一些常见错误消息的简要说明,以帮助您诊断问题:
http://lee-mac.com/errormessages.html 第一篇文章的代码平衡了偏执,你同时编辑了吗?然而,这一行有一个语法错误-点前面必须有一个空格:
(-4. "NOT>")
还有其他以“拱门墙”开头的层吗?如果不是,您可以将筛选器编写为:
(8 . "Fixture-Shapes,CHECKLANE,Arch-Wall-*")
谢谢大家的帮助!
伦德曼,
我正在尝试从中删除所有不需要的信息。我收到的DWG文件,这样当我导出到时,它们不会使我的计算机陷入困境。PDF并在Illustrator中编辑。我知道我真正需要的唯一信息是在指定的层上。理想情况下,我想删除所有其他层和他们的艺术品。
非常感谢。
1+吹扫和铺设
欢迎来到CADTutor,劳雷尔!
使用erase命令对您没有任何好处。如果要删除的图层上的布局(而非模型)或块内有实体
_Laydel将删除这些实体和层本身,而不考虑空间,唯一需要做的是确保其解锁,而不是当前层。
此代码将删除除列表中的层之外的所有层
(defun c:demo(/ 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
'("thislayer1"
"thislayer2"
"thislayer3"))))
(progn
(vla-put-lock itm :vlax-false)
(vl-cmdf "_.-laydel" "_N" name "" "_Y"))
)
)
(repeat 4 (vla-purgeall aDoc))
(princ)
)
现在,如果您只想删除列表中的内容
更换此线路
(not (member name '("thislayer1" "thislayer2" "thislayer3")))
用这个
5
HTH公司 pBe,
这真是太棒了!非常感谢。
页:
[1]