Тема: Поворот объектов
Дан массив объектов типа AcadLine, необходимо выполнить поворот линий этого массива на заданный угол в программе на VBA, как это сделать?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Поворот объектов
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Дан массив объектов типа AcadLine, необходимо выполнить поворот линий этого массива на заданный угол в программе на VBA, как это сделать?
Как я понял нужно повернуть не отдельную линию а весь массив вокруг одной точки..
Делаем так объединяем объекты в блок, поворачиваем его и разблокируем. В принципе блок на самом деле не нужен, можно просто пустить цикл по линиям и поворачивать их вокруг одной точки. Что непонятно спрашивай.
Всецело всем .. Savage
Блок не обязателен, только чертеж засорять. Лучше воспользоваться группировкой.
Если можно, подксажите какой функцией можно повернуть отдельно линию.
?з всех об''ектов на чертеже только линии можно выбрать и повернуть еще таким способом
Sub rotlin() Dim acset As AcadSelectionSet Dim ent As AcadEntity Dim rotp As Variant Dim rotangl As Variant Dim ftype(0) As Integer Dim fdat(0) As Variant '0=Выделяет объекты по типу объекта("line","circle", "text" и т.п.) ftype(0) = 0 'Тип-линия т.е будут выделены только линии fdat(0) = "line" Set acset = ThisDrawing.SelectionSets.Add(ThisDrawing.SelectionSets.Count + 1) 'Выделяем объекты acset.SelectOnScreen ftype, fdat On Error Resume Next 'Задаем точку, вокруг которой будем поворачивать объекты rotp = ThisDrawing.Utility.GetPoint(, vbCr & "Укажите точку поворота: ") 'Задаем угол поворота rotangl = ThisDrawing.Utility.GetAngle(rotp, vbCr & "Угол поворота: ") For Each ent In acset ent.Rotate rotp, rotangl Next ent End Sub
?з всех об''ектов на чертеже только линии можно выбрать и повернуть еще таким способом
Sub rotlin()
Dim acset As AcadSelectionSet
Dim ent As AcadEntity
Dim rotp As Variant
Dim rotangl As Variant
Dim ftype(0) As Integer
Dim fdat(0) As Variant
'0=Выделяет объекты по типу объекта("line","circle", "text" и т.п.)
ftype(0) = 0
'Тип-линия т.е будут выделены только линии
fdat(0) = "line"
Set acset = ThisDrawing.SelectionSets.Add(ThisDrawing.SelectionSets.Count + 1)
'Выделяем объекты
acset.SelectOnScreen ftype, fdat
On Error Resume Next
'Задаем точку, вокруг которой будем поворачивать объекты
rotp = ThisDrawing.Utility.GetPoint(, vbCr & "Укажите точку поворота: ")
'Задаем угол поворота
rotangl = ThisDrawing.Utility.GetAngle(rotp, vbCr & "Угол поворота: ")
For Each ent In acset
ent.Rotate rotp, rotangl
Next ent
End Sub
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Поворот объектов
Форум работает на PunBB, при поддержке Informer Technologies, Inc