During the serialization of TriangleSelector and also during reading serialized painting data from 3MF, we cache all used states in the painted triangle mesh.
Based on this information, we can quickly determine which extruders are used and which don't.
Previous algorithms assume that they can get an invalid Voronoi diagram. Because of that, during the multi-material segmentation, a copy of the Voronoi diagram was created, and there were several attempts to fix missing vertices and edges. But as it shows, this wasn't a good enough approach and sometimes led to several issues like bleeding layers.
After generalization, our approach for detection and repairs of invalid Voronoi diagrams from Arachne, we could assume that multi-material segmentation gets non-invalid Voronoi diagrams.
With this assumption, we reimplement multi-materials segmentation to work directly on the Voronoi diagram. That should make multi-material segmentation more stable.
So, this should fix several issues like bleeding layers. Also, memory consumption should decrease by a lot. Also, there should be some speedup of multi-materials segmentation.
* Code refactoring: get_connector_mesh() and apply_cut_connectors() moved from ModelObject to CutGizmo.
* Allow to change values of space and bulges for snaps
* cut_id for cut object is updated from attributes before all manipulations with perform a cut
* synchronization of the cut_id for whole model is execute now after all manipulations, related to the cut
Reworked handling of approximate / snug bounding boxes
at Model / ModelObject / PrintObject
Further optimized, so that the bounding boxes are not recalculated
unnecesarilly.
at Model / ModelObject / PrintObject
Fixes#9467#9519#9646
Also fixed variable layer height editing for case such as mentioned
in the github issues above.
Also likely fixed some of the sinking objects issues.
* Disable "Add/Edit connectors" button then cut to parts
* Fixed flip_cut_plane()
* Fixed cut by Line, when draw line over the cut plane
* Fixed apply of the transformations, when cut to parts
Cut improvements:
* Process "Ctrl"
* Change color of the cut plane when it's hovered
* Don't apply Cut information for result object(s), if cut doesn't have any connector or is cut to parts
(partially related to #9633 - Add option to Invalidate Cut Info at the time of cutting)
+ Rework CutDialog
+ Added "Cut to" section (Idea from #9564[Cut: Keep results as parts of current idea] was used, but there is other implementation)
+ Fix for #9657 - Inconvenient gizma, blocks the view of the cut of small parts
+ Add functionality "Flip cut plane" = Fix for #9632 - Adding connectors to either split cut part
+ ImGuiWrapper: added tooltip for button
Organic supports are not compatible.
Fixes#9528 and similar.
Moved the object max Z against build volume Z to Print::validate().
Updated layer_height_profile_from_ranges() to compress the resulting
ranges.