IFC 4.4.0.0 build 20261005 (IFC4X4_DEV_20260525) ⚠ buildingSMART Working Draft. All content is under development.

  • Help suggest improvements
  • Get user or developer support

8.9.6.2 IfcBaseAxis

8.9.6.2.1 Semantic definition

{ .extDef}

8.9.6.2.2 Formal representation

FUNCTION IfcBaseAxis
(Dim : INTEGER;
Axis1, Axis2, Axis3 : IfcDirection)
: LIST [2:3] OF IfcDirection;
LOCAL
U : LIST [2:3] OF IfcDirection;
Factor : REAL;
D1, D2 : IfcDirection;
END_LOCAL;
IF (Dim = 3) THEN
D1 := NVL(IfcNormalise(Axis3), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0]));
D2 := IfcFirstProjAxis(D1, Axis1);
U := [D2, IfcSecondProjAxis(D1, D2, Axis2), D1];
ELSE
IF EXISTS(Axis1) THEN
D1 := IfcNormalise(Axis1);
U := [D1, IfcOrthogonalComplement(D1)];
IF EXISTS(Axis2) THEN
Factor := IfcDotProduct(Axis2, U[2]);
IF (Factor < 0.0) THEN
U[2].DirectionRatios[1] := -U[2].DirectionRatios[1];
U[2].DirectionRatios[2] := -U[2].DirectionRatios[2];
END_IF;
END_IF;
ELSE
IF EXISTS(Axis2) THEN
D1 := IfcNormalise(Axis2);
U := [IfcOrthogonalComplement(D1), D1];
U[1].DirectionRatios[1] := -U[1].DirectionRatios[1];
U[1].DirectionRatios[2] := -U[1].DirectionRatios[2];
ELSE
U := [IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0, 0.0]),
IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0, 1.0])];
END_IF;
END_IF;
END_IF;
RETURN(U);
END_FUNCTION;

8.9.6.2.3 References

Edit on Github

3 contributor(s): ArturTomczakDion MoultbSI-Bot
Last change: Improve definition split (#876) * bring back headers headers were previously removed by mistake, now bringing them back * add new lines and rename the tag add the word 'short' in it * unify newlines make exactly one newline before and two after the tag * resolving typos Because bringing back headers required to go back in time to previous version, I'm now re-resolving the issues: #861, #860, #856 by ArturTomczak on 2024-07-16T16:07:28+02:00

Is this page difficult to understand? Let us know!