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



Вузы:



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

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


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

Комментарии (12)


  1. Wicron
    01.09.2017 19:44

    Без комментариев. Это я в прямом и переносном смысле одновременно.
    Скажите, а почему вы столько лет подряд не могли сделать свой собственный инструмент коллективной работы, именуемый PDM? Вы же понимаете, что крупные проекты больше стоят, компании, именуемые крупняком, не содержат сотни индивидуалов, а полагают объединять их в коллективной работе над одним большим проектом. У многих уже давно всё благополучно утряслось и люди привыкли к dassault или siemens с их teamcenter. Поезд ушел мне кажется 5-7 лет назад. Затачивать свой продукт под ГОСТ — краткосрочная стратегия, таких преимуществ мало. И как сейчас обстоит дело с CAM системой, появилась ли у вас своя система, в которой по модели генерируют обработку и отправляют на станок?


    1. agentx001
      01.09.2017 23:06

      Вы о чем вообще? Асконы уже много лет не могут сделать проекцию образующей фигуры вращения в эскиз. Сколько раз об этом писали на протяжении многих лет, а воз и ныне там. Хотя в семнашке позитивные сдвиги появились (наконец можно нормально работать на большом мониторе!), но до современного КАДа, как до Луны.


      1. kompas_3d
        02.09.2017 11:52

        не могут сделать проекцию образующей фигуры вращения в эскиз.

        Проекцию образующей в эскиз сделать всё-таки можно, хоть и не совсем удобно. Для этого требуется одно промежуточное действие — создание линии очерка, а уже она проецируется в эскиз.
        Сколько раз об этом писали на протяжении многих лет, а воз и ныне там.

        У нас нет запросов от клиентов по этому вопросу, поэтому и не делаем. Если вам это требуется — обратитесь в техподдержку или ближайший региональный офис и этот функционал появится в ближайших версиях.


        1. agentx001
          03.09.2017 14:31

          Проекция через линию очерка — это костыль, вы же сами это понимаете?

          У нас нет запросов от клиентов по этому вопросу, поэтому и не делаем. Если вам это требуется — обратитесь в техподдержку или ближайший региональный офис и этот функционал появится в ближайших версиях.

          А вот это ложь! Обращение №792136 мною подавалось в марте. До этого другие люди также писали вам в СП по этому поводу. В соцсетях и на форумах вообще регулярно эта тема проскакивает. Но зачем париться, у вас ведь в результате импортозамещения просто море заказов от гос предприятий, бабло само плывет в руки!


          1. kompas_3d
            04.09.2017 12:24

            Обращение №792136 мною подавалось в марте.

            Действительно есть такое обращение, только КОМПАС-3D V17 вышел 17 апреля 2017 года, а запрос от 9 марта 2017 года. Все предложения намеченные к реализации закладываются на начальной стадии разработки, для 17й версии это было в 2014 году, т.е. за три года до вашего предложения. Соответственно я говорю об обращениях до этой даты. Не думайте, что мы игнорируем ваше обращение, просто не всё так быстро делается при разработке САПР.
            в результате импортозамещения просто море заказов от гос предприятий, бабло само плывет в руки!

            Вы переоцениваете эффективность импортозамещения. В этом году по импортозамещению на наше ПО перешли 19 заказчиков, в прошлом 27. Всего же у нас более 10 тысяч заказчиков. Т.е. никаких огромных потоков «бабла» именно от импортозамещения на нас не пролилось, в основном мы живём на деньги от наших постоянных пользователей, которые приобрели наше ПО задолго до лозунгов импортозамещения, и соответственно мы стараемся выполнять их пожелания и предложения — иначе нам никакое импортозамещение не поможет.


      1. c3dlabs Автор
        02.09.2017 14:34
        +1

        Функциональность САПР и функциональность геометрического ядра — это немного разные понятия. Реализовать в пользовательском приложении построение образующей тела вращения в эскиз за одно действие вполне можно с помощью C3D Modeler. Более того, для любой поверхности движения (в том числе и вращения) можно получить образующую, а потом спроецировать и параметризовать ее, например наложив размер. Вот вам ссылка на соответствующий раздел в документации по ядру.


    1. kompas_3d
      02.09.2017 11:47

      Вопросы у вас совсем не по ядру, поэтому давайте я отвечу, вместо C3D Labs.

      а почему вы столько лет подряд не могли сделать свой собственный инструмент коллективной работы, именуемый PDM?

      Вы как-то совсем давно интересовались нашими продуктами, наверно в конце прошлого века)
      КОМПАС-Менеджер — первая наша PDM-система появилась в 1994 году. С тех пор PDM-системы у нас только развивались.
      На данный момент PDM-систем у нас как минимум три: Pilot ICE — лёгкая, ЛОЦМАН: КБ — средняя и наконец ЛОЦМАН:PLM — тяжёлая система, которая даже уже не PDM, а PLM (Product Lifecycle Management т.е. система обеспечения жизненного цикла изделия, а не просто система управления данными об изделии), помимо этого есть ещё ЛОЦМАН: ПГС, ориентированный на строителей. У нас есть даже предприятия-пользователи, которые используют полностью безбумажную технологию, благодаря ЛОЦМАН:PLM. Если будут какие-то вопросы про наши PDM-системы, спрашивайте — расскажу подробнее.
      И как сейчас обстоит дело с CAM системой, появилась ли у вас своя система, в которой по модели генерируют обработку и отправляют на станок?

      Изначально мы приняли решение использовать партнёрские продукты, КОМПАС-3D интегрируется со всеми российскими и некоторыми иностранными CAM-системами: Esprit, ADEM, Feature CAM, Edgecam, ГеММа-3D, SprutCAM и другими. Также у нас есть собственные приложения: Модуль ЧПУ. Токарная обработка, Модуль ЧПУ. Фрезерная обработка, но их опять же делают партнёры.
      Вообще в целом мы не стремимся охватить абсолютно все области, а сосредотачиваемся на том, где имеем лучшие компетенции, в остальном мы взаимодействуем с партнёрами. В целом ставка на взаимодействие с партнёрами — это наше стратегическое решение. Вместе с партнёрами мы образовали консорциум, направленный на создание полностью российской тяжёлой САПР-системы, о достижениях вы можете узнать на форуме РазвИТие 2017, который пройдёт 27 сентября в Москве.


  1. Wicron
    04.09.2017 17:40

    Мне ваша стратегия понятна, вы ее очень грамотно в предыдущем комментарии написали — ее суть, не напрягайся и не пытайся понять то, что у других и так уже есть. С такой стратегий вы вполне можете и свой основной продукт превратить в партнерский. За вашим продуктом многие следят и почти все тестируют ее очередную версию, но увы, вы не хотите делать продукты под единым брендом и как бы ставите потребителя перед размышлением — что ему придется в итоге ожидать, то ли мозаику-конструктор из софта с проблемами в поддержке, то ли единый продукт, где вы, Аскон, несете ответственность за качество. Я уж не будут рассуждать на тему маркетинга, но вот мне даже название «Лоцман» ломает слух, это как выбирать между одеколоном «Тройка» с рыжей этикеткой и чем-то, что имеет и название, понятное для выбора с точки зрения назначения — чисто потребительское мышление. Всё это говорит, что вы нырнули под очень узкую категорию потребителей и находитесь в состоянии обороны своего дела и защиты его интересов без нападения на конкурентов. У вас могла бы быть ниша например очень больших проектов, где скорость отрисовки и ее качество имеют значение, тогда можно было бы например зацепиться за основные проблемы solidworks (например скорости работы и отрисовки) и начать продвижение своего продукта. Затем, стоимость лицензии. Вот вы зря обвинили меня в том, что я давно не слежу, нет, я общался с отделом продаж 3 месяца назад. Полный комплект софта с нормальной не home версией и PDM системой получается очень дорогим. Дешевле, чем у dassault, но не настолько, чтобы люди массово побежали с одного продукта на другой. Ваша основная проблема — маркетинг или его отсутствие и некое подобие застоя.


    1. kompas_3d
      04.09.2017 18:07

      Мне ваша стратегия понятна, вы ее очень грамотно в предыдущем комментарии написали — ее суть, не напрягайся и не пытайся понять то, что у других и так уже есть.

      Наша стратегия — делать качественные продукты, которые мы можем сделать и не пытаться браться за всё подряд и делать непонятно что. У нас не так много ресурсов, чтобы распылять их, — мы не Dassault с его сотнями тысяч пользователей и тысячами разработчиков, но даже они не делают всё сами, а используют партнёрские продукты там, где это требуется.
      вы не хотите делать продукты под единым брендом и как бы ставите потребителя перед размышлением — что ему придется в итоге ожидать, то ли мозаику-конструктор из софта с проблемами в поддержке, то ли единый продукт, где вы, Аскон, несете ответственность за качество.

      Никаких мозаик и конструкторов нет. То, что продукт партнёрский, не значит, что он не будет работать. Мы проверяем совместную работу с партнёрскими продуктами.

      мне даже название «Лоцман» ломает слух

      Это всё вкусовщина. Уверен, что вы не предъявляете претензий иностранным компаниям за непроизносимые названия, а просто пользуетесь продуктами.
      Затем, стоимость лицензии. Вот вы зря обвинили меня в том, что я давно не слежу, нет, я общался с отделом продаж 3 месяца назад. Полный комплект софта с нормальной не home версией и PDM системой получается очень дорогим. Дешевле, чем у dassault, но не настолько, чтобы люди массово побежали с одного продукта на другой.

      Качественная PLM система не может стоить дёшево — это довольно сложный механизм и его создание стоит дорого.
      У вас могла бы быть ниша например очень больших проектов, где скорость отрисовки и ее качество имеют значение, тогда можно было бы например зацепиться за основные проблемы solidworks (например скорости работы и отрисовки) и начать продвижение своего продукта.

      Скорость работы и отрисовки — это как раз тема разработки V18 и мы работаем над этим, так что тут вы попали в точку.


  1. Wicron
    04.09.2017 18:36

    У нас это больная тема, когда можно будет тестировать V18?
    Я бы хотел спросить и попросить вас ответить честно. Вот смотрите, есть профессиональные видеокарты amd firepro и Quadro FX, у нас они есть, например AMD W5100 и QuadroFX K1400. У меня есть также места оборудованные старыми nvidia видеокартами и новыми, например GTX 1050Ti. У меня складывается ощущение, что банчмарки в Интернете просто куплены. Так например у нас сборки из 100-200 деталей проигрывают по скорости на видеокартах AMD Firepro старым обычным видеокартам nvidia класса GT. Quadro FX K1400 проигрывает по скорости отрисовки GTX1050Ti, при этом имея ценник в 2 раза дороже. Это такой обман и сговор я понимаю? Если так, то мое пожелание — разбейте этот сговор нормальным движком для отрисовки, нормальным мультипоточным кодом для работы приложения, (у нас 2015 солид использует только 4 из 8 ядер компьютера на всех рабочих местах). В общем, мне жалко конструкторов и неприятно наблюдать на дикие по своему поведению движки для отрисовки.


    1. kompas_3d
      05.09.2017 11:14

      Работа над V18 только началась.


    1. c3dlabs Автор
      05.09.2017 14:32
      +1

      Учитывая, что вы затеяли обсуждение КОМПАС-3D в комментариях под статьей о C3D Toolkit, позвольте сделать небольшое уточнение.

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

      Как уже было сказано ранее, компания C3D Labs была образована из математической группы разработки КОМПАС-3D в Коломне. Сейчас мы занимаемся созданием программных компонентов C3D Modeler, C3D Solver, C3D Vision и C3D Converter. Эти компоненты используются уже не конечными пользователями, а разработчиками CAx-систем. То есть мы, программисты, делаем продукт для таких же, как мы, программистов.

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

      Собственно, с нашей визуализацией может ознакомиться любой желающий, бесплатно скачав приложение C3D Viewer. Для этого необходимо перейти по ссылке, заполнить небольшую форму и на указанный адрес в автоматическом режиме будут высланы данные для скачивания. Приложение умеет читать форматы STEP, IGES, X_T (X_B), SAT, STL, VRML, C3D и может сохранять модели в C3D. Кстати, именно с его помощью было сделано изображение велосипеда, спроектированного в КОМПАС-3D.



      Бесплатное приложение C3D Viewer
      Для работы с большими сборками необходимо настроить параметры в разделе Performance.