QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:
$ W  A" O) `/ q  P' y3 m3 S: B* |  d1 Y4 K$ R# b; Y
P4(0) = X0: P4(1) = Y0# G0 u: I9 A9 q8 _- G' J
P4(2) = X0: P4(3) = Y0 + Y
! k# x% B  J* ~P4(4) = X0 + X: P4(5) = Y0 + Y; K+ G' i5 ~2 e$ m( A
P4(6) = X0 + X: P4(7) = Y0
( r% v7 Y& b. O9 }P4(8) = X0: P4(9) = Y0& l9 M* M( s+ l5 P( [
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)# G& ^0 Z3 x1 D+ {; M
PLINEOBJ.Layer = LAY12 w, W. l/ F0 T. Q$ G; \# d
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then! J; U1 A8 B0 a4 p$ S5 f
    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL
1 o" }% y* L5 DElse% V6 j& v/ l; U! g$ x" b
   
# X) f" e6 j% \# h! DEnd If
) [3 Z0 v$ I/ X8 n( f: O5 W5 Z5 b3 F" R( d) h  E
5 G1 B+ `4 @% z& E- F( D
            Set OUTERLOOP1(0) = PLINEOBJ! u4 f* P% ?( R6 W* h$ S
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
8 o- U/ Z6 `. a% ^            HATCHOBJ.PatternScale = 10
- J, D6 k5 j5 d9 `            HATCHOBJ.Evaluate
8 _2 P! K: i( X. n% [            HATCHOBJ.Layer = "DRAWDIM"
8 x% T" t) }. W+ d  K
% T' Y, W1 D7 P9 y5 o/ ?5 f* C& {. E4 ?4 g
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样
* p/ S, K5 _; S3 ^4 E, c下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
; c1 G" Q& C! x# D+ N! d1 S" Y0 N' C+ f" Q, }: E: ]
: S5 u- Z2 L3 _1 [' K
如何使自动填充实现手动填充同样的效果〉?% b2 |+ W) d: W/ {7 I
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字, s  q; M! [' {: m
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

8 O  x' M! v, |# U1 E因为你的程序并没有让它避开文字啊4 p$ m0 y* G0 Q
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
6 }# E0 y5 _2 A6 _, r* d* ]/ o6 j如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.
: a* b) h: A, l; {% ]7 p
看到其焦点是不一样多的
7 c6 y4 C( w; A157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
  }3 Z+ }- N/ r& K2 E
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
8 n; r) X: @1 w! y7 k2 y- z要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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