SetWidth Пример

Sub Example_SetWidth()
    'Следующий код запрашивает Вас выбирать легкую ломаную линию и
    'затем запрашивает Вас относительно установки ширины каждой доли ломаной линии. 
    'Нажатие ENTER не определяя ширину эквивалентно вводу 0. 
	  
    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 promptStart As String
    Dim promptEnd As String
              
    On Error Resume Next
   
    ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select a polyline"
       
    'Удостоверьтесь, что пользователь выбрал ломаную линию.
    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
          
        'Получите значения ширины от пользователя
        promptStart = vbCrLf & "Определите ширину в начале доли в " & retCoord(i) & "," & retCoord(i + 1) & " ==> "
        promptEnd = vbCrLf & "Теперь определите ширину в конце той доли ==> "
       
        StartWidth = ThisDrawing.Utility.GetReal(promptStart)
        EndWidth = ThisDrawing.Utility.GetReal(promptEnd)

        'Установите ширину текущей доли
        returnObj.SetWidth segment, StartWidth, EndWidth
     
        'Подготовитесь получать ширину следующей доли
        i = i + 2
        segment = segment + 1
        nbr_of_segments = nbr_of_segments - 1
    Loop
      
    MsgBox "Размеры доли были установлены", , "SetWidth Пример"

End Sub
Сайт управляется системой uCoz