QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:, X% V0 Z" k! R. ]; F! R

! n& r0 f! W7 x( L+ P9 M) {P4(0) = X0: P4(1) = Y0
9 _8 ]& i( J, {0 t# R8 ]9 H# L3 ?" EP4(2) = X0: P4(3) = Y0 + Y
) x; R4 N# |9 v) [: U/ n2 l2 \P4(4) = X0 + X: P4(5) = Y0 + Y
+ G  i7 x6 T; @9 r  pP4(6) = X0 + X: P4(7) = Y0
/ O7 I# C& g- `2 q4 I# g9 @P4(8) = X0: P4(9) = Y0% h, I7 S2 H  Y; f/ k
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
' T/ P, Z' A" g! ^7 [9 _PLINEOBJ.Layer = LAY1
' F& v7 v  j" d" M$ Q" qIf InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
) n9 D' l8 f) ]$ i( m    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL! J4 y. x" W. |' u
Else
% C2 C+ W+ R0 y+ h) R; V+ ^8 O    0 i% {! z8 `" h. G3 p: `* @
End If" l& ~. ~; z3 @- l" n
( k  V3 |/ }: g% M
% M6 k' p) J" x0 X& X( W, U
            Set OUTERLOOP1(0) = PLINEOBJ; p4 H( }, q1 P$ \% k
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1), x% G: n7 b7 g
            HATCHOBJ.PatternScale = 107 ?) Y6 A+ C7 {3 v* Y+ {& s" g) k
            HATCHOBJ.Evaluate0 O! v% A, ^# t
            HATCHOBJ.Layer = "DRAWDIM"
( b$ g0 ]8 ^( L/ }( h) S( I" F% D
) F, e' I% G: T1 @0 Q
4 e1 Y9 q: |- a+ z: ~6 v但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样
9 x& a2 v) ]" ~, e下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字' |# W( I7 e$ L# X$ M, u& D$ C

$ V% T! c5 z  v
( [; O0 p: d1 V" ], f+ z% j如何使自动填充实现手动填充同样的效果〉?8 T# Q9 ^% A8 w. V0 i( B
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字
; L9 C7 p! ]9 U) [+ f' B2 L: @! _157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
' \% c3 f1 @* t- {3 A
因为你的程序并没有让它避开文字啊/ ~: r% F# m  E, O
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
: F4 r" g5 W: k; l如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.
. i+ a% R; K) z4 v+ r
看到其焦点是不一样多的
/ ~6 N; B/ ?; |157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

2 V( I$ I( w, q$ K那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
" R  i) s" K0 g' M3 U+ n要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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