Commit Graph

46 Commits

Author SHA1 Message Date
David Kaufman
1183fc4727 Path: Rest machining feature for Pocket and Pocket3D 2023-07-21 09:03:26 -04:00
Uwe
75dc8f9410 [Path] A-F: remove unused includes
- also some sorting
2022-12-04 19:48:46 +01:00
berniev
6953310116 Mod: Single arg ctors must be explicit 2022-08-24 16:55:20 +02:00
wmayer
2062f9ce87 clang: fix warnings [-Winconsistent-missing-override] 2022-08-09 17:36:25 +02:00
berniev
ddafb98813 Mod: Use override etc 2 2022-08-09 12:52:26 +02:00
wmayer
796d722072 Path: fix warning: extra ';' inside a struct/class [-Wextra-semi] 2022-06-20 11:34:31 +02:00
Uwe
4a052dc34a [Path] cleanup formatting of Area.cpp/.h
- MSVC always kind of "stumbled" over this file, therefore it was on my ToDo lost to let run MSVC's syntax unification over this file

- still many MSVC warnings, but now some less
2022-06-19 17:49:08 +02:00
wmayer
7b591da9f5 Path: modernize C++11
* use nullptr
2022-03-23 19:26:15 +01:00
luz paz
b75cd3dd52 Path: Fix header uniformity and remove trailing whitespace
This PR fixes header uniformity across all Path files. It also removes all trailing whitespace.
2020-11-05 19:57:21 +01:00
Gabriel Wicke
905d9d65da 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
ec10b5e62e Path: add some diagnostic trace in Area 2020-01-24 07:58:57 +08:00
luz.paz
1c981e8f14 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
d93259e238 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
6e64b4f75d Misc. typos 2018-05-19 12:06:34 -04:00
Zheng, Lei
7f891ebeae 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
8f84087e6f Path.Area: respect zero start point when generating path 2018-01-23 19:49:58 +01:00
Zheng, Lei
0cca82b530 Path.Area: honour 'from_center' in offset pocket mode 2017-11-28 12:40:19 -02:00
Zheng, Lei
120b37b0c7 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
d257f1bfa5 Path.Area: section intermediate shape output for debugging 2017-06-15 14:43:49 -03:00
Zheng, Lei
fe8d32854a Path.Area: removed LogLevel from setDefaultParams
Use App.setLogLevel('Path.Area', <level>) instead.
2017-05-24 09:16:52 +08:00
Zheng, Lei
fa00b4f06a Path.Area: use FC tag based logging 2017-05-13 18:52:09 +02:00
Zheng, Lei
a0e280e961 Path.Area: outline now supports solid and non-planar faces 2017-05-13 14:36:42 +02:00
Zheng, Lei
dd36a9fc45 Path.Area: force CW orientation on pocket mode offset 2017-05-13 14:36:42 +02:00
Zheng, Lei
9120d6db77 Path.Area: fix path orientation setting 2017-05-13 14:36:42 +02:00
Zheng, Lei
17a57a3165 Path.Area: added outline projection support 2017-04-23 19:15:19 -03:00
Zheng, Lei
13e4a1bafb 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
1d64d1e91c 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
796a8f3cd5 Path.Area: support arc plane selection 2017-03-23 22:04:52 +01:00
Zheng, Lei
80850e176d Path.Area: improved section plane tolerance issue 2017-03-23 22:04:52 +01:00
Zheng, Lei
102998208f 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
c1ab98098e 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
b8843ec8c5 Path.Area: improved code readablity 2017-03-23 22:04:52 +01:00
wmayer
36b7e0338b fix eval flsw: do not use GUI stuff in App modules! 2017-02-04 18:19:00 +01:00
Zheng, Lei
14c98d252e 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
e66f4c5d6f Path.Area: added python abort() to abort lengthy operation 2017-02-01 02:45:13 +08:00
Zheng, Lei
6f862fe4a1 Part.Area: fixed sortWires3D 2017-02-01 02:02:07 +08:00
Zheng, Lei
f834206ba7 Path.Area: added segmentation and 3D wire support 2017-01-31 19:09:33 +08:00
Zheng, Lei
fbcffa12d2 Path.Area: fixed auto workplane finding logic 2017-01-29 20:17:18 +08:00
Zheng, Lei
228a0dc905 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
a3f46a40e9 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
1913f6c582 Path: added support to get Path.Area from Path::FeatureArea 2017-01-25 00:23:21 +08:00
Zheng, Lei
aec39ec6ff Path.Area: added Sections python attribute 2017-01-24 14:37:52 +08:00
Zheng, Lei
8fdb235d8f Path.Area: various fixes for Path.Area python object 2017-01-21 18:21:46 +08:00
Zheng, Lei
c0ba9700aa 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
1517418ba0 Path.Area added coplanar check parameter 2017-01-20 02:36:59 +08:00
Zheng, Lei
36423f24de Path: added Path.Area and Path.FeatureArea 2017-01-19 23:08:19 +08:00