IFC 4.3.2.20251031 (IFC4X3_ADD2) under development

8.20.3.1 IfcAdvancedFace(高级面)

8.20.3.1.1 语义定义(Semantic definition)

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

IfcAdvancedFace 的限制条件包括:

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

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

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 可以覆盖其所在的 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

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.B

8.20.3.1.4 形式化命题(Formal propositions)

名称 描述
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 形式化表示(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;

8.20.3.1.6 参考文献