AI Prompts for BIM Automation & Scripting
You've spent the last hour manually renaming 200 room tags in Revit. Again. Meanwhile, someone on your team wrote a Dynamo script that does it in 12 seconds -- but they left the firm six months ago, and nobody understands the code.
That's the BIM automation gap. Most architecture firms know scripting would save them thousands of hours annually, but the barrier to entry is steep. You need to know Python, C#, or visual programming -- and you need enough free time to learn it while delivering projects.
ChatGPT and other AI tools don't eliminate that learning curve entirely, but they collapse it dramatically. You can describe what you want in plain English and get working Dynamo nodes, Grasshopper definitions, Revit API snippets, or IFC query scripts in return. The code still needs testing and refinement, but you're starting from a working draft instead of a blank screen.
Here are prompts organized by platform and task type. Copy them, modify the specifics for your project, and iterate on the outputs.
Dynamo for Revit Prompts
Dynamo is where most BIM automation starts. These prompts generate Python Script nodes or full Dynamo workflows.
Room and Space Data
"Write a Dynamo Python script that exports all room data (room name, number, area, level, department) from the active Revit model to an Excel spreadsheet. Include error handling for rooms that are unplaced or not enclosed."
"Create a Dynamo script that renames all rooms in the current Revit model based on a CSV file with columns 'OldName' and 'NewName'. Skip rooms that don't match any entry in the CSV and log skipped rooms to a separate output."
"Write a Dynamo Python node that compares room areas in the Revit model against a design brief Excel file. Output a list of rooms that exceed or fall below the brief area by more than 5%, showing the room name, model area, brief area, and percentage difference."
Sheet and View Management
"Generate a Dynamo script that creates floor plan views for every level in the active Revit model, applies a specified view template, and places each view on a new sheet using a title block family called 'A1 Titleblock'. Number the sheets sequentially starting from A-100."
"Write a Dynamo Python script that duplicates a specified view in Revit, renames the duplicate with a suffix '-MARKUP', and sets the detail level to Fine and visual style to Hidden Line."
"Create a Dynamo workflow that finds all sheets in the current Revit model missing a specified parameter value (e.g., 'Drawn By' is empty) and outputs a list of sheet numbers and names."
Parameter and Family Management
"Write a Dynamo script that copies the value of a shared parameter called 'Fire Rating' from room elements to all door instances within each room boundary. Handle cases where doors span two rooms by using the 'To Room' parameter."
"Create a Dynamo Python script that reads a JSON file containing parameter values and writes those values to matching family instances in Revit. The JSON structure has keys for family name, instance ID, and a dictionary of parameter name-value pairs."
"Generate a Dynamo script that audits all loaded families in the current Revit model, listing family name, category, number of types, and file size. Export results to Excel sorted by file size descending."
Grasshopper & Rhino Prompts
For computational design work, these prompts target Grasshopper definitions and RhinoCommon scripting.
Parametric Geometry
"Write a Grasshopper Python (GhPython) component that generates a parametric facade panel system. Inputs: surface, U divisions, V divisions, panel rotation angle, and opening percentage. Output: individual panel surfaces with rectangular openings centered on each panel."
"Create a GhPython script that takes a closed Brep and generates a waffle structure with slots for assembly. Inputs: Brep geometry, number of X sections, number of Y sections, material thickness. Output: planar curves for laser cutting with labeled slot positions."
"Write a Grasshopper Python component that generates a Voronoi-based facade pattern from an input surface. Inputs: base surface, number of seed points, minimum cell size, border offset distance. Output: trimmed Voronoi cells as surfaces and their areas."
Environmental Analysis
"Create a GhPython script for Grasshopper that calculates the solar exposure of each panel on a facade surface using Ladybug. Inputs: facade surface, EPW weather file path, analysis period (start month, end month), grid size. Output: colored mesh showing cumulative radiation in kWh/m2 per panel."
"Write a Grasshopper definition description (as pseudocode with component names) for a daylight analysis workflow using Honeybee. Steps: import room geometry, assign materials by surface type, set up a grid-based daylight simulation, run annual daylight metrics (sDA and ASE), and color-code results on the floor plane."
Data-Driven Design
"Write a GhPython component that reads a CSV file of site survey points (X, Y, Z) and creates an interpolated terrain mesh in Rhino. Include options for mesh resolution and boundary clipping to a site boundary curve."
"Create a GhPython script that exports Grasshopper geometry to an IFC file using IfcOpenShell. Map each geometry input to an IFC building element type (wall, slab, column) based on a user-provided type list."
Revit API (C# and Python) Prompts
For developers writing Revit plugins or pyRevit scripts, these prompts generate production-ready code.
Model Auditing and Cleanup
"Write a pyRevit Python script that finds all CAD imports and linked DWG files in the current Revit model, lists them with their file path and whether they're pinned, and provides an option to delete unpinned imports. Show results in a pyRevit forms dialog."
"Generate a C# Revit API macro that identifies all warning messages in the current model, groups them by warning type, counts occurrences, and exports the summary to a CSV file. Include the element IDs involved in each warning."
"Write a pyRevit script that detects duplicate room names on the same level in the current Revit model. Output a table showing duplicate names, their room numbers, levels, and areas. Highlight the smaller room in each duplicate pair."
Automated Documentation
"Create a C# Revit API external command that generates a door schedule as a ViewSchedule, including these fields: Mark, Level, Width, Height, Fire Rating, Room From, Room To. Apply a filter to show only doors with a Fire Rating value. Sort by Level then Mark."
"Write a pyRevit Python script that automatically tags all untagged doors in the active view using the default door tag family. Skip doors that already have a tag. Report the count of newly tagged doors."
"Generate a C# Revit API plugin that batch-prints all sheets in a specified sheet set to PDF. Use the PDFExportOptions class. Name each PDF as '{SheetNumber}_{SheetName}.pdf' and save to a user-selected folder."
Geometry and Coordination
"Write a pyRevit script that runs clash detection between structural columns and architectural walls in the current Revit model. For each intersection, report the column ID, wall ID, level, and approximate overlap volume. Export results to an HTML report."
"Create a C# Revit API command that measures the distance from every occupied room to the nearest fire exit door (doors with a 'Fire Exit' parameter set to Yes). Flag rooms where the travel distance exceeds 45 meters."
IFC and OpenBIM Prompts
For working with open standards, data exchange, and model validation.
"Write a Python script using IfcOpenShell that extracts all IfcSpace entities from an IFC file and outputs a table with: space name, long name, area (from IfcQuantityArea), containing storey, and bounded-by elements. Export to CSV."
"Create a Python script using IfcOpenShell that validates an IFC 4 file against a set of rules: every IfcWall must have a FireRating property, every IfcDoor must have an AcousticRating, and every IfcSpace must have a net floor area quantity. Output a compliance report with pass/fail for each rule and the element GlobalIds that fail."
"Write a Python script that compares two IFC files (before and after a revision) and reports: new elements added, elements deleted, and elements with changed geometry or changed property values. Output a change log in JSON format with element type, GlobalId, and change description."
"Generate a Python IfcOpenShell script that extracts the material layers from all IfcWallStandardCase elements in an IFC file, including layer material name, thickness, and function (structural, insulation, finish). Export as a CSV material schedule."
"Write a Python script that queries an IFC file for all elements assigned to a specific classification system (e.g., Uniclass 2015) and groups them by classification code. Output a breakdown showing element count and total area per classification code."
Prompt Types by BIM Platform
| Platform | Language | Best For | Prompt Complexity |
|---|---|---|---|
| Dynamo | Python (IronPython/CPython) | Revit automation, data extraction, parameter management | Medium -- describe the Revit operation clearly |
| Grasshopper | GhPython (RhinoCommon) | Parametric geometry, environmental analysis, fabrication | High -- specify geometry types and math operations |
| Revit API | C# or pyRevit (Python) | Plugins, batch processing, UI tools, model auditing | High -- specify API classes and transaction handling |
| IFC / IfcOpenShell | Python | Model validation, data exchange, BIM coordination | Medium -- specify IFC entity types and property sets |
| Power Automate + BIM 360 | Low-code / API calls | Automated approvals, notification workflows | Low -- describe the trigger and action sequence |
| Navisworks API | C# / .NET | Clash management, 4D sequencing automation | High -- specify clash rules and reporting format |
Tips for Better BIM Scripting Prompts
Getting useful code from AI requires giving it the right context. Architecture-specific prompts need more detail than generic coding requests.
Always specify the API version. "Write a Revit API script" is vague. "Write a pyRevit script targeting Revit 2025 API" tells the AI which classes and methods are available.
Include error handling requirements. BIM models are messy. Elements are deleted, parameters are empty, families are missing. Your prompt should say: "Handle cases where the parameter value is null or the element has been deleted."
Describe the output format. "Show results" is ambiguous. "Output a DataTable in a pyRevit forms window with columns for Element ID, Name, Level, and Status" gives you something usable.
Provide sample data structures. If your script reads a CSV or JSON file, include the expected schema in your prompt. "The CSV has columns: RoomNumber, RoomName, TargetArea, Department" eliminates guesswork.
Ask for comments and documentation. Add "Include inline comments explaining each step and a docstring at the top explaining inputs, outputs, and dependencies" to any prompt. Future-you (and your colleagues) will be grateful.
Iterate, don't start over. If the first output is 80% right, paste it back with "This script works but throws an error when a room is unplaced. Add a check for room.Location being null before accessing room.Area." That's faster than re-prompting from scratch.
BIM automation skills are increasingly valuable in the job market. If you're building expertise with Dynamo, Grasshopper, or the Revit API, browse current BIM specialist positions on ArchGee to see what firms are looking for.
FAQ
Can ChatGPT write production-ready Dynamo scripts?
It can write scripts that run correctly about 60-70% of the time on the first attempt. The remaining 30-40% need debugging -- usually around API version differences, null reference errors, or transaction handling in Revit. Treat outputs as strong first drafts. Test in a non-production model before deploying.
Which BIM platform benefits most from AI-generated scripts?
Dynamo for Revit has the largest training data set, so AI tools produce the most reliable code for it. Grasshopper outputs are hit-or-miss with complex geometry operations. IFC scripting with IfcOpenShell works surprisingly well because the library has clear, well-documented patterns.
Do I need to know how to code to use these prompts?
You need enough understanding to read the output, identify obvious errors, and test it. You don't need to write code from scratch. If you can read a for-loop and understand what a variable is, you can use AI-assisted scripting effectively. Think of it as supervised automation -- the AI writes, you review.
How do I handle Revit API version differences in prompts?
Specify the exact Revit version in your prompt ("targeting Revit 2025 API"). If the generated code uses deprecated methods, paste the error message back and ask for an update. The Revit API changes methods between major versions, so code written for 2023 may not run in 2025 without modifications.
Are there security concerns with pasting BIM model data into ChatGPT?
Yes. Don't paste client names, addresses, or confidential project data into public AI tools. Strip identifying information before using prompts that include model data. If your firm has an enterprise AI agreement (OpenAI Enterprise, Azure OpenAI), use that instead -- it has data processing agreements that public ChatGPT does not.