Commit Graph

119 Commits

Author SHA1 Message Date
Gabriel Wicke
a5bf29269b [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
08fc5556d5 fix some typos in recent lazyloader implementation 2020-04-15 12:32:48 -05:00
Eric Trombly
24e681c63b 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
ebe194a9e9 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
81bbb0066d Removed dead code for debugging shortcut warnings. 2020-01-03 23:13:55 -08:00
mlampert
4b9e145fc0 Merge branch 'master' into feature/tool-bit-poc 2019-12-03 18:56:16 -08:00
luz.paz
ea0868a433 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
a5d1203980 Added ToolController creation 2019-11-28 17:31:35 -08:00
Markus Lampert
f0602457d7 Fixed PathHelix assert statements 2019-08-22 18:02:49 +02:00
Markus Lampert
6410393092 switched to pylint3 and fixed additional warnings 2019-07-01 15:32:54 -07:00
Markus Lampert
b094ce7370 Fixed pylint warnings for PathUtil family 2019-07-01 15:32:54 -07:00
sliptonic
617c619d2f remove unnecessary imports. normalize debug log levels 2019-06-21 13:01:01 -05:00
sliptonic
c8e945a3ab Path: normalize proxy stratements
remove bare exceptions
2019-06-21 13:01:01 -05:00
brad
8e372108b5 Path: lgtm Cleanup 2019-06-10 10:50:06 -05:00
markus
30f0a861e2 Moved FreeCADGui dependency from PathUtils into PathUtilsGui 2019-06-02 11:03:14 -07:00
Markus Lampert
40886d7d1f Fixed error in hole sorting algorithm when some locations have identical distances 2019-02-04 22:20:03 -02:00
wmayer
e3d4cbeb3d Py3: use feature detection instead of version detection 2019-01-05 13:11:04 +01:00
Markus Lampert
c3e413340f Fixed Queue import for py3 2019-01-05 12:30:41 +01:00
markus
cbd7f3e3fa Fixed path model double click 2018-10-03 16:49:19 +02:00
Markus Lampert
bc72303d66 Fixed support for objects in the tree without a Proxy 2018-10-02 09:42:52 -03:00
Markus Lampert
b3d99a129a PathUtil fixes for adding ops with preselection. 2018-09-11 07:24:39 +02:00
Markus Lampert
256d42e2de Fixed unit tests to support multiple base models. 2018-09-11 07:24:31 +02:00
Markus Lampert
3de432649a Fixed Cancel of job selection - abort op creation. 2018-08-10 10:43:33 -03:00
Markus Lampert
574d184fc3 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
bf46c47616 Removed PathGeom class and moved functionality into module interface. 2018-06-19 21:38:20 -07:00
sliptonic
8efd7a1954 Path: remove ToolLengthOffset
Obsolete and broken supplemental command
fixes #3382
2018-03-22 19:43:48 +01:00
Markus Lampert
be77b0c58e Changed Cutting Edge Angle to be the full bit angle and renamed label. 2018-02-05 20:22:08 -08:00
Markus Lampert
e96e32580e Fixed template-export menu activation. 2018-01-22 19:40:50 +01:00
Markus Lampert
fdea03a594 Fixed hole detection for bottom faces. 2017-12-04 01:39:25 -08:00
Markus Lampert
5ab86fa33c Added circular faces to drillable targets. 2017-12-03 15:08:20 -08:00
Markus Lampert
c38eee06e2 Abort OP creation transaction if TC selection is aborted with cancel, #3274 2017-11-28 12:39:02 -02:00
Itai Nahshon
e2e0735677 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
da61e31a8d Fixed refactoring issue. 2017-09-28 11:27:47 -07:00
Markus Lampert
02698d2d67 Dealing with undefined curves - without trampling all other changes. 2017-09-28 11:27:47 -07:00
Markus Lampert
bdcdf0292c Revert "Dealing with undefined curves in drillability checking."
This reverts commit bba1c4871db42bed98992bd1dca764ecd42e98b7.
2017-09-28 11:27:47 -07:00
Markus Lampert
c2504da3e0 Dealing with undefined curves in drillability checking. 2017-09-28 11:27:46 -07:00
Markus Lampert
a6a572b12c Allow passing in additional face names to horizontalFaceLoop to further constrain the solution. 2017-09-28 11:27:46 -07:00
Markus Lampert
942faadde6 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
01b0225c4e Added loop detection for vertical faces and enhanced usability of loop select command accordingly. 2017-09-28 11:27:46 -07:00
Markus Lampert
6b0f36f189 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
fa2bb2a90c Fixed pylint errors. 2017-09-26 10:51:17 -03:00
Markus Lampert
52590318ad 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
504e4b7109 Added full unit test to make sure tool chain works correctly. 2017-08-24 20:31:57 -07:00
Markus Lampert
7bd176b8dd Enabled drilling of arcs. 2017-08-22 10:16:58 -03:00
Markus Lampert
354538956d Fixed tool tip length compensation and added safeguards against invalid cutting edge angles. 2017-08-13 16:21:22 -07:00
schnebeck
523fa6be20 job selector for a tool shows not the job label but the job name 2017-08-10 20:53:11 +02:00
Markus Lampert
abe2a15a37 Fixed ToolController creation when there are multiple jobs. 2017-08-08 18:31:01 -03:00
Markus Lampert
e9568052e3 Fixed merge issue. 2017-07-29 11:58:43 +02:00
Markus Lampert
a2e9911e20 Cleaned up dressup creation. 2017-07-29 11:58:43 +02:00
Markus Lampert
235829c010 Start new implementation of holding tags, just called Tag. 2017-07-29 11:58:43 +02:00