IFC 4x3 vs. 4.1 changes

Hi,
are there any resources out there which point out the structural changes of 4.3 RC2 to 4.1 final? It seems that the IfcAlignment composition has been completely refactored…

I evaluated the lost elements from IFC4X1 to IFC4X3_RC2:

Layer Element (entity or enum)
GeometricConstraintResource Alignment2DHorizontal
GeometricConstraintResource Alignment2DHorizontalSegment
GeometricConstraintResource Alignment2DSegment
GeometricConstraintResource Alignment2DVertical
GeometricConstraintResource Alignment2DVerticalSegment
GeometryResource DistanceExpression
GeometryResource OrientationExpression
ProductExtension BuildingElement
ProductExtension BuildingElementType
ProductExtension TransportElementTypeEnum

I think, this will be the structural changes (replaced by new elements).
Hope it helps.

These are the new entities from IFC4X1 to IFC4X3_RC2 (only the three layers above):

Layer Entity
GeometricConstraintResource AlignmentCantSegment
GeometricConstraintResource AlignmentHorizontalSegment
GeometricConstraintResource AlignmentVerticalSegment
GeometryResource Axis2PlacementLinear
GeometryResource BlossCurve
GeometryResource Clothoid
GeometryResource CurveSegment
GeometryResource DirectrixCurveSweptAreaSolid
GeometryResource GradientCurve
GeometryResource PointByDistanceExpression
GeometryResource Segment
GeometryResource SegmentedReferenceCurve
GeometryResource SeriesParameterCurve
ProductExtension AlignmentHorizontal
ProductExtension AlignmentSegment
ProductExtension AlignmentVertical
ProductExtension Bridge
ProductExtension BridgePart
ProductExtension BuiltElement
ProductExtension BuiltElementType
ProductExtension Facility
ProductExtension FacilityPart
ProductExtension LinearElement
ProductExtension RelPositions

Thanks again for this summary. I’ve done some investigations by my own. It’s a currently incomplete overall picture… but here is a class diagram visualisation of the recent RC2 picture only concerning the affected parts of the alignment entities and some of their classifying entities in product extension.

I don’t fully understand some aspects: Why are there two positioning approaches of IfcLinearPlacement and IfcLinearPositioningElement? If I’m correct, there are two product modelling alternative extensions. IfcLinearElement substructures are using enumerations indicating the type of geometry. IfcPositioningElement uses an IfcCurve instance and is linked via IfcRelPositions. Finally the scene node transformation instances of IfcObjectPlacement uses a relative position along a curve.

For your questions:

  1. Differences between the different versions of IFC standard are compiled in Appendix F of the documentation.
  2. Project teams of IFC Rail and IFC Infrastructure Extension Deployment projects have promised a report on the changes - WIP, to be published during the course of this year. I can share a working draft of the Linear placement changes - please DM me your email.
  3. IfcLinearPlacement and IfcLinearPositioningElement serve two different purposes - the former is for positioning of products (it inherits from IfcObjectPlacement), the latter is for semantic identification, properties, context, etc. (it inherits from IfcProduct) of a linear positioning element. Related, but not at all two approaches to the same thing.
  4. I’m not completely following your statement on “product modelling alternative extensions” - care to elaborate a bit more?

EDIT: Forgot a “)”.

1 Like

Hi Stefan,
thanks for clarification! What I meant by “alternative” is that there are two “alignment” products now. IfcLinearElement which is a kind of semantic branch downstream in inheritance hierarchy (for horizontal / vertical) and IfcLinearPositioningElement. The only difference I see seems to be a more differentiated semantic usage of instances of IfcLinearElement. Isn’t it?

Oh, you meant IfcLinearElement, not ...Placement.

There is still only one IfcAlignment, inheriting from IfcLinearPositioningElement. Its decomposition, as usually the case in infrastructure, can be semantically modeled with classes inheriting from IfcLinearElement. I don’t see a possibility to use IfcLinearElement directly as an instance of alignment (instead of IfcLinearPositioningElement).