Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    How to use the new UserData Button?

    Scheduled Pinned Locked Moved PYTHON Development
    12 Posts 0 Posters 1.2k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      On 13/10/2014 at 02:37, xxxxxxxx wrote:

      I would like to know this too 🙂

      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        On 13/10/2014 at 05:39, xxxxxxxx wrote:

        Hi,

        from the plugin side it could be set and used like this:

          
          
        def AddUserdata(self,op) :  
          rootGroup = c4d.GetCustomDatatypeDefault(c4d.DTYPE_GROUP)  
          rootGroup[c4d.DESC_NAME] = "Button_Group"  
          rootGroup[c4d.DESC_SCALEH] = False  
          rootGroup[22] = 2 #two colums  
          rootGroup[c4d.DESC_PARENTGROUP] = c4d.DescID(0)   
          op.AddUserData(rootGroup)  
          
          button= c4d.GetCustomDatatypeDefault(c4d.DTYPE_BUTTON)  
          button[c4d.DESC_NAME] = "BUTTON"  
          button[c4d.DESC_CUSTOMGUI] = c4d.CUSTOMGUI_BUTTON  
          button[c4d.DESC_PARENTGROUP] = op.GetUserDataContainer()[0][0]  
          UsdataDescId=op.AddUserData(button)  
          
        def Message(self, node, type, data) :  
              if type== c4d.MSG_MENUPREPARE:  
                  AddUserdata(self,node)  
          
              if (type == c4d.MSG_DESCRIPTION_COMMAND) :   
                  id = data['id'][0].id  
                  if(id == 700) :  
                      print id  
                      print data  
                      print "button pressed"  
          
        

        Cheers,
        Martin

        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

          On 13/10/2014 at 05:52, xxxxxxxx wrote:

          Hi,

          Thanks for the reply. 
          Is there a way to get to the button in a python tag, like with other user data?

          I tried:

          print op.GetObject()[c4d.ID_USERDATA,1]

          in a python tag, but that returns None

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

            On 14/10/2014 at 01:14, xxxxxxxx wrote:

            unfortunatly I don´t have a solution for this.

            It seem´s logical to me that op.GetObject()[c4d.ID_USERDATA,1] does´nt work.
            A button message is´nt the same, as a stored ud value.

            It´s indeed interesting how to handle this.

            Anyone?

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              On 14/10/2014 at 01:32, xxxxxxxx wrote:

              +1 on the interested to use this in a scripting context.

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

                On 14/10/2014 at 06:05, xxxxxxxx wrote:

                I think I may have figured out where the buttons are meant to be used. The new 'Interaction tag" in R16 has a message function you can activate and I managed to get it to give me consistent numbers when using UserData button presses.

                def message(id, data) :
                  
                    if id == 18: # Don't know why 18 yet :(
                        for i in data['msg']: #seems to be the consistently changing thing
                            print i[c4d.DESC_NAME] #the number stays [c](https://www.google.com/search?client=safari&rls=en&q=consistent&ie=UTF-8&oe=UTF-8)onsistent aligning with different button presses
                  
                
                

                Let me know if anyone has more light to shed.

                Thanks,

                Adam

                1 Reply Last reply Reply Quote 0
                • H Offline
                  Helper
                  last edited by

                  On 15/10/2014 at 14:36, xxxxxxxx wrote:

                  It seems we are able to use message function in python tag now.
                  PythonTag with UserDataButton and following lines...

                  import c4d  
                  #Welcome to the world of Python  
                    
                  def message(id, data) :  
                    if id == 17:   
                        print "UserData-ID: ", data["descid"][1].id  
                    
                  def main() :  
                    pass #put in your code here
                  
                  1 Reply Last reply Reply Quote 0
                  • H Offline
                    Helper
                    last edited by

                    On 15/10/2014 at 23:56, xxxxxxxx wrote:

                    Hi,

                    thank you both Adam and rown.
                    For the idea and the proper solution at the end.

                    This works!

                    Best wishes
                    Martin

                    1 Reply Last reply Reply Quote 0
                    • H Offline
                      Helper
                      last edited by

                      On 16/10/2014 at 00:34, xxxxxxxx wrote:

                      Many thanks!

                      1 Reply Last reply Reply Quote 0
                      • H Offline
                        Helper
                        last edited by

                        On 16/10/2014 at 01:47, xxxxxxxx wrote:

                        #define MSG_DESCRIPTION_CHECKUPDATE               17 ///< Allows elements to determine the type of refresh after a parameter has been changed in the Active manager.  
                        #define MSG_DESCRIPTION_COMMAND                   18 ///< Sent by for example @em BUTTON description element. @correspondingData{DescriptionCommand}
                        
                        id == 17 - rown, you simply check out dirty of gui?! But if udata is at pyTag...  
                        if udata at host op( _op.GetObject()_ ), thats question.  
                        I tried through c4dAtom.Message...freeze c4d or got shutdown  
                        
                        1 Reply Last reply Reply Quote 0
                        • H Offline
                          Helper
                          last edited by

                          On 17/08/2015 at 08:48, xxxxxxxx wrote:

                          Just for completeness, in this thread there's now a more complete example, how to use User Data buttons in the Interaction Tag.

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post