isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

21 мая 2013

Российское 3D-ядро. ЧАСТЬ II: функции и инструменты

Леонид Баранов, Сергей Козлов, Дмитрий Сёмин, Николай Снытников

Леонид Баранов Сергей Козлов Дмитрий Сёмин Николай Снытников

От редакции isicad.ru: Это — вторая, завершающая, часть большой статьи о текущих результатах проекта построения Российского геометрического ядра (RGK). В первой части были представлены ключевые принципы и качества ядра, а также подробно охарактеризована инфраструктура для разработки приложений.

Авторы публикации — представители комплексного коллектива архитекторов и разработчиков проекта RGK — входят в число ведущих отечественных специалистов в области инженерного программного обеспечения; кандидаты технических и физико-математических наук.

III. Полный набор инструментов для решения задач современного геометрического моделирования

«Стандартная» функциональность

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

Помимо «стандартного» набора ядро обеспечивает решение ряда практически важных, но не так широко поддерживаемых на уровне других ядер функций. Например, функций построения пространственного деформирования твёрдых и листовых тел по различным законам (изгибание, сдвиг, скульптурное деформирование, деформирование по кривой и поверхности и проч.) Отдельно в ядре представлена подсистема решения сопряжений для связывания тел в сборочных моделях. Благодаря такому набору возможностей, ядро представляет собой высокоразвитый инструмент для прикладных программистов, позволяющий резко сократить сроки разработки наукоёмких инженерных приложений и повысить качество таких прикладных решений для самых разных областей применения.

В ядро входит целый набор классов и функций для решения геометрических и математических задач. К их числу относятся операции векторной и матричной алгебры, функции расчёта масс-инерционных характеристик моделей, построение полигональных аппроксимаций точной B-Rep модели, расчёты точек и производных для кривых и поверхностей, нормалей и кривизны, определение габаритов объектов, расчёт минимальных и максимальных расстояний между объектами и другие. К базовым функциям можно отнести также функции доступа к структуре модели — к вершинам, рёбрам, граням, кривым, поверхностям и т.д. Эти функции позволяют реализовывать различные прикладные алгоритмы на основе «опроса» готовой геометрической модели, производить вычисления и оценки по сгенерированным или загруженным из файла данным. Все вычисления происходят с управляемой точностью. То есть прикладной программист может указать в обращении к ядру точность вычислений требуемых параметров, и ядро будет «пробовать» выполнить вычисления с такой точностью. Если это не может быть сделано, например, когда данные в ядре имеют худшую точность, чем требуемая, то возвращается реально достигнутая точность.

Низкоуровневые и высокоуровневые операции

RGK позволяет прикладному программисту работать с геометрическими моделями на разных уровнях, в зависимости от потребностей и квалификации. Условно все операции моделирования можно разделить на низкоуровневые и высокоуровневые. В частности, к низкоуровневым операциям можно отнести функции построения поверхностей и кривых (плоскостей, цилиндров, торов, конусов, эллипсов, окружностей, прямых, точек, NURBS, эквидистантных кривых и поверхностей и т.д.), операции проецирования точек и кривых на поверхности, расширения кривых и поверхностей, репараметризация, пересечения кривых и поверхностей в разных комбинациях, операции Эйлера над топологическими объектами, функции модификации топологии, работающие в терминах «удалить вершину», «добавить цикл» и т.д., функции копирования и трансформации отдельных элементов модели. Низкоуровневые операции позволяют прикладному разработчику модифицировать данные ядра максимально гибким образом. Т.е. они представляют собой базис, на основе которого строится вся основная моделирующая функциональность ядра. Набор таких функций довольно широк, а с учётом возможностей параллельного вызова и использования внутреннего распараллеливания вычислений, этот набор позволяет эффективно реализовать прикладные алгоритмы моделирования, специфичные для конкретной области. Но, как и любые другие низкоуровневые средства, инструменты этого типа довольно трудоёмки в использовании даже несмотря на инкапсуляцию внутри поддерживающих классов всех наиболее сложных вещей по управлению памятью, распараллеливанию и обеспечению работы внутренних протоколов ядра (идентификации, атрибутов и т.д.). Поэтому в ядре разработаны все «стандартные» высокоуровневые генераторы тел, которые известны по другим решениям. Несмотря на свою «стандартность» такие генераторы имеют полезные опций, которые делают их применимыми в разных областях. Например, булевы операции могут работать как с твёрдыми, так и с листовыми телами, а так же их комбинациями. Это позволяет строить на базе этой функциональности, как системы гибридного моделирования, так и чисто поверхностные или наоборот, твердотельные системы. Другой пример — опцией при выполнении перемещения граней является возможность задания набора преобразований, что приведёт к построению массива граней «по образцу». Таких примеров можно привести довольно много. Архитектура ядра изначально строилась разработчиками с учётом большого практического опыта разработки САПР общего назначений, что позволило создать гибкий и инвариантный инструмент для реализации подобных проектов.

Виды высокоуровневых генераторов в системах твердотельного моделирования

Помимо классификации функций и операций ядра по признаку «низкий — высокий» имеет смысл привести несколько иной критерий классификации. А именно, классификацию высокоуровневых генераторов по области применения в рамках твердотельных систем геометрического моделирования. С этой точки зрения операции можно разделить на группы:
  • Операции по генерации примитивов: параллелепипедов, сфер, цилиндров, торов, конусов
  • Операции генерации на основе кинематических алгоритмов (выталкивание, вращения, движение проволочного или листового тела по плоской или пространственной траектории, пружины и спирали с возможностью задания линейных и нелинейных законов изменения радиуса и шага)
  • Операции генерации тел по сечениям (сечения могут быть как одно параметрическим, так и двухпараметрическими семействами с заданием дифференциальных условий в сечениях)
  • Операции глобальной модификации тел:
    • Булевы операции (сложение, вычитание, пересечение)
    • Деформации (изгиб, кручение, скульптурная деформация, перекос, деформация по кривой и по поверхности)
    • Масштабирование как однородное, так и не однородное с заданием разных коэффициентов масштаба по осям заданной системы координат
  • Операции локальной модификации тел:
    • Сглаживание рёбер и граней с постоянным радиусом с непрерывностью G1 и G2
    • Сглаживание рёбер и граней с переменным радиусом с непрерывностью G1 и G2
    • Сглаживание рёбер и граней с постоянной шириной с непрерывностью G1 и G2
    • Дисковое переменное сглаживание рёбер и граней с сечением в форме кривой второго порядка
    • Построение постоянной и переменной фаски для рёбер
    • Сглаживание трёх последовательностей граней
    • Построение уклона граней на указанные углы с заданным направлением
    • Построение оболочек твёрдых тел с разными величинами смещения для разных граней
    • Построение эквидистантных тел с разными величинами смещения для разных граней
    • Перемещение граней с поддержкой опций повторного сглаживания и создания граней массива «по образцу»
    • Изменение подложенной геометрии граней
    • Замена связного набора граней на другой набор или листовое тело
    • Удаление грани с затягиванием области
    • Сшивка листовых тел, в том числе и с образованием твёрдого тела
    • Расширение поверхностей с обеспечением G1 и G2 гладкости при расширении
    • Заполнение n-угольной области с сохранением G1 и G2 непрерывности с граничными гранями
Обеспечение функций прямого моделирования
В силу того, что последние годы на рынке САПР появилась явная тенденция к обеспечению в прикладных системах функций «прямого моделирования», при разработке нового ядра конечно нельзя было игнорировать это требование. Тем более, что такой подход к модификации модели действительно весьма продуктивен при отсутствии иной информации о конструкторском замысле. С этой целью был разработан механизм, который позволяет группировать несколько локальных операций так, что результатом модификации твёрдого тела является тело, полученное воздействием такого комбинированного преобразования. Таким образом, результирующее тело формируется лишь после отработки всех модифицирующих алгоритмов. Такой подход позволяет проводить сложные модификации, которые в противном случае приводили бы к созданию некорректного тела на одном из шагов при пооперационном режиме модификации. Наличие подобного инструмента позволяет в прикладной программе определять все требуемые модификации модели из каких-либо своих соображений и за одно действие применять эти модификации к телу. В частности, так может быть органично реализована функциональность «прямого» моделирования, основанная на решении геометрических ограничений и формировании предполагаемого «конструкторского замысла».
Процедуры построения проекций модели на плоскость
Процедуры построения проекций модели на плоскость с классификаций линий по условию видимости и процедуре получения полигональной аппроксимации точного B-Rep описания модели также являются важными компонентами ядра. Формально обе эти процедуры — не более чем ещё два класса ядра, однако на деле за каждой из них стоит задача большой алгоритмической и программной сложности, которые содержат в себе целый ряд отдельных вычислительных подзадач. Первая процедура обеспечивает вычисление видимости рёбер модели (как отдельного тела, так и сборки) при проекции на заданную плоскость. Помимо модельных рёбер в процессе проецирования рассчитываются очерковые рёбра, которые принципиально важны для более полной передачи информации о геометрии объекта например при автоматическом получении чертежа. Такая классификация требуется как для построения чертёжных видов, так и для решения различных задач анализа видимости элементов модели. При работе процедуры классификации происходит задействование всех аппаратных возможностей вычислительной платформы — как CPU, так и GPU устройств. Связано это с тем, что алгоритмы, используемые при её решении, хорошо распараллеливаются на всех типах вычислителей, причём разные фазы задачи решаются одновременно на всех доступных устройствах. Похожим образом обстоит дело и для задачи построения полигональной аппроксимации. Применяемые в ядре алгоритмы её решения допускают распараллеливание как на уровне расчёта сетки отдельных тел, так и на уровне расчёта сетки отдельных граней и рёбер, что приводит к существенному ускорению на многоядерных компьютерах. Реализация алгоритмов ядра не зависит от конкретной вычислительной платформы и, при отсутствии того или иного типа вычислителя, его функцию берёт на себя другой.
Минимизация типов геометрии
Изначально разработчики не стремились к абсолютной минимизации математического аппарата описание кривых и поверхностей, задействованных при моделировании. Приоритет был отдан адекватности применяемой математики задаче, для решения которой она используется. В то же время введение того или иного нового типа геометрии в представления ядра делалось с особой осторожностью, что бы не получить различного рода эффекты типа «комбинаторного взрыва» по числу специальных алгоритмов, которые требуется реализовать для обеспечения корректного и эффективного взаимодействия различных математических представлений. За счёт использования такой идеологии удалось существенно повысить качество решения многих сложных задач геометрического моделирования, при этом оставаясь в рамках достаточно компактного и гибкого программного кода, который поддерживает базовые протоколы работы ядра (вычисление точек и производных, построение пересечений, поиск расстояний и т.д.). Одним из примеров такого подхода является использование специальных типов поверхностей для описания поверхностей сглаживания с условием G2 гладкости на границе. Для решения этой задачи используется специально разработанная функционально заданная поверхность. Этот подход вполне соответствует современным тенденциям в разработке математики для моделирования. Такую же тенденцию можно, например, проследить и в описании T-сплайнов да и, в некоторой степени, поверхностей Грегори.
Реализация преимуществ за счёт распараллеливания алгоритмов
При разработке алгоритмов особое внимание всегда уделялось возможности их распараллеливания и получения преимуществ за счёт такой организации вычислительного процесса. В результате удалось получить масштабируемое решение, которое готово для поддержки не только существующих вычислительных платформ, но и платформ обозримого будущего без серьёзных изменений своей модели вычислений. В-третьих, при выборе особенностей реализации различных функций моделирования, был учтён опыт разработки современных прикладных решений в области САПР. Это позволило сконцентрировать внимание на наиболее актуальных на сегодняшний момент вопросах создания и модификации геометрии изделий широкого профиля. В четвёртых, при разработке отдельно уделялось внимание эффективности и стабильности программного кода и структур данных с использованием современных технологий разработки сложного структурированного программного обеспечения. Такая схема позволила сократить до минимума накладные расходы, связанные со структурой компьютерного представления модели и уделить максимальное внимание вопросам алгоритмической оптимизации и структуре вычислительного процесса. Строго говоря, потенциал заложенных в идеологию ядра принципов далеко не исчерпан и явно может дать в перспективе дополнительные позитивные результаты в повышении качества решения задач моделирования и стабильности программного кода ядра.

Расчёт геометрии и топологии пересечений

Построение линии пересечения кривых и поверхностей является базовой и, одновременно, одной из самых сложных функций ядра геометрического моделирования. Она интенсивно используется как на внешнем (API) уровне разработчиками САПР, так и внутреннем уровне в качестве строительного блока для многих других операций ядра. Поэтому этой функции предъявляются серьёзные требования: поддержка широкого набора опций и режимов, высокое быстродействие и практически абсолютный уровень успеха.

Разработанный численный метод комбинирует алгоритмы глобального поиска для определения ветвей (отдельных точек, кривых, и областей «совпадения» поверхностей и кривых), метод Ньютона для локального поиска, трассировку кривых с помощью численного решения обыкновенных дифференциальных уравнений, поддержку специальных режимов определения сингулярностей, аппроксимацию кривых и формирование сплайн-представления в параметрическом и трёхмерном пространствах. Для ускорения быстродействия был реализован полный набор специальных случаев аналитического пересечения канонических объектов, поддержаны специальные оптимизированные алгоритмы работы с NURBS, разработан ряд оригинальных модификаций методов глобального анализа и трассировки кривой пересечения, основанных на дифференциальных свойствах кривых и поверхностей. Метод прошёл тестирование на миллионах пересечений различных типов и продемонстрировал высокую надёжность и производительность.

Слева: Пересечение канонических поверхностей (тора и двухполостного конуса) с ограничениями в их параметрических пространствах. Справа: пересечение волновой NURBS-поверхности с тором. Результатом является большой набор кривых пересечения.

Обнаружение сингулярных случаев пересечения. Слева: сингулярная точка при пересечении цилиндров. Справа: сингулярная кривая, образующаяся в результате касания цилиндра и «намотанной» на него пружины.

Задача формирования топологии пересечения двух тел
Задача формирования топологии пересечения двух тел возникает при построении булевых операций, операций сопряжения, замены грани, определения столкновений и других. Речь идёт о построении промежуточной структуры данных, которая хранит в себе не только информацию о пересечении геометрических объектов, но и сведения о топологии пересечения, а также связи компонент пересечения с элементами топологии исходных тел или топологических структур. Для построения данной структуры выполняются следующие операции: попарно пересекаются все ребра и грани тел (точнее: ассоциированные с ними кривые и поверхности с ограничениями в трёхмерной и параметрической области решения), по полученным точкам и кривым пересечения строятся сегменты пересечения, производится поиск и кластеризация совпадающих точек и отрезков пересечения.

Поскольку операция построения топологии пересечения должна быть, по возможности, интерактивной (то есть занимать не более 0.1 секунды даже для очень сложных тел), её оптимизации было уделено самое пристальное внимание. Помимо эффективного однопроцессорного алгоритма, была реализована параллельная версия, которая показала хорошую масштабируемость на современных многоядерных системах и значительный резерв для грядущих микропроцессорных архитектур с большим количеством ядер.

Пример построения топологии пересечения для двух тел. Слева: тела. Справа: «отпечаток» топологии пересечения.

Булевы операции над телами
Булевы операции над телами — это операции вычитания, объединения и сложения двух тел, понимаемые в обычном теоретико-множественном смысле. Они являются одними из основных операций проектирования. Алгоритм операции объединения двух тел можно описать следующим образом: необходимо построить топологическое пересечение тел, удалить ту часть первого тела, которая попала внутрь второго тела, и ту часть второго тела, которая попала внутрь первого тела, а из всего остального сформировать новое тело.

Применение булевой операции вычитания цилиндрического тела из «винтового» тела.

Результат применений последовательности булевых операций для генерации модели зубчатого колеса. Слева: Исходная заготовка и «инструментальное» тело. В центре: результат операции вычитания. Справа: итоговое тело.

«Продвинутые» функции для выполнения сложных операций моделирования

В ходе работ над ядром RGK большие усилия были приложены к разработке алгоритмов и программ построения поверхностей сложной формы и тел, ограниченных такими поверхностями. Существует общепринятая в настоящее время идеология построения такого рода объектов. А именно генерация методами кинематического протягивания «профиля» по траектории с заданием различными способами законов кручения и масштабирования профиля в процессе движения и построения поверхности по одно и двухпараметрическому каркасу «профилей» — генератор «по сечениям». Оба эти способа в полной мере поддерживаются ядром. В генераторе «по сечениям» поддерживаются многоконтурные сечения, касательные условия в сечениях. Допустимы сечения различной топологии. В случае, когда топология сечений отличается друг от друга, алгоритмы генератора производят согласование сечений с учётом числа изломов и числа сегментов в каждом G1 непрерывном интервале сечений. При этом у прикладного программиста остаётся возможность «ручного» задания соответствий между сечениями путём указания в программе точек синхронизации. Генератор так же поддерживает задание «осевой» направляющей кривой для набора сечений. Разрешены задания важных типов вырождений — использование точек в качестве первого или последнего профиля, контакт соседних профилей по общему ребру и т.д. Такой подход позволяет максимально приблизить функциональность ядра к практическому использованию в прикладных САПР.

Генерация тел операцией «По сечениям» с использованием различных способов синхронизаций точек контуров

Что касается генератора «по траектории», то в ядре реализовано две разновидности этой функциональности: генератор по траектории с заданием законов масштабирования и кручения как функции от параметра пути и генератор движения по трём кривым с различными опциями вычисления ориентации. В генераторе разработано несколько типов обработки изломов на траектории. Поддерживаются пространственные траектории с ненулевым кручением. При этом опционально может формироваться поверхность с минимальным кручением при движении вдоль направляющей. Отдельным типом генератора сделана функция построение спиралей и пружин с учётом специфики формы таких объектов в приложениях. В частности, в пружинах учитывается поджатие на концах и шлифовка последнего витка. Наличие возможности использовать законы изменения радиуса и шага делают генератор пружин мощным инструментом формообразования модели. Стоит отметить, что поверхности, которые создаются генераторами, имеют максимально возможный порядок гладкости.

Тела, созданные генератором «По траектории» с применением различных законов изменения профиля

Трубопровод, созданный генератором «По траектории»

Другим важным способом формирования моделей с поверхностями сложной формы является набор операций деформации, о котором упоминалось выше. Суть операций состоит в реализации функции «деформации пространства» в соответствии с заданным законом с поддержкой требуемой точности такой деформации. В ходе преобразований деформации многие поверхности тела меняют тип, превращаясь из аналитических поверхностей в NURBS. Там, где есть возможность, ядро оставляет тип поверхностей без изменений. Особенность операций деформации состоит в глобальности действий на исходное тело. Такое действие позволяет с минимальными затратами усилий со стороны конечного пользователя прикладной системы получать различные сложные геометрические формы из относительно простых по геометрии заготовок. Как и в других операциях функции деформирования могут выполняться в параллельном режиме. Частным случаем операции деформирование можно считать неоднородное масштабирование тела по осям координат

Применение операции «Скульптурная деформация» к модели станины станка

Как уже отмечалось, для решения ряда задач при моделировании сглаживания и гладкого заполнения областей сложной формы в ядре используются специальные функциональные поверхности. С их помощью удаётся точно представить решение задачи о сглаживании с непрерывной кривизной двух поверхностей с переменной формой сечения. Причём переменными могут быть как радиус, так и тип сечения. Такие же поверхности используются и для построения сглаживания трёх поверхностей с переменным радиусом. Следует отметить, что в рамках ядра разработаны алгоритмы сглаживания, как по схеме «катящегося шара», так и по схеме дискового сглаживания с заданной или вычисляемой осевой кривой. Для решения задачи гладкого заполнения n-угольной области так же были разработаны специальные типы поверхностей, которые позволяют точно решить задачу при произвольном числе границ с минимальными разумными требованиями к их гладкости. В частности, требуется только кусочная гладкость границ и, тем самым, допускается G1 разрыв на границе при стыковке участков. Наличие таких поверхностей позволило естественным образом решить задачи построения многосторонних «чемоданных» углов при сглаживании, формирования гладких переходов внутри области сглаживания и разработать функциональность по заполнению областей, как одной из задач поверхностного моделирования. Для всех типов поверхностей и кривых, которые используются в ядре, разработаны конвертеры в NURBS. Это позволяет при необходимости переходить к работе со сплайн-формой там, где это требуется, в частности при трансляции данных ядра во внешние обменные форматы типа STEP. Точностью такого преобразования можно управлять на уровне приложения.

Использование специальных поверхностей для решения задач сглаживания и затягивания дырок

IV. Поддержка решения стандартизованных классов задач САПР

Управление сборочными моделями

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

В RGK каждая сборка представлена набором деталей (тела или подсборки) с дополнительной трансформацией, задающей положение детали в сборки.

Функции ядра позволяют создавать новые сборки, изменять состав существующих сборок, удалять компоненты сборки. Во всех случаях редактирования обеспечивается контроль корректности получаемой модели, чтобы исключить случаи рекурсии или потери ссылок.

Информация о сборках может сохраняться в обменном файле. В сборках также можно хранить дополнительную прикладную информацию при помощи атрибутов.

Решение задач сопряжения элементов и моделирования кинематики механизмов

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

Для описания сопряжений в ядре используются три основных понятия:

  • Сопрягаемые детали. Деталью может быть отдельное тело, сборка верхнего уровня или подсборка. Описание детали учитывает тот факт, что сборка может включать несколько экземпляров тела или подсборки на разных уровнях иерархии. То есть сопряжение задаётся для каждого экземпляра в сборке. Каждая деталь может участвовать в нескольких сопряжениях, например при задании многозвенных механизмов или ограничении степеней свободы детали. В детали хранится результирующее преобразование сопряжения. Положение детали может зафиксировано.
  • Соединительные элементы. Это геометрические объекты, с помощью которых задаются связи деталей в сопряжениях. В качестве соединительных элементов могут использоваться кривые, поверхности, плоскости, оси, точки, листовые и проволочные тела. Геометрия может браться с вершин, рёбер или граней или задаваться в явном виде, как например ось вала безотносительно к его геометрии. Соединительный элемент не всегда связан с деталью. Например, он может использоваться для привязки к началу или одной из осей глобальной системы координат.
  • Собственно сопряжения. В ядре различают несколько типов сопряжений:
    • Совпадение соединительных элементов
    • Параллельные оси и плоскости
    • Перпендикулярные оси и плоскости
    • Касание поверхностей и кривых
    • Соосность
    • Сохранение расстояния между элементами
    • Сохранение угла между элементами
    • Позиционирование с помощью локальных систем координат с дополнительными степенями свободы
    • Колёсные передачи
    • Винтовые передачи
    • Передачи сохранения отношения линейных скоростей

Для расчёта положения деталей согласно наложенным ограничениям в ядро интегрирован решатель сопряжений. Результат расчётов преобразований деталей в сборке зависит от начального положения деталей. Обычно у механизмов есть степени свободы, поэтому для изменения положения деталей в сборке можно накладывать дополнительные ограничения в целях уточнения положения деталей.

В RGK описание сопряжений не связано с решателем, поэтому вместо штатного вполне возможно использование какого-либо другого решателя.

Перемещение звеньев механизмов

Генерация проекций

Генератор проекций используется для оформления чертежей и эскизов по трёхмерной модели. Проекционное изображение состоит из набора двумерных сегментов, каждый из которых соответствует части ребра или очерковой линии грани. Вид проекции в первую очередь определяется множеством проецируемых элементов (сборки, тела, грани, рёбра) и преобразованием проецирования. Дополнительные параметры позволяют контролировать процесс формирования проекционного изображения:
  • Выбирать тип алгоритма для построения очерковой линии
  • Устанавливать режим удаления невидимых линий
  • Отключать построение очерковых линий
  • Возвращать информацию о невидимых сегментах в режиме удаления невидимых линий
  • Управлять построением сегментов для рёбер, по которым гладко стыкуются грани
  • Установить опцию построения сегментов для внутренних рёбер
  • Включать поиск пересечений спроецированных рёбер в режиме без удаления невидимых линий
  • Включать параметры разрешения проекционной картинки для отбраковки мелких деталей. В режиме больших сборок такая возможность позволяет существенно ускорить выполнение генератора проекций
  • Управлять параметрами параллельного выполнения вычислений на всех этапах построения проекции
  • Управлять использованием GPU-вычислителей, которое доступно для некоторых алгоритмов при генерации проекций

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

3D модель станка и проекции с удалением невидимых линий, сгенерированные на её основе

Определение вспомогательной информации о модели

Измерение расстояний между элементами модели
Измерение расстояний между элементами модели (топологическими и геометрическими элементами) может использоваться как на внутреннем уровне, так и при использовании программистом — разработчиком САПР. Например, при реализации вычисления характеристических размеров модели, их параметрических соотношений, при интеграции с решателем сопряжений и др. В геометрическом ядре реализованы возможности вычисления локальных и глобальных экстремумов (минимумов и максимумов). Их реализация является комбинацией метода Ньютона с методом «ветвей и границ», позволяющая эффективно отбрасывать области, не содержащие требуемого решения.
Измерение габаритов модели в заданном направлении
Измерение габаритов модели в заданном направлении позволяет определить габарит тела вдоль выделенных направлений. На вход передаётся набор топологических элементов, представляющих собой тело, и три вектора, характеризующие направления. Результатом операции является точка тела, наиболее удалённая по первому из заданных направлений. Если таких точек найдено несколько, то в качестве конечного решения выбирается точка, наиболее удалённая по второму и, если необходимо, третьему направлениям. Функциональность поиска габаритов использует специально оптимизированные методы поиска экстремумов.
Анализ столкновений и взаимного расположения тел
Анализ столкновений и взаимного расположения тел является неотъемлемой частью функциональности современных САПР, помогающая на раннем этапе обнаруживать и устранять ошибки проектирования детали и сборки или конструкций, содержащих большой набор тел (сотни и тысячи объектов). Геометрическое Ядро позволяет определять столкновения между любой комбинацией твёрдых тел, поверхностей и кривых. Эта функциональность принимает на вход два набора топологических объектов, и возвращает все объекты, которые находятся в состоянии столкновения, а также классификацию каждого столкновения. Любое столкновение относится к одному из трёх типов:
  • Пересечение: ограничивающие топологии объектов пересекаются друг с другом
  • Примыкание: ограничивающие топологии объектов касаются друг друга
  • Поглощение: один объект целиком содержится в другом, и их ограничивающие топологии не касаются и не пересекаются
Точное значение каждого типа столкновения зависит от характера объектов, участвующих в расчёте: сплошные, листовые или проволочные тела. Алгоритмы геометрического ядра поддерживают возможности анализа столкновений любых типов тел.

Обмен данными

В состав классов ядра входит готовая функциональность, обеспечивающая обмен данными в стандартном на сегодняшний день формате STEP (прикладные протоколы 203 и 214). Данная функциональность обеспечивает импорт/экспорт данных в наиболее востребованном на данный момент времени формате обмена между CAD/CAM/CAE системами. При этом обеспечивается передача информации в обе стороны, как о модели конкретных тел, так и о структуре сборочных моделей.

Примеры моделей, импортированных в формате STEP из Creo (Pro/E), Autodesk Inventor, SolidWorks

Готовые инструменты для реализации пользовательского интерфейса

Подготовка данных для визуализации
Для визуализации моделей средствами графических аппаратных ускорителей используется плоскогранное сеточное представление граней (триангуляция граней) и полигональное представление для рёбер. Для этих целей в ядре реализован сеточный генератор.

Построение триангуляции удовлетворяет следующим условиям:

  • Высокая скорость работы сеточного генератора. Показатель скорости критичен для интерактивного взаимодействия пользователя со средствами редактирования модели. Повышение эффективности алгоритма достигается распараллеливанием вычислений.
  • Управление параметрами качества сетки: максимально допустимые линейные и угловые уклонения; задание длин сторон треугольников. Адаптация сетки к решаемым задачам позволяет достигнуть баланса скорости визуализации и наглядности представления модели, что важно при работе с отдельной деталью или большой сборкой.
  • Представление результатов работы триангулятора в формате данных графических ускорителей. Поддерживается вывод результатов в GPU-память, что экономит время на конвертацию и копирование данных из одной области памяти в другую.
Инструменты для выбора и поиска объектов
В RGK реализованы инструменты множественного выбора элементов тел по набору лучей. Поиск может использоваться в пользовательском интерфейсе в прикладных системах, для определения видимости элементов, при построении реалистичных изображений, при определении столкновений в задачах динамики.

Процесс выбора элементов управляется с помощью дополнительных параметров:

  • Глубина поиска по каждому типу топологических элементов
  • Пропуск граней обратной стороны тела
  • Задание области поиска с помощью дальней и ближней плоскостей обрезки
  • Задание радиуса лучей, задающих параметры поиска
  • Выбор способа поиска: точный или по полигональной модели. В последнем случае дополнительно задаются параметры качества сетки.
  • Распараллеливание алгоритма поиска по отдельным лучам
  • Возможность исполнения частей алгоритма поиска на GPU-вычислителях

V. Как этим пользоваться?

Что получает пользователь

Пользователем RGK является не пользователь в традиционном понимании данного термина (конечный пользователь), а разработчик (архитектор, программист) прикладной системы. В связи с этим, продукт имеет свою, специфическую, комплектацию. Технически ядро представляет собой библиотеку классов на языке программирования «C++» в виде подключаемого модуля (DLL). Классы ядра разработаны очень удобно и современно. Например, для работы с моделью реализованы эффективные итераторы, управление всеми свойствами реализовано в виде удобных функций. Все функции пользовательского уровня описаны в руководстве.

Кроме этого, в состав поставки входит дополнительный набор файлов для сборки проектов с использованием этих классов, руководство пользователя (разработчика), набор примеров, подробная документация, а также демонстрационно-тестовая оболочка «RGK Workshop».

Руководство

Руководство пользователя поставляется в двух разных вариантах — в виде гипертекстового документа, который на данный момент уже является стандартным, а также в виде «бумажного» документа в формате PDF.

Руководство — весьма подробный документ, изначально написанный специалистами именно в данной области на русском языке с использованием устоявшейся специализированной терминологии.

Руководство пользователя (разработчика) в форматах PDF и CHM

Набор примеров

В состав файлов, получаемых пользователем, включён ряд примеров для демонстрации возможности использования классов ядра с применением различных типов операций. Это поможет пользователю быстро освоиться с методикой работы ядра.

Тестовая оболочка «RGK Workshop»

Кроме стандартного набора инструментов, в составе поставки ядра RGK разработчик получает полезную программу «RGK Workshop». Эта программа является демонстрационно-тестовым приложением с удобным пользовательским интерфейсом, позволяющим опробовать функциональность ядра без необходимости разработки полноценного приложения. Оно обеспечивает следующие возможности:
  • Чтение файлов, сохранённых в обменном формате RGK
  • Многооконный режим работы, когда каждая из моделей просматривается в своём окне
  • Графическую визуализацию моделей в рабочем окне с удобной навигацией — множеством опций визуализации, управлением положением камерой, набором стандартных видов и т.д.
  • Средства анализа структуры модели. Окно «структура модели» отображает все топологические объекты с их взаимосвязями, а также геометрические параметры выбранных элементов.
  • Выполнение «тестов» — команд с пользовательским интерфейсом, использующих генераторы, имеющиеся в ядре. Набор этих команд превращают данное приложение в «мини-CAD систему», обеспечивающую минимальный набор функций моделирования.
  • Выполнение проверки модели и вывод диагностики по её результату.
  • Возможность разработки собственных команд и встраивания их в интерфейс приложения. Данная функция очень полезна для разработчиков, которые начали использовать функциональность ядра, и пока не имеют полноценной графической подсистемы с пользовательским интерфейсом. Простая процедура регистрации таких команд, по сути, делают приложение открытым средством разработки и тестирования конечной прикладной функциональности.
  • Возможность сохранения моделей в обменный файл
  • Возможность импорта и экспорта моделей в формате STEP.

Публикации

  1. Д. Ушаков. Геометрические ядра в мире и в России
  2. Д. Ушаков. На ядре
  3. ЛЕДАС поможет МГТУ «СТАНКИН» разработать отечественное 3D-ядро
  4. Уральский федеральный университет им.Б.Н.Ельцина (УрФУ) участвует в разработке отечественного геометрического 3D-ядра
  5. Волгоградский государственный технический университет — участник проекта по разработке отечественного геометрического ядра
  6. К разработке отечественного геометрического ядра подключились математики МГУ
  7. Создана первая версия российского ядра геометрического моделирования

Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

Перепечатка материалов сайта допускается с согласия редакции, ссылка на isicad.ru обязательна.
Вы можете обратиться к нам по адресу info@isicad.ru.