找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 607|回复: 0

[LISP函数]:TrueColor dialog function

[复制链接]
发表于 2003-4-30 19:51:54 | 显示全部楼层 |阅读模式

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

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

×

  1. ;|
  2. TrueColor function by KozMos 2003/04/30
  3. Unique Function calling for AutoCAD ACI and TrueColor dialog, run under AutoCAD2002+
  4. Call true color dialog or common color dialog automatically
  5. Sub-functions all imported from AutoCAD2004 color-util.lsp

  6. Input Var: ColorX [INTEGER]
  7.            If ColorX < 256, regard ColorX as ACI color, or treat it as TrueColor
  8.            If (null ColorX), set ColorX as 256 for BYLAYER

  9. Return Vaue: Rtn [INTEGER]
  10.            If choose ACI color, return ACI color number (< 256)
  11.            If choose Colorbook (DXF430),convert color book name as truecolor number
  12.            If cancel the set color operation, return input color number
  13. |;
  14. (Defun acad_MColorDlg (ColorX                /
  15.                        TrueColor->ACI        ACI->TrueColor
  16.                        ColorName->TrueColor
  17.                        RGB->TrueColor        Color62
  18.                        Color420                Code
  19.                        Rtn
  20.                       )
  21.   (Defun TrueColor->ACI
  22.                         (TrueColor / TrueColor-split colorObj ci)
  23.     (Defun TrueColor-split (c)
  24.       (list (lsh (fix c) -16)
  25.             (lsh (lsh (fix c) 16) -24)
  26.             (lsh (lsh (fix c) 24) -24)
  27.       )
  28.     )
  29.     (vl-load-com)
  30.     (and (setq colorObj        (vla-getinterfaceobject
  31.                           (vlax-get-acad-object)
  32.                           "AutoCAD.AcCmColor.16"
  33.                         )
  34.          )
  35.          (not (vl-catch-all-error-p
  36.                 (vl-catch-all-apply
  37.                   'vla-setRGB
  38.                   (cons colorObj (TrueColor-split TrueColor))
  39.                 )
  40.               )
  41.          )
  42.          (setq ci (vla-get-ColorIndex colorObj))
  43.     )
  44.     ci
  45.   )
  46.   (Defun ACI->TrueColor        (ci / colorObj TrueColor)
  47.     (vl-load-com)
  48.     (and (setq colorObj        (vla-getinterfaceobject
  49.                           (vlax-get-acad-object)
  50.                           "AutoCAD.AcCmColor.16"
  51.                         )
  52.          )
  53.          (>= ci 1)
  54.          (<= ci 255)
  55.          (not
  56.            (vl-catch-all-error-p
  57.              (vl-catch-all-apply 'vla-put-ColorIndex (list colorObj ci))
  58.            )
  59.          )
  60.          (setq TrueColor (RGB->TrueColor
  61.                            (list (vla-get-red colorObj)
  62.                                  (vla-get-green colorObj)
  63.                                  (vla-get-blue colorObj)
  64.                            )
  65.                          )
  66.          )
  67.     )
  68.     TrueColor
  69.   )

  70.   (Defun RGB->TrueColor        (RGB / Red Green Blue Rtn)
  71.     (setq Red        (nth 0 RGB)
  72.           Green        (nth 1 RGB)
  73.           Blue        (nth 2 RGB)
  74.           Rtn        (+ (lsh (fix Red) 16)
  75.                    (lsh (fix Green) 8)
  76.                    (fix Blue)
  77.                 )
  78.     )
  79.     Rtn
  80.   )
  81.   (Defun ColorName->TrueColor (colorbookandname
  82.                                /             pos
  83.                                colorbook     colorname
  84.                                colorObj             TrueColor
  85.                               )
  86.     (vl-load-com)
  87.     (and (equal (type colorbookandname) 'STR)
  88.          (setq pos (vl-string-search "$" colorbookandname))
  89.          (setq colorbook (substr colorbookandname 1 pos)
  90.                colorname (substr colorbookandname (+ pos 2))
  91.          )
  92.          (setq colorObj        (vla-getinterfaceobject
  93.                           (vlax-get-acad-object)
  94.                           "AutoCAD.AcCmColor.16"
  95.                         )
  96.          )
  97.          (not (vl-catch-all-error-p
  98.                 (vl-catch-all-apply
  99.                   'vla-SetColorBookColor
  100.                   (list colorObj colorbook colorname)
  101.                 )
  102.               )
  103.          )
  104.          (setq TrueColor (RGB->TrueColor
  105.                            (list
  106.                              (vla-get-red colorObj)
  107.                              (vla-get-green colorObj)
  108.                              (vla-get-blue colorObj)
  109.                            )
  110.                          )
  111.          )
  112.     )
  113.     TrueColor
  114.   )
  115.   (if (null ColorX)
  116.     (setq ColorX 256)
  117.   )
  118.   (if (> ColorX 256)
  119.     (setq Color62  (TrueColor->ACI ColorX)
  120.           Color420 ColorX
  121.     )
  122.     (setq Color420 (ACI->TrueColor ColorX)
  123.           Color62  ColorX
  124.     )
  125.   )
  126.   (if (null acad_truecolordlg)
  127.     (progn
  128.       (if (null (setq Rtn (acad_colordlg Color62)))
  129.         (setq Rtn Color62)
  130.       )
  131.     )
  132.     (progn
  133.       (if (> ColorX 256)
  134.         (setq Code "420 ")
  135.         (setq Code "62 ")
  136.       )
  137.       (if (null
  138.             (setq Rtn (eval (read (strcat "(acad_truecolordlg (cons "
  139.                                           Code
  140.                                           (rtos ColorX 2 0)
  141.                                           "))"
  142.                                   )
  143.                             )
  144.                       )
  145.             )
  146.           )
  147.         (setq Rtn ColorX)
  148.         (cond ((cdr (assoc 420 Rtn))
  149.                (setq Rtn (cdr (assoc 420 Rtn)))
  150.               )
  151.               ((cdr (assoc 430 Rtn))
  152.                (setq Rtn (cdr (assoc 430 Rtn))
  153.                      Rtn (ColorName->TrueColor Rtn)
  154.                )
  155.               )
  156.               ((cdr (assoc 62 Rtn))
  157.                (setq Rtn (cdr (assoc 62 Rtn)))
  158.               )
  159.         )
  160.       )
  161.     )
  162.   )
  163.   Rtn
  164. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-9-23 02:24 , Processed in 0.350370 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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