明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1033|回复: 15

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

[复制链接]
发表于 2023-3-23 14:54 | 显示全部楼层 |阅读模式
  1. (defun c:QZT(/ ladict ladict1 m n statenemelst)
  2.   (setq ladict1(vla-GetExtensionDictionary (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object)))))
  3.   (repeat (setq m (vla-get-count ladict1))
  4.     (setq ladict(vla-item ladict1 (setq m(1- m))))      
  5.     (repeat (setq n(vla-get-count ladict))
  6.       (setq statenemelst(cons (vla-get-name(vla-item ladict(setq n(1- n))))statenemelst))  
  7.     )
  8.   )
  9.   (princ)
  10. )
请教一下论坛的各位大神、这是我在论坛里面找到的关于获取文件内图层状态的代码、

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





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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2023-3-24 15:30 | 显示全部楼层
e2002 发表于 2023-3-24 15:10
update:查了一下,确认是2008版开始提供的,距今14年了。

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

谢谢、这个东西确实一直没用过、主要是全英文看不懂、我刚看了一圈、找到一个判断图层状态是否存在的函数、配合我上面的代码、就可以过滤出哪些是图层状态名、哪些是图层过滤器名称了
发表于 2023-3-24 03:49 | 显示全部楼层
試試這個
  1. (defun c:tt( / adoc)
  2.    (setq lst nil)
  3.    (setq adoc(vla-get-activedocument (vlax-get-acad-object)))
  4.    (vlax-for lyr(vla-get-layers adoc)(setq lst (cons (vla-get-name lyr) lst)) )
  5.    lst
  6. );end_defun  

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

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

点评

在AutoLISP的函数参考中,按字母顺序排列的,layerstate-xxxx 的都是。 这些函数提供已经很多年了,很难理解为什么这么多人都不看帮助文档的...  发表于 2023-3-24 15:02
 楼主| 发表于 2023-3-24 06:35 | 显示全部楼层

你这个是遍历图层吧、我想要的是获取图层状态名、不是图层名
发表于 2023-3-24 09:57 | 显示全部楼层
最初是没有,后来为操作layerstate ,autodesk提供了一系列的AutoLISP函数,在帮助文档中有。
发表于 2023-3-24 13:33 | 显示全部楼层
本帖最后由 lee50310 于 2023-3-24 14:55 编辑
xiaocainiao 发表于 2023-3-24 06:35
你这个是遍历图层吧、我想要的是获取图层状态名、不是图层名

那看看這個....輸入程式指令名稱 Layer-List  ,獲取 圖層狀態名

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-3-24 15:10 | 显示全部楼层
本帖最后由 e2002 于 2023-3-24 15:15 编辑

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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2023-3-24 15:13 | 显示全部楼层
lee50310 发表于 2023-3-24 13:33
那看看這個....輸入程式指令名稱 Layer-List  ,獲取 圖層狀態名

你这是自己搞的程序吧、我输入没有这个命令
 楼主| 发表于 2023-3-24 15:18 | 显示全部楼层
e2002 发表于 2023-3-24 09:57
最初是没有,后来为操作layerstate ,autodesk提供了一系列的AutoLISP函数,在帮助文档中有。

谢谢、会查了、以前没查过帮助、都是用论坛里面提供的lisp函数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 17:02 , Processed in 0.419438 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表