forked from mozman/ezdxf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_acis_entites.py
48 lines (36 loc) · 1.26 KB
/
test_acis_entites.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Copyright (c) 2024, Manfred Moitzi
# License: MIT License
import pytest
import ezdxf
from ezdxf.document import Drawing
from ezdxf.math import Matrix44
from ezdxf.render.forms import cube
from ezdxf.acis.api import body_from_mesh, export_sab
FILENAME = "3dsolid.dxf"
@pytest.fixture
def doc():
acis_body = body_from_mesh(cube())
_doc = ezdxf.new()
msp = _doc.modelspace()
dxf_3dsolid = msp.add_3dsolid()
dxf_3dsolid.sab = export_sab([acis_body])
dxf_3dsolid.transform(Matrix44.translate(10, 11, 12))
return _doc
def test_apply_transformations_to_acis_entities(doc: Drawing):
# this is done automatically when exporting the DXF document
try:
doc.commit_pending_changes()
except Exception as e:
pytest.fail(f"commit_pending_changes() raises unexpected exception: {str(e)}")
def test_export_and_reload_transformed_acis_entities(tmp_path, doc: Drawing):
file_path = tmp_path / FILENAME
doc.saveas(file_path)
del doc
doc2 = ezdxf.readfile(file_path)
# Do not test the current implementation, this may change in the future:
solids = doc2.query("3DSOLID")
assert len(solids) == 1
dxf_3dsolid = solids[0]
assert len(dxf_3dsolid.sab) > 16
if __name__ == "__main__":
pytest.main([__file__])