我正在尝试获取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
答案 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)