|
发表于 2009-2-9 12:27:54
|
显示全部楼层
来自: 中国辽宁营口
在VBA中设置和修改对象颜色有新旧两种方法。
0 X1 r3 N7 A6 V: L8 V; `在2004以前的老版本,图形、组和图层对象有一个Color属性,其值为0到256,分别代表ByBlock(0)、ByLayer(256)和255种索引颜色,每种颜色对应的索引值可以在CAD图形界面的颜色对话框中看到。
" N0 g0 w# N+ C8 g7 Z$ M5 C改变对象颜色只需要修改对象的Color属性为目标颜色的索引值就可以了。 K, t' E/ h. W9 M+ K& w& y
在2004以后版本,由于CAD的颜色增加了真彩色,而Color属性只能使用索引颜色,因而被Autodesk宣布废除了,在新版本的对象浏览器中也看不到Color属性了(但事实上在新版本中仍然可以使用)。代替Color属性的是TrueColor属性。对TrueColor属性赋值需要引用AcCmColor对象,AcCmColor对象的属性主要包括ColorIndex(相当于老版本的Color属性,使用索引颜色)、Red、Green、Blue(红、绿、蓝三种颜色分量,每个属性值分别为0到255)和EntityColor(长整形数,代表32位颜色)。8 P, H3 C0 U7 X& V& G5 g; J# u
改变颜色时,首先要声明一个AcCmColor对象,把其颜色改为目标颜色,然后再把其赋值给图形、组和图层对象的TrueColor属性。
) i7 O4 N+ p# s# w. e下面的代码是使用Color属性的例子
2 p, v1 r+ y! {+ l- 1 |; j J8 T/ H6 `
- Sub A()+ {) j7 O8 W# T
- '声明一个二维填充对象和所用的点
+ q5 g4 b8 l% T3 x+ U3 d+ T - Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double( g9 {6 m, ~6 ^. t- Y# d2 l5 D
- '定义二维填充顶点
7 Y: {! Z0 [- t - P2(0) = 10- o( v# h: @% F8 R& p
- P3(0) = 10: P3(1) = 10/ P# x* P6 y6 U$ m8 L0 l
- '创建二维填充
3 J/ j! s, @# r2 z. a; J - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)
7 q+ r! l3 F- [* W3 M! V8 o% r - '二维填充的颜色改为红色。其中acRed是CAD七种标准颜色之一“红色”的命名常量,相当于1' V6 w9 ?# `; k! I7 W, Z
- S.color = acRed3 {6 o3 V5 g, Y
- End Sub. x1 L$ ?( ~# f: y8 v
复制代码
$ x* x: `; L: x下面的代码是使用TrueColor属性的例子# C3 b0 I( | a& Z! Q
- 5 s" V% L' }) B& \' q0 e2 B/ ^
- Sub A()$ Q$ O! s: S- m/ d" U; ~1 Y
- '声明一个二维填充对象和所用的点! |, W& U0 \' q9 M8 t
- Dim S As AcadSolid, P1(2) As Double, P2(2) As Double, P3(2) As Double( \" T( K: n) d% k. g
- '声明并新建一个颜色2 U% l: o8 t8 F
- Dim C As New AcadAcCmColor$ Z( s1 Y9 f, j2 t. |7 v5 H7 U; L5 E
- '定义二维填充顶点
; l& C0 r) V2 `* y7 h# W9 n7 f - P2(0) = 100 R {4 L8 m4 @
- P3(0) = 10: P3(1) = 10) a* A' V# d/ o1 r
- '创建二维填充
) f) _6 f! M+ }. J D8 X* ^ - Set S = ThisDrawing.ModelSpace.AddSolid(P1, P2, P3, P3)( `8 i) n9 W; D: F, \9 M( ?! v
- '颜色C使用CAD索引颜色“红色”9 l/ c [2 Q1 r5 l1 p7 [
- C.ColorIndex = acRed7 W- W9 d" p7 O. v3 ^5 z W, o6 l
- '二维填充的颜色改为颜色C
5 v" f. H5 A+ r. n, R$ D! x - S.TrueColor = C
: _0 _! |; p1 Y% T/ i7 O/ Q9 r. y - End Sub
! G9 ~5 s0 r* [& N
复制代码 |
|