Merge pull request #1595 from hannobraun/3mf

Update to latest version of 3mf-rs
This commit is contained in:
Hanno Braun 2023-02-17 12:04:01 +01:00 committed by GitHub
commit c41f9cfe00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 14 deletions

16
Cargo.lock generated
View File

@ -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",
]

View File

@ -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"

View File

@ -43,26 +43,33 @@ pub fn export(mesh: &Mesh<Point<3>>, path: &Path) -> Result<(), Error> {
}
fn export_3mf(mesh: &Mesh<Point<3>>, 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(())
}