I made many copies of an object, then I thought it would've been better if I made them to share the same Data (being an instance of the same original object), I know how to do it one by one, is there a way to do it for all of them at once? I tried Copy Attribute add-on but didn't find what option can do that, or even if this is possible in the first place.
3 Answers
Blender makes this very easy.
Select all the objects you want to have the same data, then select the object which the data will be copied from, last so that is it the active object.
Press CtrlL and choose Object Data. Or from the 3D view header Object > Make Links > Object Data.
Doing that will give the same outcome as if you had used the linked duplicates (AltD) to start with.
Here is a simple script, that assumes you want to have all mesh objects selected share the same mesh as the active_object (last selected).
import bpy
context = bpy.context
# use the mesh of the active object
obj = context.active_object
mesh = obj.data
if obj and obj.type == 'MESH':
mesh_obs = [o for o in context.selected_objects if o is not obj and o.type == 'MESH']
for mo in mesh_obs:
mo.data = mesh
Try selecting all your copies, then select your original object and press CtrlL - Object Data. After that, changing the data of your original object should cause changes in copies.
-
$\begingroup$ Awesome, thank you, just saved be lots of tedious work! $\endgroup$ Commented Apr 5, 2016 at 14:29