请教:如何遍历某图层内的所有对象?
本以为 for each entity in layer (傻) 差不多,判断以下不就行了~~~for each objEntity in thisdrawing.modelspace
if objEntity.Layer="TestLayer" then
'取出来了~~~~
end if
next objEntity ......这...太费时了吧!~要是图形上有上千个对象就要循环上千次.!~有没更好的方法? 用选择集过滤后再历遍选择集 楼上的正解~~~~~~ 2楼的办法最简单但又最费时。4楼说用选择集,选择集怎么创建?用交互方式点取还是用遍历?能说清楚点吗? 用选择集?那好象还是回到老问题:怎么过滤出某图层的对象?? 我有个笨笨的方法:
冻结其它图层只剩要遍历的图层.选择所有的对象加入选择集.再解冻.虽然可行.但还是较繁索.
希望哪位大大给小弟指条明路!~
Sub test()
On Error Resume Next
'创建选择集
Dim SSetObj As Object
Set SSetObj = ThisDrawing.SelectionSets("LayerCount")
If Err.Number <> 0 Then
Err.Clear
Set SSetObj = ThisDrawing.SelectionSets.Add("LayerCount")
End If
SSetObj.Clear
On Error GoTo ErrTrap
'创建过滤机制
Dim fType(0 To 0) As Integer
Dim fData(0 To 0) As Variant
fType(0) = 8: fData(0) = "0" ' 层名
'选择0层的所有实体
SSetObj.Select acSelectionSetAll, , , fType, fData
'返回0层的实体数目
Debug.Print SSetObj.Count
'删除数组
Erase fType: Erase fData
'删除选择集
SSetObj.Clear
SSetObj.Delete
Set SSetObj = Nothing
Exit Sub
ErrTrap:
MsgBox "出错了,请检查程序!"
On Error GoTo 0
End Sub
我就是用9楼的办法,应该是最快的了
页:
[1]
2