Экспорт и импорт

Экспорт вычисляет геометрию и записывает файл; show() и графический интерфейс не нужны.

Формат Что сохраняется Запись Чтение
STL Треугольная сетка без единиц измерения export_stl Через сторонние библиотеки, например trimesh
STEP Точная BREP-геометрия и единицы export_step Нет
3MF Сетка, единицы и метаданные export_3mf Нет
BREP Геометрия OpenCascade to_brep from_brep
SVG Плоская геометрия, поддержка ограничена to_svg from_svg

STL, STEP и 3MF

import zencad as z

part = z.box(20) - z.cylinder(4, 20).translate(10, 10, 0)
z.export_stl(part, "part.stl", binary=True)
z.export_step(part, "part.step", unit="mm")
z.export_3mf(part, "part.3mf", unit="mm", name="Bracket")

Экспортёры считают исходные координаты миллиметрами. unit выбирает единицы файла: mm, cm, m, um, in, ft или полные имена. Например, при unit="cm" размер 20 записывается как 2 сантиметра. STL не хранит единицы: в нём меняется только масштаб координат.

linear_tolerance и angular_tolerance управляют детализацией сетки STL/3MF. Линейный допуск задаётся в единицах файла; меньший допуск даёт более мелкую сетку. STEP не требует триангуляции.

Вместо пути можно передать бинарный поток:

import io
import zencad as z

stream = io.BytesIO()
z.export_step(z.box(10), stream)
assert stream.getvalue().startswith(b"ISO-10303-21")

Невалидная форма вызывает ShapeValidationError, ошибка записи — OSError. to_stl(model, path, delta) — короткий вариант экспорта в ASCII STL; delta задаёт детализацию, при успехе возвращается True.

BREP

import zencad as z

z.to_brep(z.box(3), "part.brep")
restored = z.from_brep("part.brep")
restored.assert_valid()

SVG

Для файлов используются to_svg(model, path) и from_svg(path). Для обмена строками — to_svg_string(model) и from_svg_string(svg).

import zencad as z

svg = z.to_svg_string(z.rectangle(20, 10))
restored = z.from_svg_string(svg)
restored.assert_valid()

SVG работает с плоской геометрией; поддерживаются не все типы кривых. Пример импорта малополигонального STL через trimesh находится в zencad/examples/Integration/trimesh. Подробности экспорта.