How to recover a float type value?



  • On 16/02/2018 at 18:38, xxxxxxxx wrote:

    Hi,

    How to recover a float type value, with Python ?
    The code below, allows the input of a value of type float, but I recover a rounded value

    import c4d
    from c4d import gui, documents

    class sample(gui.GeDialog) :
        button_ID = 1001
        def CreateLayout(self) :
            
            self.GroupBegin(100,c4d.BFH_CENTER,2,0,"Infos");
            self.GroupBorder(c4d.BORDER_GROUP_IN)
            self.GroupBorderSpace(10,5,10,5)
            self.SetTitle("Sample")

    self.AddStaticText(1, c4d.BFH_LEFT, 0, 0, "Name", c4d.BORDER_NONE)
            self.AddEditText(2,c4d.BFH_LEFT,200,10)

    self.AddStaticText(3, c4d.BFH_LEFT, 0, 0, "Weight", c4d.BORDER_NONE)
            self.AddEditNumber(4, c4d.BFH_LEFT,100,10)

    self.GroupEnd()
            self.AddButton(self.button_ID,c4d.BFH_SCALEFIT|c4d.BFV_SCALEFIT, 100, 15, "Print in console")

    return True

    def Command(self, id, msg) :
            if id == self.button_ID:
                print self.GetString(2)  #ok 🙂
                print self.GetFloat(4)    #rounded down 😠

    self.Close()
            return True

    if __name__=='__main__':
        dlg = sample()
        dlg.Open(0,c4d.DLG_TYPE_MODAL_RESIZEABLE,500,300,200)
        c4d.EventAdd()



  • On 17/02/2018 at 04:20, xxxxxxxx wrote:

    you need to add the following code:

        
        
        def InitValues(self) :  
            self.SetFloat(4,0.0)
    

    It seems that AddEditNumber use a int as default type



  • On 17/02/2018 at 09:23, xxxxxxxx wrote:

    Hi,

    Thank you Pyr, your solution works perfectly

    ***********************************************************************
    The new code
    ***********************************************************************
    import c4d
    from c4d import gui, documents

    def InitValues(self) :
    **    self.SetFloat(4,0.0)**
        
    class sample(gui.GeDialog) :
        button_ID = 1001
        def CreateLayout(self) :
            
            self.GroupBegin(100,c4d.BFH_CENTER,2,0,"Infos");
            self.GroupBorder(c4d.BORDER_GROUP_IN)
            self.GroupBorderSpace(10,5,10,5)
            self.SetTitle("Sample")

    self.AddStaticText(1, c4d.BFH_LEFT, 0, 0, "Name", c4d.BORDER_NONE)
            self.AddEditText(2,c4d.BFH_LEFT,200,10)

    self.AddStaticText(3, c4d.BFH_LEFT, 0, 0, "Weight", c4d.BORDER_NONE)
            self.AddEditNumber(4, c4d.BFH_LEFT,100,10)
            InitValues(self)

    self.GroupEnd()
            self.AddButton(self.button_ID,c4d.BFH_SCALEFIT|c4d.BFV_SCALEFIT, 100, 15, "Print in console")

    return True

    def Command(self, id, msg) :
            if id == self.button_ID:
                print self.GetString(2)  #ok 🙂
                print self.GetFloat(4)    #ok 🙂

    self.Close()
            return True

    if __name__=='__main__':
        dlg = sample()
        dlg.Open(0,c4d.DLG_TYPE_MODAL_RESIZEABLE,500,300,200)
        c4d.EventAdd()

    ***********************************************************************
    with variant
    ***********************************************************************
    import c4d
    from c4d import gui, documents

    class sample(gui.GeDialog) :
        button_ID = 1001      
        def CreateLayout(self) :
            
            self.GroupBegin(100,c4d.BFH_CENTER,2,0,"Infos");
            self.GroupBorder(c4d.BORDER_GROUP_IN)
            self.GroupBorderSpace(10,5,10,5)
            self.SetTitle("Sample")

    self.AddStaticText(1, c4d.BFH_LEFT, 0, 0, "Name", c4d.BORDER_NONE)
            self.AddEditText(2,c4d.BFH_LEFT,200,10)

    self.AddStaticText(3, c4d.BFH_LEFT, 0, 0, "Weight", c4d.BORDER_NONE)
            self.AddEditNumber(4, c4d.BFH_LEFT,100,10)
            self.SetFloat(4,0.0)

    self.GroupEnd()
            self.AddButton(self.button_ID,c4d.BFH_SCALEFIT|c4d.BFV_SCALEFIT, 100, 15, "Print in console")

    return True

    def Command(self, id, msg) :
            if id == self.button_ID:
                print self.GetString(2)  #ok 🙂
                print self.GetFloat(4)    #ok 🙂

    self.Close()
            return True

    if __name__=='__main__':
        dlg = sample()
        dlg.Open(0,c4d.DLG_TYPE_MODAL_RESIZEABLE,500,300,200)
        c4d.EventAdd()



  • On 18/02/2018 at 00:31, xxxxxxxx wrote:

    i would recommend that you put the initValue inside of your GeDialog class

    the advantage is that you didn't need to call the function manually:


    See GeDialog.InitValue SDK

    Called when the dialog is initialized by the GUI.
    

Log in to reply