QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:- ^6 }# v; L6 B; o7 v% Q
: F) c/ t5 U, i; A% `2 z0 g' J. Y
P4(0) = X0: P4(1) = Y0: ^& ~5 `, |2 {8 @
P4(2) = X0: P4(3) = Y0 + Y9 D9 J7 u8 g, S( Q" Q8 f, V+ Y
P4(4) = X0 + X: P4(5) = Y0 + Y; O4 Q( [7 i' K2 m# i, U
P4(6) = X0 + X: P4(7) = Y0, ~* R% _: y  q- n0 f
P4(8) = X0: P4(9) = Y0
4 d; B0 |: w4 }5 ZSet PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
- O- Q' Y+ l$ e  JPLINEOBJ.Layer = LAY1  n) }4 `2 A8 P9 y% v
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
1 ]6 A7 P) D1 q/ J/ T" z    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL' j; S* u0 J, n1 n: L( ~6 a
Else
4 A. U: d, i& W  x; d3 m. z   
9 I7 X9 F' `: p7 c  q; s7 yEnd If+ O( ^# P4 v' l" Q1 _& j0 l3 C

+ ]: Z; M6 U/ @& U. R8 t  D# e* L
# \7 ~- @0 M) W3 J. ?            Set OUTERLOOP1(0) = PLINEOBJ
! ~5 i+ d# S9 y" N$ w, P" g            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)! l( h% q" Z# Y' P. N4 `7 Q3 p
            HATCHOBJ.PatternScale = 10
3 O8 r6 K1 p& \% L" _) [+ N4 h# w8 v            HATCHOBJ.Evaluate# s* P- M* E+ f$ F
            HATCHOBJ.Layer = "DRAWDIM"
8 K8 d: `3 w. g( {
5 ?% J' l$ j; ~1 L( e& T: Y
+ E6 i3 l- T3 E9 p9 a! l但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样
) F+ s0 k( x" H% c/ ]: p下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字, ^% W' `. J0 R6 W6 P% I
% I, s8 j+ F: ]. a! |2 ]4 d
& {1 n, ]1 N# v1 U, o. M- q
如何使自动填充实现手动填充同样的效果〉?. k0 f( Z; G; _: C7 }  L& F+ j
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字
' L: J: X% N% f' i2 G157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
: l4 y7 s8 s' [5 k1 Q# T& y* F
因为你的程序并没有让它避开文字啊) g8 e/ r  |5 |3 [0 @
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.+ l' r7 u4 ?8 w, ?2 Y5 ]/ L
如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.- V9 {  z' s7 M  p6 L" @1 R1 U/ t8 q
看到其焦点是不一样多的' Q6 n! v5 i0 l% _$ T
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

9 ?. r. U+ X* ~6 L那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
  ^, a; t7 `. ]- J: U要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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