tive29 发表于 2022-7-5 16:32:56

列出图层名称和实体#039;s

我的部分工作涉及检查是否有任何图层名称和实体处于/或已被洋红色覆盖
在视觉上看不到整个图形并忽略一些观察实体的情况下,是否有一个或多个LISP可以更快地完成:
1) 列出洋红色的图层名称
2) 列出被洋红色覆盖的实体的层名称
3) (如有可能)隔离或放大到洋红颜色的实体或用洋红颜色覆盖的实体的方法

BIGAL 发表于 2022-7-5 16:50:39

1非常可行
2和3搜索1000000个实体可能需要一些时间。

tive29 发表于 2022-7-5 16:57:07

 
1和2对我来说最重要,因为查看许多图形很耗时&至于3,我仍然可以手动隔离这些层,尽管这会有所帮助。但是1和2是我最需要的。

BIGAL 发表于 2022-7-5 17:06:46

项目1
 

(defun c:test ( / col ans doc lay)
(setq col (strcat "Color_" (getstring "Enter color number 1-255")))
(setq ans (strcat "Layers with " col))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layers doc)
(if (= (vla-get-PlotStyleName lay) Col)
(setq ans (strcatans "\n" (vla-get-name lay)))
)
)
(alert ans)
)

tive29 发表于 2022-7-5 17:13:57

谢谢比格尔。弹出消息很好。此外,它是否也可以在命令行中列出,以便我可以复制文本。

BIGAL 发表于 2022-7-5 17:26:06

将“ans”行更改为将层名称写入文件比复制文本更容易。或根据下面的新行删除(警报ans)
 

(setq ans (strcatans "\n" (vla-get-name lay)))

(princ (strcat "\n" (vla-get-name lay)))

tive29 发表于 2022-7-5 17:34:15

 
将行修改为2,但不完全正确。怎么了?
 
(defun c:test ( / col ans doc lay)
(setq col (strcat "Color_" (getstring "Enter color number 1-255")))
(setq ans (strcat "Layers with " col))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layers doc)
(if (= (vla-get-PlotStyleName lay) Col)
(princ (strcat "\n" (vla-get-name lay)))
)
)
)
(defun c:test ( / col ans doc lay)
(setq col (strcat "Color_" (getstring "Enter color number 1-255")))
(setq ans (strcat "Layers with " col))
(setq doc (vla-get-activedocument (vlax-get-acad-object)))
(vlax-for lay (vla-get-Layers doc)
(if (= (vla-get-PlotStyleName lay) Col)
(setq ans (strcatans "\n" (vla-get-name lay)))
)
)
(princ (strcat "\n" (vla-get-name lay)))
)
页: [1]
查看完整版本: 列出图层名称和实体#039;s