Commit Graph

1690 Commits

Author SHA1 Message Date
sliptonic
bfa8cbf8a6 Merge pull request #3706 from etrombly/emptyPath
[PATH] don't generate gcode if op isn't valid. Don't plunge to start height if safe and clearance height are the same.
2020-08-04 10:20:13 -05:00
Russell Johnson
c7d34929ad Path: Fix reference to undefined ns, and adjust comments
This `ns` fix might need further attention after testing.  The section to which it pertains deals with optimizing rotations between ops with similar rotational axes.
2020-08-02 13:27:32 -05:00
Russell Johnson
2528898cb5 Path: Fix the rotational LimitDepthToFace feature 2020-08-02 13:27:32 -05:00
Russell Johnson
986775ec1a Path: Fix InverseAngle feature
The `ReverseDirection` property is now hidden by default.  It should not be necessary due to recent implementation of `isFaceUp()` method.
2020-08-02 13:27:32 -05:00
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
J-Dunn
0c3006e77c prevent added paths creating tool crash #4260 #3028
In this path dressup a bogus machine position is used to get an initial edge, this results in a path element which does reflect the input path data and can lead to a tool crash. This PR checks whether X and Y actually come from the input path data and prevent new path elements being added until true machine position has been set. 
Forum thread: https://forum.freecadweb.org/viewtopic.php?f=15&t=42820
2020-07-28 14:12:11 +01: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
465de60007 don't generate gcode if op isn't valid. Don't plunge to start height if safe and clearance height are the same. 2020-07-15 19:35:18 -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