明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 小顽童

[求助]这样的填充效果如何用VBA实现?

  [复制链接]
 楼主| 发表于 2005-11-22 21:23:00 | 显示全部楼层

8楼的大哥,我把代码帖上来了,添加内边界老是出错,请你指导一下,非常感谢!

 

Sub HH()
'On Error Resume Next
Dim ent As AcadEntity
Dim Pname As String
Dim Ptype As Long
Dim Ba As Boolean
Dim Hatchobj As AcadHatch
Pname = "ANSI33" '填充样式
Ptype = acHatchPatternTypePreDefined '填充类型
Ba = True '是否关联
Dim Outer(0 To 0) As AcadEntity


Dim i As Integer
Dim j As Integer
Dim s As Integer
Dim Plobj As AcadPolyline
Dim coor As Variant
Dim coords As Variant
Dim pnt As Variant
Dim Sset As AcadSelectionSet

 


'clearsset

Set Sset = ThisDrawing.SelectionSets.Add("GD")

ThisDrawing.Utility.GetEntity ent, pnt, "c"

coords = ent.Coordinates


Sset.SelectByPolygon acSelectionSetWindowPolygon, coords

 

Dim K As Integer


ReDim Inner(0 To Sset.Count - 1) As AcadEntity


 
For K = 0 To Sset.Count - 1


    Set Inner(K) = Sset.Item(K)


Next
Sset.Delete
Set Outer(0) = ent '定义填充外边界

Set Hatchobj = ThisDrawing.ModelSpace.AddHatch(Ptype, Pname, Ba)
'Hatchobj.HatchStyle = acHatchStyleOuter
Hatchobj.AppendOuterLoop Outer

Hatchobj.AppendInnerLoop Inner

Hatchobj.Evaluate


ThisDrawing.Regen True


End Sub

本帖子中包含更多资源

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

x
发表于 2005-11-22 23:14:00 | 显示全部楼层

像你的例题的图像要调用Hatchobj.AppendInnerLoop 两遍

内外边界的图形要首尾相连且闭合

 楼主| 发表于 2005-11-23 18:54:00 | 显示全部楼层
L大哥,我的图形内外边界都是首尾相连,并且闭合,那我的代码有问题吗?
发表于 2009-6-18 20:10:00 | 显示全部楼层

生成外面的大面域,以及中间的两个黑色小面域,用大面域布尔运算减去里面两个小面域得到新的面域,用Addhatch填充就可以了。

发表于 2009-6-22 21:56:00 | 显示全部楼层
看看这个帖子吧,可能对你会有帮助http://www.boxuesky.com/read-htm-tid-25503.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 02:28 , Processed in 0.141084 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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