I just merged the Path module in master. Please note:
1) In a first moment, we'd like to make sure that it compiles on all platforms. Please report problems related to compiling first!
2) You will likely need to "make install". Some stuff might still not be correctly copied to the build dir (please also help us to fix that if you see something wrong in that regard)
3) The GUI tools are still in heavy development. You'll likely meet many bugs or even fail to make them work properly. Some also need external libraries such as libArea. Please refrain from shouting "it doesn't work!", we'll try first to make the path module compile harmoniously, then take care of the external libs, then attack these end-user issues. It'll take some time.
4) The API, however, is already pretty solid. Documentation is at https://github.com/yorikvanhavre/FreeCAD/wiki
We need to transfer (and extend) this documentation to the FreeCAD wiki, help welcome
5) We were gathering bugs and issues on https://github.com/yorikvanhavre/FreeCAD/issues
, I'll also transfer them on the FreeCAD tracker.
6) At the moment the Path module will be hard to use for end-users or people who are not used to GCode. But be patient, this will come...
7) If anything goes wrong, you can disable compilation of the Path module by giving the option: BUILD_PATH=OFF to cmake.
General guidelines for who wants to look at the code:
The Path module is a very hybrid module, 50% C++, 50% python.
The C++ core is very similar to the Robot module, and contains:
- The base Path::Feature
- PropertyPath which contains the Path data of a Path::Feature, works the same way as Part or Mesh
- The Path object contains an ordered list of Path Commands
- a Path Command is a basic GCode operation such as movement, rapid feed, etc.
- Paths are stored, in memory and inside the .FCStd file, as a simplified, vendor-agnostic form of Gcode. But many apps can read it directly.
- PropertyTooltable which contain an ordered list of Path Tools
- The Path Tool object stores information about a particular CNC tool.
- A couple of derived features (Path::FeatureCompound that works like a Part Compound and Path::FeatureShape that builds a path from a wire shape)
- View Providers for the above features
All the rest is python (located in the PathScripts folder), that is:
- All the GUI tools
- The GCode importers and exporters (pre- and post- scripts). There are several, since each machine speaks a different GCode dialect.
- Specific features derived from Path::Feature, for each operation: profile, pocket, etc...
- All the code that generate path data for these operations, some of it inside each feature, some in a couple of generic module files.
That's it for now, thanks to Dan Falck, Brad Collette, Frederik Johansson, Dmitry Platonov who worked hard on this module!