FUNCTION IfcVectorDifference

(* SCHEMA IFC2X2_FINAL; *)
FUNCTION IfcVectorDifference
	(Arg1, Arg2 : IfcVectorOrDirection)
	: IfcVector;
  LOCAL
    Result : IfcVector;
    Res, Vec1, Vec2 : IfcDirection;
    Mag, Mag1, Mag2 : REAL;
    Ndim : INTEGER;
  END_LOCAL;
  
    IF ((NOT EXISTS (Arg1)) OR (NOT EXISTS (Arg2))) OR (Arg1.Dim <> Arg2.Dim) THEN
      RETURN (?) ;
    ELSE
      BEGIN
        IF 'IFC2X2_FINAL.IFCVECTOR' IN TYPEOF(Arg1) THEN
          Mag1 := Arg1.Magnitude;
          Vec1 := Arg1.Orientation;
        ELSE
          Mag1 := 1.0;
          Vec1 := Arg1;
        END_IF;
        IF 'IFC2X2_FINAL.IFCVECTOR' IN TYPEOF(Arg2) THEN
          Mag2 := Arg2.Magnitude;
          Vec2 := Arg2.Orientation;
        ELSE
          Mag2 := 1.0;
          Vec2 := Arg2;
        END_IF;
        Vec1 := IfcNormalise (Vec1);
        Vec2 := IfcNormalise (Vec2);
        Ndim := SIZEOF(Vec1.DirectionRatios);
        Mag  := 0.0;
        IF (Ndim = 2) THEN
          Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.,0.]);
        ELSE
          Res := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.,0.,0.]);
        END_IF;
        Res.DirectionRatios := [0.0:Ndim];
        REPEAT i := 1 TO Ndim;
          Res.DirectionRatios[i] := Mag1*Vec1.DirectionRatios[i] + Mag2*Vec2.DirectionRatios[i];
          Mag := Mag + (Res.DirectionRatios[i]*Res.DirectionRatios[i]);
        END_REPEAT;
        IF (Mag > 0.0 ) THEN
          Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Res, SQRT(Mag));
        ELSE
          Result := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector( Vec1, 0.0);
        END_IF;
      END;
    END_IF;
    RETURN (Result);
END_FUNCTION;

Referenced By

Defintion IfcVectorDifference is references by the following definitions:
DefinitionType
 IfcFirstProjAxis FUNCTION
 IfcSecondProjAxis FUNCTION


[Top Level Definitions] [Exit]

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