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
    1. Maxon Developers Forum
    2. shurkan
    S
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 2
    • Best 0
    • Controversial 0
    • Groups 0

    shurkan

    @shurkan

    0
    Reputation
    2
    Profile views
    2
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    shurkan Unfollow Follow

    Latest posts made by shurkan

    • RE: Realtime Slider Update

      SOLVED!
      I got it, instead of using c4d.EventAdd(),
      what I was searching for is c4d.DrawViews().
      Now the Slider works interactive. 🙂

      import c4d
      
      class SliderDialog(c4d.gui.GeDialog):
          def __init__(self):
              super().__init__()
              self.slider_id = 1001
              self.last_value = None
      
          def CreateLayout(self):
              self.SetTitle("Slider")
              self.AddEditSlider(self.slider_id, c4d.BFH_SCALEFIT, initw=200)
              self.SetFloat(self.slider_id, 0.0, min=0.0, max=1.0, step=0.01)
              return True
      
          def Command(self, id, msg):
              if id == self.slider_id:
                  value = self.GetFloat(self.slider_id)
                  print(f"Real-time slider value: {value}")
                  self.UpdateScene(value)
              return True
      
          def UpdateScene(self, value):
              doc = c4d.documents.GetActiveDocument()
              obj = doc.SearchObject("Cube")
              if obj:
                  obj[c4d.ID_BASEOBJECT_REL_SCALE, c4d.VECTOR_X] = value
                  #c4d.EventAdd()
                  c4d.DrawViews() # That's it
      
      if __name__ == "__main__":
          doc = c4d.documents.GetActiveDocument()
          obj = doc.SearchObject("Cube")
          if not obj:
              obj = c4d.BaseObject(c4d.Ocube)
              doc.InsertObject(obj)
              c4d.EventAdd()
      
          dlg = SliderDialog()
          dlg.Open(c4d.DLG_TYPE_ASYNC)
      

      Cheers

      posted in Cinema 4D SDK
      S
      shurkan
    • Realtime Slider Update

      Dear community,

      I'm trying to scale a cube with a Slider in realtime. But I don't get it.

      The cube is only scaled after the mouse is released and not in realtime.

      import c4d
      
      class SliderDialog(c4d.gui.GeDialog):
          def __init__(self):
              super().__init__()
              self.slider_id = 1001
              self.last_value = None
      
          def CreateLayout(self):
              self.SetTitle("Slider")
              self.AddEditSlider(self.slider_id, c4d.BFH_SCALEFIT, initw=200)
              self.SetFloat(self.slider_id, 0.0, min=0.0, max=1.0, step=0.01)
              return True
      
          def Command(self, id, msg):
              if id == self.slider_id:
                  value = self.GetFloat(self.slider_id)
                  print(f"Real-time slider value: {value}")
                  self.UpdateScene(value)
              return True
      
          def Message(self, msg, result):
              if msg.GetId() == c4d.BFM_ACTION_INDRAG:
                  value = self.GetFloat(self.slider_id)
                  if value != self.last_value:
                      self.last_value = value
                      print(f"Dragging slider value: {value}")
                      self.UpdateScene(value)
              return super().Message(msg, result)
      
          def UpdateScene(self, value):
              doc = c4d.documents.GetActiveDocument()
              obj = doc.SearchObject("Cube")
              if obj:
                  obj[c4d.ID_BASEOBJECT_REL_SCALE, c4d.VECTOR_X] = value
                  c4d.EventAdd()
      
      if __name__ == "__main__":
          doc = c4d.documents.GetActiveDocument()
          obj = doc.SearchObject("Cube")
          if not obj:
              obj = c4d.BaseObject(c4d.Ocube)
              doc.InsertObject(obj)
              c4d.EventAdd()
      
          dlg = SliderDialog()
          dlg.Open(c4d.DLG_TYPE_ASYNC)
      

      Thank you in advance for your assistance.

      posted in Cinema 4D SDK python
      S
      shurkan