Commit Graph

336 Commits

Author SHA1 Message Date
Enrico Turri
7e5043961a Added missing include 2019-09-11 08:51:36 +02:00
Enrico Turri
44c3493f7d GCodeAnalyzer: Fixed a crash when encountering an invalid toolchange 2019-09-11 08:39:29 +02:00
bubnikv
9bdc5b7939 Merge remote-tracking branch 'remotes/origin/master' into dev 2019-09-10 19:09:41 +02:00
Lukas Matena
2fef16c39a Fix of #1266 and #2258
In case there were empty object layers supposed to be floating on supports which were set to use a specific extruder, wipe tower was missing layer required to do the toolchange, leading to a crash
Such cases are now detected and layers that need it are additionally assigned as wipe tower layers

Also tracked as SPE-526
2019-09-10 13:13:21 +02:00
Lukas Matena
c5f78dd6e2 Some more warnings fixed (WipeTower.cpp/.hpp) 2019-09-10 12:08:43 +02:00
Lukas Matena
a62bba2508 CoolingBuffer.cpp: Fixed a crash when encountering an invalid toolchange
This can happen if the user enters invalid toolchange through the custom gcodes
Such toolchange is now simply ignored by the CoolingBuffer, exporting gcode is NOT stopped, a log error is emitted
2019-09-10 11:46:18 +02:00
Lukas Matena
a985a2720f Fixed some more warnings, moved function to get ExtrusionRole name into ExtrusionEntity.hpp
So it can be called from wherever it may be needed
2019-09-06 15:55:07 +02:00
Lukas Matena
805a5d22a1 Fixed couple of warnings in WipeTower.cpp, ToolOrdering.cpp and GCode.cpp 2019-09-04 14:56:35 +02:00
Lukas Matena
942f959e87 Fixed couple of warnings
Turned several includes into forward declarations
Removed several sprintf calls in favor of std::to_string
2019-09-02 16:27:48 +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
80490550b5 Optimization of the tool path preview generation algorithm:
1) Replaced linear search with logarithmic search.
2) Templated the travel path generation, replaced 3 functions with one.
2019-08-26 15:52:56 +02:00
Enrico Turri
85ed363951 GCodeAnalyzer uses annotated gcode in place of processing m600 lines to detect color print changes 2019-08-21 14:09:20 +02:00
bubnikv
384ee17fcb Merge remote-tracking branch 'remotes/origin/lm_circular_priming' 2019-08-20 09:34:45 +02:00
bubnikv
778e499827 Merge remote-tracking branch 'remotes/origin/lm_wipe_tower_linear_advance' 2019-08-20 09:19:22 +02:00
tamasmeszaros
65368db49b Merge branch 'master' into tm_clang_mingw 2019-08-16 16:37:02 +02:00
tamasmeszaros
c187a5fb69 Fix up build and clear dev output 2019-08-16 16:31:05 +02:00
tamasmeszaros
7e0199746e more clang warnings enabled, performance measuring
Succesfull build on mingw-w64


fix sandboxes


Mingw fixes and full parallel support tree gen.
2019-08-16 16:17:37 +02:00
Lukas Matena
0f32223ba0 WipeTower: linear advance is disabled immediately before ramming, not before moving to the wipe tower
Linear advance is reset by filament start gcode after a toolchange. However, not all moves to the wipe tower
end with a toolchange (brim, empty grid) and it would therefore disable linear advance until the next toolchange
This should solve https://github.com/prusa3d/PrusaSlicer/issues/2770
2019-08-16 00:20:51 +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
Lukas Matena
6ab1cec48c Empty layers detection added to GCode.cpp
Added detection of empty layers so the wipe tower doesn't trip on them (it is not printable anyway).
This should improve wipe tower reliability with supports, objects standing on edges, etc.
I also turned an assert into exception throw to prevent hard crashes and nonsense output.
2019-08-02 16:54:18 +02:00
Lukas Matena
170bd8b064 Wipetower fix: temperature-changing command was sometimes missing after the toolchange
Cause: variable holding last issued temperature was not reset where it should have been
This should fix issue #2685
2019-08-01 15:31:02 +02:00
bubnikv
576643c7ed Bumped up the version to 2.1.0-alpha0.
Updated the bundled profiles to integrate retract overrides
for PET and FLEX materials.
2019-08-01 11:53:22 +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
Enrico Turri
dcedb9e3d3 Follow-up of 699319cd86 -> Fixed build on Mac 2019-07-22 11:47:23 +02:00
Enrico Turri
699319cd86 #2663 - Added handling of gcode lines M401 and M402 for Repetier flavour to GCodeAnalyzer 2019-07-22 11:23:42 +02:00
Lukas Matena
eb29c3e01d Wipe tower accounts for extruder offsets
Also, in case of non-single-extruder printer with the wipe tower, first wiping line was printed where the border should have been - fixed
2019-07-19 13:00:10 +02:00
Lukas Matena
004e2719b1 Merge branch 'master' into lm_warnings 2019-07-15 13:26:55 +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
Lukas Matena
2ee572bd31 GCodeAnalyzer now recognizes tool-changing commands with MakerWare and Sailfish flavor
These firmwares use M135 Tn and M108 Tn commands for changing active tool, which the analyzer did not recognize. The toolpaths were then rendered in wrong color, extruder offset etc. This surfaced in issue https://github.com/prusa3d/PrusaSlicer/issues/2566
2019-07-12 12:56:41 +02:00
Enrico Turri
1f74d7fdfc Added color number in legend texture for color prints 2019-07-09 15:47:34 +02:00
Lukas Matena
cb916c4dda Fixed warnings in libslic3r 2019-06-25 16:04:29 +02:00
Lukas Matena
743a08f0cf WipeTower - fixed a crash in extrude_explicit when called from finish_layer before the first toolchange 2019-06-21 10:58:20 +02:00
Lukas Matena
95ad76a0dc Wipe tower - fixed a long existent bug that sometimes resulted in inexact feedrate on the loading moves 2019-06-17 12:59:30 +02:00
Lukas Matena
1152bd5a09 Fixup of 41164a9
The WipeTowerWriter did not now which tool is being used, so it limited the volumetric flow based on different filament settings
2019-06-17 11:22:17 +02:00
Lukas Matena
a643a22151 Wipe tower - renaming files (to conclude work from previous commit and not lose history of those files) 2019-06-17 10:26:33 +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
41164a9cb3 Multimaterial printing: Changed the way how custom gcodes are inserted
Each toolchange now emits:
- end filament custom gcode
- toolchange custom gcode; if not provided, a standard Tn command is inserted
- start filament gcode

Hopefully it is now consistent for SE/ME printers with/without the wipe tower
The priming line does not work - will be fixed in the next commit
2019-06-14 14:38:58 +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
Lukas Matena
6f7051c3b1 GCode preview shows correct volumetric flow for the wipe tower
The neccessary annotations for the GCodeAnalyzer were missing
2019-06-14 12:28:52 +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
c7f6e5436c Fix of
Extend the "filament type" list with PC or allow free form text into the filament type field. #1704
2019-05-17 11:46:46 +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
d83a013d6b Export of filament statistics into G-code for multi-material prints
has been rewritten to be easier to parse.

Old format
; filament used = 19248.8mm (46.3cm3)
; filament used = 57.4
; filament cost = 1.5
; filament used = 8007.6mm (19.3cm3)
; filament used = 23.9
; filament cost = 0.6
; filament used = 0.0mm (0.0cm3)
; filament used = 0.0mm (0.0cm3)
; filament used = 0.0mm (0.0cm3)
; total filament cost = 2.1

New format
; filament used [mm] = 1600.7,1600.7,1600.7,1600.7,1600.7
; filament used [cm3] = 3.9,3.9,3.9,3.9,3.9
; filament used [g] = 4.8,4.8,4.8,4.8,4.8
; filament cost = 1.5,1.5,1.5,1.5,1.5
; total filament used [g] = 24.0
; total filament cost = 7.5

Where the non-printing extruders are filled in with zeros, and
the trailing non-printing extruders are not exported.

; filament used [g]
and
; filament cost
are only printed if non zero (material density and cost are defined)
2019-04-16 14:25:50 +02:00
Enrico Turri
c29f7bc147 Fix of #2044
Added sorting by z of the preview data used to generate the gcode preview because there can be shuffling in case of sequential printing
2019-04-04 09:16:03 +02:00
Vojtech Kral
734d57a714 Fix build on MSVC with PCH off 2019-03-27 12:14:34 +01:00
Enrico Turri
902bcf7f71 Fix of #1978 2019-03-18 09:42:34 +01:00
Lukas Matena
63b65bb3c8 Wipe tower brim lines are now printed with overlaps as they should be 2019-03-13 10:46:50 +01:00
Enrico Turri
f5b5e48ad7 Added cancel mechanism to GCodeAnalyzer::calc_gcode_preview_data() 2019-03-12 11:57:39 +01:00
Vojtech Kral
4e510dc3e7 PostProcessor on Unix: Execute using default shell #1908
escape gcode path, collect stderr
2019-03-12 11:10:30 +01:00
Enrico Turri
219ea04c23 Fix of #1812 (GCode Anayzer take in account extruder offsets for multiextruder printers) 2019-03-06 10:22:10 +01:00
Enrico Turri
8a29ec2204 GCode Anayzer take in account extruder offsets 2019-03-05 15:03:56 +01:00
bubnikv
a56f7d60e5 Fixed an issue, where the output G-code file name was not always updated
from the current Model/ModelObjects.
Fixed a possible race condition in updating Print::m_placeholder_parser
with the proposed filename / filename base.
Improved documentation (source code comments).
2019-02-03 10:41:14 +01:00
bubnikv
e59a10e0c2 Fix of a cooling slow down logic.
fixes "Min print speed" to "Estimated Print Time" Inconsistencies #1488
2019-02-01 17:15:41 +01:00
bubnikv
3b973e01dd Get name of both the G-code and project file from the 1st printable
object's name or file path.
Fixed some compilation warnings.
2019-02-01 11:44:08 +01:00
bubnikv
460cf820af Some optimizations of the color print preview. 2019-01-30 12:10:26 +01:00
bubnikv
d30676ceee Merge remote-tracking branch 'remotes/origin/ys_color_print' 2019-01-30 09:29:55 +01:00
bubnikv
49bb90523a Fix of a G-code comment. Fixes
Incorrect filament profile being used during purge - always set to PLA. #1691
2019-01-29 18:28:52 +01:00
YuSanka
e291172e24 Implemented "Color Print" for preview mode (without re-slicing) 2019-01-29 15:11:29 +01:00
bubnikv
3e28905621 Fixed missing includes in PostProcessor.cpp
Fixes https://github.com/prusa3d/Slic3r/issues/1679
2019-01-18 10:16:53 +01:00
bubnikv
668d374779 Implemented post-processing scripts on Windows.
Fixes https://github.com/prusa3d/Slic3r/issues/1666
2019-01-17 20:34:19 +01:00
bubnikv
e9990ed79e Fix of SPE-691 Slicer crash after extruder change
Added synchronization of GCodePreviewData between the front end / back end
(GCodePreview data is only used if PrintStep psGCodeExport is finished).
Added reset of GCodePreviewData on Print::apply() to conserve RAM.
2018-12-19 14:47:16 +01:00
bubnikv
1e6900afa2 Logging of memory usage for the GCodeAnalyzer and GCodePreviewData. 2018-12-18 15:55:45 +01:00
bubnikv
7e8d9c154d WIP: Fix of PrusaControl import.
Now the transformation matrices need to be restored as well.
2018-12-17 12:11:51 +01:00
bubnikv
d0edc36400 Implemented M220 B / M220 R for backup / restore of the speed override
at the firmware. The M220 B / M220 R are only applied for MM prints
without any flex or soluble (PVA, BVOH) material, as for these materials
the MMU slows down the print using the M220 code.
fixes "LCD Speed Modifier Lost on Tool Change #421"
2018-12-17 10:30:20 +01:00
bubnikv
6da83c7976 Make the increase of extruder motor current during MM filament
exchange sequences configurable.
2018-12-14 20:09:10 +01:00
bubnikv
52db7b055a WIP: Merged commits from stable between 1.41.2-beta and 1.42.2 final.
Changes in SupportMaterial.cpp, TriangleMesh.cpp and 01_trianglemesh.t
are yet to be merged.

WIP: Refactoring of layer height editing.
Removed layer_height_ranges from PrintObject, as the Print/PrintObject
now hold their copies of Model/ModelObject.
2018-12-11 16:33:43 +01:00
bubnikv
aed6eabae8 Fixed missing includes 2018-12-10 09:52:22 +01:00
hexane360
8481ca9610 Fixed post-processing (including perms check) on Unix 2018-12-10 09:05:37 +01:00
bubnikv
0e8d13142b Allow printing a MM object on a single material printer.
All extruders are clamped to the number of physical extruders
when passed to the back end.
2018-12-06 16:53:43 +01:00
YuSanka
360133246c Fixed ColorPrint current layer identification 2018-11-28 16:03:24 +01:00
Lukas Matena
69a7991c59 Fix of issue #1368 2018-11-28 12:30:48 +01:00
YuSanka
f203f6fbd9 ColorPrint improvement
+ Select "Color Print" preview type if it's not after add/delete new color change
+ Added level heights to the color legend instead of "Color N"
2018-11-27 16:04:56 +01:00
YuSanka
f8bc7cb959 Implementation of the "ColorPrint" on the 3DScene 2018-11-26 16:28:12 +01:00
bubnikv
cc283571e7 Fixed compilation issues on osx 2018-11-26 14:54:23 +01:00
bubnikv
a378bb7bed Removed some obsolete Perl bindings.
Removed libslic3r from the default include paths for all modules but
libslic3r. Now headers from libslic3r need to be included with an
explicit path (libslic3r/libslic3r.h etc)
Split the localization macros into I18N.{cpp,h}
2018-11-26 14:41:58 +01:00
bubnikv
c2e46350f2 Separated Print / PrintObject into PrintBase.cpp/h to support SLAPrint 2018-11-08 14:23:17 +01:00
Lukas Matena
377350db33 When iterating over PrintObject regions, use PrintObject::region_volumes (see also yesterday's commit 3eea327) 2018-11-07 15:17:29 +01:00
bubnikv
3eea327ef0 WIP: When iterating over PrintObject's regions, use the region count
by PrintObject::region_volumes. This is due to the way Print::apply()
works, it does not invalidate an existing PrintObject if a new region
is added to the print.
2018-11-06 15:31:26 +01:00
bubnikv
21caa9de48 Slic3r was split to a Slic3r.dll / Slic3r.exe / Slic3r-console.exe /
Slic3r-noconsole.exe on Windows.
2018-10-26 11:57:52 +02:00
Enrico Turri
9ae6d115a2 New selection -> removed obsolete methods\n+\nFixed a few compile warnings 2018-10-08 15:17:36 +02:00
bubnikv
d7f1c8670f Removed wrong dependency on wxWidgets from libslic3r.
Added cmake message for WXWIN environment variable.
2018-09-19 17:55:17 +02:00
bubnikv
0558b53493 WIP: Moved sources int src/, separated most of the source code from Perl.
The XS was left only for the unit / integration tests, and it links
libslic3r only. No wxWidgets are allowed to be used from Perl starting
from now.
2018-09-19 11:02:24 +02:00