pub fn offset_freeform_face(
solid: &BrepSolid,
face_id: u64,
distance: f64,
) -> Result<BrepSolid, String>Expand description
Push an untrimmed free-form NURBS face along its normal field.
General NURBS offsets are approximate. This path therefore admits only a face bounded entirely by its own INTRINSIC edges (no other incident face), checks the dense same-parameter offset residual, rematerializes every 3D boundary curve, and validates topology plus volume orientation. Neighbour-trimmed free-form faces still need general SSI and are refused before mutation.
An intrinsic boundary is usually an iso seam or a pole row, which takes the
exact iso lane. One that is NOT — a general self-incident trim — is no
longer refused: crate::image_curve builds its 3D image on the offset
carrier. Because the offset shares the source basis and the boundary here is
definitional (nothing fixed on the other side), the image IS the new edge.