QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:& L0 H8 ~/ Y) L& O+ K7 a

4 M1 W/ x) u: d, R" C% z  WP4(0) = X0: P4(1) = Y0
& p; Y* l$ L5 x0 ^P4(2) = X0: P4(3) = Y0 + Y
) M1 Z! B4 j8 P9 ]$ y. cP4(4) = X0 + X: P4(5) = Y0 + Y; O- a# l# P+ o0 c
P4(6) = X0 + X: P4(7) = Y0: |7 r) A, a8 g
P4(8) = X0: P4(9) = Y0% I5 ]. r; E: `
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
6 s7 Q( e; Z3 t% ^  i1 gPLINEOBJ.Layer = LAY1% O' T. n" e! H$ n  [
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then% |& W# L. W: j- W  p
    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL9 q' L- h; B' {1 b1 \/ m9 r/ J) C
Else" t% D) f2 m, z- J
    ' x! \# T) ^; N: e, u+ f
End If, m; g$ A* e1 c+ u% \7 E! t0 p

! O' |+ @# G! H: s$ G# s# _) n1 L$ k" p! s( P9 E. p/ g8 @* }  g
            Set OUTERLOOP1(0) = PLINEOBJ8 o0 o+ U2 x: E! d2 q/ ?
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)% g$ Q$ j# W% x& J' I
            HATCHOBJ.PatternScale = 10
0 x* `3 z4 v% G/ e; e8 S5 {( N4 `6 q            HATCHOBJ.Evaluate* q6 B. r) f. h6 v0 A9 p4 j
            HATCHOBJ.Layer = "DRAWDIM"  T- p) y- D7 E. @* D' V  M
. O* ~8 P4 f; q1 ]

' g/ h) q4 B( L但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样
2 g( j9 ]4 |& g) F* u7 k下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
" N& L4 ?* H% V. c* u2 r( t2 s0 q; f

: l: M$ t( p) c6 x2 W3 f6 a6 E如何使自动填充实现手动填充同样的效果〉?
1 p1 V, [* c9 Q% O0 J  T! m 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字$ ^/ Z! H& Q* `) t7 v
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

' E7 j3 T3 @8 h5 W因为你的程序并没有让它避开文字啊
# z' ]1 U0 j% s. L/ C尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.6 r& [' m8 l& h# f; h/ c8 P& F
如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.+ h2 _  e/ k* v3 s
看到其焦点是不一样多的
# E; R9 R' n3 C4 T, s, c" m157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

. n5 l$ i$ f' y; M那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象): {7 V7 ?: r4 d) z% u7 A/ H
要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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