[dxf] fix dxf repetition load
This commit is contained in:
parent
08421d6a54
commit
46a3559391
2 changed files with 82 additions and 5 deletions
|
|
@ -112,6 +112,38 @@ def test_dxf_manhattan_precision(tmp_path: Path):
|
|||
assert isinstance(ref.repetition, Grid), "Grid should be preserved for 90-degree rotation"
|
||||
|
||||
|
||||
def test_dxf_rotated_grid_roundtrip_preserves_basis_and_counts(tmp_path: Path):
|
||||
lib = Library()
|
||||
sub = Pattern()
|
||||
sub.polygon("1", vertices=[[0, 0], [1, 0], [1, 1]])
|
||||
lib["sub"] = sub
|
||||
|
||||
top = Pattern()
|
||||
top.ref(
|
||||
"sub",
|
||||
offset=(0, 0),
|
||||
rotation=numpy.pi / 2,
|
||||
repetition=Grid(a_vector=(10, 0), a_count=3, b_vector=(0, 20), b_count=2),
|
||||
)
|
||||
lib["top"] = top
|
||||
|
||||
dxf_file = tmp_path / "rotated_grid.dxf"
|
||||
dxf.writefile(lib, "top", dxf_file)
|
||||
|
||||
read_lib, _ = dxf.readfile(dxf_file)
|
||||
read_top = read_lib.get("Model") or read_lib.get("top") or list(read_lib.values())[0]
|
||||
|
||||
target_name = next(k for k in read_top.refs if k.upper() == "SUB")
|
||||
ref = read_top.refs[target_name][0]
|
||||
assert isinstance(ref.repetition, Grid)
|
||||
actual = ref.repetition.displacements
|
||||
expected = Grid(a_vector=(10, 0), a_count=3, b_vector=(0, 20), b_count=2).displacements
|
||||
assert_allclose(
|
||||
actual[numpy.lexsort((actual[:, 1], actual[:, 0]))],
|
||||
expected[numpy.lexsort((expected[:, 1], expected[:, 0]))],
|
||||
)
|
||||
|
||||
|
||||
def test_dxf_read_legacy_polyline() -> None:
|
||||
doc = ezdxf.new()
|
||||
msp = doc.modelspace()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue