I work with wood. Woodworking equipment is very diverse, each equipment manufacturer has very different views on the machine programming system. I have 12 different types of machines at work.
they vary greatly, from 3 axial to complex 5 axes machining centers with their own aggregates and specific tools.Some machines have completely different start lines, directional axes and many small nuances. You can just get confused and make a fatal mistake.
so I went the next way. decomposed the available equipment into several categories. 1 - turning and milling machines. 2-milling machines. 3 machines for drilling.
it is physically possible to insert the tool into any machine, the only moment that each machine needs some parameters of its own.
so I have one tool base, I can use the tool on any machine. just for each equipment its parameters are transmitted.
I specifically configured postprocessors just for my system. this allowed me to have one tool base, (I have 126 tools now).I also always indicate one starting point in purchases. the postprocessor simply moves it to the desired position, if necessary, rotates the axis on the machine.also in the postprocessor implemented mechanisms for controlling units. An example in woodworking equipment is often drill groups. almost always you need to specify in which cell you need to drill and from which side. if you make a mistake, you will hit the workpiece. each machine has its own drilling group and a different arrangement of cells and drills in it. I have simplified this moment in my postprocessors.

I just drill with one tool in from all sides, the post-processor itself determines which cell to choose. the result is that I am not mistaken.
in the end, I got one tool base that I can use on any equipment. and only two program settings.1 setting is for turning equipment. 2 for milling and drilling.
and I got all postprocessors to be called right away. As a result, I create one program in Inventor CAM. and I call a post processor that creates control programs on all the machines on which this can be done. as an example, creating a program on several different "yy" machines.
maybe there is another way to optimize performance. I myself wonder if someone did it better.