isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

3 декабря 2014

Три измерения САПР – один инструмент разработчика! Моделирование, параметризация и конвертация данных в новом геометрическом ядре C3D V16

Аркадий Камнев, менеджер по продукту C3D в компании C3D Labs

Аркадий Камнев, C3D Labs Традиционно, в начале декабря дизайнеры, проектировщики и конструкторы по всему миру отмечают профессиональную дату – день компьютерной графики или день 3D-шника. Коллектив C3D Labs поздравляет своих коллег с этим замечательным праздником и с удовольствием объявляет, что именно 3 декабря - дата выпуска новой версии геометрического ядра C3D V16! Версии, над улучшением которой мы целый год усердно трудились, и сегодня представляем вам обновленный набор профессиональных инструментов для разработки инженерного программного обеспечения.

Три базовых составляющих современной САПР:

  • Геометрический моделировщик C3D Modeler
  • Решатель параметрических ограничений C3D Solver
  • Конвертор данных C3D Converter

— от версии к версии совершенствуются в тесном контакте друг с другом, обеспечивая целостное развитие ядра C3D и отличную взаимную связь его отдельных компонентов. C3D остается единственным на рынке программным компонентом, предоставляющим разработчикам все три модуля в одном продукте.

Строим модели

Команда разработки C3D Labs — это профессиональный коллектив, увлечённый одной общей идеей создания максимально удобного инструмента для разработки инженерного программного обеспечения. Именно поэтому в работе над проектами нам часто приходится принимать нестандартные решения, выходящие за рамки привычного понимания вещей. И мы стремимся к тому, чтобы разработчики 3D-систем на базе геометрического ядра C3D тоже могли творить без границ! Для этого мы расширили набор функционала для создания геометрических форм различной сложности и усовершенствовали методы построения 2D/3D геометрии в C3D V16.

В новой версии ядра теперь можно размножать тела по заданной сетке (рис. 1) и по набору матриц трансформаций: поворота (изменяющих ориентацию тел в трёхмерном пространстве), перемещения (изменяющих положение тел в пространстве) и масштабирования (увеличивающих размер тел) (рис. 2 и 3). В кинематической операции образующая тела размножается для разных положений относительно направляющей. Это позволяет усечь начало направляющей кривой, перенести образующую в начало усеченной направляющей и построить тело заметания, совпадающее с исходным телом на оставшемся конечном участке (рис. 4). Также подверглась изменению операция построения резьбы, которая теперь может быть адаптирована по начальному положению и длине отверстия, по которому она нарезается (рис. 5).

Рисунок 1. Размножение тел по сетке

Рисунок 2-3. Размножение тел по набору матриц трансформаций

Рисунок 4. Размножение образующей в кинематической операции

Рисунок 5. Адаптация резьбы по положению и длине отверстия

Не прекращаются работы C3D Labs по реализации новых возможностей, связанных с гибкой листового тела. В этом году раздел был также подвергнут серьёзным доработкам. В частности, операция построения обечайки по одному эскизу с уклоном граней теперь выполняется с постоянным радиусом сгиба (рис. 6), а построение конусных многогранников методом гибки листового металла достигается за счёт сегментации опорных дуг отрезками (рис. 7). Решена задача замыкания угла в операции построения тела из листового металла благодаря заданию круговой обработки проблемного участка (рис. 8). Плюс стало доступным задание разных длин слева и справа у продления сгиба, что позволяет проектировать листовые тела ещё более нестандартных форм (рис. 9).

Рисунок 6. Постоянный радиус сгиба при построении обечайки с уклоном граней

Рисунок 7. Сегментация дуг отрезками для построения конусных многогранников

Рисунок 8. Круговая обработка замыкания угла при построении листового тела

Рисунок 9. Задание разных длин слева и справа у продления сгиба

Благодаря комплексной оптимизации построений в C3D V16 значительно ускорилось выполнение сечений и разрезов в проекционных видах, а распараллеливание расчётов при выполнении данных операций вывело геометрическое ядро на качественно новый уровень работы с 2D-геометрией. Примечательно, что для разного аппаратного обеспечения рабочих станций эти результаты изменяются в зависимости от количества ядер в CPU (рис. 10). Также серьёзной доработке подверглась процедура сшивки поверхностей при её одновременном выполнении несколькими потоками, в результате чего повысился уровень защиты задействованных потоков от несанкционированного доступа к ним.

Рисунок 10. Среднее время выполнения операции в C3D для разного количества одновременно используемых ядер CPU (график выполнен в среде Intel® VTune™ Performance Analyzer)

Что касается остальных доработок, то они коснулись целого ряда функций ядра C3D:

  • Улучшилось выполнение операции скругления рёбер: заметно сократилось число возникающих ошибок и сняты имевшие место ограничения при построении (рис. 11-12);
  • Появилась возможность задавать толщину для поверхностей с особыми (полюсными) точками (рис. 13);
  • Несколько изменился принцип построения ребра жесткости: в случае неудачи, делается попытка построения верхней поверхности ребра жесткости в виде поверхности вращения (рис. 14);
  • Повысилась гладкость сопряжения по касательной поверхностей, построенных по сети кривых (рис. 15-16).

Ощутимые изменения также произошли в работе двумерных Булевых операций (рис. 17). Заказчиком этой работы стала компания ЛЕДАС, активно использующая данную функцию в собственной технологии сравнения 3D моделей LGC.

Рисунок 11-12. Скругление рёбер в C3D V16

Рисунок 13. Придание толщины поверхности с полюсными точками

Рисунок 14. Построение ребра жёсткости c использованием поверхности вращения

Рисунок 15-16. Улучшенная форма поверхности по сети кривых при задании сопряжений

Рисунок 17. Работа булевых операций над 2D объектами

Снимаем ограничения

C3D Labs старается не отставать от современных тенденций и развивает в своём геометрическом ядре параллельное использование всех доступных вычислительных ресурсов, обеспечивая высокую производительность C3D. Специально для этих целей был лицензирован комплекс инструментов для оптимизации программного кода, профилировки и распараллеливания приложений, а также обнаружения ошибок памяти и потоков — Intel С++ Studio. Используя возможности ПО Intel при разработке C3D удалось достичь ощутимого повышения скорости выполнения функций геометрического ядра.

Кроме этого, традиционно мы уделяем большое внимание развитию методов и оптимизации математических принципов геометрического моделирования, реализованных в C3D. Работа в этом направлении даёт стабильный прирост производительности ядра, сопоставимый с использованием параллельных вычислений. Комплексное же развитие обеих областей позволяет говорить о колоссальных ускорениях в новых версиях C3D, выходящих в свет! В качестве примера такого развития методов задания 3D-моделей приведём новинки решателя C3D. В актуальной версии V16 появился новый тип геометрического объекта — кластер. По сути это — твёрдое тело, а точнее геометрически-жёсткое объединение объектов, с собственной подсистемой ограничений. Кластеры могут образовывать иерархию, в которых все подсистемы вычисляются в порядке: снизу-вверх от вложенных к содержащим. Подобная организация естественна при конструировании сборок в САПР, предусматривающих разбиение на подсборки. Так, уже не требуется создавать множество экземпляров решателей на каждую подсборку, а достаточно работать с одним решателем, обслуживающим сборку целиком, что приводит к экономии ресурсов и ускоряет вычисления после внесенных изменений в 3D-модель.

Для удобства разработки приложений также было организовано журналирование в 2D-решателе при задании параметрических ограничений. Журнал представляет собою историю вызовов API геометрического решателя, сохраненную в специальном текстовом файле формата *.jrn, в который автоматически пишется вся информация о работе C3D Solver с возможностью её ручного редактирования. Это позволяет удалённо отлаживать найденные заказчиками C3D ошибки без окружения, в которое встроено ядро. На основе базы журналов реализована система регулярного регрессионного тестирования, которая регулярно осуществляет проверку каждой рабочей ревизии решателя.

Другая потребность при создании САПР, которой мы уделили внимание в новой версии ядра — это симметричные модели, а именно построение 3D сборок, в которых часть одних деталей полностью или частично является зеркальным отображением других. Такое расположение деталей можно обеспечить новым типом геометрического ограничения — зеркальной симметрией (рис. 18). Зеркальную симметрию можно применить к любым геометрическим объектам, например к окружностям от пары тел или их внешним граням (рис. 19 и 20). В случае, если в исходную геометрическую модель будут внесены какие-либо изменения, то симметричные сборки также перестроятся в соответствии с новыми параметрами исходной модели. В рамках работ над зеркальной симметрией, а также для подготовки к плановому расширению функционала была проведена работа по модернизации внутренней архитектуры решателя С3D.

Рисунок 18. Зеркальная симметрия деталей в сборке (симметрия ЛСК)

Рисунок 19. Зеркальная симметрия по окружностям от пары тел

Рисунок 20. Зеркальная симметрия по внешним граням от пары тел

Расширены возможности при построении параметризованных сплайнов:

  • Доработана функция, которая позволяет манипулировать параметрическим чертежом или эскизом методом «тяни-бросай» (Drug-and-drop), наблюдая в режиме реального времени изменение формы объектов с сохранением всех заданных ограничений. Такая функция добавляет интерактивности конечно-пользовательскому продукту на основе C3D и называется драггингом;
  • Значительно улучшено поведение чертежа при драггинге сплайнов или его контрольных точек, а также драггинг геометрических объектов, прямо или косвенно связанных со сплайнами ограничениями;
  • Добавлена возможность выбора способа построения NURBS-кривых по заданным точкам — появился специальный маркер, определяющий будет ли сплайн использовать эти точки, как опорные данные при построении (полюсные точки), или будет непосредственно проходить через них (интерполяционные точки). На интерполяционный сплайн можно накладывать все типы ограничений, которые доступны и для обычной NURBS-кривой (рис. 21);
  • Появилось новое ограничение, позволяющее задавать форму сплайна путём фиксации координат его отдельных точек или векторов 1-ой, 2-ой, 3-ей производных в точке с заданным параметром;
  • Улучшены алгоритмы поддержки ограничений для сплайнов. Это привело к более «естественному» поведению чертежа/эскиза, в частности при наложении касаний со сплайнами. Рассмотрены «сложные» случаи (например, при множественных касаниях);
  • Реализована функция, которая определяет тип конического сечения, заданного в виде кривой NURBS.

Рисунок 21. Интерполяционный сплайн с заданными ограничениями для его контрольных точек

Поддерживаем взаимодействие

Мы понимаем, что каждый разработчик инженерного программного обеспечения желает видеть свой продукт наиболее приспособленным и адаптированным к работе с различными программами, уже представленными на рынке систем автоматизированного проектирования. И поэтому мы произвели ряд улучшений, касающихся непосредственно модуля C3D, отвечающего за чтение и запись геометрических моделей в различных форматах.

В новой версии конвертора стала доступна настройка точности экспорта STL-моделей по трём параметрам триангуляции: максимальный прогиб, максимальный угол поворота нормали кривой (или поверхности) и максимальная длина стороны треугольника. Все эти параметры могут быть заданы пользователем. Эти доработки необходимы всем нашим заказчикам, работающим с 3D-печатью.

За счёт многопоточности в C3D ускорена конвертация данных при импорте моделей в форматах Parasolid (x_t, x_b) и STEP (рис. 22). Реализован импорт полигональных моделей в форматах STL и VRML (рис. 23). Наконец появилась поддержка передачи атрибутов со сведениями об изделии (наименование, обозначение, авторство) при конвертации данных.

Рисунок 22. Модель танка, автор - Сергей Сюваев (конкурс «МАСТЕР 3D»). Модель содержит 729 различных деталей. На компьютере с четырёхядерном процессором (Intel Core i5) получено сокращение времени импорта: из Parasolid в 1.7 раз, из STEP – в 2.2 раза.

Рисунок 23. Импортированная модель в формате STL содержит 2 378 154 вершины и 792 718 треугольников

Тестируем и развиваем

На сегодняшний день, спустя 2 года после выхода ядра C3D на рынок, 15 софтверных компаний и учебных заведений применяют C3D в своих разработках. И этот список постоянно пополняется. А значит, повышаются и требования к качеству выпускаемых нами программных компонентов. Специально для системы автоматизированной проверки ревизий C3D мы увеличили число тестовых моделей, на которых отрабатываются функции ядра, до 350 000 штук. Каждую ночь мы выполняем миллионы булевых операций! За прошедший год наша команда разработки успела не только разработать более 100 новых фич, но и поправила внушительное количество багов, без которых, конечно, никуда. А буквально перед релизом мы завершили глубокую переработку тестового приложения для Linux, которое получило обновлённый интерфейс и стало намного более стабильным (рис. 24 и 25).

Рисунок 24 и 25. Тестовое приложение C3D для ОС Linux

В процессе модернизации геометрического ядра большую роль играет наличие обратной связи от десятков тысяч тестировщиков — пользователей инженерного программного обеспечения, созданного на базе C3D. Они предоставляют нам ценнейшую информацию — пищу для размышлений и руководство к действию. В процессе такого взаимодействия рождается множество «невидимых» задач по адаптации ПО к запросам пользователей и реформации уже написанного кода в C3D. Но есть и вполне ощутимые запросы по изменению ядра. Специально для разработчиков и для всех будущих заказчиков компании была реализована сборка геометрического ядра C3D компиляторами CLang 3.5 и Visual Studio 2013, расширен набор поддерживаемых сборок Linux, а самое главное – мы знаем, как долго вы этого ждали — начиная с версии V16 вы сможете использовать в работе с ядром язык программирования C# — очень уж популярным становится он у наших пользователей. Ну, а для тех, кто только начинает изучать геометрическое моделирование, мы разработали иллюстрированное руководство пользователя по ядру.

C3D V16 — это современный инструмент для профессиональной разработки софта и комплексной интеграции геометрических моделей в инженерное программное обеспечение. Используя наши технологии сегодня, вы обеспечиваете устойчивое развитие и стабильную работу вашего программного обеспечения завтра!


Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

Перепечатка материалов сайта допускается с согласия редакции, ссылка на isicad.ru обязательна.
Вы можете обратиться к нам по адресу info@isicad.ru.