Choose your top Archicad wishes!

Read more
About Archicad's design tools, element connections, modeling concepts, etc.

Dynamic Arrays?

What do you consider to be best practise when modeling a system of elements that are configured as an array such as rafters, joists etc.? Quite often you want to be to change array parameters such as path, distance, number of copies.

Multiply has clear limitations as it is static and doesn't group the multiplied elements making it hard to work with the system of elements once created.

Grasshopper can be used to achieve dynamic arrays but is it the best way?

The two examples given were just that - examples. They were chosen because the situation that was at hand but the question is clearly stated in general terms for systems of elements spatially configured as arrays. 


But even in the specific case with rafters and joists - how do you view them if not as a system of elements spatially configured as arrays and as such defined by paths distance, number of copies etc? And how would you typically place them in the model?

@thesleepofreason wrote:

And how would you typically place them in the model?

When placing I would use the multiply tool to get the number and spacing as required.

Once placed and they need further editing, then I would use the distribute tool to adjust the spacings - add or delete extra rafters, select all and then distribute to spread them evenly.


Also, don't forget there is the 'Roof Wizard' for roof timber.

It is not perfect but does an OK job at setting basic roof timber out if you get the settings right.



One of the forum moderators.
Versions 6.5 to 27
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11

something went wrong with my post or it was deleted ?  As Barry has said rafters are can be placed individually or as an array using the Roof Maker Tools.  Same for Joists.   But the functionality I think you are talking about is more like the Roof Accessory Tool where you can put the roof-ing on a roof ( metal roof for example) and stretch the roof around and the roofing will automatically adjust with it.   Also, keep in mind that elements don't always have to be used for what they have been named for the sake of organization.  Many things in Archicad are better modeled with elements that are chosen for the sake of what you need them to do, or what you need to do with them.  For example concrete flat work is never really flat, so it is quite often modeled using roofs.  That sort of thing.  Or you may model something because you need to use the gravity tool which only works on certain elements.  I model the soffits as roof for the sake of the Ctrl-Click function.  Lots of different ways to model an array of elements that is dependent on what you need to do with it.   Personally, I use pre-modeled assemblies of easily editable elements which are specially arrayed for just about everything.        

ArchiCAD 25 7000 USA - Windows 10 Pro 64x - Dell 7720 64 GB 2400MHz ECC - Xeon E3 1535M v6 4.20GHz - (2) 1TB M.2 PCIe Class 50 SSD's - 17.3" UHD IPS (3840x2160) - Nvidia Quadro P5000 16GB GDDR5 - Maxwell Studio/Render Multilight 2 - Adobe Acrobat Pro - ArchiCAD 6 -25

As said - I'm talking generally about arrays of elements. As soon as you talk about accessories, roofmaker or GDL objects you loose out on generality.


The functionality I'm after is being able to create a dynamic array regardless of element. A native tool for native elements - it's as easy as that or at least it should be.

Your concept - a native array for native elements - is easy to understand yes. However, it is not possible ATM, and I don't think it is easy to achieve. In fact I think it is quite difficult as it requires an intelligent matrix to control the elements while also making them independent.

The Accessory tool is a native tool. Sure its an API but so is the Wall tool, one is simply embedded in the mother API (Archicad) while the other is optional. Both are created by Graphisoft and have been around for as long as I can remember (I have 21 years on Archicad).

The Accessory tool is an intelligent matrix to control the elements while also making them independent. It uses Walls, Slabs, Roofs and Zones as the matrix control so that your intelligent array is parametrically connected to your design, making it more powerful than just an intelligent matrix.

So you have in the native Accessory tool everything you are asking for except access to other native elements as the components. Hence the contributors to this discussion have attempted to alter your perspective by highlighting the fact that any element in Archicad can be applied as another type simply by changing its classification in the settings dialogue. A GDL Object can be a Beam if you change its classification.

It is completely understandable that you don't perceive the Accessory tool as native because it is an optional "Add-On", I am sure most have this perspective. It is also completely understandable that you simply want the native tool functions in the dynamic and intelligent array, however GDL objects can also achieve this as GDL is the basis of most of these elements; Archicad began as just a GDL interface... generally (users used to love the fact they could code their own window, though we were less demanding 30 years ago).

So although I stated at the beginning it is not possible, it actually is possible in Archicad today to do what you want; it just requires a slightly different perspective.

When I build my Accessory component (starting next week and should only take 2 weeks (doing a project at the same time), that's how clever Archicad is) I will post a demonstration of what I have described above.

If you are still not content with this approach then your only option is to add your request to the wish list and wait (another year at least), or change to another software that does not have the infinite possibilities and intricate intelligence of Archicad (none of them do).

I hope this helps give you the confidence that you can get want you want out of Archicad very soon, or even today if you the current Accessory components have the geometry you need.

Creator of Cadswift's parametric GDL libraries
Creator of Infinite Openings and Component Catalogues
Push the envelope & watch it bend


What I mean't when saying "as easy as that" was precisely what to seem to be your initial read - conceptually/functionally easy. The technical actualities might make it anything but easy to realize and I claim no authority on that. I'm sure that it should be made into a wish but not sure if it should be done now or wait until the dust from the community launch settles and perhaps even the promised new wish function arises. 


The OP was made to ensure that I haven't just missed a good method to create dynamic arrays. From the response it seems that I haven't. This doesn't mean that I'm unappreciative, unconvinced nor uninterested of the actual capabilities of AC but I don't think one can say that dynamic arrays is a functionality in AC as of now.


I would say that the GH connection is as close as it gets. Would it handle all settings of the AC elements or allow for GH operations on the AC elements it would be really close.


I don't agree with that it is due to a limited perspective on my part. Its precisely because I (as you) see the elements as nothing more than geometrical representations of our choosing that I think that independency and generality is a requisite for the dynamic array functionality. It is true that a GDL object can represent a beam but it's still a GDL object as far as AC is concerned which means that complications arise if we for example want to model a slab using a roof.


It shall also be noted that although accessories are developed by GS users are (at least as I understand it) advised that they are based on unsupported legacy code, might not properly function and not updated. 


I do however see the potential in the accessory approach and look forward to see a demonstration of your work. As you say, the functionality potential of the accessory is of a higher order as it not only allow for the dynamic array but also referencing geometry in model space.



It depends some on what you mean by Dynamic Array.  Rhino comes to mind first.  You might want to checkout the Archicad PARAM-O tool which is being developed for something I think could be called a Dynamic Array.  PARAM-O – Graphisoft  2021-09-09_12-54-49.png

ArchiCAD 25 7000 USA - Windows 10 Pro 64x - Dell 7720 64 GB 2400MHz ECC - Xeon E3 1535M v6 4.20GHz - (2) 1TB M.2 PCIe Class 50 SSD's - 17.3" UHD IPS (3840x2160) - Nvidia Quadro P5000 16GB GDDR5 - Maxwell Studio/Render Multilight 2 - Adobe Acrobat Pro - ArchiCAD 6 -25

That pretty well sums up all my frustrations and most of it could all be solved with in-place module editing. Adding intelligence to scaling a module may be a bit trickier, but just the simplified process of creating an array and knowing the contents are securely tied together would bring so many workflow benefits. Still it's only about twenty years* since it went on the Wishlist, so early days yet... 🙄

*First wish 11/12/2003 

Apple iMac Intel i9 / macOS Sonoma / AC27UKI (most recent builds.. if they work)

I put together some notes on a concept for a tool with this functionality in the wish forum: 


After playing around a bit more its obvious that there is some really powerful dynamic functionality lying around in the Curtain Wall and Railing tools which I think should be turned into a new more general tool. 


And if we then could constrain/snap the reference geometries of the array to that of walls/roofs/slabs - then that would replace some of the functionality from accessories and system-like GDL objects.


I see the value in a generic parametric array tool. I built some dynamic array components for SketchUp and it allows you to create things like cladding, decking, posts, rafters, joists etc all with a single tool.


I used Param-O to build one and notionally it works okay:

Screenshot 2022-09-15 at 18.06.25.png

However - the big problem is that you can't dynamically resize the array using editing nodes/handles. I think this is a complete showstopper actually. It does indeed work, and yes I can measure and adjust the numbers, but that's not a fluid and intuitive way of working, and in fact it's not good enough as a design tool for me. I had to build it though to find out that you can't stretch Param-O objects in all axes and have them parametrically adjust - bugger.


For those people that say use the multiply tool - that's little better than drawing your ceiling tile grids manually with lines! Honestly - you may as well go back to Autocad...


Working in 3D means that you want dynamic parametric objects that you can stretch to size, and adjust the parameters for size, and spacing.


There is a parametric joist tool, but that explicitly uses fixed spacing, not equal spacing, so the end spacing doesn't match. When you start to use Archicad as a design tool, you need to play around with parametric objects and quickly iterate between different options. Measuring and calculating are not good ways of quickly going through sketch stage design iterations.


There is a parametric batten object, but that won't allow you to rotate the array in both the x and y axes.


The railing tool notionally allows you to do it, but again doesn't have rotation options in the x and y axes, it has skew options instead which don't work.


The curtain wall tool will let you do it, but angled curtain walls are a pain to edit. and the dimensions get broken.


This shouldn't be difficult. I bet it's actually really easy for someone to do in GDL, but expecting even experienced Archicad users to learn GDL (it's no small undertaking and a significant commitment of time) to create what ought to be a simple basic element is unreasonable IMO.


You could use such an array object for all of the above elements, joists, battens, decking, beams, vertical cladding and even parking bay lines.


In fact Kristian Bursell's parking bay tool pretty much does not only this, but a ton of extra cool stuff. 


Cut out the parking-specific stuff, have options for arrays by spacing or elements and with fixed and variable spacing, and it's effectively done.


Why don't we have this as a native Archicad tool or object?



Archicad 27 UKI | OS X 12.7.1 Monterey