WWYYBB1015 发表于 2019-7-6 10:08:30

想求助一下,怎么提取图层颜色

本帖最后由 WWYYBB1015 于 2019-7-6 10:10 编辑

vla-get-color 的函数介绍说,属性适用的对象为:所有Drawing对象, AttributeRef,Group.为啥图层名不行
还是说,图层名只是字符串,不代表图层,还望知道的指点一下.
代码如下:
(setq obj (vlax-ename->vla-object (car (entsel))))
(setq obj_col (vla-get-color obj))
(if (= obj_col 256)
(setq obj_color (vla-get-color (vla-get-layer obj)))
(setq obj_color obj_col)
)

LPACMQ 发表于 2019-7-6 10:30:06

(assoc 62(entget(tblobjname "LAYER" "剖面线")))

WWYYBB1015 发表于 2019-7-6 10:33:21

LPACMQ 发表于 2019-7-6 10:30
(assoc 62(entget(tblobjname "LAYER" "剖面线")))

好的,我试一下
刚才查到,vla-item layobj lay 可以把图层改为VL图层名,这个也许也行

WWYYBB1015 发表于 2019-7-6 10:39:18

LPACMQ 发表于 2019-7-6 10:30
(assoc 62(entget(tblobjname "LAYER" "剖面线")))

可以了,谢谢,要仔细理解一下tblobjname这个函数了

Andyhon 发表于 2019-7-6 10:40:51

(setq obj (vlax-ename->vla-object (car (entsel))))
(cdr (assoc 62 (tblsearch "layer" (VLA-GET-LAYER OBJ))))

USER2128 发表于 2019-7-6 10:41:30

本帖最后由 USER2128 于 2019-7-6 10:57 编辑

;;;用这个简单些
(setq ent (tblobjname "layer"(cdr (assoc 8 (entget (car (entsel)))))))
(setq color (vla-get-color (vlax-ename->vla-object ent)))

WWYYBB1015 发表于 2019-7-6 10:48:25

Andyhon 发表于 2019-7-6 10:40
(setq obj (vlax-ename->vla-object (car (entsel))))
(cdr (assoc 62 (tblsearch "layer" (VLA-GET-LAYER ...

谢谢,突然觉得tblsearch 等价于 tblobjname获得的图元然后用entget提取

WWYYBB1015 发表于 2019-7-6 10:51:37

USER2128 发表于 2019-7-6 10:41
;;; 提取对象所在图层的颜色

谢谢鼓励,我是想做个按层显示隐藏的插件,目前用的钢结构工具箱,想只要其中的这个功能,目前还在研究中

WWYYBB1015 发表于 2019-7-8 22:11:23

WWYYBB1015 发表于 2019-7-6 10:48
谢谢,突然觉得tblsearch 等价于 tblobjname获得的图元然后用entget提取

好的,谢谢提示
页: [1]
查看完整版本: 想求助一下,怎么提取图层颜色