QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 4249|回复: 1
收起左侧

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:- f: c& u& c6 X2 y3 q. _

. m! S" K2 l: ]( y- i" f% rP4(0) = X0: P4(1) = Y0
" {$ P0 p: z! `: K' J# CP4(2) = X0: P4(3) = Y0 + Y, h0 d' F/ k3 n# t: {3 T/ l/ i0 @( G
P4(4) = X0 + X: P4(5) = Y0 + Y" ^4 Y4 [9 r8 p3 w: i/ t# f0 a8 x
P4(6) = X0 + X: P4(7) = Y0, _1 `1 Q6 X' F
P4(8) = X0: P4(9) = Y0" n5 D8 C3 G8 ]
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)' `. r: c1 ^5 e, ~0 ^" ]8 t7 b; L2 n
PLINEOBJ.Layer = LAY1
" n7 W( Z) z8 m& f$ CIf InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
: N" Z9 D  @: i: @( B9 B$ l    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL+ m6 c9 g. |( e' e2 r5 M  x5 m8 Y6 l
Else( S5 x  n& H( Q0 F% W9 \
   
" x0 I2 F2 E% L: B# PEnd If, b" ?, H. [" ?& X
3 c- M& C: _: I
6 c. |9 |6 m+ q+ L7 D" F! F
            Set OUTERLOOP1(0) = PLINEOBJ; l0 S) g+ P/ R" L0 q" G& l5 W! n
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
+ Y4 n6 F& u; T- o" A+ p! I            HATCHOBJ.PatternScale = 10/ |- K" [; \3 h/ i! a5 Z
            HATCHOBJ.Evaluate
  e) R/ P. I# O            HATCHOBJ.Layer = "DRAWDIM"
5 j# Y; Z! F$ Z" |( {: _0 L/ I1 z+ ~& \! T" g

4 ?- f( O9 H# h6 q+ e但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样1 G$ X) M$ `9 d  X' }8 I1 m0 E
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
/ f/ S" v  R/ V6 W; i, m7 I& }* e/ d4 @
- g9 J  j' q- Z' X
如何使自动填充实现手动填充同样的效果〉?* q3 n; C0 Y% w' D- m, m( ]" c
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字; E/ J* @' c' ^' _  T
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
; r, P+ T; r7 {4 t
因为你的程序并没有让它避开文字啊
+ k; U* Z8 L" X9 B, h2 F  a尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.% Q2 ?) J" R1 k  l5 A6 Y
如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.# G3 l% M! k" k4 D% E/ U
看到其焦点是不一样多的! l' U5 J& H) _+ [5 y  ^- ?
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
7 Y. [; l9 r, l* l  w
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
, V% z2 I( Q7 }0 g$ V" w2 e4 c要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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