Path: Adaptive - added stock to leave option

This commit is contained in:
kreso-t
2018-08-28 22:30:02 +02:00
committed by wmayer
parent 092b358df5
commit 0c13ef45ed
6 changed files with 32 additions and 7 deletions

View File

@@ -280,15 +280,15 @@ def Execute(op,obj):
path2d = convertTo2d(pathArray)
# put here all properties that influence calculation of adaptive base paths,
inputStateObject = {
"tool": op.tool.Diameter,
"tolerance": obj.Tolerance,
"tool": float(op.tool.Diameter),
"tolerance": float(obj.Tolerance),
"geometry" : path2d,
"stepover" :obj.StepOver,
"effectiveHelixDiameter": helixDiameter,
"stepover" : float(obj.StepOver),
"effectiveHelixDiameter": float(helixDiameter),
"operationType": obj.OperationType,
"side": obj.Side,
"processHoles": obj.ProcessHoles
"processHoles": obj.ProcessHoles,
"stockToLeave": float(obj.StockToLeave)
}
inputStateChanged=False
@@ -315,6 +315,7 @@ def Execute(op,obj):
a2d.stepOverFactor = 0.01*obj.StepOver
a2d.toolDiameter = op.tool.Diameter
a2d.helixRampDiameter = helixDiameter
a2d.stockToLeave = obj.StockToLeave
a2d.tolerance = obj.Tolerance
a2d.opType = opType
a2d.polyTreeNestingLimit = nestingLimit
@@ -366,6 +367,7 @@ class PathAdaptive(PathOp.ObjectOp):
obj.addProperty("App::PropertyFloat", "Tolerance", "Adaptive", "Influences accuracy and performance")
obj.addProperty("App::PropertyPercent", "StepOver", "Adaptive", "Percent of cutter diameter to step over on each pass")
obj.addProperty("App::PropertyDistance", "LiftDistance", "Adaptive", "Lift distance for rapid moves")
obj.addProperty("App::PropertyDistance", "StockToLeave", "Adaptive", "How much stock to leave (i.e. for finishing operation)")
obj.addProperty("App::PropertyBool", "ProcessHoles", "Adaptive","Process holes as well as the face outline")
obj.addProperty("App::PropertyBool", "Stopped",
"Adaptive", "Stop processing")
@@ -398,6 +400,7 @@ class PathAdaptive(PathOp.ObjectOp):
obj.HelixDiameterLimit = 0.0
obj.AdaptiveInputState =""
obj.AdaptiveOutputState = ""
obj.StockToLeave= 0
def opExecute(self, obj):
'''opExecute(obj) ... called whenever the receiver needs to be recalculated.

View File

@@ -71,7 +71,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
form.HelixDiameterLimit.setMaximum(90)
form.HelixDiameterLimit.setSingleStep(0.1)
form.HelixDiameterLimit.setValue(0)
form.HelixDiameterLimit.setToolTip("If non zero it limits the size helix diameter, otherwise the tool radius is taken as the helix diameter")
form.HelixDiameterLimit.setToolTip("If non zero it limits the size helix diameter, otherwise the tool diameter is taken")
formLayout.addRow(QtGui.QLabel("Helix Max Diameter"),form.HelixDiameterLimit)
#lift distance
@@ -83,6 +83,15 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
form.LiftDistance.setToolTip("How much to lift the tool up during the rapid repositioning moves (used when no obstacles)")
formLayout.addRow(QtGui.QLabel("Lift Distance"),form.LiftDistance)
#stock to leave
form.StockToLeave = QtGui.QDoubleSpinBox()
form.StockToLeave.setMinimum(0.0)
form.StockToLeave.setMaximum(1000)
form.StockToLeave.setSingleStep(0.1)
form.StockToLeave.setValue(0)
form.StockToLeave.setToolTip("How much material to leave (i.e. for finishing operation)")
formLayout.addRow(QtGui.QLabel("Stock to Leave"),form.StockToLeave)
#process holes
form.ProcessHoles = QtGui.QCheckBox()
form.ProcessHoles.setChecked(True)
@@ -110,6 +119,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
signals.append(self.form.HelixAngle.valueChanged)
signals.append(self.form.HelixDiameterLimit.valueChanged)
signals.append(self.form.LiftDistance.valueChanged)
signals.append(self.form.StockToLeave.valueChanged)
signals.append(self.form.ProcessHoles.stateChanged)
signals.append(self.form.StopButton.toggled)
@@ -123,6 +133,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
self.form.HelixAngle.setValue(obj.HelixAngle)
self.form.HelixDiameterLimit.setValue(obj.HelixDiameterLimit)
self.form.LiftDistance.setValue(obj.LiftDistance)
if hasattr(obj, 'StockToLeave'):
self.form.StockToLeave.setValue(obj.StockToLeave)
self.form.ProcessHoles.setChecked(obj.ProcessHoles)
self.setupToolController(obj, self.form.ToolController)
@@ -144,6 +156,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
obj.HelixAngle = self.form.HelixAngle.value()
obj.HelixDiameterLimit = self.form.HelixDiameterLimit.value()
obj.LiftDistance = self.form.LiftDistance.value()
if hasattr(obj, 'StockToLeave'):
obj.StockToLeave = self.form.StockToLeave.value()
obj.ProcessHoles = self.form.ProcessHoles.isChecked()
obj.Stopped = self.form.StopButton.isChecked()

View File

@@ -854,7 +854,12 @@ namespace AdaptivePath {
inputPaths.push_back(cpth);
}
SimplifyPolygons(inputPaths);
if(fabs(stockToLeave)>NTOL) {
clipof.Clear();
clipof.AddPaths(inputPaths,JoinType::jtRound,EndType::etClosedPolygon);
clipof.Execute(inputPaths,-stockToLeave*scaleFactor);
}
// *******************************
// Resolve hierarchy and run processing
// ********************************

View File

@@ -60,6 +60,7 @@ namespace AdaptivePath {
double stepOverFactor = 0.2;
int polyTreeNestingLimit=0;
double tolerance=0.1;
double stockToLeave=0;
OperationType opType = OperationType::otClearing;
std::list<AdaptiveOutput> Execute(const DPaths &paths, std::function<bool(TPaths)> progressCallbackFn);

View File

@@ -511,6 +511,7 @@ BOOST_PYTHON_MODULE(area) {
.def("Execute",&AdaptiveExecute)
.def_readwrite("stepOverFactor", &Adaptive2d::stepOverFactor)
.def_readwrite("toolDiameter", &Adaptive2d::toolDiameter)
.def_readwrite("stockToLeave", &Adaptive2d::stockToLeave)
.def_readwrite("helixRampDiameter", &Adaptive2d::helixRampDiameter)
.def_readwrite("polyTreeNestingLimit", &Adaptive2d::polyTreeNestingLimit)
.def_readwrite("tolerance", &Adaptive2d::tolerance)

View File

@@ -385,6 +385,7 @@ void init_pyarea(py::module &m){
.def("Execute",&Adaptive2d::Execute)
.def_readwrite("stepOverFactor", &Adaptive2d::stepOverFactor)
.def_readwrite("toolDiameter", &Adaptive2d::toolDiameter)
.def_readwrite("stockToLeave", &Adaptive2d::stockToLeave)
.def_readwrite("helixRampDiameter", &Adaptive2d::helixRampDiameter)
.def_readwrite("polyTreeNestingLimit", &Adaptive2d::polyTreeNestingLimit)
.def_readwrite("tolerance", &Adaptive2d::tolerance)