IFC imported to Speckle shows in web viewer, but Revit + Rhino can’t receive (conversion error / no native geometry)

Hi Speckle team,

I’m running into an issue where IFC files imported to Speckle appear correctly in the Speckle web viewer, but I can’t pull/receive the same model into Revit or Rhino. However, sending native models via the connectors works fine, for example Revit to Speckle works normally.

What works:
Revit connector → Send to Speckle works. The model uploads and versions are created normally.
The issue seems to happen specifically when the model originates from an IFC import.

What fails:
IFC → Speckle import: the model appears in the Speckle viewer.
Receive in Revit: fails with an exception.
Receive in Rhino: fails with “did not convert to any native geometry”.

Revit receive error:

No display value found for Speckle.Core.Models.Instances.InstanceProxy
at Speckle.Converters.RevitShared.ToSpeckle.BaseToHostGeometryObjectConverter.Convert(Base target) in /*/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs:line 43

at Speckle.Converters.RevitShared.ToSpeckle.BaseToHostGeometryObjectConverter.Convert(Base target) in /<em>/Converters/Revit/Speckle.Converters.RevitShared/ToHost/Raw/BaseToHostGeometryObjectConverter.cs:line 48
at Speckle.Converters.RevitShared.RevitRootToHostConverter.Convert(Base target) in /</em>/Converters/Revit/Speckle.Converters.RevitShared/RevitRootToHostConverter.cs:line 39
at Speckle.Connectors.Revit.Operations.Receive.RevitHostObjectBuilder.<>c__DisplayClass17_1.<BakeObjects>b__0() in /*/Connectors/Revit/Speckle.Connectors.RevitShared/Operations/Receive/RevitHostObjectBuilder.cs:line 264
at Speckle.Connectors.Common.Operations.ReceiveConversionHandler.TryConvert(Action conversion) in /_/Sdk/Speckle.Connectors.Common/Operations/ReceiveConversionHandler.cs:line 14

Rhino receive error:

Object did not convert to any native geometry
at Speckle.Connectors.Rhino.Operations.Receive.RhinoHostObjectBuilder.<>c__DisplayClass12_1.<Build>b__5() in /<em>/Connectors/Rhino/Speckle.Connectors.RhinoShared/Operations/Receive/RhinoHostObjectBuilder.cs:line 192
at Speckle.Connectors.Common.Operations.ReceiveConversionHandler.TryConvert(Action conversion) in /</em>/Sdk/Speckle.Connectors.Common/Operations/ReceiveConversionHandler.cs:line 14

My hypothesis:
It looks like the IFC import results in objects that render in the viewer but do not have a host-convertible geometry representation for Revit/Rhino receive.
Is this related to InstanceProxy objects lacking a display value such as mesh, brep, or curve on receive?

A few questions:

  1. Is this a known issue with IFC-imported streams when receiving into Revit or Rhino?
  2. Are there any recommended settings or import workflows to ensure the imported IFC produces geometry that the Revit/Rhino connectors can convert?

Thanks in advance.

Hi @honorgorge

Please could you let me know what versions of the Speckle Connectors you’re using to receive with.

This maybe expected behaviour if you’re running quite old versions that aren’t compatible with newer instance proxy behaviour… If you’re seeing the same behaviour in the latest connector version, please let me know as that sounds like there could be a bug somewhere.

1 Like

Hi Jared,

Thanks, I somehow always miss that step :sweat_smile:
After updating the connector, I was able to import successfully.

This is actually my first time testing this workflow end-to-end. I was expecting that IFC classes would be mapped more directly to Revit categories, at least for core structural elements like columns, walls, and slabs.

Is that something that’s currently supported, or is the IFC import more geometry-focused at this stage?

Thanks again!


1 Like

Hey @honorgorge

I’m glad you were able to import successfully!

Mapping IFC classes directly to Revit categories is currently not supported but we have other pathways to do this - if receiving in Rhino, you have the ability to assign the Revit categories there. These will still be loaded in Revit as direct shapes but will have the assigned category. Understandably this is an extra step which isn’t ideal but would present as a solution for the time being.

If the mapping of categories is something you’d like to explore, check it out her: Revit Categorization

Cheers,
Björn

2 Likes

Thanks @bjoern for the tip on Revit Categorization in Rhino.

While that works for geometry display, my main goal is keeping the IFC properties intact once they reach Revit.

If model is pushed from revit, when I receive it in Rhino, I see the type and instance properties. But when I “Send” from Rhino to Revit (even with the Category assigned), those properties don’t map to Revit parameters back, they just stay as generic.

If speckle objects is coming from IFC: Attributes are there but the actual IFC Property Sets are nowhere to be found in Rhino:

Is there a way to ensure these properties are mapped to actual Revit Parameters automatically during the Send/Receive process, or is parameter mapping currently unsupported for now?
I am trying to understand which part of this is a Revit API limitation and which part is a gap that Speckle could potentially bridge.

Cheers,
Onur