QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:
: j  q, q+ ^& O. x$ g5 v* Y. C+ C# d6 Q  k; }: z
P4(0) = X0: P4(1) = Y09 _* c9 u% Q  C( a) t( Z5 W
P4(2) = X0: P4(3) = Y0 + Y8 T; `5 h! J& ~2 A) I7 \( L1 A3 d, h
P4(4) = X0 + X: P4(5) = Y0 + Y  p8 H& a. O: A5 M
P4(6) = X0 + X: P4(7) = Y0
1 C( K/ Y& D+ s' ]/ n2 IP4(8) = X0: P4(9) = Y02 ~# W" E) [: h7 b" Y4 G# V
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)2 w  w1 h# ^* S( {, x% e0 D5 T! j
PLINEOBJ.Layer = LAY12 m: _0 ?, O5 D
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
5 ^6 {# V% U% E0 g6 E    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL, ~& F. {# k" ]8 a" R. i
Else5 [0 A8 D) X# d
   
* D6 n9 e% {8 O8 {1 P# OEnd If
9 k+ p! C4 O7 C7 c/ ?" {! t+ g; {5 [" P* m" U2 I1 H+ t. Y

1 Q% u# J/ W' G: R/ B7 L            Set OUTERLOOP1(0) = PLINEOBJ! q, n! L0 P6 o0 F, j) d* t5 I  y4 K
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)7 R. z& ~8 n  h$ P5 A- B4 _/ R
            HATCHOBJ.PatternScale = 10! H7 O; T) L# S$ X& }
            HATCHOBJ.Evaluate7 E$ m! X  Q6 }( M) c- ?# h* a
            HATCHOBJ.Layer = "DRAWDIM", H3 F& ?  J1 K9 e' u9 O9 R+ X) |
) j: U* \4 ]4 d) q& y# I3 l
3 Q# ]% f2 @9 D2 M2 A
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样2 [, r: E- h$ ^6 t* P: i" R+ `
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
: _7 w3 r8 S, Q. \" t) E+ r9 a0 u9 k, H( L) y1 e% H

6 O. D# ^$ F3 q( K6 \* o如何使自动填充实现手动填充同样的效果〉?
3 E5 k& E- x2 |$ `, c3 M, F 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字3 _: Z# V& I! c+ v: b3 A
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

: T5 K" w% ~5 ^. d因为你的程序并没有让它避开文字啊3 d1 U" p% f# r% p8 Z5 z
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
6 |6 x, f! X5 J4 o0 @/ l2 `如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.1 N- |3 `5 i% N8 U
看到其焦点是不一样多的) s7 ?7 |4 t) x" }
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

5 K9 H3 M% |, b3 g! m, ?! W那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象); Y6 f7 G$ q0 x
要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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