# 8.7.3.4 IfcAlignmentVerticalSegment

## 8.7.3.4.1 Semantic definition

Individual segment along the *IfcAlignmentVertical*, being defined in the distance-along/z coordinate space.

The vertical alignment is defined by segments that connects end-to-start. The vertical alignment curve geometry is defined in a plane with x = distance along horizontal, the y = height (or elevation). The transition at the segment connection is not enforced to be tangential, The *IfcSegment* *Transition* enumeration specifies the type of transition explicitly.

The following vertical segment types are defined:

- line segment -
*IfcAlignmentVerticalSegmentTypeEnum*.LINE. - circular arc segment -
*IfcAlignmentVerticalSegmentTypeEnum*.ARC. - parabolic arc segment -
*IfcAlignmentVerticalSegmentTypeEnum*.PARABOLICARC. which can describe symmetric parabolas, unsymmetric parabolas can be created by defining two symmetric parabolas segments - transition segment with linear curvature variation -
*IfcAlignmentVerticalSegmentTypeEnum*.CLOTHOID.

For each vertical segment, the following non-redundant information is provided:

- the start point (in distance along/ height coordinates)
- the start gradient (as a ratio measure with horizontal being 0, uphill positive, and downhill negative) usually between 1 < n < -1 (equal to a percentage of 100% < n < -100%, or to a degree of 45° < n < -45° but higher values are possible)
- the length (as horizontal length along the distance along (not the curve segment length))
- the curve parameter needed for circular and parabolic arc segments

The following information can be calculated (and is therefore not exchanged explicitly to avoid redundancy and inconsistencies)

- the end distance along (from the distance along and segment length)
- the end height (from start distance along, gradient, length and curve parameter)
- the end direction (from start direction, segment length and curve parameter)
- the point of vertical intersection (from start direction and end direction)

The following checks can be done to validate the correct exchange:

- continuity – does the calculated end distance along of the previous segment matches with the provided start distance along of this segment
- tangential continuity – does the calculated end gradient of the previous segment matches with the provided start gradient of this segment

## 8.7.3.4.2 Entity inheritance

## 8.7.3.4.3 Attributes

# | Attribute | Type | Description |
---|---|---|---|

IfcAlignmentParameterSegment (2) | |||

1 | StartTag | OPTIONAL IfcLabel |
Tag to annotate the start point of the alignment segment. |

2 | EndTag | OPTIONAL IfcLabel |
Tag to annotate the end point of the alignment segment. |

Click to show 2 hidden inherited attributes Click to hide 2 inherited attributes | |||

IfcAlignmentVerticalSegment (7) | |||

3 | StartDistAlong | IfcLengthMeasure |
Distance along the horizontal alignment as measured along the corresponding |

4 | HorizontalLength | IfcNonNegativeLengthMeasure |
Length measured as distance along the horizontal alignment of the segment. |

5 | StartHeight | IfcLengthMeasure |
Elevation in Z of the start point relative to the IfcAlignment coordinate system. |

6 | StartGradient | IfcRatioMeasure |
Start gradient of the segment. |

7 | EndGradient | IfcRatioMeasure |
End gradient of the segment. In the case of a PredefinedType='.CONSTANTGRADIENT.' the value is the same as |

8 | RadiusOfCurvature | OPTIONAL IfcLengthMeasure |
Radius of parabola or arc. Positive values imply a CCW direction whereas negative CW. |

9 | PredefinedType | IfcAlignmentVerticalSegmentTypeEnum |
Predefined type of the vertical alignmnent segment. |

## 8.7.3.4.4 Examples

## 8.7.3.4.5 Formal representation

```
ENTITY IfcAlignmentVerticalSegment
SUBTYPE OF (IfcAlignmentParameterSegment);
StartDistAlong : IfcLengthMeasure;
HorizontalLength : IfcNonNegativeLengthMeasure;
StartHeight : IfcLengthMeasure;
StartGradient : IfcRatioMeasure;
EndGradient : IfcRatioMeasure;
RadiusOfCurvature : OPTIONAL IfcLengthMeasure;
PredefinedType : IfcAlignmentVerticalSegmentTypeEnum;
END_ENTITY;
```