diff --git a/src/ifcopenshell-python/test/fixtures/rules/fail-placement-2d-3d-ifc2x3.ifc b/src/ifcopenshell-python/test/fixtures/rules/fail-placement-2d-3d-ifc2x3.ifc new file mode 100644 index 0000000000..7f3c7930ab --- /dev/null +++ b/src/ifcopenshell-python/test/fixtures/rules/fail-placement-2d-3d-ifc2x3.ifc @@ -0,0 +1,15 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-01-11T11:39:57',(),(),'IfcOpenShell v0.7.0-8a108f37','IfcOpenShell v0.7.0-8a108f37',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCCARTESIANPOINT((0.,0.)); +#2=IFCAXIS2PLACEMENT2D(#1,$); +#3=IFCLOCALPLACEMENT($,#2); +#4=IFCCARTESIANPOINT((0.,0.,0.)); +#5=IFCAXIS2PLACEMENT3D(#4,$,$); +#6=IFCLOCALPLACEMENT(#3,#5); +ENDSEC; +END-ISO-10303-21; diff --git a/src/ifcopenshell-python/test/fixtures/rules/generate_19.py b/src/ifcopenshell-python/test/fixtures/rules/generate_19.py new file mode 100644 index 0000000000..b370364a03 --- /dev/null +++ b/src/ifcopenshell-python/test/fixtures/rules/generate_19.py @@ -0,0 +1,18 @@ +import ifcopenshell + +make_nd = lambda d: lambda *c: (c + (0.,)) if d == 3 else c + +for d1, d2 in ((2,3), (3,3), (3,2)): + f = ifcopenshell.file(schema="IFC2X3") + f.createIfcLocalPlacement( + PlacementRelTo=f.createIfcLocalPlacement( + PlacementRelTo=None, + RelativePlacement=f.create_entity(f'IfcAxis2Placement{d1}D', + f.createIfcCartesianPoint(make_nd(d1)(0., 0.)) + ) + ), + RelativePlacement=f.create_entity(f'IfcAxis2Placement{d2}D', + f.createIfcCartesianPoint(make_nd(d2)(0., 0.)) + ) + ) + f.write(f"{'pass' if d1 >= d2 else 'fail'}-placement-{d1}d-{d2}d-ifc2x3.ifc") diff --git a/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-2d-ifc2x3.ifc b/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-2d-ifc2x3.ifc new file mode 100644 index 0000000000..dd25276130 --- /dev/null +++ b/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-2d-ifc2x3.ifc @@ -0,0 +1,15 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-01-11T11:39:57',(),(),'IfcOpenShell v0.7.0-8a108f37','IfcOpenShell v0.7.0-8a108f37',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCCARTESIANPOINT((0.,0.,0.)); +#2=IFCAXIS2PLACEMENT3D(#1,$,$); +#3=IFCLOCALPLACEMENT($,#2); +#4=IFCCARTESIANPOINT((0.,0.)); +#5=IFCAXIS2PLACEMENT2D(#4,$); +#6=IFCLOCALPLACEMENT(#3,#5); +ENDSEC; +END-ISO-10303-21; diff --git a/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-3d-ifc2x3.ifc b/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-3d-ifc2x3.ifc new file mode 100644 index 0000000000..9dbfd97fde --- /dev/null +++ b/src/ifcopenshell-python/test/fixtures/rules/pass-placement-3d-3d-ifc2x3.ifc @@ -0,0 +1,15 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2023-01-11T11:39:57',(),(),'IfcOpenShell v0.7.0-8a108f37','IfcOpenShell v0.7.0-8a108f37',''); +FILE_SCHEMA(('IFC2X3')); +ENDSEC; +DATA; +#1=IFCCARTESIANPOINT((0.,0.,0.)); +#2=IFCAXIS2PLACEMENT3D(#1,$,$); +#3=IFCLOCALPLACEMENT($,#2); +#4=IFCCARTESIANPOINT((0.,0.,0.)); +#5=IFCAXIS2PLACEMENT3D(#4,$,$); +#6=IFCLOCALPLACEMENT(#3,#5); +ENDSEC; +END-ISO-10303-21;