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