Feature request: Arc and curve entities

#35 · closed · 1 comments

View on GitHub ↗

snoble

## Use Case Many mechanical and artistic designs require curved paths that aren't full circles: - Cam profiles - Gear tooth involutes - Decorative flourishes - Rounded corners - Bezier curves for smooth paths ## Current Limitation Only `line` and `circle` entities are supported. There's no way to represent: - Arcs (partial circles) - Bezier curves - Splines - Ellipses ## Proposed Solution Add arc entity type: ```json {"type": "arc", "id": "arc1", "center": [0,0,0], "start_angle": 0, "end_angle": 90, "radius": 50} ``` Or with points: ```json {"type": "arc", "id": "arc1", "center": "center_pt", "start": "start_pt", "end": "end_pt"} ``` For more complex curves, bezier or spline entities: ```json {"type": "bezier", "id": "curve1", "control_points": ["p1", "p2", "p3", "p4"]} ``` ## Priority Arc would be the most useful addition as it enables: - Rounded corners - Gear tooth profiles - Cam mechanisms - Partial ring structures

Comments

snoble

✅ Already implemented! Both Arc and Cubic Bezier entities are supported: **Arc entity** (with point references): ```json {"type": "arc", "id": "arc1", "center": "center_pt", "start": "start_pt", "end": "end_pt", "normal": [0, 0, 1], "workplane": "xy_plane"} ``` **Cubic Bezier entity**: ```json {"type": "cubic", "id": "curve1", "control_points": ["p0", "p1", "p2", "p3"], "workplane": "xy_plane"} ``` Related constraints also work: - `tangent` between arc/cubic and lines - `equal_line_arc_length` - `cubic_line_tangent` - `arc_arc_length_ratio`, `arc_line_length_ratio`, etc.