pub struct Fillet;Expand description
Rounds the edges named edges of a solid with a fillet of radius, for
the operation F: the solid is consumed and the result named
fillet(F). Every face, edge and vertex that survives keeps its name;
the round face of edge E is fillet(F,E,fillet) — by span,
fillet(F,E,fillet,s0), …, for one skinned in several (see
[crate::rolling]) — and what applying it creates is named as a
boolean names it, fillet(F,E,...) (see [crate::blend::blend]). A
convex edge is cut round, a concave one filled in.
Any edge is rounded, by a ball rolled along it, which also takes its
tangent chain along: exactly where the ball’s section is carried along
the edge unchanged, a straight one between two planes or a circle
around its faces’ axis. With end_radius the
radius changes linearly along each chain, from radius where its first
picked edge starts to end_radius where the chain ends; vertex_radii
set it at vertices along a chain, linearly in between. A corner every
edge of which is rounded, with one radius, is rounded by the ball
touching its three faces, fillet(F,V,corner) for its vertex V (see
[crate::corner]); with setback, or where no one ball touches its
faces, it is set back instead: each fillet ends that far from the vertex
and a smooth patch closes the corner, fillet(F,V,corner,k) along each
side of its loop and fillet(F,V,corner) inside.
Trait Implementations§
impl Copy for Fillet
Source§impl<'de> Deserialize<'de> for Fillet
impl<'de> Deserialize<'de> for Fillet
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Editable for Fillet
impl Editable for Fillet
const INFO: OperationInfo = <Fillet as ::geop_core_editor::part_operation::PartOperation>::INFO
Source§type EditingState = FormState<<Fillet as PartOperation>::Session>
type EditingState = FormState<<Fillet as PartOperation>::Session>
Source§fn new_args(context: &Context<'_>) -> Self::Args
fn new_args(context: &Context<'_>) -> Self::Args
Source§fn presentation(
context: &Context<'_>,
args: &Self::Args,
editing: &Self::EditingState,
) -> Form
fn presentation( context: &Context<'_>, args: &Self::Args, editing: &Self::EditingState, ) -> Form
Source§fn process_user_event(
context: &Context<'_>,
args: &Self::Args,
editing: &Self::EditingState,
event: Event,
) -> (Self::Args, Self::EditingState)
fn process_user_event( context: &Context<'_>, args: &Self::Args, editing: &Self::EditingState, event: Event, ) -> (Self::Args, Self::EditingState)
event.Source§impl ModelOperation for Fillet
impl ModelOperation for Fillet
Source§fn build(
model: &mut NamedModel,
reader: &Reader<'_>,
step: &str,
args: &FilletArgs,
) -> GeopResult<()>
fn build( model: &mut NamedModel, reader: &Reader<'_>, step: &str, args: &FilletArgs, ) -> GeopResult<()>
step — what everything it makes is named after —
into model, reading whatever else it builds on through reader,
so the step is rebuilt when that changes.Source§impl Operation for Fillet
impl Operation for Fillet
Source§const KIND: &'static str = <Fillet as ::geop_core_editor::part_operation::PartOperation>::KIND
const KIND: &'static str = <Fillet as ::geop_core_editor::part_operation::PartOperation>::KIND
Source§type Args = <Fillet as PartOperation>::Args
type Args = <Fillet as PartOperation>::Args
Source§fn run(ctx: &mut StepContext<'_>, args: &Self::Args) -> __GeopResult<()>
fn run(ctx: &mut StepContext<'_>, args: &Self::Args) -> __GeopResult<()>
ctx (see
StepContext::produce): cheap, since it runs in every run. What
takes work is done in the makes, which run only when what they read
changed.Source§impl PartOperation for Fillet
impl PartOperation for Fillet
Source§fn new_args(_: &Context<'_>) -> FilletArgs
fn new_args(_: &Context<'_>) -> FilletArgs
No edges yet, and a radius of one.
Source§fn form<'a>(
context: &'a Context<'a>,
args: &FilletArgs,
_: &FormState<()>,
) -> EditForm<'a, FilletArgs>
fn form<'a>( context: &'a Context<'a>, args: &FilletArgs, _: &FormState<()>, ) -> EditForm<'a, FilletArgs>
The edges, picked, and the radius; whether corners are set back, and how far — and, varying, the radius at the end and at vertices picked, each a number of its own.
const INFO: OperationInfo
Source§type Args = FilletArgs
type Args = FilletArgs
Source§type Session = ()
type Session = ()
() for most.Source§fn run(ctx: &mut StepContext<'_>, args: &FilletArgs) -> GeopResult<()>
fn run(ctx: &mut StepContext<'_>, args: &FilletArgs) -> GeopResult<()>
ctx (see
StepContext::produce).