86 Commits

Author SHA1 Message Date
Lukas Matena
82a0c09a57 Fixed compilation on Linux (gcc 9.4.0) 2023-09-13 10:14:11 +02:00
enricoturri1966
0f939409b8 Merge branch 'master_262' of https://github.com/Prusa-Development/PrusaSlicerPrivate into master_262 2023-09-05 12:29:37 +02:00
enricoturri1966
53adc68717 Tech ENABLE_BINARIZED_GCODE set as default 2023-09-05 12:17:47 +02:00
Vojtech Bubnik
827fb8356e Config layer: Refactored handling of open enums 2023-09-05 09:42:36 +02:00
Vojtech Bubnik
8dad25efc4 Merge branch 'master' into master_262 2023-09-04 14:44:32 +02:00
ps_copyright
f32859c302 final copyright headers 2023-09-01 14:49:07 +02:00
enricoturri1966
81b137eb06 Merge branch 'master' of https://github.com/Prusa-Development/PrusaSlicerPrivate into et_spe1784_binary_gcode 2023-08-22 08:37:47 +02:00
Vojtech Bubnik
ae8684a4a4 Added handle_legacy_composite() callback to configuration layer
to support conversion of multiple configuration keys into one
or multiple other configuration keys.
2023-08-21 17:45:15 +02:00
enricoturri1966
bfbe4dacae Few small refactorings 2023-08-21 14:26:03 +02:00
enricoturri1966
98be146fa9 Some code semplification 2023-08-14 09:55:00 +02:00
enricoturri1966
8e391d00da Changes required by update of libbgcode library interface 2023-08-14 09:38:22 +02:00
enricoturri1966
0bea17c128 Preview and GCodeViewer: removed file mapping for gcode window visualization + Fixed build on non Windows OSs 2023-08-11 09:20:27 +02:00
enricoturri1966
5deb4470c7 Changes required by updated library libbgcode 2023-08-04 14:44:45 +02:00
enricoturri1966
eb8d01888d Added import of config from binary gcode files 2023-08-04 12:35:40 +02:00
Vojtech Bubnik
d58c8b1bbd Refactor of ConfigDef / ConfigOptionDef / PrintConfigDef /
Field and other UI elements to handle enums in a generic way.
Needs a review by @yusanka
2023-02-09 09:08:58 +01:00
Vojtech Bubnik
d4b8d4d0f3 Further Perl unit test porting to C++ and Perl interface reduction:
Ported cooling, gap fill, thin walls and polyline unit tests.
2022-05-05 17:57:57 +02:00
Lukas Matena
09fe421fe8 Merge branch 'stable' (no conflicts fixed) 2022-04-27 22:24:13 +02:00
Vojtech Bubnik
aef0c5a83c Follow-up to 68b66729079bcf91ef44701c939f858f7ae9fe29
Fixed detection of config data at the end of gcode files
G-code as config file was not imported correctly because end of windows
stile end of lines (CRLF) were not processed correctly.
See the file at #8172
2022-04-08 14:28:12 +02:00
enricoturri1966
68b6672907 Fixed detection of config data at the end of gcode files 2022-04-08 09:41:26 +02:00
Lukas Matena
96a6c8538f Some refactoring and fixes based on static source code analysis 2022-03-31 16:33:52 +02:00
Lukas Matena
5c616c5931 Sync to 2.4.1-beta1 2022-02-01 14:16:13 +01:00
Lukas Matena
ebb9041041 Merge branch 'master' into stable - no conflicts fixed 2022-02-01 14:15:18 +01:00
Vojtech Bubnik
e83d89dee7 Fix of escape_strings_cstyle(), which did not enclose a single word
string containing semicolon ';' character into quotes.
2022-01-26 13:18:52 +01:00
enricoturri1966
ef059404b3 Tech ENABLE_FIX_SUPERSLICER_GCODE_IMPORT set as default 2021-11-30 12:01:22 +01:00
enricoturri1966
7ca9024fca #7008 - GCodeViewer - Fixed loading of gcodes generated by SuperSlicer 2021-09-27 11:22:36 +02:00
Vojtech Bubnik
f92312b597 Fixed parsing of Config from AMF / 3MF if it started with an empty line.
This bug was introduced with e947a29fc88f098febd2d93a8d9acf8ccedd4229
2021-08-30 17:57:04 +02:00
Vojtech Bubnik
1d6ade1d9c Optimization of ConfigBase::equals() to not create intermediate
list of modified options.

Optimization of DynamicConfig::equals(), ::diff(), ::equal()
to iterate over the two compared std::map trees instead of
first generating a list of keys and then searching for each key
in the respective map.

Optimization of PresetCollection::current_is_dirty() and ::saved_is_dirty()
to call DynamicConfig::equals() instead of ::diff().
2021-08-23 10:47:47 +02:00
Vojtech Bubnik
d569789285 Fixes after merging 2.3.2/2.3.3 changes from stable to master. 2021-08-13 14:53:13 +02:00
bubnikv
26822347ed Forward compatibility, parameter susbtitution: Substitute vector values
(extruder specific) with their default, if the default
is a single value vector.
Show the "Physical Printers" label in the substitution window.
2021-08-13 13:48:28 +02:00
bubnikv
3a0b71deed Configuration compatibility - implemented substitution and reporting for vectors
of bools (including the nullable bools).
2021-08-13 13:48:12 +02:00
bubnikv
5b843aa291 Fix of the previous commit. 2021-08-13 13:47:07 +02:00
bubnikv
c7691ec95e Forward compatibility - config substitutions:
1) Verify whether a value looks like an enum
2) Always report substitution of an enum with a boolean.
2021-08-13 13:43:33 +02:00
Vojtech Bubnik
965c2f2c55 Improved error reporting when importing various configuration files:
1) Slic3r::RuntimeError was replaced with ConfigurationError,
   all exceptions thrown by the configuration layer are derived
   from ConfigurationError.
2) When parsing configuration files, ConfigurationError is catched and
   rethrown extended with the file name being parsed.
2021-08-13 13:37:24 +02:00
Vojtech Bubnik
856da036eb Fixed loading of system presets with incompatible system profile keys
before the "reconfigure" dialog is shown.

Replaced boost::filesystem::copy_file() with Slic3r::copy_file()
in config snapshot loading code.
2021-08-13 13:34:40 +02:00
Vojtech Bubnik
8e28ca6f4a Fixed reading of configuration from 3MF broken
with e947a29fc88f098febd2d93a8d9acf8ccedd4229
2021-08-13 10:52:54 +02:00
Vojtech Bubnik
e947a29fc8 Follow-up to 7c01ddf996f4b8ca6d7e71c001e7650b3bf14609
1) Starting with this commit, configuration block exported into G-code
   is delimited by "; prusaslicer_config = begin" and "; prusaslicer_config = end".
   These delimiters look like any other key / value configuration pairs
   on purpose to be compatible with older PrusaSlicer config parsing from G-code.
2) Config parser from G-code newly searches for "; generated by ..."
   comment over the complete G-code, thus it is compatible with various
   post processing scripts extending the G-code at the start.
3) Config parser from G-code parses PrusaSlicer version from
   the "; generated by PrusaSlicer ...." header and if the G-code was
   generated by PrusaSlicer 2.4.0-alpha0 and newer, it expects that
   the G-code already contains the "; prusaslicer_config = begin / end"
   tags and it relies on these tags to extract configuration.
4) A new simple and robust parser was written for reading project configuration
   from 3MF / AMF, while a heuristic parser to read config from G-code located
   at the end of the G-code file was used before.
2021-08-12 15:27:46 +02:00
Vojtech Bubnik
7a60e8cb3a Follow-up to 215ee293ae705943e28ab1509f50d03c85dd26a0:
More robust CLI parser.
2021-08-11 09:49:23 +02:00
Lukas Matena
215ee293ae CLI parsing: allow giving explicit values for bool options, improved error reporting:
It is now possible to use e.g. --ensure-on-bed=0 for bools (meaning the same as --no-ensure-on-bed).
Using --no- prefix on non-boolean is an error (--no-ensure-on-bed=1)
Providing a value for --no- prefixed bool is an error (--no-loglevel 5)
2021-08-05 13:45:16 +02:00
bubnikv
3782d6a864 Forward compatibility, parameter susbtitution: Substitute vector values
(extruder specific) with their default, if the default
is a single value vector.
Show the "Physical Printers" label in the substitution window.
2021-07-01 08:44:02 +02:00
bubnikv
e7a6323470 Configuration compatibility - implemented substitution and reporting for vectors
of bools (including the nullable bools).
2021-06-30 18:55:43 +02:00
bubnikv
ab5e02f20c Fix of the previous commit. 2021-06-30 16:52:55 +02:00
bubnikv
21cbcd876a Forward compatibility - config substitutions:
1) Verify whether a value looks like an enum
2) Always report substitution of an enum with a boolean.
2021-06-30 16:19:06 +02:00
Vojtech Bubnik
28472ee03f Renamed "marlinfirmware" G-code flavor to "marlin2". 2021-06-29 15:48:41 +02:00
Vojtech Bubnik
745aa3536d Improved error reporting when importing various configuration files:
1) Slic3r::RuntimeError was replaced with ConfigurationError,
   all exceptions thrown by the configuration layer are derived
   from ConfigurationError.
2) When parsing configuration files, ConfigurationError is catched and
   rethrown extended with the file name being parsed.
2021-06-29 15:41:57 +02:00
Vojtech Bubnik
226bf929fb Fixed loading of system presets with incompatible system profile keys
before the "reconfigure" dialog is shown.

Replaced boost::filesystem::copy_file() with Slic3r::copy_file()
in config snapshot loading code.
2021-06-28 17:26:59 +02:00
Vojtech Bubnik
0f3cabb5d9 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
Vojtech Bubnik
84b28a25e8 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.

As a preparation for PrusaSlicer 2.4.0, the new firmware_flavor
"marlinfirmware" (signifying Marlin 2.0 and newer) that is not
supported by 2.3.2 yet will default to "marlin" (signifying legacy
Marlin).

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:14:16 +02:00
Lukas Matena
c5c6f51ae0 Fixed third batch of locale-dependent calls 2021-05-24 12:20:29 +02:00
Vojtech Bubnik
d9ed9149ae 1) Moved first_layer_heigth frrom PrintObjectConfig to PrintConfig.
Thus the first_layer_height is no more object specific. That makes
   a lot of sense due to the brim calculation being performed over
   all layers at once and due to future merging of supports of
   different objects at first layer.
2) Because now first_layer_height is print specific, the relative
   first layer height derived from the object layer height was partially
   disabled: First the relative first layer height is converted to
   an absolute value when importing config, second the side text
   was changed from "mm or %" to "mm". Still the UI allows entering %.

Both changes may be controversial, let's wait for user feedback.
2021-04-21 12:09:43 +02:00
enricoturri1966
e44c1006d5 #6117 - Allow import of gcode files processed by ArcWelder 2021-02-24 09:46:42 +01:00