Create editable sphere from Py-Generator? [SOLVED]



  • On 11/10/2014 at 08:36, xxxxxxxx wrote:

    I have been searching for some time but cannot find a simple answer to this that actually works for the Python Generator:

    How can the Python Generator create a sphere and then make it editable, so it is no longer a primitive?

    Thanks,
    S



  • On 11/10/2014 at 16:38, xxxxxxxx wrote:

    Hi.
     
    as far as I know, the Python generator don´t let you insert a converted polygonal version, offhandedly.
    You can write your own Sphere object or use this workaround;
    The generator has some userdata to manipulate the sphere and a child object which stays every time updated.
    Like this example:

      
    import c4d  
    from c4d import utils  
      
      
    def main() :  
        
      obj=c4d.BaseObject(c4d.Osphere)  
        
      # check if there is allready userdata for the python generator  
      # just to begin with something; insert userdata for the radius of the sphere  
      if  op.GetUserDataContainer() == []:  
          radius=c4d.GetCustomDataTypeDefault(c4d.DTYPE_REAL)  
          radius[c4d.DESC_NAME] = "radius"     
          op.AddUserData(radius)  
          radiusvalue = op[c4d.ID_USERDATA,1]  
      else:  
          radiusvalue = op[c4d.ID_USERDATA,1]  
            
            
      #set the sphere to the user given radius      
      obj[c4d.PRIM_SPHERE_RAD] = radiusvalue  
      
      
            
      #convert to a polygonal object  
      newobjList = utils.SendModelingCommand(  
                              command = c4d.MCOMMAND_CURRENTSTATETOOBJECT,  
                              list= [obj.GetClone()],  
                              mode=c4d.MODELINGCOMMANDMODE_ALL,       
                              doc = doc)  
                                
      
      #instead of letting the generator creating an object directly  
      #do this set and replace code for your polygonal object  
      if op.GetDown()==None:  
          doc.InsertObject(newobjList[0],op)  
      else:  
          obj_2=op.GetDown()  
          obj_2.Remove()  
          doc.InsertObject(newobjList[0],op)  
            
      return   
      
    

    But I´m not sure if this is the best solution.
    I´m really interested, if there is a better way to solve it.
    There was another post with a circle object lately.

    https://plugincafe.maxon.net/topic/8124/10584_python-generator--spline-outline

    cheers
    Martin

    Edit:
    the geometrical manipaltion of the sphere will be gone after the generator refreshes the sphere.
    It´s just a replacement.
    if you want real procedural geometrie watch out for the Houdini integration.
    or Fabric engine at the beginning of 2015.



  • On 12/10/2014 at 06:44, xxxxxxxx wrote:

    Great! This is exactly what I was looking for. Thank you so much for taking the time to explain that for me.

    Thanks,
    S



  • On 13/10/2014 at 04:35, xxxxxxxx wrote:

    you´re welcome !
    Cheers,
    Martin


Log in to reply