Выдавливание профиля с отверстием при помощи Fusion 360 API
В течение Hackathon мы получили вопрос, на который ответил Брайан. Я добавил фотографию, чтобы его было проще понять :)
Вопрос: У меня есть проблема выдавливания эскиза с несколькими профилями. Я никогда не увидеть, что создались отверстия. Что я упустил?
Ответ: В вашем случае, есть два профиля.
Первый состоит из прямоугольника с отверстием (1), а второй - это просто отверстие (2). Это то же самое, что вы видите в Пользовательском интерфейсе, если рисуете эскиз, а затем вручную создаете выдавливание. При перемещении мыши внутри прямоугольника, но вне круга, будет выделяться один из профилей. Перемещение мыши в круг будет выделять другой режим. Добавляя их обоих к коллекции вы полностью заполните отверстие. Код на C++ ниже использует довольно простую логику, основанную на знаниях о геометрии эскиза для того, чтобы выбрать внешний профиль (с двумя ProfileLoop: a и b). Эта логика также будет работать, если есть несколько отверстий.
Примечание: порядок профилей может отличаться от изображенного на картинке.
- // Помещаем все профили в коллекцию объектов
- // Получаем коллекцию профилей
- Ptr<Profiles> pProfiles = sketch->profiles();
- Ptr<ObjectCollection> objectsForExtrude = ObjectCollection::create();
- for each (Ptr<Profile> pProfile in pProfiles)
- {
- // Проверяем, является ли это внешним прямоугольным профилем
- // Проверяем количество петель. Внешний профиль будет иметь две
- // петли: одна для прямоугольника и одна для круга.
- Ptr<ProfileLoops> loops = pProfile->profileLoops();
- if (loops->count() > 1)
- objectsForExtrude->add(pProfile);
- }
Источник: 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