This commit adds improved logging for backend plugins in Cura. Now,
each time a plugin is started, an info log is generated with the used
command.
All plugin output will also be logged to a separate file for easier
debugging. Additionally, a cleanup operation has been added to remove
existing plugin logs before generating a new one, to prevent the file
size from getting too large.
Contributes to CURA-11064
This commit introduces logging to the backend plugin process in the Cura application. The output from the plugin process is now redirected to a log file, which is created in the application's data storage directory. This can be useful for debugging and troubleshooting purposes by providing more transparency about what's happening in the plugin process. A new dependency 'os' has been added to the 'BackendPlugin.py'. Also, the 'Resources' module has been imported from 'UM'. The changes mainly affect the way the 'subproccess.Popen' function is used - its 'stdout' and 'stderr' parameters were adjusted accordingly.
Contributes to CURA-11064
Modified BackendPlugin.py and StartSliceJob.py to allow plugins to decide when they should be used. The 'usePlugin'
method was added to enable a plugin to return a boolean indicating if it should be used or not, e.q.: start up and
connect to the services.
Contributes to CURA-11031
ConvexHullDecorator is setup at node creation, so I can't see a way that this part of code is called. Moreover, it would add a decorator for a layer plan node, which actually leads to a crash.
CURA-10004
Issue before was the following: when placing objects within a grid cell there is a margin around the object. This margin comes from both the integer rounding of the cell and the defined min distance between objects. When trying to place object near the buildplate border we marked any cell that is not fully within the buildplate area as an invalid cell to place objects in. This was however too strict; there is the aforementioned margin around the object, and if only this margin would be outside the buildplate it is perfectly fine to place object in that cell.
CURA-7951
So instead of always falling back to generic brand and generic color,
we first try to fall back to generic color with the same brand for qualities
CURA-10953
Issue before was the following: when placing objects within a grid cell there is a margin around the object. This margin comes from both the integer rounding of the cell and the defined min distance between objects. When trying to place object near the buildplate border we marked any cell that is not fully within the buildplate area as an invalid cell to place objects in. This was however too strict; there is the aforementioned margin around the object, and if only this margin would be outside the buildplate it is perfectly fine to place object in that cell.
CURA-7951
Refactor object reload to better handling of 3mf files
Make a single file read for all objects from that file, and then
replace the objects in scene to the new ones, matching by name.
This is also required for an Uranium update to handle the automatic
file reload when a file change is detected.
3mf Files can have multiple objects in them. When that is the case,
and the file is updated, all objects from that file where being
replaced by the first object in the file.
Cura lowers the available build volume height when more than 1 model is loaded. This count should include grouped nodes as one (since they will be slice as one and thus not affect the gantry), and should not include modifier meshes or support meshes (since support-meshes are always printed with the first model anyway).
Fixes https://github.com/Ultimaker/Cura/issues/16566