def event(self, event): super().event(event) if event.type == Event.MousePressEvent and self._controller.getToolsEnabled(): # Initialise a mirror operation if MouseEvent.LeftButton not in event.buttons: return False id = self._selection_pass.getIdAtPosition(event.x, event.y) if not id: return False if ToolHandle.isAxis(id): self.setLockedAxis(id) self._operation_started = True self.operationStarted.emit(self) return True if event.type == Event.MouseReleaseEvent: if self._operation_started: self._operation_started = False self.operationStopped.emit(self) # Perform a mirror operation if self.getLockedAxis(): op = None if Selection.getCount() == 1: node = Selection.getSelectedObject(0) if self.getLockedAxis() == ToolHandle.XAxis: mirror = Vector(-1, 1, 1) elif self.getLockedAxis() == ToolHandle.YAxis: mirror = Vector(1, -1, 1) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror = Vector(1, 1, -1) else: mirror = Vector(1, 1, 1) op = MirrorOperation(node, mirror, mirror_around_center = True) else: op = GroupedOperation() for node in Selection.getAllSelectedObjects(): if self.getLockedAxis() == ToolHandle.XAxis: mirror = Vector(-1, 1, 1) elif self.getLockedAxis() == ToolHandle.YAxis: mirror = Vector(1, -1, 1) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror = Vector(1, 1, -1) else: mirror = Vector(1, 1, 1) op.addOperation(MirrorOperation(node, mirror, mirror_around_center = True)) op.push() self.setLockedAxis(None) return True return False
def update(self): if type(self.getParent()) == DuplicatedNode: self.setTransformation(self.node.getLocalTransformation()) return print_mode = Application.getInstance().getGlobalContainerStack( ).getProperty("print_mode", "value") machine_width = Application.getInstance().getGlobalContainerStack( ).getProperty("machine_width", "value") self.setScale(self.node.getScale()) node_pos = self.node.getPosition() self.setTransformation(self.node.getLocalTransformation()) if print_mode == "mirror": MirrorOperation(self, Vector(-1, 1, 1)).redo() self.setPosition(Vector(-node_pos.x, node_pos.y, node_pos.z)) elif print_mode == "duplication": self.setPosition( Vector(node_pos.x + (machine_width / 2), node_pos.y, node_pos.z)) if node_pos.x > 0: self.node.setPosition(Vector(0, node_pos.y, node_pos.z)) elif node_pos.x < -machine_width / 2: self.node.setPosition( Vector(-machine_width / 2, node_pos.y, node_pos.z))
def event(self, event): super().event(event) if event.type == Event.MousePressEvent and self._controller.getToolsEnabled(): # Initialise a mirror operation if MouseEvent.LeftButton not in event.buttons: return False id = self._selection_pass.getIdAtPosition(event.x, event.y) if not id: return False if self._handle.isAxis(id): self.setLockedAxis(id) self._operation_started = True self.operationStarted.emit(self) return True if event.type == Event.MouseReleaseEvent: if self._operation_started: self._operation_started = False self.operationStopped.emit(self) # Perform a mirror operation if self.getLockedAxis() != ToolHandle.NoAxis: if Selection.getCount() == 1: node = Selection.getSelectedObject(0) if self.getLockedAxis() == ToolHandle.XAxis: mirror = Vector(-1, 1, 1) elif self.getLockedAxis() == ToolHandle.YAxis: mirror = Vector(1, -1, 1) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror = Vector(1, 1, -1) else: mirror = Vector(1, 1, 1) op = MirrorOperation(node, mirror, mirror_around_center = True) else: op = GroupedOperation() for node in self._getSelectedObjectsWithoutSelectedAncestors(): if self.getLockedAxis() == ToolHandle.XAxis: mirror = Vector(-1, 1, 1) elif self.getLockedAxis() == ToolHandle.YAxis: mirror = Vector(1, -1, 1) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror = Vector(1, 1, -1) else: mirror = Vector(1, 1, 1) op.addOperation(MirrorOperation(node, mirror, mirror_around_center = True)) op.push() self.setLockedAxis(ToolHandle.NoAxis) return True return False
def event(self, event): super().event(event) if event.type == Event.MousePressEvent: if MouseEvent.LeftButton not in event.buttons: return False id = self._selection_pass.getIdAtPosition(event.x, event.y) if not id: return False if ToolHandle.isAxis(id): self.setLockedAxis(id) return True if event.type == Event.MouseReleaseEvent: if self.getLockedAxis(): op = None if Selection.getCount() == 1: node = Selection.getSelectedObject(0) mirror = node.getMirror() if self.getLockedAxis() == ToolHandle.XAxis: mirror.setX(-mirror.x) elif self.getLockedAxis() == ToolHandle.YAxis: mirror.setY(-mirror.y) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror.setZ(-mirror.z) op = MirrorOperation(node, mirror, set_mirror=True) else: op = GroupedOperation() for node in Selection.getAllSelectedObjects(): mirror = node.getMirror() if self.getLockedAxis() == ToolHandle.XAxis: mirror.setX(-mirror.x) elif self.getLockedAxis() == ToolHandle.YAxis: mirror.setY(-mirror.y) elif self.getLockedAxis() == ToolHandle.ZAxis: mirror.setZ(-mirror.z) op.addOperation(MirrorOperation(node, mirror, set_mirror = True)) op.push() self.setLockedAxis(None) return True return False