Skip to main content

fillet_edges

Function fillet_edges 

Source
pub fn fillet_edges(
    model: &mut Model,
    solid: &Shape,
    edges: &[Shape],
    radius: f64,
    tol: Tolerances,
) -> OgeomResult<Built>
Expand description

Round a chain of edges in one call, each blend applied in turn and every later edge resolved through the history the earlier blends wrote.

At a tangent junction the neighbouring wedges’ end caps stand in one plane with one cross-section, and the boolean’s same-domain resolution melts them: the blends join without a seam face between them. Where two straight edges of the chain meet at a corner, the later seat runs on through the earlier blend’s band and the cut trims the two bands against each other along their own intersection: two fillets meeting at a corner, the way one edge at a time (fillet_edge) deliberately does not, since the flush-ended state is what the corner tool (round_vertex) is built for. Where three or more edges of the chain meet at one vertex, the corner tool closes it with the rolling ball’s own patch (the octant of a sphere at a box corner, the envelope of spheres and cylinders at a vertex no single ball touches) rather than leaving the bands’ caps standing. The corner goes first and the bands stop flush against its patch: bands built first crash into each other at an apex. A corner the tool does not speak (a concave vertex, more than three surfaces with no shared ball when one of them is curved) keeps its caps, which is the honest picture of a corner no ball rolls around. Other junctions leave the wedges’ caps standing likewise.

Only two blends that round the same way trim each other. A wedge’s cut would eat a fill, and a fill cannot run on through a wedge’s band, so where a convex edge meets a concave one (an L-bracket’s front edge at its re-entrant edge) whichever is asked first takes the corner and the other stops flush against its rail. The two orders then land on different solids, each exact, because the corner is genuinely one rounding or the other and no ball rolls round both.

§Errors

As fillet_edge per edge, and additionally if an earlier blend consumed or split a later edge: a chain whose members interfere is refused rather than guessed at.