From 40eac50190f3ba981eaaa6bcf088d8bcbffeac44 Mon Sep 17 00:00:00 2001 From: Hanno Braun Date: Tue, 31 Jan 2023 14:03:14 +0100 Subject: [PATCH] Update to latest version of 3mf-rs --- Cargo.lock | 16 ++++++++++++++-- crates/fj-export/Cargo.toml | 2 +- crates/fj-export/src/lib.rs | 29 ++++++++++++++++++----------- 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea0da0a2d..a3883c933 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2745,6 +2745,16 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" +[[package]] +name = "quick-xml" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc053f057dd768a56f62cd7e434c42c831d296968997e9ac1f76ea7c2d14c41" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quote" version = "1.0.23" @@ -3454,10 +3464,12 @@ dependencies = [ [[package]] name = "threemf" -version = "0.3.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03094907eeaa5743f1630c4fafdd9c68dbfb8d25c819786674298d46b4604ecc" +checksum = "bf108acc769867300099b3c5334f3dd9bf8c420522a7b7a5938ba0142643808e" dependencies = [ + "quick-xml", + "serde", "thiserror", "zip", ] diff --git a/crates/fj-export/Cargo.toml b/crates/fj-export/Cargo.toml index 82aa7f10e..837020a66 100644 --- a/crates/fj-export/Cargo.toml +++ b/crates/fj-export/Cargo.toml @@ -15,5 +15,5 @@ categories.workspace = true fj-interop.workspace = true fj-math.workspace = true thiserror = "1.0.35" -threemf = "0.3.1" +threemf = "0.4.0" stl = "0.2.1" diff --git a/crates/fj-export/src/lib.rs b/crates/fj-export/src/lib.rs index 08ebc0cfa..0129bb833 100644 --- a/crates/fj-export/src/lib.rs +++ b/crates/fj-export/src/lib.rs @@ -43,26 +43,33 @@ pub fn export(mesh: &Mesh>, path: &Path) -> Result<(), Error> { } fn export_3mf(mesh: &Mesh>, path: &Path) -> Result<(), Error> { - let vertices = mesh.vertices().map(Into::into).collect(); + let vertices = mesh + .vertices() + .map(|point| threemf::model::Vertex { + x: point.x.into_f64(), + y: point.y.into_f64(), + z: point.z.into_f64(), + }) + .collect(); let indices: Vec<_> = mesh.indices().collect(); let triangles = indices .chunks(3) - .map(|triangle| { - [ - triangle[0] as usize, - triangle[1] as usize, - triangle[2] as usize, - ] + .map(|triangle| threemf::model::Triangle { + v1: triangle[0] as usize, + v2: triangle[1] as usize, + v3: triangle[2] as usize, }) .collect(); - let mesh = threemf::TriangleMesh { - vertices, - triangles, + let mesh = threemf::Mesh { + vertices: threemf::model::Vertices { vertex: vertices }, + triangles: threemf::model::Triangles { + triangle: triangles, + }, }; - threemf::write(path, &mesh)?; + threemf::write(path, mesh)?; Ok(()) }