How do I get a proxy object dimensions? I'm trying to get the dimensions (bounding box) from a linked object in python, but all the methods to commonly get the measures give me a zero vector.

bpy.data.objects['Linked_Object'].dimensions
# (0.0, 0.0, 0.0)

bpy.data.objects['Linked_Object'].bound_box
# ((0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0), (0.0, 0.0, 0.0))


I imagine is because the object is an empty, so it does not have dimension. I suppose there is a way to access the underlying information of the linked object but I cannot find a way to do it.


  I have to keep the object linked, I cannot make a local copy because it can be modified in the source file.


Any Ideas how to do it? 

Thank you.
For a linked collection instance

Pertaining to 2.8x

Example below. Collection instance "Cube.001" is linked from library "Cube.blend" where it belongs to collection "Cube"

&gt;&gt;&gt; C.object
bpy.data.objects['Cube.001']

&gt;&gt;&gt; C.object.type
'EMPTY'

&gt;&gt;&gt; C.object.library
bpy.data.libraries['CUBE.blend']


Notice the collection is linked too

&gt;&gt;&gt; C.object.instance_collection
bpy.data.collections['Cube']

&gt;&gt;&gt; D.collections['Cube'].objects[:]
[bpy.data.objects['Cube']]


The dimensions of the individual objects in the group can be found via

&gt;&gt;&gt; for o in C.object.instance_collection.objects:
...     o.name, o.type, o.dimensions
...     
('Cube', 'MESH', Vector((2.0000009536743164, 2.0000009536743164, 2.0)))


which could be used to make a "virtual" bounding box for the collection.

How to have a boundary box around a whole group instance?

Similarly for linking the collection and instancing from local blend.