Hi,
The Python code below creates a new take, then finds the object of interest in order to add a new material tag for the newly created take (only). The code adds the material tag, however it does not record the changes within the Take Manager under take named "TEST". Any idea what the issue might be ?
import c4d
# Main function
def main():
    doc.StartUndo()
    
    c4d.CallCommand(431000081) # Auto Take toggle on
    # Create needed take system variables
    take_data = doc.GetTakeData()
    main_take = take_data.GetMainTake()
    child_take = main_take.GetDown()
    if child_take is None:
        msg = "Create first child take to clone. Only one take should be present in the take manager at this time"
        raise RuntimeError(msg)
    # Create a new take & set it as active
    new_take = take_data.AddTake("", main_take, child_take)
    new_take.SetName("TEST")
    take_data.SetCurrentTake(new_take)
    c4d.EventAdd()
    # Find object of interest and create an empty material tag
    obj = doc.SearchObject('Body') # Find object
    tag = obj.MakeTag(c4d.Ttexture) # Create an empty Materials Tag within object
    # Find material and assign it to the tag
    mat = doc.SearchMaterial('Fine') # Find material within Material Manager
    tag.SetMaterial(mat) # Assign material to tag associated with object
    #tag[c4d.TEXTURETAG_MATERIAL]=mat #alternate code, not needed
    # Take Manager is not reflecting changes from above to the currently active take "TEST".
    #tag.AddTag(take_data,c4d.Ttexture,mat) # something I tried to solve this issue, however didn't work
    doc.AddUndo(c4d.UNDOTYPE_NEW,tag)
    doc.EndUndo()
    c4d.EventAdd()
# Execute main()
if __name__=='__main__':
    main()