关于“AutoCAD索引颜色(ACI)与RGB颜色对照表”
很想知道,坛主在2002.7.22日资料库中提供的“AutoCAD索引颜色(ACI)与RGB颜色对照表”与本人自己对CAD的color的测试为何差别这么大?不知你是用何种程序生成的对照颜色,我们用以下程序生成的颜色与表格一样
Public Sub TEST_Color()Dim objEnt As AcadEntity
Dim varPnt As Variant
Dim strPrmt As String
Dim ACI As Integer
Dim R As Integer
Dim G As Integer
Dim B As Integer
Dim RGB As Variant
Dim str As String
Open "d:\txt.txt" For Output As #1
Print #1, "'本对照表由明经通道提供的程序生成"
ACI = 1
On Error GoTo Err_Control
For ACI = 1 To 255
GetRGB ACI, R, G, B
Print #1, "CAD colorindex : "; ACI & ", RGB(" & R & "," & G & "," & B & ")"
Next
Close #1
Exit_Here:
Exit Sub
Err_Control:
Debug.Print Err.Description
Resume Exit_Here
End Sub
Function GetRGB(ACI As Integer, Red As Integer, _
Green As Integer, Blue As Integer) As Long
Dim nbr As Double
nbr = Right(ACI, 1) / 2
Dim bolAdd As Boolean, intBase As Integer
Select Case ACI
Case Is < 1
MsgBox "Invalid ACI number (0-255 valid)."
Exit Function
Case Is < 10: GoTo SkipCalc
Case Is < 60: bolAdd = True: intBase = 1
Case Is < 90: bolAdd = False: intBase = 6
Case Is < 140: bolAdd = True: intBase = 9
Case Is < 170: bolAdd = False: intBase = 14
Case Is < 220: bolAdd = True: intBase = 17
Case Is < 250: bolAdd = False: intBase = 22
Case Is < 256: GoTo SkipCalc
Case Else
MsgBox "Invalid ACI number (0-255 valid)."
Exit Function
End Select
Dim dblStart As Double
If bolAdd Then
dblStart = IIf(nbr = Int(nbr), 0, 0.5)
Else
dblStart = IIf(nbr = Int(nbr), 0.75, 0.875)
End If
Dim intSign As Integer, dblFactor As Double
intSign = IIf(bolAdd, 1, -1)
dblFactor = IIf(nbr = Int(nbr), 0.25, 0.125)
Dim dblA As Double, dblB As Double, dblC As Double
dblA = Choose(Fix(nbr) + 1, 1, 0.65, 0.5, 0.3, 0.15)
dblB = (dblStart + intSign * _
(Left(ACI, Len(CStr(ACI)) - 1) - intBase) * dblFactor) * dblA
dblC = ((2 * nbr) Mod 2) * 0.5 * dblA
SkipCalc:
Select Case ACI
Case 1: Red = 255: Green = 0: Blue = 0
Case 2: Red = 255: Green = 255: Blue = 0
Case 3: Red = 0: Green = 255: Blue = 0
Case 4: Red = 0: Green = 255: Blue = 255
Case 5: Red = 0: Green = 0: Blue = 255
Case 6: Red = 255: Green = 0: Blue = 255
Case 7, 8, 9
Red = 0: Green = 0: Blue = 0
Case Is < 60
Red = 255 * dblA: Green = 255 * dblB: Blue = 255 * dblC
Case Is < 90
Red = 255 * dblB: Green = 255 * dblA: Blue = 255 * dblC
Case Is < 140
Red = 255 * dblC: Green = 255 * dblA: Blue = 255 * dblB
Case Is < 170
Red = 255 * dblC: Green = 255 * dblB: Blue = 255 * dblA
Case Is < 220
Red = 255 * dblB: Green = 255 * dblC: Blue = 255 * dblA
Case Is < 250
Red = 255 * dblA: Green = 255 * dblC: Blue = 255 * dblB
Case Is < 256
Red = 255 * Choose(nbr * 2 + 1, 0.33, 0.464, _
0.598, 0.732, 0.866, 1)
Green = Red: Blue = Red
End Select
GetRGB = RGB(Red, Green, Blue)
End Function
生成的文件如下:
继续“AutoCAD索引颜色(ACI)与RGB颜色对照表”
谢谢坛主的回复,但请坛主留意一下你的文件中colorindex 7,8,9三项的RGB值是一样的,以下是我的测试程序,请坛主试试,望以后多加帮助小弟,在此多谢了,thinks.通过将颜色对话框剪粘到CorelDraw查看颜色,可以看到你的程序运行结果是正确的
但实际还是看看AutoCAD填充颜色后,颜色的色标是否与对话框显示的色标一致AutoCAD2004已经出来了,通过它可以得到ACI与RGB颜色对照表
程序部分:(defun ColorIndex-to-TrueColor (ci / colorObj TrueColor)
(vl-load-com)
(and (setq colorObj (vla-getinterfaceobject
(vlax-get-acad-object)
"AutoCAD.AcCmColor.16"
)
)
(>= ci 1)
(<= ci 255)
(not
(vl-catch-all-error-p
(vl-catch-all-apply 'vla-put-ColorIndex (list colorObj ci))
)
)
(setq TrueColor (TrueColor-make
(vla-get-red colorObj)
(vla-get-green colorObj)
(vla-get-blue colorObj)
)
)
)
TrueColor
)
(defun TrueColor-red-value (c /)
(lsh (fix c) -16)
)
(defun TrueColor-green-value (c / r)
(lsh (lsh (fix c) 16) -24)
)
(defun TrueColor-blue-value (c /)
(lsh (lsh (fix c) 24) -24)
)
(defun c:LC ()
;;(acad_truecolordlg '(62 . 1))
(setq i 0)
(setq txt "c:\\color.txt")
(setq file (open txt "w"))
(repeat 255
(setq i (+ i 1))
(setq Color (ColorIndex-to-TrueColor i)
Red (TrueColor-red-value color)
blue (TrueColor-blue-value color)
green (TrueColor-green-value color)
)
(write-line
(strcat (itoa i)
" "
(itoa red)
" "
(itoa green)
" "
(itoa blue)
)
file
)
)
(close file)
)
颜色表对照部分:
ACI R G B
1 255 0 0
2 255 255 0
3 0 255 0
4 0 255 255
5 0 0 255
6 255 0 255
7 255 255 255
8 128 128 128
9 192 192 192
10 255 0 0
11 255 127 127
12 204 0 0
13 204 102 102
14 153 0 0
15 153 76 76
16 127 0 0
17 127 63 63
18 76 0 0
19 76 38 38
20 255 63 0
21 255 159 127
22 204 51 0
23 204 127 102
24 153 38 0
25 153 95 76
26 127 31 0
27 127 79 63
28 76 19 0
29 76 47 38
30 255 127 0
31 255 191 127
32 204 102 0
33 204 153 102
34 153 76 0
35 153 114 76
36 127 63 0
37 127 95 63
38 76 38 0
39 76 57 38
40 255 191 0
41 255 223 127
42 204 153 0
43 204 178 102
44 153 114 0
45 153 133 76
46 127 95 0
47 127 111 63
48 76 57 0
49 76 66 38
50 255 255 0
51 255 255 127
52 204 204 0
53 204 204 102
54 153 153 0
55 153 153 76
56 127 127 0
57 127 127 63
58 76 76 0
59 76 76 38
60 191 255 0
61 223 255 127
62 153 204 0
63 178 204 102
64 114 153 0
65 133 153 76
66 95 127 0
67 111 127 63
68 57 76 0
69 66 76 38
70 127 255 0
71 191 255 127
72 102 204 0
73 153 204 102
74 76 153 0
75 114 153 76
76 63 127 0
77 95 127 63
78 38 76 0
79 57 76 38
80 63 255 0
81 159 255 127
82 51 204 0
83 127 204 102
84 38 153 0
85 95 153 76
86 31 127 0
87 79 127 63
88 19 76 0
89 47 76 38
90 0 255 0
91 127 255 127
92 0 204 0
93 102 204 102
94 0 153 0
95 76 153 76
96 0 127 0
97 63 127 63
98 0 76 0
99 38 76 38
100 0 255 63
101 127 255 159
102 0 204 51
103 102 204 127
104 0 153 38
105 76 153 95
106 0 127 31
107 63 127 79
108 0 76 19
109 38 76 47
110 0 255 127
111 127 255 191
112 0 204 102
113 102 204 153
114 0 153 76
115 76 153 114
116 0 127 63
117 63 127 95
118 0 76 38
119 38 76 57
120 0 255 191
121 127 255 223
122 0 204 153
123 102 204 178
124 0 153 114
125 76 153 133
126 0 127 95
127 63 127 111
128 0 76 57
129 38 76 66
130 0 255 255
131 127 255 255
132 0 204 204
133 102 204 204
134 0 153 153
135 76 153 153
136 0 127 127
137 63 127 127
138 0 76 76
139 38 76 76
140 0 191 255
141 127 223 255
142 0 153 204
143 102 178 204
144 0 114 153
145 76 133 153
146 0 95 127
147 63 111 127
148 0 57 76
149 38 66 76
150 0 127 255
151 127 191 255
152 0 102 204
153 102 153 204
154 0 76 153
155 76 114 153
156 0 63 127
157 63 95 127
158 0 38 76
159 38 57 76
160 0 63 255
161 127 159 255
162 0 51 204
163 102 127 204
164 0 38 153
165 76 95 153
166 0 31 127
167 63 79 127
168 0 19 76
169 38 47 76
170 0 0 255
171 127 127 255
172 0 0 204
173 102 102 204
174 0 0 153
175 76 76 153
176 0 0 127
177 63 63 127
178 0 0 76
179 38 38 76
180 63 0 255
181 159 127 255
182 51 0 204
183 127 102 204
184 38 0 153
185 95 76 153
186 31 0 127
187 79 63 127
188 19 0 76
189 47 38 76
190 127 0 255
191 191 127 255
192 102 0 204
193 153 102 204
194 76 0 153
195 114 76 153
196 63 0 127
197 95 63 127
198 38 0 76
199 57 38 76
200 191 0 255
201 223 127 255
202 153 0 204
203 178 102 204
204 114 0 153
205 133 76 153
206 95 0 127
207 111 63 127
208 57 0 76
209 66 38 76
210 255 0 255
211 255 127 255
212 204 0 204
213 204 102 204
214 153 0 153
215 153 76 153
216 127 0 127
217 127 63 127
218 76 0 76
219 76 38 76
220 255 0 191
221 255 127 223
222 204 0 153
223 204 102 178
224 153 0 114
225 153 76 133
226 127 0 95
227 127 63 111
228 76 0 57
229 76 38 66
230 255 0 127
231 255 127 191
232 204 0 102
233 204 102 153
234 153 0 76
235 153 76 114
236 127 0 63
237 127 63 95
238 76 0 38
239 76 38 57
240 255 0 63
241 255 127 159
242 204 0 51
243 204 102 127
244 153 0 38
245 153 76 95
246 127 0 31
247 127 63 79
248 76 0 19
249 76 38 47
250 51 51 51
251 91 91 91
252 132 132 132
253 173 173 173
254 214 214 214
255 255 255 255 ACI 5和170 的RGB一样,为什么?
页:
[1]