Разработчики: | Top Systems (Топ Системы) |
Дата последнего релиза: | 2023/07/24 |
Технологии: | САПР |
Основная статья:САПР Системы автоматизированного проектирования
2023: Анонс отечественного геометрического ядра RGK
24 июля 2023 года компания «Топ Системы» сообщила о том, что получила все возможности по самостоятельному развитию и выводу на рынок геометрического ядра RGK в качестве коммерческого продукта. Продукт будет поставляться сразу для нескольких платформ, включая различные версии Linux, в том числе отечественные сертифицированные версии. Поставка продукта планируется в виде библиотеки классов для использования на языке программирования C++, а также всех компонентов, необходимых для удобного применения в конечных системах.
Комплект инструментов разработчика (SDK) включает в себя:
- исполняемые модули;
- библиотечные и заголовочные файлы, необходимые для сборки конечного приложения;
- файл электронного руководства в виде гипертекстовой справки;
- набор примеров в исходных кодах;
- исполняемую программу RGKWorkshop — тестовую и отладочную оболочку, являющуюся одновременно и средством анализа, и средством отладки геометрических моделей;
- описание формата хранения моделей RGK - RGK_XML.
Отдельно стоит отметить, что формат хранения данных RGK_XML является открытым и специфицированным. Он имеет понятную структуру, соответствующую общим принципам организации модели данных RGK. Формат может быть использован с целью стандартизации для обеспечения представления точной геометрической модели данных объектов.
Директор по развитию технологий 3D моделирования «Топ Системы» Леонид Баранов рассказал о принципах построения модели данных геометрического ядра RGK, его архитектурных особенностях и наиболее сложных и интересных задачах, которые приходится решать разработчикам модуля. Рассказ сопровождался большим количеством иллюстраций и демонстрацией сравнительных тестов. Геометрическое ядро RGK обеспечивает моделирование геометрических объектов по классической схеме граничного представления (B-Rep) с «точной» геометрией – с использованием аналитического представления кривых и поверхностей разных типов. Такое представление позволяет моделировать объекты с высокой точностью, одновременно обеспечивая возможность работы с толерантной геометрией, когда вместе с объектами модели хранится точность, с которой они были рассчитаны. Параметры точности толерантной геометрии применяются при всех вычислениях, выполняемых в коде ядра. Данная особенность обеспечивает возможности по сохранению целостности геометрической модели даже для очень сложных геометрических форм и невысокой точности исходных данных.
Геометрическое ядро обеспечивает выполнение следующих основных функций:
- хранение геометрической модели (геометрии/топологии тел, поверхностей, кривых);
- создание и редактирование геометрической модели;
- управление идентификацией и атрибутами геометрической модели;
- контроль целостности и качества геометрической модели;
- измерение и анализ геометрической модели;
- построение плоскогранных представлений (тесселяции) модели с целью визуализации или подготовки данных для генерации расчётных (CAE) сеток;
- генерация проекций и видов.
Классы геометрического ядра RGK, доступные для использования в конечных приложениях, обеспечивают как низкоуровневую функциональность для создания и редактирования геометрии, так и высокоуровневые специализированные функции, которые в ядре называются генераторами. Так, в составе библиотеки классов ядра имеются следующие генераторы:
- примитивы (призма, тор, сфера, цилиндр, конус);
- кинематические операции (вытягивание, вращение, по траектории, по сечениям);
- булевы операции (глобальные, локальные, селективные);
- операции сглаживания различных типов (фаски, рёберное сглаживания, трёхгранное сглаживание, сглаживание граней);
- операция оболочки/тела смещения/придания толщины;
- операция уклона граней;
- операции удаления/замены/трансформации граней (так называемые операции прямого моделирования);
- операции сшивки/разрезания;
- операции копирования/трансформации тел, в том числе с использованием различных масштабов по осям;
- ряд низкоуровневых операций с телами, а также множество операций с кривыми.
Функциональность многих генераторов в RGK весьма развитая. Остановимся на описании особенностей некоторых из операций, поддерживаемых ядром. Например, в генераторе «по траектории» и «по сечениям» поддерживается ряд довольно продвинутых опций. Возможно задание законов кручения и масштабирования протягиваемого контура как отдельно, так и в комбинации, а также задание нескольких траекторий и различных способов их синхронизации. Кроме того, поддерживается обработка изломов на траектории движения.
При построении поверхностей в ядре особое внимание уделяется их качеству — как с точки зрения соблюдения требований точности построения, так и в плане минимизации количества управляющих точек и регуляризации параметризации. Поскольку разработчики RGK имеют прямой доступ к функциональности, пожалуй, лучшего твердотельного ядра в мире — Parasolid, это позволяет проводить непредвзятые исследования и сравнение результатов. Качество алгоритмов генерации поверхностей в RGK в целом сопоставимо с этим ядром и продолжает постоянно улучшаться, так как текущей задачей разработчиков является достижение функционального паритета с мировыми ядрами. В связи с этим в процессе разработки проводится большая исследовательская работа по анализу качества алгоритмов по сравнению и с другими конкурирующими решениями «тяжёлого» класса.
Как известно, одним из наиболее сложных как в математическом, так и алгоритмическом отношении классом задач геометрического моделирования являются задачи сглаживания (скругления) поверхностей. Учитывая это, при разработке ядра RGK особое внимание уделяется именно данной функциональности. В сглаживании рёбер поддерживаются практически все основные режимы управления формой, известные по функциональности так называемых систем «тяжёлого» класса: сечение постоянного и переменного радиуса; заданная ширина, как в постоянном, так и переменном режимах; переменные сечения с кривыми второго порядка (эллипсы, параболы, гиперболы); режимы гладких переходов и сохранения рёбер на всех типах сглаживаний; сохранение кривизны — G2 гладкость (рис. 4); задание отступов от вершины при вершинном сглаживании. Особенно стоит отметить архитектуру алгоритма, которая позволяет в едином формализме поддерживать сглаживание как рёбер, так и граней и трёхгранное сглаживание, тем самым обеспечивая очень высокую гибкость алгоритма и возможность развития. Большая работа проделана в части топологической робастности алгоритма сглаживания. Например, в зависимости от заданного радиуса алгоритм умеет делать большие перестройки топологии тела.
Является допустимым построение сглаживания большего радиуса по меньшему. Такая задача возникает довольно часто при практическом моделировании. Поддерживаются различные «переполнения», то есть переходы на гладкие соседние грани, а также, при необходимости, сохранение рёбер. Особенно разработчики отметили способность алгоритма сглаживания RGK обрабатывать вырождение топологических элементов. Поддерживается сложная топология перекрытий сглаживаний, что значительно повышает качество работы алгоритма при реальном применении. Интересные результаты достигнуты при построении переменного сглаживания. В частности, поддерживается обработка перекрытия сглаживающих последовательностей с перевычислением закона изменения радиуса в области перекрытия. Естественно, алгоритмами RGK реализована поддержка различных сечений переменного радиуса. Кроме того, разработана математика построения гладких «затягиваний» n-угольных областей. Эти разработки позволяют, в частности, решать задачу построения поверхностей с отступами от вершины (setback). Алгоритм сглаживания работает как на твёрдых, так и на поверхностных телах — в RGK нет различий между этими топологиями. В ядре RGK функциональность сглаживания граней реализована, по сути, тем же самым алгоритмом, который выполняет сглаживания рёбер, — отличие только в интерфейсе верхнего уровня, но при этом решаются классические задачи сглаживания граней.
Так как ядро RGK изначально разрабатывается с целью конкуренции с мировыми промышленными ядрами, в число инструментов ядра внесена различная функциональность, которая требуется прикладным системам «тяжёлого» класса для решения различных специальных задач. Например, задача построения уклона граней формулировалась изначально как задача с указанием фиксированных рёбер произвольной геометрии и возможностью изменения топологии тела в процессе операции. Уклон относительно поверхности разъёма, конечно, тоже поддерживается, как частный случай более общей постановки.
Другой пример: в булевых операциях помимо традиционного «глобального» режима операций (объединение, вычитание и пересечение) предусмотрены режимы локальных операций, когда приложение может указать, с какими именно гранями надо проделывать селективные булевы операции с возможностью выбора частей исходных тел, которые останутся в результате. Кроме того, предусмотрена обобщённая булева операция, которая может формировать топологическую модель, представляющую тела, контактирующие друг с другом по граням и рёбрам. Важно также отметить, что булевы операции работают как над твёрдыми, так и над поверхностными телами, а также их комбинациями.
В наборе инструментов булевых операций поддерживается функциональность по работе с экземплярами тел (instancing) – техники оптимизации булевой операции над массивами тел, геометрия которых отличается только положением экземпляров в пространстве. Кроме этого, поддерживаются операции «по образцу» (patterning), когда элементы размножаются по заданной грани.
В алгоритмах геометрического ядра повсеместно и активно используются многопоточные вычисления. Эта возможность была заложена в алгоритмы ядра изначально, так как является одним из основных инструментов повышения общей эффективности работы конечного приложения. При этом RGK поддерживает как внутреннее распараллеливание вычислений (когда параллельные потоки запускаются автоматически), так и внешнее (когда параллельные потоки создаются в прикладном коде за пределами функций ядра). Параллельные вычисления позволили на ряде сценариев получить многократный прирост производительности по сравнению с существующими геометрическими ядрами (рис. 34, 35).
Похожее поведение наблюдается и на большинстве других вычислительно ёмких задачах. В частности, на задачах проверки пересечения тел в сборках, расчёта расстояний и построения проекций с удалёнными невидимыми линиями. По состоянию на 24 июля 2023 года комплект разработчика RGK (SDK) готов к передаче сторонним разработчикам для пробного использования. Помимо работы над самим ядром, выполняются связанные работы в T-FLEX CAD 17.
1984: Старт разработки
Разработка геометрического ядра RGK, по сути, началась в далёком 1984 году, когда в Московском станкоинструментальном институте (позже МГТУ «Станкин») была организована группа по исследованиям в области геометрического моделирования и разработке 3D ядра под руководством доцентов А.В. Рыбакова и В.Ю. Судзиловского. Именно с того момента Леонид Баранов начал заниматься этой работой в качестве математика-программиста, а позже, после завершения учёбы в Станкине, возглавил эту группу.
Подрядчики-лидеры по количеству проектов
АСКОН (56)
Simetra (ранее А+С Транспроект) (49)
АйтиКонсалт (30)
Softline (Софтлайн) (26)
Неолант (22)
Другие (437)
Simetra (ранее А+С Транспроект) (8)
АСКОН (5)
Главтелеком (3)
CSoft, ГК (СиСофт) (3)
АСКОН-Волга (2)
Другие (17)
АСКОН (10)
Главтелеком (5)
Simetra (ранее А+С Транспроект) (3)
Витро Софт (Vitro Software) (2)
Renga Software (Ренга Софтвэа) (2)
Другие (8)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
АСКОН (24, 100)
Autodesk (85, 79)
PTC Inc (Parametric Technology Corporation ) (11, 37)
Витро Софт (Vitro Software) (1, 35)
Siemens Digital Industries Software (ранее Siemens PLM Software) (8, 32)
Другие (440, 376)
PTV Group (3, 8)
АСКОН (4, 7)
Ansys (5, 4)
CSoft Development (СиСофт Девелопмент) (3, 3)
Витро Софт (Vitro Software) (1, 3)
Другие (15, 18)
АСКОН (3, 10)
Нанософт разработка (3, 3)
Autodesk (3, 2)
Нанософт (3, 2)
PTV Group (2, 2)
Другие (7, 9)
Витро Софт (Vitro Software) (1, 4)
Simetra (ранее А+С Транспроект) (1, 4)
АСКОН (2, 2)
Ситроникс КТ (ранее Кронштадт Технологии) (1, 1)
Цифровая мануфактура (1, 1)
Другие (8, 8)
Simetra (ранее А+С Транспроект) (1, 12)
Витро Софт (Vitro Software) (1, 3)
АСКОН (2, 2)
PTV Group (2, 2)
Нанософт разработка (1, 2)
Другие (4, 5)
Распределение базовых систем по количеству проектов, включая партнерские решения (проекты, партнерские проекты)
КОМПАС-3D - 75 (63, 12)
Vitro-CAD - 35 (35, 0)
PTC Creo - 32 (16, 16)
RITM3 - Real time integration transport measurements modelling managemet - 30 (30, 0)
NanoCAD - 28 (22, 6)
Другие 396
PTV Vissim - 7 (7, 0)
PTV Visum - 6 (6, 0)
Pilot-BIM - 5 (5, 0)
КОМПАС-3D - 3 (2, 1)
Vitro-CAD - 3 (3, 0)
Другие 24
КОМПАС-3D - 5 (5, 0)
Pilot-BIM - 5 (5, 0)
NanoCAD - 3 (2, 1)
Vitro-CAD - 2 (2, 0)
PTV Vissim - 2 (2, 0)
Другие 9