Move an object in hierarchy

  • Hi everyone,

    In the script I'm writing I need to delete an object with some children, without deleting the children. So, I have to "move" the children one step up of the hierarchy, before deleting the parent. I went through the documentation but haven't found any method to do that (to move an object in its hierarchy). Any suggestion?

  • Hi, you have to write an own routine for that. I was writing this one a while ago:

     * @brief Moves all children of srcObj to tgtObj. Adds Undos.
     * @param srcObj The source object
     * @param tgtObj The target object
    inline void g_MoveChildren(BaseObject* srcObj, BaseObject* tgtObj)
    	if (!srcObj)
    	auto doc = srcObj->GetDocument();
    	if (!doc)
    	auto child = srcObj->GetDown();
    	while (child)
    		const auto temp = child->GetNext();
    		doc->AddUndo(UNDOTYPE::CHANGE, child);
    		child = temp;

    For further information about hierarchy manipulation, see

  • Hi Rage,

    you could try CallCommand() with id 1019951 - calling this should delete all selected objects without deleting their children. Might also do what you're after?


  • Hi,

    both answers already provide valid solutions. Nice.

    @Rage: Please also consider to use the tagging system (see Read Before Posting) and the Question and Answer feature (see Q&A New Functionality). Especially the tags can help, like for example in this case @mp5gosu would probably have provided you with Python code, if the respective tag was set.
    Besides setting tags and changing into a question, I have also moved this thread into the Cinema 4D Development category.

    And then I want to add a few links to Python docs:


Log in to reply