Commit Graph

87 Commits

Author SHA1 Message Date
YuSanka
befbd6b0fe Merge remote-tracking branch 'origin/master' into custom_gcodes 2020-06-08 12:27:29 +02:00
YuSanka
629584e28f Editing of the custom GCodes like ColorChange and PausePrint 2020-06-07 22:42:54 +02:00
Vojtech Bubnik
6529543518 WIP: first_layer_print_min/max, first_layer_print_convex_hull
placeholders for the G-code export.
2020-06-03 16:30:37 +02:00
Lukas Matena
c2cd430941 Few more include chains broken 2020-05-26 13:46:59 +02:00
bubnikv
4de4d765ee Merge branch 'master' of https://github.com/Prusa3d/PrusaSlicer 2020-04-28 19:31:18 +02:00
Lukas Matena
7fc4a71715 Moved the projection function into PrintObject.cpp 2020-04-21 13:50:47 +02:00
bubnikv
10110ed307 WIP: Ironing over top surfaces. 2020-04-14 11:53:28 +02:00
enricoturri1966
3d6c9e54e9 ENABLE_THUMBNAIL_GENERATOR set as default 2020-03-25 10:15:02 +01:00
bubnikv
cab42b89ad Fixed some compilation warnings. 2020-03-04 13:06:21 +01:00
Lukas Matena
8be3d074fd Fix of wipe into object
The bug was introduced in 15eedef. lower_bound_by_predicate implementation returns first item that does not satisfy the predicate, not last item that does.
2020-02-21 10:05:33 +01:00
YuSanka
487ac0423e Implemented time estimation for PausePrint (#3544)
DoubleSlider: fixed get_color_for_color_change_tick()
2020-02-20 17:33:43 +01:00
bubnikv
4e11552da9 Spiral vase improvements and bugfixes.
Fixes Connecting / expanding Bottom Layers to Vase Perimeter #253
Fixes Slicing error in vase mode #452
Fixes Slicing Issue (Vase Mode, 0.6mm dmr nozzle) #1887
Fixes Top fill pattern isn't used in spiral vase mode #2533
Fixes Cisar's vase doesn't slice correctly, creates artefacts #3595

When the model is sliced, all the contours are newly oriented
counter-clockwise (even holes), merged and then only the largest area
contour is retained. In perimeter generator, if the largest contour
splits into multiple perimeters, newly only the largest area perimeter
is retained in spiral vase mode. These two changes solve #3595 and similar.

The infill is newly calculated only for the bottom solid layers
if the spiral vase mode is active (removes various unwanted infill
along the vase walls), and the last bottom solid layer is switched
to a top solid pattern (solves #2533).

The thin walls are newly enforced to be disabled in spiral vase mode,
and the "ensure vertical shell wall" is enforced in spiral vase mode
to extend the bottom of the vase to the vase hull (fixes #253).
2020-02-08 21:36:43 +01:00
bubnikv
b8c898bf40 Fixed a bug in validation of the FDM Print to check for extruder
collisions against already printed objects: Rotation of an object
was not being taken into account.
Fixes #2450 PrusaSlicer 2.0 Sequential printing vs rotate object
Fixes #3585 Always Sequential Printing Error (Regardless of setting, placement or object size)

Fixed some collisions in sequential print just after arrangement by
making the validation using a slightly lower extruder radius value
than the arrangement.

Refactored PrintObject coordinate system so that the PrintObject's
coordinate system is always centered in respect to its ModelObject's
geometries. This refactoring may improve path planning a bit and
it may lower the requirements on bits representing Clipper coordinates
by 1 bit.
2020-02-07 14:10:27 +01:00
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
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
20fd874ff2 Merge remote-tracking branch 'origin/master' into ys_cp_improvements 2020-01-16 15:01:57 +01:00
bubnikv
3acfae92e1 Fix of recent wipe tower / tool ordering refactoring. 2020-01-16 14:59:16 +01:00
YuSanka
099118d6f2 Merge remote-tracking branch 'origin/master' into ys_cp_improvements 2020-01-16 14:02: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
YuSanka
15f873dd74 DoubleSlider: Implemented code for check of used extruders for MustiAsSingle mode 2020-01-15 15:35:56 +01:00
bubnikv
ab6a2b71e8 Another bugfixes of GCode export after refactoring. 2020-01-14 15:12:45 +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
15eedef74b Refactoring of ToolOrdering (wipe into infill / object)
Refactoring of GCode::_do_export()
Helper lower_bound and search functions similar to std, but without
needing the value object explicitely.
2020-01-10 11:27:04 +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
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
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
4b0fe7cba4 Implemented custom extruder(tool) change from DoubleSlider 2019-10-15 15:42:30 +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
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
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
bubnikv
d146a0237e WIP: Reworked the infill generator to merge areas with the same
properties.

Note for Vojtech:
Review src/libslic3r/Fill/Fill.cpp once again,
add test for G-code generator properties (extrusion speed, cooling?)

Fixes Modifier slice/move efficiency #1005
2019-09-04 16:11:16 +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
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
Enrico Turri
ad5329253e Merge branch 'master' of https://github.com/prusa3d/PrusaSlicer into et_color_print_times 2019-07-08 08:45:11 +02:00
Enrico Turri
25d916f144 Color change time estimates 2019-07-08 08:40:20 +02:00
Lukas Matena
cb916c4dda Fixed warnings in libslic3r 2019-06-25 16:04:29 +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
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
Bryan Smith
f364b956fc Add [total_toolchanges] placeholder for filename and custom gcode sections. 2019-06-05 11:23:44 -04: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