Sectioned Solid Horizontal |

Item | SPF | XML | Change | Description |
---|---|---|---|---|

IFC4x1 Release Candidate 3 |
||||

IfcSectionedSolidHorizontal | ADDED |

An IfcSectionedSolidHorizontal is a solid model constructed by sweeping potentially varying cross sections along a curve horizontally.

The solid is generated by sweeping the *CrossSections* between *CrossSectionPositions* with linear interpolation of profile points, where the profile normal agrees with the tangent of the *Directrix*, the profile X axis is oriented perpendicularly to the left of the *Directrix* (same direction as *LateralOffset* at IfcDistanceExpression) as facing forward along the directrix, and the profile Y axis is oriented upwards according to *FixedAxisVertical*.

For sections having cross-section rotated according to a single super-elevation, IfcDerivedProfileDef may be used to indicate such rotation with each *ParentProfile* referring to the same underlying profile.
For sections having cross-section transformed according to multiple super-elevations with points varying independently, each profile may be of a different instance but of same type (e.g. IfcArbitraryClosedProfileDef), and may optionally have cross section points associated to string lines (“guide curves”) using IfcIndexedPolyCurve with *IfcCartesianPointList2DLabelled*.

Figure 351 illustrates four girders of a bridge having a constant parameterized profile, two guardrails having a constant arbitrary profile (one of them mirrored), and a bridge deck having a variable arbitrary profile.

Figure 351 — Sectioned solid horizontal |

__Informal Propositions:__

- No two consecutive sections shall intersect.
- If the type of sections is not IfcParameterizedProfileDef (i.e. an arbitrary profile), then the number of points and edges should be the same for two consecutive profiles
- If the directrix is not tangent continuous, the resulting solid is created by a miter at half angle between the two segments.
- 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.
- The directrix shall not intersect

# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|

3 | CrossSectionPositions | IfcDistanceExpression | L[2:?] |
List of distance expressions in sequentially increasing order paired with CrossSections, indicating the position of the corresponding section along the Directrix. | X |

4 | FixedAxisVertical | IfcBoolean |
Indicates whether Sections are oriented with the Y axis of each profile facing upwards in +Z direction (True), or vertically perpendicular to the Directrix varying according to slope (False).
| X |

Rule | Description |
---|---|

CorrespondingSectionPositions | The set of cross sections and the set of cross section positions shall be of the same size. |

NoLongitudinalOffsets | Distance expressions must not use longitudinal offsets. |

# | Attribute | Type | Cardinality | Description | G |
---|---|---|---|---|---|

IfcRepresentationItem | |||||

LayerAssignment | IfcPresentationLayerAssignment @AssignedItems | S[0:1] | 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.
IFC2x3 CHANGE The inverse attribute IFC4 CHANGE The inverse attribute | X | |

StyledByItem | IfcStyledItem @Item | S[0:1] | Reference to the IfcStyledItem that provides presentation information to the representation, e.g. a curve style, including colour and thickness to a geometric curve.
IFC2x3 CHANGE The inverse attribute | X | |

IfcGeometricRepresentationItem | |||||

IfcSolidModel | |||||

Dim :=3 | IfcDimensionCount | The space dimensionality of this class, it is always 3. | X | ||

IfcSectionedSolid | |||||

1 | Directrix | IfcCurve | The curve used to define the sweeping operation. | X | |

2 | CrossSections | IfcProfileDef | L[2:?] |
List of cross sections in sequential order along the Directrix. | X |

IfcSectionedSolidHorizontal | |||||

3 | CrossSectionPositions | IfcDistanceExpression | L[2:?] |
List of distance expressions in sequentially increasing order paired with CrossSections, indicating the position of the corresponding section along the Directrix. | X |

4 | FixedAxisVertical | IfcBoolean |
Indicates whether Sections are oriented with the Y axis of each profile facing upwards in +Z direction (True), or vertically perpendicular to the Directrix varying according to slope (False).
| X |

` <xs:element name="IfcSectionedSolidHorizontal" type="ifc:IfcSectionedSolidHorizontal" substitutionGroup="ifc:IfcSectionedSolid" nillable="true"/>`

<xs:complexType name="IfcSectionedSolidHorizontal">

<xs:complexContent>

<xs:extension base="ifc:IfcSectionedSolid">

<xs:sequence>

<xs:element name="CrossSectionPositions">

<xs:complexType>

<xs:sequence>

<xs:element ref="ifc:IfcDistanceExpression" minOccurs="2" maxOccurs="unbounded"/>

</xs:sequence>

<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDistanceExpression"/>

<xs:attribute ref="ifc:cType" fixed="list"/>

<xs:attribute ref="ifc:arraySize" use="optional"/>

</xs:complexType>

</xs:element>

</xs:sequence>

<xs:attribute name="FixedAxisVertical" type="ifc:IfcBoolean" use="optional"/>

</xs:extension>

</xs:complexContent>

</xs:complexType>

```
ENTITY IfcSectionedSolidHorizontal
```

SUBTYPE OF (IfcSectionedSolid)**;**

CrossSectionPositions : LIST [2:?] OF IfcDistanceExpression;

FixedAxisVertical : IfcBoolean;

WHERE

CorrespondingSectionPositions : SIZEOF(CrossSections) = SIZEOF(CrossSectionPositions);

NoLongitudinalOffsets : SIZEOF(QUERY(temp <* CrossSectionPositions | EXISTS(temp.OffsetLongitudinal))) = 0;

END_ENTITY;