GUI panel for chipbreaking

This commit is contained in:
sliptonic
2022-07-01 16:51:55 -05:00
parent 0352ddca13
commit b3924df2b7
3 changed files with 135 additions and 90 deletions

View File

@@ -61,101 +61,106 @@
</widget>
</item>
<item row="1" column="0">
<widget class="QWidget" name="widget">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1" colspan="2">
<widget class="QCheckBox" name="peckEnabled">
<layout class="QGridLayout" name="gridLayout">
<item row="1" column="1" colspan="2">
<widget class="QCheckBox" name="peckEnabled">
<property name="text">
<string>Peck</string>
</property>
</widget>
</item>
<item row="7" column="4">
<widget class="QLabel" name="dwellTimelabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Time</string>
</property>
</widget>
</item>
<item row="8" column="4">
<widget class="QLabel" name="Offsetlabel">
<property name="text">
<string>Extend Depth</string>
</property>
</widget>
</item>
<item row="1" column="6">
<widget class="Gui::QuantitySpinBox" name="peckDepth">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="8" column="6">
<widget class="QComboBox" name="ExtraOffset">
<item>
<property name="text">
<string>Peck</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="peckDepthLabel">
<property name="enabled">
<bool>false</bool>
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>Depth</string>
</property>
</widget>
</item>
<item row="1" column="6">
<widget class="Gui::QuantitySpinBox" name="peckDepth">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="retractLabel">
<property name="enabled">
<bool>false</bool>
<string>Drill Tip</string>
</property>
</item>
<item>
<property name="text">
<string>Retract</string>
<string>2x Drill Tip</string>
</property>
</widget>
</item>
<item row="3" column="6">
<widget class="Gui::QuantitySpinBox" name="peckRetractHeight">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="5" column="1" rowspan="2" colspan="2">
<widget class="QCheckBox" name="dwellEnabled">
<property name="text">
<string>Dwell</string>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="QLabel" name="dwellTimelabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Time</string>
</property>
</widget>
</item>
<item row="6" column="6">
<widget class="Gui::QuantitySpinBox" name="dwellTime">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="7" column="4">
<widget class="QLabel" name="Offsetlabel">
<property name="text">
<string>Extend Depth</string>
</property>
</widget>
</item>
</item>
</widget>
</item>
<item row="7" column="6">
<widget class="QComboBox" name="ExtraOffset">
<item>
<property name="text">
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>Drill Tip</string>
</property>
</item>
<item>
<property name="text">
<string>2x Drill Tip</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
<widget class="Gui::QuantitySpinBox" name="dwellTime">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="6" column="1" rowspan="2" colspan="2">
<widget class="QCheckBox" name="dwellEnabled">
<property name="text">
<string>Dwell</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="peckDepthLabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Depth</string>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QLabel" name="retractLabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Retract</string>
</property>
</widget>
</item>
<item row="4" column="6">
<widget class="Gui::QuantitySpinBox" name="peckRetractHeight">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="chipBreakEnabled">
<property name="text">
<string>Chip Break</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="2" column="0">
<spacer name="verticalSpacer">
@@ -175,7 +180,7 @@
<customwidgets>
<customwidget>
<class>Gui::QuantitySpinBox</class>
<extends>QDoubleSpinBox</extends>
<extends>QWidget</extends>
<header>Gui/QuantitySpinBox.h</header>
</customwidget>
</customwidgets>

View File

@@ -98,6 +98,15 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp):
PathOp.FeatureBaseGeometry | PathOp.FeatureLocations | PathOp.FeatureCoolant
)
def onDocumentRestored(self, obj):
if not hasattr(obj, "chipBreakEnabled"):
obj.addProperty(
"App::PropertyBool",
"chipBreakEnabled",
"Drill",
QT_TRANSLATE_NOOP("App::Property", "Use chipbreaking"),
)
def initCircularHoleOperation(self, obj):
"""initCircularHoleOperation(obj) ... add drilling specific properties to obj."""
obj.addProperty(
@@ -115,6 +124,12 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp):
"Drill",
QT_TRANSLATE_NOOP("App::Property", "Enable pecking"),
)
obj.addProperty(
"App::PropertyBool",
"chipBreakEnabled",
"Drill",
QT_TRANSLATE_NOOP("App::Property", "Use chipbreaking"),
)
obj.addProperty(
"App::PropertyFloat",
"DwellTime",
@@ -231,10 +246,16 @@ class ObjectDrilling(PathCircularHoleBase.ObjectOp):
dwelltime = obj.DwellTime if obj.DwellEnabled else 0.0
peckdepth = obj.PeckDepth.Value if obj.PeckEnabled else 0.0
repeat = 1 # technical debt: Add a repeat property for user control
chipBreak = (obj.chipBreakEnabled and obj.PeckEnabled)
try:
drillcommands = generator.generate(
edge, dwelltime, peckdepth, repeat, obj.RetractHeight.Value
edge,
dwelltime,
peckdepth,
repeat,
obj.RetractHeight.Value,
chipBreak=chipBreak
)
except ValueError as e: # any targets that fail the generator are ignored

View File

@@ -57,14 +57,17 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
self.dwellTimeSpinBox = PathGui.QuantitySpinBox(
self.form.dwellTime, obj, "DwellTime"
)
self.form.chipBreakEnabled.setEnabled(False)
def registerSignalHandlers(self, obj):
self.form.peckEnabled.toggled.connect(self.form.peckDepth.setEnabled)
self.form.peckEnabled.toggled.connect(self.form.dwellEnabled.setDisabled)
self.form.peckEnabled.toggled.connect(self.setChipBreakControl)
self.form.dwellEnabled.toggled.connect(self.form.dwellTime.setEnabled)
self.form.dwellEnabled.toggled.connect(self.form.dwellTimelabel.setEnabled)
self.form.dwellEnabled.toggled.connect(self.form.peckEnabled.setDisabled)
self.form.dwellEnabled.toggled.connect(self.setChipBreakControl)
self.form.peckRetractHeight.setEnabled(True)
self.form.retractLabel.setEnabled(True)
@@ -73,10 +76,17 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
self.form.dwellEnabled.setEnabled(False)
self.form.peckDepth.setEnabled(True)
self.form.peckDepthLabel.setEnabled(True)
self.form.chipBreakEnabled.setEnabled(True)
elif self.form.dwellEnabled.isChecked():
self.form.peckEnabled.setEnabled(False)
self.form.dwellTime.setEnabled(True)
self.form.dwellTimelabel.setEnabled(True)
self.form.chipBreakEnabled.setEnabled(False)
else:
self.form.chipBreakEnabled.setEnabled(False)
def setChipBreakControl(self):
self.form.chipBreakEnabled.setEnabled(self.form.peckEnabled.isChecked())
def getForm(self):
"""getForm() ... return UI"""
@@ -104,6 +114,8 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
obj.DwellEnabled = self.form.dwellEnabled.isChecked()
if obj.PeckEnabled != self.form.peckEnabled.isChecked():
obj.PeckEnabled = self.form.peckEnabled.isChecked()
if obj.chipBreakEnabled != self.form.chipBreakEnabled.isChecked():
obj.chipBreakEnabled = self.form.chipBreakEnabled.isChecked()
if obj.ExtraOffset != str(self.form.ExtraOffset.currentData()):
obj.ExtraOffset = str(self.form.ExtraOffset.currentData())
@@ -124,6 +136,12 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
self.form.peckEnabled.setCheckState(QtCore.Qt.Checked)
else:
self.form.peckEnabled.setCheckState(QtCore.Qt.Unchecked)
self.form.chipBreakEnabled.setEnabled(False)
if obj.chipBreakEnabled:
self.form.chipBreakEnabled.setCheckState(QtCore.Qt.Checked)
else:
self.form.chipBreakEnabled.setCheckState(QtCore.Qt.Unchecked)
self.selectInComboBox(obj.ExtraOffset, self.form.ExtraOffset)
@@ -139,6 +157,7 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
signals.append(self.form.dwellTime.editingFinished)
signals.append(self.form.dwellEnabled.stateChanged)
signals.append(self.form.peckEnabled.stateChanged)
signals.append(self.form.chipBreakEnabled.stateChanged)
signals.append(self.form.toolController.currentIndexChanged)
signals.append(self.form.coolantController.currentIndexChanged)
signals.append(self.form.ExtraOffset.currentIndexChanged)