* Check Unsaved changes (partially related to #5903)
+ Allow create new project when Plater is empty, but some of presets are modified (related to #5903)
+ When creating new project allow Keep or Discard modification from previous project
+ Added check of changes:
* before any load project (including DnD and "Load From Recent Projects")
* before preset updater
* when configuration is changing from the ConfigWizard
+ Dialog caption is added for each check
+ Create/Destroy ConfigWizard every time when it's called
* Check Unsaved changes: Next Improvements
+ For dialog "Save project changes" added a reason of saving and name of the current project (or "Untitled")
+ UnsavedChangesDialog: Headers are extended to better explain the reason
+ Preferences: Fixed tooltiops for "Always ask for unsaved changes when..."
+ Suppress "Remember my choice" checkbox for actions which are not frequently used
* Fixed behavior of the application when try to save changed project but "Cancel" button is selected in "Save file as..." dialog
* Check unsaved changes: Improvements for Config Wizard - Check all cases when presets should be updated
+ Fixed info line for Materials pages. Text of the info relates to the printer technology now
* Improved suggested name for a project when Application is closing
* Fixed Linux/OSX build warnings
Zero support base spacing is newly allowed, switching from
the "support base" infill pattern to rectilinar infill pattern.
Why someone would want to use a solid infill for support base eludes me,
but it is simpler to support it instead of working out some rules on
minimum support base density.
Fixes Support patern spacing set to zero causing crash #6989
+ Show 2 groups of errors: "Auto-repared" and "Remaning".
+ Use different icons for volumes with/without remaining errors
+ Fixed update of the ObjectList warnings icons after switch the color mode of a PrusaSlicer
+ Some code refactoring: Use same code for tooltips for "exclamation"-icon from an ObjectList and from a Sidebar->ObjectInfo
so that a mesh with incorrectly oriented faces will not be considered
a manifold.
Added assert for 3D convex hulls constructed by QHull. They shall be
manifold (however sometimes they are not).
TriangleMesh newly only holds indexed_triangle_set and
TriangleMeshStats. TriangleMeshStats contains an excerpt of stl_stats.
TriangleMeshStats are updated when initializing with indexed_triangle_set.
Admesh triangle mesh fixing is newly only used when loading an STL.
AMF / 3MF / OBJ file formats are already indexed triangle sets, thus
they are no more converted to admesh stl_file format, nor fixed
through admesh repair machinery. When importing AMF / 3MF / OBJ files,
volume is calculated and if negative, all faces are flipped. Also
a bounding box and number of open edges is calculated.
Implemented its_number_of_patches(), its_num_open_edges()
Optimized its_split(), its_is_splittable() using a visitor pattern.
Reworked QHull integration into TriangleMesh:
1) Face normals were not right.
2) Indexed triangle set is newly emitted instead of duplicating
vertices for each face.
Fixed cut_mesh(): Orient the triangulated faces correctly.
while the layer height profile vector may not contain all print z
values, the only real case with two eqiuvalent layer height profiles is
when one was created as a copy of another, so the vectors should in fact be equal.
stl_stats are newly only accessed by TriangleMesh::stats(),
most of the direct access to TriangleMesh::stl is gone with the exception
of parsing input files (3MF, AMF, obj).
Sometimes Clipper produces a polyline with more than 2 points when
clipping a line with a polygon or a set of polygons. We hope the intermediate
points are collinear with the line, so we may just ignore them.
Exporting G-code on a worker thread did not work correctly as the worker
threads were using user's locale, not "C" locale.
The "C" locale is newly enforced to TBB worker threads by
name_tbb_thread_pool_threads_set_locale()
- When a modifier was below the bed and all the object parts above, it would clip
the modifier but not triangulate the cut.
- When an object part was below, it would triangulate all modifiers with
opaque orange color.
Both should now be fixed.
StatusBar class calls are commented out and replaced with notifications.
SlicicingProgress notification shows progress of slicing, ProgressIndicator notification handles other progress information, like arrange objects etc.
Steps to reproduce of a bug:
1. Add object
2. Click the Cog icon with the left mouse button
3. DoubleClick on name of object > An Editor Control appears that cannot be deleted any way
WIP to G-code export parallelization through pipelining:
Decoupled CoolingBuffer from GCode / GCodeWriter, ready to be
pipelined on a different thread.
Delete () function did not account for InfoItems that were added before VolumeItems
As a result, There was possibility when deletion of penult VolumeItem wasn't invoke deletion of the last VolumeItem
AddInfoChild() was not respect to existed SettingsItem
SettingsItem have to be on a first place always.
Steps to repro:
1. Create some object with several parts.
2. Increase instances count.
3. Select some volume in ObjectList => all related volumes for each instance are selected in 3DScene (CORRECT)
4. Select last instance in ObjectList => all volumes (except one) of selected instance are selected in 3DScene (UNCORRECT).
ALL volumes of selected instance have to be selected in 3DScene
Fix: To avoid lost of some volumes in selection
check non-selected volumes only if 3DScene-selection mode wasn't changed
or there is no single selection in ObjectList
WIP to G-code export parallelization through pipelining:
GCodeProcessor is called during the G-code export,
the G-code is no more reopened and re-read, but it is pipelined
from the G-code generator.
GCodeViewer no more parses G-code just to extract line end positions.
Removed start_mapping_gcode_window(), void stop_mapping_gcode_window(),
they are no more needed.
The old version of GCC and Clang support only integers to be passed to std::to_chars and std::from_chars. macOS older version of Clang doesn't support std::from_chars at all. So for Linux and macOS, it was replaced std::from_chars with strtod and temporarily was replace std::to_chars with snprintf.
This was broken between 2.2.0 and 2.3.0. The 'entering' snapshot
should be taken before the gizmo opens, not after. Otherwise it is
in fact the same as the next snapshot.
This is a regression to a late PrusaSlicer 2.4.0-alpha0 change
8dfc0422a8
Faster and hopefully more reliable projection of paint-on support
blockers and enforcers on a sliced mesh.
Previous d89f01c717 did not fix it.
This is a regression to a late PrusaSlicer 2.4.0-alpha0 change
8dfc0422a8
Faster and hopefully more reliable projection of paint-on support
blockers and enforcers on a sliced mesh.
../src/libslic3r/QuadricEdgeCollapse.cpp:628:21: warning: comparison of integer expressions of different signedness: 'const int' and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
../src/libslic3r/QuadricEdgeCollapse.cpp:631:21: warning: comparison of integer expressions of different signedness: 'const int' and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
../src/libslic3r/QuadricEdgeCollapse.cpp:638:48: warning: comparison of integer expressions of different signedness: 'const int' and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
../src/libslic3r/QuadricEdgeCollapse.cpp:643:25: warning: comparison of integer expressions of different signedness: 'const int' and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
../src/libslic3r/QuadricEdgeCollapse.cpp:647:25: warning: comparison of integer expressions of different signedness: 'const int' and 'uint32_t' {aka 'unsigned int'} [-Wsign-compare]
1) Activate installed filament or SLA material profile after update_compatible(),
so that the compatiblity and visibility flags of presets are updated.
2) Only activate the first newly installed filament / SLA material profile
if the active printer did not change. This also means that if no filament
profile was active before Wizard was open or it became incompatible with
the newly installed Printer profile, the default filament profile assigned
to the activated Printer is activated preferably, which may or may not
be one of the newly installed filament profiles.
object layer over raft interface:
"first_layer_speed_over_raft", "first_layer_acceleration_over_raft".
Fixes I have a question about the speed of the first layer after the raft. #6623
Fixes Layer After Raft Is Not Considered First Layer! #6166
1) Changed the name of the variable "brim_offset" to "brim_separation"
for clarity.
2) Added legacy conversion after loading an old 3MF that does not define
then new "brim_separation" variable: The "brim_separation" is being
filled in with the "elefant_foot_compensation" value to produce
equal brim separation to the old PrusaSlicer that saved that 3MF file.
reset timestamp to 1. This led to a bug where e.g. deleting painted facets
through the respective item in object list followed by possible other actions
and undo restored the painted facets from the time when the project was loaded.
I'm not sure if there was any other situation where this problem manifested.
The triangle-ray intersection function used a hard coded epsilon,
which did not work for triangle meshes, that were either too small
or too large. Newly the epsilon may be provided to the AABBTreeIndirect
search functions externally and IndexedMesh calculates a suitable
epsilon on demand from an average triangle mesh edge length.