Autodesk / revit-ifc

IFC for Revit and Navisworks (2019+)
486 stars 196 forks source link

Export to IFC 4 - IfcRelConnectsElements - connection between elements #553

Closed VolgardTheScientist closed 1 year ago

VolgardTheScientist commented 1 year ago

Hi, Does REVIT support export of connection between elements data into an IFC 4 format through IfcRelConnectsElements? I am looking for including this relationship in my IFC models: https://standards.buildingsmart.org/IFC/DEV/IFC4_3/RC1/HTML/link/ifcrelconnectselements.htm If so, how is this supported? Many thanks for any hints point me in the right direction!

AngelVelezSosa commented 1 year ago

We support IfcRelConnectsPathElements (which is a sub-class of IfcRelConnectsElements). What relationship are you looking for?

VolgardTheScientist commented 1 year ago

I am specifically looking for RelatingElement & RelatedElement attributes as well as for Name and Description attributes for IfcRelConnectsElements entity. Reason behind it is to be able to analyze a building model for deconstruction. E.g. I need to be able to export IFC4 file with sufficient data to determine how are elements in a wall connected to each other: e.g. plasterboard lining is related to timber battens (Description: Screwed connection).

AngelVelezSosa commented 1 year ago

Hmm, I don't think we cover that - I think we use it to convey wall joins only. How would you specify that in a Revit file? We can only export what is modeled.

VolgardTheScientist commented 1 year ago

Indeed - you are correct, we can only export what is modelled. However take a composite slab for example. We have the floor and all its components (say concrete, insulation, screed, hardwood flooring) already in Revit. At the moment they are already being exported to ifcSlab (the container) and to ifcBuildingElementParts (the sub-components). We have modelled the order of these components, I assume that Revit could recognize which parts are on top of which other parts. All we need to do is to be able to assign the IfcRelConnectsElements entity and its attributes & properties to these relations. And yes, it only solves the multilayered components. I wonder if for all other cases (single layered walls, floors, etc.) Revit couldn't recognize that elements are intersecting / touching and automatically generate IfcRelConnectsElements for all such intersections / relations?

AngelVelezSosa commented 1 year ago

If you want that, why not use IfcMaterialLayerSetUsage? I think your use case is possible but I am not sure there is an MVD that covers that particular usage.

VolgardTheScientist commented 1 year ago

I think there is a coupe of problems with that. If I understand correctly, there is no way to assign any PSets to IfcMaterialLayerSetUsage. The five attributes that IfcMaterialLayerSetUsage has, are already used for different purposes. That means, that the connection needs to be assigned to material itself. Which will be a workaround, but it poses another problem – such parameter is not directional. Imagine you have a timber batten that is glued to the substrate, but on top of it is an MDF board that is screw fixed. What parameter do I assign to the timber batten material in such case? Glued / screwed? That is where the IfcRelConnectsElements would be useful. This is pretty critical in my case as I am working on design for deconstruction – without knowing the type of fixings there is no good way to assess any disassembly potential.

AngelVelezSosa commented 1 year ago

I don't think that Revit has any actual knowledge of the connectedness of the parts per se - I think it just makes them. It is an interesting use case. In the meantime, I'm afraid that you will have to look at the geometry - if you took any point in the geometry and you took the axis information from the wall, you could "sort" the parts by their projection onto the axis. Definitely not trivial but could be done.

VolgardTheScientist commented 1 year ago

That could work, a great good idea - thanks. This should sort all the composites / multilayered elements (that is if I can get it to work...). I would still need to figure out a way to deal with all single skin components connecting with each other. But it is a start - many thanks for the hint!