Importing Revit metadata through Direct Link and accessing it at runtime

Hello everyone,

I am trying to import a model from Revit 2021 into UE 4.27 through Datasmith Direct Link and access the associated metadata at runtime. The model loads smoothly but the metadata, which is associated to each model object’s Static Mesh Actor as “Datasmith User Data” when importing a .udatasmith file, is missing from the Asset User Data tab. I only get the Component Tags.

I am using a Datasmith Runtime Actor Blueprint Class in which I have set the Runtime Import Options node to import metadata.

I also checked to see if it works for Archicad 25, and it does. Compare the screenshots of the Asset User Data of a wall from Revit 2021 and one from Archicad 25. Am I doing something wrong or does the Datasmith plugin for Revit simply not support bringing in metadata through Direct Link? If so, does anyone know if this feature will be added in the future?

A post in the roadmap for UE4.27 states that access to metadata would be added to Datasmith Runtime in this version, but it does not mention for which authoring software.

Lastly, are there any newer versions where this might work, i.e. Revit 2022 and UE5 Early Access?

Any help with this would be greatly appreciated!

Regards,

Fretzkes

Revit_DirectLink

Hi Fretzkes !

In the case of families like railings, curtain walls, etc… we use mesh components instead of mesh actors for performance and UX reasons (easier to navigate through the scene hierarchy).

To find the metadata, you just need to check the mesh component’s Asset User Data instead of it’s parent Actor.

You can find this tidbit of info in the page Using Datasmith with Revit | Unreal Engine 4.27 Documentation

Note that Datasmith Runtime import and Datasmith Editor import should yield the same results re: metadata.

We will release new plugins alongside the UE5.0 preview builds and 5.0 release, so keep an eye out for this ! :slight_smile:

We also already support Revit/3dsMax and Navisworks 2022 with the current 4.27 builds of the plugin (as well as the softwares on Datasmith Exporter Plugins - Unreal Engine ).

Hope this helped !
Cheers,
Antoine Guillo

Hi Antoine,

Thank you very much for your reply!

I still think that something must be going wrong with my runtime import because I am seeing very different results than what you described.

When I look at a Datasmith Editor import both the parent mesh actor and the child mesh component seem to expose the full metadata. Also, when I use Blueprints at runtime to query the Asset User Data from an editor import, I get the same results, whether I query the actor or the component.

However, when I do a Datasmith Runtime Import, I consistently get no data at all under the Asset User Data of both the parent mesh actor and its child mesh component. It is always empty, just like in the screenshot from my initial post.

I have tested this with a bunch of different Revit files, from different regional templates, and the results are always the same. The metadata shows up in the editor import, while it is completely missing from all levels of the object hierarchy at runtime.

Maybe I am still misunderstanding something fundamental but to my current knowledge this is really what’s going on here. If you need any more information or some of my files to figure this out, I will gladly send them to you.

Best regards,

Fretzkes

I just checked with our dev team and it does look like there’s an issue with metadata not being sent by the Revit plugin through Direct Link as expected…

We’re looking into it, thanks for raising the issue ! :slight_smile:

Cheers,
Antoine Guillo

That’s too bad, guess I’ll have to find a workaround then. :confused:
I’ll see what I can do with the just the component tags and display names.

While I have you here, can I bother you with one more question?

Is there a way to register whenever Direct Link updates the scene? I am building a kind of live model viewer and when a new object gets spawned or an existing one is edited, I want that to trigger an event to let the viewer know it needs to do something with that object. Ideally, I could just have this event trigger everytime the Revit plugin updates the Direct Link (when the Update button in the plugin is clicked).