明经CAD社区

 找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 381|回复: 10

[讨论] 想求助一下,怎么提取图层颜色

[复制链接]
发表于 2019-7-6 10:08 | 显示全部楼层 |阅读模式
本帖最后由 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)
  )

发表于 2019-7-6 10:30 | 显示全部楼层
(assoc 62(entget(tblobjname "LAYER" "剖面线")))
 楼主| 发表于 2019-7-6 10:33 | 显示全部楼层
LPACMQ 发表于 2019-7-6 10:30
(assoc 62(entget(tblobjname "LAYER" "剖面线")))

好的,我试一下
刚才查到,vla-item layobj lay 可以把图层改为VL图层名,这个也许也行
 楼主| 发表于 2019-7-6 10:39 | 显示全部楼层
LPACMQ 发表于 2019-7-6 10:30
(assoc 62(entget(tblobjname "LAYER" "剖面线")))

可以了,谢谢,要仔细理解一下tblobjname这个函数了
发表于 2019-7-6 10:40 | 显示全部楼层
(setq obj (vlax-ename->vla-object (car (entsel))))
(cdr (assoc 62 (tblsearch "layer" (VLA-GET-LAYER OBJ))))
发表于 2019-7-6 10:41 | 显示全部楼层
本帖最后由 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)))
 楼主| 发表于 2019-7-6 10:48 | 显示全部楼层
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提取

点评

获得了 LayerName 对应的 oLayer 对象后, 直接 vla-get-Color 应该就可以了  发表于 2019-7-7 20:20
并不等价,你对比一下两个的返回值,看看差异在哪里...  发表于 2019-7-7 20:17
 楼主| 发表于 2019-7-6 10:51 | 显示全部楼层
USER2128 发表于 2019-7-6 10:41
;;; 提取对象所在图层的颜色

谢谢鼓励,我是想做个按层显示隐藏的插件,目前用的钢结构工具箱,想只要其中的这个功能,目前还在研究中
 楼主| 发表于 2019-7-8 22:11 | 显示全部楼层
WWYYBB1015 发表于 2019-7-6 10:48
谢谢,突然觉得tblsearch 等价于 tblobjname获得的图元然后用entget提取

好的,谢谢提示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2019-11-20 11:57 , Processed in 0.254679 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.3

© 2001-2013 Comsenz Inc.

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