[CAM] add helix max stepdown parameter
This commit is contained in:
@@ -138,6 +138,9 @@ def GenerateGCode(op, obj, adaptiveResults):
|
||||
|
||||
helixAngleRad = math.radians(obj.HelixAngle)
|
||||
depthPerOneCircle = length * math.tan(helixAngleRad)
|
||||
if obj.HelixMaxStepdown.Value != 0 and obj.HelixMaxStepdown.Value < depthPerOneCircle:
|
||||
depthPerOneCircle = obj.HelixMaxStepdown.Value
|
||||
helixAngleRad = math.atan(depthPerOneCircle / length)
|
||||
|
||||
stepUp = max(obj.LiftDistance.Value, 0)
|
||||
|
||||
@@ -1810,6 +1813,15 @@ class PathAdaptive(PathOp.ObjectOp):
|
||||
"Helix ramp entry angle (degrees)",
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"HelixMaxStepdown",
|
||||
"Adaptive",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The maximum allowable descent in a single revolution of the helix.",
|
||||
),
|
||||
)
|
||||
obj.addProperty(
|
||||
"App::PropertyAngle",
|
||||
"HelixConeAngle",
|
||||
@@ -2011,6 +2023,17 @@ class PathAdaptive(PathOp.ObjectOp):
|
||||
75 if oldD == 0 else 100 * oldD / obj.ToolController.Tool.Diameter.Value
|
||||
)
|
||||
|
||||
if not hasattr(obj, "HelixMaxStepdown"):
|
||||
obj.addProperty(
|
||||
"App::PropertyLength",
|
||||
"HelixMaxStepdown",
|
||||
"Adaptive",
|
||||
QT_TRANSLATE_NOOP(
|
||||
"App::Property",
|
||||
"The maximum allowable descent in a single revolution of the helix.",
|
||||
),
|
||||
)
|
||||
|
||||
FeatureExtensions.initialize_properties(obj)
|
||||
|
||||
|
||||
|
||||
@@ -45,6 +45,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
return form
|
||||
|
||||
def initPage(self, obj):
|
||||
self.form.HelixMaxStepdown.setProperty("unit", obj.HelixMaxStepdown.getUserPreferred()[2])
|
||||
|
||||
self.form.LiftDistance.setProperty("unit", obj.LiftDistance.getUserPreferred()[2])
|
||||
self.form.KeepToolDownRatio.setProperty("unit", obj.KeepToolDownRatio.getUserPreferred()[2])
|
||||
self.form.StockToLeave.setProperty("unit", obj.StockToLeave.getUserPreferred()[2])
|
||||
@@ -58,6 +60,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
signals.append(self.form.stepOverPercent.valueChanged)
|
||||
signals.append(self.form.Tolerance.valueChanged)
|
||||
signals.append(self.form.HelixAngle.valueChanged)
|
||||
signals.append(self.form.HelixMaxStepdown.valueChanged)
|
||||
signals.append(self.form.HelixConeAngle.valueChanged)
|
||||
signals.append(self.form.HelixIdealDiameterPercent.valueChanged)
|
||||
signals.append(self.form.HelixMinDiameterPercent.valueChanged)
|
||||
@@ -86,6 +89,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
FreeCAD.Units.Quantity(obj.HelixAngle, FreeCAD.Units.Angle).UserString
|
||||
)
|
||||
|
||||
self.form.HelixMaxStepdown.setProperty("rawValue", obj.HelixMaxStepdown.Value)
|
||||
|
||||
self.form.HelixConeAngle.setText(
|
||||
FreeCAD.Units.Quantity(obj.HelixConeAngle, FreeCAD.Units.Angle).UserString
|
||||
)
|
||||
@@ -131,6 +136,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
|
||||
obj.Tolerance = 1.0 * self.form.Tolerance.value() / 100.0
|
||||
PathGuiUtil.updateInputField(obj, "HelixAngle", self.form.HelixAngle)
|
||||
PathGuiUtil.updateInputField(obj, "HelixMaxStepdown", self.form.HelixMaxStepdown)
|
||||
PathGuiUtil.updateInputField(obj, "HelixConeAngle", self.form.HelixConeAngle)
|
||||
PathGuiUtil.updateInputField(obj, "LiftDistance", self.form.LiftDistance)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user