Friday, 11 July 2014

Selecting Individual Components Within a Revit Repeater

Repeaters in Revit are made up of an array of adaptive components that have been placed on one or more nodes of divided path/surfaces, and then arrayed using the Repeat command.  This can only be done within the Conceptual Massing Environment (CME) or the "Point World" as Andy Milburn refers to it - this means that it could be done in an external mass or adaptive family, or within an In-Place Mass family in a project. 

Once a repeater is created, Revit treats it as a single object, but you can also select individual components within the repeater. When you try to select a component, Revit will always go for the whole repeater by preference, and it can be tricky to actually select a number of individual components.  Here are some notes on the curious inconsistencies between different situations, and some hints on how to make the process easier.

Select Components Within a Repeater

  • You can hover the cursor over a component and press the TAB key to highlight it, before selecting it.  This is a standard Revit technique but it is not as easy as usual, particularly if you try to select more than one component - after picking the first component, when you press the Tab key it often highlights an element within the adaptive component or even a different component to the one that the cursor is on.
  • You cannot select components inside a repeater by dragging the cursor around them.
  • There is no command for selecting all the components in one row or column on the repeater.  It would be really useful if there was a method somewhat like selecting mullions on a curtain wall.
  • You can use the "Select All Instances" command by right-clicking on a selected component within a repeater - but it has some limitations (see next section):

Select All Instances

Different rules again, that you need to learn:
  • In the external mass family editor, you can right-click on a selected component within a repeater to pick all instances in the view or family.  This means that you could select and change multiple instances - particularly useful for resetting all back to the default family type.
  • In a project, In-Place mass (edit mode) - If you select one of components in the repeater, then right-click, both Select All Instances options are greyed out - this is seriously restrictive as this would be the most useful situation to be able to change multiple instances, particularly by view.  
  • In-Place mass (edit mode) - If you select the family type from the Project Browser, then Select All Instances you get different results, depending on what you try to do:
    • If you select a type that has been used in the active mass family, then Select All Instances Visible in View will be available - however, it just selects the whole repeater as a single entity (not the components within it) 
    • If you select a type that has not been used in the active mass family, then Select All Instances Visible in View will not be available
    • Select All Instances in Entire Project will be available whichever type you select - and it does select individual components. However, it will also select instances outside of the active mass in the project - seriously restricting what you can do
    • None of the element properties are available - this is because it selects the repeater as well as the individual components.
    • Try reducing the selection by excluding the repeater - it then displays some of the system parameters (comments and Mark), but the type selector is greyed out, even if this type has not been used elsewhere in the project. 
  • In a project, but outside the in-place mass editing environment, you can Select All Instances in Entire Project only. This means it will select components inside repeaters within in-place masses for which you cannot change the selected components to another type (because they are inside a mass) - unless you edit the mass.  It is a "Catch 22" situation.

So the end result of all this is that in a project (in-place mass) you have to select them all individually.  This can be a slow and tedious process, but there is one way to improve it slightly:

Hot Tip

The best way to quickly pick a number of components is to select the whole repeater, then isolate it in the view - then it is much easier to individually select each component in the repeater (usually no need to tab-select)
Once you have selected multiple instances of components within a repeater, you may want to change some of their properties - refer to Repeater Instance Properties

Friday, 4 July 2014

Revit Repeater Instance Parameters

I mentioned in my last post that I learnt two new Revit Repeater tricks at RTC Australasia 2014 in Melbourne - both from Helen Gorina from the NY office of Perkins+Will, in her Lab "Applying Math and Logic to Facade Design".

The second trick was to do with how to access instance parameters of components in a repeater - I had already worked out one method for doing this, but Helen showed us a second way.  This concept has led me to analyse what exactly is happening with components in repeaters.

What happens to the original component when a Repeater is created?

When you select an adaptive component (or several) and turn it into a repeater, the original component disappears and new copies of it are created in a pattern.  You can select the whole repeater as one element, or you can tab-select individual components within a repeater.   When you select one of the components in a repeater, you will notice that it does not display all its normal instance parameters in the properties palette (or they may be grayed out) - so you cannot change its Mark, Comment or user defined parameters.  More of that later.

In the mass family editor (in-place or external), if you check the element IDs of two adjacent components within a repeater you will notice that they are not consecutive numbers - there will be a gap in the numbers.   eg.  ID# 85340 and ID# 85342.

So what has happened to the missing ID number between ( ID# 85341)?  It seems that Revit still has a copy of the component hidden away behind the repeater component.  You can't normally get at that hidden component.

Interestingly, if your repeater adaptive components are "Shared" and your mass family is In-Place, you can tab-select the components when not in mass edit mode - Revit will give you a different set of IDs, and these will be consecutive.  So that means that each component within a repeater has 3 element IDs - The mystery deepens.

Instance Parameters

There are also some interesting variations as to when you can or cannot see the instance parameters of selected components within a repeater:
  • If you select a component in the external mass family editor, it will normally display the type selector as "Default Component", and its instance system parameters (Mark & Comments) will be hidden (except for "Flip").
  • If you edit an in-place mass family in a project, and select one of the components in a repeater, it displays nothing in the Type Selector, and it displays user defined instance parameters, but not the system parameters (Mark & Comments).
  • If you are not in mass edit mode and you select a (shared) component within a repeater within an in-place mass family, you get quite different results again:  You can see the system instance parameters - Mark & Comments;  you can also change those values (but not the user defined instance parameters).  

And that was my trick for accessing the instance parameters of individual components within a repeater!

Helen's trick lets you get at the instance parameters within the external mass family editor:
  • Select one of the repeater components - it will list as "Default Component"
  • Change its type from the default component to the actual family/type that it was created from (show images).  Hey presto, - you can now access its parameters.  
  • This only works for external families.  For an in-place mass family it won't let you change it, sadly.

So, there are 3 different rules depending on the situation.  More complex Revit rules to learn!

To make use of this trick, you probably want to change all of the components within a single repeater.  But it is tricky to select them all in one go.  More of that in another post on this subject. . . . . Refer to Selecting Individual Components in a Repeater

Monday, 9 June 2014

Zero Length Lines in Revit Are Possible

I always learn something new about Revit at RTC - and RTC Australasia 2014 in Melbourne was no exception.
This time I learnt two new Revit Repeater tricks - both from Helen Gorina from the NY office of Perkins+Will, in her Lab "Applying Math and Logic to Facade Design".  These tricks have led me to understand more about adaptive components and repeaters.

Schedule Panels on a Facade

The first trick I picked up during a description of how to automatically schedule facade panel column and row numbers.  This was done using Repeaters on a divided surface - using adaptive component "Jigs" as a series of locators placed on the divided surface nodes.  Each of these jigs had several adaptive points linked with model lines and reporting parameters used to track the X and Y locations of the components on the grid.

Last year I posted a similar technique for scheduling column/row numbers that involved a lot of trigonometry - this was done with a single repeater across a rectangular panel.  Helen's technique is a lot simpler and more elegant, and involves far less maths - it requires creating separate repeaters for each row (so it is perhaps less flexible if the grid changes).  In order to direct Revit to create a repeater in one direction along a row of divided surface nodes, you need to place two adaptive components in a series - as I have described previously (see diagram below).


When you have multiple point adaptive components, Revit will only place repeater elements  where it has a suitable series of adjacent nodes.  This often means that you get missing edge conditions on the repeaters.
Sample 2 point repeaters from my previous blog posts
If you want the series of components to be of different lengths, as this technique requires, you need to place the two initial adaptive components appropriately to indicate the relative change required
For the scheduling technique, you actually need the first adaptive component in the series to have a zero X value so that it knows it is in the first column.  So, what Helen did is to place the reporting "Jig" component with two of its adaptive points (measuring X distance) placed on the same node;  the second adaptive component was placed on adjacent nodes, so that its X distance measured one column width.  I am not describing Helen's technique in full here - you'd need to attend RTC for that.  What I am interested in here, is that in learning this new trick of coincident adaptive points to generate a zero length reporting parameter, it became apparent that Revit is doing something I thought impossible . . . . .

Zero Length Lines

If an adaptive component has multiple adaptive points, and those points are joined by model lines or reference lines, you would think that when you use the adaptive component, Revit would not let you place the adaptive points in the same location because that would mean zero length lines.   You would think wrong!  Revit allows this without a squeak of complaint.
Revit most assuredly does not allow zero length lines in traditional families - they break when you try to place them such that line length gets too small.

If you have solid forms attached to the lines or adaptive components, then Revit will not allow zero length lines where that would mean zero length edges - it breaks as you would expect.

This is an interesting Revit inconsistency that you can use to your advantage when you want to be able to report zero lengths (and base calculations on them).

I'll talk about the second trick I learnt in the next blog post on Repeater Instance Parameters

Saturday, 10 May 2014

Pump Up The Volume in Revit - RTC 2014

I will be presenting at two Revit Technology Conferences this year:

RTC Aus - Melbourne, Australia (May 2014) - Session 13 at 10.45am Sat 31st May.
RTC NA - Chicago, USA (June 2014) - Session 10 - 2.30pm Fri 21st June

The topic titled "Pump Up The Volume - With or Without Dynamo" will be on Computational Design: creating external controls in Revit to adjust building massing or other Revit families.  I will demonstrate two methods, and compare the relative merits:
  • Pure 100% Revit without the use of API, macros or Dynamo
  • Dynamo visual scripting to do create and control Revit models
Here is a Youtube promo for Pump Up The Volume

I hope to see you at RTC, where you will be able to learn how to apply these techniques and use them on your own projects.

Wednesday, 30 April 2014

Reasons to be Cheerful - about Revit Adaptive Components

Why did I publish a list of Reasons not to use adaptive components in Revit when I have previously published so much good stuff about them?  Well, it is because they have so much potential to allow us to do wonderful things in Revit - but it is largely unrealised potential for the average Revit user.  We need Autodesk to remove those "reasons" so that we can start to use adaptive components in everyday life, instead of just for specialist situations.

However, Adaptive Components can be used to do amazing work, so I need to redress the balance of the previous negative post with this list of positive reasons for their use.

Adaptive components started out life as a special tool for filling in edge pieces on mass surface patterns.  From there they have developed into a totally different beast.

  • Multiple placement points can be used to control orientation in 3 dimensions (unlike line-based families that can only rotate in 2 dimensions).
3 point adaptive tubes
  • Multiple placement points can be used to control the scale of many and varied parts of the family - just by the spacing of the adaptive placement points
3 point adaptive tube placed at varied angles and lengths
  • Adaptive points can snap to elements in 3d space, and remain linked to the vertices of those elements - which become hosts - perfect for tensile structures (just remember never to delete the hosts):

4 point adaptive component tensile canopy

  • Points!  These are wonderfully powerful elements in the mass/adaptive family environment - I miss them back in the traditional family editor.  They can be used to host and control other elements, once you understand them.
  • In v2014, three points can host an arc by start, end,radius - this cuts out lots of trigonometry and formulas

  • Points can also be hosted on lines, arcs, etc - they then take on different, very useful properties 
Points hosted on lines and intersections
  • Points can be used to control rotation within families.  Wow, no more reference lines and dodgy angle parameters!  thanks to Alfredo Medina
  • Divide Line & Surface commands are available in the mass/adaptive family environment - they cut out a lot of the work we previously had to do with formulas.
  • Repeaters - the adaptive version of the Array command, but oh so much more powerful than traditional arrays.
Calatrava - Station roof support using nested repeaters, hosted on divided paths on geometry hosted on points!

Now, if only we could use all this stuff in the traditional Revit family editor . . . . . or else have all the traditional functionality in adaptive components . . . .  then Revit would really rock!

Friday, 18 April 2014

A Dozen Reasons Not to Use Adaptive Components in Revit

I love the idea of Adaptive Components in Revit - they have so much potential to allow us to break free of some of the traditional constraints of Revit.  But it is early days in their development - they have many of their own limitations.

However wonderful adaptive components are in Revit, they do have some downsides.  I have heard suggestions that we should all use adaptive components all the time instead of traditional Revit families.  Here are some reasons why you might not want to do that - and perhaps Autodesk can treat this as a checklist of things to address so that we can use them in more situations:

  1. Adaptive components do not have any 2D or 2½D capability - there is no Annotation tab in the adaptive family editor.
    - No text within Adaptive Components
    - No symbols
    - No symbolic lines
    - No detail components
    - No filled or masking regions within Adaptive Components
  2. You cannot add model text within Adaptive Components (except by nesting a traditional family with model text in it).
  3. Adaptive family file sizes can get extremely large, especially when you start nesting them or use repeaters. They don't seem to have the same capabilities of minimising file sizes that traditional families have when multiple instances of nesting occur.
  4. Visibility Settings are not obviously available in the UI within Adaptive Components (for controlling display levels and 2d view visibility) - [Edit. need to select an object and right-click to get to visibility]
  5. Controls are not available within Adaptive Components (for controlling flipping component orientation) - this is somewhat understandable as it could get complicated with multi-point adaptives;  nevertheless it is a limitation.
  6. If any one adaptive point is snapped to (hosted onto) an element that is subsequently deleted, the entire adaptive component also gets deleted, no questions asked.  Scary huh?  [Edit. I even found one situation where just duplicating the type of the host sent the adaptive component off into oblivion ! ]  This means that adaptive components behave more like true hosted families (doors, windows) that are completely dependant on hosts;  it would be much better if they behaved like face-based families that exist quite happily after their host face is deleted (refer to Chris Price's blog on Face Based Families).
  7. Placement of adaptive component points in the project do not lock to orthogonal - they do not use the Revit smart snapping capability, except for snapping to vertices and edges.
  8. Placement of "Site" category adaptive component points in the project do not snap/lock onto toposurfaces, unlike traditional site families.
  9. You can copy levels in adaptive families but they do not behave like two-level families (columns, generic) that have the levels baked into their templates, which then automatically lock to assigned levels in the project.
  10. Adaptive components cannot have a host element baked into the template – so it is not possible to include a void element in the adaptive component that will automatically cut the host face it is placed onto.  “Cut with voids when loaded” capability is very limited in categories it can be applied to – it cannot cut curtain panels, curtain systems, mass categories etc.
  11. As adaptive family templates do not contain any host elements, it limits the possibilities for using reporting parameters within formulas to adaptive points only - no wall thickness dependant frames etc.
  12. If you tag an adaptive component that has more than one adaptive point, the tag moves if any of the adaptive points move in the project - meaning that annotation on drawings will become even more unstable. 
  13. [Edit. Make this a "Baker's Dozen" as I forgot a really important one:  The list of categories available in adaptive components is seriously limited.  Most structural categories are missing!]
Adaptive Categories

This is not a list of reasons to never use adaptive components.  It is more a checklist to warn you of some limitations , so that you can plan when best to use them.  The list is not comprehensive - for example, it does not address issues of hosting, and analysis that might be vital for MEP or structural families. This list does not address the operational differences or difficulties within the adaptive family environment - for more detail on this, refer to Rival Revit Environments.

Don't plan to replace your traditional Revit library with an adaptive version just yet.
But there are Reasons to be cheerful about adaptive components.

Friday, 11 April 2014

New in Revit 2015 - Schedules & Parameters

We still don't have a definitive list of what is new in Revit 2015, but here are a few more details about some of the new features - with the proviso that I don't have my hands on the final release version so I can't be a 100% sure I have the details right.  But you will be able to test the software as soon as you have it, and you'll know what to look for.
[Edit:  Autodesk have now published their v2015 help online, including the Whats New in 2015 section;  be sure to check out the Upgrade Information section]


Parameter Reorder

Up until Revit 2015, the sort order of Revit parameters in the family editor and in the project was a mystery to most people.  It starts off adding parameters in reverse alphabetic order;  but as you start changing parameter names it soon goes haywire and the order becomes unpredictable.  Various people have come up with ingenious workarounds to reorder parameters but those methods are painful to say the least.  A fix for this problem has been on wishlists for Revit from the early days.  In Revit 2015 a partial solution has been applied to a very tricky problem to solve.

This new feature has several parts to it:
1.  You can change the order that new parameters will be added in the family editor
  • It can be set to ascending or descending alphabetic order.

  • You might think that it will be a simple decision to make it "Descending" as this is how almost every (latin) alphabetic list is sorted.  The one exception to this in Revit is how the family editor used to work - reverse alphabetic (to start with).  So if you want semi-consistency with all your old Revit families you might go with the old method of "Ascending".
  • Personally I will set it to the normal alphabetic order "Descending" as soon as I get my hands on it - so that we can start getting some logic to new families (the old ones are all mixed up anyway).
  • If you change a parameter to a different group heading, it will honour the sorting order within that group - this may be a kind of workaround for reordering, rather than using the Move Up/Down tools described below.
  • This sorting order setting will not affect parameter order in existing families.
  • Will not control system parameter order (not visible in family editor)
  • Will reorder by standard unicode ascii character order - this means all special characters (accented letters) may go after the 26 characters used in English.  This sort order may not work so well for other languages (I am not 100% sure about this one).
2.  You can move individual parameters up and down in the list
  • If a particular parameter is not inserted in the order that you want, you can use the "Move Up" and "Move Down" buttons to get it in the right place
  • I believe that it only allows you to select one parameter at a time to move up or down.
  • You could obviously use this feature to reorganise all your old families - but I can't see myself laboriously going through thousands of familes, moving parameters one by one to fix them up!
What we really need is a batch method to reorder parameters in existing families in a library.  I believe that Revit 2015 may have some sample API code that could be used to do this - but you would need to compile that yourself.  If you haven't learned how to do that yet, it will be another skill you need for rolling out 2015 to get the most out of this new feature.
No doubt someone will write/compile the API fairly quickly, and hopefully post it on the web for us to use.  [Edit:  refer to the Upgrade Information section of Autodesk Whats New help online - it refers to the Software Developers Kit (SDK), but it does not say where to find the necessary code sample]

I would prefer to have it built in to the batch family upgrader that is supplied by Autodesk;  I believe that Aaron Maller may have devised a clever way to use journals to get this happening? 
I understand why an "automatic re-order on upgrade" is not built in to the software as it would not suit everyone.

Tooltips for parameters 

In the family editor, you will be able to add tooltips to each parameter that you create (or have created in the past).  This is accessible from the Parameter Properties dialog box.
This is a really cool little new feature, which works well.  It will enable you to give instructions to users about what the parameters might do and how to use them -
  • It has a character limit, which I think is about the same as a tweet, so most people should be able to cope with that.
  • The tooltips will show up in the project environment when the user hovers the mouse over the parameter.
  • Obviously this won't apply to system parameters as you cannot access them in the family editor.
  • You probably won't go back over old families adding tooltips to all parameters, but certainly it will be worth doing so for the cryptically named ones.  
  • Hopefully it will be possible to access this capability in the API in which case someone will probably write a tool to speed up the addition of tooltips to old families

Shared Parameters for View Titles

You will be able to add shared parameters to view title families - this will be done by editing labels in the family editor.  I see this as useful for things like bilingual drawings where you want two (or more) languages on each view title.


Images in Schedules

Revit 2014 introduced the ability to insert images to schedule headers.  In v2015, images will now be able to be put into the body of schedules, linked to instance or type parameters. The purpose of this is for such things as room data sheets - which is something that many people want to be able to do. 
I find that prospect really scary for a number of reasons:
  • Images cannot be linked into Revit - only imported (Aaargh!);
  • There is no method of controlling file sizes during the import process (unlike many email image attachment programs that let you reduce file sizes);
  • Project pressures and human nature is such that very few people take care to check image file sizes before they are imported;
  • We do not have proper image management tools in Revit - we need to be able to locate all instances of any image regardless of whether it is placed or not. [Edit:  The Autodesk online help tells us that the "Manage Image" dialog now has listings for Count and Path - this will help with tracking down some of those images, but it really needs to report the image Size too]
This means that our Revit project file sizes could be blown out of the water very rapidly unless great discipline is used to manage this process.

There are a number of other limitations to this new feature:
  • You must create the images - Revit cannot use the automatically created family previews in schedules.  It would be good if it could because they are already small file sizes
  • Schedules cannot be placed to automatically flow onto multiple sheets when they get too long to fit on one page, so this is only going to work if you place the schedules on large drawing sheets.  This kind of schedule is typically done on small sheet sizes (A4 or Letter)

Schedule More Parameters

More Wall parameters can now be scheduled:
  • Base Constraint
  • Base Offset
  • Top Constraint
  • Top Offset
  • Unconnected Height
What is not included in this list is "Top is Attached" or "Base is Attached".  I find this really worrying because it means that when a wall is attached at top or bottom, the "Unconnected Height" is almost certainly going to be displaying a false value in the schedule.  At least in the properties dialog you can see those "Attached" checkboxes so it might alert you to the issue.
If we could also schedule the "Attached" properties then we could use the schedule to identify attached walls, and perhaps use conditional formatting to highlight possible false height values.  Lets hope it makes it into v2016 . . . .

The same problem could also happen if a wall has had its profile edited - again the wall heights could be scheduling false values.  This is not so simple to solve as there is no property for "Profile is edited" - however, Revit knows if it has been edited or not because it displays a "Reset Profile" icon in the ribbon if a selected wall has had its profile edited

Custom Total Titles

You will be able to specify custom text to display for the Grand Totals title on the Sorting/Grouping tab of the Schedule Properties dialog.  This is one more small but welcome step in the process of improving schedules in Revit.

For info on other new features in Revit 2015, refer to Sketchy Lines