|
14 | 14 | exportVRML,
|
15 | 15 | )
|
16 | 16 | from cadquery.occ_impl.assembly import toJSON, toCAF, toFusedCAF
|
17 |
| -from cadquery.occ_impl.shapes import Face |
| 17 | +from cadquery.occ_impl.shapes import Face, box |
18 | 18 | from cadquery.occ_impl.geom import Location
|
19 | 19 |
|
20 | 20 | from OCP.gp import gp_XYZ
|
@@ -286,6 +286,31 @@ def boxes7_assy():
|
286 | 286 | return assy
|
287 | 287 |
|
288 | 288 |
|
| 289 | +@pytest.fixture |
| 290 | +def boxes8_assy(): |
| 291 | + |
| 292 | + b0 = box(1, 1, 1) |
| 293 | + |
| 294 | + assy = cq.Assembly(loc=cq.Location(0, 10, 0)) |
| 295 | + assy.add(b0, name="box0", color=cq.Color("red")) |
| 296 | + assy.add(b0, name="box1", color=cq.Color("green"), loc=cq.Location((1, 0, 0))) |
| 297 | + |
| 298 | + return assy |
| 299 | + |
| 300 | + |
| 301 | +@pytest.fixture |
| 302 | +def boxes9_assy(): |
| 303 | + |
| 304 | + b0 = box(1, 1, 1) |
| 305 | + |
| 306 | + assy = cq.Assembly( |
| 307 | + b0, name="box0", loc=cq.Location(0, 10, 0), color=cq.Color("red") |
| 308 | + ) |
| 309 | + assy.add(b0, name="box1", color=cq.Color("green"), loc=cq.Location((1, 0, 0))) |
| 310 | + |
| 311 | + return assy |
| 312 | + |
| 313 | + |
289 | 314 | @pytest.fixture
|
290 | 315 | def spheres0_assy():
|
291 | 316 |
|
@@ -587,13 +612,29 @@ def test_step_export(nested_assy, tmp_path_factory):
|
587 | 612 |
|
588 | 613 | # check that locations were applied correctly
|
589 | 614 | c = cq.Compound.makeCompound(w.solids().vals()).Center()
|
590 |
| - c.toTuple() |
591 | 615 | assert pytest.approx(c.toTuple()) == (0, 4, 0)
|
592 | 616 | c2 = cq.Compound.makeCompound(o.solids().vals()).Center()
|
593 |
| - c2.toTuple() |
594 | 617 | assert pytest.approx(c2.toTuple()) == (0, 4, 0)
|
595 | 618 |
|
596 | 619 |
|
| 620 | +@pytest.mark.parametrize( |
| 621 | + "assy_fixture, expected", |
| 622 | + [ |
| 623 | + ("boxes8_assy", {"nsolids": 2, "center": (0.5, 10, 0.5)},), |
| 624 | + ("boxes9_assy", {"nsolids": 2, "center": (0.5, 10, 0.5)},), |
| 625 | + ], |
| 626 | +) |
| 627 | +def test_step_export_loc(assy_fixture, expected, request, tmpdir): |
| 628 | + stepfile = Path(tmpdir, assy_fixture).with_suffix(".step") |
| 629 | + if not stepfile.exists(): |
| 630 | + assy = request.getfixturevalue(assy_fixture) |
| 631 | + assy.save(str(stepfile)) |
| 632 | + o = cq.importers.importStep(str(stepfile)) |
| 633 | + assert o.solids().size() == expected["nsolids"] |
| 634 | + c = cq.Compound.makeCompound(o.solids().vals()).Center() |
| 635 | + assert pytest.approx(c.toTuple()) == expected["center"] |
| 636 | + |
| 637 | + |
597 | 638 | def test_native_export(simple_assy):
|
598 | 639 |
|
599 | 640 | exportCAF(simple_assy, "assy.xml")
|
|
0 commit comments