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

10/12/2015

Выдавливание профиля с отверстием при помощи Fusion 360 API

В течение Hackathon мы получили вопрос, на который ответил Брайан. Я добавил фотографию, чтобы его было проще понять :)

Вопрос: У меня есть проблема выдавливания эскиза с несколькими профилями. Я никогда не увидеть, что создались отверстия.  Что я упустил?

Ответ: В вашем случае, есть два профиля. 
Первый состоит из прямоугольника с отверстием (1), а второй - это просто отверстие (2).  Это то же самое, что вы видите в Пользовательском интерфейсе, если рисуете эскиз, а затем вручную создаете выдавливание. При перемещении мыши внутри прямоугольника, но вне круга, будет выделяться один из профилей.  Перемещение мыши в круг будет выделять другой режим.  Добавляя их обоих к коллекции вы полностью заполните отверстие. Код на C++ ниже использует довольно простую логику, основанную на знаниях о геометрии эскиза для того, чтобы выбрать внешний профиль (с двумя ProfileLoop: a и b). Эта логика также будет работать, если есть несколько отверстий.

 

Примечание: порядок профилей может отличаться от изображенного на картинке.

Код - Python: [Выделить]
  1. // Помещаем все профили в коллекцию объектов
  2. // Получаем коллекцию профилей
  3. Ptr<Profiles> pProfiles = sketch->profiles();
  4. Ptr<ObjectCollection> objectsForExtrude = ObjectCollection::create();
  5. for each (Ptr<Profile> pProfile in pProfiles)
  6. {
  7.  // Проверяем, является ли это внешним прямоугольным профилем
  8.  // Проверяем количество петель. Внешний профиль будет иметь две
  9.  // петли: одна для прямоугольника и одна для круга.
  10.  Ptr<ProfileLoops> loops = pProfile->profileLoops();
  11.  
  12.  if (loops->count() > 1)
  13.  objectsForExtrude->add(pProfile);
  14. }

Источник: http://modthemachine.typepad.com/my_weblog/2015/09/extrude-profile-with-hole.html

 

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=3271

Опубликовано 10.12.2015