-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstl_dimension.py
More file actions
67 lines (50 loc) · 1.56 KB
/
stl_dimension.py
File metadata and controls
67 lines (50 loc) · 1.56 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import numpy as np
import nrrd
from glob import glob
import open3d as o3d
import math
import stl
from stl import mesh
import numpy
import os
import sys
def find_mins_maxs(obj):
minx = maxx = miny = maxy = minz = maxz = None
for p in obj.points:
if minx is None:
minx = p[stl.Dimension.X]
maxx = p[stl.Dimension.X]
miny = p[stl.Dimension.Y]
maxy = p[stl.Dimension.Y]
minz = p[stl.Dimension.Z]
maxz = p[stl.Dimension.Z]
else:
maxx = max(p[stl.Dimension.X], maxx)
minx = min(p[stl.Dimension.X], minx)
maxy = max(p[stl.Dimension.Y], maxy)
miny = min(p[stl.Dimension.Y], miny)
maxz = max(p[stl.Dimension.Z], maxz)
minz = min(p[stl.Dimension.Z], minz)
return minx, maxx, miny, maxy, minz, maxz
if __name__ == '__main__':
# where the STL files are stored
base_dir='D:/skull-volume/TU_200/Segmentiert/TU_fertig/stl'
data_list=glob('{}/*.stl'.format(base_dir))
x=[]
y=[]
z=[]
for i in range(len(data_list)):
main_body = mesh.Mesh.from_file(data_list[i])
minx, maxx, miny, maxy, minz, maxz = find_mins_maxs(main_body)
x.append(maxx-minx)
y.append(maxy-miny)
z.append(maxz-minz)
x=np.array(x)
y=np.array(y)
z=np.array(z)
print('x min',x.min())
print('x max',x.max())
print('y min',y.min())
print('y max',y.max())
print('z min',z.min())
print('z max',z.max())