File: test_acis_entites.py

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (48 lines) | stat: -rw-r--r-- 1,291 bytes parent folder | download
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__])