Тема: Как получить свойства объекта с при SelectionSets?

Обращаюсь к Вам за помощью.
В общем необходимо получить свойства линии например, а конкретнее ее координаты.
Мы можем с помощью SelectionSets выбрать объекты и просмотреть какие выбрали, например так:

 ThisDrawing.SelectionSets.Item(index).Item(I).ObjectName

Где первый Item(index) - номер SelectionSets.
второй Item(I) - номер выбранного объекта в SelectionSets.
Пусть у нас это AcDbLine - линия.
Вопрос: как получить координаты этой линии?
Или может кто знает проще способ выбора объектов на экране и получения свойств (координат) этих объектов.
Заранее признателей за ваши ответы.

Re: Как получить свойства объекта с при SelectionSets?

Посмотри свойства линии
EndPoint и StartPoint...

Re: Как получить свойства объекта с при SelectionSets?

В общем это логично.
Но вот только что сам откопал здесь http://www.autocad.ru/cgi-bin/f1/board.cgi?t=14403Lj:

Public Sub Get_Text()
    Dim ss As AutoCAD.AcadSelectionSet
    Dim gpcode(0) As Integer
    Dim dataValue(0) As Variant
    gpcode(0) = 0
    dataValue(0) = "LINE"
    Dim groupCode As Variant, dataCode As Variant
    groupCode = gpcode
    dataCode = dataValue
    Set ss = ThisDrawing.SelectionSets.Add("ss")
    ss.Select acSelectionSetAll, , , groupCode, dataCode 'выбираем все pline-ы с чертежа
' Если нужен просто набор полилиний, то на этом можно закончить.
' А это нужно, если нам надо что-то с этими полилиниями сотворить
    Dim pl As AutoCAD.AcadLine
    Dim i As Integer
    i = 0
    For Each pl In ss
        Set pl = ss.Item(i)
        'Здесь делаем с этой полилинией все, что нам нужно
        MsgBox "end point(0)= " & pl.endPoint(0)
    Next
    ss.Delete
End Sub

Re: Как получить свойства объекта с при SelectionSets?

В контексте конечно по смыслу необходимо заменить Pline на line

Re: Как получить свойства объекта с при SelectionSets?

Только я не уверен, что у Pline есть свойства StartPoint и EndPoint (на основе dxf-кодов говорю - у отрезка StartPoint - dxf 10, EndPoint - dxf 11, а у Pline (lwpolyline) - только вершины. А у 3dployline - отсутствие дуговых сегментов...)

Re: Как получить свойства объекта с при SelectionSets?

Так оно и есть

Re: Как получить свойства объекта с при SelectionSets?

> LGers
Пацаны прикалываются.

Re: Как получить свойства объекта с при SelectionSets?

> JS
Может и прикалываемся, (я на вба не работаю, хотя активно использую его методы на Влиспе...), но рекомендаций достаточно для написания рабочей программы!
> LGers
Надеюсь, на меня не в обиде...
Чесное слово, все писал из лучших побуждений!

Re: Как получить свойства объекта с при SelectionSets?

Public Sub PrintMessage(MessageString As String)
Dim pEchoVal As Integer
    pEchoVal = ThisDrawing.GetVariable("CMDECHO")
    ThisDrawing.SetVariable "CMDECHO", 1
    ThisDrawing.Utility.Prompt MessageString
    ThisDrawing.SetVariable "CMDECHO", pEchoVal
End Sub
Public Sub PrepareSelSet(vAcadDoc As AcadDocument, ss As String, SSet As AcadSelectionSet)
    On Error Resume Next
        Set SSet = vAcadDoc.SelectionSets.Item(ss)
    If Err Then
        Err.Clear
        Set SSet = vAcadDoc.SelectionSets.Add(ss)
    Else
        SSet.Clear
    End If
End Sub
Sub aa()
Dim pSS As AcadSelectionSet
Dim pE As AcadEntity
Dim pLin As AcadLine
Dim pCir As AcadCircle
Dim pNLin As Long, pNCir As Long, pNOther As Long
Dim pV As Variant
    PrepareSelSet ThisDrawing, "ss", pSS
    PrintMessage vbCrLf & "Выбери объекты:"
    pSS.SelectOnScreen
    If pSS.Count = 0 Then
        PrintMessage " Ничего не выбрано."
        Exit Sub
    End If
    PrintMessage vbCrLf & "***********************************************"
    For Each pE In pSS
        Select Case TypeName(pE)
        Case "IAcadLine"
            pNLin = pNLin + 1
            Set pLin = pE
            'Здесь делаем с PLin что угодно.
            PrintMessage vbCrLf & "Отрезок:"
            pV = pLin.startPoint
            PrintMessage vbCrLf & "     от:" & Round(pV(0), 3) & ";" & Round(pV(1), 3) & ";" & Round(pV(2), 3)
            pV = pLin.endPoint
            PrintMessage vbCrLf & "     до:" & Round(pV(0), 3) & ";" & Round(pV(1), 3) & ";" & Round(pV(2), 3)
        Case "IAcadCircle"
            pNCir = pNCir + 1
            Set pCir = pE
            'Здесь делаем с PCir что ни попадя.
            PrintMessage vbCrLf & "Окружность:"
            pV = pCir.center
            PrintMessage vbCrLf & "     Центр:" & Round(pV(0), 3) & ";" & Round(pV(1), 3) & ";" & Round(pV(2), 3)
            PrintMessage vbCrLf & "    Радиус:" & Round(pCir.Radius, 3)
        Case Else
            pNOther = pNOther + 1
        End Select
    Next pE
    PrintMessage vbCrLf & "***********************************************"
    PrintMessage vbCrLf & "Всего объектов:" & pSS.Count
    PrintMessage vbCrLf & "      Отрезков:" & pNLin
    PrintMessage vbCrLf & "   Окружностей:" & pNCir
    PrintMessage vbCrLf & "   Посторонних:" & pNOther
    pSS.Delete
End Sub

Re: Как получить свойства объекта с при SelectionSets?

> Евгений Елпанов
Все ОК! ;)

> JS
Спасибо за исчерпывающий ответ. Даже не думал, что будет такая активность.