Autodesk / revit-ifc

IFC for Revit and Navisworks (2019+)
474 stars 193 forks source link

Decomposition relationship between nested shared family and it's parent #374

Open EvdB1975 opened 2 years ago

EvdB1975 commented 2 years ago

The relationship between a nested shared family and it's parent family isn't set.

JOuellette-Autodesk commented 2 years ago

Can you be more specific about what you are expecting? Can you show an example(s)? What version are you working in?

EvdB1975 commented 2 years ago

Sure.

In Revit it is possible to make a family which encloses several shared other families (aka nested families). For instance a door family which can contain a nested shared family for: a door leaf, a doorframe and a door closer.

When exported to Ifc these turns out as separate object with nothing showing a relationship between these objects (which is strange because there clearly is one).

If I go trough the express schemes of Ifc 2x3 I find:

https://standards.buildingsmart.org/IFC/RELEASE/IFC2x3/TC1/HTML/ifckernel/lexical/ifcreldecomposes.htm

So when exporting from Revit to Ifc I would expect this relationship to be set in both the parent family (the door) as in the child (nested) families (door leaf, doorframe, door closer).

As a disclaimer I do not fully comprehend the Ifc express format yet so maybe I am seeing this wrong.

Example file Revit and Ifc: RVT_AND_IFC_Example.zip

In the (R2021) file I put in a basic door family with 1 nested family (door leaf). I also included a curtainwall which does have a decomposed relationship as I would expect the door family to have also.

Teun1 commented 2 years ago

I also want this behavior to change. The exporter works as expected with model groups, assemblies and also with e.g. area types. But not with nested shared families. For now, use (generated and or temporary) model groups. Or agree with the whole team for a specific parameter to be filled with 1 unique code for all the nested parts.

mcicognani1967 commented 2 years ago

I'd like to second this request. We define curtain wall panels as Panel Families only containing nested Generic Model parts. Parts are exported as disconnected components and the panel itself is not exported at all because it does not contain any solid geometry. This way the assembly information and parameters are lost and the hierarchy as well. We tried also to set IfcExportAs parameter as AssemblyInstance, but it doesn't make any difference. The only way is either to add a fake solid to the host panel, or replicate the parameters to the dependent elements and use a unique id to group the entities together later... It'd be great to preserve relations and group information

JOuellette-Autodesk commented 2 years ago

https://jira.autodesk.com/browse/REVIT-189542

JOuellette-Autodesk commented 2 years ago

We'll have to check to see how this relates to the RV1.2 MVD requirements. I understand your request, but it may not be a part of that particular export. It may be that it can be defined in another MVD, or it is an additional/optional feature to be considered at export.

mcicognani1967 commented 2 years ago

I found interesting this phrase inside the IFC4 documentation regarding IfcElementAssembly:

The geometry of an IfcElementAssembly is generally formed from its components, in which case it does not need to have an explicit geometric representation.

It's interesting because the presence of a solid geometry inside the host family, or not, changes the behavior of the exporter. If it's present a geometry, the relation between host and nested families is preserved, otherwise all nested elements are exported individually, simply because the host element is completely ignored. This behavior is unfortunately present even in other exporters, like Navisworks' nwd (both exporting from Revit or importing from Navis). The only product I've seen so far to be able to preserve the hierarchy is BIM360... unfortunately...

From my point of view the IFC documentation do not explicitly forbid to export pure assemblies made only of nested elements, or even nested assemblies of assemblies... I wish there could be a method to force the export of such assemblies. I have tried to specify IfcExportAs = IfcElementAssembly, and it doesn't work,,, probably I need also to specify the decomposition inside the nested elements, but I don't know how to do it...

let4mi commented 1 year ago

Any news on this issue? I also couldn't find anything explicitly specified in relation to nested/shared families within host family within BSI IFC documentation. For me at least - the only logical/expected thing is preserving relation between multiple families loaded within a host family as shared.
One of the common use-cases is making prefabricated elements as a host family. It's expected that that family preserves relations in the same way as IfcElementAssembly

mcicognani1967 commented 1 year ago

As a workaround, we actually created an assembly in Revit with the same components. We developed a macro for doing this before exporting IFC, that also copies all the host parameters to the assembly, to mimic the host as much as possible. This way the IFC loaded on varius platforms, like Trimble Connect, correctly handles the assembly, allowing to select the assembly and/or the single components. But it's a workaround, since the original host family is however lost. Also, we do this kind of assembly generation only for IFC export purposes, since it'd be unconvenient to keep Revit assemblies overlapped to the original host family (curtain panels in our case). In my mind, I'm still convinced that setting IfcExportAs equal to IfcElementAssembly should be enough to get the same result.

emielhofman commented 1 year ago

Would be really helpful if this could be implemented. We experience this problem mainly with nested elements in doors and windows because for example we want to know the relation between a door frame an leaf in ifc.