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