pub fn offset_torus_face(
solid: &BrepSolid,
face_id: u64,
distance: f64,
) -> Result<BrepSolid, String>Expand description
Push a full toroidal face by changing its tube radius exactly.
This first torus slice deliberately accepts only an untrimmed torus whose
boundary edges are intrinsic periodic seams (both incidences belong to the
pushed face). Boolean-trimmed torus rims need neighbour re-intersection and
are refused before mutation. The offset carrier preserves the source knot
vectors, weights, and (u,v) parameterization, so existing pcurves remain
valid and the two 3D seam curves can be rematerialized as exact iso-curves.
An intrinsic boundary that is NOT an iso line is no longer refused:
crate::image_curve builds its 3D image on the offset torus. That lane is
unreached by the corpus today — the neighbour-trim gate above rejects every
trimmed torus first (refusal census §3.6) — so it is a latent restriction
removed, not a measured behaviour change.