OpenSCAD / FreeCAD splitting, hollowing and threading model I had a thought the other day that it's 100 % waste to have either a solid or hollow 3D-printed model in relation to utilizing the space inside of it for different modules, e.g. secret compartments, modules like salt/pepper shakers, etc.
So I thought the best way of achieving this in a streamlined semi-automated manner is creating a simple script in OpenSCAD / FreeCAD and I would love some professional input on how to achieve this exact process:

Split any given model at X height with Y angle Z times (eg. slicing a model in half &amp; keeping both parts separate)

Make a hollow compartment inside the model with working 3D-printable threads sticking out from one part fitting into the other with definable shape, tolerance &amp; size in relation to the parts size (eg. a cylindrical hidden compartment or a space where specific user-made modules fits into)


I'm thinking a few simple yet potent lines of OpenSCAD code or a FreeCAD script should do the trick but my knowledge is limited in this field at the moment so any input is highly appreciated.
OpenSCAD lacks any facilities to perform computations on the resulting geometry (derived from CSG or directly imported). It has a decent functional language for expressing geometry in terms of parameters and functions/modules, but the road is one way; geometry is an output only and doesn't loop back into input. So automation of this entirely in OpenSCAD is really not an option.
On the other hand, doing it manually is rather easy. You can use CSG operations (intersection or difference) to cut the model, cut a compartment out of it, cut threads in it, etc. as well as (union) attaching external threads. You just have to decide how to size and position them for your model yourself.
Note that there's no canonical module for doing threads in OpenSCAD. You can either derive the cross section for your thread profile (can be done with OpenSCAD code) then linear_extrude it with twist (needs really fine division to be accurate though) or skin a polyhedron for the thread. There are a few published modules for the latter and I have an unpublished one I prefer.