Closed siem4 closed 1 month ago
Hi, this looks like the 3rd-party web-ifc library hitting the limits of how much geometry it can convert.
We plan to deprecate the direct IFC->XKT conversion mode, which uses the web-ifc library.
Which version of xeokit-convert are you using? Possibly you're using an old version - please try the latest version and see if it works for this model.
The process we recommend for IFC->XKT conversion is described here: https://xeokit.github.io/xeokit-model-conversion-tests/index.html
That's a much more performant method, which requires an additional ifc2gltf CLI tool - please find all the details at that link.
I'm currently running version v1.1.22
I will look into the different conversion technique, my understanding is that using the Creeox AG converter is not permitted to use without a proper license for company's. Therefore, I was hoping to be using the ifc -> xkt converter
There's also this option for conversion, which does not use ifc2gltf: https://www.notion.so/xeokit/Converting-IFC-Models-to-XKT-using-Open-Source-Tools-A-Simpler-Pipeline-02d45ba457eb4f808f63bcacb71a4fb3
We recommend the IFC->ifc2gltf->glTF->convert2xkt->XKT pipeline for enterprises, it's much better.
Thank you for the response, I understand that it might be better for enterprise, what is the big reason that for enterprise use it might be better to use the licensed version?
ifc2gltf performs much better with large IFC files because it's able to split them into a set of glTF files, and convert2xkt is able to convert those into a set of split XKT files. This means that converters and viewer are not overwhelmed by memory requirements of processing large IFC files.
Also, ifc2gltf converts the IFC to higher-quality geometry. We maintain that tool, but have no control over the web-ifc library.
I have an ifc file of 385 mB ±. If I try to convert it with the following command:
node --max-old-space-size=20000 convert2xkt.js -s"file.ifc" -o"geometry.xkt" -l
I get the following error:
The hi comments are logs to test where the error occurs😨, please don't get mad… If there is not enough ram available, it will just log killed instead of the stack trace. The 1 is a counter in the deflate function in deflateData.
The system that was used is Rocky Linux with 20Gb ram, the 20Gb limit is never reached.
The error comes from deflateData in writeXKTModelToArrayBuffer. Possible causes:
Please let me know if there is any extra info that is required.