addFace

Заполните пустые области в 2-D и разделите камеры в 3-D геометрии

Описание

пример

h = addFace(g,edges) добавляет новую грань к геометрии g. Указанные ребра должны образовывать замкнутый контур. Для 2-D геометрии добавление новой грани позволяет заполнять пустоты в геометрии. Для 3-D геометрии добавление новой грани позволяет разделить одну камеру на несколько камеры.

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

Примечание

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

пример

[h,FaceID] = addFace(g,edges) также возвращает вектор-строку, содержащую идентификаторы добавленных граней.

Примеры

свернуть все

Добавьте грань к 2-D геометрии, чтобы заполнить внутреннюю пустоту.

Создайте модель УЧП.

model = createpde();

Импортируйте геометрию. Эта геометрия имеет одну грань.

gm = importGeometry(model,'PlateSquareHolePlanar.stl')
gm = 
  DiscreteGeometry with properties:

       NumCells: 0
       NumFaces: 1
       NumEdges: 8
    NumVertices: 8
       Vertices: [8x3 double]

Постройте график геометрии и отобразите метки граней.

pdegplot(gm,'FaceLabels','on')

Figure contains an axes. The axes contains an object of type line.

Изменение масштаба и отображение меток ребер небольшого отверстия в центре.

figure
pdegplot(gm,'EdgeLabels','on')
axis([49 51 99 101])

Figure contains an axes. The axes contains an object of type line.

Заполните отверстие путем добавления грани. Количество граней в геометрии изменяется на 2.

gm = addFace(gm,[1 8 4 5])
gm = 
  DiscreteGeometry with properties:

       NumCells: 0
       NumFaces: 2
       NumEdges: 8
    NumVertices: 8
       Vertices: [8x3 double]

Постройте график измененной геометрии и отобразите метки граней.

pdegplot(gm,'FaceLabels','on')

Figure contains an axes. The axes contains an object of type line.

Добавьте грань в 3-D геометрию, чтобы разделить камеру на две камеры.

Создайте модель УЧП.

model = createpde();

Импортируйте геометрию. Геометрия состоит из одной камеры.

gm = importGeometry(model,'MotherboardFragment1.STL')
gm = 
  DiscreteGeometry with properties:

       NumCells: 1
       NumFaces: 26
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

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

pdegplot(gm,'EdgeLabels','on','FaceAlpha',0.5)

xlim([-0.05 0.05])
ylim([-0.05 0.05])
zlim([0 0.05])

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Разделите кубоид с правой стороны на отдельную камеру. Для этого добавьте грань, ограниченную ребрами 1, 3, 6 и 12.

[gm,ID] = addFace(gm,[1 3 6 12])
gm = 
  DiscreteGeometry with properties:

       NumCells: 2
       NumFaces: 27
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

ID = 27

Постройте график измененной геометрии и отобразите метки камеры.

pdegplot(gm,'CellLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

[gm,IDs] = addFace(gm,{[5 7 8 10], ...
                        30, ...
                        31, ...
                        32, ...
                        33, ...
                        13})
gm = 
  DiscreteGeometry with properties:

       NumCells: 8
       NumFaces: 33
       NumEdges: 46
    NumVertices: 34
       Vertices: [34x3 double]

IDs = 6×1

    28
    29
    30
    31
    32
    33

Постройте график измененной геометрии и отобразите метки камеры.

pdegplot(gm,'CellLabels','on','FaceAlpha',0.5)

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

Входные параметры

свернуть все

Геометрия, заданная как DiscreteGeometry или AnalyticGeometry объект.

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

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

Пример: addFace(g,[1 3 4 7])

Выходные аргументы

свернуть все

Получившаяся геометрия, возвращенная как указатель.

Идентификатор лица, возвращенный как положительное число или вектор-строка положительных чисел. Каждое число представляет идентификатор грани. При добавлении новой грани к геометрии с N гранями идентификатор добавленной грани равен N + 1.

Совет

  • addFace ошибки, когда заданный контур задает уже существующую грань.

  • addFace всегда изменяет исходную геометрию g.

Введенный в R2020a