BILT Speaker

BILT Speaker
RevitCat - Revit Consultant
Showing posts with label panel. Show all posts
Showing posts with label panel. Show all posts

Sunday, 17 March 2019

Glazed Doors in Window and Door Schedules in Revit

I started out writing this blog post about the behaviour of subcategories in nested families.  On closer investigation, the weird behaviour I intended documenting was not as I had thought - still a bit strange but not quite worthy of a post all to itself.  So I have changed tack and turned it into a discussion about how to get a glazed door family to appear in both door and window schedules.  Many experienced Revit users should already know this, but for those who do not, read on.

Schedules and Categories

Typically door and window schedules are created separately as single category schedules. Multi-category schedules have too many limitations to make them work efficiently for this task. A door or a window is usually either one of those categories, and therefore it can only appear in one of the schedules.  What if you have a window assembly that contains a glazed door? or a sliding glass door, which you want to show in the window schedule (because it is glazing), but also in the door schedule (because it hosts door hardware)?  This common requirement seems problematic in Revit, but there is a way around it . . .

Workaround:

Shared Nested Family

When a nested family is 'Shared', it behaves differently to the parent family in terms of subcategories.
For example, you might have a window parent family, that contains just a frame (or a fixed glass side panel).  Inside this could be a nested sliding door family.  Providing the door family is set to 'Shared', then it can have its subcategories independently controlled (by View Visibility) in the project;  it can also be individually selected, tagged and scheduled (as a door); the parent family can be tagged and scheduled as a window.

Nested Door Family Category Settings

Nested Door Family Subcategory

Parent Window Family

Parent Family Category

Parent Family Subcategories

Nested Door Family in Parent Family

Tagging and Schedules

Standard door and window families are normally tagged separately according to category
Once placed in a project, the combined door/window family can be tagged for either category:




Tag the whole family for the window category tag

Tab select the nested door family to tag it

Scheduling

  • The combined window/door family will appear in a window schedule. 
  • The Nested door family will appear in a door schedule

Category Visibility

This example shows a single swing door nested family in a window family (with fixed window panels either side).  In the project, both door and window categories/subcategories affect the sub-element display:
All Categories On

Door Panel Subcategory Off

Window Category Off - Door Category On

Non-shared Nested Family Categories

When a normal 'non-shared' family of one category is nested inside another family of a different category, it behaves as if it is part of the parent family in terms of categories.
Unshared Family Settings
In the parent family (in Family Editor), the nested family still shows its category when selected
Non-Shared Nested Door Family in Window Parent Family
When loaded into a project the whole window can be selected, but not the nested door family. 

Window family with non-shared nested door - in project

Changing the visibility of the Door category does not affect the nested door.
Door Category Off, Window Category Visible

Hiding the Window category, (while the door category is visible) hides the whole family, including the nested door
Door Category Visible, Window Category Off

This behaviour is as expected.

Weird Revit Behaviour:

Non-Shared Nested Families

However, if the nested families have elements of a specific subcategory (of the Nested family category - door) the element's visibility is still controlled by that nested family subcategory.  This does not really make sense if the nested family is not shared.
Door Panel Subcategory Off


This can be very confusing, as you have no way of knowing what category the nested family is, without editing the parent family.  As far as the user is concerned, the family is a window - since you cannot select the nested door in the project, the user will not be aware that it even has a nested family, let alone that a subcategory that has nothing to do with windows will still affect it.


Monday, 9 April 2018

To Pin or Unpin? that is the Revit Question

Following on from several recent posts about 'Pinning' elements in Revit, there are a few more subtleties to mention.  There are also some exceptions to the general rule of not being able to edit pinned elements.


Refer to these other posts on Revit Pins:

Modifying Pinned Elements

A pinned element cannot be moved or rotated, but it can be copied
  • If you try to move a selection that has any user-pinned elements, Revit will attempt to move them all (graphically showing the move) then warn you that they cannot be moved – so it puts them back and nothing happens.  This is a time-waster, so it is better to check for pin icons before moving large selections - and use the selection filter to check for hosted subcategories. 
  • NB. It is not sensible to just click on the unpin icon on the ribbon before moving the selection - if you had any curtain walls or handrails, it would also unpin all the chain-pinned (type-driven hosted) curtain grids, panels, mullions and handrail supports - thus destroying the integrity of the model.
A pinned element cannot normally be deleted;
  • If you try to delete a selection that has any pinned elements, Revit will behave quite differently to trying to move them:  If some elements in your selection are pinned, and some not, it will delete the unpinned elements and warn you about not deleting the pinned ones
  • Revit will warn you about what is happening, but it is sensible to stop and think about what it has just done - and your next steps:  The undeleted elements are no longer selected, so it may be tricky to reselect the same ones?

Modifying Unpinned Elements

Once an element has been unpinned, you might think that it could be freely edited - but of course that is not true of 'Chain-Pinned' or type-driven hosted elements such as curtain panels, grids & panels.  there are some tricky rules and exceptions here:


Deleting Chain-Pinned Elements

  • Unpinned type-driven Curtain Wall Mullions can be deleted;
  • Unpinned type-driven Curtain Wall Grids cannot be deleted (but segments can be 'removed', laboriously, one by one);
  • Unpinned type-driven Curtain Panels cannot be deleted - but you can change them to an 'Empty System Panel' (if you haven't purged the last type from your project, that is;  if you have purged it, you can't just create a new type of empty system panel, you have to copy one from elsewhere);
  • Unpinned Railing Handrail supports can be deleted

Moving Chain-Pinned Elements

Chain-Pinned elements can only be moved within the constraints of their relationship to the parent element.  For example:
  • Unpinned type-driven Curtain Wall Grids can be moved in one direction only;
  • Unpinned type-driven Curtain Wall Mullions and Panels cannot be moved except by changing their properties, such as Offset;
  • Unpinned Railing Handrail supports can be moved along the handrail - but there are some extreme weird behaviours when you try to do this.

Editing Chain-Pinned Elements

 The only Chain-Pinned elements that can be edited after unpinning are curtain panels – using the ‘Edit In-Place’ functionality.  In fact this allows you to do some crazy stuff with panels, which is quite surprising given all the other restrictions that prevent you from creating buildable elements!


Editing Pinned Elements

You would think that you cannot edit any pinned elements, but you would be wrong!

Floors (and other sketch based elements)

Pinned floors cannot be directly edited – the Edit icon is greyed out


Pinned floors can be modified (without editing the boundary) – by moving associated walls, depending on how the floor edges were defined:
  • If the floor edge is defined by ‘Pick Wall’, the floor edge will move with the wall, even when the floor is pinned

  • If the floor edge was done using ‘Pick Line’ or just drawing a line on/near the wall, when the wall is moved, the floor edge may still move with the wall, even if the sketch line was not locked to the wall.  The rules are not clear on this.

  • This happens even if the floor sketch lines themselves are pinned when editing the floor. 
  •  If a floor is moved, any pinned sketch boundary lines will just move with the whole floor - rendering the pin command inside a sketch pretty useless.
  • Other pinned sketch-based components such as roofs, ceilings etc behave like floors.
This means that Wall Associations are stronger than pins in Revit.

Moves With Nearby Walls

An element that has been pinned, and has its property 'Moves With Nearby Elements' ticked will completely ignore the pin and move when a nearby wall moves

Wall associations win again!

Groups

Pinned Groups can be edited (without unpinning) - this is not the same behaviour as floor sketches.  However, it is not a bad thing in itself, as it means you can pin all groups all the time.
  • Pinned elements inside a group will be moved or deleted when the parent group is moved or deleted, without so much as a 'By your leave'.

Properties

Instance & Type properties of pinned elements are generally editable - this means that such things as Base level or offset could be changed, thus rendering the 'Pin' less effective than you thought.


Modifying Pinned Datums

When a datum element (grid, level or reference plane) is pinned, you cannot change its 3D extents - not surprisingly.
  • However, you can change its 2D extents in each view - which is a jolly good thing, because you can pin them, and leave them pinned!

Section Line

When a section line is pinned, you cannot change either its 3D or 2D extents.  In fact it does not display the extents or depth of view in plan when you select it.  This is an immensely frustrating and dangerous inconsistency in Revit.  It really ought to behave just like datums so that you could change its 2D extents, and at least see its depth of view - it is ironic that you can change the depth of view of a pinned section using the properties dialog box.

As soon as you unpin the section, you can adjust 2D, 3D extents and depth of view graphically in plan.  The big danger here is that you might forget to repin the section line, and some other fool may then move or delete your section line (along with all its carefully lined up 2D annotation).

For this reason it is wise to use the pin icon on the section line itself to unpin it - that way it retains the unpinned icon as a reminder to repin it immediately afterwards [If you use the ribbon unpin icon, it does not retain the unpinned icon on the section line itself]

Please go to the Revit Ideas forum and vote for 'Allow us to change 2D extents of pinned sections'

I am sure there are plenty of other examples of pinned elements in Revit that can be edited when you do not expect to be able to do so (or vice versa).

Thursday, 8 February 2018

Revit Chain-Pins

Revit has two entirely different ways of pinning elements, but they share the same UI commands & icons, so this is a recipe for confusion.  I will try to shed some light on the differences here:

Most elements in Revit can be manually pinned by a user.  This will lock an element in place to prevent it being moved, rotated or deleted.
 Pinned elements can be unpinned  to free them up to be moved, rotated or deleted

Chain-Pin

Some Revit elements host other elements that can be locked / unlocked in place on the host – this also uses a ‘Pin’ icon with a chain-link symbol beside it.  The difference in icon to a normal pin is very subtle, and easily missed - but is really important to see and understand.
I like to call these ‘Chain-Pinned’ elements, because of the chain-link symbol - and we need some kind of phrase to differentiate them from regular pinning.  They could also be described as host ‘Type-Driven’ because some of their parameters are controlled by the Type Properties of the parent.

Examples of Chain-Pinned elements are:

Element / Category types
o        Curtain Wall Grids (only if spacing is set in curtain wall type)
o        Curtain Wall Mullions (only if mullion type is set in curtain wall type)
o        Curtain Wall Panels (only if panel type is set in curtain wall type)
o        Handrail Supports

Unpin

When a ‘Chain-Pinned’ element is selected it can be unpinned by clicking on the element pin or the unpin symbol on the ribbon.  This can be confusing because the pin symbol on the element displays its current status (pinned, with chain-link);  while the icon on the ribbon is an action, showing what you can and might want to do to it (but no chain-link, because the command doubles up for both kinds of pin):

o        The element symbol will change to unpinned status, with the chain-link cleverly hidden behind the red cross - you have to look carefully!

o        It makes no difference to the behaviour which pin icon is clicked on – element or ribbon (unlike regular user pins);  the unpinned icon always shows up when the element is selected.

Chain-Pinned Element Behaviour

When a Chain-Pinned element is selected (but has not been unpinned): 

o        Some of its properties may be locked (eg. Hand Clearance on Handrail Supports)
o        Its type is locked
o        It cannot be moved or otherwise manipulated
o        It cannot be deleted

When a Chain-Pinned element is unpinned:
o        Some locked instance properties are available to be changed (eg. Hand Clearance on Handrail Supports)
o        Its type is available to be changed to others of the same category
o        It can be moved (Curtain Wall Grids & Handrail Supports)
o        It can be deleted (Curtain Wall Mullions & Handrail Supports)

An unpinned Chain-Pinned element can be re-pinned:
o        Its properties will revert to those dictated by the parent (eg. Hand clearance on Handrail Supports)
o        Its type will revert to that set in the parent family type.
o        It will be moved back to its original position
o        Deleted unpinned hosted elements cannot be directly replaced to their original position.  This has to be achieved by alternative methods: 
  • Mullions can be added to curtain grids; 
  •  Handrail Supports can be reinstated by copying another one or by resetting the whole handrail (Be very careful with this - all other modifications will be lost too!)


Editing Chain-Pinned Elements

The only Chain-Pinned elements that can be edited after unpinning are curtain panels – using the ‘Edit In-Place’ functionality, which allows you to change the outline of the curtain panel using sketch tools.

I hope this sheds some light on a confusing Revit topic.  Go forth and unchain those pinned hosted elements.  Or don't, as the case may be - sometimes it is important for them to remain chain-pinned so that global changes can be quickly made.  Once unpinned, you lose that capability.

Monday, 19 June 2017

Global Parameter Enhancements in Revit 2018




I recently did a presentation on ‘Global Parameters’ at BILT ANZ 2017 in Adelaide.  I listed the two updates in Revit 2018 related to Global Parameters – one a bug fix, and the other being support for radius and diameter dimensions.  At the time I suggested that this was not a particularly interesting enhancement, and that I could not think of any particular uses for it.  However, in discussions with Frank Crisp of KTA (in Sydney), he came up with a brilliant idea for how to take advantage of this feature – so I have tested the idea and made a working example as follows.

Curved Curtain Walls

Everyone knows that Revit cannot do curved curtain walls – or at least the walls can be curved but the panels are flat, so that you get segmented curtain walls. 


In some situations this can be appropriate, but if you have enough budget for this, it may be desirable for the panels to curve too.  Some years back I created a curved curtain panel family but it was very clunky to use, and you had to manually match the radii of the wall and the panels.  Frank and I have now worked out a method to use global parameters to keep the radii in sync so that you don’t need to change the panel radius if the wall radius changes.  I have also improved my curtain panel family to make it much simpler to set up and to modify, as well as putting in some check formulas.

The Panel Family

My original curved curtain panel family had a series of reference line arcs in plan, running between the sides of the panel – one each for centreline, front and back of glass (and for any transoms).  These were used to define the outlines of vertical extrusions.  This was quite fiddly to set up and I have since learnt that it is much better to use sweeps for defining such geometry – this means that it is only necessary to draw one curved reference line to be used for the sweep path in plan.  All the sketch (or profile) geometry is drawn at the midpoint of the arc in a left or right view.  This means that an additional reference plane needs to be placed in plan at the furthest offset from the baseline or chord of the arc – this is used to host the profile sketches and it moves relative to the chord baseline depending on the radius of the arc and the length of the chord.
A formula is required to calculate this offset from the chord baseline – this dimension for the height of an arc above the chord is called a ‘Sagitta’.  Using Pythagoras’ Theorem it can be easily calculated from the chord length and the arc radius.  The radius is defined as the hypotenuse of the triangle (long side) while half the chord length forms one of the short sides (B).  The other short side (A) is calculated:
A = Square root of (C squared – B squared)
In Revit this formula is written as
A = SQRT(C ^ 2 – B ^ 2) 

The arc height (Sagitta) is simply the Radius (C) minus the short triangle side (A), so the overall formula is:
Sagitta = C - SQRT(C ^ 2 – B ^ 2)
where
B = Chord / 2
C = Radius


A few check formulas need to be put in as Revit does not like to calculate square roots of minus numbers, nor to have the radius equal or less than half the chord length.
The Radius parameter can be changed to ‘Radius desired’, which is the input value;  A new parameter ‘Radius actual’ checks the input value for anything less than or equal to half the chord length:
Radius actual = If(Radius desired > Chord/2, make it the Radius desired value, otherwise make it
the value ‘Chord/2 +1mm’).


In the Project

This curtain panel family can be loaded into a project and used in a curved curtain wall.  Initially the radius of the panels have to be manually set to match the radius of the wall.

If the wall radius is changed, the panel radii will be wrong


A curved wall does not automatically have a system property for Radius, so you need to add a dimension.



This dimension can then be associated to a global parameter but it must be a ‘reporting‘ parameter, so that all it is doing is getting the radius information from the wall element and pushing it back into the parameter for use elsewhere.
 


The curved curtain panel family can then have its radius matched to the curtain wall.  The ‘Radius desired’ property of each panel needs to be associated to the reporting parameter Radius of the wall.   

Alternatively, you can create a new global parameter that will represent the curtain wall radius if you need any calculations based on the reporting parameter.




Type vs instance

Depending on how you want to use the panels, the ‘Radius desired’ property could be either instance or type.  If you want to define the curved curtain panel as the default panel for this particular curtain wall type, then it must also be a type property.
If the curved curtain panel family Radius property is a type property, then you would need a panel type for each particular curtain wall otherwise it may break.  As a type property you only need to set it once regardless of how many panels you have in the curtain wall.

If the curved curtain panel family Radius property is an instance property, then you only need one panel type.  However, you need to associate the radius to the global parameter for each panel, which means extra work whenever the number of panels changes.




Warning: if you delete a radius dimension with an associated global parameter, it does not ask you if you want to remove the constraint.  This means you could end up with hidden constraints.