#[non_exhaustive]pub enum SolidOperation {
Extrusion {
profile: NodeId,
direction: DVec3,
depth: f64,
},
TaperedExtrusion {
start_profile: NodeId,
end_profile: NodeId,
direction: DVec3,
depth: f64,
},
Revolution {
profile: NodeId,
axis_origin: DVec3,
axis_direction: DVec3,
angle: f64,
},
TaperedRevolution {
start_profile: NodeId,
end_profile: NodeId,
axis_origin: DVec3,
axis_direction: DVec3,
angle: f64,
},
SweptDisk {
directrix: NodeId,
radius: f64,
inner_radius: Option<f64>,
parameter_range: Option<(f64, f64)>,
fillet_radius: Option<f64>,
},
FixedReferenceSweep {
profile: NodeId,
directrix: NodeId,
reference_direction: DVec3,
parameter_range: Option<(f64, f64)>,
},
SurfaceCurveSweep {
profile: NodeId,
directrix: NodeId,
reference_surface: NodeId,
parameter_range: Option<(f64, f64)>,
},
SectionedSpine {
spine: NodeId,
sections: Vec<Section>,
},
Boolean {
left: NodeId,
right: NodeId,
operator: BooleanOperator,
},
BoundedHalfSpace {
half_space: NodeId,
boundary: NodeId,
placement: DAffine3,
},
}Expand description
Relationship that constructs a solid from lower-level geometry.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Extrusion
Linear extrusion of a profile.
TaperedExtrusion
Tapered linear extrusion between two profiles.
Revolution
Revolution of a profile.
TaperedRevolution
Tapered revolution between two profiles.
Fields
SweptDisk
Disk swept along a directrix curve.
fillet_radius rounds the corners where consecutive directrix segments
meet, and is meaningful only on a piecewise-linear directrix: a smooth
curve has no corners to round. None means sharp corners, which is
also the correct reading for any directrix that is already smooth.
It is a property of the SWEEP, not of the disk: the disk stays circular
and it is the swept path whose corners are filleted. A consumer that
cannot round corners must refuse a Some rather than drop it, because
silently sharpening a pipe run produces geometry that builds, renders,
and is wrong.
Fields
FixedReferenceSweep
Profile swept along a directrix using a fixed reference direction.
Fields
SurfaceCurveSweep
Profile swept along a directrix constrained by a reference surface.
Fields
SectionedSpine
Sections interpolated along a spine.
Boolean
General CSG binary operation.
BoundedHalfSpace
Unbounded half-space clipped by a finite boundary geometry.
Fields
boundary: NodeIdA closed 2D curve in placement’s XY plane. A 3D curve is
refused when the graph is built.
placement: DAffine3The boundary’s own frame, independent of the clip plane.
The boundary profile is authored in this frame, so its rotation orients the profile itself rather than the finished solid. A source format may place the boundary independently of the base surface, and only the rotation about the clip normal is meaningful: the compiler projects this frame’s axes into the plane, so a component along the normal is dropped rather than tilting the profile out of its own plane.
Trait Implementations§
Source§impl Clone for SolidOperation
impl Clone for SolidOperation
Source§fn clone(&self) -> SolidOperation
fn clone(&self) -> SolidOperation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SolidOperation
impl Debug for SolidOperation
Source§impl From<SolidOperation> for GeometryNode
impl From<SolidOperation> for GeometryNode
Source§fn from(value: SolidOperation) -> GeometryNode
fn from(value: SolidOperation) -> GeometryNode
Source§impl PartialEq for SolidOperation
impl PartialEq for SolidOperation
impl BuiltInNode for SolidOperation
impl StructuralPartialEq for SolidOperation
Auto Trait Implementations§
impl Freeze for SolidOperation
impl RefUnwindSafe for SolidOperation
impl Send for SolidOperation
impl Sync for SolidOperation
impl Unpin for SolidOperation
impl UnwindSafe for SolidOperation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more