Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель:
ООО «С3Д Лабс»

ИНН 7715938849 ОГРН 1127747049209

4 - 2025

Опыт использования C3D Modeler для построения расчетных моделей

Олег Бутин,
ведущий математик-программист, НТЦ «АПМ»
Олег Бутин,
ведущий математик-программист, НТЦ «АПМ»

Ведущий математик-программист (НТЦ «АПМ») делится опытом использования геометрического ядра C3D Modeler при построении расчетных моделей специалистами научно-технического центра «АПМ» — ведущего российского разработчика и поставщика ПО для инженерных расчетов, а также партнера компании АСКОН по консорциуму «РазвИТие».

Компания НТЦ «АПМ» более 30 лет присутствует на рынке и специализируется на разработке CAE-систем для строительства, машиностроения, приборостроения и смежных областей. Центр осуществляет полный цикл работы с моделями — от создания до анализа, а также выполняет расчеты на заказ. Линейка продуктов компании «АПМ» состоит из APM WinMachine (CAE-система автоматизированного расчета и проектирования механического оборудования и конструкций), APM FEM (плагин, встраиваемый в КОМПАС-3D для выполнения пространственного анализа) и APM Civil Engineering (предназначен для создания моделей конструкций, выполнения необходимых расчетов и визуализации полученных результатов преимущественно в строительной отрасли) — рис. 1.

Рис. 1

Рис. 1

Примеры, о которых пойдет речь, получены в процессе эксплуатации продукта, который называется APM Studio и входит в пакет APM WinMachine.

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

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

На рис. 2 показано, к чему может привести такой подход. Его итогом стала сетка с некими странными артефактами, которые можно наблюдать на рис. 2 слева. При тщательном рассмотрении становится видно, что у модели каким-то образом появилось короткое ребро, которое стало причиной неутешительного исхода. Как раз в этом случае мы и обращаемся к ядру C3D Modeler, а именно к функции EdgeModifiedSolid. С учетом простоты топологии модели функция успешно справляется с поставленной задачей, и на рис. 2 справа видно, что артефакт исчез, а сетка стала более равномерной.

Рис. 2

Рис. 2

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

Рис. 3

Рис. 3

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

Рис. 4

Рис. 4

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

Рис. 5

Рис. 5

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

Рис. 6

Рис. 6

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

Рис. 7

Рис. 7

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

Рис. 8

Рис. 8

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

Полезной для нас оказалась и функция MassInertiaProperties (рис. 9). Часто поведение какой-то конкретной части модели не важно для анализа модели в целом. Не требуется переводить ее в расчетную модель, аппроксимировать конечными элементами — достаточно просто учесть ее как некое абсолютно твердое тело или даже точечную массу. В этом случае у нас есть возможность указать ядру получение для такой детали ее массо-инерционных характеристик, после чего мы ее просто учитываем. Не строим для нее сетку, а лишь учитываем ее в нашей расчетной модели как некие граничные условия. Это помогает в работе.

Рис. 9

Рис. 9

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

Рис. 10

Рис. 10

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

Рис. 11

Рис. 11

Оценим результат. В первом случае мы получаем цилиндр и шайбу. Во втором — цилиндр и втулку (рис. 12). Оба варианта нас устраивают, модель фундаментально «упрощена». Мы представили ее в виде двух частей, с которыми в дальнейшем можно работать независимо.

Рис. 12

Рис. 12

Следуем хронологическому порядку: мы построили модель, удалили артефакты, «упростили» ее, дальше мы начинаем непосредственно построение сеток (рис. 13). Для этого мы аппроксимируем кривые модели их конечным элементом представления — ломаными, затем — поверхности, после строим сетку в объеме. Нами востребован если не полный набор функций, которые даются ядром для работы с кривыми и поверхностями, то большая их часть. Это необходимо и для определения параметров кривых и, в частности, поверхностей.

Рис. 13

Рис. 13

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

Рис. 14

Рис. 14

Распространенная проблема — возникновение различных артефактов (рис. 15-17). Обычно это касается моделей, импортированных из других CAD-систем, в которых присутствуют разные артефакты геометрии, такие как самопересечения ребер, нестыковки ребер, частично или полностью вырожденные контуры на ребрах. Это приводит к тому, что грань может содержать щепкоподобные части — большая часть грани должна быть учтена при построении сетки, а некоторые части вырождаются в линию. Случается, что грань вырождается в линию целиком.

Рис. 15

Рис. 15

Рис. 16

Рис. 16

Рис. 17

Рис. 17

Еще одна распространенная ситуация — пересечения кривых контура (либо в месте гладкой стыковки, либо в месте стыковки под углом) — рис. 18 и 19.

Рис. 18

Рис. 18

Рис. 19

Рис. 19

Нередко приходится сталкиваться с макроскопическими пересечениями в рамках всего контура (рис. 20). Растет потребность в функционале, который позволяет выявлять такие артефакты, подсвечивать их и в дальнейшем «лечить». За «лечение» может отвечать ядро или конвертер, но эти процессы скрыты от построителей расчетной модели. Надеемся, что вместе с развитием функциональности ядра мы также будем двигаться в этом направлении.

Рис. 20

Рис. 20

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

Рис. 21

Рис. 21

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

Рис. 22

Рис. 22

На рис. 23 продемонстрированы острые углы в модели, которые также хотелось бы «лечить» заменой нескольких граней на одну.

Рис. 23

Рис. 23

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

Рис. 24

Рис. 24

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

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

Автоматизация при преобразовании тонких деталей в оболочке означает потребность если не в автоматическом, то в полуавтоматическом распознавании. Эта опция востребована, когда часть модели нужно оставить в виде солидов, а часть — представить в виде пластин. Причем при разрезании необходимо сохранять топологическую связь между исходным солидом и подсолидами, полученными при разрезании. Сейчас мы опираемся на инструмент MbName, но возникают ситуации, когда проследить цепочку соответствия исходной детали и получившихся из нее деталей не представляется возможным. Специалистами C3D Labs уже ведется работа в этом направлении, и мы благодарим разработчиков за то, что они прислушиваются к нашим просьбам и делают ядро всё лучше и лучше. 



Регистрация | Войти

Мы в телеграм:

Рекламодатель:
ООО «Нанософт разработка»

ИНН 7751031421 ОГРН 5167746333838

Рекламодатель: ООО «ПЛМ Урал»

ИНН 6658305757 ОГРН 1086658008975

Рекламодатель: АО «Топ Системы»

ИНН 7726601967 ОГРН 1087746953557

Рекламодатель: ООО «КЭЛС-центр»

ИНН 7707548179 ОГРН 1057746796436