Merge pull request #8145 from sliptonic/bug/7600

[Path] use correct widgets in task panel Fix #7600
This commit is contained in:
sliptonic
2023-01-09 10:28:50 -06:00
committed by GitHub
2 changed files with 173 additions and 104 deletions

View File

@@ -49,24 +49,24 @@
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label">
<item row="25" column="0">
<widget class="QCheckBox" name="useOutline">
<property name="text">
<string>Cut Region</string>
<string>Use Outline</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="Side">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Cut inside or outside of the selected shapes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<item row="18" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Keep Tool Down Ratio</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<item row="14" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Operation Type</string>
<string>Helix Max Diameter</string>
</property>
</widget>
</item>
@@ -77,6 +77,13 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Cut Region</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
@@ -84,20 +91,49 @@
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QSpinBox" name="StepOver">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Optimal value for tool stepover&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100</number>
<item row="23" column="0">
<widget class="QCheckBox" name="ForceInsideOut">
<property name="text">
<string>Force Clearing Inside-out</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<item row="16" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Lift Distance</string>
</property>
</widget>
</item>
<item row="20" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Stock to Leave</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Operation Type</string>
</property>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Helix Ramp Angle</string>
</property>
</widget>
</item>
<item row="24" column="0">
<widget class="QCheckBox" name="FinishingProfile">
<property name="text">
<string>Finishing Profile</string>
</property>
</widget>
</item>
<item row="9" column="0" colspan="2">
<widget class="QFrame" name="frame_3">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
@@ -141,17 +177,10 @@
</layout>
</widget>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Helix Ramp Angle</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QDoubleSpinBox" name="HelixAngle">
<item row="0" column="1">
<widget class="QComboBox" name="Side">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Angle of the helix ramp entry&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Cut inside or outside of the selected shapes&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@@ -162,91 +191,86 @@
</property>
</widget>
</item>
<item row="12" column="1">
<widget class="QDoubleSpinBox" name="HelixConeAngle">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Angle of the helix entry cone&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="14" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Helix Max Diameter</string>
</property>
</widget>
</item>
<item row="14" column="1">
<widget class="QDoubleSpinBox" name="HelixDiameterLimit">
<widget class="Gui::QuantitySpinBox" name="HelixDiameterLimit">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;If &amp;gt;0 it limits the helix ramp diameter&lt;/p&gt;&lt;p&gt;otherwise the 75 percent of tool diameter is used&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="15" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Lift Distance</string>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="15" column="1">
<widget class="QDoubleSpinBox" name="LiftDistance">
<item row="16" column="1">
<widget class="Gui::QuantitySpinBox" name="LiftDistance">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How much to lift the tool up during the rapid linking moves over cleared regions.&lt;/p&gt;&lt;p&gt;If linking path is not clear tool is raised to clearence height.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="17" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Keep Tool Down Ratio</string>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="17" column="1">
<widget class="QDoubleSpinBox" name="KeepToolDownRatio">
<item row="18" column="1">
<widget class="Gui::QuantitySpinBox" name="KeepToolDownRatio">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Max length of keep-tool-down linking path compared to direct distance between points.&lt;/p&gt;&lt;p&gt;If exceeded link will be done by raising the tool to clearence height.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="19" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>Stock to Leave</string>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="19" column="1">
<widget class="QDoubleSpinBox" name="StockToLeave">
<item row="20" column="1">
<widget class="Gui::QuantitySpinBox" name="StockToLeave">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;How much material to leave (i.e. for finishing operation)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="22" column="0">
<widget class="QCheckBox" name="ForceInsideOut">
<property name="text">
<string>Force Clearing Inside-out</string>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
<item row="23" column="0">
<widget class="QCheckBox" name="FinishingProfile">
<property name="text">
<string>Finishing Profile</string>
<item row="4" column="1">
<widget class="QSpinBox" name="stepOverPercent">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter.&lt;/p&gt;&lt;p&gt;A step over of 100% results in no overlap between two different cycles.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item row="24" column="0">
<widget class="QCheckBox" name="useOutline">
<property name="text">
<string>Use Outline</string>
<item row="10" column="1">
<widget class="Gui::InputField" name="HelixAngle">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Angle of the helix ramp entry&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
<item row="12" column="1">
<widget class="Gui::InputField" name="HelixConeAngle">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Angle of the helix entry cone&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="unit" stdset="0">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
@@ -271,6 +295,18 @@
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Gui::InputField</class>
<extends>QLineEdit</extends>
<header>Gui/InputField.h</header>
</customwidget>
<customwidget>
<class>Gui::QuantitySpinBox</class>
<extends>QWidget</extends>
<header>Gui/QuantitySpinBox.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -22,11 +22,14 @@
# ***************************************************************************
import FreeCADGui
import FreeCAD
import Path.Op.Adaptive as PathAdaptive
import Path.Op.Gui.Base as PathOpGui
import Path.Op.Gui.FeatureExtension as PathFeatureExtensionsGui
from PySide import QtCore
import Path.Base.Gui.Util as PathGuiUtil
class TaskPanelOpPage(PathOpGui.TaskPanelPage):
def getForm(self):
@@ -40,14 +43,27 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
self.populateCombobox(form, enumTups, comboToPropertyMap)
return form
def initPage(self, obj):
self.form.LiftDistance.setProperty(
"unit", obj.LiftDistance.getUserPreferred()[2]
)
self.form.HelixDiameterLimit.setProperty(
"unit", obj.HelixDiameterLimit.getUserPreferred()[2]
)
self.form.KeepToolDownRatio.setProperty(
"unit", obj.KeepToolDownRatio.getUserPreferred()[2]
)
self.form.StockToLeave.setProperty(
"unit", obj.StockToLeave.getUserPreferred()[2]
)
def getSignalsForUpdate(self, obj):
"""getSignalsForUpdate(obj) ... return list of signals for updating obj"""
signals = []
# signals.append(self.form.button.clicked)
signals.append(self.form.Side.currentIndexChanged)
signals.append(self.form.OperationType.currentIndexChanged)
signals.append(self.form.ToolController.currentIndexChanged)
signals.append(self.form.StepOver.valueChanged)
signals.append(self.form.stepOverPercent.valueChanged)
signals.append(self.form.Tolerance.valueChanged)
signals.append(self.form.HelixAngle.valueChanged)
signals.append(self.form.HelixConeAngle.valueChanged)
@@ -56,8 +72,6 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
signals.append(self.form.KeepToolDownRatio.valueChanged)
signals.append(self.form.StockToLeave.valueChanged)
signals.append(self.form.coolantController.currentIndexChanged)
# signals.append(self.form.ProcessHoles.stateChanged)
signals.append(self.form.ForceInsideOut.stateChanged)
signals.append(self.form.FinishingProfile.stateChanged)
signals.append(self.form.useOutline.stateChanged)
@@ -67,19 +81,32 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
def setFields(self, obj):
self.selectInComboBox(obj.Side, self.form.Side)
self.selectInComboBox(obj.OperationType, self.form.OperationType)
self.form.StepOver.setValue(obj.StepOver)
self.form.stepOverPercent.setValue(obj.StepOver)
self.form.Tolerance.setValue(int(obj.Tolerance * 100))
self.form.HelixAngle.setValue(obj.HelixAngle)
self.form.HelixConeAngle.setValue(obj.HelixConeAngle)
self.form.HelixDiameterLimit.setValue(obj.HelixDiameterLimit)
self.form.LiftDistance.setValue(obj.LiftDistance)
self.form.HelixAngle.setText(
FreeCAD.Units.Quantity(obj.HelixAngle, FreeCAD.Units.Angle).UserString
)
self.form.HelixConeAngle.setText(
FreeCAD.Units.Quantity(obj.HelixConeAngle, FreeCAD.Units.Angle).UserString
)
self.form.HelixDiameterLimit.setProperty(
"rawValue", obj.HelixDiameterLimit.Value
)
self.form.LiftDistance.setProperty("rawValue", obj.LiftDistance.Value)
if hasattr(obj, "KeepToolDownRatio"):
self.form.KeepToolDownRatio.setValue(obj.KeepToolDownRatio)
self.form.KeepToolDownRatio.setProperty(
"rawValue", obj.KeepToolDownRatio.Value
)
# self.form.KeepToolDownRatio.setValue(obj.KeepToolDownRatio)
if hasattr(obj, "StockToLeave"):
self.form.StockToLeave.setValue(obj.StockToLeave)
self.form.StockToLeave.setProperty("rawValue", obj.StockToLeave.Value)
# self.form.ProcessHoles.setChecked(obj.ProcessHoles)
self.form.ForceInsideOut.setChecked(obj.ForceInsideOut)
self.form.FinishingProfile.setChecked(obj.FinishingProfile)
self.form.useOutline.setChecked(obj.UseOutline)
@@ -98,18 +125,24 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
if obj.OperationType != str(self.form.OperationType.currentData()):
obj.OperationType = str(self.form.OperationType.currentData())
obj.StepOver = self.form.StepOver.value()
if obj.StepOver != self.form.stepOverPercent.value():
obj.StepOver = self.form.stepOverPercent.value()
obj.Tolerance = 1.0 * self.form.Tolerance.value() / 100.0
obj.HelixAngle = self.form.HelixAngle.value()
obj.HelixConeAngle = self.form.HelixConeAngle.value()
obj.HelixDiameterLimit = self.form.HelixDiameterLimit.value()
obj.LiftDistance = self.form.LiftDistance.value()
PathGuiUtil.updateInputField(obj, "HelixAngle", self.form.HelixAngle)
PathGuiUtil.updateInputField(obj, "HelixConeAngle", self.form.HelixConeAngle)
PathGuiUtil.updateInputField(
obj, "HelixDiameterLimit", self.form.HelixDiameterLimit
)
PathGuiUtil.updateInputField(obj, "LiftDistance", self.form.LiftDistance)
if hasattr(obj, "KeepToolDownRatio"):
obj.KeepToolDownRatio = self.form.KeepToolDownRatio.value()
PathGuiUtil.updateInputField(
obj, "KeepToolDownRatio", self.form.KeepToolDownRatio
)
if hasattr(obj, "StockToLeave"):
obj.StockToLeave = self.form.StockToLeave.value()
PathGuiUtil.updateInputField(obj, "StockToLeave", self.form.StockToLeave)
obj.ForceInsideOut = self.form.ForceInsideOut.isChecked()
obj.FinishingProfile = self.form.FinishingProfile.isChecked()