|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。# I0 ?: q4 ?; E7 L$ Y( Z
在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。
/ z; r/ Q3 ^$ k5 ?改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。
$ X% z& r3 N" \! K' r1 m0 m" S. R9 K在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。' `+ N4 D. h4 j9 @7 V: s9 E
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。- g1 c: V8 S5 J
下面的代码是使用Color属性的例子) \. G/ q1 M, W: E
/ q- I0 c% ^# W- Sub A()
2 Y' |/ p# b. A0 @1 T2 H2 ` D - '声明一个二维填充对象和所用的点* A2 M7 y4 B, m
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
& h) Y$ [+ Z* ?$ l ^% g - '定义二维填充顶点+ p6 V9 k; \- H( X8 z! h% X8 u
- P2(0) = 10, R+ K& T. y( z' w( ~1 z& j5 e
- P3(0) = 10: P3(1) = 10
, |5 w! ?! u' ` - '创建二维填充1 }/ {* E0 S6 }; `
- Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
: v/ g1 |+ G( r s% J# a - '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于1) t7 s* E! \/ b% A! N
- S.color = acRed
9 E w2 {6 W4 g( y% O7 U - End Sub( q3 W. \3 }4 ?$ R2 P
复制代码 $ x2 B3 ?( |. u% v
下面的代码是使用TrueColor属性的例子8 W: R4 `( a9 Q* r$ @3 W( ]. x# t
7 d( R. o0 H& k- Sub A()
5 q1 g% g# E0 ^) a3 c - '声明一个二维填充对象和所用的点
& H) O1 Z3 S) Q" P - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
1 q/ s9 A. D; C5 v9 T' z4 J* Q! e - '声明并新建一个颜色
2 M; S9 b( O. B; n - Dim C As New AcadAcCmColor
/ x; T4 m1 g2 ]; P5 V/ c - '定义二维填充顶点0 H! U" m3 c& ?; @# _
- P2(0) = 10
' k# r; t' @" h4 `( q$ k - P3(0) = 10: P3(1) = 10
, }8 R3 f2 D1 D: Y. ? - '创建二维填充
. b. W# W8 _6 ] - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
: X0 o9 F) q8 P: P6 X3 c - '颜色C使用CAD索引颜色“红色”
! A' V3 L2 y- G6 q* s) G, `+ C - C.ColorIndex = acRed
, C+ n4 x" N, z - '二维填充的颜色改为颜色C
: j9 A5 F0 X$ R6 n( J3 ~. a - S.TrueColor = C; N9 |( E6 e7 J, A3 x) c
- End Sub
8 R) J- a0 @2 [( t+ P4 m0 f
复制代码 |
|