Тема: Как заставить метод GetEntity вернуть правильную координату Z?

...
  ThisDrawing.Utility.GetEntity EntObj, PtVar, "Выбери объект"
...

возвращает только x и y координату точки выбора объекта, Z - же всегда ровна 0!?
Возможно ли как нибудь получить Z?

Re: Как заставить метод GetEntity вернуть правильную координату Z?

> Wind
Можно попробовать так:

Option Explicit
Sub GetZCoordinate()
    Dim ssetObj As AcadSelectionSet
    Dim entObj As AcadEntity
    Dim oPline As AcadLWPolyline
    Dim oUtil As AcadUtility
    Dim fCode(0) As Integer
    Dim fdata(0) As Variant
    Dim dxfCodeVar As Variant
    Dim dxfDataVar As Variant
    Dim ptVar As Variant
    Dim sysVarName As String
    Dim sysVarData As Variant
    Dim oldVarData As Variant
    Dim DataType As Integer
    Dim intData As Integer
    fCode(0) = 0
    fdata(0) = "LWPOLYLINE"    '// set other type you need
    dxfCodeVar = fCode
    dxfDataVar = fdata
    On Error GoTo Err_Control
    Set oUtil = ThisDrawing.Utility
    sysVarName = "OSMODE"
    intData = 512
    sysVarData = intData
    oldVarData = ThisDrawing.GetVariable(sysVarName)    '//store osnap
    ThisDrawing.SetVariable sysVarName, sysVarData    '//set osnap to nearest
    ptVar = oUtil.GetPoint(, vbCrLf & "Pick a point, use snap for that: ")
    With ThisDrawing.SelectionSets
        While .Count > 0
            .Item(0).Delete
        Wend
    End With
    Set ssetObj = ThisDrawing.SelectionSets.Add("$SelAtPoint$")
    ssetObj.SelectAtPoint ptVar, dxfCodeVar, dxfDataVar
    If ssetObj.Count = 0 Then
        MsgBox "Nothing selected, try again"
        Exit Sub
    End If
    If ssetObj.Count > 1 Then
        MsgBox "Selected more than one objects"
        Exit Sub
    Else
        MsgBox "Selected: " & ssetObj.Count & " objects"
        Set entObj = ssetObj.Item(0)
        Set oPline = entObj
        ptVar = oUtil.TranslateCoordinates(ptVar, acUCS, acWorld, False)
        MsgBox "Z coordinate of picked point is: " & ptVar(2)
    End If
Exit_Here:
    ThisDrawing.SetVariable sysVarName, oldVarData    '//restore osnap
    ssetObj.Delete
    Exit Sub
Err_Control:
    If Err.Number <> 0 Then
        MsgBox Err.Description
    End If
    Resume Exit_Here
End Sub

~'J'~

Re: Как заставить метод GetEntity вернуть правильную координату Z?

Спасибо, я сам думал о таком решении, но так элегантно у меня не выходило!

Re: Как заставить метод GetEntity вернуть правильную координату Z?

> Михаил
Насчет элегантности шибко сомневаюсь, так же как
сомневаюсь будет ли работать в любой системе координат,
возможно, нужна коррекция, просто нет времени проверять
~'J'~