Wednesday, 15 February 2017

Tracking Which Area Scheme a Schedule Belongs to in Revit

Typical project browser names
Have you ever opened a Revit project and tried to understand the naming conventions (or lack thereof) for Area Schedules?  And then tried to figure out which Area Schedule belongs to which scheme?  Unless people leave the Area Scheme in the schedule title it is almost impossible - unless there is a trick that I don't know?

When you create a new Area Schedule, it puts the Area Scheme in brackets at the end of the schedule name.  Many people rename it and remove that suffix because it shows up on the sheet, or they just don't realise how important it is for identifying the Area Scheme it belongs to.

Area Schemes

Area Scheme names and descriptions are things that people are often very casual about - and it soon gets very messy.  In many cases, people just leave the default description.
Badly named Area Schemes
The first step in solving this issue is to train people to not only name the Area Schemes sensibly, but to give them a proper description so that others have at least some clue what they are for

Slightly improved Area Scheme naming and descriptions
 OK, so the example above is not a serious system, but you get the idea, I hope.

Area Schemes in Schedule (Workaround)

Since it is not always feasible to keep the area scheme in the name of the schedule, here is a workaround that might help you out:

  • Whenever a new Area Schedule is created, add a calculated parameter
  • Call it 'Area Scheme' 
  • Make it a text calculation
  • For the formula, put the Area Scheme name in quotes
  • In the schedule it will display the Scheme name in every row, even for elements in linked files
  • You can hide this column, but it remains there so you can check the scheme name later on
Of course this method is not foolproof as someone could rename the Area Scheme at any time - but it should work in the majority of case.

If anyone knows a better way, please tell me.

[Edit] - As Dmitry Chubrik has pointed out in the comments, here is a good technique for changing the Area Schedule titles: 

Renaming Area Schedule Titles

As it is strongly advisable to keep the Area Scheme name in brackets within the schedule name, there is a way to do that without it showing up in the schedule title that appears on the sheet.  If you want change the title, do not rename the schedule in the Project Browser;  also, do not just edit the text in the schedule title cell, as this will rename the schedule too.
Instead, you should click in the schedule title cell, then click on the "Clear Cell" icon that appears in the ribbon - this literally removes all text from the title cell.  You can then type in new text, which will not have the effect of renaming the schedule in the Project Browser.

Once the link has been broken between schedule title and schedule name, the title can be changed just by editing the text in the title cell.

Using this method you can keep the Area Scheme name in the Project Browser for multiple schedules of the same Area Scheme - and keep track of which is which.  It would be good practice to teach all Revit users to do this as a matter of course.

Thanks for the tip, Dmitry

Wednesday, 8 February 2017

Gare do Oriente - Nested Revit Repeaters - part 2

Following on from my previous post about modelling the roof of Santiago Calatrava's Gare do Oriente railway station roof, here is part 2:

Placing roof panels on the top of the supporting column

The process is described on a YouTube video, so I will only summarise steps below.
YouTube link here

1. Create an adaptive Roof Panel

  • Start a new Adaptive generic family
  • Place 3 points (anywhere)
  • Make them all adaptive
  • (Optional) If you want to raise the panel above the structure, host an additional point on each adaptive point;  move it up and associate its Offset to a parameter called Panel Offset
  • Join the three adaptive points (or offset points) with reference lines (making sure 3D snapping is on)
  • Select the reference lines
  • Create form; give the panel a thickness if desired
  • Associate the form's material to a parameter
  • Save the family with a name such as 'AC 3pt Roof Panel'.  I like to use a prefix code in the name to indicate it is adaptive (AC) and the number of placement points (3pt).

Place a Roof Panel

  • Load the roof panel family into the support rig family created in part 1
  • Place an adaptive roof panel component onto the rig:
  • First placement point, snap to the lowest hosted point on the vertical line of the rig
  • Second, snap to a point on the lower circle
  • Third, snap to a point on the upper circle, one point around from the lower circle snap (anticlockwise, depending on the point order in your panel)


  • Try selecting the panel and turn it into a 'repeater'
  • The panel will be repeated around every point (8 times) - not the result we desire !
  • Undo the repeater - we have to 'teach' Revit how the pattern should be repeated:
  • Place a second panel in the same relative location but two points along the circle - it is very important that you place the points in exactly the same order as the first panel, making sure that you snap to the points on the rig, not on the panel that you have already placed.
  • Select both panels and repeat them
  • This time it should place a panel in every quadrant
  • To complete the other half, place a panel in one of the gaps
  • Then place another in the next gap - to establish the repeat pattern spacing
  • Select them both and 'Repeat'
  • Now we should get the correct pattern of two alternating repeaters of four panels each

The roof panels on top of the support rig are now complete - and should look square in plan, with valleys from the perimeter sloping in to the centre.  Flex any of the parameters in the rig and the panels should all move with it.

The next step will be to create the bracing struts .  .  . TBA

If you are impatient for some clues, refer to an earlier post I did on Adaptive swept blends

Wednesday, 1 February 2017

Gare do Oriente - Nested Revit Repeaters - part 1

In 2013 I presented a paper titled "Fractal Fun with Revit Repeaters and Adaptive Components" at three RTC events in Auckland, Vancouver and at the inaugural European Revit conference in Delft, in the Netherlands.  Part of the presentation involved a live demonstration of how to construct a parametric Revit model of the roof of the Gare do Oriente railway station in Lisbon, designed by Santiago Calatrava.

Gare do Oriente by Santiago Calatrava

Since then I have had a number of people asking me how it was done - it was of course described in step-by-step detail in the RTC handouts.  Those are not so easily accessible now, so I am posting the content here, in stages.  Part 1 involves creating a rig for one of the structural supports of the roof.

I will not show a step-by-step guide here as the process is described in a video tutorial:
here is a youtube link

As a reminder, below is a list of the steps required in the process:

  • Start a new Adaptive Component
  • Place a point at the origin (X,Y,Z = 0)
  • Make it adaptive
  • Make its 'Show reference planes' property to 'Always' visible
  • Set the workplane as the horizontal reference plane of the adaptive point
  • Place another point on top of the adaptive point
  • Move it up in the Z direction
  • Associate its 'Offset' property to a parameter 'Height' (NB. it will only have an Offset property if it is correctly hosted on the horizontal reference plane of the adaptive point)
  • Draw a reference line from the top point down to the adaptive point, making sure 3D snapping is on (Options toolbar)
  • Place two more points, both hosted on the reference line
  • Make the upper line-hosted point always show reference planes
  • Change its Measurement Type to 'Chord Length' or 'Segment Length' (NB. because the host is a straight line, in this case Segment length is the same as chord length, which just means direct distance)
Hosted point Measurement Type
  • Associate its 'Chord length' to a parameter called 'Perimeter Drop'
  • Change the Measurement Type of the lower hosted point to 'Chord Length' or 'Segment Length'
  • Associate its 'Chord length' property to a parameter called 'Valley Drop'
  • Flex the parameters to test the rig thus far;  move the adaptive point to check everything else is hosted to it
Circles to host geometry
  • Set the workplane as the horizontal reference plane of the top point
  • Place a reference circle centred on the point
  • Make its temporary radius dimension into an actual dimension
  • Associate the radius dimension to a parameter called 'Radius outside'
  • Set the workplane as the reference plane of the upper hosted point
  • Place a reference circle centred on the point
  • Make its temporary radius dimension into an actual dimension
  • Associate the radius dimension to a parameter called 'Radius inside'
  • Create a formula for 'Radius outside' = Radius inside * 1.4142
Divide Path
  • Select the top circle
  • Click on the 'Divide Path' icon
  • Set the number of points to 8
  • Select the lower circle
  • Click on the 'Divide Path' icon
  • Set the number of points to 8
The basic rig is now complete, ready for adaptive components and repeaters to be hosted on it.  These will be covered in following tutorials.

Sunday, 29 January 2017

Project Information in Revit Schedules

Those of you who read my previous blog post on Using Totals in Schedule Formulas, may have noted from the comments at the end that there was a subtle, undocumented change to schedules in Revit 2017.  I picked this up in discussions with Andy Milburn - so I thought we should share it clearly:

Revit 2016 Schedules

When defining a schedule in Revit 2016, the choice of category is in a drop-down menu in the lower left of the dialog box.  Just below it is a checkbox for including elements in linked Revit files - this is unticked by default.

If you click on the category drop-down menu for 'Select available fields from' you may get other options depending on the defined category for the schedule.  Typically, you will not see 'Project Information' in the list (For Casework, Rooms and Spaces are available).

However, once you tick the 'Include elements in links' checkbox, 'Project Information' suddenly becomes available;  not surprisingly RVT Links also shows up

The omission of  'Project Information' is presumably a long-standing bug, which most likely caused many users to not realise that it was possible to add Project Information to any schedule.

Revit 2017 Schedules

In Revit 2017, the dialog box has been redesigned so that not only are many text-based icons replaced with picture icons, but the 'Select available fields from' Category drop-down menu has been moved to the top left of the dialog box.  This is entirely logical once you get used to the change.

In the process, they have also fixed the bug, so that 'Project Information' fields are always available regardless of whether the 'Include elements in links' checkbox is ticked.

Now it should be easier for people to add Project Information to any schedule, as it is much more obvious. 

Thanks to Andy Milburn and Anthony Constantinidis for alerting me to some of these subtleties.

Sunday, 22 January 2017

Using Totals in Formulas in Revit Schedules

This has been a frequently asked question on the various forums over the years:
"Is it possible to use a grand total from a schedule in a formula in Revit".  The first response is always No!  Then eventually someone will mention the arcane workaround but it is not always clearly explained so I have decided to show a simple example of what the problem is, and how the workaround might be applied.

I must confess that this is not my original idea - in fact I have found references to the workaround, as far back as 2006 on AUGI by Leonard Raiz (one of the Revit Founders).  More recently (2011), Martijn de Riet published a description of how to calculate a ratio between two area types - this includes the workaround but does a few extra tricks of calculating a ratio of two different sub-totals after first separating them from one grand total, so it is not that easy to understand just the 'totals in formulas' workaround.  Many thanks to Martijn, as I originally learnt the technique from his blog posting.

The Problem With Schedule Totals

Let us suppose that you want to schedule a series of floor areas for a multistorey building and then calculate the ratio between the total of those floor areas against the site area - in Australia we call that the 'Floor Space Ratio'.  There are actually two problems that Revit presents us with here:
  • Revit apparently does not allow you to insert a total of several values into a formula- it only performs the calculations on individual values in each row
  • You can't create a schedule that combines 'Areas' and 'Property Line Areas' because they are different categories - this is another topic so we'll use another quick workaround to deal with that here.
In this example I will use Mass Floor Areas, but they could easily be normal Areas

The Floor Space Ratio calculation is defined as:   'Gross Floor Area' divided by 'Site Area'
It is usually represented as the 'number : 1'   eg. 2.5 : 1

Step 1

  • The first step is to create a Mass Floor schedule, and add the Levels plus Floor Areas
  • The first problem we encounter is that you cannot combine a Mass Floor schedule with Site category schedules - so you cannot include the site area value that Revit automatically calculates from your property lines

Workaround 1

  • Create a shared parameter and apply it to the Project Information category
  • This will be a value that you have to type in to the project information page once - and update it if the site area changes, which is obviously a technique prone to user error.  If your site area is not yet settled, and is constantly changing, I would not recommend this method.
  • Once the value is in, you can add the shared parameter to your schedule just by changing the category from the drop-down list and choosing Project Information
  • The same value for Site Area will appear in each row, so make sure not to calculate totals for this parameter.

Step 2

  • Add a calculated parameter to the schedule, called 'Calc Ratio' (or some such) 
  • Make it a 'Number' type with this formula:
    Floor Area / Site Area
  • Note that each row has its own calculation of the ratio - none of which is correct.
  • If you make the parameter 'Calculate Totals', the Grand Total value of the Ratio will actually be correct - but it makes for a very confusing schedule
  • You could of course collapse the schedule down to one line (untick 'Itemise Every Instance'), and hide the totals - this would display the correct Ratio - but you may require the schedule to show individual floor areas
However, there is a way to get Revit to display all the rows of data and to perform calculations on the total value - it requires the following workaround:

Workaround 2

  • In the schedule, add a new calculated parameter called 'F Area Percentage'
  • This time, make it a percentage calculation - click on the 'Percentage' radio button
  • Then select 'Floor Area' as the parameter to calculate 'Of'
  • Leave it to calculate 'By' Grand Total
  • This will list each floor area as a percentage of the total
  • Create another new calculated parameter, called 'Total Floor Area'
  • leave it as a Formula calculation, with type 'Area'
  • Add the Formula:
    Floor Area / F Area Percentage
  • This will give you the correct overall floor area in each row 
  • Be sure not to calculate totals for this parameter.
  • Now change the Ratio formula to calculate using the Total Floor Area:
    Total Floor Area / Site Area
  • This will give the correct ratio in each row
  • Remove the Calculate Totals setting for this parameter as the total would be a crazy value

  • You can then hide the two intermediate calculations (Total Floor Area and F Area Percentage) to get a schedule showing the correct site area, floor area and ratio in every row

Tidy Up

  • To make the schedule read a little more cleanly, you could sort it by Site Area, with a Header, and then hide the Site Area parameter column - but it only shows the value of the Site Area, not its parameter title, which is not clear enough

  • Then add another Calculated Parameter at the beginning - a text type with a formula:
    "Site Area :"
  • Sort by that parameter before the Site Area, and hide that one too
  • It puts them on two different lines but at least it removes some repetitive information from the body of the schedule
  • You could try the same with the Floor Space Ratio but unfortunately Revit does not like to sort a schedule by such a formula  - it does not show in the Sort by or Filter list (a bug perhaps? or just a special feature?)
  • You could also put in a few extra text formulas (with blank headings), although they will repeat the same information

Workaround 3

If you can cope with two schedules, it is a lot easier: a simple one liner schedule for the Floor Space ratio calculation, plus a separate schedule list of all the floor areas.
  • You can either create two similar schedules as described above, but collapse one of them down to one line (untick 'Itemise every instance'), and remove the calculations from the full list.
  • Revit makes it simpler to do this operation on Mass Floor areas because you can just create a Mass schedule (as opposed to Mass Floors) that already has a property called 'Gross Floor Area', in which it automatically calculates the total of the Mass Floors - thus you can do a direct calculation on it

I hope this explains the technique clearly.  If you want something more complex, then refer to Martijn de Riet's blog posting on how to calculate a ratio between two area types

Thursday, 12 January 2017

Underline Revit Schedule Headings

I was recently asked if it is possible to just underline the Revit schedule column titles without having all the lines/boxes below.  At first I thought it was not possible, so I figured out a crazy workaround.  As I was checking the workflow for documenting it on this blog I discovered something I didn't know (or at least had forgotten but once knew), which made the solution quite easy.  I have always found that preparing conference presentations is a great way of learning a subject thoroughly - instead of thinking that you know it all.  It seems that writing a blog has the same benefit.

I decided to document the workaround here anyway because someone might learn something in the process, or be able to use it for some other purpose.  If you just want to know the best solution, skip to 'The Correct Workflow'

Underline Workaround Method

When you first place a schedule on a sheet, you get some pretty uninspiring looking graphics - all boxed in, with the heading text centre justified and the body text left justified.
Default schedule appearance
If you look at the schedule 'Appearance' properties, the default settings show Grid lines on, Outlines off.  Depending on your project template, you may have the same text type for all three aspects of the schedule text - in which case it is wise to create separate text types for title, header and body text, making sure they are named clearly.
Default schedule appearance settings
 You could try turning on the Outline and hiding the gridlines to see if it underlines the title/header.
Outline on, gridlines off
Unfortunately it does not underline either the title or headers - those settings are very crude, giving us very little control at all.  The end result is a box around the whole schedule.
Outline on, gridlines off
The next thing to try is to switch off the outline box, then underline the header text itself.  You could select the header text in the schedule view, and change its font properties
Selected text font properties
However, it is much better practise to use a specific text type for the header and edit the type properties for it - so you can change them all at once without having to select the text in the schedule cells.
Text type properties
The end result is that individual header text words are underlined, which looks awful - we are trying to get one single line under the whole lot.
Header text underlined
How about using the schedule formatting tools introduced in Revit 2014?
  • First edit the Schedule Header text type to remove the underline.
  • Then highlight all the header cells by dragging the cursor across them - this has to be done in Schedule edit mode, not in sheet view.

Select all the header text cells
  •  Click on the Borders icon on the ribbon.
  • This opens the Edit Borders dialog box
  • Select the linestyle you want the underline to be
  • Click on the border box to the lower left with cells underlined
  • Click OK
  • Assuming that you switched off the 'Gridlines' and 'Outline' checkboxes, you still won't see the borders on the header cells (or any borders at all).
  • Enable the 'Gridlines' checkbox, and you get all the gridlines back again (not just the header underline borders.
  • This was the point at which a gap in my knowledge caught me out, so I devised the crazy workaround.  I thought that you could not control the borders on individual cells in the body of the schedule because the Borders icon was greyed out as soon as you select one or more cells - more on that later.

Crazy Workaround

Don't follow these steps!
  • First I created a white coloured linestyle
  • Then set the linestyle for 'Gridlines' to be the white linestyle
  • For this to work it requires the 'Blank row before data' checkbox to be ticked
White line gridlines plus blank row before data
  • Hey presto - the gridlines are there, but you can't see them as they are white on a white screen (of course it won't work if you changed your background colour).
  • The header cells should be underlined because those cells had a black border

The Correct Workflow

This is how you should do it - so much simpler:
  • Set the gridlines linestyle back to something sensible like 'Thin Lines', making sure that 'Gridlines' is ticked
  • What I didn't realise earlier is that you can modify the border lines on all the cells by selecting the columns at the top of the schedule, by clicking on the letters at the top - just like Excel.  Duh!
  • Select all the columns by running the cursor along the row of letters
Select all columns
  •  Click on the Borders icon on the ribbon
  • Click on the 'None' icon
None borders on all cells
  •  Select the Title cell and set its cell borders to None
  • Select just the header cells
Select all the header text cells
  • Click on the Borders icon on the ribbon
  •  Select the linestyle you want the underline to be
  • Click on the border box to the lower left with cells underlined
Underline border
  • Make sure that 'Blank row before data' is ticked otherwise the Header cell underline borders will not show - this is the useful tip I discovered in my crazy workaround that also applies to this method
Grid in headers/footers/spacers
  • Also untick the 'Grid in headers/footers/spacers' checkbox otherwise you'll get vertical gridlines in the blank row (as above)
Appearance formatting
  • Select each column and change its horizontal alignment as you require
Align columns
  • Finally you should get the desired result
Underlined headers
  • If you want to have some fun you can shade alternate columns.  I don't believe there is a way to shade alternate rows, which is something people do in Excel occasionally.
Alternate columns shaded

The moral of this tale is that we now have two different ways of controlling the gridlines on Revit schedules - they do not work well together.  Basically you can opt not use the old controls unless you want very simple formatting that happens to match the old options (All gridlines or just an outline box).  If you want to use the new border tools then you need to make sure the old gridline checkboxes are set to the default settings (as shown above).