mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-03 02:25:55 +00:00
d433ce2c9f
Ladder 06/009 had no way to ask for one: "solid.thread has no runout (vanishing thread) length". With SMLib's smlib_screw_sweep_radial (replay e7acea1): - smlib: the FFI binding and Brep::screw_sweep_radial, the profile moved off the axis by a piecewise linear law of the turn; crate test: a tooth moved out 1 mm over three turns has A 2π (c turns + ∫ offset dt). - kernel: sweep_helix_radial, sharing sweep_helix's checks (helix_profile). - doc: `ease_in`, `ease_out` (a length, or ISO 3508's standard 2.5 P or short 1.25 P) fade the groove over that length, its section moving out of the material as it turns (outward for a shaft, inward for a nut). ease_in is at the end the thread starts from. The runout lies past the full-form length: beyond a square stop, before a shoulder up to its clearance; at a free end inside the face. Runouts longer than the thread are refused. No end gets one by default, so saved threads keep their geometry. The cut is the integral over the turn of the clipped section's 2π∫ r dA: engine test (2.5 P and 1.25 P between two collars) within the sweep's wall tolerance times the runouts' wall area (0.029 against a 0.036 mm³ bound), ladder 06/009 (004's shaft, a 2 P runout before the shoulder) graded in closed form (measured 1.7e-6 off). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>