I've been working on these for a few weeks already. The main goal was to port Connect to use generalFuse method, to make it faster. In the process, It became clear it's relatively easy to add a few more tools (which proved to be much more involved than I anticipated, but I did it
https://github.com/DeepSOIC/FreeCAD-ell ... nFeatures4
I ask for some testing before I make a pull request.
Here's a brief list of what has happened:
* old JoinFeatures was changed to a deprecated state, where it is only capable of recomputing existing objects (using legacy algorithm).
* New JoinFeatures (Connect, Embed, Cutout) were implemented. They use the new generalFuse if OCC6.9.0, or fall back to legacy algorithm (less capable) if OCC is lower.
** Connect now supports multiple arguments
** Connect can take a (single) compound to act as a set of arguments (thus you can now connect self-intersecting Draft Arrays)
** Connect now works with shells/faces, and wires/edges. It might work with compsolids, too (I didn't test, it'll probably treat them as single solids).
** Connect now has Tolerance property (appears to break input shapes, so it probably should be avoided).
** Embed and Cutout are essentially unchanged. But try them on shells/faces and wires, and tell me if they work or not.
* new Split Tools: Boolean Fragments, Slice and XOR. These output compounds, and they need to be exploded to get the actual splitting. They work only if OCC is 6.9.0 and up.
** New tool: Boolean Fragments. This one is essentially generalFuse method exposed to Gui. BUT. It has Mode property, which alters its behavior. The most interesting mode is "CompSolid", which makes compsolids!
** New tool: Slice. It can split solids apart with a plane (for example). It can also "engrave" sketches onto faces of solids/whatever. It should accept a wide variety of inputs, from compsolids to vertices. Just try it, and tell me if it doesn't do what you expected.
It also has Mode property, which has "CompSolid" entry.
** New tool: Boolean XOR. That pretty much says it all. Although I doubt it will be very useful, I made it because it was easy (and it helped reveal a serious problem with the code)
* the new JoinFeatures now have API to work on shapes. This API, as well as all the machinery that makes it work, is exposed as Part.BOPTools,* I hope this machinery will help create more BOP-like tools in the future!