Autodesk / revit-ifc

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

Exporting with properties or various settings are extremely slow #492

Open Moult opened 2 years ago

Moult commented 2 years ago

Download the RAC advanced sample project here for Revit 2021: https://knowledge.autodesk.com/support/revit/getting-started/caas/CloudHelp/cloudhelp/2021/ENU/Revit-GetStarted/files/GUID-61EF2F22-3A1F-4317-B925-1E85F138BE88-htm.html

Export setting Time
IFC4 DTV, export only shown in view (default 3D view), psets disabled, base quantities enabled 45s
IFC4 DTV, export only shown in view (default 3D view), Revit psets disabled, IFC psets enabled, quantities enabled 1m10s
Default IFC4 DTV preset 1m30s
Default IFC2X3 CV2.0 preset (just for reference, IFC2X3 should be discouraged) 1m30s
IFC4 DTV, export only shown in view (default 3D view), all psets enabled, quantities enabled 1m35s

A few notes:

What's going on? Why do properties double the export time? This goes against my intuition of geometry being the bottleneck - properties seem to take ages.

I also tested user defined properties, I suspect the times are directly proportional to the number of properties.

AngelVelezSosa commented 2 years ago

Geometry is the bottleneck only if there are tessellation operations in affect that generate large numbers of triangles for a number of reasons. For DTV specifically, there should never be any tessellation, so geometry conversion is relatively fast. There is some translation, but that's not a big deal.

Properties, on the other hand, have a Revit API that can use some optimization (and is an active area of interest). So the IFC side of things is fairly speedy - it isn't hard to convert a Revit parameter into an IFC one - but getting the list of parameters can be relatively expensive.

There is garbage collection and such that could have wall clock profiling random especially for a relatively small sample file like yours.

As far as discouraging IFC2x3 ... good luck :) 99% of the files I get via problem reports are IFC2x3. But that's a separate discussion.

Moult commented 2 years ago

Right. So is there a fix or anything I can do apart from case by case assessing each new consultant file for the properties we're interested in and providing a user defined property mapping file?

AngelVelezSosa commented 2 years ago

We are working on parameter export performance. In the meantime, yes, you can decide what are the properties you want. You can do user defined property mapping file, or you can also create schedules that you would export to IFC (for each schedule, you can determine if it is exported to IFC or not). The latter takes a little more work but you can see exactly what data would end up in your IFC file.

vinnividivicci commented 10 months ago

Just to add to this, I have a test model with 21000 duct elements and another with the same layout but with Fabparts. The fabparts model has more objects due to the nature of Fabparts.

If I export the first model (native ducts) to Navisworks NWC (with element properties) it takes 2min6s. If I export to IFC4 Reference View (with Revit properties) it takes 34m22s. That's over 17 times longer for an IFC export vs NWC.

If I export the second model (Fabparts) to Navisworks NWC (with element properties) it takes 3min5s (50% more than the first model). If I export to IFC4 Reference View (with Revit properties) it takes over 1h34m. That's over 31 times longer for an IFC export vs NWC.

Exporting to IFC4 Design Transfer View (with or without "Keep tessellated geometry as Triangulation") seems to make no difference in export time.

But when I turn off Revit parameters export, the time for the DTV export of "native" ducts, dropped to 3m51s. That's only about 12% of the time it took for the same export with parameters!

I realize that NWC != IFC. However my point is that there must be some way to dramatically improve IFC export speed from Revit even when parameters are exported, Navisworks exporter is somehow doing it.

This was all done in Revit 2024.1 with IFC Exporter 24.2.0.49.

AngelVelezSosa commented 10 months ago

@vinnividivicci - would you share that file with us? It does seem odd to me that it is spending so much time exporting parameters. There could be a real gem in there for significantly improving export performance with parameters. You can send to me at angel.velez@autodesk.com.

vinnividivicci commented 10 months ago

@AngelVelezSosa I sent you the files via Google Drive. Please let me know if you didn't get them.

AngelVelezSosa commented 10 months ago

Downloading now, thanks!