|
|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。8 j0 P. e. ?% Z' x& Q( Q4 H
在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。
- s7 I* \$ c9 C2 J& e) ]改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。
) G: C2 l) s0 ^3 q# A8 \在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。4 V) k7 i. C' E) F# z7 @
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。
, }2 |! \3 S1 N( S下面的代码是使用Color属性的例子
+ n) W3 N5 |! W) g/ n$ n
- h/ [( `& x" B5 }5 G+ [- Sub A()
$ G2 R( Q. d _9 V5 T) M$ Y - '声明一个二维填充对象和所用的点; I9 J/ i! W2 M" n8 c% o: \
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
P: D/ u+ v; V' h6 p - '定义二维填充顶点
4 I8 z8 U2 d, t0 k0 f" C - P2(0) = 10
! b/ w; y2 P# u4 e+ } - P3(0) = 10: P3(1) = 10
" h7 v* K! d* h8 W- [3 W - '创建二维填充. }0 L8 v% ^4 q4 w3 \
- Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
9 I% o4 [2 [& {$ B4 L. l- o; a1 ^ - '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于10 z; ^6 j9 y y/ o) _& V) t
- S.color = acRed
% K3 H4 Y4 G8 ^: L - End Sub
* n6 L& x" h# y, B j. W: t j
复制代码 ) p( t( m. U. s5 N
下面的代码是使用TrueColor属性的例子) g- _) o% \; u! K1 A
- C) i u- g" q; Y0 K! n
- Sub A()
( T/ i3 a6 ~' w0 T - '声明一个二维填充对象和所用的点" c1 I A, }5 }6 P% S
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
+ d# g% X `7 L3 l3 } - '声明并新建一个颜色
6 u" n$ o; u6 P; b - Dim C As New AcadAcCmColor
( E0 B, I' {- Y - '定义二维填充顶点" {0 J7 T( n! D9 ]% z. Z" R
- P2(0) = 10
g# d. J' D: B7 q4 I - P3(0) = 10: P3(1) = 10
, {# C3 p$ M2 E- @ - '创建二维填充
) E. g9 U' T. n9 L' w" d5 o3 x- k, F - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)5 ?) O x6 j* z; `( _4 s
- '颜色C使用CAD索引颜色“红色”
4 x% F6 a( m1 ] F - C.ColorIndex = acRed
0 ?; R5 s) m" j- c8 I' S. j; s( v7 V - '二维填充的颜色改为颜色C
- g6 T. D9 x9 o' A7 R - S.TrueColor = C
/ t9 N# X4 D+ _ - End Sub8 j" X) g$ d0 r7 ^/ I( R
复制代码 |
|