Modeling
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?
19 REPLIES 19
Erwin Edel
Rockstar
I use multiply the most though.

If it is a group of elements that needs to repeat, I create a module and use multiply to distribute the module.

For random array (scatter) we use Massivator https://archicad-talk.graphisoft.com/viewtopic.php?f=20&p=330247#p330190

Curtain wall tool can also be used in some cases, but I personally find multiply to be quick enough.
Erwin Edel, Project Lead, Leloup Architecten
www.leloup.nl

ArchiCAD 9-26NED FULL
Windows 10 Pro
Adobe Design Premium CS5
Karl Ottenstein
Moderator
If you only care about appearance in all views and for documents - and are not at all concerned about scheduling the repeated elements, then you can do that in GDL. David Nicholson Cole had an example floor joist object, for example, that was stretchy and would repeat according to parameters within rectangular bounds - in the GDL Cookbook.

If you need individual elements so that they are scheduled properly, etc., then Grasshopper or a custom API add-on would be options.

But, I'm with Erwin... in general, it is easier/faster to just re-multiply. Your issue with not grouping: it's true that auto-grouping for some reason does not work with multiply... but all elements except the first are selected after the multiplication. So, just shift-click the first element so that they are all selected and cmd/ctrl-G to group them.
One of the forum moderators
AC 28 USA and earlier   •   macOS Sequoia 15.2, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Lingwisyer
Guru
David Nicholson Cole had an example floor joist object, for example, that was stretchy and would repeat according to parameters within rectangular bounds - in the GDL Cookbook.

Whelp... that would have been a nice find before I started mine... Definitely not best practice...

AC22-23 AUS 7000Help Those Help You - Add a Signature
Self-taught, bend it till it breaksCreating a Thread
Win11 | i9 10850K | 64GB | RX6600 Win10 | R5 2600 | 16GB | GTX1660
Barry Kelly
Moderator
Don't forget you also have the 'Distribute' & 'Align" tools available.
Sometimes it is easier to delete all except one rafter and the multiply it again.
But with distribute you can move the first and last to where you want, select all and distribute and they will space evenly.
If you need more of less rafters just add more between the first and last or delete some and then distribute.

You can also align/distribute along a straight or arced path.

Barry.
One of the forum moderators.
Versions 6.5 to 27
i7-10700 @ 2.9Ghz, 32GB ram, GeForce RTX 2060 (6GB), Windows 10
Lenovo Thinkpad - i7-1270P 2.20 GHz, 32GB RAM, Nvidia T550, Windows 11

Thanks for the input! Sadly it doesn't seem like I have missed any satisfying way to handle systems of elements that are arranged in arrays. 

 

The GDL approach fails as I hold it to be a requisite that it is a system om native elements.

The multiply approach fails as I hold it to be requisite that the system is defined as such and that its parameters can be dynamically changed.

The module approach fails due to it not being able to edit in-model and thus is slow and looses in-model references.

 

The grasshopper approach is feels cumbersome as it is external, prone to crash and that one can't just do operations on existing Archicad elements so one instead has to create the elements using curves.  

 

Not being able to define and dynamically change spatial configurations of elements must be seen as a real deficit in BIM CAD software. The multiply tool is good as such but it could be great!

With some knowledge of GDL you could create an Accessories tool using the built in Accessories API. This places individual objects mapped to a roof/wall/slab/zone. So you get the best of all worlds; the logic of an associated group mapped to a model element, as well as individual components which can be scheduled. Oh, and the logic of the mapping can be parametric... variable based on the situations needs.

I am actually building another Accessories tool over the next few days, so if your rafters and joist are GDL objects I could provide a method to call them in. If they are standard model elements such as the Beam tool then it wont work.

Creator of Cadswift's parametric GDL libraries
Creator of Infinite Openings and Component Catalogues
Push the envelope & watch it bend
website: https://cadswift.com.au/
YouTube: https://www.youtube.com/user/CADSwift/playlists

Thanks for the input! Yes, the Accessories tool really has a lot of potential (seen some nice  and in the best of worlds I would be proficient in GDL and able to come up with good generic solution - sadly I'm not. So for now I seem to be stuck with hoping that GS amend the multiply tool with a dynamic array group functionality. I also think that there are some merit to a native tool for native elements.   

 

 

 

 

I agree that there should be a native array tool for native elements. It would be great to have Beams and Columns applicable through Accessories. Perhaps we should add this to the wish list.

In fact I have avoided creating an accessories tool for the precise reason that it relies on GDL objects for elements that should be handled with native tools. However, I can deny its potential no longer, but still doubt I will use it to create structural components as I don't think that is how Archicad should be used. It would be interesting to hear from some of the engineering firms that use Archicad.

Creator of Cadswift's parametric GDL libraries
Creator of Infinite Openings and Component Catalogues
Push the envelope & watch it bend
website: https://cadswift.com.au/
YouTube: https://www.youtube.com/user/CADSwift/playlists

The two examples you gave (rafters and joists)  may not be the best example of what you are talking about since "path, distance, number of copies is"  is not typically how you would want to place them in the model is it? 

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 5.2.1.49- Multilight 2 - Adobe Acrobat Pro - ArchiCAD 6 -25