Thank you for reaching out to us. Please provide the executable code with your questions, as we are otherwise guessing what you are doing. I am not going to unpack here what you could potentially be doing when you say 'using python to create the object', and why each of these options might be going wrong.
With that being said, I am a bit puzzled by why you choose this approach in general. Inserting a correction deformer only to get the bounding box of an object seems wildly inefficient. I would understand it if you were a user who is unwilling to touch Python, but since you are not, why not simply get the bounding box yourself? Am I overlooking here some Xpresso conventions or problems? I am not a big Xpresso user, so my apologies when I am overlooking something obvious.
I have provided a small example below. You could of course fashion this differently with min and max values, evaluating different caches, etc. I am just piping through the
BaseObject methods in the example to keep things simple.
If you want more help with your original solution, please provide an executable example scene.
The file: gv_py_bounding_box.c4d
The code for the Get Bounding Box node:
"""Example for a GV python node which retrieves the bounding box of an object.
op: c4d.modules.graphview.GvNode # The Xpresso node
Object: c4d.BaseList2D # In: The object to measure the bounding box for.
Offset: c4d.Vector # Out: The bounding box center.
Radius: c4d.Vector # Out: The bounding box radius.
def main() -> None:
"""Called by Cinema 4D to execute the node.
global Offset, Radius
# Pass the null vector for the results when the passed BaseLink is either
# None or not a BaseObject.
if not isinstance(Object, c4d.BaseObject):
Offset, Radius = c4d.Vector(), c4d.Vector()
# Otherwise return the bounding box values of the object.
Offset = Object.GetMp()
Radius = Object.GetRad()