Справочная документация по модулю MESH программы Salome.

advertisement
Справочная документация
по модулю MESH
программы Salome.
143000, г. Одинцово
Московская область
Можайское шоссе, 71, офис 3
445037, г. Тольятти
Самарская область
ул.Фрунзе, д14-Б, офис 421
http://www.laduga.ru
E-mail:laduga@laduga.com
Тел.: 8 (495) 991-88-97
8 (8482) 51-09-84
Факс: 8 (8482) 51-09-84
Введение в MESH .....................................................................................................................7
Выполнение модуля MESH ......................................................................................................9
Введение в интерфейс Python модуля MESH .......................................................................10
Пример создания 3D сетки с NETGEN: .............................................................................10
Создание сеток .......................................................................................................................12
О сетках ...............................................................................................................................12
Подключения.......................................................................................................................13
Обратные подключения ......................................................................................................13
Прямые подключения .........................................................................................................13
Импортирование и экспорт сеток.......................................................................................14
Построение сеток ................................................................................................................15
Определение Алгоритмов...................................................................................................21
Основные алгоритмы мешинга.......................................................................................21
Алгоритмы Проектирования...........................................................................................23
Радиальная Призма .........................................................................................................26
Сегменты вокруг Вершины ............................................................................................27
Трехмерный алгоритм мешинга Выдавливания ............................................................27
Определение гипотез. .........................................................................................................29
О Гипотезах .....................................................................................................................29
Гипотезы 1D мешинга.....................................................................................................30
Арифметика 1D гипотеза....................................................................................................30
Отклонение 1D гипотеза.....................................................................................................31
Гипотеза Средней Длины ...................................................................................................31
Гипотеза Числа сегментов ..................................................................................................33
Гипотеза Начальной и Конечной Длины ...........................................................................36
Автоматическая Длина .......................................................................................................37
Гипотезы 2D Мешинга....................................................................................................38
Максимальная площадь элемента ......................................................................................38
Длина от Ребер ....................................................................................................................39
Предпочтение Четырехугольника ......................................................................................39
Предпочтение Треугольника ..............................................................................................39
Гипотеза максимальный объем элемента.......................................................................40
Netgen 2-ые и трехмерные гипотезы ..............................................................................40
Параметры гипотезы GHS3D..........................................................................................43
Параметры гипотезы BLSURF........................................................................................45
Дополнительные Гипотезы.............................................................................................49
Гипотеза разрешить не соответсвующий мешинг .............................................................49
Квадратичная Сетка ............................................................................................................50
Распространение 1D Гипотез на противоположных ребрах .............................................50
Конструирование подсетки.................................................................................................51
Создание Составных структур ...........................................................................................53
Редактирование Сеток ........................................................................................................55
Рассмотрение сеток................................................................................................................57
Краткий обзор .....................................................................................................................57
Информация о сетке............................................................................................................59
Стандартная информация о сетке.......................................................................................59
Расширенная информация о сетке......................................................................................60
Информация Элемента Сетки.............................................................................................62
Нумерация ...........................................................................................................................63
Отображение номеров узлов..............................................................................................63
Отображение номеров элементов.......................................................................................63
Режим визуального отображения.......................................................................................65
2
Объект Отображения ..........................................................................................................67
Прозрачность.......................................................................................................................68
Отсечение ............................................................................................................................69
Контроль качества ..................................................................................................................71
О контроле качества............................................................................................................71
Свободные границы ............................................................................................................72
Границы на мультиподключении.......................................................................................72
Длина ...................................................................................................................................73
Свободные ребра.................................................................................................................73
Длина 2D .............................................................................................................................74
Границы на мультиподключении 2D .................................................................................75
Область ................................................................................................................................76
Сужение...............................................................................................................................77
Аспект..................................................................................................................................78
Минимальный угол .............................................................................................................80
Деформирование .................................................................................................................81
Перекос................................................................................................................................83
Аспект 3D ...........................................................................................................................84
Объем...................................................................................................................................86
Группирование элементов......................................................................................................88
Создание групп ...................................................................................................................88
Автономная Группа ............................................................................................................88
Группа на Геометрии ..........................................................................................................90
Редактирование группы ......................................................................................................92
Используемые операции на группах ..................................................................................94
Объединение двух групп ....................................................................................................95
Пересечение двух групп .....................................................................................................96
Вырезка двух групп.............................................................................................................97
Создание групп определенных элементов .........................................................................99
Удаление Группы ................................................................................................................99
Изменение сеток ...................................................................................................................100
Добавление узлов и элементов .........................................................................................100
Добавление узлов..............................................................................................................101
Добавление ребер..............................................................................................................102
Добавление треугольников...............................................................................................103
Добавление четырехугольников.......................................................................................104
Добавление полигонов......................................................................................................105
Добавление четырёхгранников.........................................................................................106
Добавление шестигранников............................................................................................106
Добавление многогранников ............................................................................................107
Добавление Квадратичных Элементов ............................................................................109
Удаление узлов и элементов.............................................................................................111
Удаление узлов..................................................................................................................111
Удаление элементов..........................................................................................................112
Удаление Данных Сетки...................................................................................................113
Изменение нумерации узлов и элементов........................................................................115
Изменение нумерации узлов ............................................................................................115
Изменение нумерации элементов.....................................................................................115
Преобразование сеток.......................................................................................................117
Перенос..........................................................................................................................117
Вращение.......................................................................................................................119
3
Симметрия.....................................................................................................................121
Сшивание Сетки............................................................................................................124
Сшивание свободных границ ...........................................................................................124
Сшивание приспособленных свободных границ.............................................................126
Сшивание границу к поверхности....................................................................................128
Сшивание побочных элементов .......................................................................................130
Объединение узлов........................................................................................................132
Объединение Элементов...............................................................................................135
Перемещение узлов...........................................................................................................137
Сетка через точку..............................................................................................................138
Диагональная инверсия элементов...................................................................................139
Объединение двух треугольников....................................................................................141
Объединение ряда треугольников ....................................................................................142
Изменение ориентации элементов ...................................................................................145
Вырезка четырехугольников ............................................................................................146
Сглаживание......................................................................................................................149
Выдавливание....................................................................................................................152
Выдавливание вдоль пути.................................................................................................154
Выдавливание вдоль прямой грани..................................................................................154
Выдавливание вдоль криволинейной грани.....................................................................156
Выдавливание вдоль подсетки .........................................................................................157
Выдавливание 2D элементов вдоль подсетки..................................................................158
Выдавливание 2D элементов вдоль закрытого пути .......................................................159
Вращение...........................................................................................................................164
Отображение шаблона ......................................................................................................166
О шаблонах........................................................................................................................166
Приложение отображения шаблона .................................................................................167
Алгоритм Отображения....................................................................................................171
Конвертирование в/из Квадратичной Сетки....................................................................173
Сценарии TUI ........................................................................................................................175
Создание Сеток .................................................................................................................175
Создание Сетки .................................................................................................................175
Создание Подсетки ...........................................................................................................175
Редактирование сетки .......................................................................................................176
Экспорт Сетки...................................................................................................................177
Как мешинговать цилиндр с шестигранниками?.............................................................177
Создание составной структуры сеток ..............................................................................180
Рассмотрение Сеток..........................................................................................................182
Рассмотрение информации о Сетке..................................................................................182
Определение Гипотез и Алгоритмов................................................................................183
Определение 1D Гипотезы................................................................................................183
1D Арифметика .............................................................................................................183
Отклонение 1D и Число Сегментов..............................................................................183
Начальная и Конечная Длина .......................................................................................184
Средняя Длина...............................................................................................................185
Определение 2D и трехмерных гипотез...........................................................................185
Максимальная площадь элемента ................................................................................185
Максимальный Объем Элемента..................................................................................186
Длина от Ребер ..............................................................................................................187
Определение Дополнительных Гипотез...........................................................................187
Распространение............................................................................................................187
4
Определение Алгоритмов мешинга .................................................................................188
Контроль качества.............................................................................................................189
Свободные Границы .........................................................................................................189
Границы на Мультиподключении ....................................................................................190
Длина 1D ...........................................................................................................................190
Свободные Ребра...............................................................................................................191
2D длина ............................................................................................................................192
Границы на Мультиподключении 2D ..............................................................................193
Область ..............................................................................................................................194
Сужение.............................................................................................................................194
Аспект................................................................................................................................195
Минимальный угол ...........................................................................................................195
Деформирование ...............................................................................................................196
Перекос..............................................................................................................................196
Аспект 3D ..........................................................................................................................197
Объем.................................................................................................................................197
Группирование Элементов ...............................................................................................198
Создайте Автономную Группу.........................................................................................198
Создайте Группу на Геометрии........................................................................................199
Редактирование Группы ..................................................................................................200
Объединение двух групп ..................................................................................................201
Пересечение двух групп ...................................................................................................204
Вырезка двух групп...........................................................................................................206
Изменение Сеток...............................................................................................................208
Добавление Узлов и Элементов .......................................................................................208
Добавьте Узел................................................................................................................208
Добавьте Ребро..............................................................................................................209
Добавьте Треугольник ..................................................................................................209
Добавьте Четырехугольник ..........................................................................................209
Добавьте Четырёхгранник ............................................................................................209
Добавьте Шестигранник ...............................................................................................210
Добавьте Полигон .........................................................................................................210
Добавьте Многогранник ...............................................................................................211
Удаление Узлов и Элементов...........................................................................................212
Удаление Узлов.............................................................................................................212
Удаление Элементов .....................................................................................................212
Изменение нумерации Узлов и Элементов......................................................................212
Перемещение Узлов..........................................................................................................212
Точка смещения сетки ......................................................................................................213
Диагональная Инверсия....................................................................................................213
Объединение двух Треугольников ...................................................................................214
Объединение ряда Треугольников ...................................................................................215
Ориентация........................................................................................................................216
Вырезка Четырехугольников............................................................................................216
Сглаживание......................................................................................................................216
Выдавливание....................................................................................................................217
Выдавливание вдоль Пути................................................................................................218
Вращение...........................................................................................................................220
Отображение Шаблона .....................................................................................................220
Преобразование Сеток ......................................................................................................221
Преобразование Сеток ......................................................................................................222
5
Перенос..........................................................................................................................222
Вращение.......................................................................................................................222
Симметрия.....................................................................................................................222
Объединение Узлов.......................................................................................................222
Объединение Элементов...............................................................................................223
Сшивание Сеток................................................................................................................224
Сшейте Границу Сеток к Стороне................................................................................224
Сшивание Приспособленные Свободные Границы.....................................................225
Сшейте Свободные Границы........................................................................................225
Сшейте Побочные Элементы........................................................................................226
6
Введение в MESH
Модуль MESH SALOME предназначен для:





импорта и экспорта сеток в формате MED,
сцепление геометрические модели, ранее созданные или импортированные
компонентом ГЕОМЕТРИИ. модуль MESH позволяет применяться 1D, 2D, 3D
сцепляющие алгоритмы и ряд гипотез:
o Арифметика 1D (Arithmetic 1D)
o Средняя Длина (Average Length)
o Отклонение 1D (Deflection 1D)
o Число сегментов (Number of segments)
o Начальная и конечная длина (Start and end length)
o Автоматическая Длина (Automatic Length)
o Максимальная площадь элемента (Max Element Area)
o Длина от ребер (Length from Edges)
o Предпочтение Четырехугольника (Quadrangle Preference)
o Предпочтение Треугольника (Triangle Preference)
o Максимальный объем элемента (Max Element Volume)
модификация в местном масштабе сгенерированных сеток
o Суммирование узлов и элементов (Addition of nodes and elements)
o Удаление узлов и элементов (Removal of nodes and elements)
группирование элементов mesh и выполнение операции на этих группах
контроль качества сеток, базирующихся на ряде определенных критериев для граней:
o
o
o
Длина ребер (Length of edges)
Границы на мультиподключении (Borders at multi-connection)
Свободные границы (Free borders)
для поверхностей:
o
o
o
o
o
o
o
o
o
Область (Area)
Свободные ребра (Free edges)
Границы на 2D мультиподключении (Borders at multi-connection 2D)
2D длина (Length 2D)
Минимальный угол (Minimum angle)
Сужение (Taper)
Аспект (Aspect Ratio)
Деформирование (Warping)
Перекос (Skew)
для тел:
o
o
Аспект 3D (Aspect ratio 3D)
Объем (Volume)
7
8
Выполнение модуля MESH
Чтобы запустить модуль MESH в SALOME щелкните на значке "Mesh" в
инструментальной панели "Modules" или выбирают Mesh в блоке Выбрать.
Иконка "Mesh"
Рабочий стол платформы SALOME будет обновлен с дополнительными
инструментальными панелями и меню, связанными с компонентом MESH.
9
Введение в интерфейс Python модуля MESH
Пакет smesh обеспечивает стандартный API для создания и выпуска сеток.
Ниже Вы можете видеть пример использования пакета smesh для 3-ьего поколения mesh.
Пример создания 3D сетки с NETGEN:
from geompy import *
import smesh
# Геометрия
# перенос блока, цилиндра и усеченного конуса мешингованных с
четырёхгранником.
# Определите значения
name = "ex21_lamp"
cote = 60
section = 20
size = 200
radius_1 = 80
radius_2 = 40
height = 100
# Встройте блок
box = MakeBox(-cote, -cote, -cote, +cote, +cote, +cote)
# Встройте цилиндр
pt1 = MakeVertex(0, 0, cote/3)
di1 = MakeVectorDXDYDZ(0, 0, 1)
cyl = MakeCylinder(pt1, di1, section, size)
# Встройте усеченный конус
pt2 = MakeVertex(0, 0, size)
cone = MakeCone(pt2, di1, radius_1, radius_2, height)
# Объединение
box_cyl = MakeFuse(box, cyl)
piece = MakeFuse(box_cyl, cone)
# Добавьте в исследовании
addToStudy(piece, name)
# Создайте группу поверхностей
group = CreateGroup(piece, ShapeType["FACE"])
group_name = name + "_grp"
10
addToStudy(group, group_name)
group.SetName(group_name)
# Добавьте поверхности в группе
faces = SubShapeAllIDs(piece, ShapeType["FACE"])
UnionIDs(group, faces)
# Создайте mesh
# Определите mesh на геометрии
tetra = smesh.Mesh(piece, name)
# Определите 1D гипотеза
algo1d = tetra.Segment()
algo1d.LocalLength(10)
# Определите 2D гипотезу
algo2d = tetra.Triangle()
algo2d.LengthFromEdges()
# Определите трехмерную гипотезу
algo3d = tetra.Tetrahedron(smesh.NETGEN)
algo3d.MaxElementVolume(100)
# Вычислите mesh
tetra.Compute()
# Создайте группу поверхностей
tetra.Group(group)
11
Создание сеток
О сетках
MESH представляет дискретизацию геометрической модели CAD в ряд объектов с
простой топологией. В MESH есть две опции создания сеток, Вы можете:


генерируйте сетки на основе геометрических форм, произведенных в модуле
ГЕОМЕТРИИ,
создайте свои собственные сетки, используя функции MESH, предназначенные для
модификации сгенерированных сеток.
Топология mesh описана отношениями между его объектами, включая:




Узел(Node)— 0D объект mesh, представленного точкой с координатами (x, y, z).
Грань(Edge) — 1D элемент mesh определена двумя узлами.
Поверхность(Face) — 2D элемент mesh, определенный тремя или четырьмя
ребрами (закрытый контур).
Объем(Volume) — трехмерный элемент mesh определен несколькими
поверхностями.
Эти объекты рассматривают как топологические объекты, и они не подразумевают
геометрического представления. Только Узлы ссылаются на геометрические
представления точек с определенными координатами. Объект узла будет содержать
дополнительную информацию о ее позиции в месте и ее отношениях с решетчатой
моделью CAD. Его позиция могла быть описана следующим образом:





2D позиция. Это - свободная позиция, определенная только двумя координатами x,
y.
Трехмерная позиция. Это - свободная позиция, определенная тремя координатами
x, y и z.
Поверхностная позиция. Это характеризует позицию узла на геометрической
поверхности и определена u, v позиция в параметрическом месте соответствующей
поверхности.
Позиция линии. Это характеризует позицию узла на геометрической кривой и
определено u параметром и соответствующей кривой.
Позиция вершины. Это характеризует позицию узла на геометрической точке
решетчатой модели CAD и определено x, y, z координаты соответствующей
вершины.
12
Подключения
Каждый объект mesh ограничивает 0 или больше объектов mesh более высокой
размерности. Таким же образом каждый объект mesh ограничен 0 или больше объектами
mesh более низкой размерности:






Узел ограничивает ребра, поверхности и Объемы
Ребро ограничивает поверхности и Объемы
Поверхность ограничивает Объемы
Объем ограничен поверхностями, ребрами и узлами
Поверхность ограничена ребрами и узлами
Ребро ограничена узлами
Вы можете обратить внимание, что есть два типа подключений: обратные(inverse) и
прямые(direct) подключения.
Обратные подключения
У этих отношений есть особенность, что у порядка ограниченных объектов нет прямого
значения. Также число ограниченных объектов не установлено.
Пример: ребра, окружающие узел. У 3D грани нет никакого большего количества смысла
чем 5D.
Прямые подключения
У этих отношений есть особенность, что порядок ограничения объектов значим. Число
ограничения объектов установлено и зависит от типа объекта (шестигранник,
четырёхгранник, ?).
Пример: ребро составлено из двух узлов. Поверхность составлена из 3 или 4 ребер,
зависящих, если мы имеем дело с треугольниками или четырехугольниками.
Подключения не только ограничены объектам одной размерности выше или ниже.
Например некоторым алгоритмам необходимо, чтобы отыскать все поверхности,
окружающие узел.
13
Импортирование и экспорт сеток
В MESH есть функциональные возможности, позволяющие импорт/экспортирование
сеток от MED, UNV (I - DEAS 10), файлы формата (Nastran) и STL формат файлов.
Чтобы импортировать mesh:
1. В меню Файл выбирают элемент Импорт, в подменю выбирают соответствующий
формат (MED, UNV и DAT) файла, содержащего Ваш mesh.
2. В стандартном диалоговом окне поиска находит файл для импорта.
3. Щелкните на кнопку OK.
Чтобы экспортировать mesh:
1. Выберите объект, который Вы желаете экспортировать.
2. В меню Файл выбирает Экспорт в подменю выбирают формат (MED, UNV, DAT
и STL) файла, который будет содержать Ваш экспортируемый mesh.
3. В стандартном диалоговом окне поиска выбирают местоположение для
экспортируемого файла и вводят его имя.
4. Щелкните на кнопку OK.
14
См. Также типовой Сценарий TUI.
Построение сеток
Построение mesh состоит из:


Выбор геометрический объект для того, чтобы сцепиться
Применение алгоритмов мешинга и гипотез, которые будут использоваться при
вычислении этого mesh.
Чтобы создать mesh:
1. В меню Mesh выбирает Создать Mesh или щелкните на кнопкe "Создать Mesh" в
инструментальной панели.
Кнопка "Создать Mesh"
Следующее диалоговое окно появится:
15
2. Например, Вы нуждаетесь в мешинге 3D объекта.
Во-первых, напечатайте название для Вашего mesh в блоке "Имя", по умолчанию,
это - "Mesh_1". Тогда выберите объект, который Вы желаете мешинговать в
Объектном Браузере и щелкните на кнопкой "Добавить".
Кнопка "Добавить"
Теперь Вы можете определить 1d Алгоритм и 1d Гипотезы, которые будут
применены к ребрам Вашего объекта. (Отметьте, что у любого объекта есть ребра,
даже если их существование не очевидно, например, у сферы есть 4 ребра).
Щелкните на, "Добавьте Гипотезу"( Add Hypothesis) , чтобы добавить гипотезу.
Кнопка "Добавьте Гипотезу"
Щелкните на "Редактировать гипотезу"( Edit Hypothesis), чтобы определить
значения для текущей гипотезы.
Кнопка "Редактировать гипотезу"
Использование дополнительных гипотез является необязательным (то есть Вы не
можете оставить "Ни один" в этом блоке).
Продолжите таким же образом с 2D и 3D Алгоритмами и Гипотезами, отметьте,
что выбор гипотез зависит от алгоритма. Должен быть один Алгоритм и одна или
несколько Гипотез для каждой размерности Вашего объекта, иначе Вы не будете
получать сетки вообще. Конечно, если Вы желаете мешинговать поверхность,
16
которая является 2D объектом, Вы не должны определять 3D Алгоритм и
Гипотезы.
В Объектном Браузере структура новой сетки будет отображена следующим
образом:
Она содержит:
справочная информация на геометрический объект, на основе которого была
создана сетка;
o Прикладные гипотезы(Applied hypotheses), содержащая справочную
информацию на гипотезы, относящаяся к конструкции сетки;
o Прикладные алгоритмов(Applied algorithms), содержащая справочную
информацию на алгоритмы, относящиеся к конструкции сетки.
o
Есть альтернативный способ создать сетку на объекте просто щелкнуть Назначить
ряд гипотез и выбрать между Автоматическим Tetrahedralization или
Hexahedralization. Программа автоматически генерирует трехмерную сетку с
самыми соответствующими параметрами настройки. Таким же образом Вы можете
просить эти функциональные возможности о том, что они мешинговали 2D
объекты, когда трехмерные алгоритмы не применены.
3. Теперь, когда все готово, выберите свою сетку в Объектном Браузере. В меню
Mesh выбирает Вычислить или щелкните на кнопкой " Вычислить "
инструментальной панели.
Вычислить
Появится информационный блок Вычисления Сетки.
17
Если вычисление сетки терпело неудачу, информация о причине отказа
предоставится.
18
После того, как Вы выбираете ошибку, кнопка Показать Подформу(Show
Subshape) позволяет визуализировать геометрический объект, который вызывал её.
Кнопка Прописать подформу, прописывает подформу, сцепление которой
gjтерпело неудачу, в компоненте ГЕОМЕТРИИ как дочернюю геометрию сетки,
которая позволяет анализировать геометрию проблемы и создавать подсетку на
этом, чтобы в местном масштабе настроить гипотезы.
ОТМЕТЬТЕ, что возможно определить 1D или 2D сетка в сценарии Python и
затем использовать такие подсетки в конструкции трехмерной сетки. Для этого,
там существуйте два алгоритма: Использование, существующих ребер(Use
existing edges) и Использование, существующих поверхностей(Use existing
faces). Они не полностью пригодны для использования в ГИП, таким образом сетка
19
создала использование этих алгоритмов, должен быть экспортирован в сценарий
Python, редактировав и затем импортирован в ГИП.
Рассмотрите попытку типового сценария для конструкции сетки в разделе
Сценариев TUI.
20
Определение Алгоритмов.
Основные алгоритмы мешинга
Модуль MESH содержит ряд алгоритмов мешинга, которые используются для того, чтобы
поймать в сети объекты (1D, 2-ой, трехмерный) созданиz геометрических объектов.



Для того, чтобы мешинговать 1D объекты (ребра):
o Алгоритм мешинга дискретизации соединительной линии(Wire
Discretisation meshing algorithm) - разбивает соединительную линию на
многие сегменты сетки после любой 1D гипотезы.
o Составной Побочный алгоритм дискретизации(Composite Side Discretisation
algorithm) - позволяет применять любую 1D гипотезу к целой стороне
геометрической поверхности, даже если это составлено из нескольких
граней при условии, что они формируют кривую C1, назначали те же самые
гипотезы и формируют одну сторону во всех поверхностях главной формы
сетки.
Для того, чтобы мешинговать 2D объектs (поверхности):
o Алгоритмы мешинга треугольника(Triangle meshing algorithms) (Mefisto,
Netgen 1D-2D и BLSUFR) - Поверхности разбиты на треугольные элементы.
o Алгоритм мешинга четырехугольника(Quadrangle meshing algorithm)
(Отображение) - Поверхности разбиты на четырехугольные элементы.
Для того, чтобы мешинговать трехмерные объекты (объекты Объема):
o Алгоритм мешинга шестигранника (i, j, k) - Объемы разбивают на
шестигранные (кубические) элементы.
o Четырёхгранник (Netgen и GHS3D) алгоритмы мешинга - Объемы разбит на
четырёхгранные (пирамидальные) элементы.
21
Отметьте, что BLSURF и GHS3D - коммерческие mesh’еры.
См. Также типовой Сценарий TUI.
22
Алгоритмы Проектирования
Алгоритмы проектирования позволяют определять сетку геометрического объекта
проектированием другого, уже мешингованного геометрического объекта.
Проектировочный 1D алгоритм разрешает определять сетку ребра (или группа ребер)
проектированием другого уже мешингованного ребра (или группа ребер).
Чтобы применить этот алгоритм выберите ребро, которая будет
мешинговано(обозначенный в поле Геометрия в диалоговом окне Создать сетки),
Проектирование 1D в списке 1D алгоритмы, и щелкните на кнопку "Добавьте
Гипотеза". Следующее диалоговое окно появится:
В этом меню Вы можете определить Название алгоритма, уже мешингованную исходное
Ребро и Сетку (дополнительно, используйте это, если есть несколько различных сеток на
той же самой ребра). Это могло также быть необходимо, чтобы определить ориентацию
ребер, которая сделана, указывая Исходную Вершину(Target Vertex), являющуюся
первой точкой Исходного Ребра и Целевой Вершины, являющейся первой точкой
созданной Ребра. Для группы ребер Исходная и Целевая вершина должны быть
разделены только одним ребром группы. Если Исходный(Source) и Целевые(Target)
векторы определены, элементы группы должны быть ajacent.
Проектировочный 2D алгоритм разрешает определять сетку поверхности (или группа
поверхностей) проектированием другой уже мешингованной поверхности (или группа
поверхностей). Этот алгоритм работает, только если все грани целевой поверхности были
мешингованы как 1D Проектирования граней исходной поверхности.
Чтобы применить этот алгоритм выбирают поверхность, которая будет мешингована
(обозначенный в поле Геометрия в диалоговом окне Создать сетку), Проектирование 2D
в списке 2D алгоритмов, и щелкните на "Добавbnm Гипотезe". Следующее диалоговое
окно появится:
23
В этом меню Вы можете определить Название алгоритма, уже мешингованную исходную
Поверхность и Сетку (дополнительно используйте это, если есть несколько различных
сеток на той же самой поверхности). Это могло также быть необходимо, чтобы
определить ориентацию сетки на поверхности, которая сделана, указывая две Исходных
Вершины, которые принадлежат той же самой грани исходной поверхности, и двум
Целевым Вершинам, которые принадлежат той же самой грани созданной Поверхности.
Проектировочный трехмерный алгоритм разрешает определять сетку формы
проектированием другой уже мешингованой формы. Этот алгоритм работает, только если
все поверхности и ребра целевой поверхности были мешингованы как 1D Проектирования
поверхностей и ребро исходной поверхности. Другое ограничение - то, что этот алгоритм
в настоящее время воздействует только на поля.
Чтобы применить этот алгоритм выбирают тело, которое будет мешинговано
(обозначенный в поле Геометрия в диалоговом окне Создать сетки), Проектирование3D
в списке трехмерных алгоритмов, и щелкните на кнопку "Добавьте Гипотеза".
Следующее диалоговое окно появится
24
В этом меню Вы можете определить Название алгоритма, уже мешингованную
трехмерную форму и Сетку (дополнительно используйте это, если есть несколько
различных сеток на той же самой форме). Это могло также быть необходимо, чтобы
определить ориентацию сетки на форме, которая сделана, указывая две Исходных
Вершины, которые принадлежат той же самой грани источника трехмерная Форма, и
две Целевых Вершины, которые принадлежат той же самой грани источника
трехмерная Форма.
25
Радиальная Призма
Этот алгоритм относится к мешингованию из полой трехмерной формы, то есть такая
форма должна быть составлена из двух решетчатых оболочек: внешняя оболочка и
внутренняя оболочка без пересечения с внешней оболочкой. Одна из оболочек должна
быть 2D Проектированием другой оболочки. Сетки оболочек могут состоять оба из
треугольников и четырехугольников.
Радиальный алгоритм Призмы заполнил бы место между двумя оболочками с сетками.
Этот алгоритм также нуждается в информации относительно числа и распределения
уровней сетки между внутренним и внешними формами.
Распределение уровней может быть установлен с любым из 1D Гипотезы.
26
Сегменты вокруг Вершины
Алгоритм Сегменты вокруг Вершины(Segments around Vertex), как полагают,
являются 0D алгоритмом мешинга, но, конечно, он не мешингует узлы. Это позволяет
определять местный размер элементов в сетевом окружении определенного узла. Если мы
выбираем объект более высокой размерности, это применяет ко всем свои верхние части,
то есть углы блока. 0D алгоритм объединяется с алгоритмами более высоких
размерностей, но он не обязательно требуется для их успешной реализации.
Этот алгоритм разрешает только одну гипотезу.
Трехмерный алгоритм мешинга Выдавливания
Трехмерный алгоритм выдавливания(3D extrusion meshing algorithm) может
использоваться для того, чтобы мешинговать призмы, то есть трехмерные Формы,
определенные двумя противостоящими поверхностями, имеющими то же самое число
вершины и ребер, и мешингованы используя 2D алгоритма Проектирования. Эти две
поверхности должны быть связаны поверхностями "сторонами" четырехугольника.
Противостоящие поверхности могут быть мешингованы или с четырехугольниками или с
треугольниками, в то время как побочные поверхности должны быть мешингованы с
четырехугольниками только.
27
Поскольку Вы можете видеть, трехмерный алгоритм выдавливания разрешает
встраивать и иметь в той же самой трехмерной сетке такие элементы как шестигранники,
призмы и многогранники.
28
Определение гипотез.
О Гипотезах
Гипотезы(Hypotheses) представляют граничные условия, которые будут приняты во
внимание при вычислениях сеток или подсеток, базирующихся на геометрических
объектах. Эти гипотезы позволяют Вам управлять уровнем детали получающихся сеток
или подсеток: применяя различные гипотезы с различными параметрами Вы можете
предварительно установить количество элементов мешинга, которые составят Вашу сетку.
Так, это будет возможно, чтобы генерировать грубое или более усовершенствованную
сетку или подсетку.
В MESH есть следующие Основные Гипотезы (чтобы представить их, Вы управляете
числовыми значениями):



1D Гипотезы (для сцепления ребер):
o Арифметика 1D (Arithmetic 1D)
o Средняя Длина (Average Length)
o Отклонение 1D (Deflection 1D)
o Число сегментов (Number of segments)
o Начальная и конечная длина (Start and end length)
o Автоматическая Длина (Automatic Length)
2D Гипотезы (для мешингования поверхностей):
o Максимальная площадь элемента (Max Element Area)
o Длина от ребер (Length from Edges)
o Предпочтение Четырехугольника (Quadrangle Preference)
o Предпочтение Треугольника (Triangle Preference)
3D Гипотезs (для мешинга Объемов):
o Максимальный объем элемента (Max Element Volume)
Там также существуют некоторые Дополнительные Гипотезы:



Распространение 1D Гипотеза на противоположных гранях (Propagation of 1D
Hypothesis on opposite edges)
Разрешить несоответствующий мешинг (Non conform mesh allowed)
Квадратичная сетка(Quadratic mesh)
Выбор гипотезы зависит от:


геометрический объект (форма), которая будет мешингована
алгоритм, который будет выбран для мешинга этого геометрического объекта
(форма)
29
Гипотезы 1D мешинга
Арифметика 1D гипотеза
Арифметика 1D гипотеза позволяет разбивать ребра на сегменты с длиной, которая
изменяется в арифметической прогрессии (Lk = Lk-1 + d) начинающийся с данной
стартовой длины и до данной конечной длины.
См. Также типовой Сценарий TUI.
30
Отклонение 1D гипотеза
Отклонение 1D гипотеза может понадобиться для того, чтобы мешинговать
криволинейные ребра, составляющие Ваш геометрический объект. Это использует только
один параметр: значение отклонения.
Геометрически ребро разделено на равные сегменты. Максимальное расстояние между
точкой на ребре в пределах сегмента и линией, подключающей концы сегмента, не
должно превысить указанное значение отклонения. Тогда узлы сетки созданы в конечных
местоположениях сегмента и 1D элементы сетки созданы на сегментах.
См. Также типовой Сценарий TUI.
Гипотеза Средней Длины
Гипотеза Средней Длины может быть применена, чтобы мешинговать ребра,
составляющих Ваш геометрический объект. Определение этой гипотезы состоит из
установки длины сегментов, которые разобьют эти ребра, и точность округления. Точки
31
на ребрах, сгенерированных этими сегментами, представят узлы Вашей сетки. Позже эти
узлы будут использоваться, чтобы мешинговать поверхностей, примыкающих к этим
ребрам.
Параметр точности используется, чтобы позволить округлять многие сегменты,
вычисленные от длины ребра и средней длины сегмента, к более низкому целому числу,
если это значение выделяется от этого в границах точности. Иначе, число сегментов
округлено к более высокому целому числу. Значение использования 0.5, чтобы
обеспечить округление самому близкому целому числу, 1.0 для более низкого целого
числа, 0.0 для более высокого целого числа. Значение по умолчанию - 1e-07.
См. Также типовой Сценарий TUI.
32
Гипотеза Числа сегментов
Гипотеза Числа сегментов может быть применено, для мешинга ребер, составляющих
Ваш геометрический объект. Определение этой гипотезы состоит из определения числа
сегментов, которые разобьют эти ребра. Другими словами Ваши ребра будут разбиты на
определенное число сегментов с приблизительно той же самой длиной. Точки на ребрах,
сгенерированных этими сегментами, представят узлы Вашей сетки. Позже эти узлы будут
использоваться, для мешинга поверхностей, примыкающих к этим ребрам.
Вы можете установить тип разбиения для этой гипотезы в окне диалога
Конструирование Гипотезы(Hypothesis Construction):
Равноотстоящее Распределение(Equidistant Distribution) - у всех сегментов будет та же
самая длина, Вы определяете только Число Сегментов.
33
Масштаб распределения(Scale Distribution) - длина сегментов постепенно изменяется в
зависимости от Масштабного коэффициента, который является отношением первой
длины сегмента к последней длине сегмента.
Распределение с Плотностью Таблицы - Вы вводите многих пар t - F (t), где диапазоны
t от 0 до 1, и модуль вычисляют формулу, которая будет управлять изменением длины
сегментов и показывает кривой в графике. Вы можете выбрать режим
Преобразование(Conversion mode) от Экспоненты(Exponent) и Вырезки негатива(Cut
negative.).
34
Распределение с Аналитической Плотностью(Distribution with Analytic Density) - Вы
вводите формулу, которая будет управлять изменением длины сегментов, и модуль
показывает кривой в графике.
35
См. Также типовой Сценарий TUI.
Гипотеза Начальной и Конечной Длины
Гипотеза начальной и конечной длины позволяет делить ребро на сегменты так, чтобы
у первого и последних сегментов была указанная длина. Длина каждого следующего
сегмента отличается от длины предыдущего постоянным коэффициентом. Тогда узлы
сетки созданы в местоположении концов сегмента и 1D, элементы сетки созданы на них.
36
См. Также типовой Сценарий TUI.
Автоматическая Длина
Эта гипотеза автоматически применена, когда Вы выбираете Назначить ряд
гипотез(Assign a set of hypotheses) в меню Создать Меш(Create Mesh).
37
Диалоговое окно запрашивает Вас определить качество будущей сетки только одним
параметром, который является Тонкостью(Fineness), в пределах от 0 (грубая сетка,
низкий ряд элементов) к 1 (чрезвычайно прекрасная сетка, большой ряд элементов).
Сравните один и тот же объект (сфера), мешингованные с минимальным и максимальным
значением этого параметра.
Гипотезы 2D Мешинга
Максимальная площадь элемента
Гипотеза максимальная площадь элемента применяется для мешинга 2D поверхностей,
составляющих Ваш геометрический объект. Определение этой гипотезы состоит из
установки максимальной площади мешингующих элементов (в зависимости от
выбранного алгоритма мешинга, это могут быть треугольники или четырехугольники),
который составит сетку этих 2D поверхностей.
38
См. Также типовой Сценарий TUI.
Длина от Ребер
Гипотеза Длина от ребер встраивает 2D сегменты сетки, вычисляющие длину как
средняя длина грани для данной соединительной линии.
См. Также типовой Сценарий TUI.
Предпочтение Четырехугольника
Этот алгоритм может использоваться только вместе с Четырехугольнsv (Отображающим)
алгоритмом. Это позволяет встраивать четырехугольные сетки, даже если число узлов в
противоположных ребрах решетчатой поверхности не будет равно, иначе эта сетка будет
содержать некоторые треугольные элементы.
У этой гипотезы есть одно ограничение на его работу: полное количество сегментов на
всех четырех сторонах поверхности должно быть делимое на 2.
Предпочтение Треугольника
Этот алгоритм может использоваться только вместе с Четырехугольным (Отображающим)
алгоритмом. Это позволяет встраивать треугольные поверхности сетки в области
усовершенствования, если число узлов в противоположных ребрах решетчатой
39
поверхности не будет равно, иначе область усовершенствования будет содержать
некоторые четырехугольные элементы.
Гипотеза максимальный объем элемента
Гипотеза максимального элемента объема(Max Element Volume) применяется для
мешинга трехмерных объектов, составляющих Ваш геометрический объект. Определение
этой гипотезы состоит из регулирования максимального объема(maximum volume)
трехмерных элементов мешинга (в зависимости от выбранного алгоритма мешинга, это
могут быть шестигранники или четырёхгранники), который составит сетку этих
трехмерных объектов.
См. Также типовой Сценарий TUI.
Netgen 2-ые и трехмерные гипотезы
Netgen 2-ые и трехмерные гипотезы работают только с Netgen 1D-2D и Netgen 1D-2D-3D
алгоритмами. Эти алгоритмы не требуют определения гипотез низшего уровня и
алгоритмов (2D и 1D для мешинга трехмерных объектов, и 1D для мешинга 2D объектов).
Они, оказывается, полезны, если низшего уровня мешинг является гомогенным для всех
соединительных линий и поверхностей решетчатого объекта.
40








Название - позволяет определять название для алгоритма (2-ой Netgen (или
трехмерный) Параметры по умолчанию).
Макс Размер - максимальные линейные размерности для ячеек сетки.
Второй Порядок(Second Order) - если этот блок выбрана в алгоритм, создается
узлы второго порядка на сетке, которая фактически станет квадратичной.
Тонкость(Fineness) - в пределах от Очень Грубого к Очень Хорошему позволяет
устанавливать уровень детализации мешинга использование этих трех параметров
ниже. Вы можете выбрать Custom, чтобы определить их вручную.
Темп роста(Growth rate) - позволяет определять, насколько линейные
размерности двух смежных ячеек могут отличаться (то есть 0.3 средства 30 %).
Кол-во сегментов на ребрах(Nb. Segs per Edge) и Кол-во сегментов в
Радиусе(Nb Segs per Radius) - позволяет определять минимальное число
сегментов сетки, на которые будут разбиты ребра и радиусы.
Разрешить Четырехугольники - позволяют использовать элементы
четырехугольника в сетке треугольника 2D. Этот переключатель не присутствует в
трехмерных параметрах Netgen, потому что в настоящее время строить
четырёхгранную сетку с поверхностями четырехугольника не возможно.
Оптимизировать(Optimize) - если этот блок выбрана то алгоритм попытается
создать регулярный (обладающий даже сторонами) элементы.
41
Netgen 2D простые параметры(Netgen 2D simple parameters) и Netgen 3D простые
параметры позволяют определять размер элементов для каждой размерности. Отметьте,
что алгоритм Netgen строго не следует за входными параметрами. Фактическая сетка
может быть более или менее плотной чем необходимый.
1D группа позволяет определять размер 1D элементов любым из двух способов:


Число Сегментов(Number of Segments) имеет тот же самый смысл что и гипотеза
Число сегментов с равноотстоящим распределением.
У Средней Длины(Average Length) есть тот же самый смысл как и гипотезы
Средней Длины.
2D группа позволяет определять размер 2-ых элементов


Длина от ребер имеет тот же самый смысл что и гипотеза Длины от ребер
Максимальная Площадь Элемента определяет максимальную площадь элемента
как гипотеза максимальной площади элемента
3D группы позволяют определять размер трехмерных элементов.


Длина от поверхностей область сторон объемных элементов будет равна средней
области 2D элементов
Максимальный объем элемента определяет максимальный Объем элемента как
гипотеза Максимальный объем элемента.
42
Параметры гипотезы GHS3D
Параметры гипотезы GHS3D работает только с Четырёхгранником (GHS3D) алгоритм.
Этот алгоритм - коммерческое программное обеспечение.




Название - позволяет определять название гипотезы (Параметры GHS3D по
умолчанию).
Мешинговать отверстия(To mesh holes) - алгоритм создаст сетку в отверстиях в
твердой форме, еще только наиболее удаленная форма будет мешингована.
Объемные элементы, созданные в пределах отверстий, связаны к телу.
Уровень оптимизации(Optimization level) - позволяет выбирать необходимый
уровень оптимизации: ни один, легкий, средний или сильный. Более высокий
уровень оптимизации обеспечивает лучшую сетку, но может быть отнимающим
много времени.
Максимальный размер памяти(Maximum memory size) - запускает ghs3d
программное обеспечение с местом работы, ограниченным указанным количеством
43







оперативной памяти, в Мегабайтах. Если эта опция не выбрана, то программное
обеспечение будет запущено с 7O % полного места оперативной памяти.
Начальный размер памяти(Initial memory size) - запускает ghs3d программное
обеспечение с указанного места объема работы, в Мегабайтах. Если эта опция не
выбрана, то программное обеспечение будет начато с 100 мегабайтов рабочей
области.
Рабочий каталог(Working directory) - позволяет определять папку для файлов
ввода и вывода ghs3d программного обеспечения, которые являются файлами,
начинающимися с "GHS3D _".
Сохраните рабочие файлы(Keep working files) - позволяет проверять файлы
ввода и вывода ghs3d программного обеспечения, в то время как обычно эти файлы
удаляются после запускать mesher’a.
Подробный уровень(Verbose level) - чтобы выбрать уровень многословия в
диапазоне от 0 до 10.
o 0, нет стандартный вывод,
o 2, печатает данные, качественную статистику конечных сеток и указывает,
когда конечная сетка сохраняется. Кроме того программное обеспечение
дает индикацию относительно процессорного времени.
o 10, то же самое как 2 плюс главные шаги в вычисление, качественную
гистограмму статистики сетки, качественную гистограмму статистики
вместе с характеристиками конечной сетки.
Создать новые узлы(To create new nodes) - если эта опция не выбрана , ghs3d
пытается создать четырёхгранники, используя только узлы 2D сетки.
Использовать граничную версию восстановления(To use boundary recovery
version) - допускает использованию граничного модуля восстановления, который
пытается создать сетки Объема, начинающиеся с сеток поверхности очень низкого
качества (почти плоские треугольники на поверхности, распространении с высокой
плотностью, критических коэффициентах пропорциональности, и т.д.), который
терпит неудачу со стандартной версией. У получающейся сетки Объема однако
наиболее вероятно будет очень низкое качество (плохой коэффициент
пропорциональности элементов с очень маленьким Объемом).
Опция как текст(Option as text) - позволяет ввод любого текста как командная
строка для ghs3d. Это позволяет ввод дополнительных параметров.
44
Параметры гипотезы BLSURF
Параметры гипотезы BLSURF работает только с 2-ым алгоритмом BLSURF. Этот
алгоритм - коммерческое программное обеспечение.






Название - позволяет определять название гипотезы (BLSURF Parameters_n по
умолчанию).
Физическая Сетка(Physical Mesh) - если установлено в "Выбрать", позволяет
пользовательский ввод в поля Пользовательском размере, Максимальный
физический размер и Минимальный физический размер.
Пользовательский размер(User size) - определяет размер сгенерированных
элементов сетки.
Максимальный физичесмий(Max Physical Size) - определяет верхний предел
размера элемента сетки.
Минимальный Физический Размер(Min Physical Size) - определяет более низкий
предел размера элемента сетки.
Геометрическая сетка(Geometrical mesh) - если установлено в "Выбрать",
позволяет пользовательский ввод в полях Угол мешинга S, Угол мешинга C и
Градация(Gradation). Эти поля управляют вычислением размера элемента, так
называемого геометрического размера, соответствуют поверхностной геометрии,
рассматривая местные искривления.
45








Если и Пользовательский размер и геометрический размер определены,
возможный размер элемента соответствуют наименьшему количеству двух.
Угол мешинга S - максимальный угол между поверхностью сетки и тангенсом на
геометрическую поверхность в каждом узле сетки, в степенях.
Угол мешинга C - максимальный угол между гранью сетки и тангенсом к
геометрической кривой в каждом узле сетки, в степенях.
Максимальный геометрический размер - определяет верхний предел
геометрического размера.
Минимальный Геометрический Размер - определяет более низкий предел
геометрического размера.
Градация - максимальное отношение между длинами двух смежных граней.
Разрешить Четырехугольники - если выбрано, позволяет создание
четырехсторонних элементов.
Независимое исправление - если выбрано, геометрические грани не относятся, и
все геометрические поверхности мешингуются как одна гиперповерхность.
Топология - позволяет создание приспосабливающейся сетки на оболочке не
сшитые поверхности.
o "Из CAD" означает, что соответствие сетки проверено соответствием
формы.
o "Предпроцесс" и "Предпроцесс ++" разрешают программному обеспечению
BLSURF предобработать геометрическую модель, чтобы в конечном счете
осуществить операцию приспосабления к сетке.
46



Уровень многословия - Определяет процент от "многословия" BLSURF [0-100].
Добавить - обеспечивает выбор множественных дополнительных параметров,
которые появляются, если выбрано, в таблице, где это возможно, чтобы ввести
значение опции и редактировать это позже.
Очистить - удаляет опцию, выбранную в таблице.
Следующие опции обычно пригодны для использования. Понятие диагонали,
используемой в описаниях, означает диагональ ограничивающего прямоугольника
геометрического объектамешинга.




(реальный) topo_eps1 - является уровнем допуска в исправлении CAD. По
умолчанию равно диагонали × 10-4. Этот допуск используется, чтобы
идентифицировать узлы, чтобы объединить в пределах одной геометрической
поверхности, когда опция Топология должна предобработать. Значение по
умолчанию - диагональ/10.0.
(реальный) topo_eps2 - является уровнем допуска между двумя исправлениями
CAD. По умолчанию равно диагонали × 10-4. Этот допуск используется, чтобы
идентифицировать узлы, чтобы объединить по различным геометрическим
поверхностям, когда опция Топология должна предобработать. Значение по
умолчанию - диагональ/10.0.
(Реальный) LSS - является сокращением для "длины подсегмента". Это максимальная позволенная длина грани сетки. Значение по умолчанию 0.5.
frontal (целое число)
o 1 - генератор сетки вставляет точки с продвигающимся передним методом.
o 0 - это вставляет их с алгебраическим методом (на внутренних гранях). Этот
метод немного быстрее, но генерирует меньше регулярных сеток.
Значение по умолчанию 0.

hinterpol_flag (целое число) - определяет вычисление интерполированного
значения v между двумя точками P1 и P2 на кривой. Разрешает h1 быть значением
в точке P1, h2 быть значением в точке P2, и t быть параметром, изменяющимся от 0
до 1, двигаясь от P1 до P2.
o 0 - интерполяция линейна: v = h1 + t (h2 - h1)
o 1 - интерполяция - геометрический объект: v = h1 * голова (h2/h1, t)
o 2 - интерполяция является синусоидальной: v = (h1+h2)/2 + (h1-h2)/2*cos
(PI*t)
Значение по умолчанию 0.

hmean_flag (целое число) - определяет вычисление среднего числа нескольких
значений:
o -1 - минимум вычислен.
o 0 или 2 - арифметическое среднее число вычислено.
o 1 - геометрическое среднее число вычислено.
Значение по умолчанию 0.

CheckAdjacentEdges, CheckCloseEdges and CheckWellDefined (целое число) дает число запросов одинаково названных подпрограмм, цель которых состоит в
47





том, чтобы улучшить сетку доменов, имеющих узкие части. При каждой итерации
CheckCloseEdges уменьшает размеры граней, когда две пограничные кривые
граничат, CheckAdjacentEdges балансирует размеры смежных граней, и проверки
CheckWellDefined, если параметрический домен хорошо определен. Значения по
умолчанию 0.
CoefRectangle (real)- определяет относительную толщину прямоугольников,
используемых подпрограммой CheckCloseEdges (см. выше). Значение по
умолчанию 0.25.
eps_collapse (реальный) - если больше чем 0.0, BLSURF удаляет кривые, длины
которых - меньше чем eps_collapse. Чтобы получить приблизительное значение
длины кривой, это произвольно разбито на 20 граней. Значение по умолчанию 0.0.
eps_ends (real) - используется, чтобы обнаружить кривые, длины которых являются
очень маленькими, который иногда составляет ошибку. Сообщение напечатано,
если fabs (P2-P1) <eps_ends, где P1 и P2 - оконечности кривой. Значение по
умолчанию - диагональ/500.0.
prefix (символ) - префикс файлов, сгенерированных BLSURF. Значение по
умолчанию - "x".
refs (целое число) - справочная информация поверхности, используемой,
экспортируя файлы. Значение по умолчанию 1.
Следующие дополнительные параметры не зарезервированы, и Вы можете использовать
на свой риск.
Переменные Interger:



















addsurf_ivertex
background
coiter
communication
decim
export_flag
file_h
gridnu
gridnv
intermedfile
memory
normals
optim
pardom_flag
pinch
rigid
surforient
tconf
topo_collapse
Реальные переменные:



addsurf_angle
addsurf_R
addsurf_H
48






addsurf_FG
addsurf_r
addsurf_PA
angle_compcurv
angle_ridge
eps_pardom
Переменная строки:



export_format
export_option
import_option
В настоящее время у дополнения к программе BLSURF есть следующие ограничения.



Созданная сетка будет содержать инвертированные элементы, если это будет
основано на форме, состоя из больше чем одной поверхности (блок, конус, торус...)
и если опция "Позволяет Четырехугольники (Тест)" были проверены перед
вычислением.
Исключение SIGFPE поднято при попытке вычислить сетку, основанную на блоке,
когда опция "Исправлять независимо" выбрана.
Алгоритм BLSURF не может использоваться как местный алгоритм (на подсетках)
или как провайдер сетки нижнего уровня для некоторых трехмерных алгоритмов,
потому что BLSURF mesher (и следовательно дополнение к программе) не
предоставляет информацию о параметрах узла на гранях (U) и поверхности (U, V).
Например следующие комбинации алгоритмов невозможны:
o глобальный MEFISTO или Четырехугольник (отображение) + местный
BLSURF;
o BLSUFR + Проектирование, 2-ое от поверхностей, мешингованые BLSURF;
o местный BLSURF + трехмерная Экструзия;
Дополнительные Гипотезы
Дополнительные Гипотезы могут быть применены как добавление к главным гипотезам,
вводя дополнительные понятия.
Чтобы определить Дополнительную Гипотезу просто выбирают это в меню Создать
Mesh. Эти гипотезы - фактически изменения в правилах создания сетки и также не
обладают корректируемыми значениями.
Гипотеза разрешить не соответсвующий мешинг
Гипотеза Разрешить несоответсвующий мешинг, позволяет генерировать, не
соответсвующие сетки (то есть, сетки, имеющие некоторые грани, заканчивающиеся на
грани или поверхности смежных элементов).
49
Квадратичная Сетка
Гипотеза Квадратичная Сетка позволяет встраивать Квадратичную сетку (чьи ребра не
прямые но прерывистые линии и могут быть определены тремя точками вместо обычного.
Распространение 1D Гипотез на противоположных ребрах
Распространение 1D Гипотез на противоположных ребрах позволяет размножать
гипотезу на противоположное ребро. Если местная гипотеза и распространение будут
определены на ребре четырехугольной поверхности, то у противоположного ребра будет
та же самая гипотеза, если другая гипотеза не была локально определена на
противоположном ребре.
См. Также типовой Сценарий TUI.
50
Конструирование подсетки
Подсетка - сетка на геометрическом подобъекте, созданном с алгоритмами и/или
гипотезами кроме алгоритмов и гипотезами, назначенными на родительскую сетку на
родительском объекте.
Если геометрический подобъект будет принадлежать нескольким геометрическим
объектам, имеющим различные сетки или подсетки, то он будет мешингованы с
гипотезами подсетки более низкой размерности.
Например, поверхность блока мешингованы с подсеткой, используя алгоритмы и
гипотезы кроме родительской сетки на целом блоке. Поверхность и блок совместно
используют четыре ребра, которые будут мешингованы с алгоритмами и гипотезами
подсетки на поверхности, потому что поверхность – 2D объект, в то время как блок трехмерный объект.
Если размерности будут тем же самым, то произвольный алгоритм/гипотеза будет
использоваться. Это означает, что ребро, разделенное двумя поверхностями, каждый
имеющий ее собственную различную подсетку, будет мешингованы, используя алгоритмы
и гипотезы любого из этих двух, выбранного беспорядочно.
Конструирование подсетки состоит из:



Выбора сетки, которая будет формировать Вашу подсетку
Выбора геометрический объект для мешинга
Применение одной или нескольких ранее описанных гипотез и алгоритмов
мешинга, которые будут использоваться при вычислении этой подсетки
Чтобы создать подсетку:
В меню Mesh выбирают Локальная гипотеза(Local Hyp.) или щелкните на кнопке
"Создать подсетку" в инструментальной панели.
Кнопка " Создать подсетку "
Следующее диалоговое окно появится:
51
Это позволяет определять Название, родительскую Сетку и Геометрию
(например поверхность, если родительская сетка была основана на блоке)
подсетки. Вы можете определить алгоритмы и гипотезы таким же образом, как и
при создании сетки.
В Объектном Браузере структура новой подсетки будет отображена следующим
образом:
Она содержит:



справочная информация на геометрический объект, на основе которого была
создана подсетка;
Прикладные гипотезы, содержащая справочную информацию на гипотезы,
относящиеся к конструкции подсетки;
Прикладные алгоритмы, содержащая справочную информацию на
алгоритмы, относящиеся к конструкции подсетки.
См. Также типовой Сценарий TUI.
52
Создание Составных структур
Составная Сетка - комбинация нескольких сеток.
Чтобы создать составную структуру:
В меню Mesh выбирает создать составную структуру или щелкните на кнопку
"Создать составную сетку" в инструментальной панели.
Кнопка " Создать составную сетку "
Следующее диалоговое окно появится:
53





Название - позволяет выбор названия получающейся Составной
структуры.
Сетки - позволяют выбор сетки, которые будут связаны. Они могут быть
выбраны в Объектном Браузере, держа кнопку Ctrl.
Процессинг идентичных групп(Processing identical groups) - позволяют
выбрать метод обработки тезки, существующей на объединенных сетках.
Они могут быть также
o Объединены(United) - все элементы Group1 на Mesh_1 и Group1 на
Mesh_2 становятся элементами Group1 на Compound_Mesh, или
o Переименованы(Renamed) - Group1 на Mesh_1 становится
Group1_1, и Group1 на Mesh_2 становится Group1_2.
Создать общие группы для начальных сеток, чтобы автоматически
создать группы всех элементов того же самого типа (узлы, грани,
поверхности и Объемы) для получающейся сетки от элементов начальных
сеток.
Вы можете просто объединить сетки или Объединять совпадающие узлы
и элементы, когда это возможно, чтобы определить Допуск для этой
операции.
Пример:
54
Редактирование Сеток
После того, как Вы создали сетку или подсетку с определенными прикладными
гипотезами и алгоритмами, Вы можете редактировать свою сетку, назначая новые
гипотезы и алгоритмы или отменяя прикладные гипотезы и алгоритмы. Редактируют
таким же образом как при Создании Сетки.
Вы можете также изменить значения для текущей гипотезы, щелкните на кнопку
"Редактировать гипотезы".
" Редактировать гипотезы "
См. какая сетка создана на одних и тех же геометрических объектных изменениях, если
мы применяем различные алгоритмы к ней.
55
56
См. Также типовой Сценарий TUI.
Рассмотрение сеток
Краткий обзор
После определения алгоритмов и гипотез новая сетка перечислена в Объектном Браузере.
Щелкните правой кнопкой мыши на этом и выберите Вычислить - сетка будет
автоматически отображена в трехмерном Средстве просмотра. Альтернативно щелкните
на Отобразить только, чтобы скрыть все другие объекты в то же самое время.
Трехмерное Средство просмотра подробно описано в документации по модулю ГИП.
После того, как сетка появилась в Средстве просмотра, Вы можете выбрать это левой
мышью, щелкнуть и получить информацию об этом, изменяют ее параметры
представления и доступ к другим полезным опциям, щелкая правой кнопкой мыши на
выбранной сетке.
57
















Скрыть все - позволяют скрывать все объекты в средстве просмотра.
Обновите - обновляет представление Вашей сетки в Объектном Браузере,
применяя все недавние изменения.
Расширенная информация - обеспечивает больше подробной информации о
сетке.
Стандартная информация - предоставляет основной информации о сетке.
Информация Элемента Сетки - предоставляет основной информации о
выбранном элементе сетки.
Нумерация - позволяет отображать идентификационные номера всех
запутывающих элементов или узлов, составляющих Вашу сетку в средстве
просмотра.
Режим визуального отображения - позволяет выбирать между Каркасом,
Оттенением и представлением Узлов.
Объект Отображения - позволяет отображать Поверхности, Ребра или оба.
Цвета / Размер - позволяют выбирать цвет и размер сеток.
Прозрачность - позволяет изменять прозрачность элементов сетки.
Отсечение - позволяет создавать поперечные сечения выбранных объектов.
Управления - графически представляют различную информацию о сетках.
Скрыть - позволяет скрывать выбранную сетку от средства просмотра.
Показать Только - позволяет отображать только выбранную сетку, скрывая все
другие от средства просмотра.
Представление дампа - экспортирует объект от средства просмотра в формате
BMP, png, jpg или формате изображения jpeg.
Изменить Фон - позволяет переопределять цвет фона. По умолчанию это черно.
58
Информация о сетке
Есть три информационных поля: Стандартная информация о Сетке, Расширенная
информация о Сетке и Информация Элемента Сетки.
Стандартная информация о сетке
Блок Стандартного инфо о Сетке дает только информацию относительно ряда элементов
максимальной размерности и числа узлов в сетке. Однако, из этой Информации Вы
можете узнать о группах, выбранных на этой сетке.
59
Чтобы рассмотреть Стандартное инфо о Сетке, выберите свою сетку или подсетку в
Объектном Браузере и выберите Стандартное инфо о Сетке в меню Mesh или
щелкните на "Стандартного инфо о Сетке" в инструментальной панели.
Кнопка "Стандартное инфо о Сетке"
Следующая информация будет отображена:
Расширенная информация о сетке
Блок Расширенной информации о сетке дает подробную информацию о сетке, включая
общее количество поверхностей и Объемов и их геометрических типов.
Чтобы рассмотреть Расширенную информацию о сетке, выберите свою сетку или
подсетку в Объектном Браузере и выберите Расширенную информацию о сетке в меню
Mesh или щелкните кнопкой "Расширенной информации о сетке" в инструментальной
панели.
Кнопка "Расширенной информации о сетке"
Следующая информация будет отображена:
60
Вы можете получаете Инфо о сетке через сценарий TUI.
61
Информация Элемента Сетки
Блок Информация Элемента Сетки дает основную информацию о типе и координатах
выбранного элемента сетки.
Это возможно, чтобы ввести номер Элемента или выбрать Элемент в Средстве
просмотра.
62
Нумерация
Отображение номеров узлов
В MESH Вы можете отобразить идентификационные номера всех узлов Вашей сетки в
средстве просмотра.
Чтобы отображать идентификационные номера узлов:
1. Отобразите свою сетку в средстве просмотра
2. Щелкните правой кнопкой мыши на сетке в трехмерном средстве просмотра, и от
связанного всплывающего меню выбирают Нумерация> Отобразить Номера
Узлов(Display Nodes #)
Это будет похоже следующим образом:
Отображение номеров элементов
В MESH Вы можете отобразить идентификационные номера всех мешингованых
элементов, составляющих Вашу сетку в средстве просмотра.
Чтобы отображать идентификационные номера элементов:
1. Отобразите свою сетку в средстве просмотра
2. Щелкните правой кнопкой мыши на сетке в трехмерном средстве просмотра, и от
связанного всплывающего меню выбирают Нумерация> Номера Элементов
отобразить.
Это будет похоже следующим образом:
63
64
Режим визуального отображения
По умолчанию Ваши объекты представлены как установлено в Персональных
настройках.
Однако, щелкая правой кнопкой мыши на сетке в Объектном Браузере, и Режиме
визуального отображения выбора, Вы можете отобразить свою сетку как:
Каркас
Оттенение
65
Узлы
Каркас может объединиться с Узлами и Оттенением.
Режимы Оттенение и Каркас могут объединиться с Сокращением(Shrink), однако
Узлы не могут.
66
Объект Отображения
В этом подменю Вы можете хотеть отображать только Объемы, поверхности или ребра
или комбинировать их.
Только Поверхности
Только ребра
67
Прозрачность(Transparency)
Используя этот сдвиг Вы можете установить прозрачность оттенения. Абсолютно
прозрачное оттенение будет невидимо. По умолчанию это абсолютно непрозрачно.
68
Отсечение(Clipping)
Используя это меню Вы можете создать обозрения поперечного сечения (отсекающий
поверхности) Вашей сетки.
Чтобы запустить, нажмите на кнопку New.
Теперь Вы можете определить параметры своего поперечного сечения: Ориентация (XY, X-Z или Y-Z); Расстояние между противоположными оконечностями объекта, если это
установлено в 0.5 объект, разбито на две половины; и Вращение (в угловых степенях)
относительно X (Y к Z) и вокруг Y (X к Z). Если кнопка предварительного просмотра
Показа идет, Вы можете видеть поверхность отсечения в трехмерном Средстве
просмотра.
69
Если кнопка Автоматически Применять установлена, Вы можете предварительно
просмотреть поперечное сечение в трехмерном Средстве просмотра.
Чтобы получить новый объект от Отсечения, щелкните Применить.
70
Контроль качества
О контроле качества
Контроль качества сетки в MESH предназначен для визуального управления
сгенерированной сеткой.
Приложение определенного контроля качества состоит из использования
соответствующего алгоритма, который вычисляет значение определенной геометрической
характеристики (Область, Длина ребер, и т.д) для всех мешингованных элементов,
составляя Вашу сетку. Тогда все мешингованные элементы покрашены согласно
расчетным значениям. Справочной информации между окраской мешингованых
элементов и этими расчетными значениями показывают с помощью скалярной полосы,
которая отображена около представления Вашей сетки.
Есть 1D, 2D и трехмерный контроль качества.
1D mesh контроль качества:



Свободные границы (Free borders)
Границы на мультиподключении (Borders at multi-connection)
Длина (Length)
2D mesh контроль качества:




Свободные ребра (Free edges)
Длина 2D (Length 2D)
Границы на мультиподключении 2D (Borders at multi-connection 2D)
Область (Area)
71





Сужение (Taper)
Аспект (Aspect Ratio)
Минимальный угол (Minimum angle)
Деформирование (Warping)
Перекос (Skew)
3D mesh контроль качества:


Аспект 3D (Aspect ratio 3D)
Объем (Volume)
Свободные границы
Этот контроль качества сетки подсвечивает границы поверхностей, состоящих из ребер,
принадлежащих одной поверхности только.
В этом изображении свободные границы отображены в белом.
См. Также типовой Сценарий TUI.
Границы на мультиподключении
Этот контроль качества сетки подсвечивает границы поверхностей, состоящих из ребер,
72
принадлежащих нескольким поверхностям. Количество поверхностей определено
пользователем.
В этом изображении границы на мультиподключении отображены в синем.
См. Также типовой Сценарий TUI
Длина
Критерий контроля качества длины возвращает значение длины ребра.
См. Также типовой Сценарий TUI
Свободные ребра
Этот контроль качества сетки подсвечивает границы элементов сетки, состоящей из
граней, принадлежащих одному элементу сетки только.
73
В этом изображении были удалены некоторые элементы сетки, и "отверстия" выделены в
красном.
См. Также типовой Сценарий TUI
Длина 2D
Этот критерий контроля качества состоит из вычисления длины ребер, комбинирующих
элементы мешинга (треугольники и четырехугольники) Вашей сетки.
Применять Длину 2D качественный критерий к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управление > Длина 2D или кнопка "Длина 2D" щелчка в
инструментальной панели.
"Длина 2D"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
74
См. Также типовой Сценарий TUI
Границы на мультиподключении 2D
Этот контроль качества сетки подсвечивает границы элементов сетки, состоящей из ht,th,
принадлежащих нескольким элементам сетки.
75
См. Также типовой Сценарий TUI
Область
Контроль качества сетки области основан на алгоритме вычисления области элементов
мешинга. Это может быть применено к сеткам, состоящим из 2D элементов мешинга с 3 и
4 узлами (треугольники и четырехугольники).
Чтобы применить контроль качества Области к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управления> Область или щелкните на кнопкой "Область".
Кнопка "область"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
76
См. Также типовой Сценарий TUI
Сужение
Критерий качества сетки сужение представляет отношение областей двух треугольников,
отделенных диагональю. Таким образом это может быть вычислено только для элементов,
состоящих из 4 узлов.
Чтобы применить критерий качества Тонкая свеча к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управления> сужение или щелкните на кнопкой " сужение " в
инструментальной панели.
Кнопка " сужение "
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
77
См. Также типовой Сценарий TUI
Аспект
Критерий качества Аспект для элементов сетки показывает степень соответствия
элемента сетки к регулярному элементу его типа (со всеми ребрами, имеющими ту же
самую длину).

Аспект треугольника 2D, состоящего из 3 узлов, вычислен формулой:
78

Аспект четырехугольного 2D элемента, состоящий из 4 узлов, является самым
плохим (то есть самым большим), значение от всех треугольников, которые могут
быть встроены, беря три узла четырехугольника. Есть четыре треугольника, чтобы
рассмотреть:
Чтобы применить критерий качества Аспект к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управления> Аспект или щелкните на кнопкой " Аспект" в
инструментальной панели.
Кнопка " Аспект "
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
79
См. Также типовой Сценарий TUI
Минимальный угол
Минимальный угловой критерий качества сетки состоит из вычисления минимального
значения угла между двумя смежными сторонами 2D элемента мешинга (треугольник или
четырехугольник).
Чтобы применить Минимальный угловой критерий качества к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управления> Минимальный угол или кнопка "Минимальный угол"
Кнопка "Минимальный угол"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
80
См. Также типовой Сценарий TUI
Деформирование
Деформирование указывает, что поверхность не является плоской и применена только к
2D элементам с 4 узлами. Этот критерий контроля качества основан на поверхности
проектирования, созданной:
1. деление пополам четырех ребер элемента,
2. создание точки на поверхности в векторном среднем числе углов, где ось X
простирается от точки до средней линии на ребра 2.
81
Нормаль поверхности в направлении перекрестного продукта оси X и вектора от начала
координат до средней линии ребра 3. Каждый угол четверки тогда будет расстоянием ?h?
от поверхности. Длина каждой половины ребра измерена, и самая короткая длина
назначена ?l?. Угол деформации арксинус отношения высоты проектирования ?h? к
половине длины ребра ?l?.
Чтобы применить критерий качества Деформирования к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управления> угол Деформирования или кнопка "Угол
деформирования" в инструментальной панели.
"Угол деформирования"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
См. Также типовой Сценарий TUI
82
Перекос
Критерий качества Перекос сетки отражает угол между линиями, которые
присоединяются к противоположным сторонам элемента четырехугольника или угла
greatesr между тремя медианами в элементах треугольника. Этот критерий качества сетки
может быть применен к элементам, составленным из 4 и 3 узлов (четырехугольники и
треугольники).
Чтобы применять критерий качества Перекос к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
83
2. Выберите Управление> Перекос или щелкните на кнопкой "Перекос"
инструментальной панели.
" Перекос "
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
См. Также типовой Сценарий TUI
Аспект 3D
Аспект 3D качественный критерий вычисляет тот же самый параметр как критерий
Аспект, но это применено к трехмерным элементам сетки: четырёхгранники,
пятигранники, шестигранники, и т.д.

Аспект четырёхгранника трехмерный элемент вычислен формулой:
84

Другие типы элемента как многогранник, пятигранник и шестигранник используют
следующую формулу:
Чтобы применить критерий Аспект 3D к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управление> Аспект 3D или щелкните на кнопкой " Аспект 3D"
инструментальной панели.
85
" Аспект 3D"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
См. Также типовой Сценарий TUI
Объем
Критерий качества сетки Объема отражает Объем сеток трехмерного объекта.
Чтобы применять критерий качества Объема к Вашей сетке:
1. Отобразите свою сетку в средстве просмотра.
2. Выберите Управление> Объем или щелкните на кнопкой "Объем" в
инструментальной панели.
Кнопка "Объем"
Ваша сетка будет отображена в средстве просмотра с его элементами,
покрашенными согласно прикладному критерию контроля качества сетки:
86
См. Также типовой Сценарий TUI
87
Группирование элементов
Создание групп
В MESH Вы можете создать группы элементов различных типов. Чтобы создать группу
элементов в меню Mesh выбирают Создать Группу.
Чтобы создать любую группу, Вы должны определить следующее:



Сетка - название сетки, элементы которой сформируют Вашу группу. Вы можете
выбрать свою сетку в Браузере или в трехмерном средстве просмотра.
Тип Элементов - набор кнопок с зависимой фиксацией позволяет выбирать тип
элементов, которые сформируют Вашу группу:
o Узлы (Nodes)
o Ребра(Edges)
o Поверхности(Faces)
o Объемы(Volumes)
Поле имени позволяет вводить имя Вашей новой группы.
SALOME Platform различает два типа Группы: Автономная Группа(Standalone Group) и
Группа на Геометрии(Group on Geometry)
Автономная Группа
Автономная Группа состоит из элементов сетки, которые Вы можете определить двумя
возможными способами.


Выбирание их вручную с мышью в трехмерном Средстве просмотра. Вы можете
нажать на элемент в трехмерном средстве просмотра, и оно будет подсвечено.
После того щелчкните Добавить и номер этого элемента будут добавлены в
список.
Применение Фильтров. Кнопка Применить фильтр(Set filter) позволяет
применять определенный фильтр к выбору элементов Вашей группы. См. больше о
фильтрах на библиотечной странице фильтра Выбора.
Чтобы удалить выбранный элемент или элементы из списка щелкните на Удалить.
Кнопка раскрытия списка Вида позволяет сортировать список номеров элементов сетки.
Поле Выберите из(Select from) позволяет выбирать подсетку или существующую группу,
чьи элементы ранее определенного типа будут добавлены в список элементов, которые
сформируют Вашу группу.
Цвет - позволяет назначать на группу определенный цвет, например, определяя
граничные условия. Эта особенность вводит полезный элемент предварительной
обработки в модуле Сетки. Отметьте, что атрибут Цвет определяет цвета, используемые
для отображения элементов группы.
Предупреждение: интерфейс группы Med Color может измениться в будущих версиях
Salome.
88
В этом изображении коричневые ячейки принадлежат группе, определенной вручную.
89
В этом изображении коричневые ячейки принадлежат группе, определенной в
соответствии с критерием Сужение > 0.
См. Также типовой Сценарий TUI
Группа на Геометрии
Чтобы создать группу на геометрии выбирают Группа на геометрии в поле типа
Группы. Группа на геометрии содержит элементы определенного типа,
принадлежащего выбранному геометрическому объекту. Чтобы определить группу
выбирают в Браузере или в трехмерном средстве просмотра геометрический объект, от
которого будут взяты элементы. После подтверждения операции будет создана новая
группа элементов сетки.
Чтобы создать множественные группы на геометрии и узлов и элементов любого типа
сразу, в меню Mesh выбирают Создать Группы из Геометрии.
90
Названия группы - то же самое как таковые из геометрических объектов. Тип группы
элементов сетки определен автоматически по природе Геометрического объекта.
В этом изображении ячейки, которые принадлежат определенной поверхности, выбраны в
зеленом.
См. Также типовой Сценарий TUI
91
Редактирование группы
Чтобы редактировать существующую группу элементов:
1. Выберите свою группу в Объектном Браузере и в меню Mesh щелкните на элемент
Редактирование Группы или кнопкой "Редактирование группы" в
инструментальной панели.
" Редактирование группы "
Следующее диалоговое окно появится:
92
В этом диалоговом окне Вы можете изменить название своей группы и добавить
или удалить элементы, формирующие его. Для получения дополнительной
информации см. страницу Создание Групп
2. Щелкните на кнопку Применить или Применить и Закрыть, чтобы подтвердить
модификацию группы.
См. Также типовой Сценарий TUI
93
Используемые операции на группах
В MESH Вы можете выполнить некоторые Логические операции на группах, которые
принадлежат одной и той же сетке.



Объединение(Union)
Пересечение(Intersection)
Вырезка(Cut)
94
Объединение двух групп
Эта операция позволяет создавать новую группу таким способом, которым все элементы
сетки, которые присутствуют в начальных группах, будут добавлены к новому.
Чтобы объединить две группы:
1. В Mesh меню выбирают элемент Объединить Группы. Появится следующая
диалоговая окно
В этом диалоговом окне Вы должны определить название получающейся группы и
двух групп, которые будут объединены.
Например, у нас есть две группы Group1 и Group2.
Результатом их Объединения будет Group12:
Group1
95
Group2
Group12
2. Щелкните на кнопку Применить или Применить и закрыть, чтобы подтвердить
создание группы.
См. Также типовой Сценарий TUI
Пересечение двух групп
Эта операция позволяет создавать новую группу таким способом, которым все элементы
сетки, которые присутствуют в обеих начальных группах, добавлены к новому.
Чтобы сделать пересечение двух групп:
1. В меню Mesh выбирают Пересечение Групп. Появится следующее диалоговое
окно
В этом диалоговом окне Вы должны определить название получающейся группы и
двух групп, которые будут пересечены.
Например, у нас есть две группы Group1 и Group2.
Результатом их Пересечения будет Group12a:
96
Group1
Group2
Group12a
2. Щелкните на Применить или Применить и закрыть, чтобы подтвердить
создание группы.
См. Также типовой Сценарий TUI
Вырезка двух групп
Эта операция позволяет создавать новую группу таким способом, которым все элементы
сетки, которые присутствуют в главной группе, за исключением элементов пересечения
были добавлены к новой.
Чтобы сделать вырезку двух групп:
1. В Mesh меню выбирают элемент Вырезка Групп. Появится следующее
диалоговое окно
97
В этом диалоговом окне Вы должны определить название получающейся группы и
двух групп, которые будут вырезаны.
Например, у нас есть две группы Group1 и Group2.
Результатом их Вырезки будет Group12b:
Group1
Group2
98
Group12b
2. Щелкните на Применить или Применить и закрыть, чтобы подтвердить
создание группы.
См. Также типовой Сценарий TUI
Создание групп определенных элементов
В MESH Вы можете легко создать группы определенных элементов (узлы, ребра,
поверхности или Объемы), который будет взят от определенной подсетки.
Чтобы создать группу определенных элементов:
Щелкните правой кнопкой мыши на подсетке в Объектном Браузере и выберите
элемент Создать Группы или выберите свою подсетку в Объектном Браузере и в
Mesh меню выбирите элемент Создать группу. MESH создаст несколько групп,
состоящих из элементов определенного типа: узлы, ребра, поверхности или
Объемы.
Удаление Группы
Чтобы удалить группу в главном Меню выбирают Сетка-> Удалить Группы и выбирают
одну или несколько групп, которые Вы желаете удалить в трехмерном средстве просмотра
или в Объектном Браузере.
Выбранные группы будут перечислены в меню Удаленные группы. Потом щелкните на
Применить и закрыть, чтобы удалить выбранные группы и закрыть меню или кнопку
Применить, чтобы удалить их и продолжить с выбором.
99
Пожалуйста, отметьте, что эта операция удаляет группы с их элементами. Чтобы
удалить группу и оставить ее элементы неповрежденными, щелкните правой кнопкой
мыши на группе в Объектном Браузере и выберите Удалить во всплывающем меню или
выберите группу и выберите Редактировать -> Удалить в главном меню.
Изменение сеток
Добавление узлов и элементов
В MESH Вы можете добавить к своей сетке различные элементы, такие как:


Узлы(Nodes)
Ребра(Edges)
100






Треугольники(Triangles)
Четырехугольники(Quadrangles)
Полигоны(Polygons)
Четырёхгранники(Tetrahedrons)
Шестигранники(Hexahedrons)
Многогранники(Polyhedrons)
Чтобы добавлять узел или элемент к Вашей сетке:
1. Выберите свою сетку в Объектном Браузере или в трехмерном средстве просмотра.
2. В меню Модификация(Modification) выбирают Добавить, следующее связанное
подменю появится:
В этом подменю выберите тип элемента, который Вы хотели бы добавить к Вашей
сетке.
См. Также типовые Сценарии TUI
Добавление узлов
101
В этом диалоговом окне устанавливает координаты для Вашего узла. Выберите
Координаты и щелкните на Применить или Применить и закрыть. Ваш узел будет
создан:
Добавление ребер
102
В этом диалоговом окне определяют узлы, которые сформируют Ваше ребро. Выберите
их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на кнопку
Применить или Применить и закрыть. Ваше ребро будет создано:
Добавление треугольников
В этом диалоговом окне определяют узлы, которые сформируют Ваш треугольник.
Выберите их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на
кнопку Применить или Применить и закрыть. Ваш треугольник будет создан:
103
Добавление четырехугольников
В этом диалоговом окне определяют узлы, которые сформируют Ваш четырехугольник.
Выберите их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на
кнопку Применить или Применить и закрыть. Ваш четырехугольник будет создан:
104
Добавление полигонов
В этом диалоговом окне определяют узлы, которые сформируют Ваш полигон. Выберите
их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на кнопку
Применить или Применить и закрыть.
105
Добавление четырёхгранников
В этом диалоговом окне определяют узлы, которые сформируют Ваш четырёхгранник.
Выберите их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на
кнопку Применить или Применить и закрыть. Ваш четырёхгранник будет создан:
Добавление шестигранников
В этом диалоговом окне определяют узлы, которые сформируют Ваш шестигранник.
Выберите их в трехмерном средстве просмотра с нажатой кнопкой Shift и щелкните на
кнопку Применить или Применить и закрыть. Ваш шестигранник будет создан:
106
Добавление многогранников
Есть два различных способа добавить многогранные Объемы.
Если Вы выберете Узел как Тип Элементов, то Вы определите узлы, которые
сформируют поверхности Вашего многогранника выбрав узлы в трехмерном средстве
просмотра с нажатой кнопкой Shift и щелчком кнопкой Добавить, чтобы добавить
поверхность в списке Поверхности Узлами, которые сформируют Ваш многогранник.
Отметьте, что могло быть очень полезно переключить переключатель Предварительный
просмотр Многогранника, чтобы видеть результаты Вашего выбора.
107
Второй путь несколько более прост, однако, есть случаи, когда он не предоставляет Вам
необходимый уровень точности. Если Вы выберете Поверхность как Тип Элементов, то
Вы будете в состоянии выбрать поверхности, которые сформируют Ваш многогранник в
трехмерном средстве просмотра с нажатой кнопкой Shift. Если Вам удалось получить
необходимый результат, щелкните на кнопку Применить или Применить и закрыть.
Ваш многогранник будет создан:
108
Добавление Квадратичных Элементов
Модули MESH позволяют Вам работать с Квадратичными Элементами(Quadratic
Elements).
Квадратичное ребро не прямая, а прерывистая линия и может быть определена тремя
точками: начальная, средняя и последняя. Все более сложные Квадратичные Элементы
отличаются от обычных, в которых они состоят из Квадратичных ребер.
Чтобы добавлять Квадратичный элемент к Вашей сетке:
1. Выберите свою сетку в Объектном Браузере или в трехмерном средстве просмотра.
2. В меню Модификация выбирает Добавить элемент и выбирает одно из
следующего:
Чтобы создать любой Квадратичный Элемент определяют узлы, которые
сформируют Ваш треугольник выбором их в трехмерном средстве просмотра с
нажатой кнопкой Shift. Их номера появятся в диалоговом окне как Угловые
Узлы(Corner Nodes) (альтернативно, Вы можете только ввести номера в этом поле
без выбора). Ребра, сформированные угловыми узлами, появятся в таблице. Чтобы
определить средние узлы для каждого ребра дважды щелкают на соответствующем
поле и ввести число узла. Все ребра и объект, сформированный ими будут
отображены в Объектном браузере. Когда все ребра будут определены, Вы будете в
состоянии щелкнуть на Применить или Применить и закрыть, чтобы добавить
элемент к сетке.
109
Кнопка Обратно(Reverse) для Квадратичных ребер переключает первый и
последний узлы. Для всех других элементов это полностью изменяет элемент.
110
Удаление узлов и элементов
В СЕТКЕ Вы можете удалить узлы и все типы ячеек Вашей сетки.



Узлы(Nodes)
Элементы(Elements)
Удалить Данные Сетки(Clear Mesh Data)
Удаление узлов
Чтобы удалить узел:
1. Выберите свою сетку в Объектном Браузере или в трехмерном средстве просмотра.
2. В меню Модификация выбирает Удалить, и в связанного подменю выбирают
Удаляющиеся узлы, или только щелкните на кнопке "Удалите узлы" в
инструментальной панели.
"Удалите узлы"
Появится следующее диалоговое окно
В этом диалоговом окне Вы можете определить один или несколько узлов (с
нажатой кнопкой Shift), выбирая их в трехмерном средстве просмотра.
Отметьте:
Будьте внимательны удаляя узлы, потому что, если Вы удаляете определенный
узел своей сетки, все смежные элементы будут также удалены.
111
Удаление элементов
Чтобы удалить элемент:
1. Выберите свою сетку в Объектном Браузере или в трехмерном средстве просмотра.
2. В меню Модификация выбирает Удалить, и в связанном подменю выбирают
Удаляющиеся элементы, или только щелкните на кнопку "Удалите элементы" в
инструментальной панели.
кнопка "Удалите элементы"
Появится следующее диалоговое окно
112
В этом диалоговом окне Вы можете определить один или несколько элементов
своей сетки (с нажатой кнопкой Shift), выбирая их в трехмерном средстве
просмотра.
3. Щелкните Применить или Применить и закрыть для подтверждения удаления
указанных элементов.
Удаление Данных Сетки
Чтобы удалить все узлы и все типы ячеек в Вашей сетке сразу:
1. Выберите свою сетку в Объектном Браузере или в трехмерном средстве просмотра.
113
2. В меню Модификация выбирает Удалить, и в связанного подменю выбирают
Удалить Данные Сетки, или только щелкните на кнопке " Удалить Данные Сетки "
в инструментальной панели. Вы можете также щелкнуть правой кнопкой мыши на
сетке в Объектном Браузере и выбрать Удалить Данные Сетки во всплывающем
меню.
Кнопка " Удалить Данные Сетки "
См. Также типовой Сценарий TUI
114
Изменение нумерации узлов и элементов
В MESH Вы можете перенумеровать узлы и элементы Вашей сетки.


Узлы(Nodes)
Элементы(Elements)
Изменение нумерации узлов
Чтобы перенумеровать узлы Вашей сетки:
1. В меню Модификация выбирает подменю Изменение нумерации и выбирает
Узлы или щелкните на кнопку "Изменение нумерации узлов" в инструментальной
панели.
"Перенумеровывая узлы"
Появится следующее диалоговое окно
2. Заполните поле Mesh выбирая Вашу сетку в Объектном Браузере или в
трехмерном средстве просмотра.
3. Щелкните на кнопку Применить или Применить и закрыть, чтобы выполнить
операцию.
Изменение нумерации элементов
Чтобы перенумеровать элементы Вашей сетки:
1. В меню Модификация выбирает подменю Изменение нумерации и выбирает
Элементы или щелкните на кнопку "Изменение нумерации элементов" в
инструментальной панели.
115
" Изменение нумерации элементов "
Появится следующее диалоговое окно
2. Заполните поле Mesh выбирая Вашу сетку в Объектном Браузере или в
трехмерном средстве просмотра.
3. Щелкните на кнопку Применить или Применить и закрыть, чтобы выполнить
операцию.
См. Также типовой Сценарий TUI
116
Преобразование сеток
Перенос
Эта геометрическая операция позволяет переносить в пространстве Вашу сетку или
некоторые из ее элементов.
Чтобы перевести Вашу сетку:
В меню Модификация выбирают Преобразование, и в его подменю выбирают
элемент Перенос(Translation). Следующее диалоговое окно должно появиться:
117
У этой операции есть две опции, Вы можете перевести в пространстве свою сетку
или некоторые из ее элементов, определяющих:


две (начальные и конечные) точки
один вектор
Переключите соответствующий переключатель, чтобы Выбрать целую сетку,
подсетку или группу.
Когда кнопка Переместить Элемент с зависимой фиксацией выбрана, исходная
сетка (или элементы) создана в новом местоположении и стерта из его
предыдущего местоположения
Когда кнопка Копировать Элемент с зависимой фиксацией выбрана, исходная
сетка (или элементы) создана в новом местоположении, но эта также остается в его
предыдущем местоположении и рассматривается один и единственная сетка с
результатом трансляции.
Когда кнопка Создать как новую сетку с зависимой фиксацией выбрана, исходная
сетка (или элементы) остается в ее предыдущем местоположении, и новая сетка
создана в новом местоположении и появляется в Объектном Браузере с названием
MeshName_translated значения по умолчанию (Вы можете изменить это название в
смежном блоке).
Переключатель Копировать группу позволяет копировать группы элементов
исходной сетки к недавно созданному.
См. Также типовой Сценарий TUI
118
Вращение
Эта геометрическая операция позволяет вращать в месте Вашу сетку или некоторые из ее
элементов.
Чтобы вращать Вашу сетку:
В меню Модификация выбирают Преобразование, и в его подменю выбирают
Вращение. Следующее диалоговое окно должно появиться:
В этом диалоговом окне Вы можете определить элементы, которые должны
вращаться и параметры вращения:


Ось: точка и вектор
Угол вращения
Переключите соответствующий переключатель, чтобы Выбрать целую сетку, подсетку
или группу.
Когда кнопка Переместить элемент с зависимой фиксацией выбрана, исходная сетка (или
элементы) создана в новом местоположении и стерта из его предыдущего
местоположения
119
Когда кнопка Копировать Элемент с зависимой фиксацией выбрана, исходная сетка (или
элементы) создана в новом местоположении, но это также остается в его предыдущем
местоположении и рассмотривается как один и единственная сетка с результатом
вращения.
Когда кнопка Создать как новую сетку с зависимой фиксацией выбрана, исходная сетка
(или элементы) остается в ее предыдущем местоположении, и новая сетка создана в новом
местоположении и появляется в Объектном Браузере с названием MeshName_rotated
значения по умолчанию (Вы можете изменить это название в смежном блоке).
Переключатель Копировать группы позволяет копировать группы элементов исходной
сетки к недавно созданному.
120
См. Также типовой Сценарий TUI
Симметрия
Эта геометрическая операция позволяет выполнять симметрическую копию Вашей сетки
или некоторые из ее элементов.
Чтобы применять симметрию к Вашей сетке:
В меню Модификация выбирают Преобразование, и в его подменю выбирают
Симметрия(Symmetry). Следующее диалоговое окно должно появиться:
121
122
У этой операции есть три опции, Вы можете симметрично скопировать свою сетку
или некоторые из ее элементов, определяющих:



одна точка
одна ось (точка и вектор)
одна поверхность (точка и нормаль)
Переключите соответствующий переключатель, чтобы Выбрать целую сетку, подсетку
или группу.
Когда кнопка Переместить элемент с зависимой фиксацией выбрана, исходная сетка (или
элементы) создана в новом местоположении и стерта из его предыдущего
местоположения
Когда кнопка Копировать Элемент с зависимой фиксацией выбрана, исходная сетка (или
элементы) создана в новом местоположении, но это также остается в его предыдущем
местоположении и рассмотривается как один и единственная сетка с результатом
вращения.
Когда кнопка Создать как новую сетку с зависимой фиксацией выбрана, исходная сетка
(или элементы) остается в ее предыдущем местоположении, и новая сетка создана в новом
местоположении и появляется в Объектном Браузере с названием MeshName_rotated
значения по умолчанию (Вы можете изменить это название в смежном блоке).
Переключатель Копировать группы позволяет копировать группы элементов исходной
сетки к недавно созданному.
См. Также типовой Сценарий TUI
123
Сшивание Сетки
В SMESH Вы можете сшить элементы различных сеток. Текущие функциональные
возможности позволяют Вам сшить:




Свободные границы(Free borders)
Приспособленные свободные границы(Conform free borders)
Граница к стороне(Border to side)
Побочные элементы(Side elements)
Чтобы сшить элементы различных сеток:
1. В меню Модификация выбирают Преобразования, и в его подменю выбирают
Сшить.
2. Выберите в диалоговом окне одна из кнопок с зависимой фиксацией,
соответствующих типу операции сшивания, которую Вы хотели бы выполнить.
3. Заполните другие поля, доступные в диалоговом окне.
4. Щелкните на кнопку Применить или Применить и закрыть, чтобы выполнить
операцию сшивания.
Сшивание свободных границ
Эти функциональные возможности позволяют Вам объединять два свободных ребра 2D
сетки.
124
Для того, чтобы сшить свободные границы Вы должны определить три точки на каждой
границе: первый, второй и последний узел:



первый узел определяет начало границы;
второй узел определяет часть границы, которую нужно рассмотреть (насколько
свободная граница обычно формирует закрытый контур);
последний узел определяет конец границы.
Вы можете выбрать эти узлы в трехмерном средстве просмотра или определить его ID.
Первое и вторые узлы должны принадлежать той же самой ссылке поверхности. Второе и
последние узлы границы могут быть тем же самым. Первое и последние узлы двух границ
могут быть тем же самым. Соответствующие конечные узлы двух границ будут
объединены. Промежуточные узлы двух границ будут или объединены или вставлены в
поверхности противоположной границы.
Алгоритм сшивания следующий:
1. Параметр (U) каждого узла в пределах границы вычислен. Так, чтобы у первого
узла было U=0.0, у последнего узла есть U=1.0, для остальных узлы 0.0 <U <1.0;
125
2. Сравните параметры узла этих двух границ. Если у двух узлов противоположных
границ есть близкие параметры, они объединены, то есть узел первой границы
заменен во всех элементах узлом второй границы. Если у узла нет никакого узла с
близким параметром в противоположной границе, он вставлен в грань элемента
противоположной границы, элемент разбит. Два узла считают достаточно
близкими, чтобы объединить, если различие их параметров - меньше чем одна
пятая минимальной длины смежных граней поверхности на границах.
См. Также типовой Сценарий TUI
Сшивание приспособленных свободных границ
Эти функциональные возможности могут использоваться, чтобы объединить две
свободных границы 2D сетки.
126
Границы сеток для того, чтобы сшить определены как "Сшить свободные границы" за
исключением того, что вторая свободная граница не ограничена и может быть определена
первым и вторыми узлами только. Первые узлы двух границ могут быть тем же самым.
Алгоритм следующий: считая узлы, начинающиеся в первых, энный узел первой границы
объединен с энным узлом другой границы, до конца любой из границ. Узлы первой
границы заменены во всех элементах с соответствующими узлами второй границы.
Для того, чтобы сшить приспособленные свободные границы Вы должны определить три
точки на первой границе и две точки на втором. Пользователь может выбрать эти узлы в
трехмерном средстве просмотра или определить узел его системой обнаружения атак.
127
См. Также типовой Сценарий TUI
Сшивание границу к поверхности
"Сшивание границы к поверхности" предназначена, чтобы сшить свободную границу на
поверхность сетки.
Свободная граница определена как "сшивания свободных границ". Место, где сшить
границу определено двумя узлами, между которыми помещены поверхности границы, так,
чтобы первый узел границы был объединен с первым узлом на стороне, и последний узел
границы объединен со вторым указанным узлом на стороне.
128
Алгоритм следующий:.
1. Найдите, чтобы последовательность связанных узлов на стороне таким образом что
найденные ссылки больше всего cо-направлена со ссылками свободной границы.
2. Сшейте две последовательности узлов, используя алгоритм "сшивания свободного
границ".
Для того, чтобы cшить границу к стороне Вы должны определить три точки на
границе и две точки на стороне. Пользователь может выбрать эти узлы в
трехмерном средстве просмотра или определить узел его ID.
129
См. Также типовой Сценарий TUI
Сшивание побочных элементов
Эта операция предназначена, чтобы объединить две поверхности сетки.
130
Поверхности могут быть определены или 2D или 3D элементами. Число данных
элементов сторон должно быть тем же самым. Наборы данных элементов должны быть
топологически равными, то есть у каждого узла одного набора элемента должен быть
соответствующий узел в другом наборе элемента, и соответствующие узлы должны быть
одинаково связаны. Если есть 3D элементы в наборе, только их свободные поверхности
должны повиноваться к тому правилу.
Должны быть определены два соответствующих узла на каждой стороне. Они должны
принадлежать одному элементу и должны быть расположены на границе набора элемента.
Алгоритм сшивания находит и объединяет соответствующие узлы, начинающиеся с
указанных.
Для того, чтобы шить побочные элементы Вы должны определить элементы для шитья и
два узла для того, чтобы объединить на каждой стороне. Пользователь может выбрать эти
элементы и узлы в трехмерном средстве просмотра или определить их его ID.
См. Также типовой Сценарий TUI
131
Объединение узлов
Эти функциональные возможности позволяют пользователю обнаруживать группы
совпадающих узлов с желательным допуском, редактировать эти группы и слияние.
Чтобы объединить узлы Вашей сетки:
1. В меню Модификация выбирают Преобразование, и в его подменю выбирают
Слияние узлов(Merge nodes). Следующее диалоговое окно должно появиться:
Название - название сетки, узлы которой будут объединены.
Допуск - максимальное расстояние между узлами, достаточными для того,
чтобы объединить.
 Кнопка поиска генерирует список совпадающих узлов для данного
Допуска.
o Объединяемые узлы - список групп узлов для того, чтобы объединить. Все
узлы каждой группы сформируют один после операции.
 Удалить - удаляет выбранную группу из списка.
 Добавить - добавляет в список группу узлов, выбранных в средстве
просмотра нажатой клавишей "Shift".
 Выделите все - выделяет все группы.
o
o
132
o
Редактировать выбранные группы - позволяет редактировать выбранную
группу:
добавляет к группе узел, выбранный в средстве просмотра.
удаляет из группы выбранный узел.
перемещает выбранный узел в первую позицию в группе. Это означает, что
все другие узлы будут объединены в этот.
2. Чтобы одтвердить ваш выбор щелкните Применить или Применить и закрыть.
133
См. Также типовой Сценарий TUI
134
Объединение Элементов
Эти функциональные возможности позволяют объединять совпадающие элементы сетки,
выбираемой в диалоговом окне.
Название - название сетки, элементы которой будут объединены.
Допуск - максимальное расстояние между элемент, достаточными для того,
чтобы объединить.
 Кнопка поиска генерирует список совпадающих элемент для
данного Допуска.
o Объединяемые элементы - список групп элементов для того, чтобы
объединить. Все элементы каждой группы сформируют один после
операции.
 Удалить - удаляет выбранную группу из списка.
 Добавить - добавляет в список группу элементов, выбранных в
средстве просмотра нажатой клавишей "Shift".
 Выделите все - выделяет все группы.
o Редактировать выбранные группы - позволяет редактировать выбранную
группу:
o
o
135
добавляет к группе элемент, выбранный в средстве просмотра.
удаляет из группы выбранный элемент.
перемещает выбранный элемент в первую позицию в группе. Это означает, что все
другие элементы будут объединены в этот.

Чтобы подтвердить ваш выбор щелкните Применить или Применить и закрыть.
В этом изображении Вы видите треугольник, который совпадает с одним из элементов
сетки. После того, как мы применим функциональные возможности Слияния Элементов,
треугольник будет полностью объединен с сеткой.
См. Также типовой Сценарий TUI
136
Перемещение узлов(Moving nodes)
В MESH Вы можете изменить местоположение любого узла Вашей сетки. В этом случае
все смежные элементы (грани) будут также преобразованы вправо после перемещенного
узла.
Чтобы переместить узел:
1. В меню Модификация выбирают элемент Переместить узел или щелкают
"Переместите Узел" в инструментальной панели.
" Переместите Узел "
Следующее диалоговое окно должно появиться:
2. Введите номер необходимого узла в поле номера Узла или выберите этот узел в
трехмерном средстве просмотра. Координаты Вашего узла будут автоматически
отображены в поле Координат.
3. Выберите новые координаты для Вашего узла в поле Координаты.
4. Щелкните Применить или Применить и закрыть.
137
См. Также типовой Сценарий TUI
Сетка через точку(Mesh through point)
В MESH Вы можете определить узел в определенной точке или созданием нового узла,
движением узла, самого близкого к точке или движением любого узла к точке.
Чтобы создать сетку, проходящую через точку:
1. В меню Модификация выбирают Сетка через точку или щелкните на "Сетка
через точку" в инструментальной панели.
" Сетка через точку"
Следующее диалоговое окно должно появиться:
138
2. Введите координаты точки.
3. Выберите один из нескольких методов: Вы можете или Создать новый узел в
обозначенной точке или Переместить существующий узел к точке. В последнем
случае Вы можете зарегистрироваться в Автоматическом поиске самого близкого
узла или выбрать необходимый узел вручную. Переключатель предварительного
просмотра позволяет видеть результаты операции.
4. Щелкните на Применить или кнопку OK.
См. Также типовой Сценарий TUI
Диагональная инверсия элементов(Diagonal inversion of elements)
В MESH Вы можете инверсировать диагональ (ребро) псевдочетырехугольника,
сформированного двумя соседними треугольниками с одной общей гранью.
Чтобы инверсировать диоганаль:
1. В меню Модификация выбирают Инверсировать диагональ или щелкните на
кнопку "Инверсировать диагональ" в инструментальной панели.
" Инверсировать диагонал"
Следующее диалоговое окно должно появиться:
139
2. Введите номер необходимого ребра в поле Ребро или выберите это ребро в
трехмерном средстве просмотра.
3. Щелкните Применить или Применить и закрыть.
См. Также типовой Сценарий TUI
140
Объединение двух треугольников(Uniting two triangles)
В ЬУЫР Вы можете объединить два соседних треугольника (ячейки) удалением общей
грани.
Чтобы объединить два треугольника:
1. В меню Модификация выбирают Объединить два треугольника или щелкните
на "Объединение двух треугольников" в инструментальной панели.
" Объединение двух треугольников"
Следующее диалоговое окно должно появиться:
2. Введите номер необходимого ребра в поле Ребро или выберите эту грань в
трехмерном средстве просмотра.
3. Щелкните Применить или Применить и закрыть
141
См. Также типовой Сценарий TUI
Объединение ряда треугольников(Uniting a set of triangles)
В отличие от предыдущей операции этот позволяет объединять сразу много
треугольников, если у них есть смежные грани.
Чтобы объединить несколько треугольников:
1. Отобразите сетку или подсетку в трехмерном средстве просмотра.
2. В меню Модификация выбирают Объединение треугольников или щелкните на
кнопку "Объединение треугольников" в инструментальной панели.
" Объединение треугольников"
Появится следующее диалоговое окно
142
Главный список должен содержать треугольники, которые будут
объединены. Вы можете нажать на треугольник в трехмерном средстве
просмотра, и оно будет подсвечено. После того щелкните кнопку Добавить
и номер этого треугольника будут добавлены в список. Чтобы удалить
выбранный элемент или элементы от списка щелкните на кнопкой Удалить.
Кнопка Сортировать позволяет сортировать список номеров. Кнопка
установить фильтр позволяет применять определенный фильтр к выбору
треугольников.
o Кнопка Применить ко всем с зависимой фиксацией, позволяет изменять
обеспечение связи и тип всех треугольников в настоящее время
отображаемой сетки или подсетки.
o Меню Критерий(Criterion) позволяет применять операции только к тем
выбранным объектам которые встречают выбранный критерий (от списка
Контроля качества, то есть. Перекос, Деформирование, Минимальный угол,
и т.д.)
o Выберите все - позволяет выбирать подсетку или существующую группу,
элементы треугольника которой будут автоматически добавлены в список.
3. Чтобы подтвердить ваш выбор щелкните Применить или Применить и закрыть.
o
Если у некоторых выбранных элементов треугольника не будет никаких смежных граней
с одними из других, то операция на этих элементах не должна иметь эффект.
143
См. Также типовой Сценарий TUI
144
Изменение ориентации элементов(Changing orientation of elements)
Ориентация элемента изменена, возвращая порядок узлов выбранных элементов.
Чтобы изменить ориентацию элементов:
1. Отобразите сетку или подсетку в трехмерном средстве просмотра.
2. В меню Модификация выбирают элемент Ориентация или щелкните на кнопку
Ориентация в инструментальной панели.
" Ориентация "
Появится следующее диалоговое окно
o
Главный список должен содержать элементы, которые будут
переориентированы. Вы можете нажать на элемент в трехмерном средстве
просмотра, и оно будет подсвечено. После того щелкните на кнопку
Добавитьи логин этого элемента будут добавлены в список. Чтобы удалить
выбранный элемент или элементы от списка щелкните на кнопкой Удалить.
Кнопка Сортировать позволяет сортировать список логинов элементов.
Кнопка Установить фильтр позволяет применять определенный фильтр к
выбору элементов Вашей группы.
145
Примените ко всем - позволяет изменять ориентацию всех элементов в
настоящее время отображаемой сетки или подсетки.
o Выберите все - позволяет выбирать подсетку или существующую группу,
элементы которой будут автоматически добавлены в список.
3. Чтобы подтвердить ваш выбор щелкните Применить или Применить и закрыть.
o
См. Также типовой Сценарий TUI
Вырезка четырехугольников(Cutting quadrangles)
Эта операция позволяет вырезать один или несколько элементов четырехугольника
суммированием дополнительной грани, которая подключит два противоположных угла.
Чтобы вырезать четырехугольники:
1. Отобразите сетку или подсетку в трехмерном средстве просмотра.
2. В меню Модификация выбирают Вырезка четырехугольников или щелкните на
кнопку "Вырезка четырехугольников" в инструментальной панели.
" Вырезка четырехугольников"
Появится следующее диалоговое окно
146
o
o
o
o
o
Главный список содержит список четырехугольников. Вы можете нажать на
четырехугольник в трехмерном средстве просмотра, и оно будет
подсвечено. Щелкните на кнопку Добавить и номер этого
четырехугольника будет добавлен в список. Чтобы удалить выбранный
элемент или элементы от списка щелкните на кнопкой Удалить. Кнопка
Сортировать позволяет сортировать список номеров. Кнопка фильтр
позволяет применять определенный фильтр к выбору четырехугольников.
Применить ко всем - позволяет изменять ориентацию всех
четырехугольников в настоящее время отображаемой сетки или подсетки.
Предварительный просмотр - обеспечивает предварительный просмотр
включения средства просмотра.
Критерий
 Использовать диагональ 1-3, и Использовать диагональ 2-4
позволяет определять противоположные углы, которые будут
связаны передовой позицией.
 Используйте числовой коэффициент - позволяет применять
операцию только к тем объектам, которые встречают выбранный
критерий (от списка Контроля качества, то есть. Перекос,
Деформирование, Минимальный угол, и т.д.)
Выберите из - позволяет выбирать подсетку или существующую группу,
элементы четырехугольника которой будут автоматически добавлены в
список.
147
3. Чтобы подтвердить ваш выбор щелкните Применить или Применить и закрыть.
См. Также типовой Сценарий TUI
148
Сглаживание(Smoothing)
Сглаживание используется, чтобы корректировать местоположения углов элемента
(узлы), чтобы уменьшить искажения в этих элементах.
Чтобы применять сглаживание к элементам Вашей сетки:
1. Отобразите сетку или подсетку в трехмерном средстве просмотра.
2. В меню Модификация выбирают Сглаживание или щелкните на кнопку
"Сглаживание" в инструментальной панели.
"Сглаживание"
Диалоговое окно содержит следующие поля, которые должны быть определены:
Поле ID элемента позволяет определять элементы, которые должны быть
сглажены.Нужно выбрать их в трехмерном средстве просмотра (зажмите
Shift, чтобы выбрать несколько элементов).
o Выберите целую сетку, подсетку или группу- сглаживание применено к
целой сетке или ее части.
o Установить id узлов: некоторые узлы сохраняют свое местоположение во
время сглаживания. Если сетка основана на форме геометрии, узлы
o
149
основывались на геометрических ребрах, всегда устанавливаются. Если
сглаживание применено к части сетки тогда, граничные узлы набора
элементов также установлены. Любые другие узлы могут быть
дополнительно установлены.
o Методы Сглаживания:
 Сглаживание Laplacian перемещает узел к центру окружающих
узлов, непосредственно связанных с тем узлом вдоль ребра элемента.
 Сглаживание Centroidal перемещает узел к области элемента центра
масс окружающих элементов.
Как правило, метод Laplacian будет продукт сетка с наименьшим
количеством искажения элемента. Это - также более быстрый метод.
Сглаживание Centroidal обычно получает сетку, у которой есть более
однородные размеры элемента. Оба метода приводят к хорошим
результатам со "свободными" сетками.
o
o
Итеративный предел: оба из методов сглаживания используют
итерационную процедуру, чтобы сходиться к сглаженной сетке. Все узлы
сглажены согласно одной из методик, которые показаны выше. Тогда
сглаживание переоценено с обновленными центральными
местоположениями. Этот процесс продолжается, пока максимальное число
итераций не было превышено, или у всех элементов есть аспект меньше или
равный чем указанный.
o Максимальный аспект позволяет определять качество, в котором
алгоритм сглаживания должен остановить итерации, поскольку конец
операции был достигнут.
o Область параметров - алгоритм пытается улучшить форму поверхностей в
области параметров геометрических поверхностей, на которых они
сгенерированы, пока форма поверхностей в трехмерной области не
улучшена.
3. Щелкните на Применить или OK, чтобы подтвердить операцию.
150
См. Также типовой Сценарий TUI
151
Выдавливание(Extrusion)
Выдавливание используется, чтобы встроить элементы сетки плюс одну размерность чем
входные. Любая линия или плоский элемент могут быть выдавлены. Элементы линии
будут выдавлены в четырехсторонние элементы поверхности. Треугольный и
Четырехсторонняя выдавливание элементов поверхности в тела Пятигранника и
Шестигранника соответственно.
Чтобы использовать Выдавливание:
1. В меню Модификация выбирают Выдавливание или щелкните на кнопкой "
Выдавливание " в инструментальной панели.
Кнопка " Выдавливание "
Появится следующее диалоговое окно
152
2. В этом диалоговом окне Вы должны выбрать:
o тип элементов, которые будут выдавлены (1D или 2D),
o определите номера элементов, которые будут вытеснены выбрав их в
трехмерном средстве просмотра или выберите целую сетку или подсетку,
o определите вектор, вдоль которого элементы будут выдавлены,
o число шагов.
3. Генерировать Группы - позволяет копировать группы элементов исходной сетки
к недавно созданному.
4. Щелкните на Применить или OK.
153
См. Также типовой Сценарий TUI
Выдавливание вдоль пути(Extrusion along a path)
В принципе, Выдавливание вдоль пути работает таким же образом как Выдавливание,
главное различие - то, что мы определяем не вектор, а путь Выдавливания, который
должна быть решетчатой ребром. Чтобы понять то, как этот алгоритм работает,
исследуйте несколько примеров, начинающихся с самого простого случая Выдавливания
вдоль прямого ребра. Во всех примерах та же самая сетка будет вытеснена вдоль
различных путей и с различными параметрами. У этой типовой 2D сетки есть две
поверхности четырехугольника и семь ребер. Cмотрите на изображение, где белые цифры
- числа узла, и зеленый числа элемента:
Выдавливание вдоль прямой грани
(не использующий арифметическую запятую или углы)
154
Изображение показы 1D сетка пути, основыванной на линейной грани, и начальной 2D
сетке.
Изображение показывает результат выдавливания двух ребер (#1 и #2) начальной сетки
вдоль пути.
Узел #1 из сетки пути был выбран как узел Начала.
155
Выдавливание вдоль криволинейной грани
(с и без углов)
Изображение показы 1D сетка пути, основыванная на криволинейном ребре, и начальной
2D сетке.
Центральное изображение показывает результат выдавливания одного ребра (#2) из
начальной сетки вдоль пути.
Узел #1 из сетки пути был выбран как узел Начала.
156
То же самое, но использующие углы {45, 45, 45, 0,-45,-45,-45}
Выдавливание вдоль подсетки
В этом примере сетка пути была основана на соединительной линии (ломаная линия с
шестью ребрами). Первое ребро соединительной линии использовалась как Форма
(ребро), узел #1 как узел Начала. Углы были определены как {10, 10, 10}. Среднее ребро
(#4) из начальной сетки была вытеснена.
157
Выдавливание 2D элементов вдоль подсетки
Это выдавливание основано на той же самой сетке пути как в предыдущем примере, но
третье ребро соединительной линии были установлены как Форма (ребро) и узел #4 как
узел Начала. Пожалуйста отметьте, что выдавливание была сделана в направлении от
узла #4 к узлу #3, то есть против проводного направления. В этом примере были
вытеснены обе поверхности начальной сетки.
158
Выдавливание 2D элементов вдоль закрытого пути
Показаны изображения сетка пути основывались на закрытом ребре (круг).
159
Центральное изображение показывает результат выдавливания обеих поверхностей
начальной сетки.
Отметьте, что никакое сшивание не было сделано, так, есть шесть совпадающих узлов и
две совпадающих поверхности в получающейся сетке.
То же самое, но использующие углы {45,-45, 45,-45, 45,-45, 45,-45}
Чтобы использовать Выдавливание вдоль пути:
1. В меню Модификация выбирают Выдавливание вдоль пути или щелкните "
Выдавливание вдоль пути" в инструментальной панели.
" Выдавливание вдоль пути"
160
Появится следующее диалоговое окно
161
2. В диалоговом окне Вы должны:
o выберите тип элементов, которые будут вытеснены (1D или 2D),
o определите номиера элементов, которые будут выдавлены выбрав их в
трехмерном средстве просмотра или Выборе целая сетку, подсетка или
группа,
o определите Путь, вдоль которого элементы будут вытеснены,
Определение пути состоит из нескольких элементов:
 Сетка - содержащий 1D подсцепляется на ребро, вдоль который
проходит выдавливание
 Форма (ребро) - как сетка может быть сложной, ребро используется,
чтобы определить подсетку для пути
 Узел начала - первое или последний узел на ребре. Это
используется, чтобы определить направление выдавливания
o Создать Группы - позволяет копировать группы элементов исходной сетки
к недавно созданному.
3. Есть два дополнительных параметра, которые могут быть очень полезными:
162
Если путь выдавливания криволинеен, при каждой итерации, вытесненная
форма вращается, чтобы сохранить ее начальную угловатость к кривой. По
умолчанию, базовая точка, вокруг которой вращается форма, является
центром масс формы, однако, Вы можете определить любую точку как
базовую точку, и форма будет вращаться относительно этой точки.
o Форма может также вращаться вокруг пути, чтобы получить получающуюся
сетку спиральным видом. Вы можете установить значения углов в праве,
добавьте их в список углов слева, нажимая кнопку "Добавить" и удалите их
из списка, нажимая кнопку "Удалить".
o
"Добавить"
"Удалить"
Линейное изменение углов позволяет определять угол постепенного
вращения для целого пути. При каждом шаге форма будет вращаться на
угол/число шагов.
4. Щелкните на Применить или OK. Ребра сетки будут вытеснены в поверхности,
поверхности в Объемы. Внешняя поверхность получающейся 3D сетки (если
поверхности были вытеснены) покрыта поверхностями, и углами с ребрами. Если
путь закрыт, получающаяся сетка может содержать дублированные узлы и
поверхности, потому что никакое шитье не сделано.
См. Также типовой Сценарий TUI
163
Вращение(Revolution)
Вращение - тип поверхности, сцепляющейся от дискретных линий. Это используется,
чтобы встроить элементы сетки плюс одна размерность чем перемещенные. Каждый
перемещенный 1D продукт элемента один или более четырехугольников (или
треугольники, если один узел вращаемого элемента лежит на оси вращения).
Применять вращение:
1. В меню Модификация выбирают Вращение или щелкните на кнопку "Вращение"
в инструментальной панели.
Кнопка "вращения"
Следующее диалоговое окно должно появиться:
164
2. В этом диалоговом окне Вы должны определить:
o тип элементов, которые будут вытеснены (1D или 2D),
o определите номера элементов, которые будут вращаться выбрав их в
трехмерном средстве просмотра или выберут целую сетку или подсетку,
o определите ось (точка и вектор), вокруг которого элементы будут
вращаться,
o угол вращения и число шагов,
 Угол Шага - элементы вытеснены указанным углом при каждом шаге
(то есть для Угол=30 и Число шагов=2, элементы будут вытеснены на
30 градусов дважды в общей сложности 30*2=60),
165

Полный угол - элементы вытеснены указанным углом только
однажды, и число шагов определяет число итераций (т.е. для
Угла=30 и Число шагов=2, элементы будут вытеснены 30/2=15
градусов дважды в общей сложности 30).
допуск вращения
3. Предварительный просмотр позволяет показывать результатам установки
параметра в средстве просмотра
4. Создать группы позволяет копировать группы элементов исходной сетки к
недавно созданному.
5. Щелкните на Применить или OK.
o
См. Также типовой Сценарий TUI
Отображение шаблона(Pattern mapping)
О шаблонах
Шаблон описывает сетку, чтобы генерировать: позиции узлов в пределах геометрического
домена и центрального обеспечения связи элементов. Также, шаблон определяет так
называемые ключевые пункты, то есть узлы, которые будут расположены в
геометрической вершине. Описание шаблона сохранено в <pattern_name>.smp файл.
smp файл содержит 4 раздела:
1. Первые синхронизации строчной развёртки число узлов (N).
2. Следующие линии N описывают координаты узлов. Каждый синхронизации
строчной развёртки 2 координаты узла.
3. Линия ключевых пунктов: индексы узлов, которые будут отображены на
геометрической вершине. Индекс n обращается к узлу, описанному на энной линии
раздела 2. Первый индекс узла - нуль.
4. Остальные выравнивают, описывают центральное обеспечение связи элементов,
одной линии для элемента. Индексы синхронизаций строчной развёртки узлов,
формирующих элемент. Индекс n обращается к узлу, описанному на энной линии
раздела 2. Первый индекс узла - нуль. На линии должно быть 3 или 4 индекса:
только 2-ые элементы позволены.
166
2-ый шаблон должен содержать по крайней мере один элемент и по крайней мере один
ключевой пункт. Все ключевые пункты должны лежать на границах.
Пример простого smp файла и предварительный просмотр шаблона описан в этом файле:
Приложение отображения шаблона
Чтобы применять отображение шаблона к геометрическому объекту:
В меню Модификация выбирают Отобразить Шаблон, или щелкните на кнопку
"Отображение шаблона" в инструментальной панели.
"Отображение шаблона"
Следующее диалоговое окно должно появиться:
167
168
Чтобы применить шаблон к геометрическому объекту, Вы должны определить:



поверхность, имеющая число вершины, равной числу ключевых пунктов в
шаблоне; число ключевых пунктов на внутренних границах шаблона должно также
быть равным числу вершины на внутренних границах поверхности;
вершина, к которой должен быть отображен первый ключевой пункт;
изменен или нет порядок ключевых пунктов. (Порядок вершины поверхности
против часовой стрелки смотрит снаружи).
Тогда Вы или загружаете файл шаблона.smp, ранее созданный вручную, нажимая на
кнопку "Загрузьте шаблон", или нажимаете на кнопку Новый для автоматического
создания.
Для автоматического создания Вы только определяете геометрическую поверхность,
169
основывающуюся на сетке. Узлы сетки, лежащие на вершине поверхности, становятся
ключевыми пунктами. Дополнительно, Вы можете выбрать способ получить координаты
узлов, проектируя узлы на поверхности вместо того, чтобы использовать "позиции на
поверхности", сгенерированной mesher (если есть любой). Поверхности, имеющие ребро
шва, могут использоваться для автоматического создания шаблона.
Создавая шаблон из существующей сетки, есть два возможных случая:
1. Подсетка на поверхности выбрана. Шаблон создан от 2D элементов, связанных к
поверхности mesher. Координаты узла - или "позиции на поверхности",
вычисленной mesher, или координаты проходили проектирование узла на
геометрической поверхности, согласно Вашему выбору.
2. Выбрана сетка, где главная форма - поверхность. Шаблон создан от всех 2D
элементов в сетке. Если все элементы сетки, встраивают mesher, пользователь
может выбрать способ получить координаты узлов, пока все узлы спроектированы
на поверхности.
170
Алгоритм Отображения
Алгоритм отображения следующий:
1. Ключевые пункты установлены в порядке, что с ними сталкиваются, идя по
границе шаблона так, чтобы элементы были слева. Первый ключевой пункт
сохраняется.
2. Найдите геометрическую вершину, соответствующую ключевым пунктам в
соответствии с порядком вершины в границе поверхности; здесь "Обратный
порядок ключевых пунктов" флажок принят во внимание.
3. Граничные узлы шаблона отображены на ребрах поверхности: узел,
расположенный между определенными ключевыми пунктами на границе шаблона,
отображен на геометрическом ребре, ограниченной, переписываясь геометрическая
вершина. Позиция узла на ребре отражает свое расстояние от двух ключевых
пунктов.
171
4. Координаты неграничного узла в параметрическом месте поверхности определены
как последующие. В области параметров шаблона узел лежит в пересечении двух
изолиний, каждая из которых пересекает границу шаблона по крайней мере в двух
точках. Зная отображенные позиции граничных узлов, мы находим, где граничные
изолинией перекрестные точки отображены, и следовательно мы можем найти
отображенное направление изолиний и затем, две позиции узла на двух
отображенных изолиниях. Возможная отображенная позиция узла найдена как
среднее число позиций на отображенных изолиниях.
См. Также типовой Сценарий TUI
172
Конвертирование в/из Квадратичной Сетки(Convert to/from Quadratic Mesh)
Эти функциональные возможности позволяют Вам преобразовать стандартные сетки к
квадратичным и наоборот. См. Добавить квадратичные элементы для получения
дополнительной информации о квадратичных сетках.
Для осуществления операции преобразование:
1. В меню Модификация выбирают Конвертировать в/из квадратичный элемента
Сетки, или щелкните на кнопкой " Конвертировать в/из квадратичный элемента "
в инструментальной панели.
" Конвертировать в/из квадратичный элемента "
Появится следующее диалоговое окно
2. В этом диалоговом окне Вы должны выбрать:
o если Вы желаете преобразовать стандартную сетку в квадратичную или
квадратичную в стандартную;
o если Вы желаете поместить средние узлы квадратичной сетки на геометрии
(мешингованы объект).
Стандартная сетка (грубая сетка на торусе)
173
квадратичная сетка
3. Щелкните на Применить или OK.
174
Сценарии TUI
Создание Сеток
Прежде всего см. Пример 3D создания сетки, которое является примером хорошего стиля
сценария Python для модуля Сетки.
Создание Сетки
import geompy
import smesh
# создайте блок
box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
tetra = smesh.Mesh(box, "MeshBox")
algo1D = tetra.Segment()
algo1D.NumberOfSegments(7)
algo2D = tetra.Triangle()
algo2D.MaxElementArea(800.)
algo3D = tetra.Tetrahedron(smesh.NETGEN)
algo3D.MaxElementVolume(900.)
# вычислите сетку
ret = tetra.Compute()
if ret == 0:
print "problem when computing the mesh"
else:
print "mesh computed"
pass
Создание Подсетки
from geompy import *
import smesh
# создайте блок
box = MakeBoxDXDYDZ(10., 10., 10.)
addToStudy(box, "Box")
# выберите одну грань блока для определения местной гипотезы
p5 = MakeVertex(5., 0., 0.)
EdgeX = GetEdgeNearPoint(box, p5)
addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
# создайте сетку шестигранник на блоке
quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh")
175
# создайте регулярный 1D алгоритм для поверхностей
algo1D = quadra.Segment()
# определите гипотезу "NumberOfSegments", чтобы вырезать
# все грани в установленном числе сегментов
algo1D.NumberOfSegments(4)
# создайте четырехугольник 2-ый алгоритм для поверхностей
quadra.Quadrangle()
# создайте подсетку на грани с местной гипотезой
algo_local = quadra.Segment(EdgeX)
# определите гипотезу "Arithmetic1D", чтобы вырезать грань в нескольких
сегментах с увеличением арифметической длины
algo_local.Arithmetic1D(1, 4)
# определите гипотезу "Распространения", которая размножает все другие
гипотезы на всех гранях противоположной стороны в случае четырехугольных
поверхностей
algo_local.Propagation()
# вычислите сетку
quadra.Compute()
Редактирование сетки
import geompy
import smesh
def PrintMeshInfo(theMesh):
aMesh = theMesh.GetMesh()
print "Information about mesh:"
print "Number of nodes
: ",
print "Number of edges
: ",
print "Number of faces
: ",
print "Number of volumes
: ",
pass
aMesh.NbNodes()
aMesh.NbEdges()
aMesh.NbFaces()
aMesh.NbVolumes()
# создайте блок
box = geompy.MakeBox(0., 0., 0., 20., 20., 20.)
geompy.addToStudy(box, "box")
# выберите одну грань блока для определения местной гипотезы
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["EDGE"])
edge = subShapeList[0]
name = geompy.SubShapeName(edge, box)
geompy.addToStudyInFather(box, edge, name)
# создайте сетку
tria = smesh.Mesh(box, "Mesh 2D")
algo1D = tria.Segment()
hyp1 = algo1D.NumberOfSegments(3)
algo2D = tria.Triangle()
hyp2 = algo2D.MaxElementArea(10.)
# создайте подсетку
algo_local = tria.Segment(edge)
hyp3 = algo_local.Arithmetic1D(1, 6)
hyp4 = algo_local.Propagation()
176
# вычислите сетку
tria.Compute()
PrintMeshInfo(tria)
# удалите местную гипотезу
mesh = tria.GetMesh()
mesh.RemoveHypothesis(edge, hyp4)
# вычислите сетку
tria.Compute()
PrintMeshInfo(tria)
# измените значение 2-ой гипотезы
hyp2.SetMaxElementArea(2.)
# вычислите сетку
tria.Compute()
PrintMeshInfo(tria)
Экспорт Сетки
import geompy
import smesh
# создайте блок
box = geompy.MakeBox(0., 0., 0., 100., 200., 300.)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
tetra = smesh.Mesh(box, "MeshBox")
algo1D = tetra.Segment()
algo1D.NumberOfSegments(7)
algo2D = tetra.Triangle()
algo2D.MaxElementArea(800.)
algo3D = tetra.Tetrahedron(smesh.NETGEN)
algo3D.MaxElementVolume(900.)
# вычислите сетку
tetra.Compute()
# экспортируйте сетку в файле MED
tetra.ExportMED("/tmp/meshMED.med", 0)
Как мешинговать цилиндр с шестигранниками?
Здесь Вы можете видеть пример сценария Python, создавая сетку шестигранника на
цилиндре. И изображение ниже исходного текста сценария, демонстрируя получающуюся
сетку.
# CEA/LGLS 2007, Francis KLOSS (OCC)
# ==================================
177
import math
import geompy
import smesh
geo = geompy
# Параметры
# ---------radius = 50
height = 200
# Встройте цилиндр
# ---------------base = geo.MakeVertex(0, 0, 0)
direction = geo.MakeVectorDXDYDZ(0, 0, 1)
cylinder = geo.MakeCylinder(base, direction, radius, height)
geo.addToStudy(cylinder, "cylinder")
# Встройте блоки
# -----------size = radius/2.0
box_rot = geo.MakeBox(-size, -size, 0, +size, +size, height)
box_axis = geo.MakeLine(base, direction)
box = geo.MakeRotation(box_rot, box_axis, math.pi/4)
hole = geo.MakeCut(cylinder, box)
plane_trim = 2000
plane_a = geo.MakePlane(base, geo.MakeVectorDXDYDZ(1, 0, 0), plane_trim)
plane_b = geo.MakePlane(base, geo.MakeVectorDXDYDZ(0, 1, 0), plane_trim)
blocks_part = geo.MakePartition([hole], [plane_a, plane_b], [], [],
geo.ShapeType["SOLID"])
blocks_list = [box] + geo.SubShapeAll(blocks_part, geo.ShapeType["SOLID"])
blocks_all = geo.MakeCompound(blocks_list)
blocks = geo.MakeGlueFaces(blocks_all, 0.0001)
geo.addToStudy(blocks, "cylinder:blocks")
# Встройте геометрические группы
# ---------------------def group(name, shape, type, base=None, direction=None):
t = geo.ShapeType[type]
g = geo.CreateGroup(shape, t)
geo.addToStudy(g, name)
g.SetName(name)
if base!=None:
l = geo.GetShapesOnPlaneWithLocationIDs(shape, t, direction, base,
geo.GEOM.ST_ON)
geo.UnionIDs(g, l)
178
return g
group_a = group("baseA", blocks, "FACE", base, direction)
base_b = geo.MakeVertex(0, 0, height)
group_b = group("baseB", blocks, "FACE", base_b, direction)
group_1 = group("limit", blocks, "SOLID")
group_1_all = geo.SubShapeAllIDs(blocks, geo.ShapeType["SOLID"])
geo.UnionIDs(group_1, group_1_all)
group_1_box = geo.GetBlockNearPoint(blocks, base)
geo.DifferenceList(group_1, [group_1_box])
# Свяжите блоки с шестигранником
# ------------------------------def discretize(x, y, z, n, s=blocks):
p = geo.MakeVertex(x, y, z)
e = geo.GetEdgeNearPoint(s, p)
a = hexa.Segment(e)
a.NumberOfSegments(n)
a.Propagation()
hexa = smesh.Mesh(blocks)
hexa_1d = hexa.Segment()
hexa_1d.NumberOfSegments(1)
discretize(+radius
, +radius,
0,
discretize(-radius
, +radius,
0,
discretize((radius+size)/2,
0,
0,
discretize(
+radius,
0, height/2,
5)
8)
10)
20)
hexa.Quadrangle()
hexa.Hexahedron()
hexa.Compute()
hexa.Group(group_a)
hexa.Group(group_b)
hexa.Group(group_1)
179
Создание составной структуры сеток
import geompy
import smesh
## создайте контрбуксу
Box_inf = geompy.MakeBox(0., 0., 0., 200., 200., 50.)
# получите главную поверхность
Psup1=geompy.MakeVertex(100., 100., 50.)
Fsup1=geompy.GetFaceNearPoint(Box_inf, Psup1)
# get a bottom face
Pinf1=geompy.MakeVertex(100., 100., 0.)
Finf1=geompy.GetFaceNearPoint(Box_inf, Pinf1)
## создайте главный блок
Box_sup = geompy.MakeBox(100., 100., 50., 200., 200., 100.)
# получите главную поверхность
Psup2=geompy.MakeVertex(150., 150., 100.)
Fsup2=geompy.GetFaceNearPoint(Box_sup, Psup2)
# get a bottom face
Pinf2=geompy.MakeVertex(150., 150., 50.)
Finf2=geompy.GetFaceNearPoint(Box_sup, Pinf2)
180
## Пропишите в исследовании
geompy.addToStudy(Box_inf, "Box_inf")
geompy.addToStudyInFather(Box_inf, Fsup1, "Fsup")
geompy.addToStudyInFather(Box_inf, Finf1, "Finf")
geompy.addToStudy(Box_sup, "Box_sup")
geompy.addToStudyInFather(Box_sup, Fsup2, "Fsup")
geompy.addToStudyInFather(Box_sup, Finf2, "Finf")
## создайте сетку основания
Mesh_inf = smesh.Mesh(Box_inf, "Mesh_inf")
algo1D_1=Mesh_inf.Segment()
algo1D_1.NumberOfSegments(10)
algo2D_1=Mesh_inf.Quadrangle()
algo3D_1=Mesh_inf.Hexahedron()
Mesh_inf.Compute()
# создайте группу на главной поверхности
Gsup1=Mesh_inf.Group(Fsup1, "Sup")
# create a group on the bottom face
Ginf1=Mesh_inf.Group(Finf1, "Inf")
## создайте главную сетку
Mesh_sup = smesh.Mesh(Box_sup, "Mesh_sup")
algo1D_2=Mesh_sup.Segment()
algo1D_2.NumberOfSegments(5)
algo2D_2=Mesh_sup.Quadrangle()
algo3D_2=Mesh_sup.Hexahedron()
Mesh_sup.Compute()
# создайте группу на главной поверхности
Gsup2=Mesh_sup.Group(Fsup2, "Sup")
# создайте группу на нижней поверхности
Ginf2=Mesh_sup.Group(Finf2, "Inf")
## создайте составные структуры
# создайте составную структуру двух сеток с переименовыванием групп с теми же
самыми названиями и объединение элементов с данным допуском
Compound1 = smesh.smesh.Concatenate([Mesh_inf.GetMesh(), Mesh_sup.GetMesh()],
0, 1, 1e-05)
smesh.SetName(Compound1, 'Compound_with_RenamedGrps_and_MergeElems')
# создайте составную структуру двух сеток с объединяющимися группами с теми
же самыми названиями и создание групп всех элементов
Compound2 = smesh.smesh.ConcatenateWithGroups([Mesh_inf.GetMesh(),
Mesh_sup.GetMesh()], 1, 0, 1e-05)
smesh.SetName(Compound2, 'Compound_with_UniteGrps_and_GrpsOfAllElems')
# конец
181
Рассмотрение Сеток
Рассмотрение информации о Сетке
import geompy
import smesh
# создайте блок
box = geompy.MakeBox(0., 0., 0., 20., 20., 20.)
geompy.addToStudy(box, "box")
# создайте сетку
tetra = smesh.Mesh(box, "MeshBox")
algo1D = tetra.Segment()
algo1D.NumberOfSegments(3)
algo2D = tetra.Triangle()
algo2D.MaxElementArea(10.)
algo3D = tetra.Tetrahedron(smesh.NETGEN)
algo3D.MaxElementVolume(900.)
# вычислите сетку
tetra.Compute()
# print information about the mesh
print "Information about mesh:"
print "Number of nodes
: ", tetra.NbNodes()
print "Number of edges
: ", tetra.NbEdges()
print "Number of faces
: ", tetra.NbFaces()
print "
triangles
: ", tetra.NbTriangles()
print "
quadrangles : ", tetra.NbQuadrangles()
print "
polygons
: ", tetra.NbPolygons()
print "Number of volumes
: ", tetra.NbVolumes()
print "
tetrahedrons: ", tetra.NbTetras()
print "
hexahedrons : ", tetra.NbHexas()
print "
prisms
: ", tetra.NbPrisms()
print "
pyramids
: ", tetra.NbPyramids()
print "
polyhedrons : ", tetra.NbPolyhedrons()
182
Определение Гипотез и Алгоритмов
Определение 1D Гипотезы
1D Арифметика
import geompy
import smesh
# создайте блок
box = geompy.MakeBoxDXDYDZ(10., 10., 10.)
geompy.addToStudy(box, "Box")
# создайте сетку шестигранника на блоке
hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
# создайте регулярный 1D алгоритм для граней
algo1D = hexa.Segment()
# определите гипотезу "Arithmetic1D", чтобы вырезать все грани в нескольких
сегментах с увеличением арифметической длины
algo1D.Arithmetic1D(1, 4)
# создайте четырехугольник 2D алгоритм для поверхностей
hexa.Quadrangle()
# создайте шестигранник трехмерный алгоритм для тел
hexa.Hexahedron()
# вычислите сетку
hexa.Compute()
Отклонение 1D и Число Сегментов
import geompy
import smesh
# создайте поверхность из дуги и прямо делитесь на сегменты
px = geompy.MakeVertex(100., 0. , 0. )
py = geompy.MakeVertex(0. , 100., 0. )
pz = geompy.MakeVertex(0. , 0. , 100.)
exy = geompy.MakeEdge(px, py)
arc = geompy.MakeArc(py, pz, px)
wire = geompy.MakeWire([exy, arc])
isPlanarFace = 1
face1 = geompy.MakeFace(wire, isPlanarFace)
geompy.addToStudy(face1,"Face1")
# get edges from the face
e_straight,e_arc = geompy.SubShapeAll(face1, geompy.ShapeType["EDGE"])
183
geompy.addToStudyInFather(face1, e_arc, "Arc Edge")
# создайте сетку hexahedral
hexa = smesh.Mesh(face1, "Face : triangle mesh")
# определите гипотезу "NumberOfSegments", чтобы вырезать прямую грань в
установленном числе сегментов
algo1D = hexa.Segment()
algo1D.NumberOfSegments(6)
# определите гипотезу "MaxElementArea"
algo2D = hexa.Triangle()
algo2D.MaxElementArea(70.0)
# определите местную гипотезу "Deflection1D" на дуге
algo_local = hexa.Segment(e_arc)
algo_local.Deflection1D(1.0)
# вычислите сетку
hexa.Compute()
Начальная и Конечная Длина
from geompy import *
import smesh
# создайте блок
box = MakeBoxDXDYDZ(10., 10., 10.)
addToStudy(box, "Box")
# заставьте одну грань блока надеть местную гипотезу
p5 = MakeVertex(5., 0., 0.)
EdgeX = GetEdgeNearPoint(box, p5)
addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
# создайте сетку hexahedral на блоке
hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
# set algorithms
algo1D = hexa.Segment()
hexa.Quadrangle()
hexa.Hexahedron()
# определите гипотезу "NumberOfSegments", чтобы вырезать грань в
установленном числе сегментов
algo1D.NumberOfSegments(4)
# создайте местную гипотезу
algo_local = hexa.Segment(EdgeX)
# определите гипотезу "StartEndLength", чтобы вырезать грань в нескольких
сегментах с увеличением геометрической длины
algo_local.StartEndLength(1, 6)
# определите гипотезу "Распространения", которая размножает всю другую
гипотезу
# на всех гранях на противоположной стороне в случае четырехугольных
поверхностей
algo_local.Propagation()
184
# вычислите сетку
hexa.Compute()
Средняя Длина
from geompy import *
import smesh
# создайте блок
box = MakeBoxDXDYDZ(10., 10., 10.)
addToStudy(box, "Box")
# заставьте одну грань блока надевать местную гипотезу
p5 = MakeVertex(5., 0., 0.)
EdgeX = GetEdgeNearPoint(box, p5)
addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
# создайте сетку hexahedral на блоке
hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
# установите алгоритмы
algo1D = hexa.Segment()
hexa.Quadrangle()
hexa.Hexahedron()
# определите гипотезу "NumberOfSegments", чтобы вырезать все грани в
установленном числе сегментов
algo1D.NumberOfSegments(4)
# создайте подсетку
algo_local = hexa.Segment(EdgeX)
# определите гипотезу "LocalLength", чтобы вырезать грань в нескольких
сегментах с той же самой длиной
algo_local.LocalLength(2.)
# определите гипотезу "Распространения", которая размножает всю другую
гипотезу
# на всех гранях на противоположной стороне в случае четырехугольных
поверхностей
algo_local.Propagation()
# вычислите сетку
hexa.Compute()
Определение 2D и трехмерных гипотез
Максимальная площадь элемента
import geompy
import smesh
import salome
# создайте поверхность
px
= geompy.MakeVertex(100., 0.
, 0.
)
185
py
pz
= geompy.MakeVertex(0.
= geompy.MakeVertex(0.
, 100., 0. )
, 0. , 100.)
vxy = geompy.MakeVector(px, py)
arc = geompy.MakeArc(py, pz, px)
wire = geompy.MakeWire([vxy, arc])
isPlanarFace = 1
face = geompy.MakeFace(wire, isPlanarFace)
# добавьте поверхность в исследовании
id_face = geompy.addToStudy(face, "Face to be meshed")
# создайте сетку
tria_mesh = smesh.Mesh(face, "Face : triangulation")
# определите 1D мешинг
algo = tria_mesh.Segment()
algo.NumberOfSegments(20)
# определите 2D мешинг:
# назначьте алгоритм триангуляции
algo = tria_mesh.Triangle()
# примените "гипотезу" Максимальная площадь элемента к каждому треугольнику
algo.MaxElementArea(100)
# вычислите сетку
tria_mesh.Compute()
Максимальный Объем Элемента
import geompy
import smesh
# создайте цилиндр
cyl = geompy.MakeCylinderRH(30., 50.)
geompy.addToStudy(cyl, "cyl")
# создайте сетку на цилиндре
tetra = smesh.Mesh(cyl, "Cylinder : tetrahedrical mesh")
# назначьте алгоритмы
algo1D = tetra.Segment()
algo2D = tetra.Triangle()
algo3D = tetra.Tetrahedron(smesh.NETGEN)
# назначьте 1D и 2-ые гипотезы
algo1D.NumberOfSegments(7)
algo2D.MaxElementArea(150.)
# назначьте гипотезу Максимальный объем элемента
algo3D.MaxElementVolume(200.)
# вычислите сетку
ret = tetra.Compute()
if ret == 0:
print "probleme when computing the mesh"
else:
186
print "Computation succeded"
Длина от Ребер
import geompy
import smesh
# создайте скетчеры
sketcher1 = geompy.MakeSketcher("Sketcher:F 0 0:TT 70 0:TT 70 70:TT 0 70:WW")
sketcher2 = geompy.MakeSketcher("Sketcher:F 20 20:TT 50 20:TT 50 50:TT 20
50:WW")
# создайте поверхность из двух соединительных линий
isPlanarFace = 1
face1 = geompy.MakeFaces([sketcher1, sketcher2], isPlanarFace)
geompy.addToStudy(face1, "Face1")
# создайте сетку
tria = smesh.Mesh(face1, "Face : triangle 2D mesh")
# Определите 1D мешинг
algo1D = tria.Segment()
algo1D.NumberOfSegments(2)
# создайте и назначьте алгоритм для 2-ого мешинга с треугольниками
algo2D = tria.Triangle()
# создайте и поручите гипотезе "LengthFromEdges" встраивать треугольники,
основанные на длине граней, взятых от соединительной линии
algo2D.LengthFromEdges()
# вычислите сетку
tria.Compute()
Определение Дополнительных Гипотез
Распространение
from geompy import *
import smesh
# создайте блок
box = MakeBoxDXDYDZ(10., 10., 10.)
addToStudy(box, "Box")
# заставьте одну грань блока надевать местную гипотезу
p5 = MakeVertex(5., 0., 0.)
EdgeX = GetEdgeNearPoint(box, p5)
addToStudyInFather(box, EdgeX, "Edge [0,0,0 - 10,0,0]")
187
# создайте сетку hexahedral на блоке
hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
# алгоритмы глобальной переменной набора и гипотезы
algo1D = hexa.Segment()
hexa.Quadrangle()
hexa.Hexahedron()
algo1D.NumberOfSegments(4)
# создайте подсетку с местным 1D гипотеза и распространение
algo_local = hexa.Segment(EdgeX)
# определите гипотезу "Arithmetic1D", чтобы вырезать грань в нескольких
сегментах с увеличивающейся длиной
algo_local.Arithmetic1D(1, 4)
# определите гипотезу "Распространения", которая размножает все другой 1D
гипотезы
# от всех граней на противоположной стороне поверхности в случае
четырехугольных поверхностей
algo_local.Propagation()
# вычислите сетку
hexa.Compute()
Определение Алгоритмов мешинга
import geompy
import smesh
# создайте блок
box = geompy.MakeBoxDXDYDZ(10., 10., 10.)
geompy.addToStudy(box, "Box")
# 1. Создайте сетку hexahedral на блоке
hexa = smesh.Mesh(box, "Box : hexahedrical mesh")
# создайте регулярный 1D алгоритм для граней
algo1D = hexa.Segment()
# создайте четырехугольник 2-ой алгоритм для поверхностей
algo2D = hexa.Quadrangle()
# создайте шестигранник трехмерный алгоритм для тел
algo3D = hexa.Hexahedron()
# определите гипотезы
algo1D.Arithmetic1D(1, 4)
# вычислите сетку
hexa.Compute()
# 2. Создайте четырёхгранную сетку на блоке
tetra = smesh.Mesh(box, "Box : tetrahedrical mesh")
# создайте регулярный 1D алгоритм для граней
algo1D = tetra.Segment()
# создайте 2-ой алгоритм Mefisto для поверхностей
algo2D = tetra.Triangle()
188
# создайте трехмерный алгоритм Netgen для тел
algo3D = tetra.Tetrahedron(smesh.NETGEN)
# определите гипотезы
algo1D.Arithmetic1D(1, 4)
algo2D.LengthFromEdges()
# вычислите сетку
tetra.Compute()
# 3. Создайте четырёхгранную сетку на блоке с алгоритмом NETGEN_2D3D
tetraN = smesh.Mesh(box, "Box : tetrahedrical mesh by NETGEN_2D3D")
# создайте алгоритм Netgen_2D3D для тел
algo3D = tetraN.Tetrahedron(smesh.FULL_NETGEN)
# определите гипотезы
n23_params = algo3D.Parameters()
# вычислите сетку
tetraN.Compute()
Контроль качества
Свободные Границы
import salome
import geompy
import smesh
# создайте открытую оболочку: блок без одной поверхности
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList.remove(FaceList[5])
box = geompy.MakeShell(FaceList)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
mesh = smesh.Mesh(box, "Mesh_free_borders")
algo = mesh.Segment()
algo.NumberOfSegments(5)
algo = mesh.Triangle()
algo.MaxElementArea(20.)
mesh.Compute()
# критерий: свободные границы
aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_FreeBorders)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Free borders Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
189
pass
print ""
# создайте группу
aGroup = mesh.CreateGroup(SMESH.EDGE, "Free borders")
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Границы на Мультиподключении
import salome
import geompy
import smesh
import SMESH
# создайте открытую оболочку: блок без одной поверхности
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList.remove(FaceList[5])
box = geompy.MakeShell(FaceList)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
mesh = smesh.Mesh(box, "Mesh_borders_at_multi-connections")
algo = mesh.Segment()
algo.NumberOfSegments(5)
algo = mesh.Triangle()
algo.MaxElementArea(20.)
mesh.Compute()
# Критерий: Границы на мультиподключении
nb_conn = 2
aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_MultiConnection,
smesh.FT_EqualTo, nb_conn)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Borders at multi-connections Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateGroup(SMESH.EDGE, "Borders at multi-connections")
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Длина 1D
import salome
190
import geompy
import smesh
# создайте открытую оболочку: блок без одной поверхности
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList.remove(FaceList[5])
box = geompy.MakeShell(FaceList)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
mesh = smesh.Mesh(box, "Mesh_Length_1D")
algo = mesh.Segment()
algo.NumberOfSegments(5)
algo = mesh.Triangle()
algo.MaxElementArea(20.)
mesh.Compute()
# Критерий: Длина> 3.
length_margin = 3.
aFilter = smesh.GetFilter(smesh.EDGE, smesh.FT_Length, smesh.FT_MoreThan,
length_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Edges length > ", length_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateGroup(SMESH.EDGE, "Edges with length > " +
`length_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Свободные Ребра
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
aFilterMgr = smesh.CreateFilterManager()
# Удалите некоторые элементы, чтобы получить свободные грани
# Критерий: ОБЛАСТЬ> 95.
area_margin = 95.
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan,
area_margin)
191
anIds = mesh.GetIdsFromFilter(aFilter)
mesh.RemoveElements(anIds)
# Критерий: Свободные Грани
aBorders = mesh.GetFreeBorders()
# создайте группы
aGroupF = mesh.CreateGroup(SMESH.FACE, "Faces with free edges")
aGroupN = mesh.CreateGroup(SMESH.NODE, "Nodes on free edges")
# наполните группы элементами, соответствуя критерию
print ""
print "Criterion: Free edges Nb = ", len(aBorders)
for i in range(len(aBorders)):
aBorder = aBorders[i]
print "Face # ", aBorder.myElemId, " : Edge between nodes (",
print aBorder.myPnt1, ", ", aBorder.myPnt2, ")"
aGroupF.Add([aBorder.myElemId])
aGroupN.Add([aBorder.myPnt1, aBorder.myPnt2])
salome.sg.updateObjBrowser(1)
2D длина
import salome
import geompy
import smesh
# создайте открытую оболочку: блок без одной поверхности
box = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
FaceList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
FaceList.remove(FaceList[5])
box = geompy.MakeShell(FaceList)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
mesh = smesh.Mesh(box, "Mesh_Length_2D")
algo = mesh.Segment()
algo.NumberOfSegments(5)
algo = mesh.Triangle()
algo.MaxElementArea(20.)
mesh.Compute()
# Критерий: Длина 2D> 5.7
length_margin = 5.7
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Length2D, smesh.FT_MoreThan,
length_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Edges length 2D > ", length_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
192
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Faces with length 2D > " +
`length_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Границы на Мультиподключении 2D
import salome
import geompy
import smesh
# создайте составную структуру двух склеенных полей
box1 = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
box2 = geompy.MakeTranslation(box1, 0., 20., 0)
comp = geompy.MakeCompound([box1, box2])
box = geompy.MakeGlueFaces(comp, 0.000001)
idbox = geompy.addToStudy(box, "box")
# создайте сетку
mesh = smesh.Mesh(box, "Box compound : 2D triangle mesh")
algo = mesh.Segment()
algo.NumberOfSegments(5)
algo = mesh.Triangle()
algo.MaxElementArea(20.)
mesh.Compute()
# Критерий: МУЛЬТИПОДКЛЮЧЕНИЕ 2D = 3
nb_conn = 3
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_MultiConnection2D,
smesh.FT_EqualTo, nb_conn)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Borders at multi-connection 2D = ", nb_conn, " Nb = ",
len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Borders at multi-connection 2D =
" + `nb_conn`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
193
Область
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: ОБЛАСТЬ> 100.
area_margin = 100.
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan,
area_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Area > ", area_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Area > " + `area_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Сужение
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: Тонкая свеча> 3e-20
taper_margin = 3e-20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Taper, smesh.FT_MoreThan,
taper_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Taper > ", taper_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
194
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Taper > " + `taper_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Аспект
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: КОЭФФИЦИЕНТ ПРОПОРЦИОНАЛЬНОСТИ> 1.8
ar_margin = 1.8
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio,
smesh.FT_MoreThan, ar_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Aspect Ratio > ", ar_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Aspect Ratio > " + `ar_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Минимальный угол
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: МИНИМАЛЬНЫЙ УГОЛ <35.
min_angle = 35.
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_MinimumAngle,
smesh.FT_LessThan, min_angle)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Minimum Angle < ", min_angle, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
195
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Minimum Angle < " + `min_angle`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Деформирование
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: УГОЛ деформации> 1e-15
wa_margin = 1e-15
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Warping, smesh.FT_MoreThan,
wa_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Warp > ", wa_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Warp > " + `wa_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Перекос
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: Перекос> 38.
skew_margin = 38.
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Skew, smesh.FT_MoreThan,
skew_margin)
196
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Skew > ", skew_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Skew > " + `skew_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Аспект 3D
import SMESH_mechanic_tetra
smesh = SMESH_mechanic_tetra.smesh
mesh
= SMESH_mechanic_tetra.mesh
salome = SMESH_mechanic_tetra.salome
# Критерий: КОЭФФИЦИЕНТ ПРОПОРЦИОНАЛЬНОСТИ трехмерный> 4.5
ar_margin = 4.5
aFilter = smesh.GetFilter(smesh.VOLUME, smesh.FT_AspectRatio3D,
smesh.FT_MoreThan, ar_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print "Criterion: Aspect Ratio 3D > ", ar_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, "Aspect Ratio 3D > " +
`ar_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Объем
import SMESH_mechanic_tetra
smesh
= SMESH_mechanic_tetra.smesh
197
mesh
= SMESH_mechanic_tetra.mesh
salome = SMESH_mechanic_tetra.salome
# Критерий: ОБЪЕМ <7.
volume_margin = 7.
aFilter = smesh.GetFilter(smesh.VOLUME, smesh.FT_Volume3D, smesh.FT_LessThan,
volume_margin)
anIds = mesh.GetIdsFromFilter(aFilter)
# печатайте результат
print ""
print "Criterion: Volume < ", volume_margin, " Nb = ", len(anIds)
j = 1
for i in range(len(anIds)):
if j > 20: j = 1; print ""
print anIds[i],
j = j + 1
pass
print ""
# создайте группу
aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, "Volume < " + `volume_margin`)
aGroup.Add(anIds)
salome.sg.updateObjBrowser(1)
Группирование Элементов
Создайте Автономную Группу
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Получите ID всех поверхностей с областью> 100
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 100.)
anIds = mesh.GetIdsFromFilter(aFilter)
# создайте группу, состоящую из поверхностей с областью> 100
aGroup = mesh.MakeGroupByIds("Area > 100", smesh.FACE, anIds)
salome.sg.updateObjBrowser(1)
198
Создайте Группу на Геометрии
import salome
import geompy
import smesh
# создайте блок
box = geompy.MakeBox(0., 0., 0., 100., 100., 100.)
geompy.addToStudy(box, "box")
# добавьте первую поверхность блока к исследованию
subShapeList = geompy.SubShapeAll(box, geompy.ShapeType["FACE"])
face = subShapeList[0]
geompy.addToStudyInFather(box, face, "face 1")
# создайте группу граней на поверхности
aGeomGroupE = geompy.CreateGroup(face, geompy.ShapeType["EDGE"])
geompy.AddObject(aGeomGroupE, 3)
geompy.AddObject(aGeomGroupE, 6)
geompy.AddObject(aGeomGroupE, 8)
geompy.AddObject(aGeomGroupE, 10)
geompy.addToStudyInFather(face, aGeomGroupE, "Group of Edges")
# создайте четырехугольник 2-ая сетка на блоке
quadra = smesh.Mesh(box, "Box : quadrangle 2D mesh")
algo1D = quadra.Segment()
quadra.Quadrangle()
algo1D.NumberOfSegments(7)
# вычислите сетку
quadra.Compute()
# создайте группу SMESH на поверхности с названием "SMESHGroup1"
199
aSmeshGroup1 = quadra.GroupOnGeom(face, "SMESHGroup1")
# создайте группу SMESH на <aGeomGroupE> с названием значения по умолчанию
aSmeshGroup2 = quadra.GroupOnGeom(aGeomGroupE)
salome.sg.updateObjBrowser(1)
Редактирование Группы
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Получите ID всех поверхностей с областью> 35
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 35.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area > 35, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью> 35
aGroup = mesh.CreateEmptyGroup(smesh.FACE, "Area > 35")
aGroup.Add(anIds)
# Получите ID всех поверхностей с областью> 40
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 40.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area > 40, Nb = ", len(anIds)
# создайте группу элементов с областью [35; 40], удаляя элементы с область>
40 от группы aGroup
aGroup.Remove(anIds)
# печатайте результат
aGroupElemIDs = aGroup.GetListOfID()
print "Criterion: 35 < Area < 40, Nb = ", len(aGroupElemIDs)
j = 1
for i in range(len(aGroupElemIDs)):
if j > 20: j = 1; print ""
print aGroupElemIDs[i],
j = j + 1
pass
print ""
salome.sg.updateObjBrowser(1)
200
Объединение двух групп
import SMESH_mechanic
201
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: ОБЛАСТЬ> 20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area > 20, Nb = ", len( anIds )
# создайте группу, добавляя элементы с областью> 20
aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20")
aGroup1.Add(anIds)
# Критерий: ОБЛАСТЬ = 20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_EqualTo, 20.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area = 20, Nb = ", len( anIds )
# создайте группу, добавляя элементы с областью = 20
aGroup2 = mesh.CreateEmptyGroup( smesh.FACE, "Area = 20" )
aGroup2.Add(anIds)
# создайте группу объединения: область> = 20
aGroup3 = mesh.UnionGroups(aGroup1, aGroup2, "Area >= 20")
print "Criterion: Area >= 20, Nb = ", len(aGroup3.GetListOfID())
# Критерий: ОБЛАСТЬ <20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 20.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area < 20, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью <20
aGroup4 = mesh.CreateEmptyGroup(smesh.FACE, "Area < 20")
aGroup4.Add(anIds)
# создайте группу объединения: область> = 20 и область <20
aGroup5 = mesh.UnionGroups(aGroup3, aGroup4, "Any Area")
print "Criterion: Any Area, Nb = ", len(aGroup5.GetListOfID())
salome.sg.updateObjBrowser(1)
202
203
Пересечение двух групп
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: ОБЛАСТЬ> 20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area > 20, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью> 20
aGroup1 = mesh.CreateEmptyGroup(SMESH.FACE, "Area > 20")
aGroup1.Add(anIds)
# Критерий: ОБЛАСТЬ <60
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 60.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area < 60, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью <60
aGroup2 = mesh.CreateEmptyGroup(SMESH.FACE, "Area < 60")
aGroup2.Add(anIds)
# создайте пересечение групп: 20 <область <60
aGroup3 = mesh.IntersectGroups(aGroup1, aGroup2, "20 < Area < 60")
print "Criterion: 20 < Area < 60, Nb = ", len(aGroup3.GetListOfID())
salome.sg.updateObjBrowser(1)
204
205
Вырезка двух групп
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh
= SMESH_mechanic.mesh
salome = SMESH_mechanic.salome
# Критерий: ОБЛАСТЬ> 20
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, 20.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area > 20, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью> 20
aGroupMain = mesh.MakeGroupByIds("Area > 20", smesh.FACE, anIds)
# Критерий: ОБЛАСТЬ <60
aFilter = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_LessThan, 60.)
anIds = mesh.GetIdsFromFilter(aFilter)
print "Criterion: Area < 60, Nb = ", len(anIds)
# создайте группу, добавляя элементы с областью <60
aGroupTool = mesh.MakeGroupByIds("Area < 60", smesh.FACE, anIds)
# создайте вырезку групп: область> = 60
aGroupRes = mesh.CutGroups(aGroupMain, aGroupTool, "Area >= 60")
print "Criterion: Area >= 60, Nb = ", len(aGroupRes.GetListOfID())
salome.sg.updateObjBrowser(1)
206
207
Изменение Сеток
Добавление Узлов и Элементов
Добавьте Узел
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
# добавьте узел
new_id = mesh.AddNode(50, 10, 0)
print ""
if new_id == 0: print "KO node addition."
else:
print "New Node has been added with ID ", new_id
208
Добавьте Ребро
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
print ""
# добавьте узел
n1 = mesh.AddNode(50, 10, 0)
if n1 == 0: print "KO node addition."
# добавьте грань
e1 = mesh.AddEdge([n1, 38])
if e1 == 0: print "KO edge addition."
else:
print "New Edge has been added with ID ", e1
Добавьте Треугольник
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
print ""
# добавьте узел
n1 = mesh.AddNode(50, 10, 0)
if n1 == 0: print "KO node addition."
# добавьте треугольник
t1 = mesh.AddFace([n1, 38, 39])
if t1 == 0: print "KO triangle addition."
else:
print "New Triangle has been added with ID ", t1
Добавьте Четырехугольник
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
print ""
# добавьте узел
n1 = mesh.AddNode(50, 10, 0)
if n1 == 0: print "KO node addition."
n2 = mesh.AddNode(40, 20, 0)
if n2 == 0: print "KO node addition."
# добавьте четырехугольник
q1 = mesh.AddFace([n2, n1, 38, 39])
if q1 == 0: print "KO quadrangle addition."
else:
print "New Quadrangle has been added with ID ", q1
Добавьте Четырёхгранник
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
209
print ""
# добавьте узел
n1 = mesh.AddNode(50, 10, 0)
if n1 == 0: print "KO node addition."
# добавьте четырёхгранник
t1 = mesh.AddVolume([n1, 38, 39, 246])
if t1 == 0: print "KO tetrahedron addition."
else:
print "New Tetrahedron has been added with ID ", t1
Добавьте Шестигранник
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
print ""
# добавьте узлы
nId1 = mesh.AddNode(50,
nId2 = mesh.AddNode(47,
nId3 = mesh.AddNode(50,
nId4 = mesh.AddNode(47,
10,
12,
10,
12,
0)
0)
10)
10)
if nId1 == 0 or nId2 == 0 or nId3 == 0 or nId4 == 0: print "KO node
addition."
# добавьте шестигранник
vId = mesh.AddVolume([nId2, nId1, 38, 39, nId4, nId3, 245, 246])
if vId == 0: print "KO Hexahedron addition."
else:
print "New Hexahedron has been added with ID ", vId
Добавьте Полигон
import math
import salome
import smesh
# создайте пустую структуру сетки
mesh = smesh.Mesh()
# метод, чтобы встроить многоугольный элемент сетки с <nb_vert> углы:
def MakePolygon (a_mesh, x0, y0, z0, radius, nb_vert):
al = 2.0 * math.pi / nb_vert
node_ids = []
# Создайте узлы для полигона
for ii in range(nb_vert):
nid = mesh.AddNode(x0 + radius * math.cos(ii*al),
y0 + radius * math.sin(ii*al),
z0)
node_ids.append(nid)
pass
# Создайте полигон
return mesh.AddPolygonalFace(node_ids)
210
# Создайте три полигона
f1 = MakePolygon(mesh, 0, 0, 0, 30, 13)
f2 = MakePolygon(mesh, 0, 0, 10, 21, 9)
f3 = MakePolygon(mesh, 0, 0, 20, 13, 6)
salome.sg.updateObjBrowser(1)
Добавьте Многогранник
import salome
import math
# создайте пустую структуру сетки
mesh = smesh.Mesh()
# Создайте узлы для 12-гранника с пятиугольными поверхностями
al = 2 * math.pi / 5.0
cosal = math.cos(al)
aa = 13
rr = aa / (2.0 * math.sin(al/2.0))
dr = 2.0 * rr * cosal
r1 = rr + dr
dh = rr * math.sqrt(2.0 * (1.0 - cosal * (1.0 + 2.0 * cosal)))
hh = 2.0 * dh - dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh
dd
cc
bb
aa
=
=
=
=
[]
[]
[]
[]
#
#
#
#
top
below top
above bottom
bottom
for i in range(5):
cos_bot = math.cos(i*al)
sin_bot = math.sin(i*al)
cos_top = math.cos(i*al + al/2.0)
sin_top = math.sin(i*al + al/2.0)
nd = mesh.AddNode(rr * cos_top,
nc = mesh.AddNode(r1 * cos_top,
nb = mesh.AddNode(r1 * cos_bot,
na = mesh.AddNode(rr * cos_bot,
dd.append(nd) # top
cc.append(nc) # below top
bb.append(nb) # above bottom
aa.append(na) # bottom
pass
rr
r1
r1
rr
*
*
*
*
sin_top, hh
) #
sin_top, hh - dh) #
sin_bot,
dh) #
sin_bot,
0) #
top
below top
above bottom
bottom
# Create a polyhedral volume (12-hedron with pentagonal faces)
MeshEditor.AddPolyhedralVolume([dd[0], dd[1], dd[2], dd[3], dd[4],
dd[0], cc[0], bb[1], cc[1], dd[1],
dd[1], cc[1], bb[2], cc[2], dd[2],
dd[2], cc[2], bb[3], cc[3], dd[3],
top
dd[3], cc[3], bb[4], cc[4], dd[4],
dd[4], cc[4], bb[0], cc[0], dd[0],
aa[4], bb[4], cc[4], bb[0], aa[0],
aa[3], bb[3], cc[3], bb[4], aa[4],
aa[2], bb[2], cc[2], bb[3], aa[3],
bottom
aa[1], bb[1], cc[1], bb[2], aa[2],
#
#
#
#
top
- below
#
#
#
#
#
.
.
. above
# .
211
aa[0], bb[0], cc[0], bb[1], aa[1], # .
aa[0], aa[1], aa[2], aa[3], aa[4]], # bottom
[5,5,5,5,5,5,5,5,5,5,5,5])
salome.sg.updateObjBrowser(1)
Удаление Узлов и Элементов
Удаление Узлов
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
# удалите узлы #246 и #255
res = mesh.RemoveNodes([246, 255])
if res == 1: print "Nodes removing is OK!"
else:
print "KO nodes removing."
Удаление Элементов
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
# удалите три элемента: #850, #859 и #814
res = mesh.RemoveElements([850, 859, 814])
if res == 1: print "Elements removing is OK!"
else:
print "KO Elements removing."
Изменение нумерации Узлов и Элементов
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
mesh.RenumberNodes()
mesh.RenumberElements()
Перемещение Узлов
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
# переместите узел #38
mesh.MoveNode(38, 20., 10., 0.)
212
Точка смещения сетки
from geompy import *
from smesh import *
box = MakeBoxDXDYDZ(200, 200, 200)
mesh = Mesh( box )
mesh.Segment().AutomaticLength(0.1)
mesh.Quadrangle()
mesh.Compute()
# find node at (0,0,0)
node000 = None
for vId in SubShapeAllIDs( box, ShapeType["VERTEX"]):
if node000: break
nodeIds = mesh.GetSubMeshNodesId( vId, True )
for node in nodeIds:
xyz = mesh.GetNodeXYZ( node )
if xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 :
node000 = node
pass
pass
pass
if not node000:
raise "node000 not found"
# find node000 using the tested function
n = mesh.FindNodeClosestTo( -1,-1,-1 )
if not n == node000:
raise "FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )
# check if any node will be found for a point inside a box
n = mesh.FindNodeClosestTo( 100, 100, 100 )
if not n > 0:
raise "FindNodeClosestTo( 100, 100, 100 ) fails"
# move node000 to a new location
x,y,z = -10, -10, -10
n = mesh.MeshToPassThroughAPoint( x,y,z )
if not n == node000:
raise "FindNodeClosestTo() returns " + str( n ) + " != " + str( node000 )
# check the coordinates of the node000
xyz = mesh.GetNodeXYZ( node000 )
if not ( xyz[0] == x and xyz[1] == y and xyz[2] == z) :
raise "Wrong coordinates: " + str( xyz ) + " != " + str( [x,y,z] )
Диагональная Инверсия
import salome
import smesh
# create an empty mesh structure
mesh = smesh.Mesh()
# create the following mesh:
# .----.----.----.
# |
/|
/|
/|
213
#
#
#
#
| / | / | / |
| / | / | / |
|/
|/
|/
|
.----.----.----.
bb = [0, 0, 0, 0]
tt = [0, 0, 0, 0]
ff = [0, 0, 0, 0, 0, 0]
bb[0]
bb[1]
bb[2]
bb[3]
=
=
=
=
mesh.AddNode( 0.,
mesh.AddNode(10.,
mesh.AddNode(20.,
mesh.AddNode(30.,
0.,
0.,
0.,
0.,
0.)
0.)
0.)
0.)
tt[0]
tt[1]
tt[2]
tt[3]
=
=
=
=
mesh.AddNode( 0.,
mesh.AddNode(10.,
mesh.AddNode(20.,
mesh.AddNode(30.,
15.,
15.,
15.,
15.,
ff[0]
ff[1]
ff[2]
ff[3]
ff[4]
ff[5]
=
=
=
=
=
=
mesh.AddFace([bb[0],
mesh.AddFace([bb[0],
mesh.AddFace([bb[1],
mesh.AddFace([bb[1],
mesh.AddFace([bb[2],
mesh.AddFace([bb[2],
0.)
0.)
0.)
0.)
bb[1],
tt[1],
bb[2],
tt[2],
bb[3],
tt[3],
tt[1]])
tt[0]])
tt[2]])
tt[1]])
tt[3]])
tt[2]])
# inverse the diagonal bb[1] - tt[2]
print "\nDiagonal inversion ... ",
res = mesh.InverseDiag(bb[1], tt[2])
if not res: print "failed!"
else:
print "done."
salome.sg.updateObjBrowser(1)
Объединение двух Треугольников
import salome
import smesh
# создайте пустую структуру сетки
mesh = smesh.Mesh()
#
#
#
#
#
#
#
создайте следующую сетку:
.----.----.----.
|
/|
/|
/|
| / | / | / |
| / | / | / |
|/
|/
|/
|
.----.----.----.
bb = [0, 0, 0, 0]
tt = [0, 0, 0, 0]
ff = [0, 0, 0, 0, 0, 0]
bb[0]
bb[1]
bb[2]
bb[3]
=
=
=
=
mesh.AddNode( 0.,
mesh.AddNode(10.,
mesh.AddNode(20.,
mesh.AddNode(30.,
0.,
0.,
0.,
0.,
0.)
0.)
0.)
0.)
tt[0] = mesh.AddNode( 0., 15., 0.)
214
tt[1] = mesh.AddNode(10., 15., 0.)
tt[2] = mesh.AddNode(20., 15., 0.)
tt[3] = mesh.AddNode(30., 15., 0.)
ff[0]
ff[1]
ff[2]
ff[3]
ff[4]
ff[5]
=
=
=
=
=
=
mesh.AddFace([bb[0],
mesh.AddFace([bb[0],
mesh.AddFace([bb[1],
mesh.AddFace([bb[1],
mesh.AddFace([bb[2],
mesh.AddFace([bb[2],
bb[1],
tt[1],
bb[2],
tt[2],
bb[3],
tt[3],
tt[1]])
tt[0]])
tt[2]])
tt[1]])
tt[3]])
tt[2]])
# удалите диагональ bb [1] - телетайп [2]
print "\nUnite two triangles ... ",
res = mesh.DeleteDiag(bb[1], tt[2])
if not res: print "failed!"
else:
print "done."
salome.sg.updateObjBrowser(1)
Объединение ряда Треугольников
import salome
import smesh
# создайте пустую структуру сетки
mesh = smesh.Mesh()
#
#
#
#
#
#
#
создайте следующую сетку:
.----.----.----.
|
/|
/|
/|
| / | / | / |
| / | / | / |
|/
|/
|/
|
.----.----.----.
bb = [0, 0, 0, 0]
tt = [0, 0, 0, 0]
ff = [0, 0, 0, 0, 0, 0]
bb[0]
bb[1]
bb[2]
bb[3]
=
=
=
=
mesh.AddNode( 0.,
mesh.AddNode(10.,
mesh.AddNode(20.,
mesh.AddNode(30.,
0.,
0.,
0.,
0.,
0.)
0.)
0.)
0.)
tt[0]
tt[1]
tt[2]
tt[3]
=
=
=
=
mesh.AddNode( 0.,
mesh.AddNode(10.,
mesh.AddNode(20.,
mesh.AddNode(30.,
15.,
15.,
15.,
15.,
ff[0]
ff[1]
ff[2]
ff[3]
ff[4]
ff[5]
=
=
=
=
=
=
mesh.AddFace([bb[0],
mesh.AddFace([bb[0],
mesh.AddFace([bb[1],
mesh.AddFace([bb[1],
mesh.AddFace([bb[2],
mesh.AddFace([bb[2],
0.)
0.)
0.)
0.)
bb[1],
tt[1],
bb[2],
tt[2],
bb[3],
tt[3],
tt[1]])
tt[0]])
tt[2]])
tt[1]])
tt[3]])
tt[2]])
# объедините ряд треугольников
print "\nUnite a set of triangles ... ",
res = mesh.TriToQuad([ff[2], ff[3], ff[4], ff[5]], smesh.FT_MinimumAngle,
60.)
215
if not res: print "failed!"
else:
print "done."
salome.sg.updateObjBrowser(1)
Ориентация
import salome
import smesh
# создайте пустую структуру сетки
mesh = smesh.Mesh()
# встройте пять четырехугольников:
dx = 10
dy = 20
n1
n2
n3
n4
n5
n6
n7
n8
n9
n10
n11
n12
f1
f2
f3
f4
f5
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
mesh.AddNode(0.0
mesh.AddNode(1.0
mesh.AddNode(2.0
mesh.AddNode(3.0
mesh.AddNode(4.0
mesh.AddNode(5.0
mesh.AddNode(0.0
mesh.AddNode(1.0
mesh.AddNode(2.0
mesh.AddNode(3.0
mesh.AddNode(4.0
mesh.AddNode(5.0
mesh.AddFace([n1,
mesh.AddFace([n2,
mesh.AddFace([n3,
mesh.AddFace([n4,
mesh.AddFace([n5,
*
*
*
*
*
*
*
*
*
*
*
*
dx,
dx,
dx,
dx,
dx,
dx,
dx,
dx,
dx,
dx,
dx,
dx,
n2,
n3,
n4,
n5,
n6,
0, 0)
0, 0)
0, 0)
0, 0)
0, 0)
0, 0)
dy, 0)
dy, 0)
dy, 0)
dy, 0)
dy, 0)
dy, 0)
n8 ,
n9 ,
n10,
n11,
n12,
n7 ])
n8 ])
n9 ])
n10])
n11])
# Измените ориентацию второго и четвертых поверхностей.
mesh.Reorient([2, 4])
salome.sg.updateObjBrowser(1)
Вырезка Четырехугольников
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# вырежьте два четырехугольника: 405 и 406
mesh.QuadToTri([405, 406], smesh.FT_MinimumAngle)
Сглаживание
import salome
import geompy
216
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# выберите главную поверхность
faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh,
geompy.ShapeType["FACE"])
face = faces[3]
geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face planar with
hole")
# создайте группу поверхностей, которые будут приглажены
GroupSmooth = mesh.GroupOnGeom(face, "Group of faces (smooth)", smesh.FACE)
# выполните сглаживание
# булевский SmoothObject (Объект, IDsOfFixedNodes, MaxNbOfIterations,
MaxAspectRatio, Метод)
res = mesh.SmoothObject(GroupSmooth, [], 20, 2., smesh.CENTROIDAL_SMOOTH)
print "\nSmoothing ... ",
if not res: print "failed!"
else:
print "done."
salome.sg.updateObjBrowser(1)
Выдавливание
import salome
import geompy
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# выберите главную поверхность
faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh,
geompy.ShapeType["FACE"])
face = faces[7]
geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, face, "face circular
top")
# создайте вектор для выдавливания
point = smesh.PointStruct(0., 0., 5.)
vector = smesh.DirStruct(point)
# создайте группу, чтобы быть вытесненными
GroupTri = mesh.GroupOnGeom(face, "Group of faces (extrusion)", smesh.FACE)
# выполните выдавливание группы
mesh.ExtrusionSweepObject(GroupTri, vector, 5)
salome.sg.updateObjBrowser(1)
217
Выдавливание вдоль Пути
import math
import salome
# Геометрия
import geompy
# 1. Точки формирования данных
points = [[0, 0], [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [130, -20]]
iv = 1
vertices = []
for point in points:
vert = geompy.MakeVertex(point[0], point[1], 0)
geompy.addToStudy(vert, "Vertex_" + `iv`)
vertices.append(vert)
iv += 1
pass
# 2. Создайте
Edge_straight
Edge_bezierrr
Wire_polyline
Edge_Circle
vertices[2])
грани и соединительные линии
= geompy.MakeEdge(vertices[0], vertices[4])
= geompy.MakeBezier(vertices)
= geompy.MakePolyline(vertices)
= geompy.MakeCircleThreePnt(vertices[0], vertices[1],
geompy.addToStudy(Edge_straight,
geompy.addToStudy(Edge_bezierrr,
geompy.addToStudy(Wire_polyline,
geompy.addToStudy(Edge_Circle ,
"Edge_straight")
"Edge_bezierrr")
"Wire_polyline")
"Edge_Circle")
# 3. Разъедините соединительную линию на гранях, поскольку они будут
использоваться для экструзии сетки
Wire_polyline_edges = geompy.SubShapeAll(Wire_polyline,
geompy.ShapeType["EDGE"])
for ii in range(len(Wire_polyline_edges)):
geompy.addToStudyInFather(Wire_polyline, Wire_polyline_edges[ii], "Edge_"
+ `ii + 1`)
pass
# Сетка
import smesh
# Мешинг данную форму с данным 1d гипотеза
def Mesh1D(shape1d, nbSeg, name):
mesh1d_tool = smesh.Mesh(shape1d, name)
algo = mesh1d_tool.Segment()
hyp = algo.NumberOfSegments(nbSeg)
isDone = mesh1d_tool.Compute()
if not isDone: print 'Mesh ', name, ': computation failed'
return mesh1d_tool
# Создайте сетку с шестью узлами, семью гранями и двумя поверхностями
четырехугольника
def MakeQuadMesh2(mesh_name):
quad_1 = smesh.Mes(name = mesh_name)
# шесть узлов
n1 = quad_1.AddNode(0, 20, 10)
n2 = quad_1.AddNode(0, 40, 10)
n3 = quad_1.AddNode(0, 40, 30)
218
n4 = quad_1.AddNode(0, 20, 30)
n5 = quad_1.AddNode(0, 0, 30)
n6 = quad_1.AddNode(0, 0, 10)
# семь граней
quad_1.AddEdge([n1,
quad_1.AddEdge([n2,
quad_1.AddEdge([n3,
quad_1.AddEdge([n4,
quad_1.AddEdge([n4,
quad_1.AddEdge([n5,
quad_1.AddEdge([n6,
n2])
n3])
n4])
n1])
n5])
n6])
n1])
#
#
#
#
#
#
#
1
2
3
4
5
6
7
# две поверхности четырехугольника
quad_1.AddFace([n1, n2, n3, n4]) # 8
quad_1.AddFace([n1, n4, n5, n6]) # 9
return [quad_1, [1,2,3,4,5,6,7], [8,9]]
# Путь мешинга
Edge_straight_mesh
Edge_bezierrr_mesh
Wire_polyline_mesh
Edge_Circle_mesh
=
=
=
=
Mesh1D(Edge_straight,
Mesh1D(Edge_bezierrr,
Mesh1D(Wire_polyline,
Mesh1D(Edge_Circle ,
7,
7,
3,
8,
"Edge_straight")
"Edge_bezierrr")
"Wire_polyline")
"Edge_Circle")
# Начальные сетки (чтобы быть вытесненными)
[quad_1, ee_1, ff_1] = MakeQuadMesh2("quad_1")
[quad_2, ee_2, ff_2] = MakeQuadMesh2("quad_2")
[quad_3, ee_3, ff_3] = MakeQuadMesh2("quad_3")
[quad_4, ee_4, ff_4] = MakeQuadMesh2("quad_4")
[quad_5, ee_5, ff_5] = MakeQuadMesh2("quad_5")
[quad_6, ee_6, ff_6] = MakeQuadMesh2("quad_6")
[quad_7, ee_7, ff_7] = MakeQuadMesh2("quad_7")
# Выдавливание Вдоль Пути
# IDsOfElements, PathMesh, PathShape, NodeStart,
# HasAngles, Angles, HasRefPoint, RefPoint
refPoint = smesh.PointStruct(0, 0, 0)
a10 = 10.0*math.pi/180.0
a45 = 45.0*math.pi/180.0
# 1. Экструзия двух граней сетки вдоль прямого пути
error = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight,
1,
0, [], 0, refPoint)
# 2. Экструзия одной грани сетки вдоль кривого пути
error = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,
0, [], 0, refPoint)
# 3. Экструзия одной грани сетки вдоль кривого пути с использованием углов
error = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,
1, [a45, a45, a45, 0, -a45, -a45, -a45], 0,
refPoint)
# 4. Экструзия одной грани сетки вдоль пути, который является частью
решетчатой соединительной линии
error = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh,
Wire_polyline_edges[0], 1,
1, [a10, a10, a10], 0, refPoint)
# 5. Выдавливание двух сеток стоит вдоль пути, который является частью
решетчатой соединительной линии
219
error = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh,
Wire_polyline_edges[2], 4,
0, [], 0, refPoint)
# 6. Выдавливание двух сеток стоит вдоль закрытого пути
error = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1,
0, [], 0, refPoint)
# 7. Выдавливание двух сеток стоит вдоль закрытого пути с использованием
углов
error = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1,
1, [a45, -a45, a45, -a45, a45, -a45, a45, a45], 0, refPoint)
salome.sg.updateObjBrowser(1)
Вращение
import math
import SMESH_mechanic
import SMESH
mesh = SMESH_mechanic.mesh
smesh = SMESH_mechanic.smesh
# создайте группу поверхностей, которые будут вращаться
FacesRotate = [492, 493, 502, 503]
GroupRotate = mesh.CreateEmptyGroup(SMESH.FACE,"Group of faces (rotate)")
GroupRotate.Add(FacesRotate)
# определите угол вращения и ось
angle45 = 45 * math.pi / 180
axisXYZ = SMESH.AxisStruct(-38.3128, -73.3658, -23.321, -13.3402, -13.3265,
6.66632)
# выполните вращение объекта
mesh.RotationSweepObject(GroupRotate, axisXYZ, angle45, 4, 1e-5)
Отображение Шаблона
import geompy
import smesh
# определите геометрию
Box_1 = geompy.MakeBoxDXDYDZ(200., 200., 200.)
geompy.addToStudy(Box_1, "Box_1")
faces = geompy.SubShapeAll(Box_1, geompy.ShapeType["FACE"])
Face_1 = faces[0]
Face_2 = faces[1]
geompy.addToStudyInFather(Box_1, Face_1, "Face_1")
geompy.addToStudyInFather(Box_1, Face_2, "Face_2")
# встройте сетку четырехугольника 3x3 на Face_1
Mesh_1 = smesh.Mesh(Face_1)
220
algo1D = Mesh_1.Segment()
algo1D.NumberOfSegments(3)
Mesh_1.Quadrangle()
isDone = Mesh_1.Compute()
if not isDone: print 'Mesh Mesh_1 : computation failed'
# встройте сетку треугольника на Face_2
Mesh_2 = smesh.Mesh(Face_2)
algo1D = Mesh_2.Segment()
algo1D.NumberOfSegments(1)
algo2D = Mesh_2.Triangle()
algo2D.MaxElementArea(240)
isDone = Mesh_2.Compute()
if not isDone: print 'Mesh Mesh_2 : computation failed'
# создайте шаблон
pattern = smesh.GetPattern()
isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), Face_2, 0)
if (isDone != 1): print 'LoadFromFace :', pattern.GetErrorCode()
# примените шаблон к поверхности первой сетки
pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), [17], 0, 0)
isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 0, 0)
if (isDone != 1): print 'MakeMesh :', pattern.GetErrorCode()
Преобразование Сеток
221
Преобразование Сеток
Перенос
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# определите вектор сдвига
point = smesh.PointStruct(-150., -150., 0.)
vector =smesh.DirStruct(point)
# переведите сетку
doCopy = 1
mesh.Translate([], vector, doCopy)
Вращение
import math
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# определите ось вращения и угол
axisXYZ = smesh.AxisStruct(0., 0., 0., 5., 5., 20.)
angle270 = 1.5 * math.pi
# вращайте сетку
mesh.Rotate([], axisXYZ, angle270, 1)
Симметрия
import math
import SMESH_mechanic
smesh = SMESH_mechanic.smesh
mesh = SMESH_mechanic.mesh
# создайте симметрическую копию сетки, отраженной через точку
axis = SMESH.AxisStruct(0, 0, 0, 0, 0, 0)
mesh.Mirror([], axis, smesh.POINT, 1)
Объединение Узлов
import SMESH_mechanic
mesh = SMESH_mechanic.mesh
222
# узлы слияния
Tolerance = 25.0
GroupsOfNodes = mesh.FindCoincidentNodes(Tolerance)
mesh.MergeNodes(GroupsOfNodes)
Объединение Элементов
import salome
import geompy
import smesh
# создайте поверхность, которая будет мешингованы
px = geompy.MakeVertex(100., 0. , 0. )
py = geompy.MakeVertex(0. , 100., 0. )
pz = geompy.MakeVertex(0. , 0. , 100.)
vxy = geompy.MakeVector(px, py)
arc = geompy.MakeArc(py, pz, px)
wire = geompy.MakeWire([vxy, arc])
isPlanarFace = 1
face1 = geompy.MakeFace(wire, isPlanarFace)
id_face1 = geompy.addToStudy(face1, "Face1")
# создайте круг, чтобы быть путем экструзии
px1 = geompy.MakeVertex( 100., 100., 0.)
py1 = geompy.MakeVertex(-100., -100., 0.)
pz1 = geompy.MakeVertex(
0.,
0., 50.)
circle = geompy.MakeCircleThreePnt(py1, pz1, px1)
id_circle = geompy.addToStudy(circle, "Path")
# создайте 2-ую сетку на поверхности
trias = smesh.Mesh(face1, "Face : 2D mesh")
algo1D = trias.Segment()
algo1D.NumberOfSegments(6)
algo2D = trias.Triangle()
algo2D.LengthFromEdges()
trias.Compute()
# создайте сетку пути
circlemesh = smesh.Mesh(circle, "Path mesh")
algo = circlemesh.Segment()
algo.NumberOfSegments(10)
circlemesh.Compute()
# экструзия сетки
trias.ExtrusionAlongPath([], circlemesh, circle,
1, 0, [], 0, smesh.PointStruct(0, 0, 0))
# узлы слияния
print "Number of nodes before MergeNodes:",
trias.NbNodes()
tolerance = 0.001
array_of_nodes_groups = trias.FindCoincidentNodes(tolerance)
223
trias.MergeNodes(array_of_nodes_groups)
print
print
print
print
print
print
print
"Number of nodes after MergeNodes:", trias.NbNodes()
""
"Number of elements before MergeEqualElements:"
"Edges
: ", trias.NbEdges()
"Triangles : ", trias.NbTriangles()
"Quadrangles: ", trias.NbQuadrangles()
"Volumes
: ", trias.NbVolumes()
# элементы слияния
trias.MergeEqualElements()
print "Number of elements after MergeEqualElements:"
print "Edges
: ", trias.NbEdges()
print "Triangles : ", trias.NbTriangles()
print "Quadrangles: ", trias.NbQuadrangles()
print "Volumes
: ", trias.NbVolumes()
salome.sg.updateObjBrowser(1)
Сшивание Сеток
Сшейте Границу Сеток к Стороне
import geompy
import smesh
# создайте две поверхности блока
box1 = geompy.MakeBox(0., 0., -10., 30., 20., 25.)
facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
face1 = facesList1[2]
box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
face2 = facesList2[1]
edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
edge1 = edgesList[2]
aComp = geompy.MakeCompound([face1, face2])
geompy.addToStudy(aComp, "Two faces")
# создайте сетку на двух поверхностях
mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
algo1D = mesh.Segment()
algo1D.NumberOfSegments(9)
algo2D = mesh.Quadrangle()
algo_local = mesh.Segment(edge1)
algo_local.Arithmetic1D(1, 4)
algo_local.Propagation()
mesh.Compute()
# сшейте границу к стороне
# FirstNodeIDOnFreeBorder, SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,
224
# FirstNodeIDOnSide, LastNodeIDOnSide,
# CreatePolygons, CreatePolyedrs
mesh.SewBorderToSide(5, 45, 6, 113, 109, 0, 0)
Сшивание Приспособленные Свободные Границы
import geompy
import smesh
# создайте две поверхности блока
box1 = geompy.MakeBox(0., 0., -10., 20., 20., 15.)
facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
face1 = facesList1[2]
box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
face2 = facesList2[1]
edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
edge1 = edgesList[2]
aComp = geompy.MakeCompound([face1, face2])
geompy.addToStudy(aComp, "Two faces")
# создайте сетку на двух поверхностях
mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
algo1D = mesh.Segment()
algo1D.NumberOfSegments(9)
algo2D = mesh.Quadrangle()
algo_local = mesh.Segment(edge1)
algo_local.Arithmetic1D(1, 4)
algo_local.Propagation()
mesh.Compute()
# сшейте приспосабленные свободные границы
# FirstNodeID1, SecondNodeID1, LastNodeID1, FirstNodeID2, SecondNodeID2
mesh.SewConformFreeBorders(5, 45, 6, 3, 24)
Сшейте Свободные Границы
import geompy
import smesh
# создайте две поверхности блока
box1 = geompy.MakeBox(0., 0., 0., 20., 20., 15.)
facesList1 = geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])
face1 = facesList1[2]
box2 = geompy.MakeBox(0., 5., 0., 20., 20., 15.)
facesList2 = geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])
face2 = facesList2[1]
edgesList = geompy.SubShapeAll(face2, geompy.ShapeType["EDGE"])
edge1 = edgesList[2]
225
aComp = geompy.MakeCompound([face1, face2])
geompy.addToStudy(aComp, "Two faces")
# создайте сетку на двух поверхностях
mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
algo1D = mesh.Segment()
algo1D.NumberOfSegments(4)
algo2D = mesh.Quadrangle()
algo_local = mesh.Segment(edge1)
algo_local.Arithmetic1D(1, 4)
algo_local.Propagation()
mesh.Compute()
# сшейте свободные границы
# FirstNodeID1, SecondNodeID1, LastNodeID1,
# FirstNodeID2, SecondNodeID2, LastNodeID2, CreatePolygons, CreatePolyedrs
mesh.SewFreeBorders(6, 21, 5, 1, 12, 3, 0, 0)
Сшейте Побочные Элементы
import geompy
import smesh
# создайте два поля
box1 = geompy.MakeBox(0., 0., 0., 10., 10., 10.)
box2 = geompy.MakeBox(0., 15., 0., 20., 25., 10.)
EdgesList = geompy.SubShapeAll(box2, geompy.ShapeType["EDGE"])
aComp = geompy.MakeCompound([box1, box2])
geompy.addToStudy(aComp, "Two boxes")
# создайте сетку на двух полях
mesh = smesh.Mesh(aComp, "Two faces : quadrangle mesh")
algo1D = mesh.Segment()
algo1D.NumberOfSegments(2)
algo2D = mesh.Quadrangle()
algo_local = mesh.Segment(EdgesList[8])
algo_local.NumberOfSegments(4)
algo_local.Propagation()
mesh.Compute()
# сшейте побочные элементы
# IDsOfSide1Elements, IDsOfSide2Elements,
# NodeID1OfSide1ToMerge, NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge,
NodeID2OfSide2ToMerge
mesh.SewSideElements([69, 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)
226
Download