It turns out that we have another bug in Uranium: Transformations from 3MF files are not applied to the platform mesh. This makes sense because UM.Scene.Platform takes the mesh data (without transformations) from the node that it read and squashes that into the SceneNode for the platform. This SceneNode already has a transformation for the platform offset. The 3MF node also has a transformation from the 3MF's convention to have the origin in the front left. The 3MF reader then squishes the transformation from the node into that.
To fix this we'd need to either:
* separate the transformation of the 3MF file from the transformation from the 3MF convention to have the origin in the front left, so that we can pick and choose, or
* remove the transformation from the 3MF convention and apply it only on loading normal printed meshes, and then modify all of the 3MF platform files.
Both require significant effort. So instead I applied the transformation directly to the vertex data.
To do that I imported the file into Blender using my own Blender plug-in, exported to STL and imported that STL again to apply the transformations, and then exported the file from Blender again.
In Blender I also combined a lot of flat faces together, which reduced the file type losslessly.
Contributes to issue CURA-7534.
The position argument metadata always be there. However if it's not (because the file is old, or manually modified, or a version upgrade worked incorrectly, or whatever) then we shouldn't crash. We just don't know how to order it correctly then. This tries to repair it as best it can.
For instance if the file name is too long for this file system, if the computer is running out of disk space or if there is a general failure to write here.
Fixes Sentry issue CURA-YQ.
* Don't pre-load engine before other plug-ins
This was a fix for the post-processing plug-in that's no longer required.
It was also only applied when running from source, so obviously it's not required or we'd have seen it in the builds.
* Run automated tests in parallel
Done during Turbo Testing and Tooling.
* Pass number of processors via ctest command itself
More reliable apparently because it's a CMake variable that doesn't get cached. It shouldn't get cached or set in the CMake script because it's not the same for every computer.
Done during Turbo Testing and Tooling.
This was a fix for the post-processing plug-in that's no longer required.
It was also only applied when running from source, so obviously it's not required or we'd have seen it in the builds.
The stacks would get marked dirty for setting some metadata, but since thats
part of their construction, they aren't really dirty.
Previously, every single stack that was loaded would be marked as dirty, which causes unneeded
saving.
Basically we should never be raising the master Exception class, really.
The enclosing class has error handling in case this returns None already, so this fix is easy.
Contributes to Sentry issue CURA-Y5.
When printers share the same group_id, they are removed, regardless if
they are hidden or not. This was resulting in sometimes removing
multiple printers when removing a printer that was created by a project
file.
This PR fixes that by actually checking whether the printer to be
removed is hidden.
CURA-7522