Design Automation for AEC
Design automation is the disciplined application of computational logic to replace, accelerate, or augment repetitive and rule-governed design tasks across architecture, engineering, and construction. This skill covers the full spectrum from simple parametric rules through constraint-satisfaction engines to fully generative layout systems, drawing automation pipelines, and automated code-compliance verification.
1. Design Automation Spectrum
1.1 Levels of Automation in AEC
Design automation exists on a continuum. Understanding where a task falls on this spectrum determines the appropriate technology and the degree of human oversight required.
| Level |
Label |
Description |
Example |
| 0 |
Manual |
Designer makes every decision, draws every line |
Hand-drafted floor plans |
| 1 |
Parametric |
Geometry driven by explicit parameters; designer controls inputs |
Grasshopper slider controlling facade panel width |
| 2 |
Rule-Based |
IF-THEN logic encodes design knowledge; system applies rules automatically |
Auto-sizing exit widths based on occupant load |
| 3 |
Constraint-Based |
System searches solution space satisfying stated constraints |
CSP solver placing rooms to satisfy adjacency + area constraints |
| 4 |
Generative |
System produces many candidate designs autonomously; human selects |
GA-based floor plan generator producing 500 layout options |
| 5 |
AI-Assisted |
Machine-learned models propose designs or predict performance |
GAN generating floor plan from adjacency graph |
| 6 |
Autonomous |
Fully closed-loop: sense conditions, generate design, validate, output |
Automated site grading from survey to construction docs (emerging) |
1.2 What Can vs. Should Be Automated
High automation potential:
- Code compliance checking (deterministic rules)
- Structural member sizing (engineering formulas)
- Parking layout optimization (geometric + count)
- Sheet creation and annotation (repetitive)
- Clash detection (spatial intersection)
- Area and quantity takeoffs (data extraction)
Medium automation potential:
- Space planning and room layout (heuristic + constraint)
- Facade design (performance + aesthetic rules)
- MEP routing (complex constraints, many valid solutions)
- Site grading (optimization with soft constraints)
Low automation potential (human judgment critical):
- Architectural concept design (cultural, contextual)
- Urban massing and placemaking (experiential quality)
- Material palette selection (aesthetic, tactile)
- Client presentation and persuasion (social)
1.3 Human-in-the-Loop Design Automation
The most effective AEC automation systems keep designers in the loop at critical decision points:
- Define — Human sets objectives, constraints, preferences
- Generate — System produces candidate solutions
- Evaluate — System scores and ranks; human reviews
- Select — Human chooses preferred direction
- Refine — System develops selected option further
- Validate — Automated compliance checking; human sign-off
This cycle can repeat at multiple scales: master plan level, building level, floor level, room level.
1.4 The Role of Design Rules and Heuristics
Design rules encode domain expertise in computable form:
- Hard rules: Must be satisfied (building code, structural limits). Violation = invalid design.
- Soft rules: Should be satisfied (rules of thumb, best practices). Violation = penalty score.
- Heuristics: Rules of thumb that usually produce good results but are not guaranteed optimal. Examples:
- Office floor plate depth should not exceed 15m from core to window
- Residential corridor length should not exceed 30m without a window
- Parking bay angle of 90 degrees maximizes density; 60 degrees improves maneuverability
- Structure grid spacing of 7.5-9.0m suits most office programs
2. Rule-Based Design Systems
2.1 Production Rules (IF-THEN)
The simplest and most widely used automation pattern in AEC:
IF occupant_load > 500
THEN required_exits >= 3
AND exit_width_total >= occupant_load * 5.0mm
IF room_type == "bathroom" AND floor_area < 4.0
THEN min_dimension >= 1.5m
AND door_swing == "outward"
IF building_height > 23m
THEN fire_resistance_rating >= 120min
AND sprinkler_system == required
Production rules are stored in a rule base and executed by a rule engine that:
- Matches rules against current facts (pattern matching)
- Resolves conflicts when multiple rules fire (conflict resolution)
- Executes the winning rule's action (assertion or modification)
- Repeats until no more rules fire (quiescence)
2.2 Decision Trees
Hierarchical rule structures where each node tests a condition and branches lead to sub-decisions:
Building Classification Decision Tree:
├── Occupancy > 300?
│ ├── YES → Assembly (A)
│ │ ├── Fixed seating? → A-1
│ │ ├── No fixed seating? → A-2
│ │ └── Worship? → A-3
│ └── NO → Business (B)
│ ├── Office? → B
│ └── Educational? → E
│ ├── Students > 12 yrs? → E
│ └── Students ≤ 12 yrs? → E (daycare)
Decision trees are valuable because they are transparent, auditable, and can be validated against code text.
2.3 Rule Engines
Production rule engines for AEC applications:
- Forward chaining: Start from known facts, derive conclusions. Used for compliance checking. "Given this building, what rules are violated?"
- Backward chaining: Start from goal, find supporting facts. Used for design guidance. "What do I need to achieve fire compliance?"
- Rete algorithm: Efficient pattern matching for large rule sets. Maintains a network of partial matches; only re-evaluates affected rules when facts change.
Implementation options:
- Python:
durable-rules, business-rules, custom engines
- Java/Kotlin: Drools (most mature open-source rule engine)
- .NET: NRules (for Revit add-in integration)
- Grasshopper: Conditional components, custom C# script nodes
2.4 Shape Grammars (Stiny)
Shape grammars define a set of shape rules that transform geometric configurations. Formally:
SG = (S, L, R, I)
where:
S = finite set of shapes
L = finite set of labels (markers, reference points)
R = finite set of shape rules: α → β (replace shape α with shape β)
I = initial shape
Shape grammar applications in AEC:
- Palladian villa grammar (Stiny & Mitchell, 1978): Generates villa plans following Palladio's compositional logic
- Prairie house grammar (Koning & Eizenberg, 1981): Encodes Frank Lloyd Wright's Prairie style
- Musgum grammar: Encodes traditional Musgum shell house typology
- Islamic geometric pattern grammars: Tile-based generation of complex ornamental patterns
- Facade grammar: Generates facade variations from a vocabulary of elements (window, panel, mullion, spandrel)
2.5 Graph Grammars
Extend shape grammars to operate on graph structures (nodes + edges) rather than geometric shapes:
- Nodes represent rooms, spaces, or building elements
- Edges represent adjacency, access, containment, or structural relationships
- Rules transform subgraphs: match a pattern, replace with a new pattern
Graph grammars are powerful for:
- Floor plan generation from room adjacency programs
- Building massing from spatial relationship diagrams
- Urban block subdivision from land-use programs
2.6 Rule Priority and Conflict Resolution
When multiple rules apply simultaneously, conflict resolution strategies include:
- Priority ordering: Each rule has a numeric priority; highest fires first
- Specificity: More specific rules override general rules (e.g., local code overrides IBC)
- Recency: Rules matching recently modified facts fire first
- Refraction: A rule does not fire twice on the same set of facts
- Jurisdictional hierarchy: Federal > State > Local > Project-specific
2.7 Rule Libraries for AEC
| Domain |
Rule Source |
Key Rules |
| Egress |
IBC Chapter 10 |
Occupant load factors, exit width, travel distance, common path |
| Fire safety |
IBC Chapter 7 |
Fire resistance ratings, compartment sizes, opening protection |
| Accessibility |
ADA/ABA, EN 17210 |
Clear widths, ramp grades, turning radii, reach ranges |
| Structural |
ASCE 7, Eurocode |
Load combinations, deflection limits, drift limits |
| Zoning |
Local zoning code |
Setbacks, height, FAR, lot coverage, parking ratios |
| Energy |
ASHRAE 90.1, IECC |
Envelope U-values, WWR limits, HVAC efficiency |
| Plumbing |
IPC |
Fixture counts by occupancy, pipe sizing |
3. Constraint Satisfaction Problems (CSP)
3.1 CSP Formalism
A CSP is defined by the triple (X, D, C):
- X = {X1, X2, ..., Xn}: set of variables
- D = {D1, D2, ..., Dn}: set of domains (possible values for each variable)
- C = {C1, C2, ..., Cm}: set of constraints (relations restricting variable assignments)
A solution is an assignment of values to all variables such that every constraint is satisfied.
3.2 CSP for Floor Plan Layout
Formulating floor plan layout as a CSP:
Variables: Room positions and dimensions
- X_i = (x_i, y_i, w_i, h_i) for each room i
Domains:
- Position: within building boundary
- Width/height: within acceptable range for room type
Constraints:
- Non-overlap: No two rooms share interior area
- Boundary containment: All rooms within building envelope
- Adjacency: Specified room pairs must share a wall segment of minimum length (door width)
- Non-adjacency: Certain rooms must not be adjacent (e.g., bedroom not adjacent to mechanical)
- Area: Room area within specified range (e.g., living room 20-35 m2)
- Aspect ratio: Room width-to-depth ratio within range (e.g., 1:1 to 1:2)
- Window access: Rooms requiring daylight must touch an exterior wall
- Structural grid alignment: Room boundaries align with structural grid lines
3.3 Arc Consistency
Arc consistency (AC-3) prunes variable domains before search begins:
For every pair of constrained variables (Xi, Xj), remove values from Di that have no supporting value in Dj. Repeat until no more pruning occurs.
This dramatically reduces the search space. For AEC problems with continuous domains, discretize positions to a grid (e.g., 300mm module) to make the domain finite.
3.4 Backtracking Search
The standard algorithm for solving CSPs:
function BACKTRACK(assignment, csp):
if assignment is complete: return assignment
var = SELECT-UNASSIGNED-VARIABLE(csp)
for value in ORDER-DOMAIN-VALUES(var, assignment, csp):
if value is consistent with assignment:
add {var = value} to assignment
inferences = INFERENCE(csp, var, value)
if inferences != failure:
add inferences to assignment
result = BACKTRACK(assignment, csp)
if result != failure: return result
remove inferences and {var = value}
return failure
Key heuristics for AEC CSPs:
- MRV (Minimum Remaining Values): Assign the room with fewest valid placements first (fail-early)
- Degree heuristic: Assign the room with most adjacency constraints first
- Least Constraining Value: Try placements that leave the most options for unassigned rooms
3.5 Constraint Propagation
Beyond arc consistency, stronger propagation techniques:
- Path consistency: Ensures consistency for triples of variables
- MAC (Maintaining Arc Consistency): Run AC-3 after each assignment
- Forward checking: Remove inconsistent values from neighbors of just-assigned variable
3.6 Soft vs. Hard Constraints
In real AEC problems, not all constraints are absolute:
Hard constraints (must satisfy):
- Building code requirements
- Structural limits
- Site boundary
- Non-overlap of rooms
Soft constraints (prefer to satisfy, with penalty for violation):
- Preferred adjacency (e.g., kitchen near dining)
- View orientation (e.g., living room faces south)
- Preferred aspect ratio
- Acoustic separation preferences
Soft constraints are handled by:
- Weighted CSP: Each soft constraint has a weight; minimize total penalty
- Optimization over feasible set: Find all hard-constraint-satisfying solutions, then rank by soft constraint satisfaction
- Pareto frontier: When soft constraints conflict, find non-dominated solutions
3.7 CSP for Structural Grid
Variables: Grid line positions along X and Y axes
Domains: Continuous within building boundary, discretized to module (e.g., 100mm)
Constraints:
- Minimum span: 5.0m (functional space between columns)
- Maximum span: 12.0m (without transfer structures for typical concrete)
- Column-free zones: No columns in specified areas (auditorium, lobby)
- Edge alignment: Grid aligns with building perimeter
- Core alignment: Grid lines pass through core walls
- Regularity: Prefer uniform bay sizes (soft constraint)
4. Space Planning Algorithms
4.1 Adjacency-Based Layout
The classic space planning approach:
- Adjacency matrix: Define required and desired adjacencies between rooms
LIV DIN KIT BED1 BED2 BATH ENT
Living - 2 1 0 0 0 2
Dining 2 - 2 0 0 0 0
Kitchen 1 2 - 0 0 0 0
Bed 1 0 0 0 - 0 2 0
Bed 2 0 0 0 0 - 1 0
Bath 0 0 0 2 1 - 0
Entry 2 0 0 0 0 0 -
(0 = no relation, 1 = preferred, 2 = required)
Bubble diagram generation: Place rooms as circles/rectangles; connect required adjacencies with springs; use force-directed layout to minimize spring energy
Graph-based placement: Represent adjacency as a planar graph; find a planar embedding; assign rooms to faces of the graph
4.2 Grid-Based Placement
Discretize the floor plate into a grid and assign rooms to grid cells:
- Grid resolution: Typically 300mm, 600mm, or 1200mm module
- Bin packing: Treat rooms as rectangles, floor plate as a bin; use heuristics (bottom-left, best-fit, shelf algorithms)
- Integer programming: Assign binary variables x_{i,j,k} = 1 if room i occupies grid cell (j,k); add constraints for contiguity, adjacency, area
- Advantages: Naturally handles structural grid alignment
- Disadvantages: Grid resolution limits design freedom; large grids = many variables
4.3 Force-Directed Layout
Model rooms as particles in a physics simulation:
- Attractive forces: Between rooms that should be adjacent (spring force, F = k * delta)
- Repulsive forces: Between all room pairs to prevent overlap (Coulomb-like, F = q / r^2)
- Boundary forces: Repel rooms from floor plate boundary (containment)
- Gravity: Pull rooms toward building center (compactness)
- Damping: Reduce velocity each step to reach equilibrium (damping factor 0.8-0.95)
Algorithm:
1. Initialize room positions randomly within boundary
2. For each timestep:
a. Calculate all forces on each room
b. Update velocities: v += F * dt / mass
c. Apply damping: v *= damping_factor
d. Update positions: p += v * dt
e. Resolve overlaps (push apart along shortest separating axis)
f. Enforce boundary containment
3. Stop when total kinetic energy < threshold
Force-directed layout produces organic, relationship-driven arrangements but rarely produces rectangular room boundaries without post-processing.
4.4 Evolutionary Layout (GA-Based Floor Plan Generation)
Genetic algorithm approach:
Genome encoding:
- Sequence of room placements: [(room_id, x, y, w, h, rotation), ...]
- Or: slicing floorplan tree (horizontal/vertical cuts + room assignment)
- Or: adjacency graph + relative positioning flags (left-of, above, ...)
Fitness function (multi-objective):
- Adjacency satisfaction score (weighted)
- Area utilization (minimize wasted space)
- Aspect ratio quality (penalize extreme ratios)
- Circulation efficiency (total corridor area)
- Daylight access (perimeter contact for daylight-required rooms)
- Code compliance (exit distance, egress width)
Operators:
- Selection: Tournament selection (size 3-5)
- Crossover: Swap room subtrees between two parent slicing trees; or swap room positions
- Mutation: Shift room position, resize room, swap two rooms, change cut direction
- Repair: Fix overlaps, enforce boundary, adjust areas to program
Parameters:
- Population: 200-1000
- Generations: 500-5000
- Crossover rate: 0.7-0.9
- Mutation rate: 0.05-0.20
- Elitism: preserve top 5-10%
4.5 Recursive Subdivision
Top-down partitioning of a floor plate:
BSP-Tree (Binary Space Partitioning):
- Start with the entire floor plate as a single region
- Choose a cutting line (horizontal or vertical)
- Split the region into two sub-regions
- Assign rooms to sub-regions based on program
- Recursively subdivide each sub-region
- Stop when each region contains exactly one room
K-D Tree variant: Alternate between horizontal and vertical cuts at each level.
Squarified treemap: Choose cut direction and position to minimize aspect ratio deviation from 1:1. Produces compact, well-proportioned rooms.
Decision: Where to cut?
- Proportional to area: Cut position based on area ratio of rooms assigned to each side
- Adjacency-driven: Keep adjacent rooms on the same side of the cut
- Structural grid-aligned: Snap cuts to structural grid lines
4.6 Stacking Algorithms (Multi-Story)
For multi-story buildings, stacking determines which rooms/units go on which floors:
- Core alignment: Vertical circulation (stairs, elevators) must align across all floors
- Structural continuity: Load-bearing walls and columns must stack vertically
- Program zoning: Public/commercial on lower floors, private/residential above
- MEP continuity: Wet rooms (kitchens, bathrooms) should stack for efficient plumbing risers
- Unit type assignment: Assign unit types to floor plates considering:
- Typical floor repetition (efficiency)
- Setback floors (larger/different units)
- Ground floor special conditions (retail, lobby)
- Penthouse floor special conditions
4.7 Corridor and Circulation Routing
After rooms are placed, corridors must connect them:
- Shortest path: A* or Dijkstra on grid graph connecting room doors to building exits
- Minimum spanning tree: Connect all rooms with minimum total corridor length
- Dead-end elimination: Ensure corridors form loops or connect to multiple exits
- Width compliance: Corridors must meet minimum width (typically 1200mm residential, 1500mm commercial, 2400mm hospital)
- Travel distance: Maximum travel distance from any point to an exit (IBC: 60m sprinklered, 45m unsprinklered for most occupancies)
4.8 Room Sizing Rules by Program Type
| Room Type |
Area Range (m2) |
Min Dimension |
Notes |
| Studio apartment |
28-40 |
3.6m |
Combined living/sleeping |
| 1-bed apartment |
45-65 |
- |
Separate bedroom |
| 2-bed apartment |
65-90 |
- |
- |
| 3-bed apartment |
85-120 |
- |
- |
| Living room |
18-35 |
3.3m |
Daylight required |
| Master bedroom |
12-20 |
3.0m |
Daylight, closet |
| Secondary bedroom |
9-14 |
2.7m |
Daylight, closet |
| Kitchen |
7-15 |
2.4m |
Ventilation required |
| Bathroom |
3.5-8 |
1.5m |
Wet area |
| Powder room |
1.5-3 |
0.9m width |
No shower/tub |
| Office (private) |
9-15 |
2.7m |
Daylight preferred |
| Office (open plan) |
6-10 per person |
- |
8-12m max depth from window |
| Meeting room (small) |
12-20 |
3.0m |
4-8 persons |
| Meeting room (large) |
30-60 |
5.0m |
12-20 persons |
| Hotel guest room |
22-35 |
3.6m |
Standard; 40-65 for suite |
| Hospital patient room |
14-22 (single) |
3.6m |
With en-suite |
| Classroom |
50-75 |
6.0m |
25-30 students |
| Restaurant dining |
1.2-1.8 per seat |
- |
Varies by service style |
| Retail |
varies |
6.0m frontage min |
Varies widely |
5. Automated Layout Generation
5.1 Residential Unit Layout Generation
Automated residential layout follows a hierarchical process:
- Unit boundary definition: From structural grid and building envelope
- Zone identification: Public zone (living, dining, kitchen), private zone (bedrooms, bathrooms), service zone (laundry, storage), circulation (entry, corridors)
- Room placement priority order:
- Entry (fixed by corridor access point)
- Kitchen (plumbing riser location)
- Bathrooms (plumbing riser location)
- Living room (largest contiguous window wall)
- Bedrooms (remaining window walls)
- Storage/utility (interior, no window needed)
- Circulation routing: Entry to all rooms with minimum corridor
- Window assignment: Each habitable room gets exterior wall contact
- Validation: Check minimum areas, dimensions, ventilation, egress
Key constraints:
- Every habitable room must have natural light (window access)
- Kitchen requires exhaust ventilation path
- Bathroom requires mechanical or natural ventilation
- Entry should not open directly into bedroom
- No room should be a pass-through (except living to dining)
5.2 Office Floor Plate Optimization
Office layout automation considers:
- Core-to-window depth: 8-12m for open plan, 6-8m for cellular offices
- Core placement: Central core maximizes usable perimeter; side core maximizes contiguous floor area
- Planning grid: 1.35m or 1.50m module (furniture coordination)
- Cellular office sizing: 1-module (2.7m) small, 2-module (4.05m) standard, 3-module (5.4m) large
- Open plan zones: 6-8 workstations per cluster, team neighborhoods
- Support spaces: Meeting rooms at core adjacency, break rooms at perimeter
- Circulation: Primary corridor (1.8m), secondary aisles (1.2m)
- Efficiency target: 80-85% net-to-gross ratio
5.3 Hospital Department Layout
Hospital layout automation is among the most constrained:
- Clinical adjacencies: ED adjacent to imaging and lab; OR suite adjacent to ICU; CSSD below OR suite
- Clean/dirty flows: Separate clean and dirty corridors in surgical suites; soiled utility rooms with pass-through
- Patient flow: Intake → triage → treatment → discharge (linear, no backtracking)
- Staff flow: Separate from patient and visitor flows
- Infection control zones: Negative pressure rooms, anteroom airlocks
- Department sizing: By bed count, procedure volume, and throughput models
- Wayfinding: Clear circulation hierarchy; minimize decision points
5.4 Hotel Floor Plate
Hotel floor plate automation:
- Room arrangement: Double-loaded corridor (rooms on both sides) is most efficient
- Room width: Structural bay width (typically 3.6-4.2m standard, 7.2-8.4m for suite)
- Room depth: 6.0-8.0m for standard rooms
- Service core placement: Centralized or dual cores; housekeeping rooms per floor
- Corner rooms: Premium rooms, typically suites, require special planning
- Corridor length: Maximum ~60m between elevator lobby and last room (guest experience)
- Back-of-house: Service elevator, linen chute, housekeeping station, trash room
5.5 Parking Layout Optimization
Parking is highly amenable to automation:
- Bay angle options: 90 degrees (most dense), 60 degrees (easier maneuver), 45 degrees (one-way aisles), 0 degrees (parallel, least dense)
- Stall dimensions: 2.4m x 5.4m standard, 2.6m x 5.4m accessible
- Aisle width: 7.2m for 90-degree two-way, 5.5m for 60-degree one-way, 3.6m for parallel
- Ramp placement: Typically at perimeter; 12% max slope, 6% transition at top/bottom; 3.6m clear width per lane
- Optimization objective: Maximize stall count within site boundary
- Algorithm: Grid search over bay angle and aisle direction; evaluate count for each configuration
- Structural grid: 5.0m x 5.0m bays typical for parking; 8.1m x 5.0m for column-free spans
- Accessible stalls: 1 per 25 stalls minimum; van-accessible 1 per 6 accessible
5.6 Classroom/School Layout
School layout automation:
- Classroom clusters: Groups of 4-6 classrooms sharing a breakout space
- Adjacency: Classrooms near related labs; art/music with acoustic separation
- Outdoor access: Ground-floor classrooms with direct outdoor access (primary school)
- Acoustic separation: Music rooms and gymnasia separated from quiet classrooms (STC 55+ walls)
- Supervision lines: Staff offices with sightlines to corridors and play areas
- Safe access: Single controlled entry point; perimeter security
- Hall/gymnasium: Central location accessible from all classroom wings
6. Drawing Automation
6.1 Automated Floor Plan Generation from Spatial Data
Given a spatial model (rooms with geometry), automated floor plan production:
- Wall line generation: Extract room boundaries, merge shared walls, assign wall types (exterior, interior, fire-rated)
- Door and window placement: From openings in spatial model; apply standard sizes
- Fixture placement: Bathroom fixtures, kitchen counters by room type templates
- Hatch/fill patterns: Apply by material (concrete, tile, carpet) or by room type
- Line weight assignment: By element type (heavy for cut walls, medium for furniture, light for ceiling grid)
- Annotation layer: Room names, numbers, areas, door/window tags
6.2 Section and Elevation Generation
Automated sections and elevations:
- Section cut placement: At key locations (through stairs, through atrium, through typical bay)
- Depth limiting: Clip section depth to show relevant information only
- Material hatching: Auto-apply section hatches by material
- Annotation: Floor-to-floor heights, slab thicknesses, structural member sizes
- Elevation generation: Project facade elements; apply material annotations; dimension window/door openings
6.3 Detail Library Management and Auto-Placement
- Standard detail library: Organized by CSI division (02-Sitework, 03-Concrete, 04-Masonry, etc.)
- Detail keying: Each detail has a unique key (type + condition + material)
- Auto-placement: System identifies conditions in the model (e.g., wall-to-slab junction) and places the appropriate standard detail
- Detail adaptation: Parametric details adjust dimensions to match model conditions
- Version control: Detail library versioned; updates propagate to all projects
6.4 Annotation Automation
- Dimension strings: Auto-dimension structural grids, wall-to-wall, opening positions
- Room tags: Auto-place with room name, number, area, finish floor elevation
- Door/window tags: Auto-tag with mark number, type, size
- Keynoting: Auto-keynote materials by element type; generate keynote legend
- Leader and callout placement: Avoid overlaps using collision detection; route leaders to clear space
- Coordination: Ensure annotation does not overlap with drawing content
6.5 Sheet Layout Optimization
- View-to-sheet assignment: Assign views to sheets based on drawing set organization (plans on A-series, sections on A-series, details on A-series sub-sheets)
- View placement: Optimize view positions on sheets to minimize white space
- Title block: Auto-populate project info, sheet number, revision history
- Sheet numbering: Follow standard conventions (A1.01, A2.01, S1.01, etc.)
- Cross-referencing: Auto-update section markers, detail callouts, drawing references
6.6 Export Automation
- Batch PDF export: Export all sheets to PDF with naming convention
- DWG export: Export to DWG with layer mapping table (Revit layers → CAD layers)
- Transmittal generation: Auto-generate drawing list, revision log, transmittal cover sheet
- Naming convention: Project#-Discipline-SheetType-Number-Revision (e.g., 2024001-A-FP-101-R03.pdf)
- Quality checks: Verify all views are placed, all tags are filled, no empty sheets
6.7 Revit API for Drawing Automation
Key Revit API classes for drawing automation (C# / pyRevit / RevitPythonShell):
# pyRevit example: Create sheets from Excel schedule
from Autodesk.Revit.DB import (
FilteredElementCollector, ViewSheet,
ViewFamilyType, Viewport
)
doc = __revit__.ActiveUIDocument.Document
# Get title block family type
title_blocks = FilteredElementCollector(doc) \
.OfClass(FamilySymbol) \
.OfCategory(BuiltInCategory.OST_TitleBlocks) \
.ToElements()
# Create new sheet
with Transaction(doc, "Create Sheet") as t:
t.Start()
new_sheet = ViewSheet.Create(doc, title_blocks[0].Id)
new_sheet.SheetNumber = "A1.01"
new_sheet.Name = "FLOOR PLAN - LEVEL 1"
# Place view on sheet
view = get_view_by_name("Level 1 Floor Plan")
viewport = Viewport.Create(doc, new_sheet.Id, view.Id, XYZ(0.4, 0.3, 0))
t.Commit()
6.8 Dynamo for View/Sheet Management
Dynamo workflows for drawing automation:
- Sheets.CreateByNumber: Create sheets from list of numbers and names
- Views.SetCropBox: Auto-set crop regions based on room/level boundaries
- Viewport.SetLocation: Position viewports on sheets by coordinates
- Element.SetParameterByName: Batch-update parameters (scale, detail level, view template)
- Data.ImportExcel: Read sheet lists, room schedules, or parameter data from Excel
7. Code Compliance Checking
7.1 Building Code Automation: Egress
Automated egress checking is the most mature area of code compliance:
Occupant load calculation:
Occupant_Load = Floor_Area / Load_Factor
Load factors (IBC Table 1004.5):
- Assembly (chairs) = 0.65 m2/person
- Business = 9.3 m2/person
- Residential = 18.6 m2/person
- Educational = 1.9 m2/person
- Mercantile (ground floor) = 2.8 m2/person
Exit requirements:
- 1-500 occupants: minimum 2 exits
- 501-1000: minimum 3 exits
- 1001+: minimum 4 exits
Exit width:
Total_exit_width = Occupant_load * width_factor
Stairways: 7.6 mm/person (sprinklered), 5.1 mm/person (unsprinklered) [IBC]
Other egress: 5.0 mm/person (sprinklered), 3.8 mm/person (unsprinklered) [IBC]
Minimum single exit width: 810 mm (door), 1120 mm (corridor)
Travel distance (IBC Table 1017.2):
- Business, sprinklered: 90m (300 ft)
- Residential, sprinklered: 75m (250 ft)
- Assembly, sprinklered: 75m (250 ft)
- High hazard: 23m (75 ft)
Common path of egress travel: Maximum distance before two separate paths to exits are available. Typically 23m (75 ft).
7.2 Fire Safety Automation
- Compartmentation: Maximum compartment area by construction type (IBC Table 506.2). Auto-check that fire walls divide building into compliant compartments.
- Fire resistance rating: By construction type and element (IBC Table 601). Auto-assign to wall, floor, and roof assemblies.
- Sprinkler coverage: Maximum coverage area per sprinkler head (standard 12.1 m2, light hazard). Auto-generate sprinkler layout.
- Fire separation distance: Distance from building face to property line or adjacent building. Determines allowable opening percentage.
- Smoke control: Atrium smoke management, stair pressurization requirements.
7.3 Accessibility Automation
Key accessibility rules for automated checking:
- Door clear width: Minimum 815mm clear (ADA), 900mm (EN); auto-check all doors
- Ramp grades: Maximum 1:12 (8.3%); preferred 1:20 (5%); maximum rise 760mm per run; landings at top, bottom, and every 9m
- Turning circles: 1500mm diameter (ADA 1525mm) at all turns, at ends of corridors, in accessible rooms
- Reach ranges: Forward reach 380-1220mm; side reach 230-1370mm (ADA)
- Accessible route: Continuous accessible path from site entrance to all building functions; auto-trace and verify
- Elevator requirements: Buildings 3+ stories or 3000+ sq ft per floor require elevator
- Accessible fixtures: Toilet centerline 450-460mm from side wall; grab bars at 840-920mm; lavatory knee clearance 685mm
7.4 Zoning Compliance
Automated zoning checks:
- Setback verification: Measure from building face to property line; compare to required front, side, rear setbacks
- Height limit: Building height (grade to highest point) vs. zoning maximum; also story count limits
- FAR calculation: Floor Area Ratio = Gross Floor Area / Lot Area; compare to zoning maximum
- Lot coverage: Building footprint area / Lot area; compare to maximum
- Parking requirements: Required spaces by use type and area/unit count; compare to provided
- Open space: Required open space calculation; verify provided open space meets minimum
7.5 Daylight Compliance
- Right to light: Check that new construction does not reduce daylight to neighboring buildings below acceptable levels (BRE 209 method: VSC, NSL)
- Daylight factor: Minimum 2% average daylight factor for habitable rooms (UK standard); 1% minimum at any point
- Window-to-floor ratio: Minimum glazing area as percentage of floor area (varies by code; often 10-12.5%)
- Automated checking: From model geometry, calculate sky view factor at window; compare to threshold
7.6 Automated Compliance Report Generation
Generate structured compliance reports:
BUILDING CODE COMPLIANCE REPORT
Project: [Auto-fill from model]
Code: IBC 2021 / Local amendments
Date: [Auto-generate]
1. BUILDING CLASSIFICATION
Occupancy: B (Business)
Construction Type: IIA
Height: 23.5m (< 55m allowed) ✓
Stories: 6 (< 12 allowed) ✓
Area per floor: 1,850 m2 (< 3,700 m2 allowed) ✓
2. EGRESS
Floor 1: Occupant load 199, Required exits 2, Provided 3 ✓
Floor 2: Occupant load 199, Required exits 2, Provided 2 ✓
...
Max travel distance: 42.3m (< 90m) ✓
Common path: 18.7m (< 23m) ✓
3. ACCESSIBILITY
Accessible route: Continuous ✓
Door clearances: All doors ≥ 815mm ✓
Elevator provided: Yes ✓
Accessible toilet: 1 per floor ✓
...
RESULT: 47/47 checks PASS, 0 FAIL, 3 ADVISORY
8. Computational Workflow Design
8.1 Workflow Orchestration Patterns
Sequential: Step A → Step B → Step C. Each step requires output of previous step.
Example: Site analysis → massing generation → energy simulation → report.
Parallel: Steps A, B, C run simultaneously; results merged at sync point.
Example: Structural analysis, energy analysis, daylight analysis run in parallel; results combined in dashboard.
Conditional branching: IF condition THEN path A ELSE path B.
Example: IF building height > 23m THEN high-rise structural system ELSE conventional framing.
Iterative loop: Repeat steps until convergence or max iterations.
Example: Adjust facade WWR → run energy simulation → check EUI target → if not met, adjust again.
Fan-out/fan-in: Generate N variants (fan-out) → evaluate all → select best (fan-in).
Example: Generate 100 floor plan options → score each → present top 10.
8.2 Workflow Engines for AEC
| Engine |
Language |
Strengths |
AEC Use |
| Grasshopper |
Visual/C# |
Visual, real-time preview, huge plugin ecosystem |
Parametric geometry, environmental analysis, optimization |
| Dynamo |
Visual/Python |
Revit integration, BIM automation |
Drawing automation, model checking, data management |
| Speckle Automate |
Python/C# |
Cloud-native, event-driven, BIM data |
Automated model checks, data transformations |
| n8n |
Node.js |
API integration, webhook triggers |
Multi-tool orchestration, notification pipelines |
| Apache Airflow |
Python |
DAG-based, scalable, monitoring |
Large-scale batch processing, simulation farms |
| Prefect |
Python |
Modern Airflow alternative, easy debugging |
ML pipeline orchestration |
| Custom Python |
Python |
Full control, any library |
Complex multi-step automation |
8.3 Error Handling in Automated Workflows
Robust automation requires comprehensive error handling:
- Input validation: Check all inputs before processing (file existence, data types, value ranges)
- Graceful degradation: If optional step fails, continue with defaults
- Retry logic: Transient failures (network, license server) retry with exponential backoff
- Fallback strategies: If primary method fails, use alternative method
- Error logging: Record all errors with context (timestamp, inputs, stack trace)
- User notification: Alert user to failures requiring human intervention
- Checkpoint/restart: Save intermediate results; resume from last checkpoint after failure
8.4 Logging and Audit Trails
Design automation must maintain audit trails for:
- Professional liability (documenting design decisions)
- Quality assurance (tracing errors to source)
- Regulatory compliance (demonstrating code compliance process)
- Knowledge management (understanding why decisions were made)
Log levels: DEBUG (detailed computation), INFO (workflow steps), WARNING (non-critical issues), ERROR (failures), CRITICAL (system failures).
8.5 Version Control for Workflows
- Store Grasshopper definitions in Git (
.gh files are binary; use .ghx XML format for diffing)
- Dynamo graphs:
.dyn files are JSON; store in Git with meaningful commit messages
- Python scripts: Standard Git workflow with branching, code review
- Rule libraries: Version rule sets independently from code; track code edition and amendment dates
- Template libraries: Version parametric detail templates with semantic versioning
9. Design Automation Case Studies
9.1 Automated Facade Design
Pipeline: Solar analysis → shading device sizing → panel generation → fabrication data
- Solar analysis: Run annual solar radiation simulation on facade surfaces (Ladybug/Honeybee or custom raytracing). Output: radiation map (kWh/m2/yr) per facade cell.
- Shading device sizing: For each cell, calculate required shading depth based on radiation and orientation:
shade_depth = window_height * tan(critical_sun_angle) * shading_factor
critical_sun_angle = solar altitude at cooling design day peak
- Panel generation: Generate facade panel geometry with sized shading devices. Apply panel types from a limited palette (e.g., 4-5 fin depths) for constructability.
- Structural check: Verify fin depth/projection within structural capacity of facade framing.
- Fabrication data: Export panel schedule with dimensions, material, finish. Generate CNC cutting files for custom panels. Output IFC model for coordination.
Result: 3000 unique panels documented in 2 hours instead of 2 weeks.
9.2 Automated Parking Garage
Pipeline: Site boundary → ramp placement → bay layout → structural grid → count verification
- Input: Site boundary polygon, required stall count, entry/exit locations, floor-to-floor height
- Ramp placement: Test ramp locations at site perimeter and interior; evaluate traffic flow for each
- Bay layout: For each ramp configuration, run parking layout algorithm:
- Try 90-degree bays along long axis, then short axis
- Try 60-degree bays if count is not met
- Evaluate: stall count, aisle efficiency, dead-end length
- Structural grid: Overlay structural grid aligned with parking bays (typically 5.0 x 8.1m or 5.0 x 16.2m for long-span)
- Count verification: Total stalls per level x number of levels; check against requirement
- Accessible stalls: Place required accessible stalls near elevators
- Output: Floor plans, sections, stall count schedule, structural grid drawing
9.3 Automated Residential Tower
Pipeline: Unit type library → floor plate stacking → core placement → code checking
- Unit type library: Pre-designed unit types with variants:
- Studio (28-35 m2): 3 variants
- 1-bed (45-60 m2): 4 variants
- 2-bed (70-90 m2): 5 variants
…(truncated)
1---2name: design-automation3description: Rule-based design systems, constraint satisfaction, space planning algorithms, automated layout generation, drawing automation, code compliance checking, and computational workflows for AEC design automation4---56# Design Automation for AEC78Design automation is the disciplined application of computational logic to replace, accelerate, or augment repetitive and rule-governed design tasks across architecture, engineering, and construction. This skill covers the full spectrum from simple parametric rules through constraint-satisfaction engines to fully generative layout systems, drawing automation pipelines, and automated code-compliance verification.910---1112## 1. Design Automation Spectrum1314### 1.1 Levels of Automation in AEC1516Design automation exists on a continuum. Understanding where a task falls on this spectrum determines the appropriate technology and the degree of human oversight required.1718| Level | Label | Description | Example |19|-------|-------|-------------|---------|20| 0 | Manual | Designer makes every decision, draws every line | Hand-drafted floor plans |21| 1 | Parametric | Geometry driven by explicit parameters; designer controls inputs | Grasshopper slider controlling facade panel width |22| 2 | Rule-Based | IF-THEN logic encodes design knowledge; system applies rules automatically | Auto-sizing exit widths based on occupant load |23| 3 | Constraint-Based | System searches solution space satisfying stated constraints | CSP solver placing rooms to satisfy adjacency + area constraints |24| 4 | Generative | System produces many candidate designs autonomously; human selects | GA-based floor plan generator producing 500 layout options |25| 5 | AI-Assisted | Machine-learned models propose designs or predict performance | GAN generating floor plan from adjacency graph |26| 6 | Autonomous | Fully closed-loop: sense conditions, generate design, validate, output | Automated site grading from survey to construction docs (emerging) |2728### 1.2 What Can vs. Should Be Automated2930**High automation potential:**31- Code compliance checking (deterministic rules)32- Structural member sizing (engineering formulas)33- Parking layout optimization (geometric + count)34- Sheet creation and annotation (repetitive)35- Clash detection (spatial intersection)36- Area and quantity takeoffs (data extraction)3738**Medium automation potential:**39- Space planning and room layout (heuristic + constraint)40- Facade design (performance + aesthetic rules)41- MEP routing (complex constraints, many valid solutions)42- Site grading (optimization with soft constraints)4344**Low automation potential (human judgment critical):**45- Architectural concept design (cultural, contextual)46- Urban massing and placemaking (experiential quality)47- Material palette selection (aesthetic, tactile)48- Client presentation and persuasion (social)4950### 1.3 Human-in-the-Loop Design Automation5152The most effective AEC automation systems keep designers in the loop at critical decision points:53541. **Define** — Human sets objectives, constraints, preferences552. **Generate** — System produces candidate solutions563. **Evaluate** — System scores and ranks; human reviews574. **Select** — Human chooses preferred direction585. **Refine** — System develops selected option further596. **Validate** — Automated compliance checking; human sign-off6061This cycle can repeat at multiple scales: master plan level, building level, floor level, room level.6263### 1.4 The Role of Design Rules and Heuristics6465Design rules encode domain expertise in computable form:6667- **Hard rules**: Must be satisfied (building code, structural limits). Violation = invalid design.68- **Soft rules**: Should be satisfied (rules of thumb, best practices). Violation = penalty score.69- **Heuristics**: Rules of thumb that usually produce good results but are not guaranteed optimal. Examples:70 - Office floor plate depth should not exceed 15m from core to window71 - Residential corridor length should not exceed 30m without a window72 - Parking bay angle of 90 degrees maximizes density; 60 degrees improves maneuverability73 - Structure grid spacing of 7.5-9.0m suits most office programs7475---7677## 2. Rule-Based Design Systems7879### 2.1 Production Rules (IF-THEN)8081The simplest and most widely used automation pattern in AEC:8283```84IF occupant_load > 50085THEN required_exits >= 386 AND exit_width_total >= occupant_load * 5.0mm8788IF room_type == "bathroom" AND floor_area < 4.089THEN min_dimension >= 1.5m90 AND door_swing == "outward"9192IF building_height > 23m93THEN fire_resistance_rating >= 120min94 AND sprinkler_system == required95```9697Production rules are stored in a rule base and executed by a rule engine that:981. Matches rules against current facts (pattern matching)992. Resolves conflicts when multiple rules fire (conflict resolution)1003. Executes the winning rule's action (assertion or modification)1014. Repeats until no more rules fire (quiescence)102103### 2.2 Decision Trees104105Hierarchical rule structures where each node tests a condition and branches lead to sub-decisions:106107```108Building Classification Decision Tree:109├── Occupancy > 300?110│ ├── YES → Assembly (A)111│ │ ├── Fixed seating? → A-1112│ │ ├── No fixed seating? → A-2113│ │ └── Worship? → A-3114│ └── NO → Business (B)115│ ├── Office? → B116│ └── Educational? → E117│ ├── Students > 12 yrs? → E118│ └── Students ≤ 12 yrs? → E (daycare)119```120121Decision trees are valuable because they are transparent, auditable, and can be validated against code text.122123### 2.3 Rule Engines124125Production rule engines for AEC applications:126127- **Forward chaining**: Start from known facts, derive conclusions. Used for compliance checking. "Given this building, what rules are violated?"128- **Backward chaining**: Start from goal, find supporting facts. Used for design guidance. "What do I need to achieve fire compliance?"129- **Rete algorithm**: Efficient pattern matching for large rule sets. Maintains a network of partial matches; only re-evaluates affected rules when facts change.130131Implementation options:132- Python: `durable-rules`, `business-rules`, custom engines133- Java/Kotlin: Drools (most mature open-source rule engine)134- .NET: NRules (for Revit add-in integration)135- Grasshopper: Conditional components, custom C# script nodes136137### 2.4 Shape Grammars (Stiny)138139Shape grammars define a set of shape rules that transform geometric configurations. Formally:140141```142SG = (S, L, R, I)143where:144 S = finite set of shapes145 L = finite set of labels (markers, reference points)146 R = finite set of shape rules: α → β (replace shape α with shape β)147 I = initial shape148```149150Shape grammar applications in AEC:151- **Palladian villa grammar** (Stiny & Mitchell, 1978): Generates villa plans following Palladio's compositional logic152- **Prairie house grammar** (Koning & Eizenberg, 1981): Encodes Frank Lloyd Wright's Prairie style153- **Musgum grammar**: Encodes traditional Musgum shell house typology154- **Islamic geometric pattern grammars**: Tile-based generation of complex ornamental patterns155- **Facade grammar**: Generates facade variations from a vocabulary of elements (window, panel, mullion, spandrel)156157### 2.5 Graph Grammars158159Extend shape grammars to operate on graph structures (nodes + edges) rather than geometric shapes:160161- Nodes represent rooms, spaces, or building elements162- Edges represent adjacency, access, containment, or structural relationships163- Rules transform subgraphs: match a pattern, replace with a new pattern164165Graph grammars are powerful for:166- Floor plan generation from room adjacency programs167- Building massing from spatial relationship diagrams168- Urban block subdivision from land-use programs169170### 2.6 Rule Priority and Conflict Resolution171172When multiple rules apply simultaneously, conflict resolution strategies include:1731741. **Priority ordering**: Each rule has a numeric priority; highest fires first1752. **Specificity**: More specific rules override general rules (e.g., local code overrides IBC)1763. **Recency**: Rules matching recently modified facts fire first1774. **Refraction**: A rule does not fire twice on the same set of facts1785. **Jurisdictional hierarchy**: Federal > State > Local > Project-specific179180### 2.7 Rule Libraries for AEC181182| Domain | Rule Source | Key Rules |183|--------|-----------|-----------|184| Egress | IBC Chapter 10 | Occupant load factors, exit width, travel distance, common path |185| Fire safety | IBC Chapter 7 | Fire resistance ratings, compartment sizes, opening protection |186| Accessibility | ADA/ABA, EN 17210 | Clear widths, ramp grades, turning radii, reach ranges |187| Structural | ASCE 7, Eurocode | Load combinations, deflection limits, drift limits |188| Zoning | Local zoning code | Setbacks, height, FAR, lot coverage, parking ratios |189| Energy | ASHRAE 90.1, IECC | Envelope U-values, WWR limits, HVAC efficiency |190| Plumbing | IPC | Fixture counts by occupancy, pipe sizing |191192---193194## 3. Constraint Satisfaction Problems (CSP)195196### 3.1 CSP Formalism197198A CSP is defined by the triple (X, D, C):199200- **X** = {X1, X2, ..., Xn}: set of variables201- **D** = {D1, D2, ..., Dn}: set of domains (possible values for each variable)202- **C** = {C1, C2, ..., Cm}: set of constraints (relations restricting variable assignments)203204A **solution** is an assignment of values to all variables such that every constraint is satisfied.205206### 3.2 CSP for Floor Plan Layout207208Formulating floor plan layout as a CSP:209210**Variables**: Room positions and dimensions211- X_i = (x_i, y_i, w_i, h_i) for each room i212213**Domains**:214- Position: within building boundary215- Width/height: within acceptable range for room type216217**Constraints**:218- **Non-overlap**: No two rooms share interior area219- **Boundary containment**: All rooms within building envelope220- **Adjacency**: Specified room pairs must share a wall segment of minimum length (door width)221- **Non-adjacency**: Certain rooms must not be adjacent (e.g., bedroom not adjacent to mechanical)222- **Area**: Room area within specified range (e.g., living room 20-35 m2)223- **Aspect ratio**: Room width-to-depth ratio within range (e.g., 1:1 to 1:2)224- **Window access**: Rooms requiring daylight must touch an exterior wall225- **Structural grid alignment**: Room boundaries align with structural grid lines226227### 3.3 Arc Consistency228229Arc consistency (AC-3) prunes variable domains before search begins:230231For every pair of constrained variables (Xi, Xj), remove values from Di that have no supporting value in Dj. Repeat until no more pruning occurs.232233This dramatically reduces the search space. For AEC problems with continuous domains, discretize positions to a grid (e.g., 300mm module) to make the domain finite.234235### 3.4 Backtracking Search236237The standard algorithm for solving CSPs:238239```240function BACKTRACK(assignment, csp):241 if assignment is complete: return assignment242 var = SELECT-UNASSIGNED-VARIABLE(csp)243 for value in ORDER-DOMAIN-VALUES(var, assignment, csp):244 if value is consistent with assignment:245 add {var = value} to assignment246 inferences = INFERENCE(csp, var, value)247 if inferences != failure:248 add inferences to assignment249 result = BACKTRACK(assignment, csp)250 if result != failure: return result251 remove inferences and {var = value}252 return failure253```254255Key heuristics for AEC CSPs:256- **MRV (Minimum Remaining Values)**: Assign the room with fewest valid placements first (fail-early)257- **Degree heuristic**: Assign the room with most adjacency constraints first258- **Least Constraining Value**: Try placements that leave the most options for unassigned rooms259260### 3.5 Constraint Propagation261262Beyond arc consistency, stronger propagation techniques:263- **Path consistency**: Ensures consistency for triples of variables264- **MAC (Maintaining Arc Consistency)**: Run AC-3 after each assignment265- **Forward checking**: Remove inconsistent values from neighbors of just-assigned variable266267### 3.6 Soft vs. Hard Constraints268269In real AEC problems, not all constraints are absolute:270271**Hard constraints** (must satisfy):272- Building code requirements273- Structural limits274- Site boundary275- Non-overlap of rooms276277**Soft constraints** (prefer to satisfy, with penalty for violation):278- Preferred adjacency (e.g., kitchen near dining)279- View orientation (e.g., living room faces south)280- Preferred aspect ratio281- Acoustic separation preferences282283Soft constraints are handled by:2841. **Weighted CSP**: Each soft constraint has a weight; minimize total penalty2852. **Optimization over feasible set**: Find all hard-constraint-satisfying solutions, then rank by soft constraint satisfaction2863. **Pareto frontier**: When soft constraints conflict, find non-dominated solutions287288### 3.7 CSP for Structural Grid289290Variables: Grid line positions along X and Y axes291Domains: Continuous within building boundary, discretized to module (e.g., 100mm)292Constraints:293- Minimum span: 5.0m (functional space between columns)294- Maximum span: 12.0m (without transfer structures for typical concrete)295- Column-free zones: No columns in specified areas (auditorium, lobby)296- Edge alignment: Grid aligns with building perimeter297- Core alignment: Grid lines pass through core walls298- Regularity: Prefer uniform bay sizes (soft constraint)299300---301302## 4. Space Planning Algorithms303304### 4.1 Adjacency-Based Layout305306The classic space planning approach:3073081. **Adjacency matrix**: Define required and desired adjacencies between rooms309310```311 LIV DIN KIT BED1 BED2 BATH ENT312Living - 2 1 0 0 0 2313Dining 2 - 2 0 0 0 0314Kitchen 1 2 - 0 0 0 0315Bed 1 0 0 0 - 0 2 0316Bed 2 0 0 0 0 - 1 0317Bath 0 0 0 2 1 - 0318Entry 2 0 0 0 0 0 -319320(0 = no relation, 1 = preferred, 2 = required)321```3223232. **Bubble diagram generation**: Place rooms as circles/rectangles; connect required adjacencies with springs; use force-directed layout to minimize spring energy3243253. **Graph-based placement**: Represent adjacency as a planar graph; find a planar embedding; assign rooms to faces of the graph326327### 4.2 Grid-Based Placement328329Discretize the floor plate into a grid and assign rooms to grid cells:330331- **Grid resolution**: Typically 300mm, 600mm, or 1200mm module332- **Bin packing**: Treat rooms as rectangles, floor plate as a bin; use heuristics (bottom-left, best-fit, shelf algorithms)333- **Integer programming**: Assign binary variables x_{i,j,k} = 1 if room i occupies grid cell (j,k); add constraints for contiguity, adjacency, area334- **Advantages**: Naturally handles structural grid alignment335- **Disadvantages**: Grid resolution limits design freedom; large grids = many variables336337### 4.3 Force-Directed Layout338339Model rooms as particles in a physics simulation:340341- **Attractive forces**: Between rooms that should be adjacent (spring force, F = k * delta)342- **Repulsive forces**: Between all room pairs to prevent overlap (Coulomb-like, F = q / r^2)343- **Boundary forces**: Repel rooms from floor plate boundary (containment)344- **Gravity**: Pull rooms toward building center (compactness)345- **Damping**: Reduce velocity each step to reach equilibrium (damping factor 0.8-0.95)346347Algorithm:348```3491. Initialize room positions randomly within boundary3502. For each timestep:351 a. Calculate all forces on each room352 b. Update velocities: v += F * dt / mass353 c. Apply damping: v *= damping_factor354 d. Update positions: p += v * dt355 e. Resolve overlaps (push apart along shortest separating axis)356 f. Enforce boundary containment3573. Stop when total kinetic energy < threshold358```359360Force-directed layout produces organic, relationship-driven arrangements but rarely produces rectangular room boundaries without post-processing.361362### 4.4 Evolutionary Layout (GA-Based Floor Plan Generation)363364Genetic algorithm approach:365366**Genome encoding**:367- Sequence of room placements: [(room_id, x, y, w, h, rotation), ...]368- Or: slicing floorplan tree (horizontal/vertical cuts + room assignment)369- Or: adjacency graph + relative positioning flags (left-of, above, ...)370371**Fitness function** (multi-objective):372- Adjacency satisfaction score (weighted)373- Area utilization (minimize wasted space)374- Aspect ratio quality (penalize extreme ratios)375- Circulation efficiency (total corridor area)376- Daylight access (perimeter contact for daylight-required rooms)377- Code compliance (exit distance, egress width)378379**Operators**:380- **Selection**: Tournament selection (size 3-5)381- **Crossover**: Swap room subtrees between two parent slicing trees; or swap room positions382- **Mutation**: Shift room position, resize room, swap two rooms, change cut direction383- **Repair**: Fix overlaps, enforce boundary, adjust areas to program384385**Parameters**:386- Population: 200-1000387- Generations: 500-5000388- Crossover rate: 0.7-0.9389- Mutation rate: 0.05-0.20390- Elitism: preserve top 5-10%391392### 4.5 Recursive Subdivision393394Top-down partitioning of a floor plate:395396**BSP-Tree (Binary Space Partitioning)**:3971. Start with the entire floor plate as a single region3982. Choose a cutting line (horizontal or vertical)3993. Split the region into two sub-regions4004. Assign rooms to sub-regions based on program4015. Recursively subdivide each sub-region4026. Stop when each region contains exactly one room403404**K-D Tree variant**: Alternate between horizontal and vertical cuts at each level.405406**Squarified treemap**: Choose cut direction and position to minimize aspect ratio deviation from 1:1. Produces compact, well-proportioned rooms.407408Decision: Where to cut?409- Proportional to area: Cut position based on area ratio of rooms assigned to each side410- Adjacency-driven: Keep adjacent rooms on the same side of the cut411- Structural grid-aligned: Snap cuts to structural grid lines412413### 4.6 Stacking Algorithms (Multi-Story)414415For multi-story buildings, stacking determines which rooms/units go on which floors:4164171. **Core alignment**: Vertical circulation (stairs, elevators) must align across all floors4182. **Structural continuity**: Load-bearing walls and columns must stack vertically4193. **Program zoning**: Public/commercial on lower floors, private/residential above4204. **MEP continuity**: Wet rooms (kitchens, bathrooms) should stack for efficient plumbing risers4215. **Unit type assignment**: Assign unit types to floor plates considering:422 - Typical floor repetition (efficiency)423 - Setback floors (larger/different units)424 - Ground floor special conditions (retail, lobby)425 - Penthouse floor special conditions426427### 4.7 Corridor and Circulation Routing428429After rooms are placed, corridors must connect them:430431- **Shortest path**: A* or Dijkstra on grid graph connecting room doors to building exits432- **Minimum spanning tree**: Connect all rooms with minimum total corridor length433- **Dead-end elimination**: Ensure corridors form loops or connect to multiple exits434- **Width compliance**: Corridors must meet minimum width (typically 1200mm residential, 1500mm commercial, 2400mm hospital)435- **Travel distance**: Maximum travel distance from any point to an exit (IBC: 60m sprinklered, 45m unsprinklered for most occupancies)436437### 4.8 Room Sizing Rules by Program Type438439| Room Type | Area Range (m2) | Min Dimension | Notes |440|-----------|----------------|---------------|-------|441| Studio apartment | 28-40 | 3.6m | Combined living/sleeping |442| 1-bed apartment | 45-65 | - | Separate bedroom |443| 2-bed apartment | 65-90 | - | - |444| 3-bed apartment | 85-120 | - | - |445| Living room | 18-35 | 3.3m | Daylight required |446| Master bedroom | 12-20 | 3.0m | Daylight, closet |447| Secondary bedroom | 9-14 | 2.7m | Daylight, closet |448| Kitchen | 7-15 | 2.4m | Ventilation required |449| Bathroom | 3.5-8 | 1.5m | Wet area |450| Powder room | 1.5-3 | 0.9m width | No shower/tub |451| Office (private) | 9-15 | 2.7m | Daylight preferred |452| Office (open plan) | 6-10 per person | - | 8-12m max depth from window |453| Meeting room (small) | 12-20 | 3.0m | 4-8 persons |454| Meeting room (large) | 30-60 | 5.0m | 12-20 persons |455| Hotel guest room | 22-35 | 3.6m | Standard; 40-65 for suite |456| Hospital patient room | 14-22 (single) | 3.6m | With en-suite |457| Classroom | 50-75 | 6.0m | 25-30 students |458| Restaurant dining | 1.2-1.8 per seat | - | Varies by service style |459| Retail | varies | 6.0m frontage min | Varies widely |460461---462463## 5. Automated Layout Generation464465### 5.1 Residential Unit Layout Generation466467Automated residential layout follows a hierarchical process:4684691. **Unit boundary definition**: From structural grid and building envelope4702. **Zone identification**: Public zone (living, dining, kitchen), private zone (bedrooms, bathrooms), service zone (laundry, storage), circulation (entry, corridors)4713. **Room placement priority order**:472 - Entry (fixed by corridor access point)473 - Kitchen (plumbing riser location)474 - Bathrooms (plumbing riser location)475 - Living room (largest contiguous window wall)476 - Bedrooms (remaining window walls)477 - Storage/utility (interior, no window needed)4784. **Circulation routing**: Entry to all rooms with minimum corridor4795. **Window assignment**: Each habitable room gets exterior wall contact4806. **Validation**: Check minimum areas, dimensions, ventilation, egress481482Key constraints:483- Every habitable room must have natural light (window access)484- Kitchen requires exhaust ventilation path485- Bathroom requires mechanical or natural ventilation486- Entry should not open directly into bedroom487- No room should be a pass-through (except living to dining)488489### 5.2 Office Floor Plate Optimization490491Office layout automation considers:492493- **Core-to-window depth**: 8-12m for open plan, 6-8m for cellular offices494- **Core placement**: Central core maximizes usable perimeter; side core maximizes contiguous floor area495- **Planning grid**: 1.35m or 1.50m module (furniture coordination)496- **Cellular office sizing**: 1-module (2.7m) small, 2-module (4.05m) standard, 3-module (5.4m) large497- **Open plan zones**: 6-8 workstations per cluster, team neighborhoods498- **Support spaces**: Meeting rooms at core adjacency, break rooms at perimeter499- **Circulation**: Primary corridor (1.8m), secondary aisles (1.2m)500- **Efficiency target**: 80-85% net-to-gross ratio501502### 5.3 Hospital Department Layout503504Hospital layout automation is among the most constrained:505506- **Clinical adjacencies**: ED adjacent to imaging and lab; OR suite adjacent to ICU; CSSD below OR suite507- **Clean/dirty flows**: Separate clean and dirty corridors in surgical suites; soiled utility rooms with pass-through508- **Patient flow**: Intake → triage → treatment → discharge (linear, no backtracking)509- **Staff flow**: Separate from patient and visitor flows510- **Infection control zones**: Negative pressure rooms, anteroom airlocks511- **Department sizing**: By bed count, procedure volume, and throughput models512- **Wayfinding**: Clear circulation hierarchy; minimize decision points513514### 5.4 Hotel Floor Plate515516Hotel floor plate automation:517518- **Room arrangement**: Double-loaded corridor (rooms on both sides) is most efficient519- **Room width**: Structural bay width (typically 3.6-4.2m standard, 7.2-8.4m for suite)520- **Room depth**: 6.0-8.0m for standard rooms521- **Service core placement**: Centralized or dual cores; housekeeping rooms per floor522- **Corner rooms**: Premium rooms, typically suites, require special planning523- **Corridor length**: Maximum ~60m between elevator lobby and last room (guest experience)524- **Back-of-house**: Service elevator, linen chute, housekeeping station, trash room525526### 5.5 Parking Layout Optimization527528Parking is highly amenable to automation:529530- **Bay angle options**: 90 degrees (most dense), 60 degrees (easier maneuver), 45 degrees (one-way aisles), 0 degrees (parallel, least dense)531- **Stall dimensions**: 2.4m x 5.4m standard, 2.6m x 5.4m accessible532- **Aisle width**: 7.2m for 90-degree two-way, 5.5m for 60-degree one-way, 3.6m for parallel533- **Ramp placement**: Typically at perimeter; 12% max slope, 6% transition at top/bottom; 3.6m clear width per lane534- **Optimization objective**: Maximize stall count within site boundary535- **Algorithm**: Grid search over bay angle and aisle direction; evaluate count for each configuration536- **Structural grid**: 5.0m x 5.0m bays typical for parking; 8.1m x 5.0m for column-free spans537- **Accessible stalls**: 1 per 25 stalls minimum; van-accessible 1 per 6 accessible538539### 5.6 Classroom/School Layout540541School layout automation:542543- **Classroom clusters**: Groups of 4-6 classrooms sharing a breakout space544- **Adjacency**: Classrooms near related labs; art/music with acoustic separation545- **Outdoor access**: Ground-floor classrooms with direct outdoor access (primary school)546- **Acoustic separation**: Music rooms and gymnasia separated from quiet classrooms (STC 55+ walls)547- **Supervision lines**: Staff offices with sightlines to corridors and play areas548- **Safe access**: Single controlled entry point; perimeter security549- **Hall/gymnasium**: Central location accessible from all classroom wings550551---552553## 6. Drawing Automation554555### 6.1 Automated Floor Plan Generation from Spatial Data556557Given a spatial model (rooms with geometry), automated floor plan production:5585591. **Wall line generation**: Extract room boundaries, merge shared walls, assign wall types (exterior, interior, fire-rated)5602. **Door and window placement**: From openings in spatial model; apply standard sizes5613. **Fixture placement**: Bathroom fixtures, kitchen counters by room type templates5624. **Hatch/fill patterns**: Apply by material (concrete, tile, carpet) or by room type5635. **Line weight assignment**: By element type (heavy for cut walls, medium for furniture, light for ceiling grid)5646. **Annotation layer**: Room names, numbers, areas, door/window tags565566### 6.2 Section and Elevation Generation567568Automated sections and elevations:569570- **Section cut placement**: At key locations (through stairs, through atrium, through typical bay)571- **Depth limiting**: Clip section depth to show relevant information only572- **Material hatching**: Auto-apply section hatches by material573- **Annotation**: Floor-to-floor heights, slab thicknesses, structural member sizes574- **Elevation generation**: Project facade elements; apply material annotations; dimension window/door openings575576### 6.3 Detail Library Management and Auto-Placement577578- **Standard detail library**: Organized by CSI division (02-Sitework, 03-Concrete, 04-Masonry, etc.)579- **Detail keying**: Each detail has a unique key (type + condition + material)580- **Auto-placement**: System identifies conditions in the model (e.g., wall-to-slab junction) and places the appropriate standard detail581- **Detail adaptation**: Parametric details adjust dimensions to match model conditions582- **Version control**: Detail library versioned; updates propagate to all projects583584### 6.4 Annotation Automation585586- **Dimension strings**: Auto-dimension structural grids, wall-to-wall, opening positions587- **Room tags**: Auto-place with room name, number, area, finish floor elevation588- **Door/window tags**: Auto-tag with mark number, type, size589- **Keynoting**: Auto-keynote materials by element type; generate keynote legend590- **Leader and callout placement**: Avoid overlaps using collision detection; route leaders to clear space591- **Coordination**: Ensure annotation does not overlap with drawing content592593### 6.5 Sheet Layout Optimization594595- **View-to-sheet assignment**: Assign views to sheets based on drawing set organization (plans on A-series, sections on A-series, details on A-series sub-sheets)596- **View placement**: Optimize view positions on sheets to minimize white space597- **Title block**: Auto-populate project info, sheet number, revision history598- **Sheet numbering**: Follow standard conventions (A1.01, A2.01, S1.01, etc.)599- **Cross-referencing**: Auto-update section markers, detail callouts, drawing references600601### 6.6 Export Automation602603- **Batch PDF export**: Export all sheets to PDF with naming convention604- **DWG export**: Export to DWG with layer mapping table (Revit layers → CAD layers)605- **Transmittal generation**: Auto-generate drawing list, revision log, transmittal cover sheet606- **Naming convention**: Project#-Discipline-SheetType-Number-Revision (e.g., 2024001-A-FP-101-R03.pdf)607- **Quality checks**: Verify all views are placed, all tags are filled, no empty sheets608609### 6.7 Revit API for Drawing Automation610611Key Revit API classes for drawing automation (C# / pyRevit / RevitPythonShell):612613```python614# pyRevit example: Create sheets from Excel schedule615from Autodesk.Revit.DB import (616 FilteredElementCollector, ViewSheet,617 ViewFamilyType, Viewport618)619620doc = __revit__.ActiveUIDocument.Document621622# Get title block family type623title_blocks = FilteredElementCollector(doc) \624 .OfClass(FamilySymbol) \625 .OfCategory(BuiltInCategory.OST_TitleBlocks) \626 .ToElements()627628# Create new sheet629with Transaction(doc, "Create Sheet") as t:630 t.Start()631 new_sheet = ViewSheet.Create(doc, title_blocks[0].Id)632 new_sheet.SheetNumber = "A1.01"633 new_sheet.Name = "FLOOR PLAN - LEVEL 1"634635 # Place view on sheet636 view = get_view_by_name("Level 1 Floor Plan")637 viewport = Viewport.Create(doc, new_sheet.Id, view.Id, XYZ(0.4, 0.3, 0))638 t.Commit()639```640641### 6.8 Dynamo for View/Sheet Management642643Dynamo workflows for drawing automation:644- **Sheets.CreateByNumber**: Create sheets from list of numbers and names645- **Views.SetCropBox**: Auto-set crop regions based on room/level boundaries646- **Viewport.SetLocation**: Position viewports on sheets by coordinates647- **Element.SetParameterByName**: Batch-update parameters (scale, detail level, view template)648- **Data.ImportExcel**: Read sheet lists, room schedules, or parameter data from Excel649650---651652## 7. Code Compliance Checking653654### 7.1 Building Code Automation: Egress655656Automated egress checking is the most mature area of code compliance:657658**Occupant load calculation**:659```660Occupant_Load = Floor_Area / Load_Factor661662Load factors (IBC Table 1004.5):663- Assembly (chairs) = 0.65 m2/person664- Business = 9.3 m2/person665- Residential = 18.6 m2/person666- Educational = 1.9 m2/person667- Mercantile (ground floor) = 2.8 m2/person668```669670**Exit requirements**:671- 1-500 occupants: minimum 2 exits672- 501-1000: minimum 3 exits673- 1001+: minimum 4 exits674675**Exit width**:676```677Total_exit_width = Occupant_load * width_factor678 Stairways: 7.6 mm/person (sprinklered), 5.1 mm/person (unsprinklered) [IBC]679 Other egress: 5.0 mm/person (sprinklered), 3.8 mm/person (unsprinklered) [IBC]680Minimum single exit width: 810 mm (door), 1120 mm (corridor)681```682683**Travel distance** (IBC Table 1017.2):684- Business, sprinklered: 90m (300 ft)685- Residential, sprinklered: 75m (250 ft)686- Assembly, sprinklered: 75m (250 ft)687- High hazard: 23m (75 ft)688689**Common path of egress travel**: Maximum distance before two separate paths to exits are available. Typically 23m (75 ft).690691### 7.2 Fire Safety Automation692693- **Compartmentation**: Maximum compartment area by construction type (IBC Table 506.2). Auto-check that fire walls divide building into compliant compartments.694- **Fire resistance rating**: By construction type and element (IBC Table 601). Auto-assign to wall, floor, and roof assemblies.695- **Sprinkler coverage**: Maximum coverage area per sprinkler head (standard 12.1 m2, light hazard). Auto-generate sprinkler layout.696- **Fire separation distance**: Distance from building face to property line or adjacent building. Determines allowable opening percentage.697- **Smoke control**: Atrium smoke management, stair pressurization requirements.698699### 7.3 Accessibility Automation700701Key accessibility rules for automated checking:702703- **Door clear width**: Minimum 815mm clear (ADA), 900mm (EN); auto-check all doors704- **Ramp grades**: Maximum 1:12 (8.3%); preferred 1:20 (5%); maximum rise 760mm per run; landings at top, bottom, and every 9m705- **Turning circles**: 1500mm diameter (ADA 1525mm) at all turns, at ends of corridors, in accessible rooms706- **Reach ranges**: Forward reach 380-1220mm; side reach 230-1370mm (ADA)707- **Accessible route**: Continuous accessible path from site entrance to all building functions; auto-trace and verify708- **Elevator requirements**: Buildings 3+ stories or 3000+ sq ft per floor require elevator709- **Accessible fixtures**: Toilet centerline 450-460mm from side wall; grab bars at 840-920mm; lavatory knee clearance 685mm710711### 7.4 Zoning Compliance712713Automated zoning checks:714715- **Setback verification**: Measure from building face to property line; compare to required front, side, rear setbacks716- **Height limit**: Building height (grade to highest point) vs. zoning maximum; also story count limits717- **FAR calculation**: Floor Area Ratio = Gross Floor Area / Lot Area; compare to zoning maximum718- **Lot coverage**: Building footprint area / Lot area; compare to maximum719- **Parking requirements**: Required spaces by use type and area/unit count; compare to provided720- **Open space**: Required open space calculation; verify provided open space meets minimum721722### 7.5 Daylight Compliance723724- **Right to light**: Check that new construction does not reduce daylight to neighboring buildings below acceptable levels (BRE 209 method: VSC, NSL)725- **Daylight factor**: Minimum 2% average daylight factor for habitable rooms (UK standard); 1% minimum at any point726- **Window-to-floor ratio**: Minimum glazing area as percentage of floor area (varies by code; often 10-12.5%)727- **Automated checking**: From model geometry, calculate sky view factor at window; compare to threshold728729### 7.6 Automated Compliance Report Generation730731Generate structured compliance reports:732733```734BUILDING CODE COMPLIANCE REPORT735Project: [Auto-fill from model]736Code: IBC 2021 / Local amendments737Date: [Auto-generate]7387391. BUILDING CLASSIFICATION740 Occupancy: B (Business)741 Construction Type: IIA742 Height: 23.5m (< 55m allowed) ✓743 Stories: 6 (< 12 allowed) ✓744 Area per floor: 1,850 m2 (< 3,700 m2 allowed) ✓7457462. EGRESS747 Floor 1: Occupant load 199, Required exits 2, Provided 3 ✓748 Floor 2: Occupant load 199, Required exits 2, Provided 2 ✓749 ...750 Max travel distance: 42.3m (< 90m) ✓751 Common path: 18.7m (< 23m) ✓7527533. ACCESSIBILITY754 Accessible route: Continuous ✓755 Door clearances: All doors ≥ 815mm ✓756 Elevator provided: Yes ✓757 Accessible toilet: 1 per floor ✓758 ...759760RESULT: 47/47 checks PASS, 0 FAIL, 3 ADVISORY761```762763---764765## 8. Computational Workflow Design766767### 8.1 Workflow Orchestration Patterns768769**Sequential**: Step A → Step B → Step C. Each step requires output of previous step.770Example: Site analysis → massing generation → energy simulation → report.771772**Parallel**: Steps A, B, C run simultaneously; results merged at sync point.773Example: Structural analysis, energy analysis, daylight analysis run in parallel; results combined in dashboard.774775**Conditional branching**: IF condition THEN path A ELSE path B.776Example: IF building height > 23m THEN high-rise structural system ELSE conventional framing.777778**Iterative loop**: Repeat steps until convergence or max iterations.779Example: Adjust facade WWR → run energy simulation → check EUI target → if not met, adjust again.780781**Fan-out/fan-in**: Generate N variants (fan-out) → evaluate all → select best (fan-in).782Example: Generate 100 floor plan options → score each → present top 10.783784### 8.2 Workflow Engines for AEC785786| Engine | Language | Strengths | AEC Use |787|--------|----------|-----------|---------|788| Grasshopper | Visual/C# | Visual, real-time preview, huge plugin ecosystem | Parametric geometry, environmental analysis, optimization |789| Dynamo | Visual/Python | Revit integration, BIM automation | Drawing automation, model checking, data management |790| Speckle Automate | Python/C# | Cloud-native, event-driven, BIM data | Automated model checks, data transformations |791| n8n | Node.js | API integration, webhook triggers | Multi-tool orchestration, notification pipelines |792| Apache Airflow | Python | DAG-based, scalable, monitoring | Large-scale batch processing, simulation farms |793| Prefect | Python | Modern Airflow alternative, easy debugging | ML pipeline orchestration |794| Custom Python | Python | Full control, any library | Complex multi-step automation |795796### 8.3 Error Handling in Automated Workflows797798Robust automation requires comprehensive error handling:7998001. **Input validation**: Check all inputs before processing (file existence, data types, value ranges)8012. **Graceful degradation**: If optional step fails, continue with defaults8023. **Retry logic**: Transient failures (network, license server) retry with exponential backoff8034. **Fallback strategies**: If primary method fails, use alternative method8045. **Error logging**: Record all errors with context (timestamp, inputs, stack trace)8056. **User notification**: Alert user to failures requiring human intervention8067. **Checkpoint/restart**: Save intermediate results; resume from last checkpoint after failure807808### 8.4 Logging and Audit Trails809810Design automation must maintain audit trails for:811- Professional liability (documenting design decisions)812- Quality assurance (tracing errors to source)813- Regulatory compliance (demonstrating code compliance process)814- Knowledge management (understanding why decisions were made)815816Log levels: DEBUG (detailed computation), INFO (workflow steps), WARNING (non-critical issues), ERROR (failures), CRITICAL (system failures).817818### 8.5 Version Control for Workflows819820- Store Grasshopper definitions in Git (`.gh` files are binary; use `.ghx` XML format for diffing)821- Dynamo graphs: `.dyn` files are JSON; store in Git with meaningful commit messages822- Python scripts: Standard Git workflow with branching, code review823- Rule libraries: Version rule sets independently from code; track code edition and amendment dates824- Template libraries: Version parametric detail templates with semantic versioning825826---827828## 9. Design Automation Case Studies829830### 9.1 Automated Facade Design831832**Pipeline**: Solar analysis → shading device sizing → panel generation → fabrication data8338341. **Solar analysis**: Run annual solar radiation simulation on facade surfaces (Ladybug/Honeybee or custom raytracing). Output: radiation map (kWh/m2/yr) per facade cell.8352. **Shading device sizing**: For each cell, calculate required shading depth based on radiation and orientation:836 ```837 shade_depth = window_height * tan(critical_sun_angle) * shading_factor838 critical_sun_angle = solar altitude at cooling design day peak839 ```8403. **Panel generation**: Generate facade panel geometry with sized shading devices. Apply panel types from a limited palette (e.g., 4-5 fin depths) for constructability.8414. **Structural check**: Verify fin depth/projection within structural capacity of facade framing.8425. **Fabrication data**: Export panel schedule with dimensions, material, finish. Generate CNC cutting files for custom panels. Output IFC model for coordination.843844**Result**: 3000 unique panels documented in 2 hours instead of 2 weeks.845846### 9.2 Automated Parking Garage847848**Pipeline**: Site boundary → ramp placement → bay layout → structural grid → count verification8498501. **Input**: Site boundary polygon, required stall count, entry/exit locations, floor-to-floor height8512. **Ramp placement**: Test ramp locations at site perimeter and interior; evaluate traffic flow for each8523. **Bay layout**: For each ramp configuration, run parking layout algorithm:853 - Try 90-degree bays along long axis, then short axis854 - Try 60-degree bays if count is not met855 - Evaluate: stall count, aisle efficiency, dead-end length8564. **Structural grid**: Overlay structural grid aligned with parking bays (typically 5.0 x 8.1m or 5.0 x 16.2m for long-span)8575. **Count verification**: Total stalls per level x number of levels; check against requirement8586. **Accessible stalls**: Place required accessible stalls near elevators8597. **Output**: Floor plans, sections, stall count schedule, structural grid drawing860861### 9.3 Automated Residential Tower862863**Pipeline**: Unit type library → floor plate stacking → core placement → code checking8648651. **Unit type library**: Pre-designed unit types with variants:866 - Studio (28-35 m2): 3 variants867 - 1-bed (45-60 m2): 4 variants868 - 2-bed (70-90 m2): 5 variants869870871…(truncated)