Автоматизация без редактора
Для inspect и check достаточно geometry-only установки. Скрипт должен объявить статическую сцену через display() и show(), как в первой модели. Код модели исполняется в отдельном процессе.
inspect — получить сведения о модели
inspect выполняет скрипт и составляет отчёт о построенной сцене. Он нужен, чтобы узнать состав модели, размеры и свойства геометрии без открытия редактора. Отчёт можно читать в терминале или передавать другой программе в JSON. Например, так можно узнать объём детали и её габариты перед экспортом.
Отчёт о геометрии
zencad inspect model.py
zencad inspect model.py --json
zencad inspect model.py --output report.json
Отчёт содержит ID и имена объектов, размещение, bounding box, типы и количество топологии, площадь/объём, статистику mesh, digest и валидность. stdout/stderr модели перенаправлены в stderr команды: stdout JSON можно передавать следующему инструменту.
Граф вычислений
Граф помогает разобраться, из каких операций построена модель, какие результаты взяты из кэша и где возникла ошибка вычисления.
zencad inspect model.py --tree --no-cache
zencad inspect model.py --graph-json graph.json
zencad inspect model.py --tree --failed-path
Дерево показывает операции, общие зависимости, состояние кэша/вычислений и источник в коде. --root, --max-depth, --hide-literals, --max-graph-nodes ограничивают представление. При неподдерживаемой кодировке вывода ветви дерева печатаются в ASCII; API to_tree() сохраняет Unicode. --graph-json — отдельный формат графа, не отчёт геометрии.
Подробности параметров и формата отчёта: справка inspect.
check — проверить требования к модели
check выполняет скрипт и проверяет, соответствует ли полученная геометрия заданным требованиям: например, корректна ли форма, является ли она твёрдым телом и попадают ли её объём и габариты в допустимые пределы. Команда нужна для автоматической проверки после изменения модели — в скрипте, CI или при работе агента. Результат проверки — успех либо список невыполненных требований.
zencad check model.py --valid --solid
zencad check model.py --volume 700:800 --bbox-size 19:21,9:11,3:5 --json
--valid проверяет корректность геометрии. --volume 700:800 задаёт допустимый диапазон объёма, а --bbox-size 19:21,9:11,3:5 — диапазоны габаритов по X, Y и Z.
--solid требует solid-тип каждого видимого BREP-объекта; compound с телом внутри не равнозначен solid. Проверяется видимый результат; несколько объектов агрегируются по контракту команды. JSON содержит expected/actual/tolerance. Код 7 означает несоответствие требованиям при успешно исполненной модели; 0 — успех. Ошибка скрипта — 3, геометрии/сцены — 4, таймаут — 5, ошибка вывода — 6, неправильные аргументы — 2. Подробности: справка check.
render — создать изображение модели
render выполняет скрипт и сохраняет изображение построенной сцены в PNG. Он нужен для визуального просмотра результата без работы в редакторе: например, чтобы приложить превью к отчёту или рассмотреть деталь с нескольких сторон. Изображение помогает оценить внешний вид; корректность геометрии и численные требования проверяются командой check.
zencad render model.py -o preview.png
zencad render model.py -o views.png --views iso,front,top,right --size 640x480
Ракурсы: iso, front, back, left, right, top, bottom. Размер задаётся для каждого тайла; несколько видов собираются в контактный лист. Камера ортографическая с новым FitAll, без сохранённого состояния редактора. Режимы: shaded, shaded-with-edges, wireframe; доступны фон, оси и margin.
Ракурс и сглаживание
Для произвольного ракурса задайте оба угла --yaw и --pitch в градусах:
zencad render model.py -o preview.png --yaw -65 --pitch 12 --msaa 8
yaw задаёт положение камеры вокруг оси Z: 0 — со стороны +X, 90 — со стороны +Y. pitch задаёт высоту камеры над плоскостью XY: 0 — горизонтальный взгляд, 90 — сверху, −90 — снизу. Диапазон pitch — от −90 до 90. Углы задаются вместе и не сочетаются с --view/--views. Модель автоматически вписывается в кадр; отступ регулируется --margin.
--msaa управляет сглаживанием краёв: доступны 0, 2, 4 и 8 отсчётов. По умолчанию используется 4; 0 отключает сглаживание. Параметр работает и с готовыми ракурсами.
В Python API render_script и render_snapshot принимают yaw, pitch в радианах, а msaa — целое число. Например: render_script("model.py", "preview.png", yaw=deg(-65), pitch=deg(12), msaa=8), где deg импортирована из zencad. Если ни углы, ни views не заданы, используется iso.
Render требует gui extra и работоспособный OpenGL. На сервере Linux:
LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a zencad render model.py -o preview.png
Windows/macOS-render ещё требует платформенной приёмки; на GitHub-hosted macOS зафиксирован отказ создания OpenGL-контекста. Это не препятствует headless inspect/check, которым viewer не нужен. Контракт рендера.
Python API
from zencad import inspect_script
if __name__ == "__main__":
report = inspect_script("model.py", cache_enabled=False)
print(report.to_json())
Защита entry point нужна из-за запуска дочернего процесса. Также доступны check_script, inspect_computation_graph, render_script; форматы и параметры описаны в development-справке.