如何在autocad-VBA中获取块引用的坐标?

时间:2010-07-22 18:44:38

标签: vba autocad

我正在尝试获取autocad blockreference的坐标。

使用下面的代码,我可以在autocad中选择一个块引用,但它总是显示(0,0,0)作为插入点......

插入点是否是块的实际坐标?

Sub GetInsertpoint()
    Dim oEnt As AcadEntity
    Dim varPick As Variant
    Dim brBref As AcadBlockReference
    Dim arAttR As AcadAttributeReference
    Dim varAt As Variant
    Dim i As Double

    ThisDrawing.Utility.GetEntity oEnt, varPick, vbCr & "Get the block"
    If TypeOf oEnt Is AcadBlockReference Then
        MsgBox "Thank you, very nice!"
        Set brBref = oEnt
        MsgBox brBref.InsertionPoint(0) & brBref.InsertionPoint(1) & brBref.InsertionPoint(2)
    Else
        MsgBox "Not a block reference!"
        Exit Sub
    End If

End Sub

3 个答案:

答案 0 :(得分:1)

首先:您使用的是哪个版本的AutoCAD?

在德国AutoCAD 2008上尝试了您的代码。我从多边形创建了一些简单的块并将它们插入到新的图形中。

当我执行上面的代码并选择其中一个块时,我总是得到有效的坐标。 所以这可能是一个问题,你是如何创建块的?

也许您创建了一个块并将“从屏幕选择插入点”留空。所以ACAD采用了默认值:(0,0,0)。这将是一个解释,为什么你总是得到这些坐标。

答案 1 :(得分:0)

爆炸AcDbBlockReferance

AcDbBlockReferance.explode();

它将为BlockReferance中的实体提供。

答案 2 :(得分:0)

试试这个

Dim point1, point2 As Variant
brBref.GetBoundingBox point1, point2
MsgBox point1(0) & " / " & point1(1) & vbcrlf & point2(0) & " / " & point2(1)