def __init_username_jobname_widget__(self, parent=None): self.__username_jobname_widget = QFrame(parent) self.__username_jobname_widget.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum) username_label = QLabel("Username", parent=self.__username_jobname_widget) username_edit = QLineEdit(parent=self.__username_jobname_widget) username_edit.setText(self.dlp_controller.username) username_edit.textChanged.connect(self.dlp_controller.set_username) jobname_label = QLabel("Print Job Name", parent=self.__username_jobname_widget) jobname_edit = QLineEdit(parent=self.__username_jobname_widget) jobname_edit.setText(self.dlp_controller.print_job_name) jobname_edit.textChanged.connect(self.dlp_controller.set_printjob_name) etc = self.dlp_controller.evaluate_time_estimate() self.etc_label = QLabel( "ETC: " + QDateTime.fromTime_t(etc / 1000.0).toUTC().toString('hh:mm:ss'), self.__username_jobname_widget) self.dlp_controller.etc_updated_signal.connect( self.update_time_estimate) username_jobname_layout = QHBoxLayout(self.__username_jobname_widget) username_jobname_layout.addWidget(self.etc_label) username_jobname_layout.addWidget(username_label) username_jobname_layout.addWidget(username_edit) username_jobname_layout.addWidget(jobname_label) username_jobname_layout.addWidget(jobname_edit) self.__username_jobname_widget.setLayout(username_jobname_layout)
def update_time_estimate(self, etc_ms): self.etc_label.setText( "ETC: " + QDateTime.fromTime_t(etc_ms / 1000.0).toUTC().toString('hh:mm:ss'))
def prepare_next_layer(self): try: estimated_time_ms = self.evaluate_time_estimate(self.current_layer) self.print_text_signal.emit("ETC: " + QDateTime.fromTime_t( estimated_time_ms / 1000.0).toUTC().toString('hh:mm:ss')) self.__projector_controller.clear_image() if not DEBUG_MODE_ON: if not self.__projector_controller.set_amplitude(0): self.stop_printing_process() return # self.__projector_controller.set_projector_amplitude(0) move_building_plate = True if self.current_layer < len(self.support_file_names): self.current_file_name = self.support_file_names[ self.current_layer] self.current_thickness = self.support_thickness is_burning_layer = self.current_layer < self.support_burn_layers if is_burning_layer: self.current_amplitude = self.support_burn_amplitude self.current_exposure = self.support_burn_exposure else: self.current_amplitude = self.support_amplitude self.current_exposure = self.support_exposure elif self.current_layer < self.number_of_layers: self.current_file_name = self.features_file_names[ self.current_layer - len(self.support_file_names)] self.current_thickness = self.features_thickness burning_layers_threshold = len( self.support_file_names) + self.features_burn_layers is_burning_layer = self.current_layer < burning_layers_threshold if is_burning_layer: self.current_amplitude = self.features_burn_amplitude self.current_exposure = self.features_burn_exposure elif self.incremental_exposure: if self.fixed_layer and self.current_layer > burning_layers_threshold: move_building_plate = False self.current_amplitude = self.features_amplitude self.current_exposure = self.starting_incremental_exposure + \ (self.current_layer - burning_layers_threshold) * self.incremental_step_exposure elif self.incremental_thickness: self.current_thickness = self.starting_incremental_thickness + \ (self.current_layer - burning_layers_threshold) * self.incremental_step_thickness self.current_amplitude = self.features_amplitude self.current_exposure = self.features_exposure elif self.incremental_amplitude: if self.fixed_layer and self.current_layer > burning_layers_threshold: move_building_plate = False self.current_amplitude = self.starting_incremental_amplitude + \ (self.current_layer - burning_layers_threshold) * self.incremental_step_amplitude print(self.current_amplitude) self.current_exposure = self.features_exposure else: self.current_amplitude = self.features_amplitude self.current_exposure = self.features_exposure else: self.print_text_signal.emit("...printing process ended!") self.print_status = "SUCCESS" self.save_current_parameters() if not DEBUG_MODE_ON: self.__motor_controller.home_building_plate() self.is_printing = False self.reactivate_parameters_signal.emit() return # self.print_text_signal.emit("Preparing next layer") if move_building_plate: if DEBUG_MODE_ON: self.__motor_controller.reposition_next_layer(0) else: self.__motor_controller.reposition_next_layer( self.current_thickness) else: self.project_next_layer() except Exception as e: self.print_status = "FAILED" self.error_message = str(e) self.save_current_parameters() self.print_text_signal.emit("PRINTING PROCESS FAILED!") self.stop_printing_process(save_parameters=False) print(e)