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.11 IfcFirstProjAxis

8.9.6.11.1 Semantic definition

{ .extDef}

8.9.6.11.2 Formal representation

FUNCTION IfcFirstProjAxis
(ZAxis, Arg : IfcDirection) : IfcDirection;
LOCAL
XAxis : IfcDirection;
V : IfcDirection;
Z : IfcDirection;
XVec : IfcVector;
END_LOCAL;
IF (NOT EXISTS(ZAxis)) THEN
RETURN (?) ;
ELSE
Z := IfcNormalise(ZAxis);
IF NOT EXISTS(Arg) THEN
IF (Z.DirectionRatios <> [1.0,0.0,0.0]) THEN
V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([1.0,0.0,0.0]);
ELSE
V := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,1.0,0.0]);
END_IF;
ELSE
IF (Arg.Dim <> 3) THEN
RETURN (?) ;
END_IF;
IF ((IfcCrossProduct(Arg,Z).Magnitude) = 0.0) THEN
RETURN (?);
ELSE
V := IfcNormalise(Arg);
END_IF;
END_IF;
XVec := IfcScalarTimesVector(IfcDotProduct(V, Z), Z);
XAxis := IfcVectorDifference(V, XVec).Orientation;
XAxis := IfcNormalise(XAxis);
END_IF;
RETURN(XAxis);
END_FUNCTION;

8.9.6.11.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!