IN_EXCLUDE in Python



  • On 10/10/2014 at 20:38, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   R16 
    Platform:      Mac OSX  ; 
    Language(s) :

    ---------
    Inserting or deleting objects from an Include/Exclude is not working.

    Tried making a new InExcludeData() and replacing my light data with it. Still doesn't work.

    testInEx = c4d.InExcludeData()
    testInEx.InsertObject(op, 1)
    op[c4d.LIGHT_EXCLUSION_LIST] = testInEx



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

    It should work. But you didn't really post much code.
    I'm guessing this is what you're trying to do?:

    #This script gets all of the selected objects  
    #Then creates an area light and inserts the objects into the light's InExclude attribute  
      
    import c4d  
    def main() :  
      objs = doc.GetActiveObjects(True)    #Get all active objects and their children  
      
      light = c4d.BaseObject(c4d.Olight)   #Create a new light object  
      light[c4d.LIGHT_TYPE] = 8            #Set it's  type to area      
      doc.InsertObject(light)              #Insert the light into the scene  
      
      inexclude = c4d.InExcludeData()      #Create an InExcludeData class instance  
        
      for obj in objs:  
          inexclude.InsertObject(obj,15)   #Insert all active objects into the InExclude data list  
                                           #15 is a flag used to make all items selected in the InExclude data attribute  
      
          obj.InsertUnder(light)           #Move the objects under the newly created light  
      
      light[c4d.LIGHT_EXCLUSION_LIST] = inexclude #Update the changes made to the InExclude data list  
        
      c4d.EventAdd()  
        
    if __name__=='__main__':  
      main()
    

    -ScottA



  • On 11/10/2014 at 09:52, xxxxxxxx wrote:

    It works with that code.

    However, I shouldn't have to make a InExcludeData class. I should be able to modify objects in the current one. Heres an example of my situation.

      
    import c4d
    def main() :
        
        obj = op    #Get current object
        tag = obj.GetTag(1033673) #get tag that contains the Incude/Exclude
        nextObj = obj.GetNext() #get the object below the current object
        inc = tag[c4d.INCLUDEEXCLUDE] #get the include/exclude from the tag
      
        inc.InsertObject(nextObj,15) #insert object on tags include/exclude
      
        
        c4d.EventAdd()
        
    if __name__=='__main__':
        main()
    


  • On 03/11/2014 at 15:59, xxxxxxxx wrote:

    Hi,

    I guess you just need to write it back to your inexcludelist like:

      
    import c4d  
    def main() :  
        
      obj = op    #Get current object  
      tag = obj.GetTag(1033673) #get tag that contains the Incude/Exclude  
      nextObj = obj.GetNext() #get the object below the current object  
      inc = tag[c4d.INCLUDEEXCLUDE] #get the include/exclude from the tag  
      
      inc.InsertObject(nextObj,15) #insert object on tags include/exclude  
      
      #here you update your inexclude list  
      tag[c4d.INCLUDEEXCLUDE]= inc  
      
      
      
      c4d.EventAdd()  
        
    if __name__=='__main__':  
      main()  
      
    

    Best wishes
    Martin


Log in to reply