Generative Design Primer
  • Welcome
  • Introduction to Generative Design
    • Computational Design
    • Generative Design
      • What is Generative Design?
      • Why should I use Generative Design?
      • What goes into a Generative Design Process?
        • Anatomy of each stage
      • Examples of Generative Design
        • MaRs Innovation District of Toronto
        • Furniture Design
        • A Further Analogy
      • Anatomy of a Good Generative Design Process
    • Visual Programming
    • Dynamo
    • Generative Design for Revit and Dynamo
  • Deeper Dive to Generative Design
    • Algorithms
      • What are Algorithms?
      • Generators
      • Evaluators
      • Solvers
    • Optioneering
    • Optimization
      • What is Optimization?
      • Objective Function
      • Constraints
      • Data
      • Defining Goals
    • Genetic Algorithms
      • What is a Genetic Algorithm?
      • Initialization phase
      • Evaluation Phase
      • Selection Phase
      • Crossover Phase
      • Mutation Phase
    • Other Techniques
    • Genetic Algorithm Q&A
  • Hello Generative Design for Revit and Dynamo!
    • Installing Generative Design
    • Setting up a Graph for Generative Design
    • Running Generative Design
    • Visualizing Results in Generative Design
    • Refinery Toolkit
      • Installing the Refinery Toolkit from the Dynamo Package Manager
      • Using the Refinery Toolkit
    • Space Analysis for Dynamo
      • Installing the Space Analysis for Dynamo package from the Dynamo Package Manager
      • Using the Space Analysis Package
    • Using Revit alongside Generative Design
      • Using Data from Revit
      • Remember Node Inputs
      • How to Test Revit Data Capture
      • Detailed Example Workflow
      • Sharing Logic and Results
      • Current Limitations
      • Accessing Generative Design Directly From Revit
  • Sample Workflows
    • Getting Started Workflows
      • Highest Point of a Surface
      • Minimum Volume and Maximum Surface
    • Architectural Workflows
      • Building Mass Generator
      • Building Positioning based on Solar Analysis
      • Office Layout
      • Grid Object Placement in a Room
      • Entourage Placement Exploration
    • MEP Workflows
      • Distributing Spotlights in an Office Space
    • Structural Workflows
    • BIM Workflows
      • Placement of views on sheets
    • Community Examples
      • Guidelines
      • List Of Examples
  • Generative Design in Your Office
    • What Generative Design Can Be Used For?
    • What Generative Design Can’t Be Used For?
    • How to Convince Senior Stakeholders of Using Generative Design?
    • The Role of a Generative Designer
    • Hiring a Generative Designer
  • Next Steps
    • Machine Learning
      • What is Machine Learning?
      • Is Generative Design Machine Learning?
      • Can Machine Learning and Generative Design Work Together?
  • Appendix
    • Glossary
    • Reference Material
    • Need Professional Help?
Powered by GitBook
On this page
  • About This Example
  • Script Creation
  • Remember Node
  • Gate Node
  • Generator
  • Evaluators
  • Dynamo Sandbox
  • Generative Design
  • Revit

Was this helpful?

  1. Hello Generative Design for Revit and Dynamo!
  2. Using Revit alongside Generative Design

Detailed Example Workflow

PreviousHow to Test Revit Data CaptureNextSharing Logic and Results

Last updated 8 months ago

Was this helpful?

In the following example, we will use the steps from the previous section to cache data from Revit and perform an optimization process to find the best solution. Then, we'll push the result back to Revit.

Note: All sample files for this example can be found in the folder in the GitHub repository.

About This Example

The intention of this workflow is to find the best location for a desk in the office floor plate, where it maximizes the number of views to the outside.

To do this, the information we need to cache in the Remember node includes all the geometry relating to the bounding elements of the room (walls, doors, windows, and internal obstructions).

With this data, we will perform an optimization process to determine the best location for the desk from the thousands of permutations, before using the result and pushing the value back into Revit.

Script Creation

The first step is to create our script. Remember, our script needs to contain both the generator (to create the different options) and the evaluators (to assess the performance of each option against our criteria).

Remember Node

In this example, there is little work required to extract the correct geometry from each of the Revit elements.

For this workflow, we need a set of polygons across a common plane. To get this information, we use a combinations of nodes in Dynamo to extract it from the walls, windows, and internal columns. Once we have this geometry, we can use the Remember node to cache the values in the script.

Gate Node

In this example the Gate node can be used to create an instance of a desk in the desired location assigned by Generative Design.

Generator

The generator of the script determines how Generative Design will move the point around the available space to find the best location.

Evaluators

The evaluator of the script determines how each design option scores in relation to our overall goal. Remember the goal of this workflow was to maximize the number of views to outside.

To enable this, we have a custom node that takes in the following inputs:

  • view segments (windows)

  • origin (point location)

  • boundary (overall floor plate)

  • internals (any internal obstructions)

The output of the node returns both a visual and non-visual output:

  • visible segments (sections of windows that can be seen from the point)

  • score (a number between 0-1 that denotes a percentage amount of the total 360° view from the point)

Dynamo Sandbox

With the graph correctly set up and run once in D4R to cache the data, we can close Dynamo and Revit and open Dynamo Sandbox.

As we know from the previous example, the Revit nodes upstream of the Data.Remember node are marked as unresolved, but on running the graph the values are still cached in the Data.Remember nodes.

Generative Design

For this study, we want to Maximize the result. The automation works to solve the design problem, taking into account the pre-defined population size and amount of generations .

Generative Design then works to solve the design problem, taking into account the pre-defined population size and amount of generations .

Revit

When you choose your option in Explore Outcomes, the input values used by the generator in Dynamo will be set to the same nodes. Saving the graph saves these values back to the Dynamo file. If we close Dynamo Sandbox at this point and reopen Revit, we can also add additional Revit nodes to the end of the graph. This will take the point generated by the best option in Generative Design and place our desk (family instance).

Saving the graph saves these values back to the Dynamo file. If we close Dynamo Sandbox at this point and reopen Revit, we can also add additional Revit nodes to the end of the graph.

This will take the point generated by the best option in Generative Design and place our desk (or family instance).

Now we are ready to automate our search. In the Create Study dialog, select Optimize (for more details on how to run an optimization process, please refer to the section).

In Generative Design, select Optimize (for more details on how to run an optimization process, please refer to the section). We also want to maximize the result, so select Maximize.

To use a design option from Explore Outcomes, we simply click through either the charts or tables to select our design option. More detail on this is found in the section.

Optimization
Optimization
Optimization
04_sample_files