查找和替换特定空间中的块
**** Hidden Message ***** 我查看了插入到PS和MS中的块的属性,没有看到活动空间(因为缺少更好的word)属性 Function IsPs(oBref As AcadBlockReference) As BooleanDim oblock As AcadBlock
Set oblock = ThisDrawing.ObjectIdToObject(oBref.OwnerID)
If Not oblock.名称 = “*Model_Space” 则
ISP = True
End if
end function 暗示....实体的所有者是它所在的布局块.....
该死,布瑞克捷足先登了.....但他没有说明它在哪个PS布局中..... 他们俩都抢先了一步。在我测试的过程中,工作突然出现了。像Bryco一样,我没有说明是哪个布局,但我知道的是
If objBlkRef。OwnerID = this drawing . model space . objectid Then
'这是模型空间
Else
'这不是
End if 我认为这样更好,更快。
PrivatelngMs As Long'Put this in the declarations area
Function IsMsBlockref(lngOwner As Long) As Boolean
If lngMs = 0 Then
lngMs = ThisDrawing.ModelSpace.ObjectID
End If
If lngOwner = lngMs Then IsMsBlockref = True
End Function
Sub TestisModelSpace()
Dim SS As AcadSelectionSet
Dim i As Integer
Set SS = sset(0, "insert")
For i = 0 To SS.Count - 1
Debug.Print IsMsBlockref(SS(i).OwnerID), i, SS(i).Name
Next
End Sub
由于Bob对模型空间的使用优于字符串搜索,因此进行了编辑 哦,宝贝叫我杰里米,刚刚注意到我有200多个帖子。
假装是网格铁家伙,把球扔在地上,做一个“滑稽散步部”的散步。 这是我替换对象的方法,oBlkRef是要替换的块:
Set oSpace = ThisDrawing.ObjectIdToObject(oBlkRef.OwnerID)
Set oNewBlk = oSpace.InsertBlock(insPt, Name, yada yada......)
'adjust properties to match original, or use them in the insertion code
现在,我不需要了解我所在空间的任何其他信息。 很好,杰夫。
有一个有趣的散步部?
页:
[1]
2