Project 04 / 06

Parametric Balcony Railing & Glazing System

One Revit family, authored from scratch, resolving 1 to 4 sides from type parameters

Revit 2023FacadeBalcony SystemsFamily Authoring
My contribution

Authored the family from scratch — parametric geometry, conditional formulas, IFC mapping — and wrote its user guide.

Overview

A single Revit balcony family, built from scratch, that resolves a complete balcony enclosure from 1 to 4 sides. Side count, junction angles, heights, post counts, baluster counts, panel counts and side lengths are all driven by type parameters. Nothing is remodelled per instance; nothing is a separate family per configuration.

Family configurations

Every frame above is the same family from the same camera at the same origin. Only the type parameters change.


1 · Parameter reference

The Family Types dialog, as authored — screenshots are used unaltered, straight from the Revit interface.

Family Types dialog — part 1
Family Types dialog — part 1
Family Types dialog — part 2
Family Types dialog — part 2

2 · The user guide

The family ships with an authored instruction guide — four pages walking a user through every parameter group with annotated screenshots and a dimensioned plan diagram. Content that ships with its own documentation is rarer than it should be, and it is the difference between a family others can use and one only its author can.

Guide cover — the family and its four segment options
Guide cover — the family and its four segment options
Parameters and their functions — segment options, constraints, materials
Parameters and their functions — segment options, constraints, materials

Page 2 carries the dimensioned plan diagram: Side 1Side 4 lengths with the 1st, 2nd and 3rd system angles annotated at each junction, plus the baluster inset parameters and the direction control for each side.

Dimensions, IFC parameters and data — baluster and railing types
Dimensions, IFC parameters and data — baluster and railing types

Page 3 documents which parameters a user may touch and which are derived — only Max. Width Railing Glazing and Min. Baluster Inset are manipulable under Dimensions — and records the IFC export mapping. It also sets out the integer switches: 1 = Sqr Baluster_2, 2 = Sqr Baluster_3 for baluster type, and 1 = 130, 2 = 160, 3 = 220 Hand Rail for railing type.

Height parameters, the Products switch and Corner Post Only
Height parameters, the Products switch and Corner Post Only

Page 4 is the clearest statement of what the family does: the Products parameter shown as three rendered outcomes — Only Glazing, Only Railing, Glazing + Railing — alongside the height diagram where Total Glazing Height = Total Height − Total Railing Height.

Values shown are the 4 Segmented type. Parameters are grouped by Revit into Constraints, Materials and Finishes, Dimensions, IFC Parameters, Data and Other. Greyed rows are formula-driven rather than typed, with the expression in the = column.


3 · How it functions

The family makes decisions, it does not just stretch

Three conditional formulas carry the behaviour:

Side n PC = if(Corner Post Only, 2, Side n Post Count) One boolean overrides post count across every side at once. Critically, it does not overwrite the per-side inputs — they sit dormant and return intact when the switch is turned off. A non-destructive override, so whoever places the family can experiment without losing their setup.

Side nL = if(Side n length > Max. Width Railing Glazing, Max. Width Railing Glazing, Side n length) A clamp, repeated for all four sides. Each side is tested against the maximum glazing width and capped at it. The family cannot emit a panel wider than the factory can make — the manufacturing constraint lives in the model rather than in someone's checking routine.

Total Glazing Height = Total Height − Total Railing Height Only two of the three heights are entered; the third resolves itself. Raise the railing and the glazing above it gives way by exactly the same amount, so the overall opening height never drifts.

A2 angle = [2nd system angle] / 2 The corner post bisects the turn, so both rail runs land square on it at any junction angle. Change the angle and the mitre follows.

Integer switches, not separate families

Three parameters swap whole component sets by integer value, which is why one family covers a product range rather than a single item:

ParameterValues
Products1 = Only Glazing · 2 = Only Railing · 3 = Glazing + Railing
Baluster type1 = Sqr Baluster_2 · 2 = Sqr Baluster_3
Railing Type1 = 130 Hand Rail · 2 = 160 Hand Rail · 3 = 220 Hand Rail

Products is the significant one: the same family delivers a glazing-only system, a railing-only system, or the combined assembly. Most content libraries would ship those as three families and let them drift apart.

What each frame demonstrates

#What is visibly differentParameter(s) driving it
1Full multi-side run, glazing above railing4 Segmented · Products = 3
2Same, wider spread, fewer end balustersSide n length · baluster inset
3Corner + single run, glazing retainedfewer segments · Products = 3
4Tapered balusters replacing squareBaluster type
5Reduced post countSide n Post Count / Corner Post Only
6Increased post/baluster countSide n Post Count
7Balusters and handrail only, no glazing aboveProducts = 2 (Only Railing)
8Glazing panels only, no postsProducts = 1 (Only Glazing)
9Single glazing panel1 Segmented · Products = 1

Outcome


← Tolworth Phase 1 — COBie Asset Data HandoverTOS Tools & DocTools — Revit Add-ins →