PathSurface: Add select-face(s) feature and other improvements

New feature: Limit 3D Surface op to selected faces.

Disabled the IgnoreWaste feature, until it can be made compatible with new features.

New feature:  Face avoidance using new `AvoidLastXFaces` property.

New cut patterns: `Circular` and `CircularZigZag`.  New patterns include customizable center point and optional optimizations. Implemented G2/G3 gcode commands.

New feature: Safe travel for transitional paths. New methods to allow safe travel over stock, cut area, and avoided features.

New feature: Start point for operation. Choose a custom XY start point for the operation.

Restructure code to improve management and prepare for separation of the `Waterline` algorithm into an independent operation in the PathWB.

New feature: `ProfileEdges`.  Allows the user to profile the edges(boundary) of the selected face(s) with or without cutting the entire face area.

Add my name to the `Credits` tab in the `About FreeCAD` documentation.

Added new feature and property: `CutPatternReversed`. This will make Circular, Line, and ZigZag patterns work in reverse order - outside to inside. 
PathSurface: Add select-face(s) feature and other improvements

New feature: Limit 3D Surface op to selected faces.

Disabled the IgnoreWaste feature, until it can be made compatible with new features.

New feature:  Face avoidance using new `AvoidLastXFaces` property.

New cut patterns: `Circular` and `CircularZigZag`.  New patterns include customizable center point and optional optimizations. Implemented G2/G3 gcode commands.

New feature: Safe travel for transitional paths. New methods to allow safe travel over stock, cut area, and avoided features.

New feature: Start point for operation. Choose a custom XY start point for the operation.

Restructure code to improve management and prepare for separation of the `Waterline` algorithm into an independent operation in the PathWB.

New feature: `ProfileEdges`.  Allows the user to profile the edges(boundary) of the selected face(s) with or without cutting the entire face area.

Add my name to the `Credits` tab in the `About FreeCAD` documentation.
This commit is contained in:
Russell Johnson
2020-03-15 23:39:06 -05:00
parent 49bfbf73f8
commit 54bb4db54f
4 changed files with 3158 additions and 864 deletions

View File

@@ -462,6 +462,7 @@ p, li { white-space: pre-wrap; }
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Rentlau</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">R. Kuster</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">† Roland Frank (1970-2017) Thanks for everything, Roland!</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Russell Johnson (russ4262)</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ryan Pavlik</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Sabin Iacob</p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Saso Badovinac</p>

View File

@@ -207,7 +207,12 @@ def adaptiveselect():
FreeCAD.Console.PrintWarning("Adaptive Select Mode\n")
def surfaceselect():
FreeCADGui.Selection.addSelectionGate(MESHGate())
if(MESHGate() is True or PROFILEGate() is True):
FreeCADGui.Selection.addSelectionGate(True)
else:
FreeCADGui.Selection.addSelectionGate(False)
# FreeCADGui.Selection.addSelectionGate(MESHGate())
# FreeCADGui.Selection.addSelectionGate(PROFILEGate()) # Added for face selection
FreeCAD.Console.PrintWarning("Surfacing Select Mode\n")
def select(op):

File diff suppressed because it is too large Load Diff

View File

@@ -63,8 +63,8 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
obj.DropCutterExtraOffset.x = FreeCAD.Units.Quantity(self.form.boundBoxExtraOffsetX.text()).Value
obj.DropCutterExtraOffset.y = FreeCAD.Units.Quantity(self.form.boundBoxExtraOffsetY.text()).Value
if obj.Optimize != self.form.optimizeEnabled.isChecked():
obj.Optimize = self.form.optimizeEnabled.isChecked()
if obj.OptimizeLinearPaths != self.form.optimizeEnabled.isChecked():
obj.OptimizeLinearPaths = self.form.optimizeEnabled.isChecked()
self.updateToolController(obj, self.form.toolController)
self.updateCoolant(obj, self.form.coolantController)
@@ -81,7 +81,7 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
self.form.sampleInterval.setText(str(obj.SampleInterval))
self.form.stepOver.setValue(obj.StepOver)
if obj.Optimize:
if obj.OptimizeLinearPaths:
self.form.optimizeEnabled.setCheckState(QtCore.Qt.Checked)
else:
self.form.optimizeEnabled.setCheckState(QtCore.Qt.Unchecked)