Imports CAD_RTM = Autodesk.AutoCAD.Runtime
Imports CAD_APS = Autodesk.autoCAD.ApplicationServices
Imports CAD_EDI = Autodesk.autoCAD.EditorInput
Imports CAD_DBS = Autodesk.autoCAD.DatabaseServices
Imports CAD_GEO = Autodesk.autoCAD.Geometry
<Assembly: CAD_RTM.CommandClass(GetType(PanelCommands.Commander))>
Namespace PanelCommands
Public Class Commander
' ТЕСТОВАЯ КОМАНДА
<CAD_RTM.CommandMethod("TEST_SEL")> _
Public Sub test_select()
Dim NameSloy As String = "output[1]_3_2629-14tp_Level 38"
Dim TypeObj As String = "TEXT"
Dim NameBlock = ""
Dim ss As CAD_EDI.SelectionSet = acadnet_primitive_Select(NameSloy, TypeObj, NameBlock)
If ss Is Nothing Then
MsgBox("AutoCAD не смог предоставить набор элементов по критериям отбора:" & vbCrLf & _
"- слой " & NameSloy & vbCrLf & _
"- тип элемента " & TypeObj & vbCrLf & _
"- имя блока " & NameBlock)
Else
MsgBox("В наборе " & ss.Count & " элементов.")
End If
End Sub
' ВЫБОРКА ЭЛЕМЕНТОВ ЧЕРТЕЖА
Public Shared Function acadnet_primitive_Select(ByVal LayerName As String, _
ByVal TypesObj As String, _
ByVal BlockName As String, _
Optional ByVal AcDoc As CAD_APS.Document = Nothing) _
As CAD_EDI.SelectionSet
Try
Dim filter As CAD_EDI.SelectionFilter = New CAD_EDI.SelectionFilter(acadnet_filter_SetVals(LayerName, TypesObj, BlockName))
Dim sel As CAD_EDI.PromptSelectionResult = Nothing
If AcDoc Is Nothing Then
sel = CAD_APS.Application.DocumentManager.MdiActiveDocument.Editor.SelectAll(filter)
Else
sel = AcDoc.Editor.SelectAll(filter)
End If
Return sel.Value
Catch ex As System.Exception
Return Nothing
End Try
End Function
Public Shared Function acadnet_filter_SetVals(ByVal LayerName As String, _
ByVal TypesObj As String, _
ByVal BlockName As String) As CAD_DBS.TypedValue()
Dim list = New List(Of CAD_DBS.TypedValue)
If TypesObj <> "" Then list.Add(New CAD_DBS.TypedValue(CAD_DBS.DxfCode.Start, TypesObj))
If LayerName <> "" Then list.Add(New CAD_DBS.TypedValue(CAD_DBS.DxfCode.LayerName, LayerName))
If BlockName <> "" Then list.Add(New CAD_DBS.TypedValue(CAD_DBS.DxfCode.BlockName, BlockName))
Dim values() As CAD_DBS.TypedValue = Nothing
For i As Integer = 0 To list.Count - 1
ReDim Preserve values(i)
values(i) = list.Item(i)
Next
Return values
End Function
End Class
End Namespace