Linked complex object with array modifier help

Hi, I am using the latest version of blender and would like advice on how to bring in a linked object into my file and place the linked object ( in this case a single row array of solar panels) and place them in many different array configurations/groups within my scene. I am used to working in C4D where you can easily modify an instance and add arrays. I have tried the “Make library override” but it breaks up my solar panel array into its multiple objects and I would like it stay as a single object so I can apply an array modifier to it. Is there a better/cleaner way to do this? Do I need to parent all the solar panel’s object parts in the main file that I am linking from?

Thank you for any advice. :slight_smile:

If you link a collection into a .blend file and just want to manipulate in space a row of solar panels without changing count or spacing of array, you do not necessary need to create a library override.
You may just add collection instances.

If you add a library override on a collection instance(object), you create a collection (group/layer), locally. That collection (group/layer) is visible in viewport but could be disable/hidden in viewlayer.
So, if you modify that collection, all collection instances relative to it will be modified.
So, if you want a variation, you need to do right click > Duplicate Linked in outliner to copy collection (layer/group).
Now, you have another collection (group/layer) that have its own overrides.

You may be dealing with lots of objects in outliner of final .blend file but this data is really linked from another one.

A modifier is per object. By using multi-object editing (alt key pressed while modifying a setting), you can change all modifiers on all selected objects at same time.
But if you want to deal only with one object and one modifier, you need to join all parts of a solar panel into a unique object in original .blend file.

Array modifier is not the only way to create an array of instances.
You can use Instancing panel of Object Properties or you can instance through particles.
With these methods, you can instance a simple linked object or collection instances.

Thank you @zeauro for your explanation of how linking collections works. Also great tip on editing multiple modifiers at once using the alt button. I have been doing that on a one by one basis so that will help speed up my workflow for sure. :slight_smile: I am going to look into the instance panel and particles. Would you be willing to look at the attached image and let me know what approach you feel would work best? As you can see there are a lot of instances needed and many configurations of rows and rows of solar panels. Also, many places where the same configuration is used. I want to keep it clean and simple as possible but also flexible.

12+ hours later and learned a lot since then.
If you want to make an array of something that consists of more than one object and you want to keep those objects as separate meshes… Here is what doesn’t work and finally what works. Hint: all the obvious and logical solutions do not work…

Things you might try but do not work:

  1. Make a collection and try and add an array modifier to the collection (nope it just adds a modifier to the top item in the collection repeating only that object ) Attempted workaround: turn that collection into an instance then add an array modifier to the instance. (nope can not add array modifier to an instance.

  2. Create a parented object in another file and link that file into Blender and then add an array modifier to it. (Nope can not add modifiers to linked objects) Attempted workaround Object > Relations > Make library override then add the modifier. Nope breaks up the single item into parts again only modifies the first object

  3. Parent everything to a null and add the array modifier to a null. Nope!

  4. A million other things. Nope!

Here is the crazy convoluted way that finally worked and there is no way a user would ever figure it out on their own. It is easy to implement but in no way intuitive.

  1. Create a plane then go into edit mode with plane selected and right-click and choose: Merge Vertices>At the center. Now you have a small invisible item similar to a null but will actually work!!!
  2. Add an array modifier to your super small plane. For the offset, you will want to use a constant offset because the relative offset of your super small merged vertices plane will not offset. Just add a few till you see them and you can tweak the settings later once you connect the objects to the plane.
  3. Now you can use a linked collection from another scene or an instance of a collection in your current scene. You will want to make the instance a child of your plane. Here is how to do that if you do not know. In object mode, fIrst, select the child (the instance or collection linked) then shift select the plane secondly. hold Control then P and choose Object.
  4. One final step before you are on your way arraying the crap out of things is to now select the plane/parent and go to its object properties and flip open the instancing section and select vertices.

BOOM!!! now it works.

If you are a visual learner like me… Here is a video that breaks this process down but also incorporates a curve but the overall process works with or without a curve.

Final thoughts:
I have not looked much into using particles to do this and the node tree is not how my brain works. As for using modifiers, I feel like to array a group of objects is a common thing people will want to do in a 3D scene and it would greatly improve Blenders’ user experience to make it much easier to array a group of objects.
Ideally to simply add an array modifier to a collection/group and or instance of a collection. or if not that simple to add your collection or instance of a collection as a child to a null object then add an array modifier to the null.

(Does anyone know how to submit feature requests or make an addon that will allow Blender to add an array modifier to a collection or an instance of a collection? That seems like that would be a huge improvement towards making Blender a more user-friendly application.