Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    Dialog button hangs C4D

    Cinema 4D SDK
    python
    2
    6
    1.2k
    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.
    • N
      nicholas_yue
      last edited by Manuel

      I have a dialog button which hangs when I click it but it only hangs for a specific scene.

      From looking at the printout in the python console window, it appears that when I click the 'Submit' button, it never reaches the call to Command()

      TTR_PLUGIN_ID = 999121032
      TTR_CANCEL_BUTTON = 12003
      TTR_SUBMIT_BUTTON = 12004
      
          def Command(self, id, msg):
              print('TurnTableRenderDialog::Command()')
              print('id = {}'.format(id))
              print('TTR_SUBMIT_BUTTON = {}'.format(TTR_SUBMIT_BUTTON))
              if (id == TTR_SUBMIT_BUTTON):
                  print('TTR_SUBMIT_BUTTON')
      
          def CreateLayout(self):
              '''
              Frame Chunk size,
              Render folder prefix
              Frame range (start, end)
              '''
              self.SetTitle('Submit turn table to Tractor (PlutoWithDamage)')
              self.GroupBegin(id=1013, flags=c4d.BFH_SCALEFIT, cols=1)
              #
              self.GroupBegin(id=1014, flags=c4d.BFH_SCALEFIT, cols=2)
      
              self.AddStaticText(TTR_COMMENT_LABEL, c4d.BFV_MASK |
                                 c4d.BFH_RIGHT, name="Comments")
              self.AddEditText(TTR_COMMENT_EDIT, c4d.BFV_MASK |
                               c4d.BFH_LEFT, initw=400)
      
              self.AddStaticText(TTR_FRAME_RANGE_LABEL, c4d.BFV_MASK |
                                 c4d.BFH_RIGHT, name="Frame range (start,end,step)")
              self.GroupBegin(id=1015, flags=c4d.BFH_SCALEFIT, cols=3)
              self.AddEditNumberArrows(TTR_FRAME_RANGE_START, c4d.BFV_MASK, initw=100)
              self.AddEditNumberArrows(TTR_FRAME_RANGE_END, c4d.BFV_MASK, initw=100)
              self.AddEditNumberArrows(TTR_FRAME_RANGE_STEP, c4d.BFV_MASK, initw=100)
              self.GroupEnd()
      
              self.GroupEnd()
              #
              self.GroupBegin(id=1016, flags=c4d.BFV_MASK | c4d.BFH_RIGHT, cols=2)
              self.AddButton(TTR_CANCEL_BUTTON, c4d.BFV_MASK |
                             c4d.BFH_RIGHT, initw=100, name="Cancel")
              self.AddButton(TTR_SUBMIT_BUTTON, c4d.BFV_MASK |
                             c4d.BFH_RIGHT, initw=100, name="Submit")
              self.GroupEnd()
      
      1 Reply Last reply Reply Quote 0
      • ferdinandF
        ferdinand
        last edited by m_adam

        Hi @nicholas_yue,

        thank you for reaching out to us. It is a bit unclear to us what you mean by hanging on specific scenes, i.e. we are not able to reproduce this. However, you made the mistake of not conforming to the signatures of both GeDialog.Command and GeDialog.CreateLayout, both being defined as methods with a boolean return type (see docs for details). When fixing that, the code will run as one would expect here on my machine. Below you will find a "fixed" version (I just added an explicit return value to both functions, conforming to signatures).

        Cheers,
        Ferdinand

        import c4d
        
        TTR_PLUGIN_ID = 999121032
        TTR_CANCEL_BUTTON = 12003
        TTR_SUBMIT_BUTTON = 12004
        TTR_COMMENT_LABEL = 0
        TTR_COMMENT_EDIT = 1
        TTR_FRAME_RANGE_LABEL = 2
        TTR_FRAME_RANGE_START = 3
        TTR_FRAME_RANGE_END = 4
        TTR_FRAME_RANGE_STEP = 5
        
        
        class MyDialog(c4d.gui.GeDialog):
            """
            """
        
            def Command(self, id, msg): 
                print('TurnTableRenderDialog::Command()')
                print('id = {}'.format(id))
                print('TTR_SUBMIT_BUTTON = {}'.format(TTR_SUBMIT_BUTTON))
                if (id == TTR_SUBMIT_BUTTON):
                    print('TTR_SUBMIT_BUTTON')
                return True
        
            def CreateLayout(self):
                '''
                Frame Chunk size,
                Render folder prefix
                Frame range (start, end)
                '''
                self.SetTitle('Submit turn table to Tractor (PlutoWithDamage)')
                self.GroupBegin(id=1013, flags=c4d.BFH_SCALEFIT, cols=1)
                #
                self.GroupBegin(id=1014, flags=c4d.BFH_SCALEFIT, cols=2)
        
                self.AddStaticText(TTR_COMMENT_LABEL, c4d.BFV_MASK |
                                   c4d.BFH_RIGHT, name="Comments")
                self.AddEditText(TTR_COMMENT_EDIT, c4d.BFV_MASK |
                                 c4d.BFH_LEFT, initw=400)
        
                self.AddStaticText(TTR_FRAME_RANGE_LABEL, c4d.BFV_MASK |
                                   c4d.BFH_RIGHT, name="Frame range (start,end,step)")
                self.GroupBegin(id=1015, flags=c4d.BFH_SCALEFIT, cols=3)
                self.AddEditNumberArrows(
                    TTR_FRAME_RANGE_START, c4d.BFV_MASK, initw=100)
                self.AddEditNumberArrows(TTR_FRAME_RANGE_END, c4d.BFV_MASK, initw=100)
                self.AddEditNumberArrows(TTR_FRAME_RANGE_STEP, c4d.BFV_MASK, initw=100)
                self.GroupEnd()
        
                self.GroupEnd()
                #
                self.GroupBegin(id=1016, flags=c4d.BFV_MASK | c4d.BFH_RIGHT, cols=2)
                self.AddButton(TTR_CANCEL_BUTTON, c4d.BFV_MASK |
                               c4d.BFH_RIGHT, initw=100, name="Cancel")
                self.AddButton(TTR_SUBMIT_BUTTON, c4d.BFV_MASK |
                               c4d.BFH_RIGHT, initw=100, name="Submit")
                self.GroupEnd()
                return True
        
        
        if __name__ == "__main__":
            dlg = MyDialog()
            dlg.Open(c4d.DLG_TYPE_ASYNC, xpos=-1, ypos=-1, defaultw=500, defaulth=500)
        

        EDIT: Please ensure your Plugin Id come from https://developers.maxon.net/forum/pid in order to be sure this is a real Unique ID and nobody else will use it.

        MAXON SDK Specialist
        developers.maxon.net

        1 Reply Last reply Reply Quote 0
        • N
          nicholas_yue
          last edited by

          I have generated the IDs from the site you recommended.

          When I replace the plugin IDs with those generated from https://developers.maxon.net/forum/pid the menu would not even load.

          Cheers

          1 Reply Last reply Reply Quote 0
          • ferdinandF
            ferdinand
            last edited by

            Hi @nicholas_yue,

            what @m_adam meant with his posting (he did the edit on my post), was that you should get a proper plugin id for TTR_PLUGIN_ID (new plugin ids are currently roughly in the 1,000,000 range, which is why yours does stand out). Probably with the assumption that TTR_PLUGIN_ID is somewhere used as an id to register a plugin.

            1. You do not have to register plugin ids for GeDialog elements, you can just assign ids freely here.
            2. Also within the scope of the script it does not matter what TTR_PLUGIN_ID equates to, since it is not used for registration.
            3. Your menu not loading at all should not be caused by using plugin ids, since the address space for both gadget ids and plugin ids is the same (Int32) and you are not even close to that cap.

            To get to the ground of your problem, you should post your modified code and any exceptions Cinema does raise in its console.

            Cheers,
            Ferdinand

            MAXON SDK Specialist
            developers.maxon.net

            N 1 Reply Last reply Reply Quote 0
            • N
              nicholas_yue @ferdinand
              last edited by

              @zipit There was a typo when updating to use the new IDs generated from Maxon, it has since been resolved and the plugins are loading.

              Cheers

              1 Reply Last reply Reply Quote 0
              • ferdinandF
                ferdinand
                last edited by

                Hi,

                without further feedback, we will consider this thread as solved by Monday and flag it accordingly.

                Cheers,
                Ferdinand

                MAXON SDK Specialist
                developers.maxon.net

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