def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.shapes = Shapes([]) self.orientation = 0 self.wpZero = 0 self.routearrows = [] self.expprv = None self.isPanning = False self.isRotating = False self.isMultiSelect = False self._lastPos = QPoint() self.posX = 0.0 self.posY = 0.0 self.posZ = 0.0 self.rotX = 0.0 self.rotY = 0.0 self.rotZ = 0.0 self.scale = 1.0 self.scaleCorr = 1.0 self.showPathDirections = False self.showDisabledPaths = False self.BB = BoundingBox() self.tol = 0
def __init__(self, parent=None): super(GLWidget, self).__init__(parent) self.shapes = Shapes([]) self.orientation = 0 self.wpZero = 0 self.routearrows = [] self.expprv = None self._lastPos = QPoint() self.posX = 0.0 self.posY = 0.0 self.posZ = 0.0 self.rotX = 0.0 self.rotY = 0.0 self.rotZ = 0.0 self.scale = 1.0 self.scaleCorr = 1.0 # total (squared) distance traveled by mouse while LMB was down self.clickTravelSq = 0 self.showPathDirections = False self.showDisabledPaths = False self.BB = BoundingBox() self.tol = 0
def makeShapes(self): self.entityRoot = EntityContent( nr=0, name='Entities', parent=None, p0=Point(self.cont_dx, self.cont_dy), pb=Point(), sca=[self.cont_scale, self.cont_scale, self.cont_scale], rot=self.cont_rotate) self.layerContents = Layers([]) self.shapes = Shapes([]) self.makeEntityShapes(self.entityRoot) for layerContent in self.layerContents: layerContent.overrideDefaults() self.layerContents.sort(key=lambda x: x.nr) self.newNumber = len(self.shapes)
def resetAll(self): # the wpzero is currently generated "last" if self.wpZero > 0: GL.glDeleteLists(self.orientation + 1, self.wpZero - self.orientation) self.shapes = Shapes([]) self.wpZero = 0 self.delete_opt_paths() self.posX = 0.0 self.posY = 0.0 self.posZ = 0.0 self.rotX = 0.0 self.rotY = 0.0 self.rotZ = 0.0 self.scale = 1.0 self.BB = BoundingBox() self.update()
def __init__(self, app): """ Initialization of the Main window. This is directly called after the Logger has been initialized. The Function loads the GUI, creates the used Classes and connects the actions to the GUI. """ QMainWindow.__init__(self) # Build the configuration window self.config_window = ConfigWindow(g.config.makeConfigWidgets(), g.config.var_dict, g.config.var_dict.configspec, self) self.config_window.finished.connect(self.updateConfiguration) self.app = app self.ui = Ui_MainWindow() self.ui.setupUi(self) self.showMaximized() self.canvas = self.ui.canvas if g.config.mode3d: self.canvas_scene = self.canvas else: self.canvas_scene = None self.TreeHandler = TreeHandler(self.ui) self.configuration_changed.connect( self.TreeHandler.updateConfiguration) if sys.version_info[0] == 2: error_message = QMessageBox( QMessageBox.Critical, 'ERROR', self. tr("Python version 2 is not supported, please use it with python version 3." )) sys.exit(error_message.exec_()) # Load the post-processor configuration and build the post-processor configuration window self.MyPostProcessor = MyPostProcessor() # If string version_mismatch isn't empty, we popup an error and exit if self.MyPostProcessor.version_mismatch: error_message = QMessageBox(QMessageBox.Critical, 'Configuration error', self.MyPostProcessor.version_mismatch) sys.exit(error_message.exec_()) self.d2g = Project(self) self.createActions() self.connectToolbarToConfig() self.filename = "" self.valuesDXF = None self.shapes = Shapes([]) self.entityRoot = None self.layerContents = Layers([]) self.newNumber = 1 self.cont_dx = 0.0 self.cont_dy = 0.0 self.cont_rotate = 0.0 self.cont_scale = 1.0
def load(self, content, compleet=True): match = re.match( Project.header.replace('+', '\+') % r'(\d+\.\d+)', content) if not match: raise Exception('Incorrect project file') version = float(match.groups()[0]) if version not in Project.supported_versions: raise VersionMismatchError(match.group(), Project.version) execute(self, content) if compleet: self.parent.filename = self.file g.config.point_tolerance = self.point_tol g.config.fitting_tolerance = self.fitting_tol self.parent.cont_scale = self.scale self.parent.cont_rotate = self.rot self.parent.cont_dx = self.wpzero_x self.parent.cont_dy = self.wpzero_y g.config.vars.General['split_line_segments'] = self.split_lines g.config.vars.General[ 'automatic_cutter_compensation'] = self.aut_cut_com g.config.machine_type = self.machine_type self.parent.connectToolbarToConfig(True) if not self.parent.load(False): self.parent.unsetCursor() return name_layers = dict( (layer.name, layer) for layer in self.parent.layerContents) # dict comprehensions are supported since Py2.7 # name_layers = {layer.name: layer for layer in self.parent.layerContents} layers = [] for parent_layer in self.layers: if parent_layer['name'] in name_layers: layer = name_layers[parent_layer['name']] layer.tool_nr = parent_layer['tool_nr'] layer.tool_diameter = parent_layer['diameter'] layer.speed = parent_layer['speed'] layer.start_radius = parent_layer['start_radius'] layer.axis3_retract = parent_layer['retract'] layer.axis3_safe_margin = parent_layer['safe_margin'] # hash_shapes = dict((self.get_hash(shape), shape) for shape in layer.shapes) # dict comprehensions are supported since Py2.7 # hash_shapes = {self.get_hash(shape): shape for shape in layer.shapes} hash_shapes = dict() for shape in layer.shapes: shape_hash = self.get_hash(shape, version) if shape_hash in hash_shapes: hash_shapes[shape_hash].insert(0, shape) else: hash_shapes[shape_hash] = [shape] shapes = [] for parent_shape in parent_layer['shapes']: if 'gcode' in parent_shape: shape = CustomGCode(parent_shape['name'], self.parent.newNumber, parent_shape['gcode'], layer) self.parent.newNumber += 1 shape.disabled = parent_shape['disabled'] shapes.append(shape) elif parent_shape['hash_'] in hash_shapes: shape_list = hash_shapes[parent_shape['hash_']] shape = shape_list.pop() if len(shape_list) == 0: del hash_shapes[parent_shape['hash_']] shape.cut_cor = parent_shape['cut_cor'] shape.send_to_TSP = parent_shape['send_to_TSP'] shape.disabled = parent_shape['disabled'] shape.axis3_start_mill_depth = parent_shape[ 'start_mill_depth'] shape.axis3_slice_depth = parent_shape['slice_depth'] shape.axis3_mill_depth = parent_shape['mill_depth'] shape.f_g1_plane = parent_shape['f_g1_plane'] shape.f_g1_depth = parent_shape['f_g1_depth'] if parent_shape['cw'] != shape.cw: shape.reverse() shape.setNearestStPoint( Point(parent_shape['start_x'], parent_shape['start_y'])) shapes.append(shape) new_shapes = set(layer.shapes) - set(shapes) shapes.extend(new_shapes) # add "new" shapes to the end layer.shapes = Shapes(shapes) # overwrite original if len(new_shapes) > 0: logger.info( self.tr( "New/Unrecognized shapes added for layer:%s; %s") % (layer.name, [shape.nr for shape in new_shapes])) layers.append(layer) layers.extend(set(self.parent.layerContents) - set(layers)) # add "new" layers to the end self.parent.layerContents = Layers(layers) # overwrite original self.parent.plot()