【lisp源码】通用函数 颜色转换

分类:lisp函数 | 标签: lisp   颜色   转换   ACI   RGB  
2021-11-11 21:57 阅读(?)评论(0)
;;;=================================================================*
;;;                                                                 *
;;;      通用函数   颜色转换                                        *
;;;                                                                 *
;;;=================================================================*
;;;=================================================================*
;;;      通用函数                                                   *
;;;功能:acad索引色ACI  转换为  RGB。                               *
;;;日期:zml84 于 2012-06-05                                        *
;;;测试:(zl-color-ACI->RGB 1)  ===> '(255 0 0)                     *
;;;                                                                 *
(defun zl-color-ACI->RGB (ACi / lst_RGB)
  (setq	lst_RGB	'(0    0    0	 255  0	   0	255  255  0    0
		  255  0    0	 255  255  0	0    255  255  0
		  255  255  255	 255  128  128	128  192  192  192
		  255  0    0	 255  127  127	204  0	  0    204
		  102  102  153	 0    0	   153	76   76	  127  0
		  0    127  63	 63   76   0	0    76	  38   38
		  255  63   0	 255  159  127	204  51	  0    204
		  127  102  153	 38   0	   153	95   76	  127  31
		  0    127  79	 63   76   19	0    76	  47   38
		  255  127  0	 255  191  127	204  102  0    204
		  153  102  153	 76   0	   153	114  76	  127  63
		  0    127  95	 63   76   38	0    76	  57   38
		  255  191  0	 255  223  127	204  153  0    204
		  178  102  153	 114  0	   153	133  76	  127  95
		  0    127  111	 63   76   57	0    76	  66   38
		  255  255  0	 255  255  127	204  204  0    204
		  204  102  153	 153  0	   153	153  76	  127  127
		  0    127  127	 63   76   76	0    76	  76   38
		  191  255  0	 223  255  127	153  204  0    178
		  204  102  114	 153  0	   133	153  76	  95   127
		  0    111  127	 63   57   76	0    66	  76   38
		  127  255  0	 191  255  127	102  204  0    153
		  204  102  76	 153  0	   114	153  76	  63   127
		  0    95   127	 63   38   76	0    57	  76   38
		  63   255  0	 159  255  127	51   204  0    127
		  204  102  38	 153  0	   95	153  76	  31   127
		  0    79   127	 63   19   76	0    47	  76   38
		  0    255  0	 127  255  127	0    204  0    102
		  204  102  0	 153  0	   76	153  76	  0    127
		  0    63   127	 63   0	   76	0    38	  76   38
		  0    255  63	 127  255  159	0    204  51   102
		  204  127  0	 153  38   76	153  95	  0    127
		  31   63   127	 79   0	   76	19   38	  76   47
		  0    255  127	 127  255  191	0    204  102  102
		  204  153  0	 153  76   76	153  114  0    127
		  63   63   127	 95   0	   76	38   38	  76   57
		  0    255  191	 127  255  223	0    204  153  102
		  204  178  0	 153  114  76	153  133  0    127
		  95   63   127	 111  0	   76	57   38	  76   66
		  0    255  255	 127  255  255	0    204  204  102
		  204  204  0	 153  153  76	153  153  0    127
		  127  63   127	 127  0	   76	76   38	  76   76
		  0    191  255	 127  223  255	0    153  204  102
		  178  204  0	 114  153  76	133  153  0    95
		  127  63   111	 127  0	   57	76   38	  66   76
		  0    127  255	 127  191  255	0    102  204  102
		  153  204  0	 76   153  76	114  153  0    63
		  127  63   95	 127  0	   38	76   38	  57   76
		  0    63   255	 127  159  255	0    51	  204  102
		  127  204  0	 38   153  76	95   153  0    31
		  127  63   79	 127  0	   19	76   38	  47   76
		  0    0    255	 127  127  255	0    0	  204  102
		  102  204  0	 0    153  76	76   153  0    0
		  127  63   63	 127  0	   0	76   38	  38   76
		  63   0    255	 159  127  255	51   0	  204  127
		  102  204  38	 0    153  95	76   153  31   0
		  127  79   63	 127  19   0	76   47	  38   76
		  127  0    255	 191  127  255	102  0	  204  153
		  102  204  76	 0    153  114	76   153  63   0
		  127  95   63	 127  38   0	76   57	  38   76
		  191  0    255	 223  127  255	153  0	  204  178
		  102  204  114	 0    153  133	76   153  95   0
		  127  111  63	 127  57   0	76   66	  38   76
		  255  0    255	 255  127  255	204  0	  204  204
		  102  204  153	 0    153  153	76   153  127  0
		  127  127  63	 127  76   0	76   76	  38   76
		  255  0    191	 255  127  223	204  0	  153  204
		  102  178  153	 0    114  153	76   133  127  0
		  95   127  63	 111  76   0	57   76	  38   66
		  255  0    127	 255  127  191	204  0	  102  204
		  102  153  153	 0    76   153	76   114  127  0
		  63   127  63	 95   76   0	38   76	  38   57
		  255  0    63	 255  127  159	204  0	  51   204
		  102  127  153	 0    38   153	76   95	  127  0
		  31   127  63	 79   76   0	19   76	  38   47
		  51   51   51	 91   91   91	132  132  132  173
		  173  173  214	 214  214  255	255  255
		 )
  )
  (if (<= 0 ACi 255)
    (nth ACi (zl-group lst_RGB 3))
  )
)
;;;=================================================================*

;|
1、DXF:420
	32 位整数值。与真彩色一同使用时,表示 24 位颜色值的 32 位整数。
	高阶字节(8 位)为 0;低阶字节为包含“蓝色”值 (0-255)、然后是“绿色”值的无符号字符;
	次高阶字节是“红色”值。将此整数值转换为十六进制值将得到以下位掩码:0x00RRGGBB。
	
	例如,红色==200、绿色==100 和蓝色==50 的真彩色为 0x00C86432,而在 DXF 中以十进制表示则为 13132850


2、DXF:440
	32 位整数值。用于真彩色时,表示透明度值。
|;

;;;=================================================================*
;;;功能:RGB  转换为  真彩色数值                                    *
;;;参数:RGB -----表。内含3个数值,分别表示红、绿、蓝。             *
;;;返回:真彩色数值。                                               *
;;;                                                                 *
;;;测试:(zl-color-RGB->int '(100 200 50))                          *
;;;      ==>6604850                                                 *
;;;                                                                 *
(defun zl-color-RGB->int (RGB / R G B)
  (setq	R (nth 0 RGB)
	G (nth 1 RGB)
	B (nth 2 RGB)
  )
  (+ (* R 256 256)
     (* G 256)
     (* B 1)
  )
)

;;;=================================================================*
;;;功能:真彩色数值  转换为  RGB                                    *
;;;参数:int -----真彩色数值。                                      *
;;;返回:RGB表。内含3个数值,分别表示红、绿、蓝。                   *
;;;                                                                 *
;;;测试:(zl-color-int->RGB 6604850)                                *
;;;      ==> '(100 200 50)                                          *
;;;                                                                 *
(defun zl-color-int->RGB (int / R G B)
  (setq	B   (rem int 256)
	int (/ int 256)
	G   (rem int 256)
	int (/ int 256)
	R   (rem int 256)
  )
  (list R G B)
)

  最后修改于 2021-11-11 22:18    阅读(?)评论(0)
 
表  情:
加载中...
 

请各位遵纪守法并注意语言文明