Тема: Как получить FILLET?
как получить
FILLET
?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Как получить FILLET?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
У меня та же проблемма! Хочу создать твердотельный 3d эллипс в VBA.
Помогите, люди добрые!
Спасибо за ответ, bender, но это немного не то, что нужно. Задача чочтоит в следующем: Мне нужно нарисовать приплюснутую полусферу. В ACADе я это делал так: рисуется цилиндр высотой h, затем припомощи Fillet с радиусом h сглаживаю верхнюю грань. Как мне сделать что-нить подобное на VBA?
Заранее спасибо!
Никак.
Зайдите с другой стороны. Рисуете контур нужной формы и создаете Solid вращением.
В данном случае это очень сложно, но ладно, справимся. А вот такой вопрос: как увеличить количество сегментов при вращении. По умолчанию у меня 8 что ли, не уверен. В общем, при рисовании круга вращением линии, у меня получается восьмиугольник.
Спасибо за ответ.
> Денис
Ничего не путаете? При REVOLVE получается именно круг. По самой природе этой команды.
Нет, ничего не путаю. У Элен Филькенштейн я где-то видел, что свойства этой команды зашиты в какой-то переменной.
Это для создания поверхностей - системные переменные Surftab1 и Surftab2. Для 2М-примитивов - Isolines, но она влияет только на отображение на экране.
С дугой справиться очень сложно.
Revolve дугу невозможно, можно вращать только Region, а это значит, что надо делать многие ненужные построения и то, построив их при Revolve получается не то, что нужно.
Если Вас не затруднит, не могли бы Вы написать код для построения эллиптической штампованой крышки фильтра (знакомые с техникой поймут, а тут таких я думаю много :)) с толщиной стенки 2.
Заранее благодарен.
Ну помогите же кто-нибудь! Уже две недели я рыскаю по сети! Хоть скажите, что не можете помочь...
Может быть сыро, но можно разобраться.
Sub fillet()
Dim line1 As AcadLine
Dim line2 As AcadLine
Dim strpnt(0 To 2) As Double
Dim endpnt(0 To 2) As Double
strpnt(0) = 0: strpnt(1) = 0: strpnt(2) = 0
endpnt(0) = 100: endpnt(1) = 0: endpnt(2) = 0
Set line1 = ThisDrawing.ModelSpace.AddLine(strpnt, endpnt)
strpnt(0) = 0: strpnt(1) = 0: strpnt(2) = 0
endpnt(0) = 20: endpnt(1) = 100: endpnt(2) = 0
Set line2 = ThisDrawing.ModelSpace.AddLine(strpnt, endpnt)
Dim off_line1 As Variant
off_line1 = line1.Offset(50)
Dim off_line2 As Variant
off_line2 = line2.Offset(-50)
Dim intPoints1 As Variant
intPoints1 = off_line1(0).IntersectWith(off_line2(0), cExtendNone) Dim intPoints As Variant
intPoints = off_line1(0).IntersectWith(off_line2(0), cExtendNone)
Dim angl As Double
angl = line2.Angle
Dim arcObj As AcadArc
Dim radius As Double
Dim startAngleInDegree As Double
Dim endAngleInDegree As Double
' Define the circle
radius = 50#
' Convert the angles in degrees to angles in radians
Dim startAngleInRadian As Double
Dim endAngleInRadian As Double
endAngleInRadian = 270 * 3.14159265358979 / 180#
startAngleInRadian = 90 * 3.14159265358979 / 180# + angl
' Create the arc object in model space
Set arcObj = ThisDrawing.ModelSpace.AddArc(intPoints1, radius, endAngleInRadian, startAngleInRadian)
ZoomAll
' Find the radius of the arc
intPoints = arcObj.IntersectWith(line1, acExtendNone) line1.StartPoint = intPoints
line1.Update ' Îáíîâëåíèå ëèíèè 1
intPoints = arcObj.IntersectWith(line2, acExtendNone)
line2.StartPoint = intPoints
line2.Update
End Sub
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Как получить FILLET?
Форум работает на PunBB, при поддержке Informer Technologies, Inc