Hello @wtools3d,
Thank you for reaching out to us. Unfortunately, your question is a bit ambiguous, especially regarding how you register your plugin and what you would consider to be "to be completely ignored", and finally the code you have written.
Our C++ ObjectData
example plugin Rounded Tube does overwrite ::GetDimension
and it does what I would expect it to do.
ObjectData::GetDimension
is called when BaseObject::GetDimension
is invoked (or its Python counter parts .GetMp()
and .GetRad()
). The call chain from BaseObject::GetDimension
goes through our core and visits during this also ObjectData::GetDimension
. There are of course fallback methods in place which take over when ObjectData::GetDimension
is not implemented, but I neither see any general conditions which would suppress the output from ObjectData::GetDimension
nor is there a difference when I inspect the values.
- The only central exit conditions are:
a. The plugin interface is the null pointer.
b. The plugin is OBJECT_ISSPLINE
, then SplineObject.GetDimension
will be called on the cache of the Spline object generator your plugin is implementing.
c. Otherwise ObjectData::GetDimension
will be called with the bounding box values which have been calculated so far.
- Other events and entities are also calling this same chain, and from what I can see, they all work properly.
Calling BaseObject::GetDimension
indirectly from Python, the returned value 250, 50, 250
lines up with the value 500, 100, 500
in the Coordinate Manager. Note that GetDimension
asks for the 'radii' of the bounding box, not its diameters. So, you must return half the value for each bounding box axis.

And RoundedTube::GetDimension
being called, setting these values, the break point is on the method scope exit, and shown are the returned values for rad
:

Cheers,
Ferdinand