Developing a generative design script

As part of a master’s thesis, I am exploring generative design using Revit and Dynamo. In one application, and for the first time using Dynamo for generative design, I aimed to create a graph that would distribute functional units on a site, with the condition that these spaces are interconnected depending on their relative location. However, I am currently unsure of the most appropriate approach and implementation for this script.

1 Like

Start with something very basic and get the gist of what it can and can’t do.

For placing stuff on a site… there are a few options I can think of straight away.

1 - using a pre-determined grid with scoring algorithm
2 - random placement with scoring algorithm
3 - bubbles (there’s some node somewhere, I forget that does this an it’s fun to play with).

I’d play with all 3.

Great advice here. :slight_smile:

I recommend starting with a VERY simple example - placing a few cabins on a site in the woods in a way that puts them far away from each other and avoids as many trees as possible is a great example.

  1. Bring the selected site and features thereof into Dynamo - I recommend trees as features.
  2. Build a way to generate the cabin shapes - rectangles and assemblies there of work well here.
  3. Build a way to locate the cabin on the site - parameters of the site work well here.
  4. Build a way to orient the cabin on the site - rotate tools work well for this.
  5. Build a way to place the cabin at the location with the correct rotation - geometry modification tools work well here.
  6. Build a way to evaluate the separation of the cabins, the number of trees impacted by the construction, that the cabins fit on the site, and the rest.
  7. Build a display for each cabin and show trees which are impacted different from trees which are not.
  8. Move to Generative Design.

I did this as a live demo, building the graph from scratch, for the Chicago Area Dynamo User Group (called ChiNamo) awhile back. Good start point here: https://youtu.be/42SylTdN3CY?t=1421

1 Like

Thank you for your ideas! What I’m looking for, however, is how to assemble several functions where the spaces are conditioned by their placement. Specifically, I am trying to generate several volumes that contain the different spaces of the program in various implementation ways. I have a specific project with a small site, so I am exploring different options for the spatial distribution of the program across all levels.

You’re after a packing algorithm?

There are a few papers written on this… The one I liked the best was written for the American Airforce by Erhan Baltacıoğlu.

Watch the AU session Generative Design At Hogwarts for an example of this type of task.

However as noted before you should do a simple graph first or you’ll spend all your time learning basics instead of building your tool.

2 Likes

Ah, I remember that one… That was the one with all permutations node.

I really appreciate your help, thank you

1 Like

Hello,

I am still working on a graph to generate plans based on the relationships between spaces. I used the Dynaspace package, which allowed me to manage a bubble diagram, but I want this bubble diagram to transform into a plan with spaces and circulation areas.
Do you have any ideas or examples that could help me achieve this result?

Thank you.

This is easiest with an existing footprint.

Divide the footprint into cells and then get the closest bubble to each cell. Group the cells by their nearest bubble and union them into a PolySurface. The result should look fairly plan like and actually rather similar to your diagrams.

To ‘cap’ areas is much more involved and takes sequential actions (imperative code) so not as easy an effort, but as spaces will be mostly squares you can downsize the circles to the ‘inscribed’ area instead of the ‘encompassing’ area and you’ll get something even more accurate. Keep in mind that the goal with any generative exercise should be to create something that the designers can manipulate from there, not to remove the human decision making - computers aren’t there yet and even if they were no one wants that world.

Maybe start a new thread?

Thank you for your feedback. I am a beginner in Dynamo, so I would need more instructions. If I understand correctly, I need to divide my site, which I have input into this graph, into cells to generate bubbles within the site. Should I make this grid in 1*1m, for example? Do you have an example that can explain the process? What packages will I need?

Thank you in advance for your help!

Generate the bubbles in the site to start with, yes.

That’s a good resolution to start with, but lower cell sizes will result in longer compute times.

Nope - this is a good early user exercise though so you should give it a shot on your own. Likely best for a new topic though, where I can break down the logic after you give it a shot and describe what you are thinking.

No packages required for how I’d go about it…

Thank you for your response. Just one more question: I can’t think of a way to relate the cells to the bubbles, any ideas? I will keep sharing the results as I progress.

1 Like