Bus Stop GEN (POC)

Bus Stop Generation POC | Data-Driven Revit Model Automation

period2023
courseDigital Design
typeIndividual Project · POC
toolsRevit · Dynamo · Python

After designing the modular bus-stop project 잠시___정류소, I developed a personal bus-stop automation project while learning Revit and Dynamo in a Digital Design course. I organized spreadsheet inputs, type classification, family placement, and parameter control into a single Dynamo workflow that applies multiple bus-stop conditions to a Revit model.

The location, available length, and direction of each stop define Revit Grid at 700mm intervals and place Family on the grid. A single run applied 16 dummy records to stops with different locations and dimensions.

The diagram on the right shows the layout rules for the four types on a 700×700mm grid. The Revit viewport on the left shows the resulting models.

types.jpeg

BIM Automation Workflow

Each spreadsheet row defines one bus stop through its X and Y coordinates, available length along the long axis, and direction. The shelter height, grid spacing, and Revit families are configured in Dynamo.

The Dynamo map below shows the complete workflow from input data to the Revit model. The Python component classifies each stop and organizes its data, while Dynamo creates the grids, places the architectural elements, and controls the family parameters.

DynamoMap.jpg

Bus-Stop Data and Layout Rules

Length represents the available length along the long axis of the installation area. Dynamo creates the Revit Grid at 700mm intervals according to the X and Y coordinates and direction. The grid extent is determined by rounding the input length down to the nearest 700mm.

Python uses multi-branch conditionals to compare the lengths and classify each stop as Type A–D. It stores the results in a dictionary for each stop and connects them to Dynamo’s Data Tree. Dynamo reads the length and type of each stop, then arranges the ends and repeating middle section.

SHEET.jpeg
DyPy 01.jpeg
DyPy 02.jpeg

The image on the left shows the location, available length, and direction of the 16 stops. The center and right images show the Python code for type classification and dictionary construction.


The 700mm Grid and Four Architectural Elements

Dynamo calculates the layout from the length and type of each stop, then places four Revit families on the grid: photovoltaic panels, partitions, a roof, and columns.

  • The photovoltaic panels follow either the long or short axis of the stop and receive a solar-angle parameter.
  • The partitions can be assigned steel-plate or glass types.
  • A single roof family is repeated to match the shelter length.
  • The columns change their lighting type according to the air-quality input.
FM 01.jpeg
FM 02.jpeg
FM 03.jpeg
FM 04.jpeg

From left to right: the photovoltaic panel, partition, roof, and lighting-column families.


Family Parameters

Height, width, material, photovoltaic-panel direction and angle, and column lighting type are connected to Revit family parameters.

MG 01.jpeg
MG 02.jpeg
MG 03.jpeg

The three screens show the type, dimension, and material parameters of the photovoltaic panel, air-quality lighting column, and partition families.


Proof of Concept and Next Step

The dummy dataset confirmed that spreadsheet input, Revit Grid creation, type classification, family placement, and parameter control operate as one continuous workflow. Editing the spreadsheet and rerunning Dynamo applies the revised location, length, and direction to the Revit model.

Dummy values were used for solar angle and air quality to verify the parameter connections. Integration with actual urban data and environmental performance evaluation were not included.

The current form is a basic bus stop used to verify the model-generation workflow. Next, I want to design a new system of repeatable, combinable modules and connect it to this automation workflow.