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 -