public static Matrix4 LocalTransform(IfcLocalPlacement localPlacement) { Matrix4 rMatrix = null; if (localPlacement.RelativePlacement.Value is IfcAxis2Placement3D) { var relPlacement = localPlacement.RelativePlacement.Value as IfcAxis2Placement3D; rMatrix = IfcAxis2Placement3D.Axis2Placement3DToMatrix(relPlacement); // Check the nodes found. if (localPlacement.PlacementRelTo != null) { var ifcLocalPlacement = localPlacement.PlacementRelTo as IfcLocalPlacement; if (ifcLocalPlacement != null) { rMatrix.MultiplyRev(LocalTransform(ifcLocalPlacement)); } } } return(rMatrix); }