Skip to main content

CsgBackend

Trait CsgBackend 

Source
pub trait CsgBackend {
    type CsgType;
    type SketchType;

Show 22 methods // Required methods fn empty_csg() -> Self::CsgType; fn empty_sketch() -> Self::SketchType; fn union(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType; fn difference(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType; fn intersection(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType; fn xor(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType; fn union_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType; fn difference_2d( a: Self::SketchType, b: Self::SketchType, ) -> Self::SketchType; fn intersection_2d( a: Self::SketchType, b: Self::SketchType, ) -> Self::SketchType; fn xor_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType; fn translate(csg: Self::CsgType, offset: DVec3) -> Self::CsgType; fn rotate(csg: Self::CsgType, angles: DVec3) -> Self::CsgType; fn scale(csg: Self::CsgType, factors: DVec3) -> Self::CsgType; fn mirror(csg: Self::CsgType, axes: DVec3) -> Self::CsgType; fn translate_2d(sketch: Self::SketchType, offset: DVec3) -> Self::SketchType; fn rotate_2d(sketch: Self::SketchType, angles: DVec3) -> Self::SketchType; fn scale_2d(sketch: Self::SketchType, factors: DVec3) -> Self::SketchType; fn mirror_2d(sketch: Self::SketchType, axes: DVec3) -> Self::SketchType; fn color(csg: Self::CsgType, color: [f32; 4]) -> Self::CsgType; fn color_2d(sketch: Self::SketchType, color: [f32; 4]) -> Self::SketchType; fn extrude( sketch: Self::SketchType, height: f64, twist: f64, scale: f64, slices: usize, ) -> Self::CsgType; fn revolve( sketch: Self::SketchType, angle_degrees: f64, segments: usize, ) -> Self::CsgType;
}
Expand description

Marker trait for CSG backends.

Each backend defines a zero-sized marker type implementing this trait, specifying the concrete 3D and 2D output types and operations.

Required Associated Types§

Source

type CsgType

3D solid type produced by this backend.

Source

type SketchType

2D sketch / cross-section type produced by this backend.

Required Methods§

Source

fn empty_csg() -> Self::CsgType

Source

fn empty_sketch() -> Self::SketchType

Source

fn union(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType

Source

fn difference(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType

Source

fn intersection(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType

Source

fn xor(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType

Source

fn union_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType

Source

fn difference_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType

Source

fn intersection_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType

Source

fn xor_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType

Source

fn translate(csg: Self::CsgType, offset: DVec3) -> Self::CsgType

Source

fn rotate(csg: Self::CsgType, angles: DVec3) -> Self::CsgType

Source

fn scale(csg: Self::CsgType, factors: DVec3) -> Self::CsgType

Source

fn mirror(csg: Self::CsgType, axes: DVec3) -> Self::CsgType

Source

fn translate_2d(sketch: Self::SketchType, offset: DVec3) -> Self::SketchType

Source

fn rotate_2d(sketch: Self::SketchType, angles: DVec3) -> Self::SketchType

Source

fn scale_2d(sketch: Self::SketchType, factors: DVec3) -> Self::SketchType

Source

fn mirror_2d(sketch: Self::SketchType, axes: DVec3) -> Self::SketchType

Source

fn color(csg: Self::CsgType, color: [f32; 4]) -> Self::CsgType

Source

fn color_2d(sketch: Self::SketchType, color: [f32; 4]) -> Self::SketchType

Source

fn extrude( sketch: Self::SketchType, height: f64, twist: f64, scale: f64, slices: usize, ) -> Self::CsgType

Source

fn revolve( sketch: Self::SketchType, angle_degrees: f64, segments: usize, ) -> Self::CsgType

Revolve a sketch about its local Y axis (OpenSCAD rotate_extrude).

Profile-x is the radius from the axis (x ≥ 0 expected; negative-x regions produce undefined results), profile-y the height along it.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§