BILT Speaker

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

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.

Thursday, 14 February 2013

Changing the Height of Radial Grid Lines in Revit

A while ago I figured out a simple Revit trick to solve a seemingly difficult problem:

How do you quickly adjust the height of multiple radial gridlines?


If you create a set of radial grid lines in a new project, they will automatically adjust their height to the number of levels in the model (plus a bit above and below);  If the model is already populated with elements, the grids will extend just above and below the furthest extent of the elements.  This is all fine until you need to extend the grids higher - say you add some new levels, in which case the grids will probably not show on the new level plan views.

Orthogonal Grids
With orthogonal grids it is easy - you just go into a section or elevation view, select a gridline and drag its 3D extents up or down;  all parallel aligned grids will go with it - then they will appear in the new level plans.  Obviously you need to do the same operation in a perpendicular view to get the rest of the grids.

Radial Grids
To perform this operation on radial grids would require one perpendicular section view for each grid - as grids will only show in a section or elevation if it is perpendicular to the grid.  That would be a painful process to say the least.

Not The Solution
Don't waste your time with the "Propagate Extents" button that appears on the ribbon when you select a grid.  It is misleading - it won't change the 3D extents of a gridline at all - it only changes the 2D extents of the grid on specified views to match the current view.


The Solution
  • Create a scope box roughly around the shape of where the grids need to be in plan - it may help to rotate the scope box;
  • Give the scope box a meaningful name (even if only "temp grid height") ;
  • Adjust the height of the scope box (in section or elevation) to that required for the gridlines;
  • Draw a temporary curved gridline around the plan extent of the grids;
 
  • Select all the radial gridlines;
  • In the properties, set their scope box Extents to your temporary scope box;
  • It will crop their 3d extents in plan to the box (plus a bit), but it will also extend their height as desired;  Now you will not be able to adjust the individual grid 3d extents as they are locked to the scope box;
  • Delete the scope box, or else set the grid extents back to none, so they are no longer controlled by the scope box;
  •  Now select each gridline and drag its 3d extents out to snap to the temporary curved gridline.
This method is vastly quicker than creating numerous section views.  I hope it saves somebody a lot of time, like it did for me!