Design forum
cancel
Showing results for 
Search instead for 
Did you mean: 

Dynamic Arrays?

thesleepofreason
Enthusiast
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?
18 REPLIES 18

Erwin Edel
Mentor
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-24 NED 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 25 USA and earlier   •   MacOS 11.6, iMac Pro

Lingwisyer
Virtuoso
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...
AC18-23 AUS 7000
Self-taught, bend it till it breaks.
Win10 | E5620 x 2 | 24GB | K2200

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 25
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Dell Precision 3510 - i7 6820HQ @ 2.70GHz, 16GB RAM, AMD FirePro W5130M, Windows 10

thesleepofreason
Enthusiast

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!

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 macOS Big Sur / AC24UKI (most recent builds)

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

Steve Jepson
Expert

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 3011 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.1.0.1

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.

 

Barry.


One of the forum moderators.
Versions 6.5 to 25
Dell XPS- i7-6700 @ 3.4Ghz, 16GB ram, GeForce GTX 960 (2GB), Windows 10
Dell Precision 3510 - i7 6820HQ @ 2.70GHz, 16GB RAM, AMD FirePro W5130M, Windows 10

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 3011 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.1.0.1

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
website: https://cadswift.com.au/
YouTube: https://www.youtube.com/user/CADSwift/playlists

 

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

 

https://youtu.be/mgt_LDBvxC8

ArchiCAD 25 3011 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.1.0.1

thesleepofreason
Enthusiast

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

 

https://community.graphisoft.com/t5/Wishes-forum/Dynamic-Array-Sequence-tool/m-p/307282/highlight/tr... 

 

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.

 

Didn't find the answer? Start a new discussion

Still looking?

Browse more topics

Back to forum

See latest solutions

Accepted solutions

Start a new discussion!