|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。4 g; N q* s% t( k
在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。- G7 A) z7 ]5 E
改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。1 L& [- |+ q9 }" u% ?1 m: t
在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。- M/ e- ]1 L. J" l3 e O9 ]
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。# `$ g' `$ C% r3 m! q& V
下面的代码是使用Color属性的例子
4 z. S2 Q% R7 Z
+ q. I( o/ M* W5 I: k9 S" ^- Sub A()2 M( A: k5 R/ C6 Y4 z& M
- '声明一个二维填充对象和所用的点
) f9 p( h0 o3 m6 E0 k/ | - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double
6 f Z6 _$ s. Z1 ]0 Y+ j4 B - '定义二维填充顶点 r0 g! p2 }. M& _; e
- P2(0) = 10+ U& t/ W) C% H
- P3(0) = 10: P3(1) = 10
, U. J' ~2 o, ^/ h( |' u& I - '创建二维填充. K6 X6 x1 y; g
- Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)& i# P1 L( g2 T& ^! f/ k# p
- '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于1
- J5 ~1 y8 _6 ~& ~& ~ - S.color = acRed
8 O& d. |0 ?0 G: ^- ^6 M$ J3 ~ - End Sub
' D( v! f Q, x5 ^, l
复制代码 4 P$ u- m9 ?; s3 K( P; l5 ?7 M
下面的代码是使用TrueColor属性的例子7 {# g& c) G. B, f- j5 o, I1 |0 Z
- / ?8 |' K, [! v+ ?8 Q) k
- Sub A()/ \+ Q9 t1 }6 ?5 i" q
- '声明一个二维填充对象和所用的点
/ j' D; p6 f9 m. c: M$ v - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double$ Y2 y8 Z( [( h! w7 y3 P
- '声明并新建一个颜色6 ~7 V* }* P3 ]! u
- Dim C As New AcadAcCmColor$ ~6 s4 \% g* E- b2 F
- '定义二维填充顶点
7 O1 E# j$ n3 S - P2(0) = 10
7 o: b' a @( C! ` - P3(0) = 10: P3(1) = 10
+ s9 ]6 k% K! y - '创建二维填充
8 Z, t" _$ N2 D7 n - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)/ |; V) Z, N6 o, N: b
- '颜色C使用CAD索引颜色“红色”. b8 t& v2 `+ y( t0 B0 @
- C.ColorIndex = acRed9 ]2 ?7 q+ C/ A1 m% y0 O
- '二维填充的颜色改为颜色C
( w6 k8 l+ O; m1 K! T# z - S.TrueColor = C9 X) c; s7 H8 [& H
- End Sub
& V/ s5 W9 H! E5 n
复制代码 |
|