| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- from stl import mesh
- import numpy as np
- # Créer un cube 3D
- vertices = np.array([[0,0,0],
- [0,0,1],
- [1,0,0],
- [1,0,1],
- [2,0,0],
- [2,0,2],
- [3,0,0],
- [3,0,2],
- [0,1,0],
- [0,1,1],
- [1,1,0],
- [1,1,1],
- [2,1,0],
- [2,1,2],
- [3,1,0],
- [3,1,2],
- [0,2,0],
- [0,2,1],
- [1,2,0],
- [1,2,1],
- [2,2,0],
- [2,2,2],
- [3,2,0],
- [3,2,2],
- [0,3,0],
- [0,3,1],
- [1,3,0],
- [1,3,1],
- [2,3,0],
- [2,3,2],
- [3,3,0],
- [3,3,2]])
-
- vertices3 = np.array([[0,0,0],
- [0,0,1],
- [1,0,0],
- [1,0,1],
- [2,0,0],
- [2,0,2],
- [0,1,0],
- [0,1,1],
- [1,1,0],
- [1,1,1],
- [2,1,0],
- [2,1,2],
- [0,2,0],
- [0,2,1],
- [1,2,0],
- [1,2,1],
- [2,2,0],
- [2,2,2]])
-
-
- vertices4 = np.array([[0,0,0],
- [0,0,1],
- [1,0,0],
- [1,0,1],
- [2,0,0],
- [2,0,2],
- [3,0,0],
- [3,0,2],
- [0,1,0],
- [0,1,1],
- [1,1,0],
- [1,1,1],
- [2,1,0],
- [2,1,2],
- [3,1,0],
- [3,1,2],
- [0,2,0],
- [0,2,1],
- [1,2,0],
- [1,2,1],
- [2,2,0],
- [2,2,2],
- [3,2,0],
- [3,2,2],
- [0,3,0],
- [0,3,1],
- [1,3,0],
- [1,3,1],
- [2,3,0],
- [2,3,2],
- [3,3,0],
- [3,3,2]])
- """
- vertices=vertices3
- lenX = 3
- lenY = 3
- """
- vertices=vertices4
- lenX = 4
- lenY = 4
- nb=(lenX*2-2)
- faces1 = np.zeros((nb, 3), dtype=int)
- y=0
- for i in range(0,lenX*2-2,2):
- faces1[y] = [i,i+1 ,i+2]
- faces1[y+1] = [i+1 ,i+3,i+2]
- y=y+2
- nb=lenY*2-2
- faces2 = np.zeros((nb, 3), dtype=int)
- y=0
- for i in range(0,lenX*lenY+1,lenX*2):
- faces2[y] = [i,i+1,i+lenX*2]
- faces2[y+1] = [i+1,i+lenX*2+1,i+lenX*2]
- y=y+2
- nb=(lenX*2-2)
- Start3 = (lenX*2*lenY)-lenX*2
- faces3 = np.zeros((nb, 3), dtype=int)
- y=0
- for i in range(Start3,lenX*2-2+Start3,2):
- faces3[y] = [i,i+1 ,i+2]
- faces3[y+1] = [i+1,i+3 ,i+2]
- y=y+2
- nb = lenY*2-2
- Start4 = lenX*2-2
- faces4 = np.zeros((nb, 3), dtype=int)
- y=0
- for i in range(Start4,lenX*lenY+1+Start4,lenX*2):
- faces4[y] = [i,i+1,i+lenX*2]
- faces4[y+1] = [i+1,i+lenX*2+1,i+lenX*2]
- y=y+2
- nb = 2
- faces5 = np.zeros((nb,3), dtype=int)
- faces5[0] =[0,lenX*2-2,(lenX*2*lenY)-lenX*2]
- faces5[1] =[lenX*2-2,lenX*lenY*2-2,(lenX*2*lenY)-lenX*2]
- nb=lenX*lenY*2
- faces6 = np.zeros((nb,3), dtype=int)
- y=0
- for j in range(0,lenY-1):
- for i in range(lenX*2*j+1,lenX*2*j+lenX*2-1,2):
- faces6[y]=[i,i+2,lenX*2+i]
- faces6[y+1]=[i+2,lenX*2+i+2,lenX*2+i]
- y=y+2
-
- faces=np.concatenate((faces1, faces2,faces3,faces4,faces5,faces6), axis=0)
- # Créez le maillage STL
- cube = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
- for i, f in enumerate(faces):
- for j in range(3):
- cube.vectors[i][j] = vertices[f[j], :]
- #Sauvegardez le cube au format STL
- cube.save('cube.stl')
|