xiaocainiao 发表于 2023-3-23 14:54:34

请教如何获取文件中的所有图层状态名称、不要图层过滤器

(defun c:QZT(/ ladict ladict1 m n statenemelst)
(setq ladict1(vla-GetExtensionDictionary (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object)))))
(repeat (setq m (vla-get-count ladict1))
    (setq ladict(vla-item ladict1 (setq m(1- m))))      
    (repeat (setq n(vla-get-count ladict))
      (setq statenemelst(cons (vla-get-name(vla-item ladict(setq n(1- n))))statenemelst))
    )
)
(princ)
)请教一下论坛的各位大神、这是我在论坛里面找到的关于获取文件内图层状态的代码、

之前用没啥问题、今天突然发现这个代码获取的不仅是文件内的图层状态、
还把图层过滤器也给提取出来了、想问一下大家有没有办法只获取图层状态、不要图层过滤器呢?





我只想获取到第一张图中的图层状态名、不想要下面的图层过滤器名称、
请教各位大神有没有好的方法,测试文件我放附件里面了、感谢大家!

xiaocainiao 发表于 2023-3-24 15:30:30

e2002 发表于 2023-3-24 15:10
update:查了一下,确认是2008版开始提供的,距今14年了。

至少在2012版就提供了这些函数:

谢谢、这个东西确实一直没用过、主要是全英文看不懂、我刚看了一圈、找到一个判断图层状态是否存在的函数、配合我上面的代码、就可以过滤出哪些是图层状态名、哪些是图层过滤器名称了

lee50310 发表于 2023-3-24 03:49:22

試試這個
(defun c:tt( / adoc)
   (setq lst nil)
   (setq adoc(vla-get-activedocument (vlax-get-acad-object)))
   (vlax-for lyr(vla-get-layers adoc)(setq lst (cons (vla-get-name lyr) lst)) )
   lst
);end_defun

xiaocainiao 发表于 2023-3-24 10:23:34

e2002 发表于 2023-3-24 09:57
最初是没有,后来为操作layerstate ,autodesk提供了一系列的AutoLISP函数,在帮助文档中有。

是不是需要CAD2021以上才行啊、我用的2020没有搜到图层状态有关函数、不知道是不是搜索方式不对

xiaocainiao 发表于 2023-3-24 06:35:59

lee50310 发表于 2023-3-24 03:49
試試這個

你这个是遍历图层吧、我想要的是获取图层状态名、不是图层名

e2002 发表于 2023-3-24 09:57:02

最初是没有,后来为操作layerstate ,autodesk提供了一系列的AutoLISP函数,在帮助文档中有。

lee50310 发表于 2023-3-24 13:33:34

本帖最后由 lee50310 于 2023-3-24 14:55 编辑

xiaocainiao 发表于 2023-3-24 06:35
你这个是遍历图层吧、我想要的是获取图层状态名、不是图层名
那看看這個....輸入程式指令名稱 Layer-List,獲取 圖層狀態名

e2002 发表于 2023-3-24 15:10:59

本帖最后由 e2002 于 2023-3-24 15:15 编辑

update:查了一下,确认是2008版开始提供的,距今14年了。

至少在2012版就提供了这些函数:

xiaocainiao 发表于 2023-3-24 15:13:04

lee50310 发表于 2023-3-24 13:33
那看看這個....輸入程式指令名稱 Layer-List,獲取 圖層狀態名

你这是自己搞的程序吧、我输入没有这个命令

xiaocainiao 发表于 2023-3-24 15:18:53

e2002 发表于 2023-3-24 09:57
最初是没有,后来为操作layerstate ,autodesk提供了一系列的AutoLISP函数,在帮助文档中有。

谢谢、会查了、以前没查过帮助、都是用论坛里面提供的lisp函数
页: [1] 2
查看完整版本: 请教如何获取文件中的所有图层状态名称、不要图层过滤器