def load_gcode_file(self): file = QFile(self.filename) file.open(QIODevice.ReadOnly | QIODevice.Text) in_stream = QTextStream(file) file_size = file.size() counter = 0 line = 0 line_number = 0 while not in_stream.atEnd() and self.is_running is True: counter += 1 if self.set_update_progress and counter == 10000: #in_stream.pos() je hodne pomala funkce takze na ni pozor!!! progress = (in_stream.pos() * 1. / file_size * 1.) * 100. self.set_update_progress.emit(int(progress)) counter = 0 line = in_stream.readLine() bits = line.split(';', 1) if bits[0] == '': line_number += 1 continue if 'G1 ' in bits[0]: self.parse_g1_line(bits, line_number) else: line_number += 1 continue line_number += 1 if self.is_running is False: self.set_update_progress.emit(0) self.printing_time = self.calculate_time_of_print() self.filament_length = 0.0 # self.calculate_length_of_filament() ### self.non_extruding_layers = [] for i in self.data: layer_flag = 'M' for l in self.data[i]: _start, _end, flag, _speed, _extr, _line = l if flag in ['E', 'E-sk', 'E-su', 'E-i', 'E-p']: layer_flag = 'E' break if layer_flag == 'M': self.non_extruding_layers.append(i) for i in self.non_extruding_layers: self.data.pop(i, None) self.data_keys = set() self.data_keys = set(self.data) self.data_keys = sorted(self.data_keys, key=float) self.set_data_keys.emit(self.data_keys) self.set_data.emit(self.data) self.set_all_data.emit(self.all_data) self.set_printing_time.emit(self.printing_time) self.finished.emit()
def load_gcode_file(self): file = QFile(self.filename) file.open(QIODevice.ReadOnly | QIODevice.Text) in_stream = QTextStream(file) file_size = file.size() counter = 0 line = 0 line_number = 0 while not in_stream.atEnd() and self.is_running is True: if self.update_progressbar: if counter == 10000: #in_stream.pos() je hodne pomala funkce takze na ni pozor!!! progress = (in_stream.pos() * 1. / file_size * 1.) * 100. self.set_update_progress.emit(int(progress)) counter = 0 else: counter += 1 line = in_stream.readLine() bits = line.split(';', 1) bits_len = len(bits) if bits[0] == '': line_number += 1 if bits_len > 1: if bits[0] == '' and bits[1] == "END gcode for filament": break continue if 'G1 ' in bits[0]: self.parse_g1_line_new(bits, line_number) elif 'G4' in bits[0]: self.parse_g4_line(bits, line_number) elif 'T0' in bits[0] or 'T1' in bits[0] or 'T2' in bits[ 0] or 'T3' in bits[0]: self.parse_t_line(bits, line_number) elif 'G90' in bits[0]: self.absolute_coordinates = True elif 'G91' in bits[0]: self.absolute_coordinates = False elif 'G92' in bits[0]: self.parse_g92_line(bits, line_number) else: if DEBUG: print("Nezpracovano: " + str(bits)) line_number += 1 continue line_number += 1 if self.is_running is False and self.update_progressbar is True: self.set_update_progress.emit(0) self.printing_time = self.calculate_time_of_print() self.filament_length = 0.0 # self.calculate_length_of_filament() ### self.non_extruding_layers = [] for i in self.data: layer_flag = 'M' for l in self.data[i]: _start, _end, flag, _speed, _extrusion, _extruder, _line = l if flag in ['E', 'E-sk', 'E-su', 'E-i', 'E-p']: layer_flag = 'E' break if layer_flag == 'M': self.non_extruding_layers.append(i) for i in self.non_extruding_layers: self.data.pop(i, None) self.data_keys = set() self.data_keys = set(self.data) self.data_keys = sorted(self.data_keys, key=float) self.set_data_keys.emit(self.data_keys) self.set_data.emit(self.data) self.set_all_data.emit(self.all_data) self.set_printing_time.emit(self.printing_time) self.finished.emit()
def load_gcode_file(self): file = QFile(self.filename) file.open(QIODevice.ReadOnly | QIODevice.Text) in_stream = QTextStream(file) file_size = file.size() counter = 0 line = 0 line_number = 0 while not in_stream.atEnd() and self.is_running is True: if self.update_progressbar: if counter==10000: #in_stream.pos() je hodne pomala funkce takze na ni pozor!!! progress = (in_stream.pos()*1./file_size*1.) * 100. self.set_update_progress.emit(int(progress)) counter=0 else: counter+=1 line = in_stream.readLine() bits = line.split(';', 1) bits_len = len(bits) if bits[0] == '': line_number+=1 if bits_len > 1: if bits[0] == '' and bits[1] == "END gcode for filament": break continue if 'G1 ' in bits[0]: self.parse_g1_line_new(bits, line_number) elif 'G4' in bits[0]: self.parse_g4_line(bits, line_number) elif 'T0' in bits[0] or 'T1' in bits[0] or 'T2' in bits[0] or 'T3' in bits[0]: self.parse_t_line(bits, line_number) elif 'G90' in bits[0]: self.absolute_coordinates = True elif 'G91' in bits[0]: self.absolute_coordinates = False elif 'G92' in bits[0]: self.parse_g92_line(bits, line_number) else: if DEBUG: print("Nezpracovano: " + str(bits)) line_number += 1 continue line_number += 1 if self.is_running is False and self.update_progressbar is True: self.set_update_progress.emit(0) self.printing_time = self.calculate_time_of_print() self.filament_length = 0.0 # self.calculate_length_of_filament() ### self.non_extruding_layers = [] for i in self.data: layer_flag = 'M' for l in self.data[i]: _start, _end, flag, _speed, _extrusion, _extruder, _line = l if flag in ['E', 'E-sk', 'E-su', 'E-i', 'E-p']: layer_flag = 'E' break if layer_flag == 'M': self.non_extruding_layers.append(i) for i in self.non_extruding_layers: self.data.pop(i, None) self.data_keys = set() self.data_keys = set(self.data) self.data_keys = sorted(self.data_keys, key=float) self.set_data_keys.emit(self.data_keys) self.set_data.emit(self.data) self.set_all_data.emit(self.all_data) self.set_printing_time.emit(self.printing_time) self.finished.emit()