Commit Graph

120 Commits

Author SHA1 Message Date
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
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
Eric Trombly 070099daa4 fix some typos in recent lazyloader implementation 2020-04-15 12:32:48 -05:00
Eric Trombly 7fe094ac02 add lazyloader support
lazy_loader is copied to Ext now, modified external imports to lazy_load

add a few more imports to be lazy loaded, think the install path is correct now

[TD]"<" symbol embedded in html

revert changes to path modules for testing

use lazyloader in PathAreaOp.py

add back in deferred loading

temp change to print error message in tests

temp change to print error message in tests

add _init__.py to lazy_loader

make install in CMakeLists.txt one line
2020-04-13 21:14:34 -05:00
luz.paz 180805c55e Fix typos
Found via  
```
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-03-06 14:50:35 +01:00
Markus Lampert 81f809cfcf Removed dead code for debugging shortcut warnings. 2020-01-03 23:13:55 -08:00
mlampert ee937d52b1 Merge branch 'master' into feature/tool-bit-poc 2019-12-03 18:56:16 -08:00
luz.paz 379d041664 Fix typos and some trailing whitespace
Found via:  
```
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,currenty,dof,doubleclick,dum,eiter,elemente,feld,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
```
2019-12-03 12:22:59 +01:00
Markus Lampert 296058d6dd Added ToolController creation 2019-11-28 17:31:35 -08:00
Markus Lampert 221893eeeb Fixed PathHelix assert statements 2019-08-22 18:02:49 +02:00
Markus Lampert f34ac89266 switched to pylint3 and fixed additional warnings 2019-07-01 15:32:54 -07:00
Markus Lampert 4e46bbf811 Fixed pylint warnings for PathUtil family 2019-07-01 15:32:54 -07:00
sliptonic b55c210f39 remove unnecessary imports. normalize debug log levels 2019-06-21 13:01:01 -05:00
sliptonic 4a984de243 Path: normalize proxy stratements
remove bare exceptions
2019-06-21 13:01:01 -05:00
brad 4cbdf78836 Path: lgtm Cleanup 2019-06-10 10:50:06 -05:00
markus fb62e3940e Moved FreeCADGui dependency from PathUtils into PathUtilsGui 2019-06-02 11:03:14 -07:00
Markus Lampert e680c60def Fixed error in hole sorting algorithm when some locations have identical distances 2019-02-04 22:20:03 -02:00
wmayer 2c3268f9f6 Py3: use feature detection instead of version detection 2019-01-05 13:11:04 +01:00
Markus Lampert 6e0a5580b8 Fixed Queue import for py3 2019-01-05 12:30:41 +01:00
markus 293ac55262 Fixed path model double click 2018-10-03 16:49:19 +02:00
Markus Lampert 82b98588aa Fixed support for objects in the tree without a Proxy 2018-10-02 09:42:52 -03:00
Markus Lampert cc7abc59fc PathUtil fixes for adding ops with preselection. 2018-09-11 07:24:39 +02:00
Markus Lampert 524380cd12 Fixed unit tests to support multiple base models. 2018-09-11 07:24:31 +02:00
Markus Lampert a50727b596 Fixed Cancel of job selection - abort op creation. 2018-08-10 10:43:33 -03:00
Markus Lampert cf14ebf7ea Use the job that matches the current selection - iff only one job fits that description. 2018-08-10 10:43:33 -03:00
Markus Lampert b24e95b7c1 Removed PathGeom class and moved functionality into module interface. 2018-06-19 21:38:20 -07:00
sliptonic 47d6b10b7c Path: remove ToolLengthOffset
Obsolete and broken supplemental command
fixes #3382
2018-03-22 19:43:48 +01:00
Markus Lampert 2990e1e7b0 Changed Cutting Edge Angle to be the full bit angle and renamed label. 2018-02-05 20:22:08 -08:00
Markus Lampert a4fe22062d Fixed template-export menu activation. 2018-01-22 19:40:50 +01:00
Markus Lampert 5f7faa25af Fixed hole detection for bottom faces. 2017-12-04 01:39:25 -08:00
Markus Lampert 25e92ca25b Added circular faces to drillable targets. 2017-12-03 15:08:20 -08:00
Markus Lampert a84a0ce431 Abort OP creation transaction if TC selection is aborted with cancel, #3274 2017-11-28 12:39:02 -02:00
Itai Nahshon d2f50247ff Some fixes related to milling heights and depths.
Fix for large "Step Down".
Correctly handling a part that was moved down the Z axis.
Handle "Finish Depth".
2017-10-08 22:52:10 +02:00
Markus Lampert 4c0f25b174 Fixed refactoring issue. 2017-09-28 11:27:47 -07:00
Markus Lampert c8ef78af37 Dealing with undefined curves - without trampling all other changes. 2017-09-28 11:27:47 -07:00
Markus Lampert 0ea981eaeb Revert "Dealing with undefined curves in drillability checking."
This reverts commit bba1c4871db42bed98992bd1dca764ecd42e98b7.
2017-09-28 11:27:47 -07:00
Markus Lampert 8207683c66 Dealing with undefined curves in drillability checking. 2017-09-28 11:27:46 -07:00
Markus Lampert aa7d6e1bab Allow passing in additional face names to horizontalFaceLoop to further constrain the solution. 2017-09-28 11:27:46 -07:00
Markus Lampert e0ef4feab6 Ensure all edges of wires for horizontalEdgeLoop are also horizontal - required for rejecting solutions that include part of cylinder walls. 2017-09-28 11:27:46 -07:00
Markus Lampert 55766140c4 Added loop detection for vertical faces and enhanced usability of loop select command accordingly. 2017-09-28 11:27:46 -07:00
Markus Lampert f8a5715724 Extended edge-loop-selection command become active if there is a single edge selected and that edge is only part of one wire in the horizontal plane. 2017-09-28 11:27:46 -07:00
Markus Lampert e453e8256e Fixed pylint errors. 2017-09-26 10:51:17 -03:00
Markus Lampert 8c085226d7 split PathJob into model and gui;
Made PathJob a regular feature and moved operations into child compound;
Added stock feature.
2017-09-08 12:25:58 +02:00
Markus Lampert e0ebe92d1c Added full unit test to make sure tool chain works correctly. 2017-08-24 20:31:57 -07:00
Markus Lampert b92d396753 Enabled drilling of arcs. 2017-08-22 10:16:58 -03:00
Markus Lampert 576bfd2fa8 Fixed tool tip length compensation and added safeguards against invalid cutting edge angles. 2017-08-13 16:21:22 -07:00
schnebeck 172cbcd775 job selector for a tool shows not the job label but the job name 2017-08-10 20:53:11 +02:00
Markus Lampert 6f232720b6 Fixed ToolController creation when there are multiple jobs. 2017-08-08 18:31:01 -03:00
Markus Lampert 0544934070 Fixed merge issue. 2017-07-29 11:58:43 +02:00
Markus Lampert 0e3cbe360d Cleaned up dressup creation. 2017-07-29 11:58:43 +02:00