mirror of
https://github.com/bherbruck/solidcraft.git
synced 2026-11-06 20:02:16 +00:00
366b90597f
A thread of some length ran from "the end of the face nearest the pick", a coin toss for a pick in the middle (rig 602's 4 mm thread meant for the free bottom end ran at the head end, cutting 1.17 mm into the hex), and every thread end at a face end got a one-pitch overrun, which at a shoulder gouged the material past it (ladder 06/004 cut 0.9% of its volume out of the collar). - kernel: material_in_ring, the exact intersection of a body with a ring about a cylinder face's axis, by an SMLib boolean. - doc: a face end is free when no material lies past it, over the span the groove's one-pitch overrun reaches beyond its first pitch, within the radii the groove cuts (a cap, a chamfer the groove runs out through, a counterbore). At a free end the groove runs out as before; at a closed one (a shoulder, a head, a blind hole's bottom) it stops with its widest part clear of it; inside the face it stops square. - doc: a thread of some length starts at the end nearest `from`, else at the face's only free end, else at the end the pick lies within a third of the face of; a pick in the middle of a face whose ends are alike is refused, naming `from`. A length as long as the face runs the whole face. `up_to` a plane or a point's place along the axis. New fields `from`, `up_to` default to none, so saved threads keep their meaning where it was not a coin toss. - engine: solid.thread takes extent (full|length|up_to), from and up_to. - ladder 06/003 (now with `from`), 004 and 007 are graded by volume and centre of mass in closed form (a square stop inside material removes exactly length/P turns, the section being symmetric); rig 602's method says why the thread is at the bottom, tolerance 0.02%. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>