|10 October 2012||#1|
So I have have been running through the help docs for the sdk, and I cannot seem to find any sort of parent function for python. I have a feeling it is GeListNode.InsertUnder(), but I cannot seem to get it to work for the life of me. Mostly because I am having a hard time understanding the help docs and their descriptions. Here is my simple script so far. (Trying to group objects).
def groupIt(doc, op):
xName = c4d.BaseList2D.GetName(x) #gather obj name
drive = c4d.BaseObject(c4d.Onull) #create drive null
doc.InsertObject(drive) #insert drive null
drive[c4d.ID_BASELIST_NAME] = xName + "_DRIVE" #name drive null
c4d.GeListNode.InsertUnder(drive(x)) #parent object under drive null
doc = c4d.documents.GetActiveDocument()
selected = doc.GetActiveObjects(0)
for x in selected:
Any assistance or push in the right direction would be great.
|10 October 2012||#2|
Join Date: Apr 2007
In my humble opinion the Python docs leave a lot to be desired, it's almost a case where you have to know the answer already to be able to find it, heh.
'Insert under' is what you need in this case though. The tricky thing is that the command doesn't take the coordinates of the new parent object into account though, so if you just drop an object under a new object that's in a new position the child ends up moving as it maintains whatever local coordinates it has but they are now relative to its new parent (why there's not a simple flag for the InsertUnder command to handle this is beyond me). What I've done to work around this is to store the current world position of the object first, then parent it, then restore that world position again.
I guess the forum will eat this code, but there's only one indentation so it should be easy to fix.
|Thread Closed share thread|