|
|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。
9 \, C1 c9 R, j在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。
9 ^( m5 ?. W0 P% h( Z7 e改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。
& b" @% x% X5 k$ v! k在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。! T& M c5 G, S7 T
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。/ Y5 R& H4 n& v7 R* n! C
下面的代码是使用Color属性的例子
6 b8 F& P X: `9 k1 Z, ^
& u: J* C9 M+ X1 `' i4 D- Sub A()5 ?: l5 E8 S7 E) |
- '声明一个二维填充对象和所用的点" j8 `& }" c4 y1 p. s; E- q
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
4 |' A' H9 M! y3 H: i- S' ?1 F) T1 k - '定义二维填充顶点
$ K7 u7 V$ a4 `$ j3 A4 d - P2(0) = 10
% t8 B# x4 r5 O$ n3 u5 a* r - P3(0) = 10: P3(1) = 10
. Q' x+ _& C; O9 u' B - '创建二维填充' ]" E; ?# K7 P; G e& i5 j* T
- Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)+ c$ W: |$ T( d
- '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于1& z/ H* E+ }; \( V( ]8 F E# _5 @
- S.color = acRed
. {& s% o a/ b; d2 z r) {& [8 X - End Sub4 Q7 `6 ?' } T
复制代码 " |. D t' p! a. N- H" l
下面的代码是使用TrueColor属性的例子9 Q. N# c3 y2 [5 v
- 6 a3 G( W3 v, Y4 V" D9 [
- Sub A()
8 P# U# t: J# h0 B( ~6 S - '声明一个二维填充对象和所用的点8 y5 Y( L% i+ _" N/ d
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
% B# z* }4 u/ S# K) n$ r - '声明并新建一个颜色
/ k) X# @8 X6 K8 q" K - Dim C As New AcadAcCmColor
$ @9 M# b/ e4 B) H( s: x9 A( J8 S1 Z - '定义二维填充顶点! U' ?6 g9 J/ n
- P2(0) = 10" }. E$ S s! j( u |
- P3(0) = 10: P3(1) = 10
. N% ~# J h' C - '创建二维填充
! Z' Y* I, M6 \1 g5 r - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)5 }! z2 X+ R6 [7 u6 Y( J( i
- '颜色C使用CAD索引颜色“红色”8 c& d0 p. d( }2 v% C! J* u
- C.ColorIndex = acRed) v4 a1 t4 }, V* I7 t( a/ B
- '二维填充的颜色改为颜色C7 ]7 v" V1 R; w5 D2 L! y
- S.TrueColor = C
9 e% P4 K. e6 a) k" n+ F* d3 E; W - End Sub% ^) A! c) v+ w- v/ J* G
复制代码 |
|