Commit Graph
100 Commits
Author SHA1 Message Date
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 fd47891793 GLGizmoSlaSupports.cpp: Snapshot label now differs for turning the gizmo on/off
This behaviour was broken by recent merge
2019-09-03 10:16:06 +02:00
Lukas Matena b89d9c7aff Merge branch 'lm_gizmomanagerrefactoring' into dev 2019-09-03 08:29:31 +02:00
Lukas Matena 66d74bc591 Merge branch 'lm_layer_height_validation' into dev 2019-09-02 16:31:59 +02:00
Lukas Matena 7d54b04699 Merge branch 'lm_wiping_dialog_colors' into dev 2019-09-02 16:31:22 +02:00
Lukas Matena 9ac6909d30 Fixed couple of warnings in GUI_ObjectList.cpp and GUI_ObjectSettings.cpp 2019-09-02 16:27:48 +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 19ab746a38 Merge branch 'master' into lm_gizmomanagerrefactoring 2019-09-02 14:31:03 +02:00
Lukas Matena d8a274c5ab Nearly finished refactoring of GLGizmoManager 2019-09-02 14:30:15 +02:00
Lukas Matena 409a7c7734 SLA gizmo open/close should be saved on undo/redo stack 2019-09-02 14:30:15 +02:00
Lukas Matena b6d35c9840 Started an attempt to refactor GLGizmoManager 2019-09-02 14:30:12 +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 350b7cbe04 Fixed out-of-bounds access when adding a colorchange before the first layer
Fixed several signedness related warnings
2019-08-29 12:03:42 +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
Lukas Matena 4992b8f749 ConfigManipulation.cpp: Fixed couple of memory leaks due to heap-allocated wxMessageDialogs that were never freed 2019-08-27 13:27:11 +02:00
Lukas Matena 42c5c19f1c GCodeWriter.cpp: Fixed skipped z-lifts when its height was equal to layer height (https://github.com/prusa3d/PrusaSlicer/issues/2154) 2019-08-27 12:41:00 +02:00
Lukas Matena 3addae3bb4 GCode.cpp: Avoid crossing perimeters performance optimization 2019-08-23 13:06:29 +02:00
Lukas Matena 1d8e060b75 Followup of previous commits - removing some unnecessary code 2019-08-23 12:11:45 +02:00
Lukas Matena bf232e1ade Fixed forward declaration of struct Slic3r::UndoRedo::Snapshot so MSVC does not complain 2019-08-23 10:34:16 +02:00
Lukas Matena 52933d1bab Recalculate SLA supports after undo/redo in case SLA gizmo was active and had supports when the snapshot was taken 2019-08-23 01:42:59 +02:00
Lukas Matena b55a140ad4 SLA gizmo takes snapshots on opening and closing 2019-08-23 01:42:59 +02:00
Lukas Matena c736b657d4 SLA gizmo now refuses to close with unsaved changes in editing mode 2019-08-23 01:42:59 +02:00
Lukas Matena 24b9c926c6 GLGizmoManager.cpp: Initial work on the possibility of a gizmo refusing to close 2019-08-23 01:42:59 +02:00
Lukas Matena e928c0ac0b Added a missing include 2019-08-22 11:35:25 +02:00
Lukas Matena 6a22651501 Fixed a typo preventing compilation on Linux 2019-08-20 20:24:37 +02:00
Lukas Matena 53939796a6 GCode.cpp: Fix of temperature change before print
Function set_extruder can be called before moving to the first layer, m_layer_index is then -1. We definitely don't want to set temperature for second layer in that case.
2019-08-20 14:22:31 +02:00
Lukas Matena 92bdb68e11 Extended the error message when empty layers are detected 2019-08-19 15:50:49 +02:00
Lukas Matena a66c59941d Better error message in case of corrupted PrusaSlicer.ini 2019-08-19 12:55:57 +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 c8ac46df43 Fixed some memory leaks related to heap-allocated wxDialogs
Some correctly destroyed dialogs were also converted to stack-allocated
2019-08-15 12:52:56 +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
Lukas Matena c189140221 Fixed a false positive empty layer report
Reported in https://github.com/prusa3d/PrusaSlicer/issues/2752 and was a result of setting support contact z distance to negative value.
This lowered the maximum allowed print_z of the next layer, even though previous layer had object layers too, so the penalty from the contact z should not have been applied.
Fixed simply by rejecting the negative contact_z.
2019-08-13 11:02:58 +02:00
Lukas Matena 1b5d561b7c Added handling of std::bad_alloc so the user gets more comprehensible error message
Call to boost::nowide::nowide_filesystem() was made Windows only
2019-08-08 16:55:25 +02:00
Lukas Matena 1789179506 GLGizmoSlaSupports.cpp: unproject_on_mesh does not throw exceptions but uses bool return value to signal success 2019-08-07 16:17:41 +02:00
Lukas Matena 8e4f777bd3 One more fix on the empty layers detection - support contact z distance is taken into account
If it wasn't, anything with raft would be rejected unless contact z was zero. We do not want that.
2019-08-07 12:02:30 +02:00
Lukas Matena f61c982111 GCode.cpp: fixed detection of empty layers so it doesn't give false positives
That could happen on empty support layers which do not necessarily matter, since their spacing is not generally synchronized with the object
The new hopefully correct logic is "if there are extrusions on a layer, check that last layer with extrusions is at most the new layer height below
This is a fixup of changes from 0de6e53 and 6ab1cec
2019-08-07 10:54:36 +02:00
Lukas Matena b0d4cb6e06 Memory usage is now shown in SysInfoDialog on all three platforms 2019-08-05 20:17:29 +02:00
Lukas Matena 6da196b419 Corrected return value of ConfigOptionVector::apply_override to what was intended (this didn't cause any bug though, the return value is currently not used) 2019-08-05 15:24:49 +02:00
Lukas Matena 3efae8a03e Added a memory logging function for Mac and Linux 2019-08-05 13:39:03 +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
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
Lukas Matena 98e08e356f Changed snapshot names for reset scale/reset rotation/drop to bed functions (it's done a bit simpler this time) 2019-08-01 12:41:31 +02:00
Lukas Matena 81ab43ea9a Revert "Changed snapshot names for reset rotation/reset scale/drop to bed functions"
This reverts commit 1ca8ff1285.
2019-08-01 12:23:39 +02:00
Lukas Matena 1ca8ff1285 Changed snapshot names for reset rotation/reset scale/drop to bed functions 2019-08-01 10:58:52 +02:00
Lukas Matena aeb29b1184 SLA points on all objects are assigned Generating status before the background processing starts 2019-07-31 13:00:35 +02:00
Lukas Matena 599f2e07db Config parameters accessible from SLA gizmo are now saved on the undo/redo stack 2019-07-31 12:40:47 +02:00
Lukas Matena ab0d1af3ca Fixed a problem with deleting button in SLA gizmo 2019-07-31 10:33:03 +02:00
Lukas Matena 99f34f8321 SLA gizmo: fixed a crash with multiple selection 2019-07-31 10:18:49 +02:00
Lukas Matena 94f9b701e2 Merge branch 'lm_sla_gizmo_undo' 2019-07-30 14:52:44 +02:00
Lukas Matena 07608a80cd SLA gizmo - making sure the cone direction is correctly undone/redone 2019-07-30 14:51:57 +02:00
Lukas Matena 7f33e23fbb Added new icons for mirroring buttons and 'drop modifier to bed' function 2019-07-30 08:39:38 +02:00
Lukas Matena eeef3b42df SLA gizmo now uses the new separate undo/redo stack for manual editing mode 2019-07-29 13:07:49 +02:00
Lukas Matena fe62362960 Hiding the sla support structures after undo/redo 2019-07-28 11:37:08 +02:00
Lukas Matena 0ae46b0635 SLA gizmo and undo/redo: 'autogenerated points' state is now correctly undone/redone 2019-07-23 15:23:38 +02:00
Lukas Matena 0a5f8aa2e8 An attempt to silence the Wreorder warning on OSX build server
Clang apparently cares about order of command line arguments, so -Wall should come before -Wno-whatever
2019-07-23 15:13:47 +02:00
Lukas Matena 91a5d70a62 Fixed a few warnings in headers (meaning they were reported once for each include)
Fixed an identification of CXX compiler in cmake so that 'AppleClang' is recognized
2019-07-23 14:02:20 +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 2c6e4b4e5b Fixed a missing include in UndoRedo.cpp 2019-07-23 09:40:07 +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 fca5562c6c Process start_filament_gcode in case of usual single extruder printer
Reported in https://github.com/prusa3d/PrusaSlicer/issues/2652
2019-07-19 10:02:52 +02:00
Lukas Matena 2b9d285a16 'Place on face' gizmo fix (it used invalid pointer after undo/redo was implemented) 2019-07-17 15:39:58 +02:00
Lukas Matena 81dde630ea SLA support points edits are now pushed onto undo/redo stack 2019-07-17 15:39:58 +02:00
Lukas Matena 52ab8a5f19 Wipe tower fix (do not skip the first toolchange when printing without the wipe tower)
Also, test multi.t updated so it matches new logic of inserting custom gcodes
2019-07-16 13:10:09 +02:00
Lukas Matena dc80616bf6 Fixed a use-after-free problem in object list
this was uncovered by ASAN when attempting to Delete All objects with multiple instances
2019-07-15 17:09:06 +02:00
Lukas Matena 004e2719b1 Merge branch 'master' into lm_warnings 2019-07-15 13:26:55 +02:00
Lukas Matena 63cf5edf28 Updated tooltips on custom gcodes to match actual PrusaSlicer behaviour to reflect recent changes 2019-07-15 11:49:30 +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 45db42ca3b Merge branch 'lm_drop_to_bed' 2019-07-12 13:38:18 +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
Lukas Matena 4b9e366f00 Multimaterial print - making sure that temperatures will be changed with SE printer without the wipe tower 2019-06-26 14:50:12 +02:00
Lukas Matena d2136ab625 ObjectList no longer caps number of extruders to 9 (fixes https://github.com/prusa3d/PrusaSlicer/issues/2558) 2019-06-26 13:12:25 +02:00
Lukas Matena d845332de1 Fixed a crash when using place to bed function with the layer editing active
This was caused by trying to render a deleted layer height profile. Other gizmos were
not affected because they are not dragging at the time of their action, so the profile
was correctly recalculated for them.
2019-06-26 11:51:18 +02:00
Lukas Matena cb916c4dda Fixed warnings in libslic3r 2019-06-25 16:04:29 +02:00
Lukas Matena 471331e8c1 CMake: -Wignored-attributes is not supported in GCC<6.1
-turned off -Wunknown-pragmas for GCC
2019-06-25 16:04:24 +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 82de7bedb1 WipeTowerDialog.cpp - wxEXPAND conflicted with wxALIGN_CENTER_HORIZONTAL (triggered a wxWidgets assert) 2019-06-19 14:52:42 +02:00
Lukas Matena 0481f33ceb Drop to bed function now accounts for instance transformation 2019-06-19 11:53:08 +02:00
Lukas Matena 3d8c3804fa Added 'drop to bed' button into object manipulation panel 2019-06-19 11:04:12 +02:00
Lukas Matena 5a1e1bc10c GUI_ObjectManipulation.cpp - Removed implicit capture by value in some of the lambdas 2019-06-19 11:04:12 +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 7b07a8da83 Reset buttons: synchronization of instances/volumes 2019-06-14 15:28:09 +02:00
Lukas Matena 980c6673d4 Reset buttons - fixed rotation of instances with multiple volumes
Mirroring buttons now hide where appropriate
2019-06-14 15:28:09 +02:00
Lukas Matena a3c1644ead Added mirroring buttons into object manipulation panel 2019-06-14 15:03:42 +02:00
Lukas Matena 9f236bc603 Added transformation reset buttons in object manipulation panel 2019-06-14 15:03:42 +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 678d0e18a7 WipeTowerIntegration class: print_z is not passed around, ToolChangeResult objects are aware of it 2019-06-14 14:43:40 +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
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 8b685c1881 Added color indicators to Purging volumes dialog 2019-06-03 10:41:34 +02:00
Lukas Matena 66a56941a5 SLA dialog: Prevented the slider to have zero width, even in case the text width is calculated incorrectly 2019-05-27 15:36:51 +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
Lukas Matena 03a62e5721 Fixed rendering of support points in SLA gizmo for mirrored objects 2019-05-20 16:33:57 +02:00