Code: Select all
OS: Ubuntu 18.04.5 LTS (XFCE/xubuntu)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24291 (Git) AppImage
Build type: Release
Branch: (HEAD detached at 0.19.2)
Hash: 7b5e18a0759de778b74d3a5c17eba9cb815035ac
Python version: 3.8.8
Qt version: 5.12.9
Coin version: 4.0.0
OCC version: 7.4.0
Locale: Spanish/Spain (es_ES)
I'm experimenting some severe Techdraw performance issues. I work with medium size assemblies (Assembly3, FreeCad file weights around 5 MBs, STEP file of the assembly weights around 25 MBs), from parts that I either get from manufacturers as STEP files or design myself. I understand that sometimes the Step files from other programs are not 100% good, but they seem to work no problem with other CAD programs such as Solid Works. I am not in position to share the problematic assemblies right now (as they contain information that should be be revealed outside of my workplace), but I will see if I can make a test file that shows the problem.
Right now, my issues are as follow:
- Creating the first projected view takes a couple of minutes. Cursor changes to show that the program is working.
- Creating a section preview takes around 30s. This happens every time any parameter on the section view is changed. Cursor changes to show that the program is working, but returns to normal halfway through the process, even if the process is still ongoing and the UI is unresponsive. There is no way to stop preview creation as you change multiple parameters such as view direction, section plane position, etc, meaning that each change to these takes over half a minute.
- Confirming that preview and turning it into a section view takes the same amount of time as making a preview did.
- Exporting the page (with two projected views and one section view) to SVG for final touchup work in Inkscape takes 10+ minutes. At no point of the export is any visual indicator of the progress visible, not even a cursor change, and the whole UI is unresponsive
- After saving the file, opening it again takes 10+ minutes again
- Task manager only shows one core being 100% used, meaning that UI, geometry kernel and file output are done in a single thread. Memory usage is around reached 900 MBs or so.
- Section view previews are not catched, meaning that when you accept and build the final section view, it gets redrawn from scratch, despite being identical to the final preview
- Export to SVG seems to require re-projecting all geometry, and re-creating all derived views, instead of turning what is visible in TechDraw into an output file
- Opening the file again requires recomputing all projections
- Add a toggle to disable live preview so you can change the section parameters without triggering a redraw
- Cache section preview of a section view so confirming a section preview and showing the final section view takes basically no extra time.
- Cache Techdraw projections so they don't have to be rebuilt from scratch on file reload.
- Split the UI into it's own separate thread, so it remains responsive at all times (unrelated to TechDraw)
- Split projection into TechDraw into separate thread. Leave a placeholder while it's working
- Split export into a separate thread
- Delegate re-projecting them to separate threads that work asynchronously when something from the model changes