| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | from PySide.QtCore import QT_TRANSLATE_NOOP |
| | import FreeCAD |
| | import Path |
| | import Path.Base.Gui.Util as PathGuiUtil |
| | import Path.Op.Gui.Base as PathOpGui |
| | import Path.Op.MillFacing as PathMillFacing |
| | import FreeCADGui |
| |
|
| | __title__ = "CAM Mill Facing Operation UI" |
| | __author__ = "sliptonic (Brad Collette)" |
| | __url__ = "https://www.freecad.org" |
| | __doc__ = "Mill Facing operation page controller and command implementation." |
| |
|
| | if False: |
| | Path.Log.setLevel(Path.Log.Level.DEBUG, Path.Log.thisModule()) |
| | Path.Log.trackModule(Path.Log.thisModule()) |
| | else: |
| | Path.Log.setLevel(Path.Log.Level.INFO, Path.Log.thisModule()) |
| |
|
| |
|
| | class TaskPanelOpPage(PathOpGui.TaskPanelPage): |
| | """Page controller class for the mill facing operation.""" |
| |
|
| | def initPage(self, obj): |
| | """initPage(obj) ... Initialize page with QuantitySpinBox wrappers for expression support""" |
| | self.axialStockToLeaveSpinBox = PathGuiUtil.QuantitySpinBox( |
| | self.form.axialStockToLeave, obj, "AxialStockToLeave" |
| | ) |
| | if hasattr(obj, "PassExtension"): |
| | self.passExtensionSpinBox = PathGuiUtil.QuantitySpinBox( |
| | self.form.passExtension, obj, "PassExtension" |
| | ) |
| | if hasattr(obj, "StockExtension"): |
| | self.stockExtensionSpinBox = PathGuiUtil.QuantitySpinBox( |
| | self.form.stockExtension, obj, "StockExtension" |
| | ) |
| |
|
| | def getForm(self): |
| | Path.Log.track() |
| | """getForm() ... return UI""" |
| |
|
| | form = FreeCADGui.PySideUic.loadUi(":/panels/PageOpMillFacingEdit.ui") |
| | comboToPropertyMap = [ |
| | ("cutMode", "CutMode"), |
| | ("clearingPattern", "ClearingPattern"), |
| | ] |
| |
|
| | enumTups = PathMillFacing.ObjectMillFacing.propertyEnumerations(dataType="raw") |
| | PathGuiUtil.populateCombobox(form, enumTups, comboToPropertyMap) |
| | return form |
| |
|
| | def getFields(self, obj): |
| | """getFields(obj) ... transfers values from UI to obj's properties""" |
| | self.updateToolController(obj, self.form.toolController) |
| | self.updateCoolant(obj, self.form.coolantController) |
| |
|
| | if obj.CutMode != str(self.form.cutMode.currentData()): |
| | obj.CutMode = str(self.form.cutMode.currentData()) |
| |
|
| | if obj.ClearingPattern != str(self.form.clearingPattern.currentData()): |
| | obj.ClearingPattern = str(self.form.clearingPattern.currentData()) |
| |
|
| | |
| | if hasattr(obj, "Reverse") and obj.Reverse != self.form.reverse.isChecked(): |
| | obj.Reverse = self.form.reverse.isChecked() |
| |
|
| | |
| | if getattr(obj.Angle, "Value", obj.Angle) != self.form.angle.value(): |
| | obj.Angle = self.form.angle.value() |
| |
|
| | |
| | step_over_val = int(self.form.stepOver.value()) |
| | if obj.StepOver != step_over_val: |
| | obj.StepOver = step_over_val |
| |
|
| | |
| | self.axialStockToLeaveSpinBox.updateProperty() |
| | if hasattr(obj, "PassExtension"): |
| | self.passExtensionSpinBox.updateProperty() |
| | if hasattr(obj, "StockExtension"): |
| | self.stockExtensionSpinBox.updateProperty() |
| |
|
| | def setFields(self, obj): |
| | """setFields(obj) ... transfers obj's property values to UI""" |
| | self.setupToolController(obj, self.form.toolController) |
| | self.setupCoolant(obj, self.form.coolantController) |
| |
|
| | |
| | self.selectInComboBox(obj.CutMode, self.form.cutMode) |
| | self.selectInComboBox(obj.ClearingPattern, self.form.clearingPattern) |
| |
|
| | |
| | if hasattr(obj, "Reverse"): |
| | self.form.reverse.setChecked(bool(obj.Reverse)) |
| | else: |
| | self.form.reverse.setChecked(False) |
| |
|
| | |
| | self.form.angle.setValue(getattr(obj.Angle, "Value", obj.Angle)) |
| | self.form.stepOver.setValue(obj.StepOver) |
| |
|
| | |
| | self.updateQuantitySpinBoxes() |
| |
|
| | def updateQuantitySpinBoxes(self, index=None): |
| | """updateQuantitySpinBoxes() ... refresh QuantitySpinBox displays from properties""" |
| | self.axialStockToLeaveSpinBox.updateWidget() |
| | if hasattr(self, "passExtensionSpinBox"): |
| | self.passExtensionSpinBox.updateWidget() |
| | if hasattr(self, "stockExtensionSpinBox"): |
| | self.stockExtensionSpinBox.updateWidget() |
| |
|
| | def getSignalsForUpdate(self, obj): |
| | """getSignalsForUpdate(obj) ... return list of signals for updating obj""" |
| | signals = [] |
| | signals.append(self.form.toolController.currentIndexChanged) |
| | signals.append(self.form.coolantController.currentIndexChanged) |
| | signals.append(self.form.cutMode.currentIndexChanged) |
| | signals.append(self.form.clearingPattern.currentIndexChanged) |
| | signals.append(self.form.axialStockToLeave.editingFinished) |
| | if hasattr(self.form, "passExtension"): |
| | signals.append(self.form.passExtension.editingFinished) |
| | if hasattr(self.form, "stockExtension"): |
| | signals.append(self.form.stockExtension.editingFinished) |
| | |
| | if hasattr(self.form.reverse, "checkStateChanged"): |
| | signals.append(self.form.reverse.checkStateChanged) |
| | else: |
| | signals.append(self.form.reverse.stateChanged) |
| | signals.append(self.form.angle.editingFinished) |
| | signals.append(self.form.stepOver.editingFinished) |
| |
|
| | return signals |
| |
|
| |
|
| | Command = PathOpGui.SetupOperation( |
| | "MillFacing", |
| | PathMillFacing.Create, |
| | TaskPanelOpPage, |
| | "CAM_Face", |
| | QT_TRANSLATE_NOOP("CAM_MillFacing", "Mill Facing"), |
| | QT_TRANSLATE_NOOP( |
| | "CAM_MillFacing", "Create a Mill Facing Operation to machine the top surface of stock" |
| | ), |
| | PathMillFacing.SetupProperties, |
| | ) |
| |
|
| | FreeCAD.Console.PrintLog("Loading PathMillFacingGui... done\n") |
| |
|