write_ply/
write_ply.rs

1extern crate manifold_rs;
2
3use manifold_rs::output::WritePly;
4use manifold_rs::*;
5
6fn main() -> std::io::Result<()> {
7    // Generate a cube
8    {
9        let size = 10.0;
10        let manifold = Manifold::cube(size, size, size);
11        manifold.write_ply_to_file("cube.ply")?;
12    }
13
14    // Generate a cube with normals
15    {
16        let size = 10.0;
17        let manifold = Manifold::cube(size, size, size).calculate_normals(0, 30.0);
18        manifold.write_ply_to_file("cube_normals.ply")?;
19    }
20
21    // Generate a dice and smooth it
22    {
23        let size = 10.0;
24        let manifold = Manifold::cube(size, size, size)
25            .translate(-size / 2.0, -size / 2.0, -size / 2.0)
26            .intersection(&Manifold::sphere(size / 2.0_f64.sqrt(), 64));
27
28        let manifold = manifold
29            .calculate_normals(0, 40.0)
30            .refine_to_length(0.2)
31            .smooth_out(40.0, 1.0);
32
33        manifold.write_ply_to_file("dice.ply")?;
34    }
35
36    // Generate tube with normals
37    {
38        let inner_radius = 0.3;
39        let outer_radius = 1.0;
40        let height = 2.0;
41
42        let manifold = Manifold::cylinder(outer_radius, outer_radius, height, 32)
43            .difference(&Manifold::cylinder(inner_radius, inner_radius, height, 32));
44        let manifold = manifold.calculate_normals(0, 40.0);
45
46        manifold.write_ply_to_file("tube_normals.ply")?;
47    }
48
49    Ok(())
50}