QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 4253|回复: 1
收起左侧

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:6 W$ |: D3 i6 a6 f& d
# g, }" X. ]* C" t: v
P4(0) = X0: P4(1) = Y0( @1 q  O  A4 f0 J
P4(2) = X0: P4(3) = Y0 + Y2 h8 W4 a9 U! n8 F5 Y6 ^9 i) X( C3 ~
P4(4) = X0 + X: P4(5) = Y0 + Y
6 o0 L7 ?0 z+ v2 i( W. K7 T: OP4(6) = X0 + X: P4(7) = Y0
3 R1 S( F# [* O- g! r3 [* QP4(8) = X0: P4(9) = Y0( f0 {* q( j, S( y
Set PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)
/ F: i0 e  q! i" VPLINEOBJ.Layer = LAY17 o  Q5 {* P! e2 F; z4 w/ _
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then
3 p, W4 g; ?. |4 \6 ~    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL. x% c* \% `% T, f9 N( @9 C( H  v
Else- a8 V! ~, H7 I) _1 K! C/ G
   
; c  u) {  f0 Q4 B3 q( L5 f% W; ]9 wEnd If
$ v- P- f/ G4 ~" L& x. j$ L$ g$ g: W1 {; T- I
% }! d, z1 J" b! l1 i1 ]$ T" G" R3 Z
            Set OUTERLOOP1(0) = PLINEOBJ6 z1 Y; J$ I; o  |) `6 C* ^
            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)0 G/ G" X4 w' y1 C7 a
            HATCHOBJ.PatternScale = 10
# C6 O4 S6 O6 w) d            HATCHOBJ.Evaluate3 \/ M& ?9 r. K
            HATCHOBJ.Layer = "DRAWDIM"
% n& D# Y- h7 w; A! c# Q
8 n& Z# I9 Q* @& ]1 g5 m3 u: w$ V  \# b, M
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样! X$ t- p" n$ w
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字, D: k* f- {. y' ~
5 k. k% y1 p$ v* l' R
2 r; O+ `0 o7 B$ `
如何使自动填充实现手动填充同样的效果〉?
/ Y) q1 p- G$ S 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字7 r, r8 o& B' ], p+ [
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
! X8 P& T  U! f4 K0 d
因为你的程序并没有让它避开文字啊  Z" G5 X/ y# |, I& p
尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界./ ~  }8 m8 j$ Y' J
如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.- z# k2 c. J: b% B: r. ?6 o( l
看到其焦点是不一样多的
1 q, w8 N$ Z  a( b& _157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif

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

本版积分规则


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

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

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