|
|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。
4 U' `/ `' R3 B& l3 e# I' m" s' |在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。
# e+ d0 [" y# s6 m0 _) V改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。4 [2 y. R; J3 a- v/ W6 \/ t: l* I0 U
在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。5 L* `' H w2 W$ \( \& i J) Y
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。
4 N, _3 \0 ^0 a& f; S# E7 Q下面的代码是使用Color属性的例子5 ^! e9 o. r6 f! Y3 A6 ~
- $ b& n; a6 ~0 Q
- Sub A()
8 x. J( U/ T$ V- {' o, U - '声明一个二维填充对象和所用的点2 q2 C$ {5 B) s V7 x& S
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
* V ~6 }- |9 K4 `! [$ _; k3 K - '定义二维填充顶点
. r1 p7 X5 _! E) Q0 R; F* R7 l: u - P2(0) = 10
) s/ P$ H0 Z5 ~* X2 x - P3(0) = 10: P3(1) = 10
1 A& {* r% f# M9 y& J' b2 o4 g L - '创建二维填充
5 ?' P% E* O- @5 @ - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)& ?0 B' D& ]* Q: N0 I1 I0 e2 D& w
- '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于1
8 H4 |' ?- a' I5 y0 u, } - S.color = acRed5 o1 {& g* o1 L+ d6 H6 f* \, v
- End Sub3 t Z, a2 }) a
复制代码 , e$ p4 M! l/ V( M
下面的代码是使用TrueColor属性的例子
! j& X1 k& y3 H" K- ' x1 L x# f( |7 l V* a& r
- Sub A()
9 a+ a/ _4 X8 K6 {& b$ } - '声明一个二维填充对象和所用的点- ~7 v1 c2 ~$ I9 V; K' X
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
! e0 |% r7 l. t; ? - '声明并新建一个颜色
1 c' ]# s/ t: i - Dim C As New AcadAcCmColor
5 }# ]0 g8 c. f3 x# r - '定义二维填充顶点
" r/ X) i/ O+ S# s# P - P2(0) = 104 {0 o2 g$ z3 q: a) }0 \/ {
- P3(0) = 10: P3(1) = 10, y! u3 O; Q' d$ V. v! ^3 R% ^& D
- '创建二维填充
$ U$ [9 I* G2 D9 g" d1 s - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)9 T& r+ x7 @0 P8 Z- j. q
- '颜色C使用CAD索引颜色“红色”
6 a# E/ K* @9 I- x6 } - C.ColorIndex = acRed6 r& N# z: w& w# U" F
- '二维填充的颜色改为颜色C
3 Z6 B8 B5 {# c) M6 x# \ - S.TrueColor = C
$ {8 E/ f2 C( ?0 v' m - End Sub1 D I F# s1 j b8 d- _
复制代码 |
|