Commit Graph

37 Commits

Author SHA1 Message Date
Gabriel Wicke
2fb60a40b2 Path: Area fixes and robustness tweaks
- Bug fix: Fix crasher in discretize() when the edge to discretize is
  not a 3d curve, and a nullptr is returned when trying to access the
  underlying curve. This change essentially removes an older work-around
  for QuasiUniformDeflection, which is no longer needed since we are
  using UniformDeflection. This change is tested with the original test
  case from https://forum.freecadweb.org/viewtopic.php?f=15&t=42628, as
  well as my own crasher test case.
- WireJoiner robustness: Support passing in a tolerance into
  WireJoiner::findCloseWires(), and initialize this to
  AreaParameter.Tolerance. In testing, this significantly improves the
  ability to join projected areas in complex 3d surface path models.
- Area::project() robustness: Pass the work plane down into the
  projection area instance, so that it does not need to be derived from
  shapes. This avoids crashing out on "shapes are not coplanar" from
  getPlane, when lenient processing was requested via the Coplanar
  parameter.
2020-06-07 20:09:55 -07:00
Zheng, Lei
06f69fd039 Path: add some diagnostic trace in Area 2020-01-24 07:58:57 +08:00
luz.paz
30a717beac Fix typos and misc. formatting [skip ci]
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-10-21 16:02:23 -03:00
Zheng, Lei
cfc6c0ee89 Path changes
* Relaxed valid base shape requirement, as long as it can return a
  shape using part.getShape()

* Improve ViewProviderPath performance by sharing the same selection
  observer

* Relocate libarea binary installation
2019-08-17 15:15:48 +02:00
luz.paz
69b3b0b7f2 Misc. typos 2018-05-19 12:06:34 -04:00
Zheng, Lei
ff21f64385 Path.Area: fix self intersect wire issue
Self intersected wire may cause a loop, and BRepBuilderAPI_MakeWire may
mistakenly consider the wire to be closed. And this makes
BrepTools_WireExplorer unhappy and cause it to skip edges.  We now use
ShapeAnalysis_FreeBounds to connect edges to wires.
2018-03-03 11:19:36 -03:00
Zheng, Lei
004f82b3e7 Path.Area: respect zero start point when generating path 2018-01-23 19:49:58 +01:00
Zheng, Lei
7d0e0289bf Path.Area: honour 'from_center' in offset pocket mode 2017-11-28 12:40:19 -02:00
Zheng, Lei
4b2a739e7a Path.Area: change fromShape() 'start' parameter behavior
'start' used to mean the initial resting position of the tool. Now it
is changed to mean the feed start position.

fromShape() has also improved to automatically guess 'retraction' and
'resume_height' parameters if not given, based on input shape boundary.
2017-07-07 11:26:54 +08:00
Zheng, Lei
c66e6785ed Path.Area: section intermediate shape output for debugging 2017-06-15 14:43:49 -03:00
Zheng, Lei
c6e9127863 Path.Area: removed LogLevel from setDefaultParams
Use App.setLogLevel('Path.Area', <level>) instead.
2017-05-24 09:16:52 +08:00
Zheng, Lei
de2c826f86 Path.Area: use FC tag based logging 2017-05-13 18:52:09 +02:00
Zheng, Lei
6f3104c6e3 Path.Area: outline now supports solid and non-planar faces 2017-05-13 14:36:42 +02:00
Zheng, Lei
b05bcbb6cb Path.Area: force CW orientation on pocket mode offset 2017-05-13 14:36:42 +02:00
Zheng, Lei
fca09c949d Path.Area: fix path orientation setting 2017-05-13 14:36:42 +02:00
Zheng, Lei
6d275e1ed6 Path.Area: added outline projection support 2017-04-23 19:15:19 -03:00
Zheng, Lei
0391e5c70d Path.Area: added orientation param to Path.fromShapes
The 'orientation' parameter allows to enforce loop direction
2017-04-23 19:15:19 -03:00
Zheng, Lei
0bd03b9e8b Path.Area: wire sorting fix and improvement
Wire sorting no longer uses libarea. Performance improvement using
boost::geometry::rtree
2017-03-23 22:04:52 +01:00
Zheng, Lei
52ac02138d Path.Area: support arc plane selection 2017-03-23 22:04:52 +01:00
Zheng, Lei
a0f121410e Path.Area: improved section plane tolerance issue 2017-03-23 22:04:52 +01:00
Zheng, Lei
f94bc81987 Path.Area: support negative stepdown
Negative stepdown means going from bottom up. Some machine may have
reversed Z axis.
2017-03-23 22:04:52 +01:00
Zheng, Lei
73649495e6 Path.Area: Changed FeatureArea WorkPlane behavior
FeatureArea will return the user defined workplane if there is one, or
else it returns auto selected plane by its internal Area object
2017-03-23 22:04:52 +01:00
Zheng, Lei
f028bde0df Path.Area: improved code readablity 2017-03-23 22:04:52 +01:00
wmayer
5c0c9d5769 fix eval flsw: do not use GUI stuff in App modules! 2017-02-04 18:19:00 +01:00
Zheng, Lei
b35e41771a Path.Area: added python static method setDefaultParams()
set/getDefaultParams controls the default parameters used when
creating Path.Area object. It also has extra parameter to control
Path.Area log level.
2017-02-01 12:02:01 +08:00
Zheng, Lei
ce27104658 Path.Area: added python abort() to abort lengthy operation 2017-02-01 02:45:13 +08:00
Zheng, Lei
84a5162698 Part.Area: fixed sortWires3D 2017-02-01 02:02:07 +08:00
Zheng, Lei
00cb8095a7 Path.Area: added segmentation and 3D wire support 2017-01-31 19:09:33 +08:00
Zheng, Lei
9150ee24d1 Path.Area: fixed auto workplane finding logic 2017-01-29 20:17:18 +08:00
Zheng, Lei
b19fe515f5 Path.Area: fixed non-circular curve handling, etc.
* Fixed non-circular curve orientation handling

* Section changed to use Part::CrossSection, because it seems
BRepAlgoAPI_Section has trouble with non-circular curves (LastParameter
becomes huge which causes discretization to produce many many points)

* Exposed Area.makeSections() to section with variable heights

* Modified Area.setPlane() to accept non-planar shape

* Exposed Area.getPlane() to obtain current workplane

* Exposed Area.Shapes attribute to return the current holding children
shape.
2017-01-29 18:24:01 +08:00
Zheng, Lei
be1d0f6151 Path: added Path.fromShapes and Path.sortWires
* Path.fromShapes can now convert any number of shapes to Path with
optimzied travel distances. It internally uses Path.sortWires to
minimize travel distances, and also sort wires by its Z height in case
of sectioned wires.

* The above python function is impelmented in Path::Area class.

* Path::FeatureShape is rewrote to take advantage of these two
functions.

* Add Path::FeatureAreaView to partially display a Path::FeatureArea's
sections.
2017-01-27 17:13:16 +08:00
Zheng, Lei
01f68f88e1 Path: added support to get Path.Area from Path::FeatureArea 2017-01-25 00:23:21 +08:00
Zheng, Lei
7d04c2188c Path.Area: added Sections python attribute 2017-01-24 14:37:52 +08:00
Zheng, Lei
0c545c1975 Path.Area: various fixes for Path.Area python object 2017-01-21 18:21:46 +08:00
Zheng, Lei
d95e6e262b Path.Area: added support for solid
* Path.Area/FeatureArea can now section solid shapes.
* Added command to select workplane for FeatureArea
* Generalized ParamsHelper
2017-01-20 17:47:28 +08:00
Zheng, Lei
c11ce6ec79 Path.Area added coplanar check parameter 2017-01-20 02:36:59 +08:00
Zheng, Lei
4a63a702f4 Path: added Path.Area and Path.FeatureArea 2017-01-19 23:08:19 +08:00