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

8.20.3.1.2 实体继承
8.20.3.1.3 特性
| # | 特性 | 类型 | 描述 |
|---|---|---|---|
| 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 |
定义面内部形状的曲面。此曲面可能是无界的。面的定义域由此曲面和继承属性 SELF\FaceBounds 中的边界环定义。 |
| 3 | SameSense | IfcBoolean |
此标志指示曲面法线的方向是与面的拓扑法线方向一致(TRUE)还是相反(FALSE)。 |
8.20.3.1.4 形式化命题
| 名称 | 描述 |
|---|---|
| ApplicableEdgeCurves |
用于定义边几何的曲线类型应限制为 IfcLine、IfcConic、IfcPolyline 或 IfcBSplineCurve。 |
|
|
| ApplicableSurface |
面定义中使用的几何应受到限制。面几何应为 IfcElementarySurface、IfcSweptSurface 或 IfcBSplineSurface。 |
|
|
| RequiresEdgeCurve |
面所有边界边的几何应完全定义为 IfcEdgeCurve。 |
|
|
8.20.3.1.5 形式化表示
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;