Тема: Как определить, является ли выбранный объект полилинией?

Как определить, является ли выбранный объект полилинией? Как из активного документа можно вытажить список полилиний? И ещё более общий вопрос: как в VBA проводится проверка соответствия типов?

Re: Как определить, является ли выбранный объект полилинией?

Код группы DXF. Читайте книжки.

Re: Как определить, является ли выбранный объект полилинией?

Примерно так:

   Dim pnt As Variant
   Dim acObj As AcadObject
    On Error Resume Next
   Call ThisDrawing.Utility.GetEntity(acObj, pnt, "Select Base 3D Polyline:")
   If Err.Number <> 0 Then
        Err.Clear
        MsgBox "Invalid Selection.", , "Invalid Selection"
         Exit Sub
   End If
  If Not (TypeOf acObj Is Acad3DPolyline) Then
     MsgBox "This is not 3D polyline", , "Invalid Selection"
     Set UPpline = Nothing
     Me.Show vbModal
     Exit Sub
  End If

Re: Как определить, является ли выбранный объект полилинией?

Я делаю так

Dim sel As AcadSelectionSet
Dim i As Integer
Set sel = Thisdocument.ActiveSelectionSet
For i = 0 To sel.Count - 1
If sel.Item(i).ObjectName = "AcDbLWPolyline" Then
...
End If
Next i

выбор объектов нужно сделать до запуска макроса.
извиняюсь если сделал ошибки

Re: Как определить, является ли выбранный объект полилинией?

Я все таки повторяю: используйте коды DXF о которых можно прочитать в любой мало-мальски приличной книге по АКАД (например в очень хороших книгах Полещука). Это во-первых. Во-вторых, выбор объектов лучше осуществлять через именованный набор. Ниже приведенный пример обеспечивает выбор необходимых примитивов (в Вашем случае это - полилиния) по отдельности и всем скопом.

Option Explicit
Option Compare Text
Option Base 0
Sub testLWPolyline()
Dim objSelSet As AcadSelectionSet
Dim varData(0) As Variant
Dim intData(0) As Integer
Dim i As Long
On Error GoTo Error_Control
For Each objSelSet In ThisDrawing.SelectionSets
    If objSelSet.Name = "Temp" Then
       ThisDrawing.SelectionSets.Item("Temp").Delete
       Exit For
    End If
Next
Set objSelSet = ThisDrawing.SelectionSets.Add("Temp") ' Создаем набор
'0 - обеспечение выбора по имени примитива
intData(0) = 0
'имя нужного примитива, в данном случае зто - полилиния
varData(0) = "LWPOLYLINE"
'выбор отдельных примитивов нужного типа мышкой
objSelSet.SelectOnScreen intData, varData
'выбор всех примитивов нужного типа в чертеже
objSelSet.Select acSelectionSetAll, , , intData, varData
GoTo Exit_Here
Error_Control:
MsgBox "Ошибка: " & Err.Description & "; " & Err.Number
Exit_Here:
Set objSelSet = Nothing
End Sub

А вообще-то таких примеров море на http://www.cad.dp.ua/stats/a_vba/