Beispiel #1
0
    def Activated(self):
        """Execute when the command is called."""
        # Reset variables
        self.view = Draft.get3DView()
        self.wpButton = FreeCADGui.draftToolBar.wplabel
        FreeCAD.DraftWorkingPlane.setup()

        # Write current WP if states are empty
        if not self.states:
            p = FreeCAD.DraftWorkingPlane
            self.states.append([p.u, p.v, p.axis, p.position])

        m = translate("draft", "Pick a face, 3 vertices "
                      "or a WP Proxy to define the drawing plane")
        _msg(m)

        # Create task panel
        FreeCADGui.Control.closeDialog()
        self.taskd = task_selectplane.SelectPlaneTaskPanel()

        # Fill values
        self.taskd.form.checkCenter.setChecked(self.param.GetBool("CenterPlaneOnView", False))
        q = FreeCAD.Units.Quantity(self.param.GetFloat("gridSpacing", 1.0), FreeCAD.Units.Length)
        self.taskd.form.fieldGridSpacing.setText(q.UserString)
        self.taskd.form.fieldGridMainLine.setValue(self.param.GetInt("gridEvery", 10))
        self.taskd.form.fieldGridExtension.setValue(self.param.GetInt("gridSize", 100))
        self.taskd.form.fieldSnapRadius.setValue(self.param.GetInt("snapRange", 8))

        # Set icons
        self.taskd.form.setWindowIcon(QtGui.QIcon(":/icons/Draft_SelectPlane.svg"))
        self.taskd.form.buttonTop.setIcon(QtGui.QIcon(":/icons/view-top.svg"))
        self.taskd.form.buttonFront.setIcon(QtGui.QIcon(":/icons/view-front.svg"))
        self.taskd.form.buttonSide.setIcon(QtGui.QIcon(":/icons/view-right.svg"))
        self.taskd.form.buttonAlign.setIcon(QtGui.QIcon(":/icons/view-isometric.svg"))
        self.taskd.form.buttonAuto.setIcon(QtGui.QIcon(":/icons/view-axonometric.svg"))
        self.taskd.form.buttonMove.setIcon(QtGui.QIcon(":/icons/Draft_Move.svg"))
        self.taskd.form.buttonCenter.setIcon(QtGui.QIcon(":/icons/view-fullscreen.svg"))
        self.taskd.form.buttonPrevious.setIcon(QtGui.QIcon(":/icons/edit-undo.svg"))

        # Connect slots
        self.taskd.form.buttonTop.clicked.connect(self.onClickTop)
        self.taskd.form.buttonFront.clicked.connect(self.onClickFront)
        self.taskd.form.buttonSide.clicked.connect(self.onClickSide)
        self.taskd.form.buttonAlign.clicked.connect(self.onClickAlign)
        self.taskd.form.buttonAuto.clicked.connect(self.onClickAuto)
        self.taskd.form.buttonMove.clicked.connect(self.onClickMove)
        self.taskd.form.buttonCenter.clicked.connect(self.onClickCenter)
        self.taskd.form.buttonPrevious.clicked.connect(self.onClickPrevious)
        self.taskd.form.fieldGridSpacing.textEdited.connect(self.onSetGridSize)
        self.taskd.form.fieldGridMainLine.valueChanged.connect(self.onSetMainline)
        self.taskd.form.fieldGridExtension.valueChanged.connect(self.onSetExtension)
        self.taskd.form.fieldSnapRadius.valueChanged.connect(self.onSetSnapRadius)

        # Try to find a WP from the current selection
        if self.handle():
            return

        # Try another method
        if FreeCAD.DraftWorkingPlane.alignToSelection():
            FreeCADGui.Selection.clearSelection()
            self.display(FreeCAD.DraftWorkingPlane.axis)
            self.finish()
            return

        # Execute the actual task panel
        FreeCADGui.Control.showDialog(self.taskd)
        self.call = self.view.addEventCallback("SoEvent", self.action)
    def Activated(self):
        """Execute when the command is called."""
        # finish active Draft command if any
        if FreeCAD.activeDraftCommand is not None:
            FreeCAD.activeDraftCommand.finish()

        # Reset variables
        self.view = Draft.get3DView()
        self.wpButton = FreeCADGui.draftToolBar.wplabel
        FreeCAD.DraftWorkingPlane.setup()

        # Write current WP if states are empty
        if not self.states:
            p = FreeCAD.DraftWorkingPlane
            self.states.append([p.u, p.v, p.axis, p.position])

        # Create task panel
        FreeCADGui.Control.closeDialog()
        self.taskd = task_selectplane.SelectPlaneTaskPanel()
        self.taskd.reject = self.reject

        # Fill values
        self.taskd.form.checkCenter.setChecked(
            self.param.GetBool("CenterPlaneOnView", False))
        try:
            q = FreeCAD.Units.Quantity(
                self.param.GetString("gridSpacing", "1 mm"))
        except ValueError:
            q = FreeCAD.Units.Quantity("1 mm")
        self.taskd.form.fieldGridSpacing.setText(q.UserString)
        self.taskd.form.fieldGridMainLine.setValue(
            self.param.GetInt("gridEvery", 10))
        self.taskd.form.fieldGridExtension.setValue(
            self.param.GetInt("gridSize", 100))
        self.taskd.form.fieldSnapRadius.setValue(
            self.param.GetInt("snapRange", 8))

        # Set icons
        self.taskd.form.setWindowIcon(
            QtGui.QIcon(":/icons/Draft_SelectPlane.svg"))
        self.taskd.form.buttonTop.setIcon(QtGui.QIcon(":/icons/view-top.svg"))
        self.taskd.form.buttonFront.setIcon(
            QtGui.QIcon(":/icons/view-front.svg"))
        self.taskd.form.buttonSide.setIcon(
            QtGui.QIcon(":/icons/view-right.svg"))
        self.taskd.form.buttonAlign.setIcon(
            QtGui.QIcon(":/icons/view-isometric.svg"))
        self.taskd.form.buttonAuto.setIcon(
            QtGui.QIcon(":/icons/view-axonometric.svg"))
        self.taskd.form.buttonMove.setIcon(
            QtGui.QIcon(":/icons/Draft_Move.svg"))
        self.taskd.form.buttonCenter.setIcon(
            QtGui.QIcon(":/icons/view-fullscreen.svg"))
        self.taskd.form.buttonPrevious.setIcon(
            QtGui.QIcon(":/icons/edit-undo.svg"))

        # Connect slots
        self.taskd.form.buttonTop.clicked.connect(self.onClickTop)
        self.taskd.form.buttonFront.clicked.connect(self.onClickFront)
        self.taskd.form.buttonSide.clicked.connect(self.onClickSide)
        self.taskd.form.buttonAlign.clicked.connect(self.onClickAlign)
        self.taskd.form.buttonAuto.clicked.connect(self.onClickAuto)
        self.taskd.form.buttonMove.clicked.connect(self.onClickMove)
        self.taskd.form.buttonCenter.clicked.connect(self.onClickCenter)
        self.taskd.form.buttonPrevious.clicked.connect(self.onClickPrevious)
        self.taskd.form.fieldGridSpacing.textEdited.connect(self.onSetGridSize)
        self.taskd.form.fieldGridMainLine.valueChanged.connect(
            self.onSetMainline)
        self.taskd.form.fieldGridExtension.valueChanged.connect(
            self.onSetExtension)
        self.taskd.form.fieldSnapRadius.valueChanged.connect(
            self.onSetSnapRadius)

        # save previous WP to ensure back to the last used when restored
        FreeCAD.DraftWorkingPlane.save()

        # Try to find a WP from the current selection
        if FreeCADGui.Selection.getSelectionEx(FreeCAD.ActiveDocument.Name):
            if self.handle():
                pass
            # Try another method
            elif FreeCAD.DraftWorkingPlane.alignToSelection():
                FreeCADGui.Selection.clearSelection()
                self.display(FreeCAD.DraftWorkingPlane.axis)
            return None

        # Execute the actual task panel delayed to catch possible active Draft command
        todo.delay(FreeCADGui.Control.showDialog, self.taskd)
        _msg(
            translate(
                "draft",
                "Pick a face, 3 vertices or a WP Proxy to define the drawing plane"
            ))
        self.call = self.view.addEventCallback("SoEvent", self.action)