Skip to main content

make_pipe_sections

Function make_pipe_sections 

Source
pub fn make_pipe_sections(
    model: &mut Model,
    sections: &[Shape],
    spine: &Shape,
    frenet: bool,
    tolerance: f64,
    tol: Tolerances,
) -> OgeomResult<Built>
Expand description

Sweep several planar sections down one spine, the section changing shape along the path: a multisection pipe.

Each section stands where the spine crosses its plane, and is read in the spine’s moving frame there (rotation-minimizing, or Frenet where frenet asks). Between two sections the section is blended in that frame by the length run along the spine, matched point to point from each section’s own start, so the result follows the spine rather than the chord between the sections. The sections are closed wires or faces; the ends are capped. Faces may have holes, as many in every section: each hole, the kth of every section in turn, is swept the same way as a solid of its own and cut from the outer loop’s. The first or last section may be a vertex where the spine starts or ends, where no section has a hole: the pipe closes to that point, uncapped there.

§Errors

OgeomError::Construction if there are fewer than two sections, a section is not planar, the sections have holes and differ in their count or one is a point, the spine does not cross a section’s plane, or the sections stand out of order along the spine; OgeomError::NotDone if the skin cannot reach tolerance.