Correct Local Placement |
The function checks that a relative placement (i.e. relative to another local placement or linear placement, and not grid placement) of a 3D local placement has to be relative to a 3D parent placement (and not to a 2D parent placement).
HISTORY: New function in Release IFC2x Edition 2.
FUNCTION IfcCorrectLocalPlacement
(AxisPlacement:IfcAxis2Placement;
RelPlacement : IfcObjectPlacement):LOGICAL;
IF (EXISTS(RelPlacement)) THEN
IF ('IFCGEOMETRICCONSTRAINTRESOURCE.IfcGridPlacement' IN TYPEOF(RelPlacement)) THEN
RETURN(?);
END_IF;
IF ('IFCGEOMETRICCONSTRAINTRESOURCE.IfcLocalPlacement' IN TYPEOF(RelPlacement)) THEN
IF ('IFCGEOMETRYRESOURCE.IfcAxis2Placement2D' IN TYPEOF(AxisPlacement)) THEN
RETURN(TRUE);
END_IF;
IF ('IFCGEOMETRYRESOURCE.IfcAxis2Placement3D' IN TYPEOF(AxisPlacement)) THEN
IF (RelPlacement\IfcLocalPlacement.RelativePlacement.Dim = 3) THEN
RETURN(TRUE);
ELSE
RETURN(FALSE);
END_IF;
END_IF;
END_IF;
IF ('IFCGEOMETRYRESOURCE.IfcLinearPlacement' IN TYPEOF(RelPlacement)) THEN
RETURN(TRUE);
END_IF;
ELSE
RETURN(TRUE);
END_IF;
RETURN(?);
END_FUNCTION;
References: IfcLocalPlacement