CAD菜鸟 发表于 2002-12-19 10:39:00

关于“AutoCAD索引颜色(ACI)与RGB颜色对照表”

很想知道,坛主在2002.7.22日资料库中提供的“AutoCAD索引颜色(ACI)与RGB颜色对照表”与本人自己对CAD的color的测试为何差别这么大?

mccad 发表于 2002-12-19 14:43:00

不知你是用何种程序生成的对照颜色,我们用以下程序生成的颜色与表格一样

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
生成的文件如下:

CAD菜鸟 发表于 2002-12-19 15:18:00

继续“AutoCAD索引颜色(ACI)与RGB颜色对照表”

谢谢坛主的回复,但请坛主留意一下你的文件中colorindex 7,8,9三项的RGB值是一样的,以下是我的测试程序,请坛主试试,望以后多加帮助小弟,在此多谢了,thinks.

mccad 发表于 2002-12-20 19:42:00

通过将颜色对话框剪粘到CorelDraw查看颜色,可以看到你的程序运行结果是正确的

但实际还是看看AutoCAD填充颜色后,颜色的色标是否与对话框显示的色标一致

mccad 发表于 2003-3-28 17:09:00

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

mmmmmm 发表于 2003-6-30 22:40:00

ACI 5和170 的RGB一样,为什么?
页: [1]
查看完整版本: 关于“AutoCAD索引颜色(ACI)与RGB颜色对照表”