QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
goto3d 说: 此次SW竞赛获奖名单公布如下,抱歉晚了,版主最近太忙:一等奖:塔山817;二等奖:a9041、飞鱼;三等奖:wx_dfA5IKla、xwj960414、bzlgl、hklecon;请以上各位和版主联系,领取奖金!!!
2022-03-11
全站
goto3d 说: 在线网校新上线表哥同事(Mastercam2022)+虞为民版大(inventor2022)的最新课程,来围观吧!
2021-06-26
查看: 4046|回复: 1
收起左侧

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

[复制链接]
发表于 2010-8-24 17:56:28 | 显示全部楼层 |阅读模式

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

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

x
下面一段程序,是对一个方框进行图案填充:6 M3 Q& Z5 R" P; p4 f. M% T

) X# Z2 B# e$ K7 g" w. a! nP4(0) = X0: P4(1) = Y0
8 v# a5 B3 y7 lP4(2) = X0: P4(3) = Y0 + Y* l3 a6 ~" F' n
P4(4) = X0 + X: P4(5) = Y0 + Y
  g5 E+ b& \  u* CP4(6) = X0 + X: P4(7) = Y0
3 |* i: y3 k+ l1 a* a" GP4(8) = X0: P4(9) = Y0  x" s. |7 n4 L) Z1 O- H
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)* N( F3 v8 E& p7 ^  V- ?
PLINEOBJ.Layer = LAY1
/ n( p8 s% J2 D$ v4 C1 S, IIf InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then/ K$ w% d) L8 e# |% N: Y
    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL$ c3 T4 N6 J" A. V! c* T
Else
- |1 M+ b8 a0 U4 b7 l# R/ ^    " O# L: Z  `7 {5 p) C' m( _7 r' e
End If
5 F+ u/ ~8 u% k) ]/ S" S* Y( x3 F- O8 w* `8 a$ ~( J. S! d

. v! c. F) j( v+ S; v            Set OUTERLOOP1(0) = PLINEOBJ  d5 }! z& O0 _% B. O9 Y5 D( r0 ?6 R) z
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
( C4 }9 t# A% W! G) t3 f            HATCHOBJ.PatternScale = 10
  F: z# u) n* b$ a5 Z            HATCHOBJ.Evaluate
% L! }, G, X( h( C! z" E8 U) [            HATCHOBJ.Layer = "DRAWDIM"6 s0 @5 d9 {8 y  {( u: r( d

' ?; W8 Y  p& M- R! I' G6 @5 ?
/ D/ r+ `, @4 C! ]但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样3 Y8 H$ r/ M# f; b
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字* j) o5 a" ?+ y7 x9 J& M

; I- X& }& e& e& Q
) J: E, v! n2 S. y/ g$ u/ b如何使自动填充实现手动填充同样的效果〉?4 z7 c+ q% T1 v$ ]+ H
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字
1 w" M- I7 ]' |1 \) E. l157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
" L' I! T* H# y! E
因为你的程序并没有让它避开文字啊4 d" K7 E' z# Q9 G& p. O9 b
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
6 u2 s# x0 L2 W" Q0 n* s3 b如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.
2 T( B! G: r& P6 Z  C/ ]8 ?# J
看到其焦点是不一样多的7 n$ w/ |4 z( \; G% n
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则

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

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

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