8.20.3.1 IfcAdvancedFace(高级面)
8.20.3.1.1 语义定义(Semantic definition)
高级面是一种面曲面的特化形式,必须满足在定义面、边和顶点时使用特定拓扑和几何表示项的要求。
IfcAdvancedFace 的限制条件包括:
- 必须具有类型为 IfcElementarySurface、IfcSweptSurface 或 IfcBSplineSurface 的面曲面几何
- 必须具有一个 IfcFaceOuterBound 作为面的边界(闭合曲面除外)
- 所有面必须由 IfcEdgeLoop 或 IfcVertexLoop 界定
- 所有边必须具有边曲线几何
- 边曲线几何必须限制为 IfcLine、IfcConic、IfcPolyline 或 IfcBSplineCurve
对于具有周期性曲面的闭合面(如圆柱面或球面),适用以下规则:
- 闭合曲面的边(在圆柱面情况下为上盖和下盖)两次引用同一个 IfcVertexPoint 实例
- 不提供 IfcFaceOuterBound,或者 IfcFaceOuterBound 是在底层闭合曲面的周期性末端使用 IfcSeamCurve 构造的(在圆柱面情况下为 0°/360° 处)

8.20.3.1.2 实体继承(Entity inheritance)
8.20.3.1.3 特性(Attributes)
| # | 特性(Attributes) | 类型 | 描述 |
|---|---|---|---|
| IfcRepresentationItem (2) | |||
| LayerAssignment | SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems |
将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentation 的 Items 列表中的 LayerAssignments。 |
|
| StyledByItem | SET [0:1] OF IfcStyledItem FOR Item |
引用为表示提供表现信息的 IfcStyledItem,例如,为几何曲线提供曲线样式,包括颜色和厚度。 |
|
| IfcFace (2) | |||
| 1 | Bounds | SET [1:?] OF IfcFaceBound |
面的边界。 |
| HasTextureMaps | SET [0:?] OF IfcTextureMap FOR MappedTo |
无可用描述 |
|
| 点击显示 4 个隐藏的继承特性 点击隐藏 4 个继承特性 | |||
| IfcFaceSurface (2) | |||
| 2 | FaceSurface | IfcSurface |
The surface which defines the internal shape of the face. This surface may be unbounded. The domain of the face is defined by this surface and the bounding loops in the inherited attribute SELF\FaceBounds. |
| 3 | SameSense | IfcBoolean |
此标志指示曲面法线的方向是与面的拓扑法线方向一致(TRUE)还是相反(FALSE)。 |
8.20.3.1.4 形式化命题(Formal propositions)
| 名称 | 描述 |
|---|---|
| ApplicableEdgeCurves |
用于定义边几何的曲线类型应限制为 IfcLine、IfcConic、IfcPolyline 或 IfcBSplineCurve。 |
|
|
| ApplicableSurface |
面定义中使用的几何应受到限制。面几何应为 IfcElementarySurface、IfcSweptSurface 或 IfcBSplineSurface。 |
|
|
| RequiresEdgeCurve |
面所有边界边的几何应完全定义为 IfcEdgeCurve。 |
|
|
8.20.3.1.5 形式化表示(Formal representation)
ENTITY IfcAdvancedFace
SUBTYPE OF (IfcFaceSurface);
WHERE
ApplicableEdgeCurves : SIZEOF(QUERY (ElpFbnds <*
QUERY (Bnds <* SELF\IfcFace.Bounds |
'IFC4X3_DEV_62887e3f.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
NOT (SIZEOF (['IFC4X3_DEV_62887e3f.IFCLINE',
'IFC4X3_DEV_62887e3f.IFCCONIC',
'IFC4X3_DEV_62887e3f.IFCPOLYLINE',
'IFC4X3_DEV_62887e3f.IFCBSPLINECURVE'] *
TYPEOF(Oe\IfcOrientedEdge.EdgeElement\IfcEdgeCurve.EdgeGeometry)) = 1 )
)) = 0
))) = 0;
ApplicableSurface : SIZEOF (
['IFC4X3_DEV_62887e3f.IFCELEMENTARYSURFACE',
'IFC4X3_DEV_62887e3f.IFCSWEPTSURFACE',
'IFC4X3_DEV_62887e3f.IFCBSPLINESURFACE'] *
TYPEOF(SELF\IfcFaceSurface.FaceSurface)) = 1;
RequiresEdgeCurve : SIZEOF(QUERY (ElpFbnds <*
QUERY (Bnds <* SELF\IfcFace.Bounds |
'IFC4X3_DEV_62887e3f.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
NOT('IFC4X3_DEV_62887e3f.IFCEDGECURVE' IN
TYPEOF(Oe\IfcOrientedEdge.EdgeElement)
))) = 0
))) = 0;
END_ENTITY;