pub struct SplitFace;Expand description
Divides the face face along the curves of the sketch sketch,
projected onto it: the one face becomes two or more on the same surface,
and the solid keeps its shape. Every curve of the sketch that is no
construction curve divides: its lines, arcs, circles and splines, however
they join or cross, and the outlines of its text.
Projected Along::SketchNormal, a curve’s projection is where its
sweep, reaching past the face both ways, crosses the face: on a face that
bends back over itself, every place it does, and only within the face, so
a curve reaching past it is trimmed to it. Projected Along::FaceNormal,
each point goes to the point of the face’s surface nearest it (see
[normal_sheets]).
Named as imprint_on_face names what it creates, with N being
split_face(S) for the step S: the edge along the piece X of a curve
of the sketch K is N(K,X), or N(K,X,k) for its k-th stretch across
the face; a piece split off the face F along it is N(F,K,X) or
N(F,K,X,k), and the other piece keeps the name F, as what is left
around a curve closing inside the face does. The face’s boundary edges,
split where a curve ends on them, are named as a boolean names an edge
split in two.
Refuses a sketch with no curve to divide along, one that misses the face, a curve ending inside the face, a curve only joining two of the face’s boundaries, each of which divides nothing, and a curve running along an edge of the face, which already bounds it.
Trait Implementations§
impl Copy for SplitFace
Source§impl<'de> Deserialize<'de> for SplitFace
impl<'de> Deserialize<'de> for SplitFace
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 SplitFace
impl Editable for SplitFace
const INFO: OperationInfo = <SplitFace as ::geop_core_editor::part_operation::PartOperation>::INFO
Source§type EditingState = FormState<<SplitFace as PartOperation>::Session>
type EditingState = FormState<<SplitFace 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 SplitFace
impl ModelOperation for SplitFace
Source§fn build(
model: &mut NamedModel,
reader: &Reader<'_>,
step: &str,
args: &SplitFaceArgs,
) -> GeopResult<()>
fn build( model: &mut NamedModel, reader: &Reader<'_>, step: &str, args: &SplitFaceArgs, ) -> 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 SplitFace
impl Operation for SplitFace
Source§const KIND: &'static str = <SplitFace as ::geop_core_editor::part_operation::PartOperation>::KIND
const KIND: &'static str = <SplitFace as ::geop_core_editor::part_operation::PartOperation>::KIND
Source§type Args = <SplitFace as PartOperation>::Args
type Args = <SplitFace 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 SplitFace
impl PartOperation for SplitFace
Source§fn new_args(context: &Context<'_>) -> SplitFaceArgs
fn new_args(context: &Context<'_>) -> SplitFaceArgs
No face yet, which a click picks, and the newest sketch.
Source§fn form<'a>(
context: &'a Context<'a>,
args: &SplitFaceArgs,
_: &FormState<()>,
) -> EditForm<'a, SplitFaceArgs>
fn form<'a>( context: &'a Context<'a>, args: &SplitFaceArgs, _: &FormState<()>, ) -> EditForm<'a, SplitFaceArgs>
The face and the sketch, picked, and which way to project.
const INFO: OperationInfo
Source§type Args = SplitFaceArgs
type Args = SplitFaceArgs
Source§type Session = ()
type Session = ()
() for most.Source§fn run(ctx: &mut StepContext<'_>, args: &SplitFaceArgs) -> GeopResult<()>
fn run(ctx: &mut StepContext<'_>, args: &SplitFaceArgs) -> GeopResult<()>
ctx (see
StepContext::produce).