where the PrintObject bounding box was not invalidated correctly
when the transformation matrices of instances changed.
Also refactored PrintObject::size() for const correctness.
The solution is hackish, but a major refactoring would be needed
to avoid multiple refreshes of the print bed, and to avoid
expensive checks at Plater::on_config_change() every time
a config value changes at a parameter tab.
so that the updated bundled profiles may require this version
(2.2.0-alpha3) or newer.
This change is needed for the clients to be forced to update
the configurations to see the print bed, as the print bed model and
image are no more hard coded, but they are referenced from
the vendor specific Preset Bundle.
so that the ordering code at G-code export may work directly with
pointers to PrintInstances instead of with pair of <PrintObject, copy idx>.
Also the PrintInstance knows its source ModelInstance, which allows
sorting of PrintInstances for sequential printing in the order
they appear in Plater's object list.
psWipeTower now equals to new psToolOrdering indicating that
the ToolOrdering has been calculated (only if non-sequential mode is active).
psBrim now equals to new psExtrusionPaths
psExtrusionPaths shall be the last step before psWipeTower, indicating
that all the printing extrusions are calculated for the G-code preview
slider to edit the custom per print_z color changes, tool changes etc.
Skirt loops not being honored, only producing single loop #2193
First layer skirt only has half the loops when using multiple extruders #469
The skirt generator used to prime all printing extruders at the 1st layer
if enough skirt lines were configured, while at the other layers the skirt
used to be printed with the 1st extruder printing the layer.
There was a bug introduced quite a long time ago, where not enough skirt
lines were extruded if some extruders were not needed to print the 1st layer.
Newly the skirt generator works the same way on all layers:
All the extruders planned to print a layer are primed over the skirt
if enough skirt lines are configured.
Refactoring of GCode export of color changes, extruder switches etc,
so that the "color change" like extruder switches are applied first
at the Wipe Tower / G-code export, so that adding / removing
an extruder switch at the G-code preview slider does not invalidate
slicing.
all argument_type, first_argument_type, and second_argument_type
typedefs are deprecated in C++17.
Remove this warning disable after eigen library adapts to the new C++17 adaptor rules.
1) Don't allocate ExtruderOverrides if not necessary
2) Use boost::container::small_vector<int32, 3) for ExtruderOverrides
(usually less than 4 instances are printed))
If the Elephant foot compensation is applied to the 1st object's layer,
the uncompensated 1st object's slice is newly used for calculation
of bridges, overhans, skirt, brim, raft and supports.
Layer::slices were renamed to Layer::lslices to simplify reading
of the code, to differentiate from LayerRegion::slices.
so that references from user profiles and .3mfs / .amfs
to system profiles are not being lost.
If a system profile has no "renamed_from" profile name assigned,
and the system profile name contains "@", then a profile name
with the "@" is implicitely assumed to be the name, from which this
profile has been renamed.
Fixed crash due to incorrect localization of the percent sign in
"The %1% infill pattern is not supposed to work at 100%% density."
This happens for ES, FR, IT, UK and ZH_TW localizations.
Also added a new CMake target "gettext_po_to_mo" to convert
all po files to mo files,
and renamed the "pot" target to "gettext_make_pot".
into the 3MF / AMF.
Improved accuracy of ModelVolume's mesh transform back from Object's
coordinate space to its own coordinate space after reloading
from 3MF / AMF.
reorder_by_three_exchanges_with_segment_flipping()
works, but it is excessively slow, with close to O(n^3) time complexity.
Commited, but not used in production until sped up.