К основному контенту

В гостях у C3D

В процессе разработки Renga мы решаем множество задач по созданию геометрии архитектурных и конструктивных объектов, преобразованию этой геометрии, получению разрезов и фасадов зданий, расчету масс и площадей. Основную часть этих задач мы решаем с помощью математического ядра C3D.
Это мощная библиотека для твердотельного моделирования, установки зависимостей и ограничений для геометрических объектов, работы с различными форматами.
18-19 мая в прекрасном городе Коломна прошла конференция, организованная компанией C3D Labs, разработчиком этого ядра. На наш взгляд, конференция получилось отличная - душевная и полезная. Мы познакомились с новинками, поделились опытом, пообщались с разработкой, погуляли по Коломенскому кремлю. Но обо всем по порядку.
В Коломенском Кремле
C3D Labs рассказали о новинках в Modeler, Vision и Viewer. Докладываем, как их поняли мы, активные пользователи ядра.
C3D Modeler - это основной модуль ядра C3D, предназначенный для построения и редактирования геометрических моделей, как плоских так и твердотельных. По просьбам пользователей ядра в него был добавлен ряд новых возможностей. Была значительно доработана и расширена функциональность построения скруглений. Улучшены операции выдавливания до поверхности и построения тел по сечениям, которые теперь справляются с самыми сложными формами.
 Построение тел по сечениям
Добавлены новые возможности для работы с листовыми телами. Что особенно интересно для команды разработки Renga Structure, появилась возможность строить серединные оболочки.
Срединная оболочка
Реализован новый формат хранения данных, позволяющий выполнять частичную загрузку модели. Кроме того было проведено множество других доработок, которые перечислять в рамках нашей статьи было бы слишком утомительно, и с которым при желании можно ознакомиться в документации к ядру.
Интересной новостью стало то, что на основе C3D Modeler появился модуль 3D моделирования для Teigha, которая разрабатывается Open Design Alliance и представляет собой платформу разработки САПР с поддержкой форматов DWG и DGN. До этого момента у пользователей Teigha был выбор только между сложно лицензируемым модулем ACIS и штатным ODA Modeler с откровенно слабыми возможностями. Модуль C3D займет место как раз между ними, предоставляя широкие возможности. А приобрести его можно за один клик через ODA.
Если Modeler это старейший и базовый модуль, то Vision это новая разработка. Ядро C3D обзавелось своим собственным визуализатором модели, основанным на OpenGL.
C3D Vision
Любой разработчик САПР, и мы не исключение, знает, какой трудоемкой задачей является создание собственного визуализатора. Так вот, C3D Vision позволит пользователям ядра получить модуль визуализации, совместимый с объектами C3D. При этом в первой версии Vision обладает базовыми функциями: представлением сцены в виде графа, выбором стиля визуализации (цветной, каркасный), настройкой освещения, настройкой уровней детализации, управлением камерой, и другими.
На основе модуля C3D Vision разработчиками ядра был создан отдельный продукт C3D Viewer. Приложение позволяет просматривать твердотельные модели, как в родном формате ядра *.c3d, так и в таких популярных форматах, как STEP, ACIS, Parasolid, IGES, STL, VRML, JT. Для загрузки сторонних моделей используется ещё один модуль ядра C3D Converter.
C3D Viewer
C3D Viewer предоставляет конечному пользователю весь спектр возможностей визуализатора. Кроме того, возможно открытие в одном пространстве массива файлов, сохранение в растр с настройками сцены, а также включение анимации модели. Для разработчиков ПО, в котором требуется просмотр твердотельных моделей, без моделирования как такового, будет интересной возможность встраивания ActiveX компонента C3D Viewer в собственные приложения.
В недавнем времени у ядра появилась C# обертка, которая сейчас покрывает почти всё API ядра. Разработчики рассказали об особенностях работы с оболочкой (отображение типов ядра в типы оболочки, особенности связанные с самой платформой .Net, и др.). Особенный интерес представляет новинка - реализация модуля C3D Solver для JavaScript, было продемонстрировано использование решателя в веб приложении. Движение в сторону применения ядра в веб кажется весьма перспективным, думаем, в скором времени стоит ожидать адаптации под веб остальных компонентов ядра.
Разумеется, на конференции C3D докладывались не только хозяева, но и гости.
Алексей Барахвостов из РФЯЦ-ВНИИТФ рассказывал о редакторе геометрической модели, которая используется в системе моделирования переноса излучения. Первоначально их редактор был основан на математическом ядре OpenCascade, но в данный момент они перешли на значительно более производительное ядро C3D.
Разработчик Базис-Центра Роман Колесников представил собственную разработку WebPlanner, это браузерное решение для моделирования интерьеров помещений. Серверная часть в своей основе использует математическое ядро C3D, а клиентская часть визуализирует модель с использованием WebGL.
Саша Волков рассказывает об алгоритме построения крыш
От нас, т.е. от разработки Renga, докладчиками выступали Саша Волков - рассказывал об алгоритме построения крыш, Влад Монахов - рассказывал о том, как использовать пользовательские атрибуты для разметки частей геометрических объектов, Саша Ершов - рассказывал (и показывал) как можно визуализировать переменные геометрических объектов в процессе отладки в VisualStudio (у Саши есть об этом пост на Хабре).
Влад Монахов рассказывает об использовании пользовательских атрибутов для разметки частей геометрических объектов

Все наши доклады, судя по реакции аудитории, были интересными и полезными. И если доклад про отладку геометрических переменных сопровождался обсуждением вариантов доступа к адресному пространству другого процесса и прочих гиковских фокусов, столь дорогих нашему программистскому сердцу, то доклады про атрибуты и кровли вызвали сугубо практический интерес коллег по цеху инженерного ПО. Надеемся, что смогли помочь им в решении их насущных задач или хотя бы натолкнуть на новые идеи.
Саша Ершов рассказывает о визуализации переменных геометрических объектов в процессе отладки в Visual Studio
Сами мы узнали много нового у разработчиков ядра и участников конференции. Мы вернулись с конференции как и положено с кучей новых идей, с некоторыми решенными текущими проблемами и с мощным зарядом позитива. Да и просто пообщались с хорошими людьми=) Это мероприятие стоило посетить, а C3DLabs - Молодцы!

P.S. А если у вас после прочтения нашего обзора возникли какие-то вопросы к нам, будем рады на них ответить!

Комментарии

Популярные сообщения из этого блога

Версионирование Renga

Хотим поговорить о версиях Renga. Кто-то говорит, что работает на версии 5, а кто-то на версии 7. Иногда встречаются и те, кто работает на версии 4. Давайте разбираться, как версионируется Renga, и можно ли “работать на версии 5”.

III Renga-хакатон

В конце 2023 года среди разработчиков Renga и Pilot прошёл III Renga-хакатон, чтобы немного встряхнуться, продумать и воплотить собственные идеи, связанные с развитием систем. Такие мероприятия уже проводились в 2018 и 2020 годах. Как и в предыдущие разы, по условиям Хакатона можно было предложить что-то полезное для пользователей или решать внутренние задачи, упрощающие и ускоряющие разработку. На реализацию идей выделялось два дня. На третий день результаты работы были представлены командам. Вот темы, которые затронули разработчики в этот раз. Умы разработчиков не перестаёт волновать тестирование Renga и покрытие кода тестами, на данный момент работоспособность выпущенной функциональности Renga проверяют 14,5 тыс. тестов, много это или мало? На Хакатоне Антон Соколов и Сергей Никифоров проводили исследование возможности измерения покрытия кода тестами, а Георгий Басси придумал и реализовал новый способ фильтрации тестов в специальной утилите. Производи...

Фильтры в Renga

Фильтры в Renga — необходимый инструмент для работы с моделью и получения чертежей. Фильтры позволяют отобрать из всех объектов только те, которые вам нужны в любом виде модели, в спецификации или при оформлении чертежа, а также при работе во вкладках инженерных систем. Анализируя проекты, выполненные в Renga, мы заметили, что в них либо злоупотребляют фильтрами, либо пренебрегают ими. Если в ваших проектах много фильтров, то вам пригодится функциональность, которую мы готовим к выходу и совсем скоро выпустим. О новинках ниже, а сейчас рассмотрим, как работают фильтры в Renga. Каждый фильтр может состоять из одной или нескольких групп фильтрации, каждая из которых, в свою очередь, может работать только с одним типом объекта. С помощью операторов вы можете задать любое условие выбора на основе числовых, булевых, строковых данных, а также уникального идентификатора объекта. Одна группа всегда отбирает объекты, которые соответствуют всем правилам. А две ...