IFC 4.3.2.20250327 (IFC4X3_ADD2) under development

8.8.3.37 IfcSectionedSurface

AbV ⓘ

8.8.3.37.1 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 8.8.3.37.A illustrates an IfcSectionedSurface defined using IfcOpenCrossProfileDef.

sectioned surface
Figure 8.8.3.37.A — 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 8.8.3.37.B illustrates an IfcSectionedSurface featuring branching longitudinal breaklines.

sectioned surface
Figure 8.8.3.37.B — 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

8.8.3.37.2 Entity inheritance

8.8.3.37.3 Attributes

# Attribute Type Description
IfcRepresentationItem (2)
IfcSurface (1)
Click to show 3 hidden 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 8.8.3.37.C

8.8.3.37.4 Formal propositions

Name Description
AreaProfileTypes

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
CorrespondingSectionPositions

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

SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions)
DirectrixIs3D

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

Directrix.Dim = 3
NoOffsets

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
SectionsSameType

The entity type for each section must be the same.

SIZEOF(QUERY(temp <* CrossSections | TYPEOF(CrossSections[1]) :<>: TYPEOF(temp))) = 0
Table 8.8.3.37.D

8.8.3.37.5 Formal representation

ENTITY IfcSectionedSurface
SUBTYPE OF (IfcSurface);
Directrix : IfcCurve;
CrossSectionPositions : LIST [2:?] OF IfcAxis2PlacementLinear;
CrossSections : LIST [2:?] OF IfcProfileDef;
WHERE
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;

8.8.3.37.6 References

Edit on Github


Is this page difficult to understand? Let us know!

8.8.3.37.7 Changelog

8.8.3.37.7.1 IFC4.3_DEV_738df036

  • New resource