buildingSMART / buildingSMART/IFC4.x-development

Default value for IfcAxis2PlacementLinear.Axis is not defined

Open
#732 4 comments 0 reactions 0 assignees View on GitHub
( ! ) before-NWI IF
Dominant language
Python
Stars
234
Forks
123
Avg merge
15h 4m
Merged PRs (30d)
5

Description

The default value of IfcAxis2PlacementLinear.Axis is not defined.

Using IfcAxis2Placement3D for inspiration, you could say that the default Axis is (0,0,1).

However, IfcAxis2PlacementLinear.RefDirection, when omitted, is taken from the curve tangent a IfcAxis2PlacementLinear.Location.

IfcAxis2PlacementLinear.Location is an IfcPointByDistanceExpression and the BasisCurve could be any IfcCurve type. In the context of alignments BasisCurve could be IfcCompositeCurve, IfcGradientCurve, or IfcSegmentedReferenceCurve.

For IfcGradientCurve or IfcSegmentedReferenceCurve, IfcAxis2PlacementLinear.Axis could be perpendicular to the curve in the "Distance Along - Elevation" plane. Of course, for IfcCompositeCurve, there is not elevation so (0,0,1) would be the natural default for Axis.

As a concrete example, consider the following taken from the FHWA Bridge Geometry Manual https://www.fhwa.dot.gov/bridge/pubs/hif22034.pdf

Plan View
![image](https://github.com/buildingSMART/IFC4.3.x-development/assets/37087370/f375b8e6-a1fb-4ce2-b6e3-550f6d699e89)

Profile View
![image](https://github.com/buildingSMART/IFC4.3.x-development/assets/37087370/381132d3-17b7-422f-9222-236527e996b6)

For the following linear placement the position and axes are desired.

~~~
#217=IFCGRADIENTCURVE((#144,#152,#160,#168,#176,#184,#192,#200,#208,#216),.F.,#78,$);
#219=IFCPOINTBYDISTANCEEXPRESSION(IFCNONNEGATIVELENGTHMEASURE(4000.),$,$,$,#217);
#220=IFCAXIS2PLACEMENTLINEAR(#219,$,$);
#221=IFCLINEARPLACEMENT($,#220,$);
~~~

The position is easy (3688.29,2171.56,115).

From `#220`, we see that Axis and RefDirection are omitted. RefDirection defaults to the tangent to the gradient curve [0.22452 0.974418 -0.0099995]. If Axis is derived from the curve it would be [0.0022452 0.00974418 0.99995].

IFC file is attached.
[FHWA_Bridge_Geometry_Example.ifc.txt](https://github.com/buildingSMART/IFC4.3.x-development/files/13358240/FHWA_Bridge_Geometry_Example.ifc.txt)

Contributor guide

Open the contributing guide

Research direction

Start with the IfcAxis2PlacementLinear definition and compare its omitted-attribute rules with IfcAxis2Placement3D. Review the attached IFC example and the behavior of IfcCompositeCurve, IfcGradientCurve, and IfcSegmentedReferenceCurve. Done means the specification clearly defines the default Axis behavior for these cases.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.