Python Tag and Area Lights



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 18/09/2012 at 23:31, xxxxxxxx wrote:

    Hi guys!
    I have an area light that I'd like to be set to Object mode and I would like the child to be defined as that object. And, if possible, have a shortcut for this sort of light in the top panel with my other lights.

    I understand this can be done using a Python tag but I know nothing about it.

    If you could help or at least point me in the right direction where I can learn, I would really appreciate it :-D

    Thanks in advance!



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 19/09/2012 at 11:34, xxxxxxxx wrote:

    Hello.  I think this script will be the button you want, select the objects you want and then when you run it they'll be inserted under a newly created light and put into the objects list.

      
    import c4d  
    from c4d import gui  
      
      
    def main() :  
      objs = doc.GetActiveObjects(True)  
      light = c4d.BaseObject(c4d.Olight)  
      light[c4d.LIGHT_TYPE] = 8  #set type to area  
      inexclude = c4d.InExcludeData()  #Create and inexclude data to set the light's one too.  
       
      doc.InsertObject(light)#insert the object into the scene  
        
      for obj in objs:#if mutliple objects are selected it will insert all of them into the include data  
          inexclude.InsertObject(obj,15)  
          obj.InsertUnder(light) #move the objects under the newly created light  
      light[c4d.LIGHT_EXCLUSION_LIST] = inexclude  
        
      c4d.EventAdd()  
        
    if __name__=='__main__':  
      main()  
     
    

    And I think this is the code for a python tag you want:

      
    import c4d  
    #Welcome to the world of Python  
      
      
    def main() :  
      obj = op.GetObject()#Get the object that owns the tag  
      children = obj.GetChildren() #Get the children of that object  
      inexclude = c4d.InExcludeData()  #Create and inexclude data to set the light's one too.  
        
      for child in children:#if mutliple objects are selected it will insert all of them into the include data  
          inexclude.InsertObject(child,15)  
            
      obj[c4d.LIGHT_EXCLUSION_LIST] = inexclude  
      c4d.EventAdd()  
    

    Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 20/09/2012 at 04:15, xxxxxxxx wrote:

    Hi Dan! Thanks for the reply! :-D
    What I'm looking for is for the first child to be placed as an object in:

    Light Attributes > Details > Object (right under Area Shape);

    And where did you learn this coding??



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 20/09/2012 at 09:11, xxxxxxxx wrote:

    No problem, I think this is what you want then.

    The script:

      
    import c4d  
    from c4d import gui  
      
      
    def main() :  
      obj = doc.GetActiveObject()#Gets only the first active object  
      if obj != None:  
          light = c4d.BaseObject(c4d.Olight)  
          light[c4d.LIGHT_TYPE] = 8  #set type to area  
            
          doc.InsertObject(light)#insert the object into the scene  
            
            
          obj.InsertUnder(light) #move the objects under the newly created light  
          light[c4d.LIGHT_AREADETAILS_SHAPE] =6  
          light[c4d.LIGHT_AREADETAILS_OBJECT] = obj #set the selected object as the object field  
          c4d.EventAdd()  
        
    if __name__=='__main__':  
      main()  
    

    The tag:

      
    import c4d  
    #Welcome to the world of Python  
      
      
    def main() :  
      obj = op.GetObject()#Get the object that owns the tag  
      child = obj.GetDown() #Get the first child of that object  
      obj[c4d.LIGHT_AREADETAILS_SHAPE] = 6 #setting area shape to object  
      obj[c4d.LIGHT_AREADETAILS_OBJECT] = child  #Set the object field to the child  
      c4d.EventAdd()  
    

    I've been doing Python with C4D for a bit now, I started with this tutorial:  http://chicagoc4d.com/videos/python/189-introduction-to-python  I wouldn't worry about the twitter stuff through.  Everyone on the forum has been a huge help as well.

    Dan



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 21/09/2012 at 02:57, xxxxxxxx wrote:

    Dude awesome thanks!
    Really appreciate the # explanations! Definitely learned something useful here.

    Cheers, dude.
    David


Log in to reply