明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1417|回复: 4

图块(INSERT)对象为什么不能提取颜色?

[复制链接]
发表于 2012-11-8 23:22:26 | 显示全部楼层 |阅读模式
本帖最后由 mj520plus 于 2012-11-8 23:23 编辑

代码:
(defun c:tt()
  (setq ss (ssget '((0 . "insert"))))

  (setq i 0)
  (repeat (sslength ss)
    (setq ent (ssname ss i))
    (setq ent_data (entget ent))
    (setq col (assoc 62 ent_data))
    ...
  )
)

经过测试代码:
1. 当ent_data为块对象时,则(assoc 62 ent_data)返回值为nil
2. 当ent_data为线或圆对象时,则(assoc 62 ent_data)有返回值,如(62."0")

62不是共用群码吗?为什么块对象就取不出来呢?本人实在是想不明白,还请高手解答!



发表于 2012-11-9 07:11:43 | 显示全部楼层
考虑过bylayer吗,bylayer的情形下没有该项组码,所以为nil
 楼主| 发表于 2012-11-11 22:37:35 | 显示全部楼层
谢谢poople 的提示!!!
我定义的块是随块(Byblock)的,比如我将块颜色变成了红色1,则
(ssget '((0 . "INSERT") (62 . 1)))是有返回值的,

而用(assoc 62 对象)却没有返回值!
难道块没有颜色属性?但(ssget)可以选得到!而且用命令chprop是可以修改块的颜色!
这如何解释?
发表于 2012-11-12 10:32:57 | 显示全部楼层
  1. (defun c:tt()
  2. (setq ss (ssget '((0 . "insert"))))
  3. (setq i 0)
  4. (repeat (sslength ss)
  5.   (setq ent (ssname ss i))
  6.   (setq ent_data (entget ent))
  7.   (if (assoc 62 ent_data)
  8.    (setq col (assoc 62 ent_data))
  9.    (setq col (assoc 62 (tblsearch "LAYER" (cdr(assoc 8 ent_data)))))
  10.   )
  11.   ;...
  12. )
  13. )
发表于 2012-11-12 13:59:09 | 显示全部楼层
Z版的程序就很好的解决了颜色随层的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-5 08:34 , Processed in 0.166630 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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