IFC 4.3.1.0 (IFC4X3_ADD1)

8.20.3.1 IfcAdvancedFace

8.20.3.1.1 Semantic definition

An advanced face is a specialization of a face surface that has to meet requirements on using particular topological and geometric representation items for the definition of the faces, edges and vertices.

An IfcAdvancedFace is restricted to:

In case of closed faces with periodic surfaces, such as cylindrical or spherical surfaces, the following applies:

  • the edges of the closed surface, in case of a cylindrical surface the upper and lower cap, refer to the same instance of IfcVertexPoint twice,
  • no IfcFaceOuterBound is provided, or the IfcFaceOuterBound is constructed using an IfcSeamCurve at the periodic end of the underlying closed surface, in case of a cylindrical surface at 0./360. degree.
cylindrical surface
Figure 8.20.3.1.A — Use of _IfcCylindricalSurface_ as underlying surface of an _IfcAdvancedFace_

8.20.3.1.2 Entity inheritance

8.20.3.1.3 Attributes

# Attribute Type Description
IfcRepresentationItem (2)
LayerAssignment SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems

Assignment of the representation item to a single or multiple layer(s). The LayerAssignments can override a LayerAssignments of the IfcRepresentation it is used within the list of Items.

StyledByItem SET [0:1] OF IfcStyledItem FOR Item

Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve.

IfcFace (2)
1 Bounds SET [1:?] OF IfcFaceBound

Boundaries of the face.

HasTextureMaps SET [0:?] OF IfcTextureMap FOR MappedTo

No description available.

Click to show 4 hidden inherited attributes Click to hide 4 inherited attributes
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

This flag indicates whether the sense of the surface normal agrees with (TRUE), or opposes (FALSE), the sense of the topological normal to the face.

Table 8.20.3.1.B

8.20.3.1.4 Formal propositions

Name Description
ApplicableEdgeCurves

The types of curve used to define the geometry of edges shall be restricted to IfcLine, IfcConic, IfcPolyline, or IfcBSplineCurve.

SIZEOF(QUERY (ElpFbnds <* 
  QUERY (Bnds <* SELF\IfcFace.Bounds |
    'IFC4X3_ADD1.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
     NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
       NOT (SIZEOF (['IFC4X3_ADD1.IFCLINE',
                     'IFC4X3_ADD1.IFCCONIC',
                     'IFC4X3_ADD1.IFCPOLYLINE',
                     'IFC4X3_ADD1.IFCBSPLINECURVE'] *
         TYPEOF(Oe\IfcOrientedEdge.EdgeElement\IfcEdgeCurve.EdgeGeometry)) = 1 )
  )) = 0
))) = 0
ApplicableSurface

The geometry used in the definition of the face shall be restricted. The face geometry shall be an IfcElementarySurface, IfcSweptSurface, or IfcBSplineSurface.

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

The geometry of all bounding edges of the face shall be fully defined as IfcEdgeCurve's.

SIZEOF(QUERY (ElpFbnds <* 
  QUERY (Bnds <* SELF\IfcFace.Bounds |
    'IFC4X3_ADD1.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
     NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
       NOT('IFC4X3_ADD1.IFCEDGECURVE' IN 
       TYPEOF(Oe\IfcOrientedEdge.EdgeElement)
  ))) = 0
))) = 0
Table 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_ADD1.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
     NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
       NOT (SIZEOF (['IFC4X3_ADD1.IFCLINE',
                     'IFC4X3_ADD1.IFCCONIC',
                     'IFC4X3_ADD1.IFCPOLYLINE',
                     'IFC4X3_ADD1.IFCBSPLINECURVE'] *
         TYPEOF(Oe\IfcOrientedEdge.EdgeElement\IfcEdgeCurve.EdgeGeometry)) = 1 )
  )) = 0
))) = 0;
	ApplicableSurface : SIZEOF (
['IFC4X3_ADD1.IFCELEMENTARYSURFACE',
 'IFC4X3_ADD1.IFCSWEPTSURFACE',
 'IFC4X3_ADD1.IFCBSPLINESURFACE'] *
TYPEOF(SELF\IfcFaceSurface.FaceSurface)) = 1;
	RequiresEdgeCurve : SIZEOF(QUERY (ElpFbnds <* 
  QUERY (Bnds <* SELF\IfcFace.Bounds |
    'IFC4X3_ADD1.IFCEDGELOOP' IN TYPEOF(Bnds.Bound)) |
     NOT (SIZEOF (QUERY (Oe <* ElpFbnds.Bound\IfcEdgeLoop.EdgeList |
       NOT('IFC4X3_ADD1.IFCEDGECURVE' IN 
       TYPEOF(Oe\IfcOrientedEdge.EdgeElement)
  ))) = 0
))) = 0;
END_ENTITY;

8.20.3.1.6 References

8.20.3.1.7 Changelog

8.20.3.1.7.1 IFC4

  • New resource