QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
下面一段程序,是对一个方框进行图案填充:' ~& P4 \4 q6 k* V8 a) c
3 w) o% V5 ~2 ]. v# K$ H/ _
P4(0) = X0: P4(1) = Y0  p8 [" g, a# a/ D
P4(2) = X0: P4(3) = Y0 + Y
; ]$ H) j) U3 H" T8 xP4(4) = X0 + X: P4(5) = Y0 + Y: c: I5 j' {* A9 e
P4(6) = X0 + X: P4(7) = Y0
, a7 I6 P3 c0 P. v$ {& aP4(8) = X0: P4(9) = Y0
  @9 j" T# `" C8 _1 x6 Q+ @# SSet PLINEOBJ = ThisDrawing.ModelSpace.AddLightWeightPolyline(P4)- Z! g8 t$ c6 i+ @) e7 V# t
PLINEOBJ.Layer = LAY1: K; x" |$ Z% }9 p, m
If InStr(LAY1, "DASH") Or InStr(LAY1, "CEN") Or InStr(LAY1, "DIM") Then  H; J$ I, G% b6 V- g* A, s! q
    PLINEOBJ.LinetypeScale = 200 / 40 * SCAL6 P& X( R6 u3 W" N5 w
Else) O3 j+ F+ A9 a
    4 r1 c, u  Y4 p+ |+ \3 K0 n; c! N
End If
: U6 a4 G/ @- p' |1 n) L+ m, f1 C8 D8 h; S3 W, \
4 }% z6 o; I: s* b- M& K3 ^4 R
            Set OUTERLOOP1(0) = PLINEOBJ
9 Q. K3 k% a4 j0 S/ z0 a1 v% n            HATCHOBJ.AppendInnerLoop (OUTERLOOP1)
( V% S" ~) R* Z8 G7 O* g            HATCHOBJ.PatternScale = 10
: M( a5 j) v* n8 y            HATCHOBJ.Evaluate3 W7 s" W/ v- d+ x# j! Z9 P
            HATCHOBJ.Layer = "DRAWDIM"
5 E2 s& |+ U/ g" W* Q7 E! O7 ?# T# z2 a5 u) }% l+ e% W# r! y
% S$ \, K$ I$ F! x  f! w7 s/ P
但是,如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字,而且用VBA填充的话,填充图案与手工填充的图案特性不太一样,虽然选择的填充图案一样5 p2 J0 |* l  I: M, b! O
下图中方框部分图案为程序自动填充的,椭圆部分为手动填充的,选中以后,可以看到其焦点是不一样多的,而且自动填充的图案覆盖了其中的文字,而手动填充的图案则避开了文字
7 F* U: |* G  ~9 l; ~9 G$ [$ n* \# [

' \/ _& S: X6 e如何使自动填充实现手动填充同样的效果〉?
% s5 V  G4 R8 `' O8 [& D; _ 未命名.JPG
发表于 2010-8-25 00:10:19 | 显示全部楼层 来自: 中国辽宁铁岭
如果这个方框中有文字,将直接覆盖,而不是手工填充时图案自动避开文字7 }, r. b; t" h# Q8 e1 w
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
7 C" x: j* q8 y) j- Y5 q3 S. m% @9 i
因为你的程序并没有让它避开文字啊
% k$ M- j: O, K/ l  R+ f尽管代码中有创建填充对象内边界的内容,但没有看到完整的代码,不知道构成矩形内边界的多段线的顶点具体在哪里,从图片上也没有看到这个内边界,因此只能猜想代码中创建的内边界并不是文字的边界.
4 V& z9 |: H( t如果想让填充图案避开文字,只要围绕文字再创建一个内边界就可以了.+ W$ K& r9 ?6 V+ m0 ~; U
看到其焦点是不一样多的6 }  u9 u3 M/ c4 D
157787698 发表于 2010-8-24 17:56 http://www.3dportal.cn/discuz/images/common/back.gif
6 P; L  z1 j% \
那些蓝色的点不叫"焦点",叫"夹持点",简称"夹点".在2010以上版本中,非关联填充对象是可以通过夹点编辑修改填充形状的.上面的图片中夹点多,说明填充图案未与边界关联,所以在边界上有很多可供编辑的夹点.下面的图片只有一个夹点,说明填充图案与边界是关联的(当然,在2010以前的版本中,非关联填充也只有一个夹点--只能移动填充对象)
: `0 {# ~7 k2 `要想让程序创建的填充对象像下面图片中一样与边界关联,只要在创建填充对象时把Associativity参数设为True就可以了
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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