#[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,
},
StationedSpine {
directrix: NodeId,
sections: Vec<StationedSection>,
frame: StationFrame,
},
SectionsAtStations {
directrix: NodeId,
sections: Vec<SectionAtStation>,
frame: StationFrame,
},
}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.
StationedSpine
Closed profiles standing at stations along a directrix (#241).
Each profile is placed in the directrix’s frame at its station
(profile x to the lateral axis, y to up, normal along the
tangent; see crate::station). Between two stations the profiles
are matched vertex for vertex, by ring and index, and interpolated
linearly in distance, as are the offsets, so every section must
flatten to the same ring structure. At least two sections, strictly
increasing in distance, are required.
SectionsAtStations
Closed profiles standing at stations along a directrix, each
optionally tagged and explicitly oriented (#246): the general form
of SolidOperation::StationedSpine.
Each profile is placed as in a StationedSpine, its plane turned by
the section’s orientation, and interpolated linearly in distance
with the next. Untagged sections are matched by ring and index;
tagged ones by tag, every section carrying the same tags (see
crate::station). At least two sections, strictly increasing in
distance, all tagged or none, are required.
Trait Implementations§
impl BuiltInNode for SolidOperation
Source§impl Clone for SolidOperation
impl Clone for SolidOperation
Source§fn clone(&self) -> SolidOperation
fn clone(&self) -> SolidOperation
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more