明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2134|回复: 5

LISP中用什么函数可以得到图层的颜色?

[复制链接]
发表于 2006-11-26 19:44:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2006-11-26 20:37:11 编辑

问题一:比如说我有一图层名字为dim,颜色为3号绿色,请问我用什么函数可以可以得到该图层的颜色,并把它赋值给一变量tt

问题二:什么命令可以把所选图元中所有设置为bylayer颜色的图元过滤出来?

发表于 2006-11-26 20:01:00 | 显示全部楼层

(setq tt (cdr (assoc 62 (tblsearch "Layer" "Dim"))))

 

 楼主| 发表于 2006-11-26 20:11:00 | 显示全部楼层
本帖最后由 作者 于 2006-11-26 20:38:27 编辑

谢谢楼上的回复,问题一已搞定!问题二继续求助!

发表于 2006-11-26 20:13:00 | 显示全部楼层

还有一种方法:

(vla-get-color
  (vla-item (vla-get-layers
       (vla-get-ActiveDocument (vlax-get-acad-object))
     )
     "Dim"
  )
)

发表于 2006-11-26 23:08:00 | 显示全部楼层

问题二

(ssget "P"  '((62 . 256)))

发表于 2006-12-3 19:52:00 | 显示全部楼层
  1. ;;; ==================================================================
  2. ;;; 返回层的颜色
  3. ;;; ==================================================================
  4. (defun th-get-laycolor (laname / la1 la col)
  5.   (setq la (cdr (assoc 2 (tblnext "layer" t))))
  6.   (while (/= la laname)
  7.     (setq la1 (tblnext "layer" nil)
  8.    la (cdr (assoc 2 la1))
  9.    col (cdr (assoc 62 la1))
  10.     )
  11.   )
  12.   (princ "\n颜色为 : ")
  13.   col
  14. )
  15. ;;; ==================================================================
  16. ;;; 测试: (th1-get-objcolor (car(entsel)))  返回实体颜色
  17. ;;; ==================================================================
  18. (defun th1-get-objcolor (ename / ent col)
  19.   (setq ent (entget ename))
  20.   (or
  21.     (setq col (cdr (assoc 62 ent)))
  22.     (setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent))))))
  23.   )
  24.   col
  25. )
  26. (defun th2-get-objcolor (ename / ent col)
  27.   (setq ent (entget ename))
  28.   (cond
  29.     ((setq col (cdr (assoc 62 ent))))
  30.     ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  31.   )
  32. )
  33. ;;; ==================================================================
  34. ;;; 求实体所在层和颜色,返回(层名  颜色)
  35. ;;; ==================================================================
  36. (defun th1-get-layandcol (ename / b col doc lay layobj)
  37.   (vl-load-com)
  38.   (setq b (vlax-ename->vla-object ename))
  39.   (setq lay (vla-get-layer b))
  40.   (setq col (vla-get-color b))
  41.   (if (= col 256)
  42.     (progn
  43.       (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  44.       (setq layobj (vla-item (vla-get-layers doc) lay))
  45.       (setq col (vla-get-color layobj))
  46.     )
  47.   )
  48.   (list lay col)
  49. )
  50. (defun th2-get-layandcol (ename / ent col)
  51.   (setq ent (entget ename))
  52.   (setq lay (cdr (assoc 8 ent)))
  53.   (cond
  54.     ((setq col (cdr (assoc 62 ent))))
  55.     ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  56.   )
  57.   (list lay col)
  58. )
  59. ;;; ==================================================================
  60. ;;; 求实体所在层和颜色,返回(层名  颜色)或(层名  颜色 "bylayer")
  61. ;;; ==================================================================
  62. (defun th-get-layandcolifcb (ename / ent col)
  63.   (setq ent (entget ename))
  64.   (setq lay (cdr (assoc 8 ent)))
  65.   (cond
  66.     ((setq col (cdr (assoc 62 ent))))
  67.     ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  68.   )
  69.   (if (cdr (assoc 62 ent))
  70.     (list lay col)
  71.     (list lay col "bylayer")
  72.   )
  73. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-19 03:54 , Processed in 0.181229 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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