34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
"""Expression parameters inside a replayable graph/model workflow.
|
|
|
|
Run from the repository root with:
|
|
uv run python examples/03_expressions.py
|
|
"""
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
import simplecadapi as scad
|
|
|
|
|
|
OUT = Path("examples/out")
|
|
OUT.mkdir(parents=True, exist_ok=True)
|
|
|
|
|
|
width = scad.var("width", 24.0, comment="plate width")
|
|
height = scad.var("height", 12.0, comment="plate height")
|
|
thickness = scad.var("thickness", 4.0, comment="plate thickness")
|
|
|
|
with scad.GraphSession() as session:
|
|
plate = scad.make_box_rsolid(width, height, thickness)
|
|
rib = scad.make_box_rsolid(width / 4.0, height, thickness * 2.0)
|
|
rib = scad.translate_shape(rib, (0.0, 0.0, 4.0))
|
|
part = scad.union_rsolid(plate, rib)
|
|
|
|
model_json = scad.export_model_json(session)
|
|
payload = json.loads(model_json)
|
|
(OUT / "expressions.model.json").write_text(model_json, encoding="utf-8")
|
|
|
|
print("expression_nodes", len(payload["expression_graph"]["nodes"]))
|
|
print("graph_nodes", len(payload["graph"]["nodes"]))
|
|
print("volume", round(part.get_volume(), 3))
|