找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 804|回复: 10

[LISP函数]:如何取得图层名和颜色号

[复制链接]
发表于 2004-10-24 22:05:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位指点:
   通过鼠标点击某图层的线条,该用啥函数取得该线的图层名和颜色值?
          谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-24 23:55:52 | 显示全部楼层
[php];;;查询实体的图层名和颜色
(defun c:test(/ l la co)
  (WHILE (NOT (setq L (entsel "\n选择查询图层名的物体: "))))
  (setq la (CDR (ASSOC 8 (entget (car L))))
        co (CDR (ASSOC 62 (entget (car L))))
        )  
  (princ"\n图层名 : ")(princ la)(princ)
  (princ"\n图层颜色 : ")(princ co)(princ)
  )[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-25 04:38:51 | 显示全部楼层
如果颜色随层, 2楼程序只会返回NIL. 可以这样:
[PHP]
(defun c:test ()
  (vl-load-com)
  (setq a (car (entsel)))
  (setq b (vlax-ename->vla-object a))
  (setq lay (vla-get-layer b))
  (setq col (vla-get-color b))
  (if (= col 256)
    (progn
      (setq doc (vla-get-activedocument (vlax-get-acad-object)))
      (setq layobj (vla-item (vla-get-layers doc) lay))
      (setq col (vla-get-color layobj))
    )
  )
  (list lay col)
)
[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-4 22:18:10 | 显示全部楼层
那假如现在我知道图层名为DG,通过怎样的命令直接获得图层DG的颜色呢,而不是通过图层上的实体获得图层的颜色的?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-4 23:50:08 | 显示全部楼层
最初由 secwolf 发布
[B]那假如现在我知道图层名为DG,通过怎样的命令直接获得图层DG的颜色呢,而不是通过图层上的实体获得图层的颜色的? [/B]
  1. [FONT=courier new]
  2. ;;;图层的颜色
  3. ;;;(GetColor 层名)
  4. (defun GetColor        (laname / la1 la col)
  5.   (setq la (dxf 2 (tblnext "layer" t)))
  6.   (while (/= la laname)
  7.     (setq la1 (tblnext "layer" nil)
  8.           la  (dxf 2 la1)
  9.           co  (dxf 62 la1)
  10.     )
  11.   )
  12.   (princ "\n颜色为 : ")
  13.   co
  14. )
  15. [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-8 01:44:37 | 显示全部楼层
最初由 xyp1964 发布
[B]
[CODE]
;;;图层的颜色
... [/B]


dxf是你的自定義函數嗎?

如果是,可否編個純LISP的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 02:23:14 | 显示全部楼层
最初由 taner 发布
[B]

dxf是你的自定義函數嗎?

如果是,可否編個純LISP的 [/B]


http://p4.xdcad.net/forum/showth ... 2369897#post2369897
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 06:50:46 | 显示全部楼层
最初由 taner 发布
[B]

dxf是你的自定義函數嗎?

如果是,可否編個純LISP的 [/B]
  1. [FONT=courier new]
  2. ;;;图层的颜色
  3. ;;;(GetColor 层名)
  4. (defun GetColor        (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.           co  (cdr(assoc 62 la1))
  10.     )
  11.   )
  12.   (princ "\n颜色为 : ")
  13.   co
  14. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-8 08:14:41 | 显示全部楼层
最初由 xyp1964 发布
[B]
[CODE]
;;;图层的颜色
;;;(GetColor 层名)
(defun GetColor        (laname / la1 la co... [/B]


版主:
TBLNEXT 帶NIL和T時有何區別?看幫助文件不是很明白!謝謝!
測試:
命令: (tblnext "layer" t)
((0 . "LAYER") (2 . "0") (70 . 0) (62 . 7) (6 . "Continuous"))

命令: (tblnext "layer" nil)
((0 . "LAYER") (2 . "seg") (70 . 0) (62 . 1) (6 . "Continuous"))

(tblnext "layer" nil)
((0 . "LAYER") (2 . "point") (70 . 0) (62 . 6) (6 . "Continuous"))

好象有點明白了.
帶t時,返回0層的相關數據.
循環使用(tblnext "layer" nil)時,依次返回其它各層的相關數據.
這樣理解對嗎?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-8 08:24:42 | 显示全部楼层
高手云集啊!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-8 20:04:42 | 显示全部楼层
[QUOTE]最初由 lsjjm 发布
[B]如果颜色随层, 2楼程序只会返回NIL. 可以这样:

  1.   [FONT=courier new]

  2. (defun c:test ()
  3.   (vl-load-com)
  4.   (setq a (car (entsel)))
  5.   (setq b (vlax-ename->vla-object a))
  6.   (setq lay (vla-get-layer b))
  7.   (setq col (vl... [/B][/QUOTE]
  8.   [/FONT]

  1.   [FONT=courier new]
  2. ;綜合大家的,達到與VL同樣的效果.

  3. (defun get-layandcol (ename / ent col)
  4.   (setq ent (entget ename))
  5.   (setq lay (cdr (assoc 8 ent)))
  6.   (cond
  7.     ((setq col (cdr (assoc 62 ent))))
  8.     ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  9.   )
  10.   (list lay col)
  11. )

  12. ;增加一項,以判斷實體顔色是否隨層
  13. ;(defun get-layandcol2 (ename / ent col)
  14.   (setq ent (entget ename))
  15.   (setq lay (cdr (assoc 8 ent)))
  16.   (cond
  17.     ((setq col (cdr (assoc 62 ent))))
  18.     ((setq col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))))
  19.   )
  20.   (if (cdr (assoc 62 ent))
  21.     (list lay col)
  22.     (list lay col "bylayer")
  23.   )
  24. )
  25. ;另,XYP版主的函数这样改一下更好.
  26. ;;; 返回层的颜色
  27. (defun th-get-laycolor (laname / la1 la col)
  28.   (setq la (cdr (assoc 2 (tblnext "layer" t))))
  29.   (if (/= la laname)
  30.     (setq la1 (tblnext "layer" nil)
  31.    la (cdr (assoc 2 la1))
  32.    col (cdr (assoc 62 la1))
  33.     )
  34.     (setq col (abs (cdr (assoc 62 la))))
  35.   )
  36.   (princ "\n颜色为 : ")
  37.   col
  38. )

  39.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 19:04 , Processed in 0.398919 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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