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

    gui input dialog as integer [SOLVED]

    PYTHON Development
    0
    6
    556
    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
      Helper
      last edited by

      On 30/07/2015 at 02:40, xxxxxxxx wrote:

      Hi everyone,

      I am currently trying to create an input box, where someone can put a number in and then the number will be used for different kind of things.

      So I created this field.

      x = gui.InputDialog("Object ID", "ID")

      that works fine, but I am always getting a string back.  But I need an integer or an vector. So how can I tell my InputDialog, that this should be an integer or a vector? I know that I can create a vector by using c4d.Vector(). But how do I connect it with the InputDialog?

      Would be great, if someone could help me.

      Thanks a lot

      Anna

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

        On 30/07/2015 at 04:36, xxxxxxxx wrote:

        Hello Anna

        non elegant and silly example:

        import c4d  
        from c4d import gui  
          
        def main() :  
          s = gui.InputDialog("Object ID", "10.5 25 3")  
          x, y, z = s.split()[0], s.split()[1], s.split()[2]  
          print c4d.Vector(float(x), float(y), float(z))  
           
        if __name__=='__main__':  
          main()
        

        upd.
        Learn how to work http://www.tutorialspoint.com/python/python_strings.htm
        and int/float and etc. http://www.tutorialspoint.com/python/python_numbers.htm

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

          On 31/07/2015 at 02:35, xxxxxxxx wrote:

          Hi,

          there are no pre-made dialogs for numeric values. Ilya's solution is one way and definitely works, but this also may get tedious to check and care for user input errors.
          Another option would be to create your own dialog using GeDialog class with proper gadgets for floats or vectors. There are several examples in the Python SDK setting up custom dialogs. For example the Py-MemoryViewer.

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

            On 31/07/2015 at 06:10, xxxxxxxx wrote:

            Somewhere over forum, Niklas post solution how to use resources from Resedit solution inside c4d without plug-in skeleton.
            Anna, you can prepare simple dialogs in resedit with gadget - Vector(id = 23)*, add functions and invoke in c4d environment.
            It will add custom gui to scripts.

            * - which Andreas pointed

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

              On 01/08/2015 at 07:27, xxxxxxxx wrote:

              Hey you two,

              thanks a lot for your answers, it is really helpful 🙂 I am currently reading through all the infos and trying to write something to show. I guess I will come back with lots of more questions.

              Thanks a lot again

              Anna

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

                On 01/08/2015 at 08:53, xxxxxxxx wrote:

                another primitive example, select object and execute script:

                import c4d  
                from c4d import gui  
                  
                GROUP_ID1=1000  
                BUTTON1=1001  
                VX=1002  
                VY=1003  
                VZ=1004  
                ST=1005  
                  
                class Test_Dlg(gui.GeDialog) :  
                  
                  def addvector(self) :  
                      doc = c4d.documents.GetActiveDocument()  
                      op = doc.GetActiveObject()  
                      if not op: return False  
                      doc.StartUndo()   
                      doc.AddUndo(c4d.UNDOTYPE_CHANGE, op)         
                      op.SetAbsPos(c4d.Vector(self.GetFloat(VX),self.GetFloat(VY),self.GetFloat(VZ)))  
                      doc.EndUndo()  
                      c4d.SendCoreMessage(c4d.COREMSG_CINEMA, c4d.BaseContainer(c4d.COREMSG_CINEMA_FORCE_AM_UPDATE))          
                      return True  
                        
                  def CreateLayout(self) :  
                      #creat the layout of the dialog  
                      self.GroupBegin(GROUP_ID1, c4d.BFH_SCALEFIT, 4, 1)  
                      self.AddStaticText(ST, c4d.BFH_SCALE, name="Value of vector data:")  
                      self.AddEditNumberArrows(VX, c4d.BFH_SCALE)  
                      self.AddEditNumberArrows(VY, c4d.BFH_SCALE)  
                      self.AddEditNumberArrows(VZ, c4d.BFH_SCALE)    
                      self.GroupEnd()  
                      self.GroupBegin(GROUP_ID1, c4d.BFH_SCALEFIT, 2, 1)  
                      self.AddButton(BUTTON1, c4d.BFH_SCALE, name="Apply")  
                      self.GroupEnd()  
                      return True  
                  
                  def InitValues(self) :  
                      #initiate the gadgets with values  
                      self.SetTitle('Add vector')  
                      return True  
                  
                  def Command(self, id, msg) :  
                      #handle user input  
                      if id==BUTTON1:  
                          self.addvector()  
                          c4d.DrawViews(c4d.DA_ONLY_ACTIVE_VIEW|c4d.DA_NO_THREAD|c4d.DA_NO_ANIMATION)  
                          self.Close()  
                      return True  
                    
                dlg = Test_Dlg()  
                dlg.Open(c4d.DLG_TYPE_MODAL, xpos=600, ypos=350, defaultw=400, defaulth=100)
                
                1 Reply Last reply Reply Quote 0
                • First post
                  Last post