IFC (IFC4X3_ADD2) under development IfcSectionedSurface Semantic definition

A surface constructed by sweeping potentially varying open cross sections along a curve horizontally (or near horizontally). The surface is generated by sweeping the CrossSections between CrossSectionPositions; linear interpolation is assumed, unless transitions curves between cross section points are indicated by OpenCrossProfileDef.Tags.

The profile normal is derived from the associated IfcAxis2PlacementLinear, not necessarily the tangent of the Directrix. The profile Y axis is oriented according to Axis attribute of IfcAxis2PlacementLinear and the X is derived from the cross product of Directrix and the Axis attribute of IfcAxis2PlacementLinear.

Figure illustrates an IfcSectionedSurface defined using IfcOpenCrossProfileDef.

sectioned surface
Figure — Sectioned surface using IfcOpenCrossProfileDef

In case of branching longitudinal breaklines, the IfcSectionedSurface shall use IfcOpenCrossProfileDef instances with varying number of cross section points. In that case, the point in two consecutive cross sections that are connected are identified by the same tag value.

Figure illustrates an IfcSectionedSurface featuring branching longitudinal breaklines.

sectioned surface
Figure — Sectioned surface with branching longitudinal breaklines

Informal Propositions

  1. No two consecutive sections shall intersect.
  2. If the directrix is not tangent continuous, the resulting surface is created by a miter at half angle between the two segments.
  3. Very sharp edges may result in nearly impossible miter; implementer agreements may define acceptable limits for tangent discontinuity or require the directrix to be tangent continuous.
  4. The directrix shall not intersect Entity inheritance 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.

IfcSurface (1)
* Dim IfcDimensionCount

This attribute is formally derived.


The space dimensionality of IfcSurface. It is always a three-dimensional geometric representation item.

Click to show 3 hidden inherited attributes Click to hide 3 inherited attributes
IfcSectionedSurface (3)
1 Directrix IfcCurve

The curve used to define the sweeping operation

2 CrossSectionPositions LIST [2:?] OF IfcAxis2PlacementLinear

List of positions in sequentially increasing order paired with CrossSections, indicating the position of the corresponding section along the Directrix.

3 CrossSections LIST [2:?] OF IfcProfileDef

List of cross sections in sequential order along the Directrix

Table Formal propositions

Name Description

The profile type shall be CURVE within the list of the profiles defining the cross sections.

SIZEOF(QUERY(temp <* CrossSections | temp.ProfileType = IfcProfileTypeEnum.CURVE)) <> 0

The set of cross sections and the set of cross section placements shall be of the same size.

SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions)

The curve entity which is the underlying directrix shall have the dimensionality of 3.

Directrix.Dim = 3

Distance expressions must not use longitudinal, laterial or vertical offsets.

SIZEOF(QUERY(temp <* CrossSectionPositions | EXISTS(temp.Location.OffsetLateral) OR EXISTS(temp.Location.OffsetVertical) OR EXISTS(temp.Location.OffsetLongitudinal))) = 0

The entity type for each section must be the same.

SIZEOF(QUERY(temp <* CrossSections | TYPEOF(CrossSections[1]) :<>: TYPEOF(temp))) = 0
Table Formal representation

ENTITY IfcSectionedSurface
 SUBTYPE OF (IfcSurface);
	Directrix : IfcCurve;
	CrossSectionPositions : LIST [2:?] OF IfcAxis2PlacementLinear;
	CrossSections : LIST [2:?] OF IfcProfileDef;
	AreaProfileTypes : SIZEOF(QUERY(temp <* CrossSections | temp.ProfileType = IfcProfileTypeEnum.CURVE)) <> 0;
	CorrespondingSectionPositions : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions);
	DirectrixIs3D : Directrix.Dim = 3;
	NoOffsets : SIZEOF(QUERY(temp <* CrossSectionPositions | EXISTS(temp.Location.OffsetLateral) OR EXISTS(temp.Location.OffsetVertical) OR EXISTS(temp.Location.OffsetLongitudinal))) = 0;
	SectionsSameType : SIZEOF(QUERY(temp <* CrossSections | TYPEOF(CrossSections[1]) :<>: TYPEOF(temp))) = 0;
END_ENTITY; References

Edit on Github

Is this page difficult to understand? Let us know! Changelog IFC4.3_DEV_a2a825a

  • New resource