Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Decouple Retraction & Wipe (for Wipe only when crossing perimeters) #4293

Open
CuredPrusa opened this issue Jun 2, 2024 · 9 comments
Open

Comments

@CuredPrusa
Copy link

Did I miss something or it's true that checkbox for "Retraction Wipe - Wipe only when crossing perimeters" doesn't work for vast range of SS version, including the latest?

image

I discovered that just recently when I didn't want retraction wipe unless nozzle goes outside the model's wall.

@CuredPrusa
Copy link
Author

Workaround: Retract only when crossing perimeter =true + Wipe while retracting =true + Retract on layer change =false

That brings similar functionality but disables retractions inside the model.
Nevertheless, this checkbox looks dysfunctional.

@supermerill
Copy link
Owner

There was a typo, it needs avoid_crossing_perimeters to be able to be enabled.
other than that, it works as expected:
with
image
without
image

supermerill added a commit that referenced this issue Jun 3, 2024
@CuredPrusa
Copy link
Author

CuredPrusa commented Jun 3, 2024

Yeah, it's a bit awkward.
However, I can not get all retractions inside the model and wipe only when crossing perimeter while crossing perimeter is NOT restricted. That's the whole point of wipe - to make crossing perimeter nicer. If I restrict crossing perimeter, I don't need wipe. If I don't restrict crossing perimeter, I actually need wipe. But I don't want it to wipe at every single retraction. I need wipe only when crossing perimeter, while perimeter crossing is not restricted.
image
image
image
This combination of check boxes gives me this:
image
But I want this, with free crossing perimeter:
image

When I use a workaround, activate avoid_crossing_perimeters together with avoid_crossing_perimeters_max_detour =1mm, then I get something useful, but I don't understand why last retraction has wipe if last travel doesn't cross perimeter:

image
image

@CuredPrusa
Copy link
Author

You can test this on project which I have already sent you (test4) with this modifier:
image

@supermerill
Copy link
Owner

understood, i'll check if the restriction can be lifted without too much work.

@supermerill
Copy link
Owner

The issue is that currently, wipe can only be done with a retraction. To decouple the two, a good amount of work & testing is needed.

@supermerill supermerill changed the title Retraction Wipe, Wipe only when crossing perimeters - dysfunctional Decouple Retraction & Wipe (for Wipe only when crossing perimeters) Jun 4, 2024
supermerill added a commit that referenced this issue Jun 4, 2024
supermerill added a commit that referenced this issue Jun 4, 2024
@CuredPrusa
Copy link
Author

CuredPrusa commented Jun 4, 2024

Well, wipe should be done with a retraction. But retraction should not be done with wipe ;)
I could use a workaround (avoid_crossing_perimeters_max_detour =1mm) .
Is it also difficult to disable wipe at last retraction before travel to seam?
(last screenshot here)
I think that looks like a bug because the command is -wipe only when crossing perimeter- and last travel is not crossing it and there's still a wipe.

@supermerill
Copy link
Owner

if it's the last travel, maybe there is a layer change after, and if the retraction is enforced for the layer change, there will be a wipe?

@CuredPrusa
Copy link
Author

Yes, true, retraction is enforced before layer change. But wipe is not necessary if it is nor crossing perimeter. Wipe only when crossing perimeter.

J-DRD added a commit to J-DRD/SuperSlicer that referenced this issue Oct 11, 2024
* Don't crash if there is some empty lines in the ui layout.

* Fan cooling: move min_fan_speed to printer. fan_always_on changed to a real default_fan_speed
 - updated helper text.
 - now default will be used when a field is deactivated.
 - default_fan_speed =0 is a bit like the old fan_always_on to false.
 - min fan speed is a real min for fan speed (if not stopped)
Should be easier to understand.
supermerill#4009

* fix to_prusa conversion: support_material_extrusion_width

* fix snug support with 0 bottom interface layers
supermerill#4012

* fix search in setting tabs
supermerill#4013

* fix preview for brim_per_object without complete_objects
/supermerill#3969

* wipe tower use filament_max_speed

* fix config rework for linux build

* too many polygons exported in the gcode file
supermerill#3798

* version 2.5.59.4

* revert de70415

* config: change getXxx() to get_xxx() in config
remove setInt for not-enum config

* config: get_xxx() -> get_xxx(idx = 0) (vectorize getter)

* config: nil_value isn't nan for float (or maybe it can be changed)

* Fix default value for filament override

* Use optional<> instead of NaN for retract()

* * Simplify the field <-> config pipes
allow all vector types in text field (';' separated, to avoid problem with ',' vs '.' locales)
Change `post_process` to use the new way (no "serialized" needed anymore)
Remove "one_string" gui type, as it's now a supported as vector with no id.
Need to set all filament-setting id to 0, as the gui need them to update the first elt only (and always that one)

for field <-> config pipe:
 - config now have get_any(id) and set_any(any, id). No need to special optiongroup or gui method.
 - any will carry a type that is in sync with the config type and the id.
    - if id is set or type is scalar, the any is scalara. else the any is a vector of scalar.
 - fields are responsible to cast the any correctly and to set it correctly. no more mess of wxstring & double

* tab::m_config is protected

* creality thumbnail compatibility (jpg without tag)
supermerill#3989

* Search marker: adapt it to bitset.

* Fix cooling slowdown (fix 67b62c2)
supermerill#4015

* Fix slider ticks
supermerill#3975

* fix config_angle_template name & toogle
fix 171a915

* only_one_perimeter_top for arachne (& not over bridges from orca)
from pr by vovodroid from orca from SuSi
supermerill#4022

* fix missing act_bt for filaments

* fix monotonic
supermerill#3770

* Fix strings field (post_process)
supermerill#4017
fix e8672b2

* fix doubleslider nan

* fix Pressure equalizer usage of cooling tag
(after cooling rework from 67b62c2)

* 2.5.59.5

* Fix travel acceleration
supermerill#3821

* max_gcode_per_second: also for travel
(and min_length)
supermerill#3534

* Missformatted URL if no additional GET Parameter has been supplied

* fix flaot&percent open-enum fields
supermerill#4025

* fix gap_fill_min_width changing the width of the gapfill
supermerill#4029

* fix 81bbbd1 typo

* Fix layout versioning issue
supermerill#4031
supermerill#4030
supermerill#3991
supermerill#3976

* Make preferences resizeable, with scrollbar, fit to current screen
supermerill#4028

* italian translation update

* Hack to fix a bug in arachne generator:
remove points that go outside of the object.
supermerill#4032

* version 2.5.59.6

* french typo

* fix 0-length path with thin wall merge

* Avoid crossing perimeter:
 - use the better surface shrink from prusa 2.4
 - now can pass on top surfaces if needed (new setting)

* fix custom string variable without quotes
supermerill#4011

* Fix cooling a post-process parsing problem

* Fix default object & region config apply for gcode creation
also move brim_speed from region_config to object_config
supermerill#4050

* fix filament cooling description crash when no fan is enabled
supermerill#4047

* fix tip of day moving you to setting tab
supermerill#4055

* fix save .3mf with pattern modifier
supermerill#3549

* fix crash on one-laye object (doubleslider)
fix af9a6c2 that was fixing 81bbbd1

* typo in gui settings

* Fix reverse order for perimeters (also for first layer with brim)

* no retract if before_wipe with length 0

* Fix (half of) unit testing & fix overextrusion from perimeter_overlap if encroachment

* FIx 0 acceleration for reprap
supermerill#4048

* Fix Seam gap in filament section keep reactivating
supermerill#4065

* safer nil for float&percent

* fix parsing utf-8 for not-alphanumeric chars
supermerill#4070

* more assert verification & small fixes

* fix de7041 : filament compatible widget
supermerill#4073

* reworked parallel_objects_step to be able to print objects instances in sequence.
supermerill#4043

* fix only_one_perimeter_top for arachne
supermerill#4041

* Fix infill speeds in modifier don't work if not altering the full layer
supermerill#3849

* fix NULL dereference on wxWidgets 3.2

According to the document of wxWidgets, the initializer of wxLocale with
no parameters do not do any initialization at all, thus do not register
its wxTranslations.

Explicitly call Init() with its default parameters to init it with the
default setting, otherwise on Linux with wxWidgets 3.2, the
wxTranslations singleton get is NULL and lead to NULL deference.

The code here is from PrusaSlicer 2.5 [1].

[1] prusa3d@e21921f

Signed-off-by: Icenowy Zheng <[email protected]>

* Change text from "odd" to "even" as the layer numbering began by 1 and not 0 in the gui.
also some other cosmetic changes

* More tests (& fixes) for fills with enforce_full_fill_volume

* put the layer preamble into the layer gcode pipeline, to be parsed by the cooling & other post-process

* fan mover: little fix, began test cases

* Check for fimware compatibility with M73 & M117 (warning)
Don't print M117 for pause/color if firmware not compatible.

* revert 0a65e1 as it's fixed in the gcodeviewer / processor directly (by prusa i think)
supermerill#1076

* Bed texture fixes:
 . if vendor has only texture or model, still show it.
 . png texture can turn black on compression on soe hardware. A new preference (compress_png_texture) is now available to disable the optimisation that can cause that.
You have to relaunch the app to force the reload of the texture or: remove it, go to platter, then re-add it.

* Scripted widget: now can have dependencies in other tabs & update all values of a vector instead of the first one.

* Change fill_density tooltip to make people aware of solid_infill_every_layers
supermerill#4064

* disable external_perimeters_vase if perimeter_loop
supermerill#4027
also better assert

* Better handling of too small extrusions for thin_walls_merge & no seam on the thin walls (unless it's a thin wall perimeter loop).

* clean unsued/harmful code for EEC::chained_path_from
fix it_end bug in print.cpp.

* Fix wrong compute of width from external periemter spacing.
Also better rounding for scripted float.
supermerill#4082

* update profiles

* new setting: gcode_ascii for ascii-only output (replace other char by '_')
supermerill#4070

* Fix loading preset with wrong keys erasing good preset values.
supermerill#4079

* Fix Single extruder MM setup tab not shown at startup
supermerill#4086

* avoid_crossing_perimeters improvements:
 . now can follow the external perimeter to avoid top surfaces
 . can go over top surface at the start & end if the distance is much less than the strait travel (rare case)

* Protect GUI_App owned pointer inside unique_ptr

* Change app default: hide_slice_tooltip to 1 for windows, compress_png_texture to 0 for amd graphics

* from_prusa: set extrusion_spacing settings to phony

* Fix concurrent script execution.

* default fan_printer_min_speed to 0

* fix basic profile

* fix full-fill assert

* bambu/orca 3mf import: include orca 3mf reader & adaptations to translate to SuperSlicer settings.

* Fixes for localization

* updates to italian translation

* update CopyrightsDialog

* fix XY size compensation direction for inner & holes

* fix full fill assert, again

* Fix fan_mover/gcodeprocessor with G2/G3
via new test case
supermerill#4061

* little change to splashscreen setting choice.

* improved conversion to/from prusa/orca: now can tell you what options are ignored.

* Maybe fix BIQU / BTT_TFT thumbnail

* Fix retraction calibration solid fill areas
supermerill#4097

* Calibrations : now accept preferred orientation (init_z_rotate)
supermerill#4099

* Double slider anti-miss-clicks adjustments:
 . Push the (+) color change button as far away as possible
 . Add a little dead zone between the bottom and the lock icon.
 . Also fix a crash that can happen when a color change is done and the computer is a bit slow.
supermerill#4075

* Allow enum values as output string in placeholders.
supermerill#4098

* Fix macos start error (bad icon path)
supermerill#4095

* Fix artifact from mmu paint
supermerill#4101
(fix commit 9d2ccf1)

* Add spanish html translation for calibration
Add files via upload
supermerill#4102

* update profiles: Add thumbnails format to profile that define one.

* Fix thin_wall_merge with loops

* change exception to warning log for AppConfig::save() on badly named thread.
On win11, the vent thread doesn't have the right name?
supermerill#4046

* Don't show outliers in volumetric
Add a button below the legend to switch between the two.

* print_extrusion_multiplier correctly split regions.
supermerill#4108

* version 2.5.59.7

* Update to legend : now with min & max
Move log scale in the legend (and fix it)
Move m_outliers_allowed into the Range, like min, max & log_scale
supermerill#4111

* PresetHint about fan_printer_min_speed if default_fan_speed

* Fix position of temperature calibration labels
supermerill#4099

* Fix phony loading
Fix commit 46bb95
supermerill#4117

* fix custom variables with empty values
supermerill#4120

* double slider: rework tick drawing
supermerill#4116

* assert fixing for fan_mover.

* Print full version on gcode first line (if with date)
supermerill#4118

* Fix mmu painting with periemter width in %
supermerill#3303

* Fix handling of not-gcode commands (like klipper ones) by pressure equalizer
also better handling of ACTIVATE_EXTRUDER by fan mover & pressure equalizer.
supermerill#4112

* Don't write 'G1 Z-0' but 'G1 Z0'
note: will be rewritten into the GcodeFormatter in 2.7.
supermerill#4124

* Fix fan mover kickstart
supermerill#4113

* remove old buggy assert
was checking that the dense_infill collection is unsorted and at the end.
But it's badly coded.
supermerill#4039

* rework of Ranges in legend (wip).
 . mainly to remove rounding issues, resolving bugs.
 . add discrete option

* More logs for the "empty fill pattern" 3mf save issue

* better comment for ConfgOption flags

* revert to unsigned dmg for 2.5
until I have some days to repair everything.

* version 2.5.59.8

* version 2.5.59.9

* Fix some arachne problem (seams and overhangs)
reproducible with model from issue 4129

* exemples of freq_params

* log message for macos

* debug log for loading png images (there may have some problem on macos?)

* seam notch : allow almost convex/concave, so little imprecision doesn't prevent from detection.
set seam_notch_angle min value to 180, as it doesn't
supermerill#4143

* Add logs for when the slicer try to rename a file.
supermerill#4135

* fix import project dialog & pattern substitution

* allow multi-stl import also with single extruder printer
supermerill#4149

* fix ordering objects by min y
supermerill#4147

* fix medial axis ctrl-v old error

* profiles: change label_printed_objects to gcode_label_objects

* Fix start gcode for complete_objects (sequential printing) with wipe tower
Fix commit 3cd121
Note: now, with 3cd121, fan_mover post-process the start_gcode. It's needed to know the current fan speed, but it may be useful to add a kind of feature to "disable" the modification for this part.
supermerill#4136

* arachne can create (randomly) double-loops in one loop

* Fix perimeter_bonding (was only working for 0% or 50%)
updated disabled & tooltip

* more responsive cancel on long prints.

* fix gap_fill_overlap
supermerill#4138

* fix bridge_type = layer_height
supermerill#4137

* new setting: fill_aligned_z to align the spacing of sparse infill (default to true)
supermerill#4131

* update to gcode viewer legend:
. switch min & max position for gcode viewer if vertical
. fix outliers
. add preference for max decimals (now 2 by default instead of 3)
. allow outliers switch for all numeric fields
. hide log scale if discrete mode

* Updates to prusa config export
Make sure each setting is ignored of marked as prusa-compatible.

* Setting for alternating perimeter printing direction every even layer
supermerill#4159

* apple silicon build fix

* move freq settings definition to their own (strip-down) tab.
add vector get/set for script
fix enum set_string for script
allow \: in ui files
better script debug

* fix test_flow

* assert & failsafe about slicing with no height.

* test flow for print & gcode

* fix frequent param
 (fe198c)

* comment exact_last_layer_height

* Fix legend min/max inversion

* Fix & optimize windows github builds

* Fix & optimize windows github builds

* upload mac_arm dmg for rc

* fix slider/wipetower check crash

* fix prusalicer -> slicer_name typo

* Fix fan speed overflow
supermerill#4233

* Fix invalidation when normal quick setting is changed
supermerill#4252

* Fix gcodeviewer
by fixing frequent settings construction
supermerill#4248

* Fix fan mover gcode corruption
supermerill#4254

* Fix Wipe tower starting wipe speed as %
supermerill#4251

* Fix fill_aligned_z: don't affect bridges.
supermerill#4240

* Fix fan mover: don't skip long lines
Also put the fan in the right order (before & after where inverted when lines are skipped)
supermerill#4249

* Fix unsaved changed settings displayed even if not in the gui.

* little wipe point fix
At this place, I had the case where one has 1 unit of difference in one axis.

* Seams: overhangs are now only strongly discouraged (instead of evicted)
If there is only overhangs or if the overhangs is very small.
supermerill#3727

* Seams: overhangs: don't remove overhang_angle_threshold, it seems to create artifacts.
supermerill#4217

* Allow to load monotonicgapfill for solid_fill_pattern
now that it's in the list.
supermerill#3281

* fix missing solid_infill_below_width removed from prusa

* Fix mmu filament stat
supermerill#4262

* version 2.6.59.10

* fill_aligned_z: fix uninitialized atomic_int64_t (supermerill#4279)

The behavior of atomic_int64_t's default constructor will leave it to an
uninitialized state (accessing it will be undefined behavior).

Use 0 to explicitly initialize it because it will be soon compared and
exchanged.

Signed-off-by: Icenowy Zheng <[email protected]>

* double slider: refresh only when needed.

* Fix double slider with wipe tower.
May still has some issues on special cases.

* fix linux debug build

* fix missing retractions
supermerill#4264

* Fix dark mode text in manipulation (for not-windows)
supermerill/sueprslicer#2740

* Change glReadPixels(GL_DEPTH_COMPONENT) from flaot to int: better performance & compatibility
supermerill#2864

* Fix search filament & search icon
supermerill#4267

* Fix useless 'change extruder' command in gcode when single extruder

* Fix reordering problem (because arachne can create loop in '8' shape)

* fix writing too small segments into gcode, so there wasn't any effective move/extrusion

* linux build little fixes

* fix occtwrapper for linux

* remove some linux warnings.

* correct release ubuntu version name

* better hints for xy compensations
supermerill#4276

* Fix wipe distance
supermerill#4278

* Change label of autospeed settings to avoid confusions with real max speed & volumetric speed.

* fix Linux installation creating broken superslicer-gcodeviewer symlink (supermerill#4208)

Currently the symlink target is hardcoded as slic3r, which is not the
binary name of SuperSlicer.

Change it to use the variable for application command name instead.

Signed-off-by: Icenowy Zheng <[email protected]>

* fix gcode viewer refresh when selecting travel moves
supermerill#4287

* fix multipath can_reverse
supermerill#4217

* typo wipe_only_crossing
supermerill#4293

* calibration project name, and over-bridge -> above the bridges
supermerill#4295

* Add gcode to add if start_gcode_manual

* version 2.5.59.11

* Fix search frequent setting.
supermerill#4299

* fix OCCTWrapper on linux: build it before copying

* version 2.5.59.12

* use the right optgroup when creating the frequent tabs.

* variable width path: allow reverse.

* fix brim on first support layer (when it's not on the bed)
supermerill#4300

* Fix Slider refresh data
was sending gcode data when refreshing for a preview.

* Fix crash when wipe into collapsed area
supermerill#4301

* Fix seam notch for outer perimeters.
supermerill/SuperSlicer/supermerill#4305

* Replace some deprecated boost functions.

Actually, all those deprecated functions were internally called those new functions. So there isn't any risk to use them directly.

* fix bad support grid
(introduced by fill_aligned_z, caa4a0)
supermerill#4306

* Fix deactivate seam visibility search if disabled.

* fix ExtrusionLoop::split_at() and improved ExtrusionLoop::split_at_vertex()

* Fix crash when multiple objects are printed, and the first one isn't the tallest.
supermerill#4309
supermerill#4313

* add some saveguards in placeholders

* secure wipe tower first layer speed.

* fix synch issue for status

* export to prusa: compute min & max layer height

* Trigger change in project upon layer-specific gcode changes (Fixes supermerill#4261)
supermerill#4334

* fix (snug) support too narrow
Also allow the periemter around support to overlap itself like with prusaslicer (unless there is a 0 support xy distance).
supermerill#4333

* fix ExtrusionLoop::split_at() and improved ExtrusionLoop::split_at_vertex()
(fix eaf295)

* Change gapfill for bottom bridge to support type.
allow gapfill to be bridge.

* Fix thin wall merge with perimeter creating 0-extrusion size perimeters
supermerill#4330

* Don't deactivate no_perimeter_unsupported_algo with arachne, it works.
supermerill#4324

* version 2.5.59.13

---------

Signed-off-by: Icenowy Zheng <[email protected]>
Co-authored-by: supermerill <[email protected]>
Co-authored-by: Aviator-Coding <[email protected]>
Co-authored-by: Icenowy Zheng <[email protected]>
Co-authored-by: Lepes <[email protected]>
Co-authored-by: Giuseppe Sorrentino <[email protected]>
Co-authored-by: Lukáš Hejl <[email protected]>
Co-authored-by: Christos Karampeazis-Papadakis <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants