QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4254|回复: 1
收起左侧

[已答复] VBA:如何实现图案填充?

[复制链接]
发表于 2010-8-24 17:56:28 | 显示全部楼层 |阅读模式 来自: 中国浙江杭州

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
下面一段程序,是对一个方框进行图案填充:
. s1 T: E) u$ ^! C5 a  A) K$ `3 X  a* E& `5 w$ S
P4(0) = X0: P4(1) = Y06 c' g& q* c& S: [5 {% @
P4(2) = X0: P4(3) = Y0 + Y8 t# Z- }- Y& t% k& t0 q
P4(4) = X0 + X: P4(5) = Y0 + Y
3 b% A' D7 e, N9 U  F+ g0 ~& pP4(6) = X0 + X: P4(7) = Y0
+ L3 _, G5 [$ J  I% C' L  ?P4(8) = X0: P4(9) = Y0; o$ z0 G; i( D+ N' r1 ^, P$ t
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)4 l; O9 a( ?% F5 y) }
PLINEOBJ.Layer = LAY1, q3 d+ ^" t! A+ G9 l' m9 L8 i5 a
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
0 [( w+ @( ~+ B    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL) f0 p$ `5 @. P' m2 G
Else
! Q$ n+ e4 E7 `! V! w0 s   
4 ?& }- ?( ~! T- ZEnd If
7 Y+ d# A) u7 S% l2 `2 ?" d/ x) z1 ]! v2 l

1 z! I% W- \! ~; w7 G            Set OUTERLOOP1(0) = PLINEOBJ7 ]: S9 H4 N& U9 q8 f5 `
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1): F. t( A3 Q0 ~. G* X+ V+ b
            HATCHOBJ.PatternScale = 10
- P1 I* `" F9 ?% x: z3 b, e            HATCHOBJ.Evaluate
0 [  R6 D7 ^4 q2 z9 l- v* f            HATCHOBJ.Layer = "DRAWDIM"
! h, e  e- H9 a( N. z+ a) a4 J/ B# u3 p' v( J) n
" |# [4 ]7 z( c, O, r+ f  d6 X
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样, Q+ R3 B. R; ]9 m& \% l- c
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
- Q* d& j: Q8 \  e0 b* u
, @5 m1 B2 P& [) v) D
7 |2 a1 F8 H  y如何使自动填充实现手动填充同样的效果〉?
+ W7 O/ X/ }0 b& O 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字) j- t$ ?0 }& U
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

% Y& H* h/ B& V: \  Y2 b因为你的程序并没有让它避开文字啊
) d' L- @$ ]( A% z: \2 ^尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
8 c) r, {' }+ M5 A; z* b6 t如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.
2 m( o; a7 A' x. I9 E4 b; w2 t
看到其焦点是不一样多的
$ ~( P4 b  S1 }0 N! Y5 E9 a157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
# I3 c" C1 Y- ^' b" z/ w
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
1 ]2 ?1 \2 W) Q8 v" ^要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表