def __init__(self): super(RobPathUI, self).__init__() path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) uic.loadUi(os.path.join(path, 'resources', 'robpath.ui'), self) self.plot = QMayavi() self.boxPlot.addWidget(self.plot) self.plot.drawWorkingArea() self.btnLoadMesh.clicked.connect(self.btnLoadMeshClicked) self.btnProcessMesh.clicked.connect(self.btnProcessMeshClicked) self.btnProcessContours.clicked.connect(self.btnProcessContoursClicked) self.btnSaveRapid.clicked.connect(self.btnSaveRapidClicked) self.sbPositionX.valueChanged.connect(self.changePosition) self.sbPositionY.valueChanged.connect(self.changePosition) self.sbPositionZ.valueChanged.connect(self.changePosition) self.sbSizeX.valueChanged.connect(self.changeSize) self.sbSizeY.valueChanged.connect(self.changeSize) self.sbSizeZ.valueChanged.connect(self.changeSize) self.btnQuit.clicked.connect(self.btnQuitClicked) self.processing = False self.timer = QtCore.QTimer(self.plot) self.timer.timeout.connect(self.updateProcess) self.robpath = RobPath()
class RobPathUI(QtGui.QMainWindow): def __init__(self): super(RobPathUI, self).__init__() path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) uic.loadUi(os.path.join(path, 'resources', 'robpath.ui'), self) self.plot = QMayavi() self.boxPlot.addWidget(self.plot) self.plot.drawWorkingArea() self.btnLoadMesh.clicked.connect(self.btnLoadMeshClicked) self.btnProcessMesh.clicked.connect(self.btnProcessMeshClicked) self.btnProcessContours.clicked.connect(self.btnProcessContoursClicked) self.btnSaveRapid.clicked.connect(self.btnSaveRapidClicked) self.sbPositionX.valueChanged.connect(self.changePosition) self.sbPositionY.valueChanged.connect(self.changePosition) self.sbPositionZ.valueChanged.connect(self.changePosition) self.sbSizeX.valueChanged.connect(self.changeSize) self.sbSizeY.valueChanged.connect(self.changeSize) self.sbSizeZ.valueChanged.connect(self.changeSize) self.btnQuit.clicked.connect(self.btnQuitClicked) self.processing = False self.timer = QtCore.QTimer(self.plot) self.timer.timeout.connect(self.updateProcess) self.robpath = RobPath() def changePosition(self): x = self.sbPositionX.value() y = self.sbPositionY.value() z = self.sbPositionZ.value() self.robpath.translate_mesh(np.float32([x, y, z])) self.plot.drawMesh(self.robpath.mesh) def changeSize(self): sx = self.sbSizeX.value() + 0.001 sy = self.sbSizeY.value() + 0.001 sz = self.sbSizeZ.value() + 0.001 self.robpath.resize_mesh(np.float32([sx, sy, sz])) self.changePosition() def updatePosition(self, position): x, y, z = position self.sbPositionX.setValue(x) self.sbPositionY.setValue(y) self.sbPositionZ.setValue(z) def updateSize(self, size): sx, sy, sz = size self.sbSizeX.setValue(sx) self.sbSizeY.setValue(sy) self.sbSizeZ.setValue(sz) def updateProcess(self): if self.robpath.k < len(self.robpath.levels): self.robpath.update_process() #self.plot.drawSlice(self.robpath.slices, self.robpath.path) self.plot.drawPath(self.robpath.path) self.plot.progress.setValue(100.0 * self.robpath.k / len(self.robpath.levels)) self.btnSaveRapid.setEnabled(False) else: self.processing = False self.timer.stop() self.btnSaveRapid.setEnabled(True) def blockSignals(self, value): self.sbPositionX.blockSignals(value) self.sbPositionY.blockSignals(value) self.sbPositionZ.blockSignals(value) self.sbSizeX.blockSignals(value) self.sbSizeY.blockSignals(value) self.sbSizeZ.blockSignals(value) def btnLoadMeshClicked(self): self.blockSignals(True) try: filename = QtGui.QFileDialog.getOpenFileName(self.plot, 'Open file', './', 'Mesh Files (*.stl)') print filename self.setWindowTitle('Mesh Viewer: %s' % filename) self.robpath.load_mesh(filename) # ----- # TODO: Change bpoints. self.updatePosition(self.robpath.mesh.bpoint1) self.updateSize(self.robpath.mesh.bpoint2 - self.robpath.mesh.bpoint1) self.lblInfo.setText('Info:\n') # ----- self.plot.drawMesh(self.robpath.mesh) self.btnProcessMesh.setEnabled(True) self.btnProcessContours.setEnabled(True) except: #self.btnProcessMesh.setEnabled(False) #self.btnProcessContours.setEnabled(False) pass self.blockSignals(False) self.plot.drawMesh(self.robpath.mesh) def update_parameters(self): height = self.sbHeight.value() + 0.00001 width = self.sbWidth.value() + 0.00001 overlap = 0.01 * self.sbOverlap.value() self.robpath.set_track(height, width, overlap) speed = self.sbSpeed.value() power = self.sbPower.value() self.robpath.set_speed(speed) self.robpath.set_power(power) carrier_gas = self.sbCarrier.value() stirrer = self.sbStirrer.value() turntable = self.sbTurntable.value() self.robpath.set_powder(carrier_gas, stirrer, turntable) def __process_shape(self): if self.processing: self.timer.stop() self.processing = False else: self.plot.drawWorkingArea() self.update_parameters() self.robpath.init_process() self.processing = True self.timer.start(100) def btnProcessMeshClicked(self): self.robpath.filled = True self.__process_shape() def btnProcessContoursClicked(self): self.robpath.filled = False self.__process_shape() # self.btnSaveRapid.setEnabled(False) # self.plot.drawWorkingArea() # self.update_parameters() # self.robpath.get_contours_path() # self.plot.drawPath(self.robpath.path) # self.btnSaveRapid.setEnabled(True) def btnSaveRapidClicked(self): self.robpath.save_rapid() QtGui.QMessageBox.information(self, "Export information", "Routine exported to the robot.") def btnQuitClicked(self): QtCore.QCoreApplication.instance().quit()
class RobPathUI(QtGui.QMainWindow): def __init__(self): super(RobPathUI, self).__init__() path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) uic.loadUi(os.path.join(path, 'resources', 'robpath.ui'), self) self.plot = QMayavi() self.boxPlot.addWidget(self.plot) self.plot.drawWorkingArea() self.btnLoadMesh.clicked.connect(self.btnLoadMeshClicked) self.btnProcessMesh.clicked.connect(self.btnProcessMeshClicked) self.btnProcessContours.clicked.connect(self.btnProcessContoursClicked) self.btnSaveRapid.clicked.connect(self.btnSaveRapidClicked) self.sbPositionX.valueChanged.connect(self.changePosition) self.sbPositionY.valueChanged.connect(self.changePosition) self.sbPositionZ.valueChanged.connect(self.changePosition) self.sbSizeX.valueChanged.connect(self.changeSize) self.sbSizeY.valueChanged.connect(self.changeSize) self.sbSizeZ.valueChanged.connect(self.changeSize) self.btnQuit.clicked.connect(self.btnQuitClicked) self.processing = False self.timer = QtCore.QTimer(self.plot) self.timer.timeout.connect(self.updateProcess) self.robpath = RobPath() def changePosition(self): x = self.sbPositionX.value() y = self.sbPositionY.value() z = self.sbPositionZ.value() self.robpath.translate_mesh(np.float32([x, y, z])) self.plot.drawMesh(self.robpath.mesh) def changeSize(self): sx = self.sbSizeX.value() + 0.001 sy = self.sbSizeY.value() + 0.001 sz = self.sbSizeZ.value() + 0.001 self.robpath.resize_mesh(np.float32([sx, sy, sz])) self.changePosition() def updatePosition(self, position): x, y, z = position self.sbPositionX.setValue(x) self.sbPositionY.setValue(y) self.sbPositionZ.setValue(z) def updateSize(self, size): sx, sy, sz = size self.sbSizeX.setValue(sx) self.sbSizeY.setValue(sy) self.sbSizeZ.setValue(sz) def updateProcess(self): if self.robpath.k < len(self.robpath.levels): self.robpath.update_process() #self.plot.drawSlice(self.robpath.slices, self.robpath.path) self.plot.drawPath(self.robpath.path) self.plot.progress.setValue(100.0 * self.robpath.k / len(self.robpath.levels)) self.btnSaveRapid.setEnabled(False) else: self.processing = False self.timer.stop() self.btnSaveRapid.setEnabled(True) def blockSignals(self, value): self.sbPositionX.blockSignals(value) self.sbPositionY.blockSignals(value) self.sbPositionZ.blockSignals(value) self.sbSizeX.blockSignals(value) self.sbSizeY.blockSignals(value) self.sbSizeZ.blockSignals(value) def btnLoadMeshClicked(self): self.blockSignals(True) try: filename = QtGui.QFileDialog.getOpenFileName( self.plot, 'Open file', './', 'Mesh Files (*.stl)') print filename self.setWindowTitle('Mesh Viewer: %s' % filename) self.robpath.load_mesh(filename) # ----- # TODO: Change bpoints. self.updatePosition(self.robpath.mesh.bpoint1) self.updateSize(self.robpath.mesh.bpoint2 - self.robpath.mesh.bpoint1) self.lblInfo.setText('Info:\n') # ----- self.plot.drawMesh(self.robpath.mesh) self.btnProcessMesh.setEnabled(True) self.btnProcessContours.setEnabled(True) except: #self.btnProcessMesh.setEnabled(False) #self.btnProcessContours.setEnabled(False) pass self.blockSignals(False) self.plot.drawMesh(self.robpath.mesh) def update_parameters(self): height = self.sbHeight.value() + 0.00001 width = self.sbWidth.value() + 0.00001 overlap = 0.01 * self.sbOverlap.value() self.robpath.set_track(height, width, overlap) speed = self.sbSpeed.value() power = self.sbPower.value() self.robpath.set_speed(speed) self.robpath.set_power(power) carrier_gas = self.sbCarrier.value() stirrer = self.sbStirrer.value() turntable = self.sbTurntable.value() self.robpath.set_powder(carrier_gas, stirrer, turntable) def __process_shape(self): if self.processing: self.timer.stop() self.processing = False else: self.plot.drawWorkingArea() self.update_parameters() self.robpath.init_process() self.processing = True self.timer.start(100) def btnProcessMeshClicked(self): self.robpath.filled = True self.__process_shape() def btnProcessContoursClicked(self): self.robpath.filled = False self.__process_shape() # self.btnSaveRapid.setEnabled(False) # self.plot.drawWorkingArea() # self.update_parameters() # self.robpath.get_contours_path() # self.plot.drawPath(self.robpath.path) # self.btnSaveRapid.setEnabled(True) def btnSaveRapidClicked(self): self.robpath.save_rapid() QtGui.QMessageBox.information(self, "Export information", "Routine exported to the robot.") def btnQuitClicked(self): QtCore.QCoreApplication.instance().quit()