User Data - Get Button Name When Pressed

  • On 11/05/2018 at 22:15, xxxxxxxx wrote:

    I have been using the following function to handle user data button presses:

    def message(id, data) :
        if id == c4d.MSG_DESCRIPTION_COMMAND:
            messageDataId = data["id"][0].id
            if messageDataId == c4d.ID_USERDATA:
                userDataId = data["id"][1].id
                if userDataId == 1:
                    print "button 1 pressed"
                elif userDataId == 2:
                    print "button 2 pressed"

    Is there a way to get the button's name or short name from the message data or id?

  • On 14/05/2018 at 07:01, xxxxxxxx wrote:


    welcome to the Plugin Café forums 🙂

    I assume you are implementing this inside of a Python generator or tag, right?

    In general parameters of objects (or tags, materials,...) are specified in so called Descriptions (also here). With User Data it's a bit special, as you first need to obtain the User Data containers, which store the Descriptions, via GetUserDataContainer().

    One more thing you need to know: In Python Generator and Tag there's a predefined global variable op, referencing the actual object (or tag).

    For example code could look like so:

    def message(id, data) :
        if id == c4d.MSG_DESCRIPTION_COMMAND:
            ud = op.GetUserDataContainer()
            for did, bc in ud:
                if did == data["id"]:
                    print bc[c4d.DESC_NAME] + " pressed"

  • On 14/05/2018 at 22:33, xxxxxxxx wrote:

    Hi Andreas,

    Thanks! That worked perfectly. 🙂

    Thanks for the explanation. I made several attempts to drill down into the User Data Container but couldn't figure it out.


Log in to reply