svorgodne 发表于 2022-7-5 18:04:24

列表图层过滤器autolisp

是否可以通过autolisp从图形中的所有图层过滤器中获取列表?
 
到目前为止,我可以通过以下方式创建它们:
 

(command
"._-layer"
"_filter"
"_new"
"_group"
""
"0*"
"0"
"s"
"All"
""
)

 
但我无法从他们那里得到这份名单

satishrajdev 发表于 2022-7-5 18:18:13

如果我明白你的意思,试试这个:-
(defun layerlist (/ a b)
(if (setq a (tblnext "layer" t))
   (while a
   (setq b (cons (cdr (assoc 2 a)) b)
    a (tblnext "layer")
   )
   )
)
(reverse b)
)

rkmcswain 发表于 2022-7-5 18:24:06

这是一个起点
 


(dictsearch (vlax-vla-object->ename
       (vla-GetExtensionDictionary
         (vla-get-layers
         (vla-get-activedocument
             (vlax-get-acad-object)
           )
         )
       )
   )
   
"ACAD_LAYERFILTERS"
)


 
 
还有一些你可能会感兴趣的东西:http://www.cadtutor.net/forum/showthread.php?61032-图层特性过滤器

rkmcswain 发表于 2022-7-5 18:28:20

 
返回一个层列表。

svorgodne 发表于 2022-7-5 18:39:22

谢谢你们俩。。。我想我说得不够清楚。我需要的是一个
 
图层过滤器列表
 
不仅仅是图层列表
 
这就是我的意思。。。
 
https://www.cadtutor.net/forum/attachment.php?attachmentid=56912&cid=1&stc=1
 
无论如何,谢谢你。与此同时,我会继续寻找解决方案。
 
斯沃戈德内

svorgodne 发表于 2022-7-5 18:44:28

这是我将函数直接粘贴到textscr时的结果
 
(-1 . )
(0.“字典”)
(5.“45B8”)
(102“{ACAD_反应堆”)
(330 . )
(102 . "}")
(330 . )
(100.“AcDbDictionary”)
(280 . 0)
(281 . 1)
 
我做错什么了吗?我应该从这些层中得到合适的名字吗?
 
再次感谢。我会继续努力的。至少我通过每次重置过滤器来解决这个问题,尽管这并不是我想要的。我只想应用缺失的过滤器,而不是所有过滤器。
 
斯沃戈德内

Lee Mac 发表于 2022-7-5 18:50:20

考虑使用以下函数列出所有图层组过滤器:
由于组过滤器可能是嵌套的,如果图形包含以下结构中的图层组过滤器:
 

 
上述函数将返回以下内容:
4

svorgodne 发表于 2022-7-5 18:57:05

谢谢李,
 
像往常一样,你总是“救命稻草”。我已经欠你一些啤酒了。
 
Cya公司
 
斯沃戈德内

Lee Mac 发表于 2022-7-5 19:06:59

不客气,斯沃戈德内-我很高兴这有帮助。
页: [1]
查看完整版本: 列表图层过滤器autolisp