36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
"""Profile operations: revolve, loft, and sweep.
|
|
|
|
Run from the repository root with:
|
|
uv run python examples/05_loft_sweep_revolve.py
|
|
"""
|
|
|
|
from pathlib import Path
|
|
|
|
import simplecadapi as scad
|
|
|
|
|
|
OUT = Path("examples/out")
|
|
OUT.mkdir(parents=True, exist_ok=True)
|
|
|
|
# Revolve a closed profile into a small knob.
|
|
profile = scad.make_polyline_rwire(
|
|
[(0.0, 0.0, 0.0), (4.0, 0.0, 0.0), (3.0, 0.0, 8.0), (1.0, 0.0, 8.0)],
|
|
closed=True,
|
|
)
|
|
knob = scad.revolve_rsolid(profile, axis=(0.0, 0.0, 1.0), angle=360.0)
|
|
|
|
# Loft between rectangular sections.
|
|
a = scad.make_rectangle_rwire(8.0, 8.0, center=(16.0, 0.0, 0.0))
|
|
b = scad.make_rectangle_rwire(4.0, 4.0, center=(16.0, 0.0, 8.0))
|
|
loft = scad.loft_rsolid([a, b])
|
|
|
|
# Sweep a circular face along a polyline path.
|
|
profile_face = scad.make_circle_rface((30.0, 0.0, 0.0), 1.0, normal=(1.0, 0.0, 0.0))
|
|
path = scad.make_polyline_rwire([(30.0, 0.0, 0.0), (34.0, 0.0, 3.0), (38.0, 3.0, 6.0)])
|
|
swept = scad.sweep_rsolid(profile_face, path)
|
|
|
|
scad.export_step([knob, loft, swept], str(OUT / "profile_operations.step"))
|
|
print("knob", round(knob.get_volume(), 3))
|
|
print("loft", round(loft.get_volume(), 3))
|
|
print("swept", round(swept.get_volume(), 3))
|