Xrev API Tools: Increase Productivity!



Thursday, December 06, 2007

In Place families when should I use these?

In place families trip up a lot of new revit users. Sometimes its just so quick & easy to create a family on the fly in the project.

Unfortunately though they have some real negatives. For instance they typical have a big hit on your file size especially when you start making them reference surrounding geometry in the project. Also, one of the worst things you can do in Revit is start copying around the in-place families in the project...

Many new users don't realise that unlike a normal family all the copies are actually completely new families. That is, changing one, will NOT update all the others. If it repeats it needs to be an external family.

So what in-place families do I create?

Generally the only things I'll model in place occassionally are floors, stairs & ramps. Modelling monolithic stairs and ramps as floors is a great idea as you can then attach walls to them and get those connections to floors correct. This is also because of the current limitations of the stairs & ramps.

I prefer to model complex floors as in-place purely because they don't adjust when you move walls, causing sketches to occassionaly become invalid and delete your floor. This also gives you absolute control over footings, and various beams through the slab.

Another trick is with High-Rise buildings where you have complex floors that are typical over a number of levels.
  1. I'll model the first one in-place,
  2. Then whilst still in edit family mode, copy all the geometry and paste aligned into a new external generic model family and save it as say "Floors 3-9".
  3. I then switch back to the project and delete the inplace family i just made.
  4. I create a new in-place Floor family called "Level 3 Floor" and load the generic model family "Floors 3-9" into it and place it on level 3.
  5. Then finish the family.
  6. Revit then understands that this family is a floor allowing you to attach walls to it.
  7. You can then copy and paste by level to levels 4-9 and rename in the inplace families as per the level they are apply to. Yes we did just copy and inplace family, but because its contents is purely an external family there is no real overhead in doing this. Plus if we make a change to that generic model and reload it, it will update all of our floors!
Let me know if you'd like me to post any other examples...

Revit Referencing Sheets on View Tags

Do you use the Referencing Sheets parameter in your view tags?

If you do then I bet you've had times when you thought why on earth is Revit choosing to reference from some bizarre view instead of the one you want.

Well its really quite simple -

It uses the drawing sheet numbers to determine which view to back reference.

For instance, lets say you have a sheet set as per the following:

010 Site Plan
020 Existing Plan
030 Demolition Plan
040 General Arrangement Plan
050 Elevations
060 Sections


Now lets say you have your section and elevation markers turned on in all those views and they haven't had the "hide at scales coarser than" parameter assigned properly.

In this case your Elevations & sections would display their referencing sheet as 010. This is because when you are looking through the set its the first drawing you would come to (logical hey).

Now if we go to the Site Plan and turn off the sections/elevations or charge our "hide at scales coarser than" parameter so as to effectively turn them off in this view. Our sections and elevations are now magically updated to reference back to 030 (this is assuming that they are new construction phase sections and elevations). Again because its the first drawing you would see the markers when looking through the set.

If you're anything like me, I want mine to back reference to the General Arrangement Plan (040). So our dilemma is do we turn off the section & elevation markers in this view? (probably the obvious choice) or the alternative and probable wrong solution would be to adjust our set order so the general arrangement plan comes before the demolition plan in the set...

I look forward to a setting in Revit where we can override this behaviour in special instances. But understanding this may help you identify why sometimes a view is being referenced from a strange place.


I've also noticed some strange circumstances, usually when dependant views are involved where views reference back to a sheet that has the markers turned off. Hopefully this bug will be fixed or maybe it was just related to my file being corrupt?

Saturday, November 17, 2007

Mr Spot's 5 Golden Rules for Revit

I had an anonymous user request my 5 golden rules which I thought was a great idea!

The hard part is trying to prioritise what I think are my top 5 rules, so hard in fact that I think I need to break it down into 2 categories. Project & Family:

  1. Work in multiple views. When you are working on your model make sure you completely understand the extents of what you are editing. I don't believe this can be done from any single orthogonal view. Working in 3D is great and should be done as much as possible as you can quickly see how the elements you are manipulating interact with elements around them (make use of section boxes to do this also). Too many times I see users trying to make changes only in a plan and then a week later discovering all the issues they have made for themselves in their sections...
  2. Setup your template effectively and continually update it & customise templates at the beginning of new projects to suit that project. If you find you have to make graphical changes to your project everytime you want to print something or once it reaches a certain stage then there is a good chance your template file isn't setup appropriately. The earlier you do this and the quicker you update your templates the less redundant work you'll have to do updating the many revit files you end up with.
  3. Plan your project! Sit down with pen and paper first, especially for large projects or projects of an unfamiliar type, and work out exactly how you are going to document it. Are you going to use groups or links or design options? If so what are the issues in doing this and how are you going to resolve these? How is the project team going to work? Important questions that need to be resolved as soon as possible, preferably before the model is started.
  4. Develop a system of control for your Library. Family naming conventions, parameters (what do I want to show up in my schedule?), displays at various scales...
  5. Make use of your model as much as possible for drafting and details. If you use your model as the basis for your details then you can identify issues before they get to site. Yes of course you should still draft over these for details, but using the model as the basis you know when your details need to be updated or re-looked at.

Hmm, most of these are standards based which shows my position as CAD/BIM Manager. But really having your standards and protocols in place is one of the MOST important tasks in maintaining an effective Revit working environment.


  1. Setup Reference planes first! I can't stress this enough. It makes creating parametric families so much simpler. Place them in and give them names and appropriate strengths (ie: Centre Front/Back, Bottom or Weak)
  2. Give your family an appropriate ORIGIN point. This is especially important when using arrays as I've spoken about previously.
  3. Do all families as non-hosted (there are some exceptions) first. Then simply nest them into the hosted template. This way its very simple to constrain them to their host.
  4. Fill out and add parameters & types for all your families. As a good friend of mine says, Wesley Benn, leverage as much data as possible. Info entered once here is info that doesn't need to be entered 10 times in your next 10 projects...
  5. Minimise numbers of families by making them as flexible as possible. Less families means, smaller project sizes, quicker load times, less things to change and things are easier to find. Refer to some of my previous posts to see some methods of doing this.

Well that's my list. I'm sure I could easily have a top 100...

As always your comments are most welcomed.

Thursday, November 15, 2007

Requests for Posts

Hi everyone!

Please post your comments on this thread as to any particular items you would like me to touch on.

I've finished uni now and have the internet on at home again so should be able to start posting more frequently...

I'll then try to add posts based on peoples requests...


Wednesday, October 24, 2007

3D Engraved Model Text

I had someone request this the other day and the solution is really very simple.

Simply create your model text as you would normally and set the plane so the text is embedded on the face of the wall or system family that you want to engrave the text on.

Use your join geometry tool on the wall and the model text - This makes revit cutout the model text from the wall.

Now just set the material of your model text to have a 100% transparency...

Too Easy!!

Tuesday, September 11, 2007

A "Family Type" Parameter for swappable subcomponents

I'm sure a lot of you have seen this before and its a really powerful tool. I'm referring of course to the ability to have "Family Type" parameters in a family for nested sub components.
What does that mean?

It means you have a single door where you can swap out the panel, or handles or frame. This avoids you having many different door families to achieve the same thing. It also means you don't have to load in 15 different families into your project, instead you may only need 2 or 3 and thus its better for file size.

Flexibility is a great thing.

So how do you make one of these parameters?

Well the key thing to having this work correctly is that all the sub-components that you wish to swap out must have the same insertion/origin point and be constrained by that point.

Begin with a template:
Start with a "non-hosted" generic model family template (remember you can always change the family category later).

Now we need to set the "defines origin" reference planes in the X, Y and Z planes.

My template for door panels is setup as follows:

So my defining origin points are the Bottom Reference Plane (note I set it to be "Is Reference = Bottom), Centre Left/Right & Centre Front/Back.

Make note of this as when you load this panel into your project you need to define it by these points.

These are the parameters I include in the door. Note I have parameters to control vision panels if they exist. This way I have even more flexibility...
So once you've finished you need to load your panels into the host door family.
NOTE: This is personal preference, but I leave my door panels as generic models and set my door hardware to Furniture category.
DO NOT load lots and lots of door types into the one family. If you load too many your family will become too large and take ages every time you want to make a change to it. Load your standard door panels (most commonly used) only. I then have a subfolder that has an extensive library of door panels & hardware that I only load in on a per project basis...
Now we need to setup the host family.
Start with the Door Template. As a general rule I always delete the existing trim extrusions and remove their associated parameters. The other change I make is to the Width & Height parameters. In the template the height and width parameters are actually associated to the opening... I don't like this, I prefer to use the "Rough Height & Rough Width" parmeters for the opening sizes and then use the Width and Height Parameters for the panel sizes. So change this if you agree with my logic (just select the Width dimension and change it to Rough Width in your options bar pull down)
The next thing I'll do is load the panels that I want in the door family.
Upon doing this I immediately link through the parameters for every door type I loaded...

This is the labourious part. Go to each type you loaded in the project browser, go to the element properties for each one, then link through all the parameters by clicking the "link" column for each parameter. For the first one you will need to use "Add Parameter..." for the ones that don't exist yet. Then after this you can just pick them. Note I link Panel Width & Panel Height to Width & Height respectively. (note for double doors I don't do this because I have extra parameters for each door panel, left/right).
I then go to plan view and place one of the door panels randomly. I then constrain its left/right location using its centre left/right origin point (use the align tool and then lock it). I then constrain its front back location using its Centre front/Back origin point.
I generally have an undercut parameter so to constrain the Door in the Z axis I go to element properties and in the instance parameters I'll link the level offset parameter to my undercut parameter...

So we've now constrained the panel in the X, Y & Z axes which was the insertion point of the panel.
Now we need to add the Family Type parameter to enable us to swap out the panel for the other loaded panels...
Select the panel you placed. Look at your options bar

You see there is drop down called label and its currently set to "None". Select "Add Parameter", give it a name and your done.

If you load this door into a project you now have a parameter that enables you to swap out the panels as needed.

Now this quick tutorial didn't really go into the depth of creating a door it was more to concentrate on the parts that are required to successfully create a working "Family Type" parameter.

I hope someone finds this useful.

Post if you have queries, as I'll add more detailed info if it proves people still have trouble.


Curtain Wall - Corner Cutouts

If you've ever tried using embedded curtain walls for strip glazing then I'm sure you've seen this situation at the corners...

That's right, the corner doesn't get cutout correctly...

Now, there are a few different ways to resolve this. My preference is to create a wall hosted generic model. Then I just create a void in that family, give it instance parameters for width, height, thickness etc... And finally use the cut geometry tool to tell the void to cut the host.

Now I can just load that family into my project place it in the offending wall, use the grips to adjust its size to fit the situation and then move it into place.

Too easy. Advantages? Well its a family so they can easily be filtered, they don't have a huge effect to your file size and its easy to adjust. Plus you can always select them and change them as needed.

For one I prepared earlier use this link:


I hope you find this helpful :)

Tuesday, August 28, 2007

Revit Technology Conference 2007

Hey Reviteers,

I hope those of you who have been to the RTC07 roadshow have found at least some of it beneficial?

Feel free to post your comments...

I've just got back from the Auckland Conference which went very well apart from a minor hardware glitch on one of the laptops (the video card kicked the bucket during a hot swap). On a whole and from speaking to a few of the attendees I feel it is running well and people are getting something out of it.

I've learned a couple of nifty little tricks myself! I especially liked Chris Needham's awakening of the Scope boxes which I've never really used. I had no idea they had that many uses.

During the roadshow I've had a couple of requests for tutorials/families to be uploaded.

So far they have been the "generic wall hosted opening I use for curtain wall strip glazing to cleanup the corners" and "a step by step tutorial on how to create families with swappable components".

Both of these I'll upload in the next two weeks or so. Hold me to that, if you don't see it in that time frame add your comments and abuse me and hopefully that will kick me into gear.

Its been great putting faces to so many of the people that have found my online contributions beneficial over the years.


Tuesday, April 24, 2007

Revit 2008 - Point edit Floor & Roof Tool

Finally we are able to create those complicated falls of roofs and floors that occur on nearly every project, natively in Revit.

So how powerful is this new tool? Can it do everything I want it to? What can't it do?

I'll try to answer these questions as best I can:

To save the new users the frustration of trying to do something that the tool can't yet create I'll list the shortfalls and bugs that currently exist in this fantastic new tool.

1. As it states in the Revit help, the new point edit tool cannot be used if the floor or roof sketch contains curved segments. This doesn't mean you can't have a curvy roof though :) You just have to create your roof with straight segments first and then use Modelling->Opening->Vertical Opening to cut the element to the desired shape.

2. Further extrapolating on the above functionality with curves. There are certain circumstances where the opening will NOT cut the element and instead reports an error "can't create geometry". I've experienced this once on a floor that had 85 point edits on it as well as multiple cuts to create a curved edge. The current workaround to this is to create smaller openings until you can identify the location that is causing the issue.

3. If you have two split lines very close together (say less than 2mm) you begin to get some strange occurences in sections. That is, the floor/roof will not get cut by a section OR section box for that matter. Instead the whole floor or roof displays similar to the behaviour of certain family categories such as furniture... In this case you are better use a single line and break it into segments.

4. You can only have 1 variable layer or all variable layers. That is, you can't have the top layer of your floor a variable thickness as well as the bottom layer having separate points and its own variable thickness. The solution being to use multiples floors and to join them together - it helps if you make them overlap so you don't get the can't join geometry error.

That about covers the issues i'm currently aware of. But hey, lets stop being so negative and look at what this new tool can do for us...

So far my office has made use of this tool for tiles with a topping slab with falls to floor wastes, also sidewalks or footpaths, variable thickness rigid insulation, and tapered floors that even include thickenings.

This is just some of the uses of the new tool, as you can see my uses have been primarily floors but i'm sure others have plenty of other uses for the tool (FEEL FREE TO POST YOUR USES).

So how does it work? (images to come later)

1. First you create your floor using straight lines only and finish sketch.

2. Now select your floor. You see 5 new options display in the element toolbar.

3. ...to be continued when I have some free time in the next week or so...