|
|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。
3 E* w. W$ z# b; A7 q( @8 n在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。. [2 q: w- o0 G& J& d0 g' W+ x2 v) V
改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。7 U% C# ?/ P6 a: w5 B5 s. ?
在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。
4 h# F3 J V6 K: e, `改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。5 `: H N( y4 w, o
下面的代码是使用Color属性的例子
2 M h' J5 B6 |% i5 Y, |2 o- & l) }3 }* l N% W
- Sub A()
3 p* m- o. r5 p( M - '声明一个二维填充对象和所用的点
4 H# l0 I, d8 z" W2 n. B" c; G; X - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double' f8 [1 R' t1 [6 u7 B8 Q s+ J
- '定义二维填充顶点
) F, {' Y6 G1 B E* S$ G - P2(0) = 10
' ~' D, ]4 t/ J( \9 | M - P3(0) = 10: P3(1) = 103 y$ [3 i% _1 U' ]3 k7 V" Q
- '创建二维填充
2 k% I+ b3 U3 T2 d$ l. k9 z2 E - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
6 [ c* W5 T$ D: M" R" W - '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于13 @4 c& E2 q0 W9 b
- S.color = acRed
* e8 X6 b" P; t: ~9 H( L0 r - End Sub
8 |& w2 Y1 n# ^
复制代码 ; `, T) Q# R* s
下面的代码是使用TrueColor属性的例子0 X' N. b' s) r2 j# F
- ; Q, t2 o) F, x7 k4 z& f
- Sub A()
d% u. c" o6 K6 ]( q - '声明一个二维填充对象和所用的点
- F; \ i( M. s- I; D8 P - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
$ u) B8 v/ l j4 O% j3 N$ G - '声明并新建一个颜色6 Y! V5 c0 F- y$ b
- Dim C As New AcadAcCmColor
$ S7 v: [* E0 {, M- ] - '定义二维填充顶点0 p. z, r3 H: d
- P2(0) = 10
% w( J1 S# B0 s6 ?! e7 L, g - P3(0) = 10: P3(1) = 10
! Y8 X6 M( z- ]4 d0 u - '创建二维填充: }" O8 s8 L( ~% }3 T4 g$ O, c, O
- Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
' R3 @* T, a/ h. }" J2 i t) z: \ - '颜色C使用CAD索引颜色“红色”
9 S8 o2 e5 O0 u" z/ E* ~ F - C.ColorIndex = acRed) f; H' v3 j# V0 c' o/ t! o$ m
- '二维填充的颜色改为颜色C
- B0 Y4 l+ `0 b2 A - S.TrueColor = C+ \. c$ Z T8 B
- End Sub7 Z8 j' H$ [" F& f- c- G
复制代码 |
|