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

Статьи

22 сентября 2025

Геометрическое ядро C3D: новые функции и направления развития

Татьяна Кондрикова, руководитель группы C3D Modeler, С3D Labs

Татьяна Кондрикова


Обновления в C3D Modeler 2025 охватывают сразу несколько ключевых направлений: каркасное моделирование, оболочки, прямое моделирование, листовое моделирование, а также диагностику и системные улучшения. Одним из значимых нововведений стала операция построения срединной кривой (рис. 1) — множества точек, равноудаленных от двух заданных кривых. Эта операция применяется к двум кривым на плоскости, которые могут быть замкнутыми или разомкнутыми и состоять из стыкованных по касательной сегментов без самопересечений. Результат представлен в виде NURBS-кривой.

Геометрическое ядро C3D

Рис. 1. Срединная кривая

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

Геометрическое ядро C3D

Рис. 2. Сворачивание и разворачивание кривых и точек на линейчатую поверхность

По запросам пользователей в экспортные функции в API ядра добавлена функция удаления самопересечений контуров (рис. 3). Ранее эта логика использовалась во внутренних алгоритмах ядра — например, при эквидистантных построениях в операциях вращения, выдавливания и кинематики. Теперь результат удаления самопересечений возвращается в виде основного контура и дополнительных частей.

Геометрическое ядро C3D

Рис. 3. Удаление самопересечений контуров

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

Геометрическое ядро C3D

Рис. 4. Булевы операции над регионами

Сейчас такого рода доработки проводятся по всему ядру. Например, у нас есть два региона на рис. 4 слева, два вертикальных отрезка которых находятся на расстоянии d друг от друга. Если мы зададим точность по этому направлению больше, чем величина d, то будет диагностировано наложение отрезков, и результат операции объединения будет отличаться от случая с заданной меньшей погрешностью.

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

Далее переходим к операциям с оболочками. Среди новинок — геометрический массив граней и большой блок нового функционала по скруглению граней.

Геометрическое ядро C3D

Рис. 5. Срединная оболочка

Начнем со срединной оболочки (рис. 5). Срединная оболочка содержит поверхность с множеством точек, равноудаленных от двух наборов граней. Эта операция применяется для разделения сложной геометрии на части и используется при создании геометрии оболочечных расчетных моделей в CAE-системах. Ранее она работала только для оболочек с парами эквидистантных граней, а теперь реализована в общем виде. В результате получается NURBS-поверхность. При этом есть возможность задать параметр обрезки оболочки границами родительских граней.

Геометрическое ядро C3D

Рис. 6.1. Геометрический массив граней

Геометрическое ядро C3D

Рис. 6.2. Геометрический массив граней

Кроме того, в активной разработке находится операция построения геометрического массива граней. Она изменяет оболочку путем копирования групп граней. Результирующая оболочка получается путем сшивки исходной оболочки и скопированных граней. При этом грани необходимо предварительно продлить до оболочки или сквозь нее. На примерах (рис. 6.1–6.2) слева — геометрия до операции, справа — после (скопированы голубые грани). Операция может как добавлять материал к оболочке, так и удалять его. В примере на второй картинке скопированы внутренние грани отверстия.

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

Геометрическое ядро C3D

Рис. 7. Продление оболочки

Небольшая доработка была выполнена и в базовых операциях. Ранее при построении оболочек вращением или выдавливанием действовал запрет на создание незамкнутой оболочки по многоконтурной образующей. Этот запрет снят, и добавлена обработка ситуаций, когда части полученной оболочки пересекаются (рис. 8).

Геометрическое ядро C3D

Рис. 8. Незамкнутые оболочки

Крупный блок обновлений касается скругления граней. Мы реализовали новые подходы к построению скруглений, в том числе скругление шариком, обрезку опорных граней при сшивке в единую оболочку и другие методы построения.

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

Геометрическое ядро C3D

Рис. 9. Скругление диском и шариком

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

Геометрическое ядро C3D

Рис. 10. Новые поверхности скругления

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

Геометрическое ядро C3D

Рис. 11. Усечение опорных граней

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

Геометрическое ядро C3D

Рис. 12. Скругление трех групп граней

Сейчас в активной разработке находится функционал скругления трех групп граней (рис. 12). Он расширяет возможности скругления двух групп и является аналогом операции полного скругления в скруглении ребер. Параллельно начата разработка скругления по граничным кривым (рис. 13): для создания такой операции требуется задать две кривые на поверхностях. В результате получается поверхность с граничными кривыми, совпадающими с указанными и имеющими заданный тип сопряжения с поверхностями.

Геометрическое ядро C3D

Рис. 13. Скругление по граничным кривым

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

Геометрическое ядро C3D

Рис. 14. Скругление ребер

Перейдем к прямому моделированию. Здесь появилась новая операция — замена на группу граней. На рис. 15.1–15.3 слева бирюзовым цветом показаны заменяемые грани, оранжевым — заменяющие. Операция реализована в нескольких конфигурациях: выдавливание (грани оболочки продлеваются до заменяющих граней), подрезка (грани подрезаются заменяющими), ступенька (часть граней продлевается, часть — обрезается).

Геометрическое ядро C3D

Рис. 15.1. Замена граней

Геометрическое ядро C3D

Рис. 15.2. Замена граней

Геометрическое ядро C3D

Рис. 15.3. Замена граней

В доработках прямого моделирования улучшено удаление граней (в частности, фасок и скруглений) с сегментированными ребрами после импорта (рис. 16). Улучшены адаптация распознавания скруглений в различных операциях, а также операция поворота граней и перемещения по вектору: доработаны отдельные частные случаи.

Геометрическое ядро C3D

Рис. 16. Замена граней

Следующая тема — листовое моделирование. Важной доработкой является развертка линейчатой обечайки со сложными боковыми гранями (рис. 17). Имеется линейчатая обечайка, на боковых гранях которой выполнены изменения, например построены фаски синего цвета. Теперь такую обечайку можно развернуть.

Геометрическое ядро C3D

Рис. 17. Развертка линейчатой обечайки

В плане диагностики в ядро добавлен функционал определения самопересечения оболочки и поверхности, а также функция расчета потенциальной энергии кривой.

Реализована возможность выявления самопересечений оболочки с возможностью выбора режима проверки: только самопересечение граней, пересечение различных граней либо авторежим — поиск всех пересечений (рис. 18). Результатом являются индексы пересекающихся граней и кривые пересечений.

Диагностика самопересечений может выполняться на основе триангуляции. Аналогично доступна проверка самопересечений поверхности с режимами вдоль UV-линий, сегментированного пересечения и авторежима.

Геометрическое ядро C3D

Рис. 18. Диагностика самопересечений

В диагностике кривых внедрен объективный метод проверки гладкости — определение потенциальной энергии кривой (рис. 19). Потенциальную энергию рассчитывает функция CurveMinMaxCurvature с обновленным интерфейсом. В параметрах операции можно включить расчет потенциальной энергии. Функция также определяет точки перегиба, локальные минимумы и максимумы кривизны, а также точки разрыва кривизны.

Геометрическое ядро C3D

Рис. 19. Расчет потенциальной энергии кривой

Далее перейдем к системным работам, которые можно разделить на три направления.

Первое — производительность операций и многопоточность. В ядре реализовано распараллеливание ряда алгоритмов, таких как построение тонкостенного тела, расчет самопересечения оболочки и построение NURBS-копии поверхности. Велась работа по обеспечению потокобезопасности операций ядра: обеспечена атомарность функции получения набора ребер у оболочки, исправлены уязвимости при работе с кривой пересечения и контуром на поверхности. Были проведены оптимизации в некоторых операциях — например, при работе с поверхностями переменного сечения и проецировании.

Второе направление — работа с форматом C3D. Исправлены ошибки чтения и записи моделей в Linux. Внедрено отложенное удаление прочитанных объектов для предотвращения утечек памяти. Добавлена возможность выбора режима MbColor или MbVision при чтении старых моделей. Реализована поддержка индикатора прогресса при записи моделей. Появилась возможность сохранять параметры текущего вида как атрибуты модели.

Третье направление — улучшение качества кода и решение низкоуровневых задач. Добавлена опция отключения внутренней обработки фатальных ошибок. Усилен контроль использования памяти при вычислении сеток в Win32, реализовано отслеживание недостатка памяти при триангуляции. Исправлены выявленные утечки памяти, а устаревшие интерфейсы удалены.

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

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

В прямом моделировании предстоит реализовать возможность изменения размеров цилиндрических и сферических граней с сохранением корректной топологии.

Эти направления определяют дальнейший вектор развития геометрического ядра и отражают стремление удовлетворять современные требования пользователей.


Реклама. ООО «С3Д Лабс» ИНН 7715938849. erid: 2SDnje3vEMc


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

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