免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 6048|回复: 5
收起左侧

[技术交流] 在CASS下根据所选择的实体编码、图层进行闭合操作

[复制链接]

883

主题

8万

铜板

632

好友

超级版主

论坛使者

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
28817

精华勋章宣传勋章爱心勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章贡献勋章冰雪节勋章10周年纪念勋章

QQ
发表于 2011-10-18 18:45 | 显示全部楼层 |阅读模式
把代码copy到代码窗口中即可。
代码如下:
Public Sub ClosedByCode()
'根据实体编码闭合实体
'创建空白选择集
Dim SelSet As AcadSelectionSet
Set SelSet = CreateSelectionSet
'建立选择集过滤器
Dim TypeArray As Variant
Dim DateArray As Variant
BuildFilter TypeArray, DateArray, 0, "LWPOLYLINE", 8,"jmd", 70, "128"
'0 实体类型
'8 实体所在图层
'过滤出所要选择的图块
SelSet.Select acSelectionSetAll, , , TypeArray, DateArray
Dim LwPObj As AcadLWPolyline
Dim I As Integer
For I = 0 To SelSet.Count - 1
Set LwPObj = SelSet.Item(I)
Dim xDataOut As Variant
Dim xTypeOut As Variant
LwPObj.GetXData "", xTypeOut, xDataOut
Select Case xDataOut(1)
Case "141101", "141111", "141121", "141131","141141", "141151", "141161", "141103", "141200","141300", "141400", "141500", "141600", "141700"
'**************************************************************
' Code 名称
' 141101 一般房屋
' 141111 砼房屋
' 141121 砖房屋
' 141131 铁房屋
' 141141 钢房屋
' 141151 木房屋
' 141161 混房屋
' 141103 小比例吃房屋
' 141200 简单房屋
' 141300 建筑房屋
' 141400 破坏房屋
' 141500 棚房
' 141600 架空房屋
' 141700 廊房
'**************************************************************
'执行闭合操作
If LwPObj.Closed = False Then LwPObj.Closed = True
End Select
If UBound(LwPObj.Coordinates) < 4 Then LwPObj.Delete
Next
ThisDrawing.Application.Update '刷新操作
End Sub
'创建过滤器的函数
Public Sub BuildFilter(TypeArray, dataArray, ParamArray gCodes())
Dim fType() As Integer, fData()
Dim index As Long, I As Long
index = LBound(gCodes) - 1
For I = LBound(gCodes) To UBound(gCodes) Step 2
index = index + 1
ReDim Preserve fType(0 To index)
ReDim Preserve fData(0 To index)
fType(index) = CInt(gCodes(I))
fData(index) = gCodes(I + 1)
Next
TypeArray = fType: dataArray = fData
End Sub
'创建空间选择集的函数
Public Function CreateSelectionSet(Optional ssNameAs String = "ss") As AcadSelectionSet
Dim ss As AcadSelectionSet
On Error Resume Next
Set ss = ThisDrawing.SelectionSets(ssName)
If Err Then Set ss = ThisDrawing.SelectionSets.Add(ssName)
ss.Clear
Set CreateSelectionSet = ss
End Function

评分

参与人数 1铜板 +2 收起 理由
liweiqian1987 + 2 地信网的成长离不开您的支持!

查看全部评分

该会员没有填写今日想说内容.

242

主题

1万

铜板

26

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2477
发表于 2011-10-18 19:07 | 显示全部楼层
说的太好了,也太实用了。
想休假,可事还没做完。

9

主题

2万

铜板

41

好友

地信学员

除了你,我还能爱谁!

Rank: 12Rank: 12Rank: 12

积分
1756
发表于 2011-10-19 08:38 | 显示全部楼层
总是有新的收获!!
开锅请客咯。。。

2

主题

397

铜板

0

好友

助理工程师

Rank: 5Rank: 5

积分
114
发表于 2011-10-19 20:32 | 显示全部楼层
不太懂!

52

主题

1974

铜板

16

好友

教授级高工

Rank: 12Rank: 12Rank: 12

积分
1377
发表于 2011-10-20 09:18 | 显示全部楼层
又学习了一招,谢谢
该会员没有填写今日想说内容.

2

主题

1万

铜板

7

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
6419
发表于 2023-1-31 18:00 | 显示全部楼层
不太清楚
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表