cube.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. from stl import mesh
  2. import numpy as np
  3. # Créer un cube 3D
  4. vertices = np.array([[0,0,0],
  5. [0,0,1],
  6. [1,0,0],
  7. [1,0,1],
  8. [2,0,0],
  9. [2,0,2],
  10. [3,0,0],
  11. [3,0,2],
  12. [0,1,0],
  13. [0,1,1],
  14. [1,1,0],
  15. [1,1,1],
  16. [2,1,0],
  17. [2,1,2],
  18. [3,1,0],
  19. [3,1,2],
  20. [0,2,0],
  21. [0,2,1],
  22. [1,2,0],
  23. [1,2,1],
  24. [2,2,0],
  25. [2,2,2],
  26. [3,2,0],
  27. [3,2,2],
  28. [0,3,0],
  29. [0,3,1],
  30. [1,3,0],
  31. [1,3,1],
  32. [2,3,0],
  33. [2,3,2],
  34. [3,3,0],
  35. [3,3,2]])
  36. vertices3 = np.array([[0,0,0],
  37. [0,0,1],
  38. [1,0,0],
  39. [1,0,1],
  40. [2,0,0],
  41. [2,0,2],
  42. [0,1,0],
  43. [0,1,1],
  44. [1,1,0],
  45. [1,1,1],
  46. [2,1,0],
  47. [2,1,2],
  48. [0,2,0],
  49. [0,2,1],
  50. [1,2,0],
  51. [1,2,1],
  52. [2,2,0],
  53. [2,2,2]])
  54. vertices4 = np.array([[0,0,0],
  55. [0,0,1],
  56. [1,0,0],
  57. [1,0,1],
  58. [2,0,0],
  59. [2,0,2],
  60. [3,0,0],
  61. [3,0,2],
  62. [0,1,0],
  63. [0,1,1],
  64. [1,1,0],
  65. [1,1,1],
  66. [2,1,0],
  67. [2,1,2],
  68. [3,1,0],
  69. [3,1,2],
  70. [0,2,0],
  71. [0,2,1],
  72. [1,2,0],
  73. [1,2,1],
  74. [2,2,0],
  75. [2,2,2],
  76. [3,2,0],
  77. [3,2,2],
  78. [0,3,0],
  79. [0,3,1],
  80. [1,3,0],
  81. [1,3,1],
  82. [2,3,0],
  83. [2,3,2],
  84. [3,3,0],
  85. [3,3,2]])
  86. """
  87. vertices=vertices3
  88. lenX = 3
  89. lenY = 3
  90. """
  91. vertices=vertices4
  92. lenX = 4
  93. lenY = 4
  94. nb=(lenX*2-2)
  95. faces1 = np.zeros((nb, 3), dtype=int)
  96. y=0
  97. for i in range(0,lenX*2-2,2):
  98. faces1[y] = [i,i+1 ,i+2]
  99. faces1[y+1] = [i+1 ,i+3,i+2]
  100. y=y+2
  101. nb=lenY*2-2
  102. faces2 = np.zeros((nb, 3), dtype=int)
  103. y=0
  104. for i in range(0,lenX*lenY+1,lenX*2):
  105. faces2[y] = [i,i+1,i+lenX*2]
  106. faces2[y+1] = [i+1,i+lenX*2+1,i+lenX*2]
  107. y=y+2
  108. nb=(lenX*2-2)
  109. Start3 = (lenX*2*lenY)-lenX*2
  110. faces3 = np.zeros((nb, 3), dtype=int)
  111. y=0
  112. for i in range(Start3,lenX*2-2+Start3,2):
  113. faces3[y] = [i,i+1 ,i+2]
  114. faces3[y+1] = [i+1,i+3 ,i+2]
  115. y=y+2
  116. nb = lenY*2-2
  117. Start4 = lenX*2-2
  118. faces4 = np.zeros((nb, 3), dtype=int)
  119. y=0
  120. for i in range(Start4,lenX*lenY+1+Start4,lenX*2):
  121. faces4[y] = [i,i+1,i+lenX*2]
  122. faces4[y+1] = [i+1,i+lenX*2+1,i+lenX*2]
  123. y=y+2
  124. nb = 2
  125. faces5 = np.zeros((nb,3), dtype=int)
  126. faces5[0] =[0,lenX*2-2,(lenX*2*lenY)-lenX*2]
  127. faces5[1] =[lenX*2-2,lenX*lenY*2-2,(lenX*2*lenY)-lenX*2]
  128. nb=lenX*lenY*2
  129. faces6 = np.zeros((nb,3), dtype=int)
  130. y=0
  131. for j in range(0,lenY-1):
  132. for i in range(lenX*2*j+1,lenX*2*j+lenX*2-1,2):
  133. faces6[y]=[i,i+2,lenX*2+i]
  134. faces6[y+1]=[i+2,lenX*2+i+2,lenX*2+i]
  135. y=y+2
  136. faces=np.concatenate((faces1, faces2,faces3,faces4,faces5,faces6), axis=0)
  137. # Créez le maillage STL
  138. cube = mesh.Mesh(np.zeros(faces.shape[0], dtype=mesh.Mesh.dtype))
  139. for i, f in enumerate(faces):
  140. for j in range(3):
  141. cube.vectors[i][j] = vertices[f[j], :]
  142. #Sauvegardez le cube au format STL
  143. cube.save('cube.stl')