Is it possible to array a group of objects?
For example, if I have three objects in a group, (I want to keep them as separate objects) is it possible to easily duplicate them as if I pressed AltD for every single one?
Is it possible to array a group of objects?
For example, if I have three objects in a group, (I want to keep them as separate objects) is it possible to easily duplicate them as if I pressed AltD for every single one?
This answer was inspired by this answer here
here is a solution that actually allows use to use the array modifier to duplicate grouped objects. It does, however, require one extra mesh.
We begin with our grouped object:
Then add a plane. Go into the object properties for that plane, and enter the instancing tab (called duplication in 2.7). Select faces.
Finally, select your group object then your plane, and hit Ctrl-P to parent them, selecting Object.
Now, finally, if you add an array modifier to your plane, the group object will be duplicated:
Demo file to see final result:
Another way for more flexible needs:
This process makes it possible to move, scale and rotate your objects freely.
One way to do that is to execute Shift-A / Add > Group Instance > [group name] to instance the group as a single object. Though it's basically an Empty, so we can't put an Array modifier on it, we can still Alt-D on the instance to create linked-duplicates.
Edit: For a more automated tool, we do need some basic scripting. I've written a short operator to do just that. Here's the key part:
for count in count_product:
loc = center + Vector([count[0] * self.offset[0],
count[1] * self.offset[1],
count[2] * self.offset[2]])
dup_obj = bpy.data.objects.new(group.name + '_array.000', None)
dup_obj.location = loc
dup_obj.dupli_type = 'GROUP'
dup_obj.dupli_group = group
context.scene.objects.link(dup_obj)
It just creates an array of group instances along three axis: