pub fn fillet_edge_distances_variable(
model: &mut Model,
solid: &Shape,
edge: &Shape,
face: &Shape,
on_face: &RadiusLaw,
on_other: &RadiusLaw,
profile: RoundProfile,
tol: Tolerances,
) -> OgeomResult<Built>Expand description
Round a straight edge between two planar faces with a band that meets
face at the distance on_face gives and the edge’s other face at the
distance on_other gives, each a law read by the fraction of the edge
from its start, its section profile between the two contacts.
The band is exact: over each stretch where both laws are one cubic it
is the section’s rational arc swept with its control points moving
along the laws’ own cubics, and it meets each face with its tangent
plane along a contact curve. Naming the other face with the laws
swapped builds the same solid, to the bit, and two laws holding one
distance each are fillet_edge_distances
by the same call. The band’s ends are square caps: each end of the edge
must meet only faces square to it.
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 a law states no usable distance, face is not one of the edge’s
two faces, a conic’s rho is not strictly between 0 and 1, the edge is
not straight between two planes, an end of the edge meets a face not
square to it, or a contact sets back past its face’s side; and as
fillet_edge_distances where both laws
hold one distance.