buildingSMART Forums

IFC Export: type or occurence ?

Hello everybody,

What informing the override IfcExportAs parameter for a Revit family: what is better to choose, a type entity (IfcXxxType) or an occurrence entity (IfcXxx)? (of course, I’m not talking about the case in which one of the two isn’t available in the IFC schema). And can you please explain me the reason for better choosing one instead of the other?
What is the main difference between a type entity and an occurence one?

Thank you in advance.

Go for Type where possible, especially when using Ifc2x3 because many occurrence classes are not available at Object level and thus the Types are more specific. With IFC4 more occurrence classes (derived from IfcObjectDefinition) are available so there you are more free to adopt Object classes.

Hello again and thank you for your answer, however even if we are referring to IFC4 - in which more occurrence classes exist - my question still makes sense: why to better choose IfcXxxType instead of IfcXxx ?

A possible answer comes from one of buildingSMART’s pages: “Types (IfcTypeObject) allow you to group objects with common characteristics. To avoid multiple entries at the occurrence level, the properties should preferably be entered at the type level (for example: name of the manufacturer, material, etc.)” - the page was originally in French (apparently, I cannot include the link here)
If I understand, the Type is a pattern category from which the Occurrences inherit the attributes so that’s why it is better to export to the Type category.

But, still, I’m not sure if this is the correct answer or at least the complete one.

As this is a buildingSMART forum, this is not the best place for precise Revit advice, but since I have been preparing material for a client of ours, to better support IFC in their Revit templates, I don’t a problem of sharing some findings here.

If you look at

you can see that “officially” Revit has a series of supported classes. In practice, this list is incomplete and even inconsistent. The only right answer is to look in the open source code for the IFC Revit Add-in and see which checks are performed for all the Revit categories. Sometimes, the global mapping is taken into account, sometimes it has no effect. System Family Walls will always convert to IfcWall, but in-place Wall families can be mapped to other IFC classes.

There is also some internal mapping to cater for differences between Ifc2x3 and IFC4. But if you have a class that IFC4 supports and IFC2X3 doesn’t know about, you can’t prepare the IfcExportAs parameter to work for both (alas). You have to choose.

So strategically, go for Type as much as possible and let the Add-in map those to the equivalent Object and Type.

And test the results. Because even if what I say may seem to make sense, there are always exceptions when Revit deals with IFC.

1 Like

I’m most grateful for the time you spent and the quality of your answer. I can better understand the Revit side of the problem and Revit’s export capabilities.

I’d have one more question on another subject which again implies some Revit manipulations but it’s also related to the nature of IFC: I need exporting host+nested families in IFC and each nested family has to be shared. But, when opening the family in Trimble Connect or in FZK (the german viewer used by Autodesk in its famous IFC export manual), I don’t have any view on the information related to the host family as a whole, I can only see each nested family information. I should add that there is no specific geometry proper to the host family which contains only nested families (so, it acts like a container and nothing more).

Are there any solutions or IFC parameters to group the nested families and to tell that the host is the container?

I know the problem. Unless I’m mistaken, this is a limitation in how Revit handles IFC.

You either use non-shared nested Families or add geometry directly in your Family (as a placeholder?) to maintain the “container” object.

All shared nested components become completely independent in the export and know nothing about their container anymore.

I don’t know how to solve this.

Some time ago, I’ve added myself two small extrusions in the host family, along with the nested ones but it didn’t work, it hasn’t been perceived as one family (single container). I’ll do some more tests. Thanks anyway!