Commit Graph

420 Commits

Author SHA1 Message Date
ae1f18f7ba Speed-up of painted seams 2021-07-15 09:49:36 +02:00
1a72c78934 Merge branch 'vb_mmu_top_bottom' 2021-07-13 11:08:52 +02:00
e80ef16a5b Added a missing locale switch needed for custom gcode validation when switching tabs 2021-07-12 09:38:32 +02:00
c5304750d9 Support for forward compatibility of configurations, user and system
config bundles, project files (3MFs, AMFs). When loading these files,
the caller may decide whether to substitute some of the configuration
values the current PrusaSlicer version does not understand with
some reasonable default value, and whether to report it. If substitution
is disabled, an exception is being thrown as before this commit.
If substitution is enabled, list of substitutions is returned by the
API to be presented to the user. This allows us to introduce for example
new firmware flavor key in PrusaSlicer 2.4 while letting PrusaSlicer
2.3.2 to fall back to some default and to report it to the user.

When slicing from command line, substutions are performed by default
and reported into the console, however substitutions may be either
disabled or made silent with the new "config-compatibility" command
line option.

Substitute enums and bools only.  Allow booleans to be parsed as
    true: "1", "enabled", "on" case insensitive
    false: "0", "disabled", "off" case insensitive
This will allow us in the future for example to switch the draft_shield
boolean to an enum with the following values: "disabled" / "enabled" / "limited".

Added "enum_bitmask.hpp" - support for type safe sets of options.
See for example PresetBundle::load_configbundle(...
LoadConfigBundleAttributes flags) for an example of intended usage.

WIP: GUI for reporting the list of config substitutions needs to be
implemented by @YuSanka.
2021-06-27 16:57:05 +02:00
69ffe12fd2 Renamed create_face_neighbors_index() to its_face_edge_ids().
Renamed its_create_neighbors_index() / its_create_neighbors_index_par() to its_face_neighbors() / its_face_neighbors_par().
New variant of its_face_edge_ids() to create edge IDs from face neighbors.
Fixed some incorrect use of _NDEBUG, it should be NDEBUG.
PrintObject::slice_support_volumes() returns newly Polygons, which are cheaper than ExPolygons.
Updated SeamPlacer and SupportMaterial to use regions defined as Polygons, not ExPolygons.
TriangleSelector::get_facets_strict() returning a patch with T-joints retriangulated.
New slice_mesh_slabs() - slicing projections of a triangle patch into top / bottom layers of slices, for MMU top / bottom segmentation.
TriangleMeshSlicer - use 64 mutexes instead of one when scattering sliced triangles into layers. This makes a big difference on modern many core desktop computers.
When applying MM segmented regions to input regions, the split regions are now re-merged with 10x higher positive offset epsilon to avoid creating gaps.
When testing for existence of paint-on supports or seam, use a more efficient has_facets() test, which does not deserialize into the expensive TriangleSelector tree structure.
GLIndexedVertexArray newly uses Eigen::AlignedBox<float, 3> for efficiency instead of our double based BoundingBoxf3.
Improved MMU painting refresh speed by optimizing generation of the vertex buffers.
Refactored MMU segmentation - projection of painted surfaces from top / bottom.
	1) Parallelized.
	2) Using the new slice_mesh_slabs() instead of projecting one triangle by the other and merging them with Clipper.
2021-06-20 15:21:12 +02:00
3cb502c954 GCode Viewer -> Fixed used filament for gcode files produced by other slicers 2021-06-15 09:39:33 +02:00
03c6bdfe9a Fixed a memory leak during locales switching on macOS and
removed frequent locales switching during gcode processing
2021-06-05 07:09:23 +02:00
b9538cc2aa Merge remote-tracking branch 'remotes/origin/master' into vb_print_regions 2021-05-27 16:12:53 +02:00
1ae72e2a33 Fixed calculation of used filament for gcode viewer (take data from gcode file) 2021-05-27 12:25:59 +02:00
4809689dcb Merge remote-tracking branch 'remotes/origin/lh_multi_material_segmentation' into vb_print_regions 2021-05-26 15:23:35 +02:00
17d1a61ef4 Fixed debug build 2021-05-24 12:20:29 +02:00
183a702be0 Fixed second batch of locale-dependent calls 2021-05-24 12:20:29 +02:00
1cb432a4ae Fixed first batch of locale-dependent calls 2021-05-24 12:20:29 +02:00
2372f3b029 Fix of #2825 - Add the length of each filament used 2021-05-07 12:48:34 +02:00
2b8b89417f FDM backend refactoring for const correctness, clarity ... 2021-05-06 15:08:57 +02:00
365d7a83cc Refactoring for code clarity: Replaced this->m_xxx with m_xxx
as the m_ prefix already signifies a class local variable.
2021-05-06 14:43:36 +02:00
f28ac7839d FDM backend refactoring: Return PrintRegion by reference, not by pointer.
Added PrintRegion hashing.
2021-05-05 18:13:58 +02:00
ef85b428ab WIP: Moving ownership of PrintRegions to PrintObjects. 2021-05-05 16:21:55 +02:00
f073fbf2f9 Implemented generic mechanism for executing tasks on UI thread synchronously
from the background slicing thread, that supports cancellation.
The generic mechanism is used for generating thumbnails into G-code and
Fixes Fix deadlock when canceling the slicing while gcode is creating thumbnails #6476
Thanks @supermerill for pointing out the issue.
2021-05-04 16:07:32 +02:00
1552641824 Follow-up of 15c32d636d -> Small refactoring 2021-05-04 13:31:07 +02:00
0b01436982 Seams detection for gcode saved with other slicers 2021-05-04 12:45:51 +02:00
868c1ecd41 Fixed conflicts after merge with master 2021-04-30 14:54:58 +02:00
2e4b7c2c07 Improved MM priming lines placement on circular beds (#6459) 2021-04-30 13:11:33 +02:00
849d7f2460 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_custom_gcode_detection 2021-04-29 11:07:47 +02:00
3fe61c2887 Tech ENABLE_SEAMS_VISUALIZATION -> Added threshold to place seams 2021-04-27 15:12:45 +02:00
9516470b2f Tech ENABLE_SEAMS_VISUALIZATION -> Fixed build on Mac 2021-04-27 11:11:21 +02:00
343eb6006b Tech ENABLE_SEAMS_VISUALIZATION -> 1st installment of seams visualization in preview 2021-04-27 09:45:15 +02:00
9c606e7948 Refactoring of StaticPrintConfig & derived classes:
1) Using boost::preprocessor to reduce code duplicities when defining
   new configuration values.
2) Implemented static hash() and operator== on StaticPrintConfig derived
   classes to support hash tables of instances thereof.
2021-04-26 18:37:10 +02:00
fbdf0d6ab0 Wipe tower priming lines are placed at origin with custom bed shapes
Custom shapes were previously detected as circular and the lines were placed off the bed
2021-04-26 09:21:18 +02:00
f9ddb38f04 Extrusions in custom start g-code forced to be at first layer height level 2021-04-22 15:15:19 +02:00
3ae74a5ca8 1) New methods PrintObject::num_regions() and ::has_region() to make
the code more readable and to highlight where PrintObject::region_volumes
   are actually set and consumed.
2) Replaced Slic3r::clamp() with std::clamp(). They differ in the order
   of their parameters, thus hopefully no new bugs were introduced.
3) Some refactoring of MultiMaterialSegmentation for efficiency.
2021-04-22 11:41:26 +02:00
25df2fb8f2 Do not convert custom gcode extrusion to travel 2021-04-09 12:52:11 +02:00
ecf048ad84 An attempt to fix time estimates for 'Marlin (legacy)' flavor
Old M204 S sets both printing and travel accelerations, which must be
accounted for now when the latter was separated.
2021-04-06 15:45:49 +02:00
6deb8338f3 GCodeProcessor added travel acceleration 2021-04-06 15:45:49 +02:00
311a5a3e01 GCodeProcessor use new flavor gcfMarlinFirmware 2021-04-06 15:45:49 +02:00
76de47ffca Renamed the gcfMarlin enum value to gcfMarlinLegacy so we never mistake it for the new one
There should be no functional change.
2021-04-06 15:45:49 +02:00
25dd2452fa Duplicated Marlin firmware flavor to 'Marlin (legacy)' and 'Marlin Firmware'
The two flavors should be identical after this commit, except that GCodeProcessor.cpp was not updated. This shall be done in a later step.
2021-04-06 15:45:49 +02:00
f0cd00bef7 Wipe tower: correctly detect first layer even with 'No sparse layers' option enabled 2021-04-06 15:37:39 +02:00
0d34e74a52 Wipe tower: reorder extruders so first layer starts with soluble if possible
That way it will not be wiped on first layer
2021-04-06 15:37:39 +02:00
dce95fdeae Wipe tower: respect first_layer_speed 2021-04-06 15:37:39 +02:00
5717ba2e6c Wipe tower: set travel feedrate for a move from custom toolchange position to the wipe tower (#5483) 2021-04-05 23:39:27 +02:00
641040d3f7 Wipe tower: fix wipe moves after recent changes 2021-04-05 23:39:27 +02:00
5beca060ed Wipe tower: refactoring of brim and solid infill on first layer 2021-04-05 23:39:27 +02:00
6719d91430 Wipe tower: don't use soluble filament for perimeters, sparse infill or first layer 2021-04-05 23:39:27 +02:00
cda523f8d9 Wipe tower: slightly changed finish_layer logic so it can be called after any toolchange 2021-04-05 23:39:27 +02:00
607c3efae8 Wipe tower: remove unfinished square wipe tower option 2021-04-05 23:39:27 +02:00
99d8db0255 Wipe tower: don't do sparse infill when there is a soluble filament above it 2021-04-05 23:39:27 +02:00
82c7e8e929 Follow-up of 3fce8398f0 - Fixed build warnings 2021-03-31 08:54:58 +02:00
c45ed01e75 Follow-up of 6ffa51da58 - Modified export of final M73 lines for remaining time to next printer stop accordingly to firmware specifications 2021-03-30 09:59:10 +02:00
24b45c3139 Extract bed size from gcode produced with Simplify3d 2021-03-25 09:23:14 +01:00