Moving\Deleting nodes with Python
-
Hello,
I've got a GvNode that I can rename and control, but I'm not sure how I can delete or move it's position in Xpresso.
Thanks in advance,
Sheilan. -
Hi @sheilan,
Moving Xpresso node have been discussed here, same warning as Andreas did, ID may change in the future and break your stuff since there is no symbols for theses data.Regarding how to delete a GvNode, as you may have seen, GvNode inherit from BaseList2D which inherit from GeListNode, so you can use the GeListNode.Remove method.
Here an example:
import c4d def main(): # Checks if selected object is valid if op is None: raise ValueError("op is none, please select one object.") # Retrieves the xpresso Tag xpressoTag = op.GetTag(c4d.Texpresso) if xpressoTag is None: raise ValueError("Make sure the selected object get an Xpresso Tag.") # Retrieves the node master gvNodeMaster = xpressoTag.GetNodeMaster() if gvNodeMaster is None: raise RuntimeError("Failed to retrieves the Node Master.") # Retrieves the Root node (the Main XGroup) that holds all others nodes gvRoot = gvNodeMaster.GetRoot() if gvRoot is None: raise RuntimeError("Failed to retrieves the Root Node.") # Iterates overs all nodes of this root node. firstNode = gvRoot.GetDown() if firstNode is None: raise RuntimeError("Failed to retrieves the First Node.") # Defines Y size firstNode.GetDataInstance().GetContainerInstance(1001).GetContainerInstance(1000)[109] = 50 # Defines X size firstNode.GetDataInstance().GetContainerInstance(1001).GetContainerInstance(1000)[108] = 100 # Defines the Y position firstNode.GetDataInstance().GetContainerInstance(1001).GetContainerInstance(1000)[101] = -200 # Defines the X position firstNode.GetDataInstance().GetContainerInstance(1001).GetContainerInstance(1000)[100] = -200 # GvNode is a GeListNode so you can simply use Remove firstNode.Remove() # Updates Cinema 4D c4d.EventAdd() if __name__ == '__main__': main()
If you have any questions, let me know.
Cheers,
Maxime. -
Works perfectly. Thanks!
-