class ConnectedAirfoilsModel(QtCore.QObject): data_changed = QtCore.pyqtSignal() def __init__(self): super().__init__() self.af_left = Airfoil() self.af_right = Airfoil() self.it_point_list_right = [] self.it_point_list_left = [] self.af_left.data_changed.connect(self.connect_airfoils) self.af_right.data_changed.connect(self.connect_airfoils) def connect_airfoils(self): if (self.af_left.loaded and self.af_right.loaded): degrees = list( set(self.af_left.get_degree_list() + self.af_right.get_degree_list())) degrees.sort() self.it_point_list_right = self.af_right.get_interpolated_point_list( degrees) self.it_point_list_left = self.af_left.get_interpolated_point_list( degrees) self.data_changed.emit() def generate_gcode(self, feedrate): gcode = list() if (self.af_left.loaded and self.af_right.loaded): # turn on the spindle (hotwire) at the given temp gcode.append("M3 S" + str(control_widget.temp_spbox.value()) + "\n") gcode.append("M7\n") gcode.append("F%.2f\n" % feedrate) # example coordinate for cutting block to size: # (x, y) -> x = x and u, y = y and z if (control_widget.cutBlockToSizeCheckbox.isChecked()): # (0, 0) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (0, 0, 0, 0)) # (0, block height) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (0, control_widget.block_height_spbox.value(), 0, control_widget.block_height_spbox.value())) # (block length, block height) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (control_widget.block_length_spbox.value(), control_widget.block_height_spbox.value(), control_widget.block_length_spbox.value(), control_widget.block_height_spbox.value())) # (block length, 0) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (control_widget.block_length_spbox.value(), 0, control_widget.block_length_spbox.value(), 0)) # (block length, block height) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (control_widget.block_length_spbox.value(), control_widget.block_height_spbox.value(), control_widget.block_length_spbox.value(), control_widget.block_height_spbox.value())) # (0, block height) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (0, control_widget.block_height_spbox.value(), 0, control_widget.block_height_spbox.value())) # (0, 0) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (0, 0, 0, 0)) # Cut the wing profiles gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (self.af_right.start[0], self.af_right.start[1], self.af_left.start[0], self.af_left.start[1])) for i in range(len(self.it_point_list_right[0])): gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (self.it_point_list_right[0][i], self.it_point_list_right[1][i], self.it_point_list_left[0][i], self.it_point_list_left[1][i])) gcode.append("G01 X%.3f Y%.3f U%.3f Z%.3f\n" % (self.af_right.end[0], self.af_right.end[1], self.af_left.end[0], self.af_left.end[1])) return gcode