class MainWindow(QMainWindow, Ui4_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) self.OpenVTK() self.update() def update(self): self.width = self.width() self.height = self.height() self.frame.setGeometry(self.width / 2, 0, self.width / 2, self.height) def OpenVTK(self): self.vtkWidget = QVTKRenderWindowInteractor(self.frame) self.vl = Qt.QVBoxLayout() self.vl.addWidget(self.vtkWidget) self.ren = vtk.vtkRenderer() self.vtkWidget.GetRenderWindow().AddRenderer(self.ren) self.iren = self.vtkWidget.GetRenderWindow().GetInteractor() self.iren.GetInteractorStyle().SetCurrentStyleToTrackballCamera() # Create source # source = vtk.vtkSphereSource() # source.SetCenter(0, 0, 0) # source.SetRadius(5.0) source = vtk.vtkCubeSource() source.SetXLength(1500) source.SetYLength(1500) source.SetZLength(100) source.SetCenter(0, 0, 0) source8 = vtk.vtkCubeSource() source8.SetXLength(10) source8.SetYLength(100) source8.SetZLength(100) source8.SetCenter(0, 0, 0) source2 = vtk.vtkCubeSource() source2.SetXLength(25) source2.SetYLength(200) source2.SetZLength(550) source2.SetCenter(0, 0, 0) source3 = vtk.vtkCubeSource() source3.SetXLength(1500) source3.SetYLength(25) source3.SetZLength(150) source2.SetCenter(0, 0, 0) source4 = vtk.vtkCubeSource() source4.SetXLength(200) source4.SetYLength(25) source4.SetZLength(550) source4.SetCenter(0, 0, 0) source5 = vtk.vtkCylinderSource() source5.SetRadius(70) source5.SetHeight(350) source5.SetCenter(0, 0, 0) source5.SetResolution(100) source6 = vtk.vtkCylinderSource() source6.SetRadius(20) source6.SetHeight(100) source6.SetCenter(0, 0, 0) source6.SetResolution(100) source7 = vtk.vtkTriangle() points = vtk.vtkPoints() points.InsertNextPoint(100.0, 0.0, 0.0) points.InsertNextPoint(0.0, 0.0, 0.0) points.InsertNextPoint(0.0, 0.0, 100.0) source7.GetPointIds().SetId(0, 0) source7.GetPointIds().SetId(1, 1) source7.GetPointIds().SetId(2, 2) triangles = vtk.vtkCellArray() triangles.InsertNextCell(source7) trianglePolyData = vtk.vtkPolyData() trianglePolyData.SetPoints(points) trianglePolyData.SetPolys(triangles) #mapperBase8 = vtk.vtkPolyDataMapper() #mapperBase8.SetInputData(trianglePolyData) filename = "/Users/steve/PycharmProjects/vtktest/CylinderHead-stl/CylinderHead-binary.stl" reader = vtk.vtkSTLReader() reader.SetFileName(filename) reader.Update() # Create a mapper #mapperSTL = vtk.vtkPolyDataMapper() #mapperSTL.SetInputConnection(reader.GetOutputPort()) mapperBase = vtk.vtkPolyDataMapper() mapperBase.SetInputConnection(source.GetOutputPort()) mapperBase2 = vtk.vtkPolyDataMapper() mapperBase2.SetInputConnection(source2.GetOutputPort()) mapperBase3 = vtk.vtkPolyDataMapper() mapperBase3.SetInputConnection(source2.GetOutputPort()) mapperBase4 = vtk.vtkPolyDataMapper() mapperBase4.SetInputConnection(source3.GetOutputPort()) mapperBase5 = vtk.vtkPolyDataMapper() mapperBase5.SetInputConnection(source4.GetOutputPort()) mapperBase6 = vtk.vtkPolyDataMapper() mapperBase6.SetInputConnection(source5.GetOutputPort()) mapperBase7 = vtk.vtkPolyDataMapper() mapperBase7.SetInputConnection(source6.GetOutputPort()) mapperBase8 = vtk.vtkPolyDataMapper() mapperBase8.SetInputConnection(source8.GetOutputPort()) BaseActor8 = vtk.vtkActor() BaseActor8.SetMapper(mapperBase8) # BaseActor8.GetProperty().SetColor(1.0, 215 / 255, 0) #BaseActor8.RotateX(-45) # BaseActor8.SetPosition(0,2000,500) BaseActor8.GetProperty().SetColor(0, 0, 1) # Create an actor #STLactor = vtk.vtkActor() #STLactor.SetMapper(mapperSTL) BaseActor = vtk.vtkActor() BaseActor.SetMapper(mapperBase) #BaseActor.SetPosition((0, 0, 0)) BaseActor.GetProperty().SetColor(1.0, 0, 0) #STLactor.SetScale(5,5,5) BaseActor2 = vtk.vtkActor() BaseActor2.SetMapper(mapperBase2) BaseActor2.GetProperty().SetColor(0, 0, 1.0) BaseActor3 = vtk.vtkActor() BaseActor3.SetMapper(mapperBase3) BaseActor3.GetProperty().SetColor(0, 0, 1.0) BaseActor4 = vtk.vtkActor() BaseActor4.SetMapper(mapperBase4) BaseActor4.GetProperty().SetColor(0, 0, 1.0) BaseActor5 = vtk.vtkActor() BaseActor5.SetMapper(mapperBase5) BaseActor5.GetProperty().SetColor(1.0, 1.0, 0) BaseActor6 = vtk.vtkActor() BaseActor6.SetMapper(mapperBase6) BaseActor6.GetProperty().SetColor(1.0, 69 / 255, 0) BaseActor6.RotateX(90) BaseActor7 = vtk.vtkActor() BaseActor7.SetMapper(mapperBase7) BaseActor7.GetProperty().SetColor(1.0, 215 / 255, 0) BaseActor7.RotateX(90) #self.ren.AddActor(STLactor) self.ren.AddActor(BaseActor) self.ren.AddActor(BaseActor2) self.ren.AddActor(BaseActor3) self.ren.AddActor(BaseActor4) self.ren.AddActor(BaseActor5) self.ren.AddActor(BaseActor6) self.ren.AddActor(BaseActor7) self.ren.AddActor(BaseActor8) self.ren.ResetCamera() self.frame.setLayout(self.vl) # self.setCentralWidget(self.frame) self.show() self.iren.Initialize() # put timer event here cbBase2 = vtkTimerCallback() cbBase3 = vtkTimerCallback() cbBase4 = vtkTimerCallback() cbBase5 = vtkTimerCallback() cbBase6 = vtkTimerCallback() cbBase7 = vtkTimerCallback() cbBase8 = vtkTimerCallback() cbBase2.actor = BaseActor2 cbBase3.actor = BaseActor3 cbBase4.actor = BaseActor4 cbBase5.actor = BaseActor5 cbBase6.actor = BaseActor6 cbBase7.actor = BaseActor7 cbBase8.actor = BaseActor8 #cbSTL = vtkTimerCallback() #cbSTL.actor = STLactor def getfiles(): try: file = QFileDialog.getOpenFileName(self, 'Single File', QtCore.QDir.rootPath(), '*.stl') if file == None: file = "/Users/steve/PycharmProjects/vtktest/CylinderHead-stl/CylinderHead-binary.stl" str = file[0] reader.SetFileName(str) reader.Update() #mapper.SetInputConnection(reader.GetOutputPort()) #STLactor.SetMapper(mapper) except Exception as e: print("Exception in method") print(e) def stopR(): cbBase8.timerVar3 = 0 def startR(): cbBase8.timerVar3 = 1 def stopY(): cbBase2.timerVar1 = 1 cbBase3.timerVar1 = 1 cbBase4.timerVar1 = 1 cbBase5.timerVar1 = 1 cbBase6.timerVar1 = 1 cbBase7.timerVar1 = 1 cbBase8.timerVar1 = 1 def forwardY(): cbBase2.timerVar1 = 0 cbBase3.timerVar1 = 0 cbBase4.timerVar1 = 0 cbBase5.timerVar1 = 0 cbBase6.timerVar1 = 0 cbBase7.timerVar1 = 0 cbBase2.count = 3 cbBase3.count = 3 cbBase4.count = 3 cbBase5.count = 3 cbBase6.count = 3 cbBase7.count = 3 cbBase8.count = 3 def backY(): cbBase2.timerVar1 = 0 cbBase3.timerVar1 = 0 cbBase4.timerVar1 = 0 cbBase5.timerVar1 = 0 cbBase6.timerVar1 = 0 cbBase7.timerVar1 = 0 cbBase8.timerVar1 = 0 cbBase2.count = 1 cbBase3.count = 1 cbBase4.count = 1 cbBase5.count = 1 cbBase6.count = 1 cbBase7.count = 1 cbBase8.count = 1 def upZ(): cbBase5.timerVar2 = 0 cbBase5.count2 = 1 cbBase6.timerVar2 = 0 cbBase6.count2 = 1 cbBase7.timerVar2 = 0 cbBase7.count2 = 1 cbBase8.timerVar2 = 0 cbBase8.count2 = 1 def downZ(): cbBase5.timerVar2 = 0 cbBase5.count2 = 3 cbBase6.timerVar2 = 0 cbBase6.count2 = 3 cbBase7.timerVar2 = 0 cbBase7.count2 = 3 cbBase8.timerVar2 = 0 cbBase8.count2 = 3 def stopZ(): cbBase5.timerVar2 = 1 cbBase5.count2 = 2 cbBase6.timerVar2 = 1 cbBase6.count2 = 3 cbBase7.timerVar2 = 1 cbBase7.count2 = 3 cbBase8.timerVar2 = 1 cbBase8.count2 = 3 #self.vtkWidget.AddObserver('TimerEvent', cbSTL.execute2) self.vtkWidget.AddObserver('TimerEvent', cbBase2.execute3) self.vtkWidget.AddObserver('TimerEvent', cbBase3.execute4) self.vtkWidget.AddObserver('TimerEvent', cbBase4.execute) self.vtkWidget.AddObserver('TimerEvent', cbBase5.execute5) self.vtkWidget.AddObserver('TimerEvent', cbBase5.execute6) self.vtkWidget.AddObserver('TimerEvent', cbBase6.execute7) self.vtkWidget.AddObserver('TimerEvent', cbBase6.execute8) self.vtkWidget.AddObserver('TimerEvent', cbBase7.execute9) self.vtkWidget.AddObserver('TimerEvent', cbBase7.execute10) self.vtkWidget.AddObserver('TimerEvent', cbBase8.execute11) self.vtkWidget.AddObserver('TimerEvent', cbBase8.execute12) self.vtkWidget.AddObserver('TimerEvent', cbBase8.execute2) self.stopRotationButton.clicked.connect(stopR) self.startRotationButton.clicked.connect(startR) try: self.STLButton.clicked.connect(getfiles) except Exception as ex: print("Exception in button call") print(ex) self.stopYButton.clicked.connect(stopY) self.forwardYButton.clicked.connect(forwardY) self.backYButton.clicked.connect(backY) self.stopZButton.clicked.connect(stopZ) self.upZButton.clicked.connect(upZ) self.downZButton.clicked.connect(downZ) self.vtkWidget.CreateRepeatingTimer(1) self.iren.Start()