My third RTC event in 2015 was in Budapest. The topic was initiated by a project in which the façade curtain wall units were so complicated in geometry that there was no better way to describe than defining by coordinates (x, y, z) of the vertices (work points) of each curtain panel.

Revit families have a weakness that they don’t know their locations (coordinates) of placement in a project. In a project with very complex geometries, elements are located by work points and geometries are derived from work points. Here comes a challenge in modeling geometries by placing work points with x, y, z coordinates. Managing thousands of work points which drive the elements’ geometries is another mission impossible. This class will introduce ways of creating families which enable inputting coordinates of work points to place the family and to make the geometries. The family can also report the coordinates of every vertex in the geometry. Schedules are used as a data entry tool for work point coordinates as well as a report of coordinates of geometries’ vertices.

**Background**

This is a project with complex geometries. The building has a challenging form derived from lofting profiles at different levels. Each profile is defined by composite curves of pure conical sections. The form is then panelized by segment measurement.

**Original Design**

- Non-symmetrical panels
- Non coplanar frame
- Coplanar glazing
- Too many variations in panel types

To control the cost and to make high constructability of panels, there comes a geometry optimization process.

**Geometry Optimization**

- Simplified surface geometry.
- Reduces variations.
- Panels no longer defined by dividing lines from the pure geometry.
- 5 Working points to define each panel.

**A Revit Challenge: A Family Parametrized by Work Points**

- Panels not defined by points on a solid geometry.
- Panels defined by work points from the result of geometry optimization.
- Cannot use divide surface and curtain panel pattern based.

**Strategy and Workflow – Coordinates ► Geometry ► Schedule**

- Create family for panel with parameters for coordinates (5 working points, 3 coordinates for each point: x, y, z, 15 parameters altogether).
- Panels are placed one by one (it is not curtain wall panel) at same location.
- Create schedule for the panels in Revit.
- Revise the values of the coordinates parameters in the schedule with the work point coordinates from the result of optimization (can be done with Ideate BIMlink or other API or Dynamo).
- Location and geometry of each panel will be updated based on the new input values in the schedule.

**Work Points**

- a, b, c, d coplanar: plane of glazing
- bb, b, c, d non coplanar: frame

**Preparing Shared Parameters**

- For the coordinates of the work point to be schedulable, the parameters for the coordinates have to be shared parameters.
- Create Shared Parameters ax, ay, bbx, bby, bx, by, cx, cy, dx, dy, Module Height and Sill (all Length).

**Locating points by Coordinates**

**Method 1: Point Hosted by Points**

- Use Adaptive Component family template. Place a point at the center. Name the point o.
- Set the yz plane of o as work plane. Place a point on point o. Offset the point, associate the offset with Shared Parameter ax (instance). Name the point ax.
- Set the zx plane of ax as work plane. Place a point on point ax. Offset the point, associate the offset with Shared Parameter ay (instance). Name the point axy.
- Set the yz plane of o as work plane. Place a point on point o. Offset the point, associate the offset with Shared Parameter bx (instance). Name the point bx.
- Set the zx plane of bx as work plane. Place a point on point bx. Offset the point, associate the offset with Shared Parameter by (instance). Name the point bxy.
- Set the yz plane of o as work plane. Place a point on point o. Offset the point, associate the offset with Shared Parameter cx (instance). Name the point cx.
- Set the zx plane of cx as work plane. Place a point on point cx. Offset the point, associate the offset with Shared Parameter cy (instance). Name the point cxy.
- Set the yz plane of o as work plane. Place a point on point o. Offset the point, associate the offset with Shared Parameter dx (instance). Name the point dx.
- Set the zx plane of dx as work plane. Place a point on point dx. Offset the point, associate the offset with Shared Parameter dy (instance). Name the point dxy.
- Set the yz plane of o as work plane. Place a point on point o. Offset the point, associate the offset with Shared Parameter bbx (instance). Name the point bbx.
- Set the zx plane of bbx as work plane. Place a point on point bbx. Offset the point, associate the offset with Shared Parameter bby (instance). Name the point bbxy.
- Set the xy plane of axy as work plane. Place a point on point axy. Offset the point, associate the offset with parameter Head (Type). Name the point a.
- Set the xy plane of bxy as work plane. Place a point on point bxy. Offset the point, associate the offset with parameter Head (Type). Name the point b.
- Set the xy plane of bbxy as work plane. Place a point on point bbxy. Offset the point, associate the offset with parameter Head (Type). Name the point bb.
- Create Shared Parameter “Module Height”.
- Set a formula for parameter “Head” = Sill + Module Height
- Set the xy plane of cxy as work plane. Place a point on point cxy. Offset the point, associate the offset with Shared Parameter Sill (Type). Name the point c.
- Set the xy plane of dxy as work plane. Place a point on point dxy. Offset the point, associate the offset with Shared Parameter Sill (Type). Name the point d.
- Make points a, b, c, d, bb visible.

**Locating points by Coordinates**

**Method 2: Point Constrained by Plane**

- Place a point at the center. Name the point o.
- Change the Point to Shape Handle Point, Constrained by XY Plane.
- Place another point. Name the point X.
- Change the Point to Shape Handle Point, Constrained by XY Plane.
- Associate the Hosted U Parameter with U.
- Set U = 1, Set Hosted V Parameter = 0
- Dimension from point o to point X, turn the dimension to an instance parameter X (reporting).
- Create a new instance parameter R (length).
- Set a formula for R = X/U
- Place a point. Name the point axy.
- Change the Point to Shape Handle Point, Constrained by XY Plane.
- Associate the Hosted U Parameter with au.
- Associate the Hosted V Parameter with av.
- Set a formula for au = ax/R
- Set a formula for av = ay/R
- Change point axy back to Reference Point.
- Similarly, create point bxy with parameters bu, bv and formulas bu = bx/R, bv = by/R
- Create points cxy, dxy, bbxy.
- As in Method 1, create point a by placing point on xy plane of point axy with offset associated with parameter Head.

As in Method 1, create points b, c, d and bb similarly.

**Creating Basic Geometries**

- Join points a, b, c, d with reference lines (3D snapping).
- Join points b, bb and d with reference lines (3D snapping).
- Select reference lines ab, bc, cd and ca, create a surface.
- Place a point at midpoint of reference line bbb.
- Set the plane of the point as work plane.
- Draw a reference circle on the point.
- Select reference lines bbb, bc, cd and dbb.
- Select reference lines bbb, bc, cd, dbb and the circle, create a sweep.
- Set visibility of the sweep to be visible only in Fine Detail Level.
- Temporarily hide the sweep, join points bb, b, c and d with model lines (3D snapping).
- Change model category to Curtain Panel.

**Placing Family Instances in Project**

- Load the panel family into a project.
- On Level one, turn on the visibility of Project Base Point which is by default at the origin (0, 0, 0) of the project.
- Place an instance of the panel family at the Project Base Point.

**Relocating each Instance and Reshaping geometry**

- Select the panel familiy, edit Type, set the Sill parameter and the Module Height parameter with the data from the Data file.
- On the properties box, replace the values of ax, ay, bx, by, cx, cy, dx, dy, bbx and bby with data from the Data file.
- Duplicate the instance several times by copy and paste “aligned to same place”.
- Create a panel schedule with all the 12 coordinates parameters.
- Create a data link with Ideate BIMLink, export data to Excel.
- Revise the values of the parameters in the Excel file by copy and paste the data from the Data file.
- Import the parameters’ values from the revised Excel file back to Revit using Ideate BIMLink.