Kheilmann 发表于 2006-6-1 18:07:18

查找和替换特定空间中的块

**** Hidden Message *****

Bryco 发表于 2006-6-1 18:16:15

我查看了插入到PS和MS中的块的属性,没有看到活动空间(因为缺少更好的word)属性

Jeff_M 发表于 2006-6-1 18:27:35

Function IsPs(oBref As AcadBlockReference) As Boolean
Dim oblock As AcadBlock
Set oblock = ThisDrawing.ObjectIdToObject(oBref.OwnerID)
If Not oblock.名称 = “*Model_Space” 则
ISP = True
End if
end function

Bryco 发表于 2006-6-1 18:33:36

暗示....实体的所有者是它所在的布局块.....
该死,布瑞克捷足先登了.....但他没有说明它在哪个PS布局中.....

Bryco 发表于 2006-6-1 18:55:20

他们俩都抢先了一步。在我测试的过程中,工作突然出现了。像Bryco一样,我没有说明是哪个布局,但我知道的是
If objBlkRef。OwnerID = this drawing . model space . objectid Then
'这是模型空间
Else
'这不是
End if

Jeff_M 发表于 2006-6-1 20:10:36

我认为这样更好,更快。
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对模型空间的使用优于字符串搜索,因此进行了编辑

Maverick® 发表于 2006-6-1 20:14:27

哦,宝贝叫我杰里米,刚刚注意到我有200多个帖子。
假装是网格铁家伙,把球扔在地上,做一个“滑稽散步部”的散步。

Maverick® 发表于 2006-6-1 20:20:19

这是我替换对象的方法,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

现在,我不需要了解我所在空间的任何其他信息。

Bryco 发表于 2006-6-2 10:49:38

很好,杰夫。

Jeff_M 发表于 2006-6-2 11:29:43


有一个有趣的散步部?
页: [1] 2
查看完整版本: 查找和替换特定空间中的块