pub fn fillet_edges_variable(
model: &mut Model,
solid: &Shape,
chain: &[Shape],
law: &RadiusLaw,
tol: Tolerances,
) -> OgeomResult<Built>Expand description
Round a convex or concave edge, or a closed chain of curved edges, with
a blend whose radius follows law along chain, taken as one
parameter in arc length.
At arc length s along the chain the blend’s section, in the plane
square to the edge there, is the arc of radius law(s) tangent to both
faces: the rolling ball of that radius seated in the section. The
chain starts where its first edge does as that edge is oriented (a
reversed edge starts at its stored curve’s far end) and runs the way
that edge does.
Rounded:
- a straight edge between two planes, for any law. The linear law is
fillet_edge_variable’s blend; underRadiusLaw::Pointsthe envelope is again exact: a cubic B-spline along the edge, the rational quadratic arc across it, the control net the edge’s Greville points pushed out by the law’s own control radii. - a closed loop of curved edges between the same two faces, given as one closed edge or as the arcs it is split into, end to end round the loop: a drum’s rim, a cut drum’s oblique rim, a branch’s seam. The march carries the law’s radius station by station round the whole loop, and the band is fitted through each station’s own arc.
- an open curved edge whose ball runs out past its ends (a half drum’s rim): the law is held at its end radius past each end, so the ball runs out there at that one radius, as a constant round’s does.
- an open chain of arcs of one curve between the same two faces, end to end (a crease split at a vertex): the one seat over the window of that curve its arcs cover.
- a straight edge along a drum’s ruling (a flat or a wall meeting a drum, or two drums): marched with the law’s radius station by station.
- a seat pinched where its hosts turn tangent at an end (two equal drums crossing): each station solved at the law’s radius for its place, the band pinching to the pole.
- a chain of edges of different seats continuing each other end to end, open or closed (the top loop of a rounded-rectangle pad: its sides between two planes, its corners’ arcs between the top and a drum). The run is walked from the first edge the way it runs; each edge takes the law over its own stretch of the run, its band stopped in its end sections, and the bands’ wedges are joined across each junction, where one ball touches the same two points from either side, and applied in one boolean.
- a chain of straight edges between planes turning where they meet on one shared planar host (a block’s top loop, an L-block’s). Past a turning vertex each band goes on at the law’s radius there, as the law holds level past an edge’s end: across a convex turn it runs out as the constant band of that radius alone does and the cuts take the union; across a re-entrant one it is carried to the plane bisecting the turn, where the two are joined. A loop the tangent junctions join round to one convex turn (a pad with one vertical left sharp) is opened at a straight band between two of them, built in two halves.
- a chain turning where marched bands meet (a drum’s ruling turning
into its rim), met in rounds as
fillet_edgesmeets it: each band a later round builds stands over what the earlier left of its edge, under its own window of the law, and runs on through the earlier band at the law’s radius there. - a straight edge alone beside a narrow strip the ball takes off whole at every radius of the law: the exact envelope over the seat between the faces either side of the strip.
A law holding one radius all along is fillet_edges’ round.
What solid shares with other shapes is copied before it is
worked on (ogeom_algo::on_own_nodes), which leaves them as they are.
§Errors
OgeomError::Construction where the law states no usable radius
(no points, a fraction off the chain or out of order, a radius not a
positive length), where a linear law changes radius round a closed
chain, where chain is empty, a chain of more than one edge whose
edges do not run end to end, a turn where a marched band meets a
straight one between planes, a loop joined
round a convex turn with no straight band between two of its junctions
to open it at, a ball resting
on a narrow face’s far edge or two bands overlapping across a face
they share at an edge’s largest radius, a
straight edge between faces that are neither two planes nor a drum and
a face along its ruling (only two planes inside a chain of different
seats), where two bands’ end sections at a junction part by more than
a marched band’s fit, where a law is given over one arc of a
crease that closes through other edges, or where the ball at the law’s
largest radius does not fit the edge’s faces; and as fillet_edge
for the seat itself.