Below is a function i build and it works it the root prim (single prim object) is placed in a angle of 0, 90, 180, 270 degrees but it don't work with other angles and i can't see why.
instead of llGetRootRotation i tried also llGetRot and llGetLocalRot.
The intension is that this function works with all rotations
AvatarSit(integer iNrAnim)
{
vector POSITION;
vector Rotdeg;
if (iNrAnim == 0) {POSITION = < 0.0, 0.0, 1.2>; Rotdeg = < 0, 0, 90 > ;}
else if (iNrAnim == 1) {POSITION = < 0.0, 0.0, 1.15>; Rotdeg = < 0, 0, 90 > ;}
else if (iNrAnim == 2) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 0 > ;}
else if (iNrAnim == 3) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 0 > ;}
else if (iNrAnim == 4) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 270 > ;}
else if (iNrAnim == 5) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 270 > ;}
else if (iNrAnim == 6) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 270 > ;}
else if (iNrAnim == 7) {POSITION = < 0.0, 0.0, 0.7>; Rotdeg = < 0, 0, 90 > ;}
if(llGetNumberOfPrims()> iPrimsDefault) // iPrimsDefault = 1
{
llStopAnimation("sit"

llStopAnimation(SitAnim);
SitAnim=llGetInventoryName(INVENTORY_ANIMATION,iNrAnim);
llSetLinkPrimitiveParams(iPrimsDefault +1, [PRIM_POSITION, POSITION, PRIM_ROTATION, llGetRootRotation() * llEuler2Rot(Rotdeg *= DEG_TO_RAD)]);
llStartAnimation(SitAnim);
}
}