FUNCTION IfcBaseAxis

(* SCHEMA IFC2X2_FINAL; *)
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;

Referenced By

Defintion IfcBaseAxis is references by the following definitions:
DefinitionType
 IfcCartesianTransformationOperator2D ENTITY
 IfcCartesianTransformationOperator3D ENTITY


[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:20:56-04:00