|
GetWidth Пример |
Sub Example_GetWidth()
' Следующий код запрашивает Вас выбирать легкую ломаную линию,
' затем показывает ширину каждой доли выбранной ломаной линии.
Dim returnObj As AcadObject
Dim basePnt As Variant
Dim retCoord As Variant
Dim StartWidth As Double
Dim EndWidth As Double
Dim i, j As Long
Dim nbr_of_segments As Long
Dim nbr_of_vertices As Long
Dim segment As Long
Dim message_string
On Error Resume Next
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Выберите ломаную линию"
' Удостоверьтесь, что пользователь выбрал ломаную линию.
If Err <> 0 Then
If returnObj.EntityName <> "AcDbPolyline" Then
MsgBox "Вы не выбирали ломаную линию"
End If
Exit Sub
End If
' Получите координаты каждой вершины выбранной ломаной линии.
' Координаты возвращены в массиве точек.
retCoord = returnObj.Coordinates
segment = 0
i = LBound(retCoord) ' Индекс начала массива координат
j = UBound(retCoord) ' Конечный индекс массива координат
nbr_of_vertices = ((j - i) \ 2) + 1 ' Число вершины в ломаной линии
' Определите число долей в ломаной линии.
' Закрытая ломаная линия имеет столько долей, сколько вершин.
' Открытая ломаная линия имеет на одину долю меньше, чем вершин.
' Проверьте свойство Closed, чтобы определить, закрыта ли ломаная линия.
If returnObj.Closed Then
nbr_of_segments = nbr_of_vertices
Else
nbr_of_segments = nbr_of_vertices - 1
End If
' Получите ширину каждой доли ломаной линии
Do While nbr_of_segments > 0
' Получите ширину текущей доли
returnObj.GetWidth segment, StartWidth, EndWidth
message_string = "Доля, которая начинается в " & retCoord(i) & "," & retCoord(i + 1) _
& " имеет ширину начала " & StartWidth & " и конечную ширину " & EndWidth
MsgBox message_string, , "GetWidth Пример"
' Подготовитесь получить ширину следующей доли
i = i + 2
segment = segment + 1
nbr_of_segments = nbr_of_segments - 1
Loop
End Sub