Trouble Adding an Object to an in-exclude-list
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 20/06/2011 at 15:41, xxxxxxxx wrote:
I can't test it right now.
But maybe theese 2 links can help you.1. Python Tag Example, More about getting data from a InExclude
2. An example where I used an InExclude Data, about adding objects to inexcludecheers
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2011 at 08:36, xxxxxxxx wrote:
That second example is the one that I essentially reverse engineered to get where I am now. It gets me close but it seems that I can't fully manipulate an existing InExcludeList. I can accurately look at the list but I can't add anything to it. In that second example objects are added to the list before the list is added to the scene. Here is a more complete set of code that I hopefully can make do what I want:
import c4d from c4d import documents doc = c4d.documents.GetActiveDocument() # Establishes variable for the document (the project) itself selected_object = op.GetClone() # Gets copy of currently selected object def dupe() : '''Duplicates currently selected object and returns duplicated objects name''' # Add line to check if it is a cloner object selected_object[c4d.ID_BASELIST_NAME] += '.copy' doc.InsertObject(selected_object) # Duplicates currently selected object c4d.EventAdd() # Refresh the managers to show the new object def addTracer() : '''Adds a tracer object with the currently selected object as its focus''' tracer = c4d.BaseObject(1018655) # Allocate a new Tracer object doc.SetActiveObject(tracer, 1) # Adds new Tracer object to current selection obj_list = tracer[c4d.MGTRACEROBJECT_OBJECTLIST] # Assigns InExcludeData list in tracer object to variable obj_list.InsertObject(selected_object,0) # Inserts the cloned object into the tracer list doc.InsertObject(tracer) # Insert the object into the documents object list c4d.EventAdd() # Refresh the managers to show the new object def main() : dupe() addTracer() if __name__ == "__main__": main()
It seems like I need to 'complete' that InsertObject() method somehow. The problem is semantic, I wish it gave me some kind of error. I've been trying to do variations in the console and haven't been able to add or remove anything from an InExcludeData list that was already established. I can however make all of the other methods in that class work for me.
< ="utf-8"> -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2011 at 09:12, xxxxxxxx wrote:
Try this:
import c4d from c4d import gui, documents def main() : tracer = c4d.BaseObject(1018655) #Create a tracer in memory obj_list = tracer[c4d.MGTRACEROBJECT_OBJECTLIST] #Get the object list attribute and assign to a variable doc.InsertObject(tracer) #Insert the tracer to the OM from memory targetobj = doc.SearchObject("Cube") #The object to be moved into the tracer's object list obj_list.InsertObject(targetobj,0) #Insert the object into the list in memory only tracer[c4d.MGTRACEROBJECT_OBJECTLIST,0] = obj_list #Update the changes made to the list from memory c4d.EventAdd() if __name__ == "__main__": main()
-ScottA
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2011 at 09:34, xxxxxxxx wrote:
tracer[c4d.MGTRACEROBJECT_OBJECTLIST,0] = obj_list #Update the changes made to the list from memory
Ah, did not spot that issue. You have to set the obj_list back again to the tracerobject. But,delete the ",0" at the end. I don't know why it does work, but it is unnecessary. Cheers,
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2011 at 12:02, xxxxxxxx wrote:
Very cool, Scott that solution worked like a charm.
Thank you very much Scott and Nux, you've both been a huge help.
One thing though Nux, I'm not sure what you mean in the previous post, if I pull that ", 0" at the end it throws an error looking for the flag, which makes sense relative to the SDK.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 21/06/2011 at 13:25, xxxxxxxx wrote:
Don't understand you right, I think.
What solution works ?tracer[c4d.MGTRACEROBJECT_OBJECTLIST,0]
or
tracer[c4d.MGTRACEROBJECT_OBJECTLIST]
?
Actually the last one should only work.Cheers
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 22/06/2011 at 08:21, xxxxxxxx wrote:
Ah y'know what? I misread your post, I was looking at the '0' in the line above. You are correct. Thanks again to both of you, not only for this reply but for a bunch of the other ones I've read on this forum. Your efforts are very much appreciated.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/09/2012 at 09:07, xxxxxxxx wrote:
I know that this is an old thread, but I thought I'd ask my question here because it's the same topic.
I'm using the above-mentioned technique to add an effector to a cloner object's effector list. While it now appears on the list, it is deactivated. How do I access that little checkbox within the cloner's effector list that activates or deactivates the effector?
Thanks,
Luke -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/09/2012 at 11:58, xxxxxxxx wrote:
Originally posted by xxxxxxxx
I'm using the above-mentioned technique to add an effector to a cloner object's effector list. While it now appears on the list, it is deactivated. How do I access that little checkbox within the cloner's effector list that activates or deactivates the effector?
It's not well documented but you can activate/deactivate an object in an in-/exclude list when inserting it by calling:
list.InsertObject(effector, 1)
As you can see, just pass 1 as second parameter instead of 0.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 04/09/2012 at 12:15, xxxxxxxx wrote:
Originally posted by xxxxxxxx
It's not well documented but you can activate/deactivate an object in an in-/exclude list when inserting it by calling:
list.InsertObject(effector, 1)
As you can see, just pass 1 as second parameter instead of 0.
Fantastic. Thanks!