-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrunnerWithVisual.py
98 lines (82 loc) · 2.78 KB
/
runnerWithVisual.py
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from goicp import goicpAlign
import argparse
import vtk
import numpy as np
from applyMatrix import align
from PyQt5.QtWidgets import QApplication
from vtkmodules.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
colors = vtk.vtkNamedColors()
def main():
atlas = "AnkleAtlasL.stl"
src = get_program_parameters()
print(atlas, src)
matrix = goicpAlign(src, atlas)
srcVtk = ReadPolyData(src)
tgtVtk = ReadPolyData(atlas)
print( np.linalg.det(matrix))
# goicpTransform = vtk.vtkTransform()
# goicpTransform.SetMatrix(matrix.flatten())
# transformFilter = vtk.vtkTransformPolyDataFilter()
# transformFilter.SetInputData(srcVtk)
# transformFilter.SetTransform(goicpTransform)
# transformFilter.Update()
srcName = src.split(".")
saveName = srcName[0] + "_reoriented.stl"
align(src, saveName, matrix)
def makeActor(vtkData, color):
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputData(vtkData)
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().SetColor(colors.GetColor3d(color))
actor.GetProperty().SetOpacity(1)
return actor
def get_program_parameters():
import argparse
description = 'Read a .stl file.'
epilogue = ''''''
parser = argparse.ArgumentParser(description=description, epilog=epilogue,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('filename', help='42400-IDGH.stl')
args = parser.parse_args()
return args.filename
def ReadPolyData(file_name):
import os
path, extension = os.path.splitext(file_name)
extension = extension.lower()
if extension == ".ply":
reader = vtk.vtkPLYReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == ".vtp":
reader = vtk.vtkXMLpoly_dataReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == ".obj":
reader = vtk.vtkOBJReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == ".stl":
reader = vtk.vtkSTLReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == ".vtk":
reader = vtk.vtkpoly_dataReader()
reader.SetFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
elif extension == ".g":
reader = vtk.vtkBYUReader()
reader.SetGeometryFileName(file_name)
reader.Update()
poly_data = reader.GetOutput()
else:
# Return a None if the extension is unknown.
poly_data = None
return poly_data
if __name__ == '__main__':
main()