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")
