()
| 574 | |
| 575 | |
| 576 | def test_constraint_solver(): |
| 577 | |
| 578 | s1 = ( |
| 579 | Sketch() |
| 580 | .segment((0.0, 0), (0.0, 2.0), "segment1") |
| 581 | .segment((0.5, 2.5), (1.0, 1), "segment2") |
| 582 | .close("segment3") |
| 583 | ) |
| 584 | s1.constrain("segment1", "Fixed", None) |
| 585 | s1.constrain("segment1", "segment2", "Coincident", None) |
| 586 | s1.constrain("segment2", "segment3", "Coincident", None) |
| 587 | s1.constrain("segment3", "segment1", "Coincident", None) |
| 588 | s1.constrain("segment3", "segment1", "Angle", 90) |
| 589 | s1.constrain("segment2", "segment3", "Angle", 180 - 45) |
| 590 | |
| 591 | s1.solve() |
| 592 | |
| 593 | assert s1._solve_status["status"] == 4 |
| 594 | |
| 595 | s1.assemble() |
| 596 | |
| 597 | assert s1._faces.isValid() |
| 598 | |
| 599 | s2 = ( |
| 600 | Sketch() |
| 601 | .arc((0.0, 0.0), (-0.5, 0.5), (0.0, 1.0), "arc1") |
| 602 | .arc((0.0, 1.0), (0.5, 1.5), (1.0, 1.0), "arc2") |
| 603 | .segment((1.0, 0.0), "segment1") |
| 604 | .close("segment2") |
| 605 | ) |
| 606 | |
| 607 | s2.constrain("segment2", "Fixed", None) |
| 608 | s2.constrain("segment1", "segment2", "Coincident", None) |
| 609 | s2.constrain("arc2", "segment1", "Coincident", None) |
| 610 | s2.constrain("segment2", "arc1", "Coincident", None) |
| 611 | s2.constrain("arc1", "arc2", "Coincident", None) |
| 612 | s2.constrain("segment1", "segment2", "Angle", 90) |
| 613 | s2.constrain("segment2", "arc1", "Angle", 90) |
| 614 | s2.constrain("arc1", "arc2", "Angle", -90) |
| 615 | s2.constrain("arc2", "segment1", "Angle", 90) |
| 616 | s2.constrain("segment1", "Length", 0.5) |
| 617 | s2.constrain("arc1", "Length", 1.0) |
| 618 | |
| 619 | s2.solve() |
| 620 | |
| 621 | assert s2._solve_status["status"] == 4 |
| 622 | |
| 623 | s2.assemble() |
| 624 | |
| 625 | assert s2._faces.isValid() |
| 626 | |
| 627 | assert s2._tags["segment1"][0].Length() == approx(0.5) |
| 628 | assert s2._tags["arc1"][0].Length() == approx(1.0) |
| 629 | |
| 630 | s3 = ( |
| 631 | Sketch() |
| 632 | .arc((0.0, 0.0), (-0.5, 0.5), (0.0, 1.0), "arc1") |
| 633 | .segment((1.0, 0.0), "segment1") |
nothing calls this directly
no test coverage detected