SOLVED Attribute Manager not updating with Tag Selection

I am selecting tags on an object with python and once the selection is set the attribute manager doesn't update with the tag's attributes. It will if you only have any tag selected before the selection but if an object is selected or nothing is selected the attribute manager won't display anything when the tag is selected:/

Any idea how to get the tag's properties to show up without manually selecting it?

Here is simplified code to illustrate the issue. If you just make a cube primitive and select it this code will select the phong tag. But again the properties of the phong tag dont show up.

import c4d
from c4d import gui

def main():
    obj = doc.GetActiveObject()
    tags = obj.GetTags()
    doc.SetSelection(tags[0])
    c4d.EventAdd()
    
# Execute main()
if __name__=='__main__':
    main()

Hi,

you can do this:

import c4d

def main():
    # op is perdefined as the currently selected node
    if not isinstance(op, c4d.BaseObject):
        return
    # get the tags of op
    tags = op.GetTags()
    if not tags:
        return

    # start a new selection with the first tag
    doc.SetActiveTag(tags[0], c4d.SELECTION_NEW)
    # add the other tags to the selection
    for tag in tags[1:]:
        doc.SetActiveTag(tag, c4d.SELECTION_ADD)
    # Update Cinema
    c4d.EventAdd()

# Execute main()
if __name__=='__main__':
    main()

Cheers
zipit

Hi,

you can do this:

import c4d

def main():
    # op is perdefined as the currently selected node
    if not isinstance(op, c4d.BaseObject):
        return
    # get the tags of op
    tags = op.GetTags()
    if not tags:
        return

    # start a new selection with the first tag
    doc.SetActiveTag(tags[0], c4d.SELECTION_NEW)
    # add the other tags to the selection
    for tag in tags[1:]:
        doc.SetActiveTag(tag, c4d.SELECTION_ADD)
    # Update Cinema
    c4d.EventAdd()

# Execute main()
if __name__=='__main__':
    main()

Cheers
zipit

Thank you!
doc.SetActiveTag() was the key.
doc.SetSelection() was not switching it over to tag mode.

you can also make use of

c4d.gui.ActiveObjectManager_SetObject

to let the Attribute Manager (= ActiveObjectManager) show to content of the 'object'. Where 'object' can be anything from mesh object to tag, material, shader, ...

@C4DS Thank your reply! I had to come back to this because I had problems with switching back to object context and this solved that!