Santiago Ossa

Link to Design Journal
Journal Entry For
Module 8 - Share Your Design
Created By
Santiago Ossa
Related to 120C/220C Students - Spring 2022 (1) (Related to Design Journal Entries | Winter 2022 (Linked Student))


Eco-Village Creator

Overview: This tool is intended for people who have a plot of land on which they intend to build a few small cabins (or other dwellings) and want to explore what the optimal arrangement and location for the cabins is. As inputs, the user defines the lot boundaries, a few categories of features that influence where cabins can be built, and the total number of cabins that will be built. The generative design script runs iterations of different cabin placements throughout the plot of land and evaluates two overall scores for each iteration: a privacy score and a score for the proximity of cabins to points of interest. The optimal layout is the one that scores highest on both.

It should be noted that this is version 1 of this tool and still contains some bugs. The dynamo graph contains notes to identify potential points of issues for the user as well as identifying opportunities for improvement for future versions.

Explanation of graph logic



The intent is that the user starts with a basic figure of the plot of land. This could be a snap shot of google maps or a hand-drawn sketch and uses it as the basis to create a series of masses in Revit to symbolize the following areas:

  • Lot Boundary: the outermost boundary of the plot of land.
  • Obstacles to Visibility: these would be things like trees, walls, and existing structures that would interfere with a direct line of sight.
  • No-Build Zones: these would be areas where it would not be possible or desirable to build cabins, such as swamp areas, trenches, or areas that intentionally want to be left unbuilt.
  • Points of Interest: these would be things like fire pits, restroom facilities, a lake or swimming pool….places to which it would be nice to have some proximity from the cabins.
  • In addition, the designer gets to select the number of cabins to be included in the design. This is done via a slider.

Geometry Manipulation

The designer-identified geometry in Revit is brought into dynamos and manipulated to define the surface where cabins may be located. A buffer is created around each geometry identifying "Visual Obstacles", "No-Build Zones", and "Points of Interest", and then they are intersected with the lot boundary surface and removed. The result is a surface that encompasses the total lot area but has gaps where the intersecting geometry exist (i.e. the available surface to build cabins).

Locate Cabins

Cabins are randomly located within the available area defined in the previous step. This is done by using two randomize functions to create a list of u, v coordinate pairs where points are created and then used to create cylinders (which represent cabins). Since it is possible that points will be created within the total lot boundary but within an area that doesn’t allow building, the graph creates 10x more cabins than necessary, then removes those that don't intersect with the buildable surface, and then randomly selects a subset from the remaining cabins to match the number of cabins defined by the user in the inputs.

Compute Scores

Privacy score: The graph creates a line between each of the cabins using the center points list in cross-product (similar resulting network of lines as a Delaunay mesh). Then evaluates every line to determine if it intersects with a mass that represents a visual obstacle (this is desired because it means it results in greater privacy between the cabins). An overall privacy score is computed based on the fraction of lines whose direct line of sight are obstructed.

Proximity to Points of Interest score: The graph computes the direct-line distance between each cabin and each point of interest (defined by the center points). Then computes an overall score based on the cumulative proximity from all the cabins to the points of interest.


The scores are shown as outputs and a generative design study can be used to help maximize both scores.