IFC 4.3.2.20260714 (IFC4X3_ADD2) under development

8.20.3.1 IfcAdvancedFace(高级面)

8.20.3.1.1 语义定义

高级面是一种面曲面的特化形式,应满足在定义面、边和顶点时使用特定拓扑和几何表示项的要求。

IfcAdvancedFace 的限制条件包括:

对于具有周期性曲面的闭合面(如圆柱面或球面),适用以下规则:

圆柱面
图 8.20.3.1.A — 使用 _IfcCylindricalSurface_ 作为 _IfcAdvancedFace_ 的底层曲面

8.20.3.1.2 实体继承

8.20.3.1.3 特性

# 特性 类型 描述
IfcRepresentationItem (2)
LayerAssignment SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems

将表示项分配给单个或多个层。LayerAssignments 可以覆盖其所在的 IfcRepresentationItems 列表中的 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.B

8.20.3.1.4 形式化命题

名称 描述
ApplicableEdgeCurves

用于定义边几何的曲线类型应限制为 IfcLineIfcConicIfcPolylineIfcBSplineCurve

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

面定义中使用的几何应受到限制。面几何应为 IfcElementarySurfaceIfcSweptSurfaceIfcBSplineSurface

SIZEOF (
['IFC4X3_DEV_62887e3f.IFCELEMENTARYSURFACE',
 'IFC4X3_DEV_62887e3f.IFCSWEPTSURFACE',
 'IFC4X3_DEV_62887e3f.IFCBSPLINESURFACE'] *
TYPEOF(SELF\IfcFaceSurface.FaceSurface)) = 1
RequiresEdgeCurve

面所有边界边的几何应完全定义为 IfcEdgeCurve

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
表 8.20.3.1.C

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;

8.20.3.1.6 参考