Как математическая библиотека КОМПАС-3D превратилась в C3D Toolkit для разработчиков САПР → часть 2

в 8:17, , рубрики: 3d kernel, android, api, c3d, c3d toolkit, C3DKernel, cad, cad сапр 3D ядро, CAD/CAM, iOS, linux, MacOS, аскон, Блог компании АСКОН, геометрическое ядро, математика, ооп, сапр, ядро

В первой части статьи мы рассказали о геометрических ядрах в общем и объяснили, в чём их отличие от игровых графических движков. Далее представляем наше собственное 3D-ядро для работы с точной геометрией и тот программный продукт, который в итоге получился.

История российского геометрического ядра C3D

Началом работ над геометрическим моделированием в КОМПАС-3D официально считается 1995 год, именно тогда Николай Николаевич Голованов с группой коллег из коломенского офиса АСКОН заложили первые математические основы будущего ядра. Потребовалось четыре года, чтобы превратить математические алгоритмы в первый жизнеспособный продукт. С тех пор геометрическое ядро постоянно эволюционирует, обеспечивая функциональное развитие КОМПАС-3D и целого ряда других программных решений в России и за рубежом.

Scott Voltage Bike FR20

Велосипед Scott Voltage FR20, спроектированный в КОМПАС-3D с использованием геометрии C3D (автор модели: Алексей Богданов, г. Полтава)

Основные вехи в развитии ядра C3D

2000 год: создание достаточного для использования в САПР количества алгоритмов трёхмерного твёрдотельного моделирования;
2001 год: реализация решателя геометрических ограничений и конвертеров в основные обменные форматы данных;
2002 год: создание механизма построения ассоциативных видов по трехмерным моделям;
2003 год: появление основ поверхностного моделирования;
2004 год: описание математических алгоритмов создания элементов листового тела;
2005 год: реализация многотельного моделирования;
2007 год: поддержка каркасной модели;
2008 год: реализация кинематических сопряжений для моделирования механизмов;
2009 год: поддержка атрибутов геометрической модели;
2010 год: появление полноценного поверхностного моделирования;
2011 год: реализация кроссплатформенности:
               • Windows;
               • Linux;
               • macOS;
               • Android;
               • iOS;
2012 год: реализация элементов прямого моделирования;
2013 год: английская локализация документации и тестового приложения;
2014 год: конвертация модели в текстовые форматы;
2015 год: обеспечение потокобезопасности объектов ядра;
2016 год: появление обёрток под C# и JavaScript, расширение доступных сред разработки:
               • Microsoft Visual Studio;
               • Clang (для Mac OS);
               • GCC (для Linux);
               • NDK (для Android);

В 2012 году математическое подразделение АСКОН было трансформировано в отдельную бизнес-единицу C3D Labs для разработки и продвижения на рынке геометрического ядра C3D. Такое решение принималось исходя из опыта мировых лидеров САПР-индустрии с опорой на то, что ядро является уже достаточно зрелым, чтобы продолжить свой жизненный путь в качестве самостоятельного продукта.

C3D Team

Команда C3D Labs, декабрь 2016 (Картинка кликабельна)

Сейчас прошло уже более 20 лет с момента начала разработки геометрического ядра C3D. Всё это время наши математики и программисты развивали его: улучшали архитектуру, создавали новую функциональность, модернизировали ранее реализованные методы. Почему мы акцентируем на этом внимание? Мы просто хотим сказать, что без уникального опыта, основанного на практическом применении на десятках и сотнях тысяч рабочих мест КОМПАС-3D, невозможно было бы создать конкурентоспособное 3D-ядро. Более того, разработать подобный продукт с нуля без постоянного использования и тестирования не по силам ни одной команде.

Деление геометрического ядра на компоненты

Если вы внимательно посмотрите на хронологию развития ядра C3D, то увидите, что с годами в него вошли не только функции моделирования, но также параметризация и конвертация данных. Разумеется, разработчики САПР это тоже заметили, поэтому от них стали всё чаще поступать запросы о лицензировании отдельных функциональных блоков ядра (например, только импорта/экспорта 3D-моделей или только 2D-решателя). Это привело к формированию целого набора инструментальных средств для создания инженерного программного обеспечения – C3D Toolkit:

C3D Toolkit

Сегодня C3D Toolkit объединяет в себе важнейшие модули САПР:

  • Геометрическое ядро C3D Modeler:
    осуществляет построение и редактирование геометрических моделей, расчёт триангуляции, построение плоских проекций, вычисление массово-центровочных характеристик и определение столкновений элементов модели;
  • Параметрическое ядро C3D Solver:
    устанавливает зависимости между различными элементами геометрической модели при помощи размеров и логических ограничений и обеспечивает сохранность заданных связей при изменении размеров, параметров модели, перемещении отдельных элементов модели или внесении иных изменений в геометрию модели;
  • Модуль визуализации C3D Vision:
    управляет настройками визуальной сцены для статического и динамического режимов отрисовки геометрии, а также обеспечивает интерактивное взаимодействие пользователя с интерфейсом приложения;
  • Модуль обмена C3D Converter:
    осуществляет обмен данными о геометрической модели с другими системами проектирования, поддерживает форматы: JT, IGES, STEP (AP203, AP214, AP242), Parasolid X_T/X_B, ACIS SAT, STL, VRML.

Отдельно стоит отметить, что в прошлом году компания C3D Labs совместно с международным альянсом по открытому проектированию представила решение C3D Modeler для Teigha, которое обеспечивает бесшовную интеграцию между геометрическим ядром C3D Modeler и платформой Teigha. Благодаря этому разработчики САПР теперь могут использовать функциональность трехмерного твердотельного моделирования C3D Modeler непосредственно через API-клиент Teigha.

Рекомендации для разработчиков

Если вы решили создать собственное инженерное приложение, то, используя программные компоненты C3D Toolkit, вы можете получить доступ к их низкоуровневым объектам в исходном виде: точкам, матрицам, системам координат, кривым, поверхностям, телам, различным вспомогательным объектам и т.д. Если же вы захотите применить в разработке API-интерфейс КОМПАС-3D, тогда придется работать с некоторой «обёрткой» над его избранными высокоуровневыми методами, среди которых есть как методы C3D Modeler, так и надстроенные над ними методы самого КОМПАС-3D (в большей степени).

На следующем рисунке показано, как разрабатываемое для КОМПАС-3D приложение взаимодействует через API с различными компонентами C3D Toolkit:

Взаимодействие через API
Взаимодействие разрабатываемого приложения с компонентами C3D Toolkit через API КОМПАС-3D (синие блоки относятся к C3D Toolkit, белые — к КОМПАС-3D)

Следовательно, удобно и логично использовать C3D Toolkit именно тогда, когда вам нужно создать программный продукт без привязки к конкретной САПР. Это могут быть самостоятельные системы автоматизированного проектирования, системы инженерного анализа или системы подготовки управляющих программ для станков с ЧПУ, функционирование которых связано с построением и обработкой геометрических моделей. Если немного пофантазировать и пойти дальше, то можно внедрить компоненты C3D Toolkit в конечно-пользовательские приложения для 3D-сканирования и печати, генеративного дизайна с топологической оптимизацией или концептуального проектирования изделий в очках дополненной реальности с управлением мыслями жестами.

Вы сможете лучше разобраться с устройством C3D Toolkit, если будете использовать в работе: открытый доступ к технической документации, периодически обновляемый PDF-мануал, обучающие видеоролики на официальном канале C3D Labs в YouTube (пока их не так много, со временем мы планируем это исправить), а также тестовые приложения, которое мы предоставляем в исходных кодах:

C3D тест для Windows C3D тест для Android

Тестовое приложение для Windows и демо-приложение для Andorid (Картинки кликабельны)

По сути, каждое тестовое приложение — это небольшая система проектирования с реализованными функциями геометрического ядра C3D Modeler. В тестах отсутствует красивый пользовательский интерфейс и весь функционал завязан на командное меню, но это не мешает использовать его по принципу copy-paste, позволяя в кратчайшие сроки создавать рабочие версии проектов для разных операционных систем (Windows, Mac, Linux) с необходимым набором операций двухмерного и трехмерного моделирования.

Если исходные коды вас не очень интересуют, то ознакомиться с результатами совместного использования компонентов C3D Modeler, C3D Vision и C3D Converter можно, скачав бесплатное приложение C3D Viewer для просмотра 3D-моделей в распространенных форматах STEP, IGES, Parasolid X_T, X_B, ACIS SAT, STL, VRML, C3D.

Опыт использования C3D Toolkit

Как видно из истории, изначально геометрическое ядро разрабатывалось в АСКОН для нужд машиностроительной системы КОМПАС-3D. Казалось бы, это и есть «потолок» его использования. На практике же ничего не мешает применять компоненты C3D Toolkit в инженерном ПО с любой другой специализацией. Компания АСКОН это наглядно продемонстрировала на примере создания системы архитектурно-строительного проектирования Renga Architecture. Использование программного обеспечения C3D Labs позволило разработчикам совместного предприятия АСКОН и 1С улучшить функциональные возможности системы и сконцентрироваться над прикладными задачами приложения, не отвлекаясь на решение базовых задач геометрического моделирования:

Максим Нечипоренко, заместитель генерального директора Renga Software:

Одним из важнейших компонентов нашего ПО является математическое ядро. До того, как мы приняли решение о создании Renga, в недрах АСКОН был еще один исследовательский проект по созданию CAD нового поколения. Несмотря на то, что у нас было собственное ядро, на котором написан КОМПАС-3D, перед нами стояла задача исследовать рынок. Проводились масштабные исследования ядер, которые используются в других CAD и которые можно лицензировать. Мы искали что-то еще более эффективное, то, на чем можно будет разрабатывать что-то более современное. Провели исследование и пришли к выводу, что наше ядро довольно хорошее, даже стоящее. Интересным моментом оказалось то, что как только запустился проект C3D Labs, ядро стало лицензироваться другими разработчиками, в том числе внешними. У нас появились и шведские, и корейские заказчики. В итоге было принято решение, что Renga тоже будет на этом ядре.

(выдержка из интервью Альберта Сумина)

Кто ещё применяет C3D Toolkit? На сегодняшний день это, главным образом, разработчики САПР в России и за рубежом. Среди них есть представители машиностроительной, деревообрабатывающей и архитектурно-строительной отраслей, разработчики расчётного софта и приложений для станков с ЧПУ, крупные корпорации, а также представители прогрессивного класса, активно инвестирующие в облачные и мобильные технологии. По запросу последних мы даже перевели параметрический решатель C3D Solver на язык JavaScript:

C3D Solver for JavaScript

Браузерное приложение на основе C3D Solver для JavaScript (Картинка кликабельна)

Использование JavaScript позволяет осуществлять расчёты в веб-приложениях на стороне клиента. При этом есть интересный опыт разработки облачного сервиса для 3D-проектирования и дизайна помещений, в котором геометрические вычисления производятся на стороне сервера. Описание проекта представлено в статье на Хабрахабр известного специалиста в области разработки мебельных САПР — Романа Колесникова.

Все эти программы ориентированы на конечных пользователей. Но есть и другие примеры. Так, компания с мировым именем ЛЕДАС из Новосибирского Академгородка, сотрудники которой на протяжении многих лет создавали наукоёмкие технологии для Dassault Systemes, разработала встраиваемый компонент для сравнения геометрии 3D-моделей в различных форматах данных. LEDAS Geometry Comparison на базе C3D Modeler недавно был интегрирован в плагин для системы Inventor. Получилось как бы «ядро в ядре» или своеобразная матрёшка из технологий:

Демонстрационное приложение LEDAS Geometry Comparison (LGC)

А ещё, благодаря наличию у C3D Labs специальной программы поддержки образования, российские вузы получают C3D Toolkit на привлекательных условиях. Как правило, учебные заведения используют «ядерные» технологии в обучении будущих математиков-программистов и разработчиков САПР. Студенты выполняют научно-исследовательские работы и пишут различное вузовское ПО. Есть отдельные примеры выполнения коммерческих проектов на базе C3D Toolkit в рамках малых инновационных фирм, активно создаваемых при университетах.

Список заказчиков C3D Labs

Коммерческие организации и предприятия:

Как математическая библиотека КОМПАС-3D превратилась в C3D Toolkit для разработчиков САПР → часть 2 - 8

Вузы:

Как математическая библиотека КОМПАС-3D превратилась в C3D Toolkit для разработчиков САПР → часть 2 - 9

Описание компаний и разрабатываемых ими решений представлено на сайте.

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

Как математическая библиотека КОМПАС-3D превратилась в C3D Toolkit для разработчиков САПР → часть 2 - 10
Аркадий Камнев
Менеджер по маркетингу в C3D Labs

Автор: c3dlabs

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js