# 8.8.3.35 IfcSectionedSpine

## 8.8.3.35.1 Semantic definition

An IfcSectionedSpine is a representation of the shape of a three dimensional object composed by a number of planar cross sections, and a spine curve. The shape is defined between the first element of cross sections and the last element of the cross sections. A sectioned spine may be used to represent a surface or a solid but the interpolation of the shape between the cross sections is not defined.

All cross sections have to define areas by a closed profile to allow for the representation of a solid. All cross sections have to define curves by an open or closed profile to allow for the representation of a surface. The cross sections are defined by subtypes of IfcProfileDef, where the consecutive profiles may be derived by a transformation of the start profile or the previous consecutive profile.

The spine curve shall be of type IfcCompositeCurve, each of its segments represented by IfcCompositeCurveSegment shall correspond to the part between exactly two consecutive cross-sections.

Figure 1 illustrates an example of an IfcSectionedSpine.

• The SpineCurve is given by an IfcCompositeCurve with two Segments. The Segments[1] has a ParentCurve of type IfcPolyline and a Transition = CONTSAMEGRADIENT. The Segments[2] has a ParentCurve of type IfcTrimmedCurve and a Transition = DISCONTINUOUS.
• Each CrossSectionPosition lies at a start or end point of the Segments.
• Each CrossSections are inserted by the CrossSectionPositions. The first two cross sections are of type IfcRectangleProfileDef, the third is of type IfcDerivedProfileDef.

Informal Propositions:

1. none of the cross sections, after being placed by the cross section positions, shall intersect
2. none of the cross sections, after being placed by the cross section positions, shall lie in the same plane
3. the local origin of each cross section position shall lie at the beginning or end of a composite curve segment.

## 8.8.3.35.5 Formal representation

ENTITY IfcSectionedSpine
SUBTYPE OF (IfcGeometricRepresentationItem);
SpineCurve : IfcCompositeCurve;
CrossSections : LIST [2:?] OF IfcProfileDef;
CrossSectionPositions : LIST [2:?] OF IfcAxis2Placement3D;
DERIVE
Dim : IfcDimensionCount := 3;
WHERE
ConsistentProfileTypes : SIZEOF(QUERY(temp <* CrossSections | CrossSections[1].ProfileType <> temp.ProfileType)) = 0;
CorrespondingSectionPositions : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions);
SpineCurveDim : SpineCurve.Dim = 3;
END_ENTITY;

## 8.8.3.35.6 References

### 8.8.3.35.7 Changelog

#### 8.8.3.35.7.1 IFC4

• where rule, ConsistentProfileTypes
• where rule, CorrespondingSectionPositions
• where rule, SpineCurveDim
• where rule, WR1
• where rule, WR2
• where rule, WR3