[返回博客](/cn/blog) # 面建模器规范概述

Roman Martens 五月 07, 2020 [\#facet modeler](/cn/blog/tag/facet-modeler) [\#getting started](/cn/blog/tag/getting-started)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

ODA面建模器是一种快速建模器，它使用边界表示法进行实体建模，也称为B-Rep技术。以下是ODA面建模器使用的主要数据结构：

- 顶点
- 边
- 边环
- 面
- 体

#### 顶点

顶点是一个三维点。

#### 边

边是一个对象，由指向起始顶点的指针以及指向环中前一个和后一个边的指针表示。基本上，边是由两个顶点界定的直线段：一个起始顶点和一个结束顶点（即下一个边的起始顶点）。

```
Vertex* startVertex = pEdge->vertex();
Vertex* endVertex = pEdge->endVertex();
```

#### 边环

边环是位于三维平面上的一组不相交的闭合边列表（至少包含三条边）。

#### 面

面是位于三维平面上的一组不相交的边环列表，用于界定一个区域。面通过边环拥有边。

第一个环称为外环。当从与平面法线相反的方向（右手定则）观察对象时，外环是逆时针定向的。所有其他环（如果有）应位于外环所界定的区域内。它们被称为内环。内环是顺时针定向的。

以下是面的一个示例：

![example of a face](/files/inline-images/an%20example%20of%20a%20face.png)以下是外环和内环的方向：

![directions of outer and inner loops](/files/inline-images/the%20directions%20of%20outer%20and%20inner%20loops.png)
```
EdgeLoop* pOuterLoop = pFace->loop(0);
EdgeLoop* pInternalLoop = pFace->loop(1);
if (pInternalLoop)
{
  // work with internal loop here
}
```

边知道它属于哪个循环和面。

```
Face* pLoop = pEdge->loop();
if (pLoop)
{
  // work with loop here
}

Face* pFace = pEdge->face();
if (pFace)
{
  // work with face here
}
```

相邻的面可以有一个共同的边。在拓扑学上，有两条边被称为对边。它们由相同的顶点形成，但顺序不同。

![two edges called pair-edges](/files/inline-images/Adjacent%20faces%20can%20have%20a%20common%20edge.png)
```
Edge* pPairEdge = pEdge->pair();
if (pPairEdge)
{
  // work with pair edge here
}
```

#### 实体

实体是连接面的列表。如果一个面的每条边都有一个来自相邻面的对边，则该实体是封闭的。否则，它被认为是开放的。

开放实体的示例如下所示（缺失的面在红色高亮框中）：

![The example of an open body](/files/inline-images/The%20example%20of%20an%20open%20body.png)调用 Body::isClosed() 方法检查实体是否封闭。

```
bool closed = body.isClosed();
```

如果实体满足以下条件，则称其为一致的：

- 每个面至少有一个外环。
- 每个面的外环都按逆时针方向定向。
- 每个面的内环都按顺时针方向定向。
- 对边对是原始边。
- 每条边都属于一个面（没有悬空边）。
- 一条边及其对边属于不同的面。

调用 Body::checkInternalConsistence() 方法检查实体是否一致。

```
OdString msgStr;
bool consistency = body.checkInternalConsistence(&msgStr);
```

要了解如何创建实体，请参阅 ODA 博客上的[使用面建模器创建实体](https://www.opendesign.com/blog/2019/march/creating-bodies-using-facet-modeler)。

## 今天就开始行动

**免费试用 ODA 软件 60 天。  
无风险，无需信用卡。**

[免费试用](https://www.opendesign.com/cn/free-trial)
