Solved Get rotation of animated object with python

Hi
I'm trying to write python script for Cinema4D R17 that would go through all frames and output rotation of object that is animated. The script works but it always returns the same rotation even when object is animated and its rotation is changing in each frame. How do I fix this?

Here is the code I'm using

import c4d
import c4d.utils
import math
from c4d import gui

def main():
    currentDoc = c4d.documents.GetActiveDocument()
    docFps = currentDoc.GetFps()
    lastFrame = currentDoc.GetMaxTime().GetFrame(docFps)
    
    print "Document framerate is " + str(docFps)
    print "Last frame is " + str(lastFrame)

    for x in range(0, lastFrame + 1):
        currentDoc.SetTime(c4d.BaseTime(x, docFps))
        c4d.EventAdd()
        cubeObj = currentDoc.SearchObject("Cube")
        cubeObjRotation = cubeObj.GetAbsRot()
        cubeObjRotation = cubeObjRotation * 180 / math.pi
        print "Frame" + str(x) + " - Cube rotation is " + str(cubeObjRotation)
        
if __name__=='__main__':
    main()

Hi,

don't be surprised, I have turned your thread into a question.

The problem is, that the document will actually not be animated (or lets rather say, it will not be evaluated or executed) when calling SetTime(). Additionally you need to call ExecutePasses().
The BaseDocument manual in our C++ SDK documentation contains some extra information on this topic in the sections Time and Animate.

Cheers,
Andreas

Hi,

don't be surprised, I have turned your thread into a question.

The problem is, that the document will actually not be animated (or lets rather say, it will not be evaluated or executed) when calling SetTime(). Additionally you need to call ExecutePasses().
The BaseDocument manual in our C++ SDK documentation contains some extra information on this topic in the sections Time and Animate.

Cheers,
Andreas