Skip to main content

AddPart

Struct AddPart 

Source
pub struct AddPart;
Expand description

Places the part the program in another file builds, named by the step’s id: its elements are then the part’s, behind that name (see MateEntity).

The part goes where the program’s state <id>.pose puts it, and the step adds its mates. It solves nothing: where every placed part is, so that every mate of the program holds, is the program’s state, which the editor solves for (see crate::mechanism). So every step sees each placed part where it ends up, however late the mates that put it there are.

Mates that cannot hold do not fail the step — the parts are left as near to holding them as they get, as a sketch whose constraints conflict is — and the step’s editor says which.

The parts placed in the part placed are this program’s to move too: their poses are its state, behind the step’s id, which the part placed is run with — starting where its own program has them — and their mates come up with its constraints, to hold them here as they held them there (see [geop_core_program::instance]).

A Mate::fixed_here among its mates, given no entity, holds the part this step places.

Trait Implementations§

Source§

impl Clone for AddPart

Source§

fn clone(&self) -> AddPart

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for AddPart

Source§

impl Debug for AddPart

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for AddPart

Source§

fn default() -> AddPart

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for AddPart

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Editable for AddPart

Source§

const INFO: OperationInfo = <AddPart as ::geop_core_editor::part_operation::PartOperation>::INFO

Source§

type EditingState = FormState<<AddPart as PartOperation>::Session>

What the editor keeps about a step while it is edited, beyond its arguments, starting from the default whenever a step is opened.
Source§

fn new_args(context: &Context<'_>) -> Self::Args

The arguments of a new step: sensible defaults, taking the part it is inserted into into account.
Source§

fn presentation( context: &Context<'_>, args: &Self::Args, editing: &Self::EditingState, ) -> Form

What the editor shows while the step is edited. Never fails: an editor needs the form most exactly when the arguments do not build, so whatever is wrong is said in it.
Source§

fn process_user_event( context: &Context<'_>, args: &Self::Args, editing: &Self::EditingState, event: Event, ) -> (Self::Args, Self::EditingState)

The step’s arguments and editing state after event.
Source§

impl Operation for AddPart

Source§

const KIND: &'static str = <AddPart as ::geop_core_editor::part_operation::PartOperation>::KIND

The name programs store its steps under.
Source§

type Args = <AddPart as PartOperation>::Args

What a step of the operation is given. It is saved with the program, so it names targets and elements, never holds their internal ids.
Source§

fn run(ctx: &mut StepContext<'_>, args: &Self::Args) -> __GeopResult<()>

Declares what the step produces, through 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 AddPart

Source§

fn new_args(context: &Context<'_>) -> AddPartArgs

No file yet; the first part placed is fixed, the ones after it are not — something has to stay put for the others to mate to — until a joint or a constraint is chosen for it, which then holds it (see crate::editor).

Source§

fn begin_event(session: &mut PartSession)

Pulls released at the event before are let go of.

Source§

fn run(ctx: &mut StepContext<'_>, args: &AddPartArgs) -> GeopResult<()>

Places the part, then defines each mate: resolved, and as constraints on the state; and lets a solve move the part, as far as its mates let it. A mate that cannot be resolved fails the step, after the others are defined. The placed part’s own mates come up with its constraints (see geop_lib_constraints::Constraints::of).

Source§

fn form<'a>( context: &'a Context<'a>, args: &AddPartArgs, editing: &PartEditing, ) -> EditForm<'a, AddPartArgs, PartSession>

The file, where it goes, and its mates: see crate::editor.

Source§

fn canvas( context: &Context<'_>, edit: Edit<'_, AddPartArgs, PartSession>, event: &CanvasEvent, )

The part dragged; Delete removes the mate selected, Escape stops editing it: see crate::editor.

Source§

const KIND: &'static str = "add_part"

The name programs store its steps under.
Source§

const INFO: OperationInfo

Source§

type Args = AddPartArgs

What a step is given. It is saved with the program, so it names targets and elements, never holds their internal ids.
Source§

type Session = PartSession

What the editor keeps while a step is edited besides its arguments and the visuals selected: () for most.
Source§

impl PartialEq for AddPart

Source§

fn eq(&self, other: &AddPart) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for AddPart

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for AddPart

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<O> ErasedEditable for O
where O: Editable,

Source§

fn info(&self) -> &'static OperationInfo

Source§

fn new_args(&self, context: &Context<'_>) -> Result<Value, GeopError>

Source§

fn initial_editing(&self) -> Box<dyn Any>

Source§

fn presentation( &self, context: &Context<'_>, args: &Value, editing: &(dyn Any + 'static), ) -> Result<Form, GeopError>

Source§

fn process_user_event( &self, context: &Context<'_>, args: &Value, editing: &(dyn Any + 'static), event: Event, ) -> Result<Edited, GeopError>

Source§

impl<O> ErasedOperation for O
where O: Operation,

Source§

fn kind(&self) -> &'static str

Source§

fn check_args(&self, args: &Value) -> Result<(), GeopError>

Whether args are arguments of the operation, as saved.
Source§

fn run(&self, ctx: &mut StepContext<'_>, args: &Value) -> Result<(), GeopError>

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.