[CAM] update/fix adaptive UI panel and parameter limits
This commit is contained in:
@@ -115,7 +115,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -149,7 +148,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -177,7 +175,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = True
|
||||
@@ -218,7 +215,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -261,7 +257,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -304,7 +299,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -347,7 +341,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
# setDepthsAndHeights(adaptive)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -408,7 +401,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
setDepthsAndHeights(adaptive, 15, 0)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -478,7 +470,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
setDepthsAndHeights(adaptive, 15, 10)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -540,7 +531,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
setDepthsAndHeights(adaptive, 15, 0)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
@@ -622,7 +612,6 @@ class TestPathAdaptive(PathTestBase):
|
||||
setDepthsAndHeights(adaptive, 15, 5)
|
||||
adaptive.FinishingProfile = False
|
||||
adaptive.HelixAngle = 75.0
|
||||
adaptive.HelixDiameterLimit.Value = 1.0
|
||||
adaptive.LiftDistance.Value = 1.0
|
||||
adaptive.StepOver = 75
|
||||
adaptive.UseOutline = False
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="threadFitLabel">
|
||||
<widget class="QLabel" name="accuracyPerformanceLabel">
|
||||
<property name="text">
|
||||
<string>Accuracy vs performance</string>
|
||||
</property>
|
||||
@@ -173,21 +173,113 @@ Larger values (further to the right) will calculate faster; smaller values (furt
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<widget class="Gui::InputField" name="HelixConeAngle">
|
||||
<property name="toolTip">
|
||||
<string>Angle of the helix entry cone</string>
|
||||
<item row="10" column="0" colspan="2">
|
||||
<widget class="QFrame" name="helixFrame">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::Shape::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="text">
|
||||
<string>Helix ramp angle</string>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Shadow::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="helixLayout">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_max_stepdown">
|
||||
<property name="text">
|
||||
<string>Helix max stepdown</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<widget class="Gui::InputField" name="HelixMaxStepdown">
|
||||
<property name="toolTip">
|
||||
<string>The maximum allowable descent in a single revolution of the helix.</string>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</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="10" column="1">
|
||||
<widget class="Gui::InputField" name="HelixAngle">
|
||||
<property name="toolTip">
|
||||
<string>Angle of the helix ramp entry</string>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Helix cone angle</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="1">
|
||||
<widget class="Gui::InputField" name="HelixConeAngle">
|
||||
<property name="toolTip">
|
||||
<string>Angle of the helix entry cone</string>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Helix ideal diameter</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="1">
|
||||
<widget class="QSpinBox" name="HelixIdealDiameterPercent">
|
||||
<property name="toolTip">
|
||||
<string>Ideal helix entry diameter, as a percentage of the tool diameter.</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="0">
|
||||
<widget class="QLabel" name="label_9">
|
||||
<property name="text">
|
||||
<string>Helix min diameter</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="15" column="1">
|
||||
<widget class="QSpinBox" name="HelixMinDiameterPercent">
|
||||
<property name="toolTip">
|
||||
<string>Minimum acceptable entry diameter, as a percentage of the tool diameter.</string>
|
||||
</property>
|
||||
<property name="minimum">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>100</number>
|
||||
</property>
|
||||
<property name="singleStep">
|
||||
<number>5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="25" column="0">
|
||||
@@ -221,33 +313,6 @@ Larger values (further to the right) will calculate faster; smaller values (furt
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="14" column="1">
|
||||
<widget class="Gui::QuantitySpinBox" name="HelixDiameterLimit" native="true">
|
||||
<property name="toolTip">
|
||||
<string>If greater than zero it limits the helix ramp diameter, otherwise 75 percent of tool diameter is used</string>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="12" column="0">
|
||||
<widget class="QLabel" name="label_8">
|
||||
<property name="text">
|
||||
<string>Helix cone angle</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<widget class="Gui::InputField" name="HelixAngle">
|
||||
<property name="toolTip">
|
||||
<string>Angle of the helix ramp entry</string>
|
||||
</property>
|
||||
<property name="unit" stdset="0">
|
||||
<string notr="true"/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="16" column="0">
|
||||
<widget class="QLabel" name="label_10">
|
||||
<property name="text">
|
||||
@@ -272,13 +337,6 @@ Larger values (further to the right) will calculate faster; smaller values (furt
|
||||
</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>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
||||
@@ -699,6 +699,12 @@ def ExecuteModelAware(op, obj):
|
||||
FreeCADGui.updateGui()
|
||||
|
||||
try:
|
||||
obj.HelixMinDiameterPercent = max(obj.HelixMinDiameterPercent, 10)
|
||||
obj.HelixIdealDiameterPercent = max(
|
||||
obj.HelixIdealDiameterPercent, obj.HelixMinDiameterPercent
|
||||
)
|
||||
obj.StepOver = max(obj.StepOver, 1)
|
||||
|
||||
helixDiameter = obj.HelixIdealDiameterPercent / 100 * op.tool.Diameter.Value
|
||||
helixMinDiameter = obj.HelixMinDiameterPercent / 100 * op.tool.Diameter.Value
|
||||
topZ = op.stock.Shape.BoundBox.ZMax
|
||||
|
||||
@@ -46,9 +46,6 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
|
||||
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])
|
||||
|
||||
@@ -62,7 +59,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
signals.append(self.form.Tolerance.valueChanged)
|
||||
signals.append(self.form.HelixAngle.valueChanged)
|
||||
signals.append(self.form.HelixConeAngle.valueChanged)
|
||||
signals.append(self.form.HelixDiameterLimit.valueChanged)
|
||||
signals.append(self.form.HelixIdealDiameterPercent.valueChanged)
|
||||
signals.append(self.form.HelixMinDiameterPercent.valueChanged)
|
||||
signals.append(self.form.LiftDistance.valueChanged)
|
||||
signals.append(self.form.KeepToolDownRatio.valueChanged)
|
||||
signals.append(self.form.StockToLeave.valueChanged)
|
||||
@@ -92,7 +90,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
FreeCAD.Units.Quantity(obj.HelixConeAngle, FreeCAD.Units.Angle).UserString
|
||||
)
|
||||
|
||||
self.form.HelixDiameterLimit.setProperty("rawValue", obj.HelixDiameterLimit.Value)
|
||||
self.form.HelixIdealDiameterPercent.setValue(obj.HelixIdealDiameterPercent)
|
||||
self.form.HelixMinDiameterPercent.setValue(obj.HelixMinDiameterPercent)
|
||||
|
||||
self.form.LiftDistance.setProperty("rawValue", obj.LiftDistance.Value)
|
||||
|
||||
@@ -124,10 +123,15 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
if obj.StepOver != self.form.stepOverPercent.value():
|
||||
obj.StepOver = self.form.stepOverPercent.value()
|
||||
|
||||
if obj.HelixIdealDiameterPercent != self.form.HelixIdealDiameterPercent.value():
|
||||
obj.HelixIdealDiameterPercent = self.form.HelixIdealDiameterPercent.value()
|
||||
|
||||
if obj.HelixMinDiameterPercent != self.form.HelixMinDiameterPercent.value():
|
||||
obj.HelixMinDiameterPercent = self.form.HelixMinDiameterPercent.value()
|
||||
|
||||
obj.Tolerance = 1.0 * self.form.Tolerance.value() / 100.0
|
||||
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"):
|
||||
|
||||
Reference in New Issue
Block a user