Commit Graph

209 Commits

Author SHA1 Message Date
bubnikv
059bdb4711 Implemented handling of complex ConfigOptionFloatOrPercent chains
by the PlaceholderParser.

Namely, all the options with the "ratio_over" reference are now handled
correctly by the PlaceholderParser with the exception
of the "first_layer_extrusion_width", which overrides speed of extrusions
by their respective extrusion type.

Also the various extrusion widths (extrusion_width, first_layer_extrusion_width,
external_perimeter_extrusion_width etc.) produce the same numbers
as if ran through the back-end, with the assumption of not overriding
layer height by the variable layer height editing tool or layer height
modifiers.
2020-02-04 15:27:38 +01:00
bubnikv
c5fa400208 Fixed regression of 71fa411100
where the PrintObject bounding box was not invalidated correctly
when the transformation matrices of instances changed.

Also refactored PrintObject::size() for const correctness.
2020-01-30 12:22:30 +01:00
YuSanka
1ed313ab79 Synchronized mode of color_print data to/from 3mf/amf
+ Code refactoring " CustomGCode extracted to separate namespace and file
2020-01-23 16:11:21 +01:00
bubnikv
71fa411100 Refactored PrintObject::m_copies to PrintInstances,
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.
2020-01-23 09:53:06 +01:00
YuSanka
2259f7b3e8 Code refactoring to mode comparison 2020-01-17 12:24:58 +01:00
YuSanka
89fcd7f95a Added "mode" variable for custom_gcode_per_print_z 2020-01-16 16:01:19 +01:00
bubnikv
8e5ba5ccc5 Added synonyms to some PrintSteps:
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.
2020-01-15 16:20:16 +01:00
bubnikv
98e49772ed Custom G-code references are now being assigned to ToolOrdering::LayerTools()
and the superfluous M600 (color change) events are filtered out there.

Fixed a handful of compiler warnings.
2020-01-14 11:54:09 +01:00
bubnikv
8bfc986fa7 Refactoring of GCode::process_layer().
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.
2020-01-14 10:31:18 +01:00
bubnikv
3d17543d40 Fix of "Don't use bridging perimeters on top of elephant-foot compensation #3011"
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.
2020-01-03 14:07:31 +01:00
YuSanka
afcc6bbb08 Code refactoring for Color change implementation 2019-12-17 08:37:50 +01:00
Lukas Matena
e747577271 Added a validation check to reject wipe tower in sequential prints
This scenario was never supported (#3283)
2019-12-11 08:12:19 +01:00
YuSanka
805a6c936c Localization improvements: Text correction 2019-12-06 13:58:23 +01:00
Lukas Matena
3ef34848c7 Fix of skirt: wipe tower was not correctly processed when rotated 2019-12-04 13:45:42 +01:00
YuSanka
dfd38c7818 Merge remote-tracking branch 'origin/master' into ys_color_print_extension 2019-11-28 09:01:14 +01:00
Enrico Turri
6df506e482 ENABLE_THUMBNAIL_GENERATOR -> Thumbnails generated using a callback function 2019-11-22 12:39:03 +01:00
YuSanka
bc68b8eaf2 ExtruderSequenceDialog :
Fixed layouts after the second opening of the dialog.
 (Removing any extruder from the sequence does not cause an incorrect layout)
Validation of entered values added
 (0 is not a valid value)
2019-11-16 02:12:37 +01:00
Lukas Matena
88514eeb0e Merge branch 'lm_low_wipe_tower' 2019-11-14 10:37:04 +01:00
Enrico Turri
d8dca69d60 Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_plater_thumbnail 2019-11-05 13:58:13 +01:00
bubnikv
7a7183383f Merge branch 'master' of https://github.com/BryanSmithDev/PrusaSlicer into BryanSmithDev-master 2019-11-05 11:37:40 +01:00
Enrico Turri
2d5c28d6d1 ENABLE_THUMBNAIL_GENERATOR -> Allow for multiple thumbnails into gcode and sl1 files 2019-10-25 13:59:13 +02:00
Enrico Turri
6d5572ae47 ENABLE_THUMBNAIL_GENERATOR -> Code cleanup 2019-10-24 10:25:40 +02:00
Enrico Turri
4d1153c866 ENABLE_THUMBNAIL_GENERATOR -> WIP: Refactoring and preparation for adding thumbnails to exported gcode and 3mf files 2019-10-23 13:31:24 +02:00
YuSanka
76ec1bc7e3 Improved extruder_selector for DoubleSlider 2019-10-16 10:30:29 +02:00
YuSanka
4b0fe7cba4 Implemented custom extruder(tool) change from DoubleSlider 2019-10-15 15:42:30 +02:00
YuSanka
70ef0f25ef Information from DoubleSlider is saved to Model
GCode creating can work with that values.
2019-10-10 16:03:58 +02:00
Lukas Matena
cf030e8958 Simplified inclusion of the wipe tower into skirt calculation 2019-10-08 14:12:40 +02:00
Lukas Matena
fdf9272fbe Wipe tower brim width is now part of WipeTowerData class, so it can be used wherever needed 2019-10-08 13:50:51 +02:00
Thomas Moore
aba743de41 Include wipe tower in skirt 2019-10-08 11:06:55 +02:00
bubnikv
564eddd99d FDM Print refactoring:
Layer newly remembers bounding boxes of slices,
the bounding boxes are used by G-code generator & newly the support
generator.
Slices are stored as ExPolygons, not ExPolygonCollection.
2019-10-01 17:17:08 +02:00
Lukas Matena
61cee54dd3 Merge branch 'master' into lm_low_wipe_tower 2019-10-01 13:24:25 +02:00
Lukas Matena
38d8854a48 Print::validate() - check for empty print has been moved at the beginning of the function
This prevents a crash when the print is empty and the wipe tower enabled - validation of the wipe tower attempted to access extruders().front(), which was empty.
No other checks need to be done with the empty print anyway.
2019-10-01 12:48:58 +02:00
Lukas Matena
b5e3899267 Wipe tower: Sparse layers are not included in filament consumption in case that the 'no sparse layers' option is set 2019-10-01 11:41:37 +02:00
bubnikv
4b35ebe6e5 Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2019-09-27 09:52:57 +02:00
bubnikv
10eecb2cab Reworked Traveling Salesman Problem code for simplicity and robustness.
The TSP algorithm is newly used for planning of the printing order
of objects AND their instances.
2019-09-26 16:39:50 +02:00
Lukas Matena
7861fa5086 Whitespace changes to supress misleading indentation warnings
These appear in newer gcc when spaces and tabs are mixed
2019-09-24 16:01:01 +02:00
Lukas Matena
abaebb489a Added a config option to not print sparse layers on the wipe tower 2019-09-20 10:54:20 +02:00
Lukas Matena
b241ba16ed Fixed layer profile equality check for wipe tower validation (fixup of b43003d) 2019-09-20 10:53:50 +02:00
bubnikv
a9182fb0b3 Merge branch 'master' into dev 2019-09-13 16:19:35 +02:00
bubnikv
ea8b6262cf Introduction of ClipperLib_Z: The Clipper library compiled with support
of the Z coordinate, compiled in the ClipperLib_Z namespace.

Update of Lukas's new brim clipping:
All the brim contours are now clipped by the ClipperLib_Z library
in one shot.
2019-09-13 16:16:37 +02:00
bubnikv
bb896b4c13 Merge remote-tracking branch 'remotes/origin/lm_brimskirt' 2019-09-12 15:53:20 +02:00
Lukas Matena
b43003dfad Fixed layer height equality check needed in order to enable the wipe tower
The change was needed because enabling the new layer-height-modifier made the validation fail, even if there was no real layer height modification
2019-08-29 16:13:04 +02:00
Lukas Matena
af2a3d2c08 Fixes of the wipe tower
- added an extra travel move after a toolchange
- wipe tower only sets temperatures with single extruder MM printers
- ooze prevention does not work with the wipe tower - added a check into Print::validate()
2019-08-28 16:28:22 +02:00
bubnikv
668a8cd2ea Fix of an update of support extruders when changing number
of printer extruders.
2019-08-21 14:05:32 +02:00
bubnikv
40d313961e Fixing issues in Print / PrintObject / PrintRegion reporting
a list of printing extruders.
2019-08-21 13:49:37 +02:00
bubnikv
ded2019765 Fix of "spiral vase printable for a single region object only" check. 2019-08-21 13:08:26 +02:00
bubnikv
7c0c5705df Fix of Excessive external_perimeter_extrusion_width error #2784
Increased the perimeter_extrusion_width check limit to 3x nozzle diameter.
2019-08-21 09:28:32 +02:00
bubnikv
384ee17fcb Merge remote-tracking branch 'remotes/origin/lm_circular_priming' 2019-08-20 09:34:45 +02:00
Lukas Matena
4cca6f8724 Allowed the skirt to intersect brim (https://github.com/prusa3d/PrusaSlicer/issues/724)
Brim lines are split at the intersection so there is no overextrusion.
2019-08-15 12:27:49 +02:00
Lukas Matena
15744f021a Print::validate: added epsilon checks on nozzle and filament diameter validation (https://github.com/prusa3d/PrusaSlicer/issues/2737)
Changed messagebox text after changing extruder diameter with single extruder printers so it is more obvious why it shows

In case nozzle diameters differ and someone checks 'single_extruder_mm', PrusaSlicer asks whether all diameters should be unified. Answering NO did not undo the SEMM check. It does now.
2019-08-15 10:43:17 +02:00
Lukas Matena
c84b1ca34b Multimaterial initial priming for non-Prusa printers (https://github.com/prusa3d/PrusaSlicer/issues/1121)
The initial priming now does not assume anything about bed width and always uses the space it has
In case of circular beds it places the priming lines along the diameter
Custom beds are not supported (they are treated as circular with no extra checks whether it is sane)
Slight refactoring of the WipeTower class (constructor now gets reference to PrintConfig and not the individual values, same with set_extruder). This was legacy from times when the wipe tower was meant to be abstract and independent on the rest)
2019-08-15 01:41:46 +02:00
bubnikv
46fa83adac Only validate support_material_extrusion_width with supports
or raft enabled.
2019-08-09 09:58:05 +02:00
bubnikv
9905f8d349 Fix of the previous commit: zero extrusion width parameter is
always valid, it is replaced with an "auto" value.
2019-08-06 15:36:16 +02:00
bubnikv
74e592ceaa Improved handling of excessive extrusion width values (too small
or too big).
Fixes std: bad_alloc #2715
2019-08-06 15:11:46 +02:00
Lukas Matena
0de6e53219 Followup of 6ab1cec - empty layers are ok if there are only other empty layers on top of them
Also fixed a possible crash in Print.cpp when preparing the wipe tower layers
2019-08-04 22:57:59 +02:00
bubnikv
86287a28ec Fixed the Perl bindings, made Print::m_placeholder_parser protected,
removed the non-const accessor method to m_placeholder_parser.
2019-07-25 17:08:31 +02:00
bubnikv
2bcdfc8378 Merge remote-tracking branch 'remotes/origin/master' into vb_filament_overrides 2019-07-25 14:40:54 +02:00
bubnikv
f8218eb903 Reworked the FFF Print::update() to process the filament retract
override values and to store them into the output G-code.
2019-07-25 14:39:19 +02:00
bubnikv
42c8940795 Fixed is_nil() method on ConfigOptions.
PlaceholderParser was extended to support external config.
The external config has a lowest priority when looking up a variable.
2019-07-24 12:39:01 +02:00
bubnikv
3b1a44c084 WIP: Nullable configuration value concept, implemented for
ConfigOptionFloatsNullable, ConfigOptionIntsNullable,
ConfigOptionPercentsNullable, ConfigOptionBoolsNullable.

retract override values were added to the Filament profile:
vector of floats: "retract_length", "retract_lift", "retract_lift_above",
	"retract_lift_below", "retract_speed", "deretract_speed",
	"retract_restart_extra", "retract_before_travel",
vector of bools: "retract_layer_change", "wipe"
vector of percents: "retract_before_wipe"
2019-07-23 14:15:42 +02:00
Lukas Matena
506be9035b Wipe tower now supports filaments with diameters different from 1.75 mm 2019-07-23 14:02:20 +02:00
Lukas Matena
004e2719b1 Merge branch 'master' into lm_warnings 2019-07-15 13:26:55 +02:00
bubnikv
ab7ecc1819 Merge remote-tracking branch 'remotes/origin/vb_undo_redo' 2019-07-15 11:34:18 +02:00
Lukas Matena
e674c586b0 Merge branch 'lm_improving_wipe_tower'. Summary of changes:
- wipe tower respects max volumetric flow, slowing down with PVA etc is not hardcoded anymore
- wipe tower is now allowed for multiple-extruder printers. single extruder stuff is not used in that case (ramming, cooling, etc.)
- start/end filament and toolchange custom gcodes are now inserted differently than before - see 41164a9
- some refactoring, e.g. the abstract WipeTower class was eradicated
2019-07-15 10:25:38 +02:00
bubnikv
b1420283b6 Fixed merge issues. 2019-07-04 20:49:46 +02:00
bubnikv
c7cc760067 Merge remote-tracking branch 'origin/master' into vb_undo_redo 2019-07-04 20:22:15 +02:00
bubnikv
e2a670218b WIP Undo / Redo: Serializing the configs of ModelObject / ModelVolume
/ ModelMaterial as separate objects to conserve memory.
2019-07-03 13:43:54 +02:00
bubnikv
27ee68d2f9 WIP Undo / Redo: ModelID / ModelBase renamed to ObjectID / ObjectBase 2019-06-27 11:02:45 +02:00
Lukas Matena
cb916c4dda Fixed warnings in libslic3r 2019-06-25 16:04:29 +02:00
bubnikv
7de5a42df3 Fixed compilation on clang / OSX (missing float.h) 2019-06-20 21:07:26 +02:00
bubnikv
b7a949a53e Fix for C++11 2019-06-20 20:40:17 +02:00
bubnikv
ac6969c992 Reworked the Perl unit / integration tests to use the same Print
interface that the application is using. Old interface used just
for the integration tests was removed.
2019-06-20 20:23:05 +02:00
bubnikv
35b3fd3176 Integrated the new layer height spans with configs into the backend.
Fixed some compiler warnings.
2019-06-20 16:15:09 +02:00
Lukas Matena
05e6dbbe4b Wipe tower - refactoring (removed the abstract WipeTower class)
- abstract class WipeTower and its descendant WipeTowerPrusaMM were merged into a single (non-abstract) WipeTower class
- all uses of WipeTower::xy struct were replaced by Eigen Vec2f (it is no longer necessary to be independent on libraries that PrusaSlicer uses)
- the WipeTowerPrusaMM.hpp/.cpp will be renamed in the next commit (hopefully it will retain its git history that way)
2019-06-17 10:16:07 +02:00
Lukas Matena
0eecfc6604 Wipe tower - removed the obsolete material_type enum
no longer necessary because the speed overrides that the enum controlled were recently removed
the comment in gcode is now just about appending the config string
2019-06-14 14:44:22 +02:00
Lukas Matena
aee376762e Changed handling of priming extrusions to allow injection of filament and toolchange custom gcodes
The priming extrusions were handled separately from the rest of the wipe tower toolchanges. In order to be able to use the logic from previous commit for them (custom toolchange gcodes etc), some unpleasant code shuffling was needed
2019-06-14 14:42:07 +02:00
Lukas Matena
9df93c0125 Mostly refactoring of the wipe tower improvements
- setting of the wipe tower parameters based od whether SE MM printer is selected is done in the WipeTowerPrusaMM constructor, so it does not distract in Print.cpp
- WipeTowerPrusaMM.cpp conditions checking for SE MM printer are now using a more descriptive const member variable, not the loading/unloading speeds (hopefully the functionality is the same)
2019-06-14 14:35:50 +02:00
Thomas Moore
da1aea889f Enable wipe tower for all multi-extruder configurations 2019-06-14 12:28:52 +02:00
Lukas Matena
079e63e190 The wipe tower now respects filament max volumetric flow
The odd commands that lowered the speed override values for PVA, FLEX etc. were removed

Now the wipe tower backups user speed override, sets it to 100%, does what is needed
and restores the old value when finished. There are no special cases - lowering
the speed for certain materials can be achieved by lowering the volumetric flow.
2019-06-14 12:28:52 +02:00
Bryan Smith
f364b956fc Add [total_toolchanges] placeholder for filename and custom gcode sections. 2019-06-05 11:23:44 -04:00
YuSanka
1090105b68 Experiments with updating layer_config_ranges from UI
+ Fixed OSX build
2019-06-05 11:50:59 +02:00
Lukas Matena
07282eb24d Fixed unit tests when run with range checks on std::vector
There was a bug in unit tests that led to generating the wipe tower with non-normalized preset.
This caused out-of-bounds access into max_layer_height vector in fill_wipe_tower_partitions.
The problem surfaced in https://github.com/prusa3d/PrusaSlicer/issues/2288.
I quickly patched additional normalization of the preset to prevent this from happening.

Also, an assert in the same function turned out to trip on one of the tests.
This one was commented out for now and will (hopefully) be looked into later.

Function Print::apply_config was renamed to apply_config_perl_tests_only so everyone
sees its current purpose and does not mistake it for the more important Print::apply.
2019-05-22 16:48:20 +02:00
bubnikv
04397c7948 Changed the G-code export and send to OctoPrint GUI code
to store the G-code next to the project file if it exists,
and to process the project name with the PlaceholderParser.
2019-05-17 16:27:00 +02:00
YuSanka
68bffee102 Fixed a typo leading to a crash in another then English languages (#2233) 2019-05-15 09:44:38 +02:00
bubnikv
3f08d9f30d Changed references to renamed github project
https://github.com/prusa3d/PrusaSlicer
2019-05-14 19:46:01 +02:00
bubnikv
0cfac53d24 Some more localization fixes. 2019-05-09 15:44:53 +02:00
bubnikv
76aefd533c In GUI mode, when exporting the G-code to a temp file, don't show
"Exporting G-code", but "Generating G-code"
2019-05-08 17:43:43 +02:00
YuSanka
8e007c5b6a Localization improvements 2019-05-04 02:07:07 +02:00
Lukas Matena
08cb5bc2c7 Wipe tower uses correct gcodes for RepRap gcode flavor (M907->M906, M900->M572 - should fix #1843)
Also, fixed proper setting of the extruder current during toolchange (was broken since 6da83c7)
2019-04-24 12:09:58 +02:00
bubnikv
5ec507e9ea Fix of Complete individual objects: "checker" bug #1911"
Also fix of an arrangement issue for instances with some transformation
around X or Y axis applied.
2019-04-18 12:45:43 +02:00
tamasmeszaros
590ae25b13 Altering sla export interface to support explicit project name. 2019-04-04 12:30:11 +02:00
bubnikv
60260c26be Fixed command line slicing due to some missing config keys 2019-03-14 18:47:26 +01:00
bubnikv
18025cc669 Reworked the command line interface based on the current state
of the upstream.
Thanks @alexrj, @lordofhyphens for the original code of slic3r.cpp
2019-03-13 15:44:50 +01:00
bubnikv
676076b7b4 Fix of caching of the SlicingParamerters at PrintObject 2019-03-05 14:05:58 +01:00
bubnikv
917f044f81 Renamed the "lambda-" prefix for the generic modifiers to "Generic-"
Refactored ModelVolume::Type to enum class ModelVolumeType to be able
to forward declare it.

Refactored UI to use the ModelVolumeType instead of the untyped int.
2019-02-22 12:12:10 +01:00
bubnikv
53ccac6925 Show wait cursor when exporting an STL.
Fix of SLA gizmo picking by rectangle: point is occluded only if an object
is half its radius away from the point center.
Don't show the temp G-code file name in the status bar when exporting.
2019-02-22 10:11:57 +01:00
bubnikv
37ab271803 Merge remote-tracking branch 'origin/ys_sla_time_estimation' 2019-02-21 13:11:16 +01:00
bubnikv
76f1aa09d0 Fixed an issue with background processing cancelation & SLA supports
for a single object only.
Fixed a spelling issue in "call_cancell_xxx"
2019-02-21 12:39:38 +01:00
bubnikv
c86a4f3ac6 Fix of "Change of object type support blocker to enforcer does nothing (and vice versa) (#1818)"
WIP: Limited background processing for SLA supports.
2019-02-21 08:44:07 +01:00
YuSanka
c04be58648 Implemented estimated printing time for the SLA printing 2019-02-12 16:34:42 +01:00