QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:, Y. f7 j4 X. z: h! D' N1 `- u
+ l, z; G+ D9 ]6 n7 ~! R& d: L
P4(0) = X0: P4(1) = Y0* `% z; L& i/ U( i+ t
P4(2) = X0: P4(3) = Y0 + Y7 d  @! Z' v0 B+ `
P4(4) = X0 + X: P4(5) = Y0 + Y
) ?  t! g/ }: a/ u0 H7 SP4(6) = X0 + X: P4(7) = Y0
" e; Y5 T' E8 d% cP4(8) = X0: P4(9) = Y0
5 q% Y  ^' i& G: Y+ O2 i" dSet PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
4 E1 Y9 T( ^8 A! T* i( OPLINEOBJ.Layer = LAY11 ]7 s+ p' D% }
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
" h! ~: v8 j7 h4 B    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL$ C+ {# U- Y+ S. s) \) g7 e
Else1 R; O+ q4 ^3 W& T+ b1 j7 a+ u
    * r0 Z2 h$ y6 n9 y4 m2 s
End If& [8 ~1 Y( i+ M% Y6 F
" ^6 D2 \! N, v; D$ z6 f

  G3 M' U- j2 \9 _+ M5 P' }            Set OUTERLOOP1(0) = PLINEOBJ
6 s- T- ]& U! N1 O            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
  E3 j' m8 X0 b; M$ x  K3 m            HATCHOBJ.PatternScale = 10
$ `9 A+ p9 S- S2 O            HATCHOBJ.Evaluate
. \0 D8 t6 H2 s" S6 X5 @            HATCHOBJ.Layer = "DRAWDIM"
$ k& i2 [0 d" v, [' Y) F
% J9 L6 ~! h8 _  F' ~' `3 w# s- P- z( n, b& K) k7 n
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样& w  `  R* c( ?/ I
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
* |6 q  j8 _! B$ j9 O. K- j$ j+ E6 l1 ^: t+ D  V

' u$ }) {8 U2 X4 L% W* m/ U如何使自动填充实现手动填充同样的效果〉?
6 J9 G3 H; f! H 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字1 m. B1 t8 `4 ~# {7 M5 E
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
/ w, P1 L9 G1 _+ H
因为你的程序并没有让它避开文字啊
1 u/ B( x2 ^! B尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
( N( o+ s) Y6 K( ~, U0 ]如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.
1 d, ]5 s& L9 V! X# C) R' p
看到其焦点是不一样多的
) X) Z* H' q& j" k157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
& `8 [! O8 P3 `2 x4 ?4 b
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)# h! E' s1 h4 X3 v; {: {8 }
要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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