找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8268|回复: 77

[每日一码] 修改属性颜色的三种方法(代码)

  [复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-9-5 16:19:31 | 显示全部楼层 |阅读模式

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

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

×


1、交互选取属性实体修改颜色(VLISP)
  1. (defun c:attcol (/ col ent obj)
  2.   (vl-load-com)
  3.   (if (setq col (acad_colordlg 256))
  4.     (while (progn
  5.              (setq ent (car (nentsel "\nSelect Attribute to Change: ")))
  6.              (cond
  7.                ((eq 'ENAME (type ent))
  8.                  (if (eq "AcDbAttribute" (vla-get-ObjectName (setq obj
  9.                                                                    (vlax-ename->vla-object ent)
  10.                                                              )
  11.                                          )
  12.                      )
  13.                    (not (vla-put-color obj col))
  14.                    t
  15.                  )
  16.                )
  17.              )
  18.            )
  19.     )
  20.   )
  21.   (princ)
  22. )



2、可以一次性选择多个块,修改全部属性的颜色(AUTOLISP ENTMOD方法)

  1. (defun c:attcol2 (/ i col ss ent elst)
  2.   (if (and
  3.         (setq i -1
  4.               col (acad_colordlg 256)
  5.         )
  6.         (setq ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))
  7.       )
  8.     (while (setq ent (ssname ss (setq i (1+ i))))
  9.       (while (/= "SEQEND" (cdr (assoc 0 (setq elst (entget (setq ent
  10.                                                                  (entnext ent)
  11.                                                            )
  12.                                                    )
  13.                                         )
  14.                                )
  15.                           )
  16.              )
  17.         (entmod (if (assoc 62 elst)
  18.                   (subst
  19.                     (cons 62 col)
  20.                     (assoc 62 elst)
  21.                     elst
  22.                   )
  23.                   (append
  24.                     elst
  25.                     (list (cons 62 col))
  26.                   )
  27.                 )
  28.         )
  29.       )
  30.     )
  31.   )
  32.   (princ)
  33. )



3、开通过对话框选择属性修改颜色

修改属性颜色的三种方法(代码)

修改属性颜色的三种方法(代码)


[it618postdisplay>0][sell=5]
  1. (defun c:attcol3 (/ unique dcl_write Set_Img CATT DCTAG DLST ENT FNAME I ITM
  2.                     OBJ OLST PTR SS
  3.                  )                       ; By Lee McDonnell (Lee Mac)  ~
  4.                                        ; 28.12.2009
  5.   (vl-load-com)
  6.   (setq fname "LMAC_ATTCOL_V1.0.dcl")
  7.   (or
  8.     *attcol*
  9.     (setq *attcol* 1)
  10.   )                                       ; Default Colour
  11.   (defun unique (lst / result)
  12.     (reverse (while (setq itm (car lst))
  13.                (setq lst (vl-remove itm lst)
  14.                      result (cons itm result)
  15.                )
  16.              )
  17.     )
  18.   )
  19.   (defun dcl_write (fname / wPath ofile)
  20.     (if (not (findfile fname))
  21.       (if (setq wPath (findfile "ACAD.PAT"))
  22.         (progn
  23.           (setq wPath (vl-filename-directory wPath))
  24.           (or
  25.             (eq "\\" (substr wPath (strlen wPath)))
  26.             (setq wPath (strcat wPath "\\"))
  27.           )
  28.           (setq ofile (open (strcat wPath fname) "w"))
  29.           (foreach str '
  30.             ("attcol : dialog { label = \"Attribute Colour\";" "  : text { alignment = right; label = \"Lee McDonnell 2009\"; }"
  31.              "  : list_box { label = \"Select Tags\"; key = \"tags\"; fixed_width = false;" "               multiple_select = true ; alignment = centered; }"
  32.              "  : boxed_column { label = \"Colour\";" "    : row { spacer;"
  33.              "      : button { key = \"cbut\"; width = 12; fixed_width = true; label = \"Select Colour\"; }" "      : image_button { key = \"cimg\"; alignment = centered; height = 1.5; width = 4.0;"
  34.              "                       fixed_width = true; fixed_height = true; color = 2; }"
  35.              "      spacer;"
  36.              "    }" "    spacer;"
  37.              "  }" "  spacer;"
  38.              "  ok_cancel;" "}"
  39.             )
  40.             (write-line str ofile)
  41.           )
  42.           (close ofile)
  43.           t
  44.         )                               ; File written successfully
  45.         nil
  46.       )                                       ; Filepath not Found
  47.       t
  48.     )
  49.   )                                       ; DCL file already exists
  50.   (defun Set_Img (key col)
  51.     (start_image key)
  52.     (fill_image 0 0 (dimx_tile key) (dimy_tile key) col)
  53.     (end_image)
  54.   )
  55.   (if (and
  56.         (dcl_write fname)
  57.         (setq i -1
  58.               ss (ssget "_:L" '((0 . "INSERT") (66 . 1)))
  59.         )
  60.       )
  61.     (progn
  62.       (while (setq ent (ssname ss (setq i (1+ i))))
  63.         (foreach att (append
  64.                        (vlax-safearray->list (vlax-variant-value
  65.                                                                  (vla-getAttributes
  66.                                                                                     (setq obj
  67.                                                                                           (vlax-ename->vla-object ent)
  68.                                                                                     )
  69.                                                                  )
  70.                                              )
  71.                        )
  72.                        (cond
  73.                          ((vl-catch-all-error-p (setq cAtt
  74.                                                       (vl-catch-all-apply
  75.                                                                           (function vlax-safearray->list)
  76.                                                                           (list
  77.                                                                                 (vlax-variant-value
  78.                                                                                                     (vla-getConstantAttributes obj)
  79.                                                                                 )
  80.                                                                           )
  81.                                                       )
  82.                                                 )
  83.                           )
  84.                            nil
  85.                          )
  86.                          (cAtt)
  87.                        )
  88.                      )
  89.           (setq oLst (cons (cons (vla-get-TagString att) att) oLst))
  90.         )
  91.       )
  92.       (cond
  93.         ((<= (setq dcTag (load_dialog fname))
  94.              0
  95.          )
  96.           (princ "\n** Dialog File could not be Found **")
  97.         )
  98.         ((not (new_dialog "attcol" dcTag))
  99.           (princ "\n** Dialog Could not be Loaded **")
  100.         )
  101.         (t
  102.           (start_list "tags")
  103.           (mapcar
  104.             (function add_list)
  105.             (setq dLst (acad_strlsort (Unique (mapcar
  106.                                                 (function car)
  107.                                                 oLst
  108.                                               )
  109.                                       )
  110.                        )
  111.             )
  112.           )
  113.           (end_list)
  114.           (setq ptr (set_tile "tags" "0"))
  115.           (Set_Img "cimg" *attcol*)
  116.           (action_tile "cimg" (vl-prin1-to-string (quote (progn
  117.                                                            (Set_Img "cimg"
  118.                                                                     (setq *attcol*
  119.                                                                           (cond
  120.                                                                             (
  121.                                                                               (acad_colordlg *attcol*)
  122.                                                                             )
  123.                                                                             (*attcol*)
  124.                                                                           )
  125.                                                                     )
  126.                                                            )
  127.                                                          )
  128.                                                   )
  129.                               )
  130.           )
  131.           (action_tile "cbut" (vl-prin1-to-string (quote (progn
  132.                                                            (Set_Img "cimg"
  133.                                                                     (setq *attcol*
  134.                                                                           (cond
  135.                                                                             (
  136.                                                                               (acad_colordlg *attcol*)
  137.                                                                             )
  138.                                                                             (*attcol*)
  139.                                                                           )
  140.                                                                     )
  141.                                                            )
  142.                                                          )
  143.                                                   )
  144.                               )
  145.           )
  146.           (action_tile "tags" "(setq ptr $value)")
  147.           (action_tile "accept" "(done_dialog)")
  148.           (action_tile "cancel" "(setq ptr nil) (done_dialog)")
  149.           (start_dialog)
  150.           (unload_dialog dcTag)
  151.           (if ptr
  152.             (progn
  153.               (setq ptr (mapcar
  154.                           (function (lambda (x)
  155.                                       (nth x dLst)
  156.                                     )
  157.                           )
  158.                           (read (strcat "(" ptr ")"))
  159.                         )
  160.               )
  161.               (mapcar
  162.                 (function (lambda (x)
  163.                             (and
  164.                               (vl-position (car x) ptr)
  165.                               (vla-put-color (cdr x) *attcol*)
  166.                             )
  167.                           )
  168.                 )
  169.                 oLst
  170.               )
  171.             )
  172.             (princ "\n*Cancel*")
  173.           )
  174.         )
  175.       )
  176.     )
  177.   )
  178.   (princ)
  179. )


[/sell]
[/it618postdisplay]

评分

参与人数 1D豆 +1 收起 理由
吴外安放 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 5583个

财富等级: 富甲天下

发表于 2016-9-5 16:51:26 | 显示全部楼层
这几天收获不少,热心版主教了我们许多东西
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3198个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 8727个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 1034个

财富等级: 财源广进

发表于 2016-9-6 02:31:51 | 显示全部楼层
好好学习---------------------

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

使用道具 举报

已领礼包: 2963个

财富等级: 家财万贯

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

使用道具 举报

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

使用道具 举报

已领礼包: 194个

财富等级: 日进斗金

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

使用道具 举报

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

使用道具 举报

已领礼包: 28个

财富等级: 恭喜发财

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

使用道具 举报

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

使用道具 举报

已领礼包: 127个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 1999个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 6202个

财富等级: 富甲天下

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 20:10 , Processed in 0.441888 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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