Тема: Как получить FILLET?

как получить

 FILLET

?

Re: Как получить FILLET?

У меня та же проблемма! Хочу создать твердотельный 3d эллипс в VBA.
Помогите, люди добрые!

Re: Как получить FILLET?

Смотрите SetBulge

Re: Как получить FILLET?

Спасибо за ответ, bender, но это немного не то, что нужно. Задача чочтоит в следующем: Мне нужно нарисовать приплюснутую полусферу. В ACADе я это делал так: рисуется цилиндр высотой h, затем припомощи Fillet с радиусом h сглаживаю верхнюю грань. Как мне сделать что-нить подобное на VBA?
                             Заранее спасибо!

Re: Как получить FILLET?

Никак.
Зайдите с другой стороны. Рисуете контур нужной формы и создаете Solid вращением.

Re: Как получить FILLET?

В данном случае это очень сложно, но ладно, справимся. А вот такой вопрос: как увеличить количество сегментов при вращении. По умолчанию у меня 8 что ли, не уверен. В общем, при рисовании круга вращением линии, у меня получается восьмиугольник.
Спасибо за ответ.

Re: Как получить FILLET?

> Денис
Ничего не путаете? При REVOLVE получается именно круг. По самой природе этой команды.

Re: Как получить FILLET?

Нет, ничего не путаю. У Элен Филькенштейн я где-то видел, что свойства этой команды зашиты в какой-то переменной.

Re: Как получить FILLET?

Это для создания поверхностей - системные переменные Surftab1 и Surftab2. Для 2М-примитивов - Isolines, но она влияет только на отображение на экране.

Re: Как получить FILLET?

С дугой справиться очень сложно.
Revolve дугу невозможно, можно вращать только Region, а это значит, что надо делать многие ненужные построения и то, построив их при Revolve получается не то, что нужно.
Если Вас не затруднит, не могли бы Вы написать код для построения эллиптической штампованой крышки фильтра (знакомые с техникой поймут, а тут таких я думаю много :)) с толщиной стенки 2.
Заранее благодарен.

Re: Как получить FILLET?

Ну помогите же кто-нибудь! Уже две недели я рыскаю по сети! Хоть скажите, что не можете помочь...

Re: Как получить FILLET?

Может быть сыро, но можно разобраться.
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