Of course trying to read and set rotations with chains alive produces an horrible result; i tried to disable chains (<chain>.controller.enabled = 0) but the situation didn't improve. The only secure way i found to perform the aforementioned operations is to delete (and then rebuild ) chains every time i need it. It works but because of my particular implementation this delete/rebuild system makes things very complicated.
So i found in maxscipt documentation that startJoint and endJoint pointers can be changed on the fly via <chain>.controller.startJoint and <chain>.controller.endJoint methods (ie: assign them to stub objects to leave the relevant objects temporarily free from any overriding) but sadly found that after a couple of switches max crashes with an assertion error in the ikmanager.cpp module :(
My 2 questions are:
1) is there a way to read rotations of all bones (ie upperarm, forearm, hand) and set rotation of last bone (hand) correctly without killing/rebuliding the ik chains?
2) Did i miss something or is max horribly bugged when it comes to switch startJoint and endJoint pointers?