Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Алексей (IdeaSoft) от 04-02-2015, 00:37:07

Название: Как создать объект Solid3d в виде кольца? Или сделать из цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 00:37:07
Дорого времени суток.
Рисую цилиндр (AutoCAD 2012 -2015), как частный случай усеченного конуса.
Вот фрагмент кода.

Код - vb.net [Выбрать]
  1. Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices
  2.  
  3. Dim R As Double  = 1
  4. Dim aLen as Double = 5
  5. Dim Body_3d = New CAD_DBS.Solid3d
  6. Body_3d.CreateFrustum(aLen, R, R, R)
  7. ' добавляю примитив в базу "мой метод"
  8. Dim id = acadnet_add_entity(Body_3d)
  9.  
                               
Не могу подобрать метод который делает цилиндр.
Есть ли такой метод или нужно выдавливать тело, что бы получить полую часть?
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 00:47:09
Есть ли такой метод или нужно выдавливать тело, что бы получить полую часть?
Думаю что или выдавливать область в виде кольца или вращать прямоугольную область или вычесть из одного цилиндра другой.
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 01:00:01
Нашёл вот такой метод. Делать над объектом логическую операцию.

Код - vb.net [Выбрать]
  1. Imports CAD_DBS = Autodesk.AutoCAD.DatabaseServices
  2.  
  3. Dim aLen As Double = 10
  4. Dim R As Double = 2
  5. Dim Body_3d = New CAD_DBS.Solid3d
  6. Dim Body_3d_1 = New CAD_DBS.Solid3d
  7.  
  8. Body_3d.CreateFrustum(aLen,R,R,R)
  9. Body_3d_1.CreateFrustum(aLen,R-0.2,R-0.2,R-0.2)
  10.  
  11. Body_3d.BooleanOperation(CAD_DBS.BooleanOperationType.BoolSubtract, _ ' Было BoolIntersect, что неправильно!!!
  12.                                         Body_3d_1)

Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 01:05:02
1. Проверяй пожалуйста как отформатировался код.
2. Подозреваю, что не BooleanOperationType.BoolIntersect, а BooleanOperationType.BoolSubtract, так как кольцо получается вычитанием из большего цилиндра меньшего соосного.
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 01:05:53
Саша, не могу понять почему вставка тега "vbnet" на предварительном просмотре не делает форматирование кода?
Может что-то я не так делаю или это формирование должен подтвердить администратор.
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 01:07:30
BooleanOperationType.BoolSubtract
Ну это я проверю у меня тоже предположение, что скорее нужно BoolSubtract
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 01:10:09
Это никак не зависит от администратора. Код форматируется сразу. У тебя почему-то вместо [code=vbnet] было [code = vbnet], а пробелы недопустимы. И кроме того есть же специальный выпадающий список Код, из которого достаточно выбрать VB.NET, предварительно выделив кусок кода.
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 01:12:29
Вот так следует форматировать код: https://screencast.autodesk.com/main/details/99f00870-fb3e-443d-9a39-73ec1f55e2a4
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 01:33:51
Вот так следует форматировать
Спасибо, все понял!
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 01:39:01
Я сделал специальную тему на форуме, так как слишком часто приходится править чужое форматирование:
Форматирование кода на форуме (http://adn-cis.org/forum/index.php?topic=1829.msg7154#msg7154)
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Алексей (IdeaSoft) от 04-02-2015, 01:49:34
2. Подозреваю, что не BooleanOperationType.BoolIntersect, а BooleanOperationType.BoolSubtract
Я проверил, все получилось. Нужно использовать BoolSubtract, а объект Body_3d_1 нужно создавать с меньшим диаметром.
У меня:
- объект Body_3d - это для наружного диаметра трубы
- Body_3d_1 - это для выреза по внутреннему диаметру трубы

Обязательно ли объектам Body_3d , Body_3d_1 делать Dispose?
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать ил цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 01:51:28
И этого следовало ожидать. :)
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать из цилиндра кольцо
Отправлено: Андрей Бушман от 04-02-2015, 10:54:11
Offtop: Как же Александр Наумович любит большие буквы и красный цвет...  :D
Название: Re: Как создать объект Solid3d в виде кольца? Или сделать из цилиндра кольцо
Отправлено: Александр Ривилис от 04-02-2015, 13:47:16
Offtop: Как же Александр Наумович любит большие буквы и красный цвет...  :D
Offtop: Александр Наумович к ночи отформатировал столько чужого кода на форуме, что он понял, что без красного цвета, больших букв, а главное ролика о том, как нужно форматировать, ему  не обойтись!