Raje 发表于 2022-7-5 15:51:13

选择指定的图层对象

Hii,
我有层名称,如“地线”、“钢线”、“混凝土线”等。。
所以我需要选择所有提到的层命名包含对象,并删除它们。
这个任务有代码吗?
 
谢谢你。。

LanloyLisp 发表于 2022-7-5 16:02:05

 
试试看。。

Grrr 发表于 2022-7-5 16:13:47

未测试:
 
(defun C:test ( / acDoc SS )
(cond
   ( (not (ssget "X" '((8 . "Earth Line',Steel Line,Concrete Line")))) (prompt "\nNo Selection.") )
   ( (setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
   (vla-EndUndoMark acDoc) (vla-StartUndoMark acDoc)
   (vlax-map-collection (setq SS (vla-get-ActiveSelectionSet acDoc)) ''((x) (vl-catch-all-apply 'vla-Delete (list x))))
   (vla-Delete SS)
   (vla-EndUndoMark acDoc)
   )
)
(princ)
)
(vl-load-com)(princ)

Raje 发表于 2022-7-5 16:20:38

非常感谢。它正在工作。
您能否仅提供选择对象?而不是删除。
 
非常感谢。

Grrr 发表于 2022-7-5 16:27:18

 
感谢您的确认,
这应该限制对活动视口的选择(因为我之前的建议选择了所有视口中的对象,这可能是不需要的):
(defun C:test nil
(sssetfirst nil
   (ssget "X"
   (list
       '(8 . "Earth Line',Steel Line,Concrete Line")
       (if (= 1 (getvar 'cvport)) (cons 410 (getvar 'ctab)) '(410 . "Model"))
   )
   )
)
(princ)
)

LanloyLisp 发表于 2022-7-5 16:38:58

 
我的错。。我以为你想删除图层本身。。

Raje 发表于 2022-7-5 16:50:33

Grrr谢谢,它也工作得很好。

Raje 发表于 2022-7-5 16:51:28

 
哈哈,没关系,谢谢你。。
页: [1]
查看完整版本: 选择指定的图层对象