File size: 1,263 Bytes
9be6f3b
b38f031
9be6f3b
 
b38f031
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
from stl import mesh
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d

def load_stl(file_path):
    """Load the STL file."""
    return mesh.Mesh.from_file(file_path)

def generate_images(mesh, viewing_angles, figsize=(10, 10)):
    """Generate images from different viewing angles."""
    for i, (elev, azim) in enumerate(viewing_angles, start=1):
        fig = plt.figure(figsize=figsize)
        ax = fig.add_subplot(111, projection='3d')
        ax.add_collection3d(mplot3d.art3d.Poly3DCollection(mesh.vectors))
        max_dim = max(mesh.points.flatten())
        min_dim = min(mesh.points.flatten())
        ax.set_xlim([min_dim, max_dim])
        ax.set_ylim([min_dim, max_dim])
        ax.set_zlim([min_dim, max_dim])
        ax.view_init(elev=elev, azim=azim)
        plt.savefig(f'mesh_{i}.png')
        plt.close()

def main():
    # Load the STL file
    # stl_file_path = 'sample_data.stl'
    # your_mesh = load_stl(stl_file_path)

    # Define three different viewing angles
    viewing_angles = [(30, 45), (60, 90), (45, 135)]

    # Generate images from different viewing angles
    # generate_images(your_mesh, viewing_angles)

    # Optional: Show the last generated plot
    # plt.show()

if __name__ == "__main__":
    main()