Тема: координаты вершин полилинии записать в массив или файл...
Вроде с отрезками получалось, а вот как дело дошло до полилиний - ни в какую. Может, у кого есть фрагмент кода?
Да, и всех - с Наступившим!
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → координаты вершин полилинии записать в массив или файл...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Вроде с отрезками получалось, а вот как дело дошло до полилиний - ни в какую. Может, у кого есть фрагмент кода?
Да, и всех - с Наступившим!
> tbiliser
Не совсем готовое решение но идея будет полезна
Option Explicit Sub VertText() Dim vertTextObj As AcadMText Dim objEnt As AcadEntity Dim spaceObj As AcadBlock Dim TxtInsPoint(2) As Double Dim dblWidth As Double Dim strText As String Dim n As Integer Dim i As Integer If ThisDrawing.ActiveSpace = acModelSpace Then Set spaceObj = ThisDrawing.ModelSpace Else Set spaceObj = ThisDrawing.PaperSpace End If Dim objSetPoly As AcadSelectionSet Set objSetPoly = ThisDrawing.SelectionSets.Add("MyPoly") objSetPoly.SelectOnScreen For Each objEnt In objSetPoly Dim vert As Variant If TypeOf objEnt Is AcadLWPolyline Then n = 2 ElseIf TypeOf objEnt Is Acad3DPolyline Or TypeOf objEnt Is AcadPolyline Then n = 3 Else MsgBox "Wrong object" End If vert = objEnt.Coordinates For i = LBound(vert) To UBound(vert) Step n dblWidth = 0# If TypeOf objEnt Is AcadLWPolyline Then strText = R2S(CStr(vert(i)), 2, 5) & "," & R2S(CStr(vert(i + 1)), 2, 5) ElseIf TypeOf objEnt Is Acad3DPolyline Or TypeOf objEnt Is AcadPolyline Then strText = R2S(CStr(vert(i)), 2, 5) & "," & R2S(CStr(vert(i + 1)), 2, 5) & "," & R2S(CStr(vert(i + 2)), 2, 5) End If '' >> а здесь пишешь в файл << TxtInsPoint(0) = vert(i) TxtInsPoint(1) = vert(i + 1) If TypeOf objEnt Is AcadLWPolyline Then TxtInsPoint(2) = 0# ElseIf TypeOf objEnt Is Acad3DPolyline Or TypeOf objEnt Is AcadPolyline Then TxtInsPoint(2) = vert(i + 2) End If Set vertTextObj = spaceObj.AddMText(TxtInsPoint, dblWidth, strText) Next Next objSetPoly.Delete Set objSetPoly = Nothing End Sub '' convert real to string Function R2S(dblVal As Double, unitEnum As Long, intPrec As Integer) As String ' unitEnum: ' 2-decimal ' 4-architectural etc. ' intPrec - precision R2S = ThisDrawing.Utility.RealToString(dblVal, unitEnum, intPrec) End Function
~'J'~
> tbiliser
Забыл тебя тоже поздравить :)
~'J'~
O, Fatty, спасибо огромное! РАБОТАЕТ! Единственный нюанс, кот. осталось доделать - как сделать так, чтобы координаты брались не мировые, а с текущей юзерской системы координат?
Еще раз спасибо
> tbiliser
Навскидку могу только подсказать, посмотри
метод TranslateCoordinates в Help'e
Лучше с этим разобраться самостоятельно, это
ведь базовый метод, еще не раз пригодится
Успехов,
~'J'~
Спасибо, Fatty, иду смотреть. :)
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → координаты вершин полилинии записать в массив или файл...
Форум работает на PunBB, при поддержке Informer Technologies, Inc