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

    IN_EXCLUDE in Python

    PYTHON Development
    0
    4
    784
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      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

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        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

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          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()
          
          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            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

            1 Reply Last reply Reply Quote 0
            • M m_adam referenced this topic on
            • First post
              Last post