找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1183|回复: 12

[编程申请] 便捷式查看、修改图层颜色的编程申请

[复制链接]

已领礼包: 83个

财富等级: 招财进宝

发表于 2016-12-13 01:09:31 | 显示全部楼层 |阅读模式

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

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

×
     画图时,经常要修改图层颜色等属性,通常做法是:先在图中选中对象,在图层工具行查看颜色等属性后,再打开图层对话框找到相应图层后,再点击颜色等进入颜色选择框改变图层颜色。此做法在图层很多时极不便捷。
    编程要求及步聚:1. 先选择对象(可包括各种对象类型,如线、多段线、样条线、文字、属性、嵌套块内的实体等);
                                 2. 选择对象后,直接调出修改颜色的面板对话框,选择其中一个颜色点击确认;
                                 3.  确认后,所选对象的图层颜色相应修改。

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

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-13 11:39:37 | 显示全部楼层

  1. (defun c:tt (/ e col lyr)
  2.   (while (and (setq e (car (entsel "\nPick Entity: ")))
  3.               (setq col (acad_truecolordlg '(62 . 255)))
  4.          )
  5.     (setq lyr (cdr (assoc 8 (entget e))))
  6.     (vla-put-color
  7.       (vla-item        (vla-get-layers
  8.                   (vla-get-activedocument (vlax-get-acad-object))
  9.                 )
  10.                 lyr
  11.       )
  12.       (cdr (assoc 62 col))
  13.     )
  14.   )
  15.   (princ)
  16. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-12-13 02:26:25 | 显示全部楼层
没太看明白,

你意思是 选择一个对象, 根据这个对象的颜色,修改这个对象所在层的颜色和对象颜色一样?

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-12-13 11:44:20 | 显示全部楼层

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-13 11:57:07 | 显示全部楼层

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-12-13 12:01:27 | 显示全部楼层

看代码,可以循环选择实体, 只看实体不知道图层,就怕点10个实体,9个是同一个层的,是不是效率就不高了,或者设置过的图层,图层所有实体都亮显下。想重设就再点,不重设也能避免了。另外,设置了图层颜色,是不是点的实体颜色设置为随层?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 83个

财富等级: 招财进宝

 楼主| 发表于 2016-12-13 16:05:59 | 显示全部楼层

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

使用道具 举报

已领礼包: 83个

财富等级: 招财进宝

 楼主| 发表于 2016-12-13 16:08:26 | 显示全部楼层

刚运行了代码,是这个需求。但当实体颜色不是随层时,修改图层的颜色时最好能同时改为随层,这样会更便捷!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2016-12-14 09:38:07 | 显示全部楼层
完善了程序,支持真彩色和配色系统

  1. (defun c:tt (/ e el l lyr col lyr l accm cl)
  2.   (while
  3.     (and (setq e (car (entsel "\nPick Entity: ")))
  4.          (setq el (entget e))
  5.          (setq lyr (cdr (assoc 8 el)))
  6.          (setq l (entget (tblobjname "layer" lyr)))
  7.          (cond
  8.            ((assoc 430 l)
  9.             (setq col (acad_truecolordlg (assoc 430 l) nil))
  10.            )
  11.            ((assoc 420 l)
  12.             (setq col (acad_truecolordlg (assoc 420 l) nil))
  13.            )
  14.            (t
  15.             (setq col (acad_truecolordlg (assoc 62 l) nil))
  16.            )
  17.          )
  18.     )
  19.      (cond
  20.        ((assoc 430 col)
  21.         (setq accm (vla-GetInterfaceObject
  22.                      (vlax-get-acad-object)
  23.                      (strcat "AutoCAD.AcCmColor."
  24.                              (itoa (atoi (getvar "acadver")))
  25.                      )
  26.                    )

  27.         )
  28.         (vla-setnames accm (cdr (assoc 430 col)))
  29.         (vla-put-truecolor
  30.           (vla-item (vla-get-layers
  31.                       (vla-get-activedocument (vlax-get-acad-object))
  32.                     )
  33.                     lyr
  34.           )
  35.           accm
  36.         )
  37.        )
  38.        ((assoc 420 col)
  39.         (setq accm (vla-GetInterfaceObject
  40.                      (vlax-get-acad-object)
  41.                      (strcat "AutoCAD.AcCmColor."
  42.                              (itoa (atoi (getvar "acadver")))
  43.                      )
  44.                    )
  45.               cl   (xd::color:long->rgb (cdr (assoc 420 col)))
  46.         )
  47.         (vla-put-colormethod accm acColorMethodByRGB)
  48.         (vla-setrgb accm (car cl) (cadr cl) (caddr cl))
  49.         (vla-put-truecolor
  50.           (vla-item (vla-get-layers
  51.                       (vla-get-activedocument (vlax-get-acad-object))
  52.                     )
  53.                     lyr
  54.           )
  55.           accm
  56.         )
  57.        )
  58.        (t
  59.         (vla-put-color
  60.           (vla-item (vla-get-layers
  61.                       (vla-get-activedocument (vlax-get-acad-object))
  62.                     )
  63.                     lyr
  64.           )
  65.           (cdr (assoc 62 col))
  66.         )
  67.        )
  68.      )
  69.      (entmod (append el '((62 . 256))))
  70.   )
  71.   (princ)
  72. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 83个

财富等级: 招财进宝

 楼主| 发表于 2016-12-14 15:17:00 | 显示全部楼层

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

使用道具 举报

已领礼包: 466个

财富等级: 日进斗金

发表于 2016-12-20 20:57:02 | 显示全部楼层
试过了,确实是把图层的颜色给改了。就是没有让其他的同一层的颜色随层。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 217个

财富等级: 日进斗金

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

使用道具 举报

发表于 2021-2-23 13:43:42 | 显示全部楼层

非常感谢您,这个改图层很好用,之前win7用
(defun c:yy (/ layname ent2 a)
        (Setq layname (Vlax-Get (Vlax-Ename->Vla-Object (car (nentsel))) 'Layer ))
        (setq ent2 (entget(tblobjname "layer" layname)))
    (setq a (acad_colordlg 256))
        (setq ent2 (subst (cons 62 a) (assoc 62 ent2) ent2))
        (entmod ent2)
        (princ)
)
之前win7用的上面的代码改图层颜色,现在win10不知道为什么不能用了,用的你的非常好用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 15:59 , Processed in 0.466080 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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