How to reduce the size of memory used by HoopsExchange when importing models

I only know that m_eTessellationLevelOfDetail set to kA3DTessLODExtraLow and m_eReadGeomTessMode set to kA3DReadTessOnly can reduce the memory consumption when importing models, but the memory consumption is still higher than other conversion products when importing 1GB models, other products occupy 4GB, HoopsExchange occupies 8GB.

I don’t know which part of the parameters are not set correctly or if the memory usage is much higher due to the fact that HoopsExchange imports more information about the model
The conversion configuration is as follows:

1 Like

Hey Rui, I have also made this a support ticket as well. I’ll update here as well once that’s answered.

Here’s the answer provided by support:

Importing a CAD model with or without topology or tessellation mostly depends on your needs. A 1 GB file will consume more than 1 GB of memory once imported as PRC in memory.

I understand that some competitors can import the same model using less memory. The result depends on the data structure in memory and the overall memory management. To explain a bit more, there are two steps during the import of a CAD model :

  1. Parsing the data to identify the geometrical entities

  2. Reading the data to create the PRC structure in memory

Both consume memory, and the parsing phase will free the memory used before the reading phase begins. According to the memory management in HOOPS Exchange, the memory could be freed or marked as free. The second behavior will let HOOPS Exchange allocate memory more quickly for later use.

In conclusion, the amount of memory used may not represent the actual size the CAD model uses in memory, but all the memory will be properly reused later or released when the HOOPS Exchange dll is released.

Is there any other way I can reduce the memory usage when importing models?

1 Like

This is probably another question for support because it’s a specific use case. @dave.calkins and @jamestruax, do you have any experience with this?

I guess this is not easy thing but maybe it is a chance to confirm that there is no other solution at the moment, if possible, please.

Many models are created from objects or smaller models which do not have any connection to each other, they are independent. Having a possibility to import whole model part by part with possibility of releasing memory for already imported/examined part to reuse it for other parts of the model would be probably useful solution. I understand that current architecture may not allow that but still worth to ask.

In my case NWD model with size around 3GB cannot be read on 64GB RAM machine by HOOPS Exchange (errors starts a few hours after utilising whole RAM + virtual memory, in total 256GB) and I am looking for possible solutions too. Thanks.

Hi, Michal.

It sounds like you’re talking about the Incremental Loading capability (cf. Simple Load and Export — HOOPS Exchange Documentation). This is only supported for some formats and doesn’t currently include Navisworks. There are some very preliminary discussions within engineering on this topic but I can’t speak to the feasibility, complexity (i.e. cost) or benefits of such a project.

Hope this helps.