Commit Graph

1634 Commits

Author SHA1 Message Date
Russell Johnson
0697686695 Path: PocketShape - Fixes ticket #4411
Existing code to determine if shape volume indeed existed, failed.
Added additional pre-check for existing edges in shape to determine if shape geometry indeed exists.
In forum:
[Ticket #4411 - Can only generate pocket once for this shape, then it fails.](https://forum.freecadweb.org/viewtopic.php?style=3&f=15&t=49035).
2020-08-02 13:27:32 -05:00
sliptonic
4bfa602368 Merge pull request #3700 from etrombly/deletedFaces
[Path] handle makeOffset2D exception in path pocket operation
2020-07-28 11:50:27 -05:00
sliptonic
ed9c94d9b6 Merge pull request #3585 from gwicke/unified_region_experiments
Path: Area based unified projection implementation
2020-07-28 11:48:56 -05:00
sliptonic
c10275b439 Merge pull request #3689 from etrombly/edgesMatchShape
[PATH] fix pocket attribute error if edge cannot be flipped
2020-07-27 12:53:37 -05:00
Mark Ganson TheMarkster
0491fa4ab9 coverity issue cid 305102 2020-07-23 13:55:32 +02:00
Gabriel Wicke
5c6de6dd14 Path: Area based unified projection implementation
Generalize the `extractFaceOffset` method to `getOffsetArea`, which can
handle both face offsetting and projection. Another difference is that
the new method exposes Area's ability to preserve internal holes,
defaulting to preserving. The method is moved to the PathUtils module,
reflecting its generality and fairly wide used across Path.

This method is then used to provide a drop-in alternative to
`FindUnifiedRegions` via a small wrapper in PathSurfaceSupport. The Area
implementation is generally quick, but can fail (throw) in some cases,
so the wrapper is trying the Area method as an optimization first, and
falls back to the full `FindUnifiedRegions` logic if that fails.
2020-07-21 18:34:09 -07:00
Eric Trombly
fa8f3c2461 fix two never ending while loops in PathSurfaceSupport 2020-07-17 13:59:10 -05:00
Eric Trombly
8ab962ad85 handle offset error in PathPocketShapeGui 2020-07-15 21:31:34 -05:00
Eric Trombly
66b941b5fa handle makeOffset2D exception 2020-07-15 21:31:34 -05:00
Eric Trombly
cf95a6ee91 fix attributeError if edge can't be flipped 2020-07-14 18:53:54 -05:00
sliptonic
be1abcb96b Merge pull request #3688 from etrombly/deleted
[PATH] fix Cannot access attribute 'Document' of deleted object when cancelling PathPocket operation
2020-07-12 16:27:35 -05:00
Eric Trombly
2e251ee967 cleaner fix 2020-07-10 15:42:00 -05:00
Eric Trombly
b4c2082b9e fix deleted object error 2020-07-10 15:42:00 -05:00
sliptonic
fdd4561957 unhide the property for the interpolation surface 2020-07-09 10:47:58 -05:00
Russell Johnson
4b02dace0d Path: Add basic support for arc and circular edges
- Arc and circular slots available using single edge selection.
- `ExtendRadius` property to allow for tool compensation.
- Extend path start and end is available. Value is measured along the arc, not linear.
- Includes collision check for arc and circular slots.
2020-07-02 01:16:22 -05:00
luz.paz
1da81df756 Fix typos [skip-ci]
Found via codespell v1.18.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-06-29 20:52:23 +02:00
sliptonic
a0a4fdb330 Merge pull request #3657 from Russ4262/MillFace_fix
[Path] MillFace - Fix calculation of OpFinalDepth default value
2020-06-29 09:54:04 -05:00
Russell Johnson
65f7e24a9e Path: Resize the Base Geometry list dynamically
Make the size of the Base Geometry list dynamically adjust to its contents.
2020-06-27 15:05:00 -05:00
Russell Johnson
9b67e43b12 Path: Fix calculation of OpFinalDepth default value
Remove commented lines.
Modify PathLog.Level assignment for easier readability.
2020-06-27 09:36:14 -05:00
sliptonic
e1bfab226e Merge pull request #3599 from GeneGH/Edits
Path Simulator - Recognition of canned cycle cancellation
2020-06-21 13:22:49 -05:00
sliptonic
274d044ad6 Merge branch 'master' into master 2020-06-21 10:38:47 -05:00
Russell Johnson
cfa6ad5de6 Path: Slot operation fixes and improvements
- Add `CutPattern` feature, defaulting to `ZigZag`.
- Change inter-pass retractions to SafeHeight for multi-pass operations.
- Fix division by zero instance for particular Perpendicular use case.
- Synchronize property values with inputs in both the Property View and Tasks Editor windows.
- Change `LayerMode` default value to `Multi-pass`.
- Improve debug messaging.
- Consolidate code and remove unused code.

Path: fix exception thrown
2020-06-20 14:27:12 -05:00
sliptonic
9b7319107b [Path] Make jobs delete cleanly.
Deletion of tool controllers now works for toolbits as well
2020-06-19 13:17:17 -05:00
sliptonic
ffe957cef4 Merge pull request #3631 from Russ4262/task_panel_icons
[Path] Add icons to Tasks Window tabs
2020-06-19 12:32:07 -05:00
sliptonic
e3a67e247d Merge pull request #3629 from gwicke/line_simplification
[path] Implement Ramer-Douglas-Peucker line simplification
2020-06-19 11:12:35 -05:00
sliptonic
fd1dc30170 Merge pull request #3624 from Russ4262/SlotCutter
[Path] Add new `Slot` operation to PathWB 2D tool group
2020-06-19 11:12:01 -05:00
sliptonic
9c847fc424 Merge pull request #3600 from sliptonic/feature/customimprove
[PATH] make -custom- op compliant. Improve gcode_pre importer
2020-06-19 11:11:21 -05:00
sliptonic
7c3d0040e5 Merge pull request #3568 from Russ4262/3D_Surface_fixes_2
[Path] 3D Surface and Waterline: FinalDepth guess and `InternalFeaturesCut` fixes
2020-06-19 11:10:14 -05:00
sliptonic
7aa20e8bcc Merge pull request #3545 from Russ4262/Multi-profile
[Path] Profile - New `ExpandProfile` feature for compound profile operations
2020-06-19 11:09:04 -05:00
Russell Johnson
27ab0b8f32 Path: Format and add DocStrings and comments 2020-06-18 20:13:41 -05:00
Russell Johnson
40faed1b7d Path: Fix timing of updatePanelVisibility() call
Targeted function call needed to be after `updateBase()` call after the `for` loop.
2020-06-18 19:56:52 -05:00
Russell Johnson
f323e635bd Path: Add new Slot operation
New slotting operation:
- Accepts selection of up to two features.
- Selectable features include: faces, edges, and vertices.
- User may select a single face or edge, or a pair of features.
- The path may be extended at the start and end.
- The path may be reversed.
- The path may be altered to the perpendicular in some cases.
- A unique Slot icon is included.
- Includes simple collision detection with warning message.
2020-06-18 19:56:52 -05:00
Russell Johnson
33a1804050 Path: Add icons to feature tabs
Add Base Geometry, Heights, Depths, and Operation icons on the tabs in the Tasks Window editor.
2020-06-18 15:54:14 -05:00
Russell Johnson
521b0e46c0 Path: Add operation's label to task panel window title 2020-06-18 01:39:26 -05:00
Russell Johnson
b110ea2818 Path: Cleanup and simplify code 2020-06-18 01:39:26 -05:00
Russell Johnson
939ac2e115 Path: Add ExpandProfile feature
Two new properties, `ExpandProfile` (length) and `ExpandProfileStepOver` (percent) added for new feature.
New feature converts the normal single offset profile into a compound profile containing multiple increasing/decreasing offsets.
The new feature clears a each layer completely before stepping down to the next layer.
Adjust sorting procedure in PathAreaOp due to `ExpandProfile` modifications to open edges code.
2020-06-18 01:39:26 -05:00
Russell Johnson
0f393e2095 Path: Add operation's label to task panel window title 2020-06-18 01:36:54 -05:00
Russell Johnson
0a91704949 Path: Fix error when selection includes vertical faces. 2020-06-18 01:36:54 -05:00
Russell Johnson
86a182c2b8 Path: Add opUpdateDepths() method as in 3D Surface 2020-06-18 01:36:54 -05:00
Russell Johnson
26d121de00 Path: Fix broken InternalFeaturesCut processing 2020-06-18 01:36:54 -05:00
Russell Johnson
1ef278b061 Path: Fix initial guess for FinalDepth with no Base Geometry 2020-06-18 01:36:54 -05:00
Gabriel Wicke
6b3815a766 [path] Implement Ramer-Douglas-Peucker line simplification
Implement an iterative version of the Ramer-Douglas-Peucker line
simplification algorithm
(https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm),
which reduces line complexity to a limited linear deviation from the
original polyline. The ability to reason about linear deflection is the
key improvement over the previous linear implementation.

Worst case complexity is O(n^2), but expected complexity for typical
cases is O(n log n). A potentially faster alternative would be to call
out to libclipper, treating the line as a closed polygon. However, in
practice, performance of this implementation seems good enough. A
complex 3d surface operation optimizes in a few seconds, and reduces
output gcode size from about 220MB with the previous implementation to
10MB.
2020-06-17 20:10:18 -07:00
Russell Johnson
33d1d281ec Path: Convert SetupProperties() to dynamic code
This method will always synchronize with operation's class properties.
2020-06-16 02:01:30 -05:00
Russell Johnson
f4e522c95b Path: Initialize OCL_Tool class and implement in OCL-based operations
The purpose of this class is to properly translate both, Legacy and ToolBit, tools into OCL tool types where possible.
message fix
2020-06-16 02:01:30 -05:00
Russell Johnson
81fdb6483a Path: Fix available inputs for engraver tool type 2020-06-16 02:01:30 -05:00
Russell Johnson
31ae323e73 Path: Add ShapeName property to ToolBit objects
The new `ShapeName` is the name of the FreeCAD shape file containing the 3D body of the cutter.
We might want to change the source of the `ShapeName` to the name of the first Body object in the shape file, rather than the name of the file itself.
2020-06-16 02:01:30 -05:00
luz.paz
720b0b96d0 Fix typos [skip ci]
Found via codespell v1.18.0.dev0  
```
codespell -q 3 -L aci,ake,aline,alle,alledges,alocation,als,ang,anid,ba,beginn,behaviour,bloaded,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childs,colour,colours,commen,connexion,currenty,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,freez,hist,iff,indicies,initialisation,initialise,initialised,initialises,initialisiert,ist,kilometre,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oder,orgin,orginx,orginy,ot,pard,pres,programm,que,recurrance,rougly,seperator,serie,sinc,strack,substraction,te,thist,thru,tread,uint,unter,vertexes,wallthickness,whitespaces -S ./.git,*.po,*.ts,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml
```
2020-06-15 10:11:22 +02:00
sliptonic
df2884f810 [PATH] make -custom- op compliant. Improve gcode_pre importer 2020-06-10 16:49:46 -05:00
GeneGH
5162f146d6 Path Simulator - Recognition of canned cycle cancellation
The Path Simulator was designed to handle canned cycle drilling operations, G81, G82, and G83, but it expects the industry standard continuous uninterrupted set of G8x commands until the operation is completed. A recent change to the Path Drilling operation adds commands that cancel each G8x command immediately after that command is used. This confuses the Path Simulation function and leads to visual artifacts when the simulation is performed.

G-code standards say that canned cycle cancellation can be accomplished by a specific G80 command or by any motion command in the set G0, G1, G2, or G3. This PR modifies PathSimulationGui.py to add recognition for canned cycle cancellation and resets the simulator to treat the next G8x command as the first element of a new series of canned cycles operations rather than a continuation of the previous series.
2020-06-10 13:51:09 -04:00
Gabriel Wicke
7c654878d0 Path: Fix for optimizeLinearSegments
Reduce cumulative error by holding onto the original point in a sequence
of linear optimizations. In testing, this fixes artifacts I have seen on
very finely sampled paths with very gradual curvature.

Further improvements are needed for this optimization, but at least this
change avoids a regression over the status quo.
2020-06-07 15:59:51 -07:00