- virtual bed shows even when dragging which was already outside
- when loading old-arranged project with more than max number of beds, a virtual bed would still be offered
- loading a project file with multiple beds only showed 2 beds initially
- nonprintable objects are not considered into the bed creation logic
- drag and dropping an object does not change active bed
- shells in preview are now shown correctly when switching between beds
- spacing in x takes into account model size (except during the initial rearrange)
- update volumes outside state after project loading
- highlight of selected bed for default beds
- create new bed when a volume is dragged into it
- limit maximum number of beds
- keep track of which ModelInstances are on which bed
- show list of beds and allow selecting an active one
- move objects from active bed to the first bed when passing Model to Print::apply (and back)
However, it is still not impossible to select an SLA printer when the object has a modifier.
For this case info dialog will be shown.
+ Model: Deleted model_has_multi_part_objects()
SPE-2547
Previously, the default extruder wasn't handled inside multi-material segmentation, but this could confuse users, especially for multi-volume objects.
Because with multi-volume, it could happen that in the place where two volumes were touching, there could be a change in the used extruder.
printrequest reader WIP
Co-authored-by: David Kocik <kocikdav@gmail.com>
transformation matrix loading
Loading filaments from printRequest
Conversion of string to double
Reading PrintRequest when material not installed
empty tree check + allow printrequest for mac
PrintRequest: Set print profile if current doesnt have compatible sla material
followup fix of c24477cd10d92de00874504be434872d49a20ec9
Fix compile error on gcc
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.
Check transformed bounding boxes of loaded objects instead of z_min of bounding boxes.
+ BoundingBox: added function shares_boundary() to detect if bounding boxes shares some boundary.
Fix for #11547 - .3mf files with similar sized components aren't being defined as multi-part objects
Now it's work in same way for all types of cut. After cut we leave just only modifiers which are intersecting with solid parts bounding box.
+ Clean code in perform_cut_with_groove. Deleted non-used anymore code.
+ Extract same code (for perform_cut_by_contour and perform_cut_with_groove) to separate functions
+ Save CutInfo for objects which was cut with Tongue and Groove mode
* Code refactoring: get_connector_mesh() and apply_cut_connectors() moved from ModelObject to CutGizmo.
* Allow to change values of space and bulges for snaps
* Added move possibility during X axis for cut plane
* Added possibility to optimize rendering (recalculate new cut only on stop dragging)
* Next fix for flickering (code refactoring for toggle_model_objects_visibility())
WIP GCode/SmoothPath.cpp,hpp cache for interpolating extrusion path with arches.
Removed Perl test t/geometry.t, replaced with C++ tests.
Refactored ExtrusionEntity and derived classes to hold extrusion attributes in new ExtrusionFlow/ExtrusionAttributes classes.
Reworked path ordering in G-code export to never copy polylines, but to work with a new "flipped" attribute.
Reworked G-code export to interpolate extrusion paths with smooth paths and to extrude those smooth paths.
New parameters: arc_fitting, arc_fitting_tolerance
Renamed GCode class to GCodeGenerator
Moved GCodeWriter.cpp/hpp to GCode/
Moved Wipe from from GCode.cpp,hpp to GCode/Wipe.cpp,hpp
Moved WipeTowerIntegration from GCode.cpp,hpp to GCode/WipeTowerIntegration.cpp,hpp
New variant of douglas_peucker() to simplify range of iterators in place.
Refactored wipe in general and wipe on perimeters / hiding seams.
WIP: Convert estimate_speed_from_extrusion_quality() and its application to smooth paths.
WIP: Cooling buffer to process G2G3, disable arc fitting for filters that cannot process it.
* 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
- When cutting a scaled part, do not apply the transformation twice
- Right click does not trigger part selection when any modifier is used
- When 'flip plane' is clicked, extra render is forced
- The choice to keep object A/B is enabled even when part selection is active
- 'Cut into' radio buttons are disabled when part selection is active
- Added a missing update of connector state
- Amended tooltip