QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
7天前
查看: 4251|回复: 1
收起左侧

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:/ {  D/ T+ W$ m; p5 }
4 O8 @" e7 S! d3 P" T" P
P4(0) = X0: P4(1) = Y0
; \" R, f3 f  B5 {( ~P4(2) = X0: P4(3) = Y0 + Y0 d" K8 [$ o" c* s6 {+ F0 W
P4(4) = X0 + X: P4(5) = Y0 + Y
. @9 w( @7 e. k, |. h6 b5 ]P4(6) = X0 + X: P4(7) = Y0
, z8 h6 @% o* ?8 h0 {! nP4(8) = X0: P4(9) = Y09 b! p- @9 b* I
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
! R% r4 k" W  Z3 nPLINEOBJ.Layer = LAY1
6 [& L. Y% k8 b& U& r5 @* u) r# @If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then8 |4 d. Z9 C( b; j9 b7 f; \# p
    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL  r$ Q' j  t) L# D* b
Else0 r0 Q- G/ e+ t( `" ~- d
    # o4 @  P" X" ]& V8 g4 p  q% Z0 ~
End If
% x4 W: G; ?# n# e0 _$ o0 L( m# {/ r0 [

" o, @3 ]% y' I            Set OUTERLOOP1(0) = PLINEOBJ
6 E7 h2 m3 J3 O+ H7 X' j7 P            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
" }5 F- g# V. f! I' W/ l            HATCHOBJ.PatternScale = 10
) N0 x! y, O! M6 i, L: g0 p0 g$ V" U6 j  d            HATCHOBJ.Evaluate% U6 {/ P! H: y! k- v, ?
            HATCHOBJ.Layer = "DRAWDIM"
1 v! V- P7 ^( \7 G& ~  x7 G0 z

! \4 I& B/ I; C9 v但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样) B4 y3 [: H) D! Z
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字6 [- w2 r9 [3 S5 K8 G- U3 ~2 k2 I

% K9 R7 f6 M4 y+ b" _' t2 }' u! t0 i# g/ o& t
如何使自动填充实现手动填充同样的效果〉?/ O. c* k$ x  {
未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字. N" B) N+ p# U8 m; c8 \2 Z0 |
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
; ?- u1 [2 L; J( l% X. v
因为你的程序并没有让它避开文字啊, h, C9 o+ h0 r2 J4 X8 f3 q' v" L8 q
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
. U1 d1 k' B. `7 r如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.1 p4 N# P; d* u1 L% B
看到其焦点是不一样多的
  r' @8 a( }! Y/ Y1 L157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
* R  z- F! }* ~& v! i. i2 \9 a" F" R) P% h
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)4 g8 J8 P! W) Y0 l4 E
要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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