Sunday, 18 November 2012

Revit Multiple Host Repeater Patterns

Two Point Repeaters on Divided Surfaces and Divided Paths in Revit

Last time we looked at two point adaptive components hosted on a single divided surface, and turning them into "Repeaters" in Revit 2013.  The different patterns that can be achieved in a Repeater are often surprising, and usually difficult to predict until you understand the rules that they follow.  The images from sample repeaters shown here help to figure out those rules, although one example in the previous post defied the logic that I had figured out.   It starts getting even more interesting with two point adaptive components when they are hosted on nodes of two separate divided paths and surfaces.
In the images below, the original hosted component is shown on the left, and the resultant repeater shown on the right:

Single Divided Surface and Divided Path

A two point adaptive component hosted on nodes of a separate divided path and surface will repeat in a single direction, quite unlike a single component on a single surface, which repeats in both directions.  It is not clear how Revit decides which direction to repeat on the surface – in this example it goes vertically:

Reversing the direction of the adaptive component makes no difference to the pattern, it just changes the adaptive component itself (if it is not symmetrical between points 1 and 2).

Rehosting the adaptive point on the surface also makes no difference to the orientation of the pattern, it just changes the location of the vertical pattern, and in this example it stretches the adaptive component more:

So, what if we want the pattern on the surface to be horizontal?  Maybe rotating the grid by 90 degrees on the surface will do the trick (by changing the instance property “All Grid Rotation” of the surface)?  Well, not exactly because although it does make it horizontal, it goes in the wrong direction – reverse to the divided path on the spline:

Rehosting the point of the adaptive component on the surface makes no difference to the direction of the repeat wherever it is placed – it still crosses over itself, so it obviously is not affected by the relative position of the hosted nodes (unlike when it is on a single surface):
We’ll try doing the opposite of what we expect to work, and rotate the surface grid by negative 90 (or 270 degrees) – Bingo, it works.  Ok, this means it is using mathematical rotation (anti-clockwise), rather than compass rotation (clockwise), which is logical, but my brain learnt about compass rotation first, and never naturally thinks the other way despite years of working with computers :

There is another way to control the direction of the pattern, but it gives a slightly different result.  By placing two adaptive components on adjacent nodes on the surface and path, it tells Revit exactly what you want – however it actually creates two interlocking repeaters rather than one.  This is a different rule to the situation when a repeater is created by two adjacent single point adaptive components (only one repeater is generated):

Using this method allows you to generate a diagonal pattern on the surface:

It also allows you to precisely control the spacing of components in the pattern:  
Note that it only creates as many repeats as it can using the lesser number of available nodes it finds in either direction, depending on the spacing of the two components – in the first example below it is dictated by the surface, and the second example by the spline divided path:

When two adjacent components share one node it gives quite a different result, more like a radial pattern.  It is actually using the same logic – just using a spacing of zero in this example:

You can place additional adaptive components (you must select all when creating the repeater).  The resulting repeater patterns are a little confusing – in this example it creates three interlocking repeaters from three original hosted components; the adaptive points are on adjacent nodes, but the resulting patterns go every second node in the vertical direction, and every third node in the horizontal:

When two of the components share a node, the resultant spacing is changed – it looks like the repeaters are sharing nodes, but in fact they are not.  It seems like each repeater takes the total number of adjacent nodes used for hosting in each direction, and uses that number plus one for its own spacing.  In this example the total number of occupied nodes in each direction is two, so each repeater has a spacing of three nodes in both directions:

It is also possible to use components with more than two adaptive points, and to host on more varied combinations of divided surfaces, paths and points.  Next time . . . .

Saturday, 10 November 2012

Revit Multiple Point Repeaters

Multiple Point Repeaters on divided surfaces in Revit

In Revit 2013 it became possible to host adaptive component "Repeaters" onto divided surfaces, and paths.  The adaptive components can have one or more adaptive points - last time we looked at single point components.  It starts getting more interesting with two point adaptive components - they can be hosted on nodes on a single divided path or surface.  They can also be hosted on nodes on two separate divided paths or surfaces – in this situation their behaviour becomes more difficult to predict as the logic is more complex.

Following on from the last post on single point adapters, here we will look just at two point components on a single divided surface:

Single Surface

A two point adaptive component hosted on adjacent nodes on a surface will initially behave much the same as a single point component - in the images below, the original hosted component is shown on the left, and the resultant repeater shown on the right.

The exception to this being that it will not place repeats where it cannot find equivalent locations for both nodes – so it may omit half a row/column.  In this example the repeater is stretched across two non-adjacent nodes, so that when it gets to the last column, it can only place the first adaptive point on a node, but the second one would be off the surface – so it omits them:

We can also see what happens when two components are placed on a single surface and then both selected to turn into a repeater pattern - the results are similar to the single point adaptive component patterns - you get a linear pattern.

If you want to alternate the direction of patterns by row, it will not work if you just place two similar components adjacent to each other in the reverse direction – it will just create a repeater in exactly the same place as the originals – not across the whole surface.  We will try to figure out why later.

To achieve the full pattern you need to place two pairs of alternating components in a square pattern.  It will actually create four separate repeaters but it looks correct (one repeater highlighted to show it is not a single pattern, but one of four interlocking patterns):

 If you try a different approach of placing just two alternated components  staggered on the surface, you get some surprising results:
This seems pretty weird -  what it appears to be doing is only repeating the second of the two components (top right).  It repeats it in the same distance and increment as the distance between the end of the first and end of the second component (point 2, narrow end) - ie. one grid module up the screen;  but at the same time it takes the distance between the start of the first and start of the second component (point 1, large end), and stretches the component, which is one grid up and 4 to the right.  It would put another component above, but that would be two up and 8 to the right - in which case it has run out of nodes on the surface so it gives up.  It is easier to see this pattern in the next example where it has room to fit more in the pattern:

If we try putting alternating components in line before repeating, the results are rather weird again - but at least we can understand the logic, that it is repeating only the second component but stretching its start and end points by the same proportion as the distances between the start and ends of the originals.
 It is a little clearer when the repeated component is smaller so that they don't overlap:

The next one has got me stumped - I just don't get it.  I guess it is following the same logic but its too weird that it flips the direction as well!

The good news is that once you begin to understand how these repeater patterns work, you can make some crazy diminishing patterns really easily.  This one didn't require any formulas (aside from creating the original adaptive component) - it just needs careful placement of the components before repeating them.  It would also be easier to understand the patterns with a larger surface where it does not run out of nodes so quickly:

Next time we might look at 3 or more point adaptive components;  or hosting them on multiple paths/surfaces . . . . Two-Point Repeaters on Multiple Hosts