REEEN wrote: Andy,
I think switching the kinematics is a problem because of the axes drives, they will receive wrong parameters when switching between them.
Possibly not...
In the Joints_Axes branch of linuxCNC (which is intended to make special kinematics work better) the limits are joint-based.
wiki.linuxcnc.org/cgi-bin/wiki.pl?JointAxesBranch
so things should still work OK as far as travel limits go.
Having said that, I would be tempted to try creating a virtual machine (Vismach isn't that hard to get to grips with) and trying out configs on that. This would also allow you to trial it with the customer to see if they like it.
Once you have the virtual config all set up it is relatively easy to hook it up to the real hardware.
linuxcnc.org/docs/2.7/html/gui/vismach.html
It may be that re-mapping the tool change to run G43 in vertical mode, but to use G43.1 in horizontal would work.
IF (Vertical)
G43 H #<toolnum>
ELSE
G43 H #<toolnum>
#1 = #5401
#2 = #5402
#3 = #5403
G43.1 X#1 Y#3 Z#2
ENDIF
In an ideal world a reference tool would be created for a height-setting gauge which located the tip _exactly_ at the point of rotation of the head.