Individual skill

solidcraft-sweep-and-boolean-hangs

Use when a SolidCraft model needs solid.sweep (twist, scale, vases, cups, pipes) or any cut or join on a swept or very-high-face-count body, to avoid hangs that need an app restart.

skills/solidcraft-sweep-and-boolean-hangs/SKILL.md

Read pinned source

Source commit 55dfc666a755711026aeb6e13051c7adfe69ee80

What was checked

Matches the observed repository HEAD
Yes
Scanner rules are current
Yes
Repository scan complete
No
Skill scan complete
Yes
Observed behavior
Instructions only
Last checked
Nov 5, 2026

These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.

Install this skill

Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.

An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.

Repository context

Repository stars (not skill ratings)
12
Repository last updated
Nov 2, 2026
License
Apache-2.0

Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.

Files and excerpt

File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.

Browse files
Read excerpt

# SolidCraft: sweep recipes and boolean hang avoidance

Use with `solidcraft-modeling` and `solidcraft-tutorial-recipes`. Validated on public sweep tutorials (a twisted vase and a hex cup) and consistent with the timed-test lessons in `solidcraft-speed-modeling-lessons` (joins with coincident circular faces hang the app).

## 1. Sweep recipe (MCP)
1. Profile sketch on the plane where the profile lives (XY, or XY with an offset when it sits on top of a base).
2. Path sketch as a SEPARATE sketch on an upright plane `{origin:[0,0,0], x_dir:[1,0,0], y_dir:[0,0,1]}`: `sketch.line [[0,0],[0,H]]`.
3. `solid.sweep {sketch:"Profile", profiles:[{point:[x,y]}...], path_sketch:"Path", path:["l1"], twist:"90 deg", scale:2.2, operation:"new", body_name:"X"}`. Pick every closed region with a point inside it (for crossing arcs or circles pick all the lens regions and the ring).
4. Always use `operation:"new"`. A sweep joined to another body is a Boolean and very slow (the tutorial author says the same).
5. `measure` right after: the bbox height is the path length (plus the base), compare the volume with a numeric estimate. 400-1000+ faces are normal for twisted bodies.

## 2. Verified examples
- **Hex cup:** hexagon across flats 40 (`sketch.polygon.inscribed radius 23.0940108 sides 6 angle 0`), `sketch.fillet` R4 on the 6 corners, `sketch.offset` 2 inward (2 profiles give a wall ring), path 80 mm, twist 90 deg, end scale 2.2, profile pick [0,19]: 55 612.7 mm3, z 0-80. The transcript said 14 / 18 / 19 but the frames show 40 / 80 / 90. Bottom: `solid.extrude` of the outer profile 2 mm negative as a separate body (2 760.9 mm3).
- **Vase:** base dia 120 x 10. Profile sketch on XY offset 10 with circles r50 and r45 plus 8 arcs R6 (centres on the r49.6387 circle every 45 deg). Path 120 mm, twist 100 deg, scale 2, new body: 537 948 mm3, z 10-130.