Skip to main content

ThreeMfReadResult

Struct ThreeMfReadResult 

Source
pub struct ThreeMfReadResult {
    pub model_part: String,
    pub unit: ThreeMfUnit,
    pub meshes: Vec<ThreeMfMesh>,
    pub instances: Vec<ThreeMfInstance>,
    pub positions: Vec<f64>,
    pub indices: Vec<u32>,
    pub triangle_colors: Vec<Option<[u8; 3]>>,
}
Expand description

Everything read_3mf recovered from a package.

Fields§

§model_part: String

The part the model was read from (from the start-part relationship).

§unit: ThreeMfUnit

The unit the file declared, before conversion.

§meshes: Vec<ThreeMfMesh>

One entry per mesh-bearing <object> in <resources>, in document order — including any the build never places.

§instances: Vec<ThreeMfInstance>

The <build>, flattened through <components>: one entry per placed mesh. Objects of a type other than model are not placed.

§positions: Vec<f64>

Every instance’s triangles in world coordinates, millimetres — the soup the mesh-to-solid chain reads.

§indices: Vec<u32>

Triangle corners into positions/3, winding preserved (reversed for a mirrored instance so the result stays outward-facing).

§triangle_colors: Vec<Option<[u8; 3]>>

Parallel to the flattened triangles (indices.len() / 3 entries, each following its triangle through the instance order and a mirrored placement’s winding reversal) when any placed triangle resolves to a colour; EMPTY otherwise.

Implementations§

Source§

impl ThreeMfReadResult

Source

pub fn vertex_count(&self) -> usize

Source

pub fn triangle_count(&self) -> usize

Source

pub fn instance_mesh(&self, instance: usize) -> Option<(Vec<f64>, Vec<u32>)>

ONE instance’s triangle soup: its world-space vertices and its triangles rebased onto them. A multi-instance build is several bodies in one buffer — this is how a consumer takes them apart by PLACEMENT without knowing how read_3mf laid them out. The importer does not need it: the mesh-to-solid chain splits the whole soup into its vertex-connected components and reconstructs each as its own body. It is the answer when the question is which instance a body came from, which the geometry alone cannot say (two instances that touch are one component).

Trait Implementations§

Source§

impl Clone for ThreeMfReadResult

Source§

fn clone(&self) -> Self

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 Debug for ThreeMfReadResult

Source§

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

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

impl Serialize for ThreeMfReadResult

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

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> 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 = !

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

fn try_from(value: U) -> Result<T, !>

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.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more