buildingSMART / buildingSMART/IFC4.x-development
Default value for IfcAxis2PlacementLinear.Axis is not defined
- 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

Profile View

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
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