- PVSM.RU - https://www.pvsm.ru -

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

В первой части [1] статьи мы рассказали о геометрических ядрах в общем и объяснили, в чём их отличие от игровых графических движков. Далее представляем наше собственное 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 [2]

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

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

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

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

C3D Toolkit

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

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

Отдельно стоит отметить, что в прошлом году компания C3D Labs совместно с международным альянсом по открытому проектированию представила решение C3D Modeler для Teigha [7], которое обеспечивает бесшовную интеграцию между геометрическим ядром 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, если будете использовать в работе: открытый доступ к технической документации [8], периодически обновляемый PDF-мануал [9], обучающие видеоролики на официальном канале C3D Labs [10] в YouTube (пока их не так много, со временем мы планируем это исправить), а также тестовые приложения, которое мы предоставляем в исходных кодах:

C3D тест для Windows [11] C3D тест для Android [12]

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

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

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

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

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

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

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

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

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

C3D Solver for JavaScript [15]

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

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

Все эти программы ориентированы на конечных пользователей. Но есть и другие примеры. Так, компания с мировым именем ЛЕДАС [17] из Новосибирского Академгородка, сотрудники которой на протяжении многих лет создавали наукоёмкие технологии для 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

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

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

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

Автор: c3dlabs

Источник [19]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/263116

Ссылки в тексте:

[1] первой части: https://habrahabr.ru/company/ascon/blog/334814/

[2] Image: https://habrastorage.org/web/2f0/b35/104/2f0b35104c9041648daa3b861c57007d.jpg

[3] Геометрическое ядро C3D Modeler:: http://c3dlabs.com/ru/products/modeler/

[4] Параметрическое ядро C3D Solver:: http://c3dlabs.com/ru/products/solver/

[5] Модуль визуализации C3D Vision:: http://c3dlabs.com/ru/products/vision/

[6] Модуль обмена C3D Converter:: http://c3dlabs.com/ru/products/converter/

[7] C3D Modeler для Teigha: http://c3dlabs.com/ru/products/c3d-modeler-for-teigha/

[8] технической документации: http://c3d.ascon.ru/doc/math/modules.html

[9] PDF-мануал: http://c3dlabs.com/source/documents/2017-C3D_Manual_Russian.pdf

[10] официальном канале C3D Labs: https://www.youtube.com/channel/UCKwwm-ezqM3vt3Yv6ryowMQ

[11] Image: https://habrastorage.org/web/b23/210/dc0/b23210dc0f984825b3af95873e964988.png

[12] Image: https://habrastorage.org/web/e44/ca1/a42/e44ca1a4203e49e8a8a9592ad51f2069.png

[13] скачав бесплатное приложение C3D Viewer: http://c3dlabs.com/ru/products/viewer/

[14] Renga Architecture: http://rengabim.com/

[15] Image: https://habrastorage.org/web/66d/0af/6ba/66d0af6ba7f147068135499f364ec78f.png

[16] в статье на Хабрахабр: https://habrahabr.ru/users/x512/posts/

[17] ЛЕДАС: http://ledas.com/

[18] на сайте: http://c3dlabs.com/ru/about/customers/

[19] Источник: https://habrahabr.ru/post/335110/