Iterate works with firstobject, not with tagobject
-
On 30/10/2014 at 08:58, xxxxxxxx wrote:
Hi,
I have a project which contains these methods:
def GetNextObject(self, op) :
if op == None:
return Noneif op.GetDown() :
return op.GetDown()while not op.GetNext() and op.GetUp() :
op = op.GetUp()return op.GetNext()
def IterateHierarchy(self, op) :
if op is None:
returncount = 0
while op:
count += 1
print op.GetName()
op = self.GetNextObject(op)return count
Inside Init I call IterateHierarchy; if I do it with the first object, he prints all my objects.
However when I try to do it with the tagobject it returns None Objects.I get them by this:
global firstobject
firstobject = doc.GetFirstObject()
global tagobject
tagobject = tag.GetObject()Does anybody see the problem here?
Thanks in advance for your awesome help! -
On 30/10/2014 at 16:22, xxxxxxxx wrote:
Well, for one "tag" isn't a predefined variable. You'll need to find it using
doc.GetActiveTag()
In addition to that, the tag needs to be selected for it to be found.
Also, for your method to print all of the objects in your scene, you need to select a tag on the very first object in the scene. This works for me:
import c4d from c4d import gui #Welcome to the world of Python def GetNextObject(op) : if op == None: return None if op.GetDown() : return op.GetDown() while not op.GetNext() and op.GetUp() : op = op.GetUp() return op.GetNext() def IterateHierarchy(op) : if op is None: return count = 0 while op: count += 1 print op.GetName() op = GetNextObject(op) return count def main() : if (doc is None) or (not doc.IsAlive()) : return firstobject = doc.GetFirstObject() if (firstobject is None) or (not firstobject.IsAlive()) : return tag = doc.GetActiveTag() if (tag is None) or (not tag.IsAlive()) : return tagobject = tag.GetObject() IterateHierarchy(tagobject) if __name__=='__main__': main()
Perhaps you want to find the first object in your scene from a tag? Try:
first_object = tag.GetDocument().GetFirstObject()