Тема: Интерактивный ввод полилинии
Здравствуйте
Подскажите есть ли возможность на VBA интерактивно вводить полилинию.
Т.е. необходимо вводить полилинию также как и AutoCad'е
НО количество вершин заранее задано
ЗЫ сори за поток сознания
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Интерактивный ввод полилинии
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Здравствуйте
Подскажите есть ли возможность на VBA интерактивно вводить полилинию.
Т.е. необходимо вводить полилинию также как и AutoCad'е
НО количество вершин заранее задано
ЗЫ сори за поток сознания
> AnteC
Помню что писал раньше аналог Автокадовской команды
но не смог найти в своих загашниках
Этот вариант точно более громоздкий и немного
не то, но вроде работает
Если надо изменить на облегченную полилинию
измени размерность вводимых координат
Option Explicit '' based on Tony Tanzillo's technic '' request check "Break on Unhandled Errors" in General options Public Sub InterPline() Dim oPline As AcadPolyline Dim dblPts(5) As Double Dim strPropmpt As String strPropmpt = vbCrLf & "Specify first point: " Dim pickPt As Variant Dim vexNum As Integer Dim Counter As Integer Counter = 0 vexNum = CInt(InputBox(vbCrLf & "Number Of Vertices:", "Draw Pline Interactively")) Do While Counter < vexNum On Error Resume Next pickPt = ThisDrawing.Utility.GetPoint(, strPropmpt) If Counter = 0 Then dblPts(0) = pickPt(0): dblPts(1) = pickPt(1): dblPts(2) = pickPt(2) dblPts(3) = pickPt(0): dblPts(4) = pickPt(1): dblPts(5) = pickPt(2) Set oPline = ThisDrawing.ModelSpace.AddPolyline(dblPts) ElseIf Counter = 1 Then oPline.Coordinate(Counter) = pickPt Else oPline.AppendVertex pickPt End If oPline.Update If Err Then Err.Clear Exit Do End If On Error GoTo 0 Counter = Counter + 1 strPropmpt = vbCrLf & "Specify next point: " Loop On Error GoTo 0 End Sub
~'J'~
Fatty
Спасибо, но это немного не то...
Хочется именно интерактивность в том, чтобы при указании последующей точки полилиния "тянулась" за курсором
> AnteC
Вот с трудом нашел о чем говорил, просто
добавь счетчик на количество вершин, можешь
по аналогии с вышеприведенной процедурой
Option Explicit Public Sub DynPolyline() ' draw lwpolyline interactively Dim pickPt As Variant Dim dblCoors() As Double Dim i As Long Dim oPoly As AcadLWPolyline i = 0 On Error Resume Next pickPt = ThisDrawing.Utility.GetPoint(, vbCr & "First point: ") If Err = 0 Then ReDim dblCoors(1) dblCoors(i) = pickPt(0): dblCoors(i + 1) = pickPt(1) Do Until Err.Number <> 0 i = i + 2 pickPt = ThisDrawing.Utility.GetPoint(pickPt, vbCr & "Pick next point or press Enter to stop: ") ReDim Preserve dblCoors(UBound(dblCoors) + 2) dblCoors(i) = pickPt(0): dblCoors(i + 1) = pickPt(1) If oPoly Is Nothing Then Set oPoly = ThisDrawing.ModelSpace.AddLightWeightPolyline(dblCoors) Else oPoly.Coordinates = dblCoors End If Loop Dim lngResp As Long lngResp = MsgBox("Do you want to close polyline?", vbYesNo, "Close Mode") If lngResp = 6 Then oPoly.Closed = True End If End If End Sub
~'J'~
Fatty
Большое спасибо это именно то, что нужно
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Интерактивный ввод полилинии
Форум работает на PunBB, при поддержке Informer Technologies, Inc