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

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

Conversation

TheSlashEffect
Copy link

Description of the targeted issue

As described in #4261, no change in the project is triggered when the user edits a layer-specific custom gcode. This extends to the other kinds of codes, namely pause and colour change. No change is triggered whether we add, remove, or edit any of these elements.

What this PR changes

This PR addresses the issue described above, by calling the appropriate code paths when these operations are performed.

@supermerill
Copy link
Owner

supermerill commented Jun 29, 2024

thank you for the fix!
merged. will be in next release.

@TheSlashEffect
Copy link
Author

You’re welcome, thanks for the review

J-DRD added a commit to J-DRD/SuperSlicer that referenced this pull request 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]>
J-DRD added a commit to J-DRD/SuperSlicer that referenced this pull request Nov 18, 2024
* assert fixes

* fix synch issue for status

* seam: rework for polylines instead of polygons

* 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

* 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

* more granular thin wall taper

* split interface pattern into top pattern and bottom pattern

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

* fix First Layer Temperature label

* fix internal_bridge_acceleration & bridge_internal_fan_speed
as they changed their name, but not everything was updated after a merge.

* Fix code viewer offset when "only custom start gcode" (start_gcode_manual) is selected.
thanks to @TheSlashEffect for the bug details & proposal for fixing.

* fix 'empty seam' layers.

* Fix collection reversal when unsortable (chained_path_from)

* Fix gcode compute_e_per_mm (if 0 extrusion)

* Fix doubleslider assert

* fix OCCTWrapper on linux: build it before copying

* move size() from ConfigOptionVectorBase to ConfigOption

* move printer config manipulation from Tab to ConfigManipulation
also add some checks about min & max layer height.

* SeamPlacer: fix potential crashing issue

When extract_perimeter_polylines() is changed to use polylines instead
of polygons, the no-op condition is kept as a 0 sized array, however 1
polyline will lead to 0 polygons available too.

Fix this no-op condition to prevent crashing.

Fixes: 0b7ea21 ("seam: rework for polylines instead of polygons")
Signed-off-by: Icenowy Zheng <[email protected]>

* Fix support interface: Don't confuse the first support layer with raft if there's none.
supermerill/SuperSlicer/issues#778

* fix automatic computing of extrusion width
supermerill#4349

* Fix seam polyline looping like a polygon in infinite loop.
supermerill#4348

* fix merge (can print a cube)

* Fix rendering

* merge fixes
polyline split at
skirt direction
asserts

* modify ExtrusionRole so it's easier to debug. (can show the names from the int in the debugger)
Extrusionrole: new role: OverhangExternalPeriemter

* merge fix: grayscale

* comment not-useful asserts.

* notebook tabbar fix

* missing prusaslicer icon

* CalibrationPressureAdvDialog: patches for beta v1.00

large improvements.
now possible to config multi-plate testing
changed default values for test.
cleaned code up a fair bit
found //BUG: custom gcode 'between extrusion role changes' should that be before or after region gcode?

adjusted scale in z for the 90_bend models so print would be slightly quicker.
found a couple new bugs with merge regarding the auto arrange
everything else seems to be ok.

* updated build scripts for macOS and Linux

* fix load_config()

* fix & assert for thin lines discretization.

* Fix some prusa import/export

* gcode viewer legend: fix type, better width.

* fix warning

* - Add perimeter_direction setting, to set the direction (CCW, CW) of contour and holes.
- Fix perimeter direction on classic

* Dialog as warning when doing 100% sparse infill:
 - do you want only solid infill? -> solid_infill_every_layers
 - do you want sprase infill at 100% to use different speed/width/accel settings?

* Fix refresh issues on gcode viewer.
Also change some pointer to references, as they won't be deleted, as it's a member of plater.priv, and given in the constructor.

* fix preferences gui
also search & mode colors

* forgot to add GCodeFormatter.cpp in the merge.

* new fixed splashscreen for 2.7

* post-processing warning dialog don't show if the string is empty.

* fix merge: save float setting, search jump to frequent setting, prusa thumbnails import

* rework max_gcode_per_second:
 * add gcode_command_buffer (int, firmware command queue size)
 * add gcode_min_resolution (now gcode_resolution from prusa is converted to that) (now float or percent of perimeter width)
 * rename min_length into gcode_min_length (now float or percent of perimeter width)
 * new algorithm: use gcode_command_buffer to allow some leeway around max_gcode_per_second, with gcode_min_resolution as upper threshold and gcode_min_length as lower one.
 * use resolution_internal instead of gcode_resolution for support, generate_sparse_infill_polylines_for_anchoring

* merge: clean old now unsused arc structure.

* merge: fix tab tree icons

* gcodeviewer: layer duration, chronology
 - fix merge: now refresh is handled more efficiently, not recomputing what's not needed.
 - fix merge: layer duration is now taken from m_layers_times instead of the Path (is it really better?)
 - chronology: now use the block times, instead of the machine, because the machine is not enough granular and is late
 - allow chronology to have min/max from layer selection

* fix voronoi repair

* merge fix: escape macro

* fix some issues about import from orca
add another step to post-process the import.
add import of 'make_overhang_printable' into 'overhangs_max_slope'
drag-drop 3mf also detect bbs project, spawning the pop-up.

* fix phony when importing orca (&external) config.

* remove arcwelder gitmodule, it's included directly into src by prusaslicer

* win 2.7 deps

* fix stl_to_cpp

* fix compare

* fix some bambu/prusa convert

* set macos intel build to macos 12

* fix linux build

* Adjust new gui for new settings.

* test linux and macos build
force automake 1.16 for macos, as mpfr need at least the 1.16

* Gcode editor: show all extruder-indices fields

* Removed dependency on libtiff

* only keep useful icons

* Slic3r build: build it in a bin dir, so there is no path collision.

* fix merge: good ironing region id

* fix label object: end an object before layer change if multiple objects.

* Change setting's "nullable" values by a proper "enabled" flag.

* fan speed now can be properly disabled.

* Can disabled 4 other settings (instead of -1 value):
 * overhangs_bridge_threshold
 * overhangs_bridge_upper_layers
 * perimeters_hole
 * support_material_bottom_interface_layers

* fix brim separation convert from prusa

* screen scaling comment

* Rework travel_ramping_lift (2.7.2 one was dangerous):
 - now it's done at travel computation, no need to "tag replace"
 - as it's done inside an object sequence, each other object has a little "G1 Z" to ensure it's at the right z, even if the first object (for this layer) is "canceled".
 - note: there is now no z move between before_layer_gcode and layer_gcode

also fix using m_spiral_vase_layer > 0 instead of m_config.spiral_vase
also fix get_unlifted_position()
also simplier point_to_gcode instead of the templated mess making debugging impossible.

* fix ExtrusionRole

* keep user_min user_max in gcodeviewer even in refresh.

* rework overhangs_dynamic_speed & fan_speed:
 * now is activate only for overhangs extrusion from distance [0, overhangs_width_speed]
 * 0% overlap means 'overhangs_width_speed distance'.

* Change parallel_for the one doesn't work by range but with an atomic counter
It's better as you won't have a difficult range wasting cpu cores.
You can still have a difficult last layer/idx => need to sort them before via heuristic when needed.
Also easy way to revert to sequential for testing.

* fix more bambu import issues

* fix infill area check

* Add some debug output utility methods, to create unit tests

* Fix some precision issue (too small lines): SimplifyVisitor, brim generation, variable_width, ArcPolyline::clip
brim: adding some simplify where needed
SimplifyVisitor: delete paths & collections where the length is below the threshold.
add some define to have asserts for ReleaseWithDebInfo, to be able to debug a bit more quickly.

* fix gcode BOOL_EXTRUDER_CONFIG macro

* dynamic_overhang: convert. nil->disabled
fix handle_legacy_composite for it.

* Fix importing nil values (out of bounds) -> disabled

* clean cout from coolingbuffer merge

* fix handle_legacy_composite

* fix unsavedchangedialog::get_string_value

* fix min_overhang_threshold

* fix simplify_straits (fix 5b7330)

* Fix status percentage for multiple objects.

* set cut gizmo visible if "objects_always_expert" in easy mode

* Change layer::lslice from public memeber to private, with public getter.

* Flow safeguard when there is no objects

* Gcode: assert for object_layer_count() =?= tool_ordering.layer_tools().size()
seems true if no support, but wrong if any that add layers.

* Fix AvoidCrossingPerimeters when points are too close together

* ArcPolyline::merge: now can append an epsilon-length line.
also some assert added & fixes

* ensure the polygons are within bounds (no point to close each others)
many asserts, and maybe some ensure_valid to add with more tests.

update to _transform_hole_to_polyholes struct

* fix merge_thin_walls  / medial axis

* fix perimeter direction

* fix status update

* move from boost::optional to std::optional

* add print_version and bridge_angle can be disabled (print_version is needed to convert old bridge_angle to new)

* min_overhang_threshold : better filtering for more bridge coverage.

* Fix config wizard

* filament/material override: tab now use config definition & ui files.
also fix export to prusa

* wip overhangs debug

* Fix overhangs (from dynamic overhagns implementation)
fix commit b9bdf4

* fix layer_count()

* fix Polygon::simplify & clip_clipper_polygon_with_subject_bbox_templ
update test_geometry

* More precision asserts

* Fix width/spacing explanation image size

* add gcode output metadata:
 * object's scale in object's json
 * "print_settings_modified", "filament_settings_modified", "sla_print_settings_modified", "sla_material_settings_modified", "printer_settings_modified" to tell if the profiles used are dirty or not

* Fix script bug when selecting something in the quick settings.

* Allow also "extruders_count" and "milling_count" instead of "num_extruders", "num_milling" as it's what's shown in the gui

* fix wizard destroy
 (revert 6e0017)

* allow to download vendors files from other website than prusa

* Fix issue with Gcode generation toolchange and last_pos_defined()
 * toolchange fix: now gcodewriter::multiple_extruders isn't reset by apply_print
 * last_pos_defined() fix: now the travel is making a direct path if the previous position isn't known.
 * understanding the way the gcode_label_object works: adding some comments & asserts.
 * add ensure_end_object_change_labels where needed (set_extruder & mill switch)

* New feature: brim patch modifier
 * allow to add an extra brim area where you want.
 * if skirt is "from brim", this one will be taken into account.
 * it's extruded after all the other brim extrusions
 * with that, you can make "ears" only where you want, and with a minimal attach point to it's easier to remove.

* New feature: brim negative modifier, to forbid areas to brim.
 * no brim will be printed in these area.
 * brim extrusions will be cut by these areas, and won't try to "avoid" it.
 * it prevent brim patches to be extruded in its area.

* fix bad numbers when using absolute e & only custom start gcode

* Add "object" option in the gcodeviewer:
 * so you can know what will be canceled if you try to cancel an object.
 * so you can know what name or id it has.
 * so you can get the filament weight & length per object.
 * also follow the feature selected/deselected from feature 'tab', so you can have the weight of a part without supports (ie final weight).

* max_layer_height: can now be disabled instead of a 0-value (default to 75% with that)

* Fix ArcPolyline::get_point_from_begin & get_point_from_end

* fix frequent settings: fix unscripted & can remove ':' by using '_' as the end label

* fix bridge_angle to_prusa

* fix macro is_nil() and is_enabled()

* Fix vendor update when min_version is empty

* Add the tool name in left of the filament combobox (10 letters max)

* fix AvoidCrossingPeriemter
 * fix PrintObjectInstance::operator!= that was creating half-avoidable (external) travel for each layer change with 1 object & 1 instance
 * increase ACP boundary bbox to capture travels that are at the external periemeter (and so can't be in the shrunk boundary)
 * remove the travel / bbox cut to a travel -> nearest point in bb : this allow to use internal ACP evrywhere, even between instances, as it will try to go to the nearest inside point first (but still don't know how to leave the current object correctly).
 * change the algo to move the travel point to the shrunk boudary to be more resilient.
 * change float to coord_t for spacing as it's scaled.
 * add a libslic3r::coord_srq to have a nicer way to srq a coord_t in a coordf_t (and maybe another time to have something else)

* Fix custom color for thumbnail

* Fix fill ordering (by island)

* ironing_spacing : allow % of nozzle diameter (default now 25% instead of 0.1mm)

* Fix skirt (brim)

* Rework the contextual menu layout, as it has grow too much:
 * move +, -, set & fill instances into a new "instances" submenu (with new icon)
 * move convert to/from & scale to plater into a "scale" submenu
 * move "add negative volume" into "add part" submenu
 * move "height range modifier" into the "add modifier" submenu (I'm not sure about this one, it obfuscate and may be use often)
 * move support enforcer & blocker into a new "add support blocker/enforcer" submenu
 * move brim patch & blocker into a new "add brim patch/blocker" submenu (with new icon)
   * set a quick patch/blocker in the submenu.
   * allow other shapes for the patch

* Fix some PerimeterGenerator::extra_perimeters shenanigan

* safe SeamPlacer even with empty collection

* ensure more resolution stuff

* Fix solid_infill_every_layers=1 don't generate top solid infill.

* Fix gcode preview line number (don't consider empty string as a new line)

* PerimeterGenerator fixes:
 * create_overhangs_arachne: ignore 1-point path from diff_pl
 * arachne _traverse_extrusions: transform not-closed path that end at its start into closed loop
 * arachne: create correct polygon (no duplicate start/end point)
 * fuzzy_paths: fixed for small paths
 * transform extra overhangs path into loops if they end at their start
 * ensure no path (that aren't in a loop) don't end at its start.

* Fix PerimeterGenerator overhangs:
 * now can disable the overhangs speed threshold, but not the width. same effect as if the speed was higher than the width.
 * extra overhangs now works, and with the correct encroachment.
 * Fix overhang creation: too small segments don't make a problem anymore.

* disable a Preview::update_moves_slider() that trigger on the gcode preview 0-th layer.

* fix layer count (patch to b3adbf)

* fix avoid_perimeters (bad last commit, ensure inner_offset doesn't go over the outer one)

* fix AppConfig::get_int

* allow arachne settings into modifiers

* new setting: First layer infill width (& spacing), like the first layer width but only for infill (like the speed)
 * can be disabled to recover old behavior.
 * now first_layer_extrusion_width can also be disabled. If disabled, it will do as if the first layer doesn't exist.
 * fix some default options missing the 'can be disabled' flag.

* fix ToolOrdering

* fix TravelObstacleTracker

* fix wipetower lift/unlift

* fix missing % in both support_material_layer_height suffix

* add a new 'hints' for scripted widget (allow flaot & int to have a combo appearance) for new s_fill_density frequent widget
* create s_fill_density script for frequent setting to have 100% infill redirect to solid_infill_every_layer
* also fix a rounding issue for script.

* Fix editing vector field in a modifier

* Fix splashscreen scaling with primary screen

* clean Field::any_to_wxstring

* Fix PrintObject::_min_overhang_threshold()

* Fix extrusion width in gcode preamble

* fix retraction & wipe (from bad 2.7 merge)

* Fix wipetower hitting the print bed.

* Rework ramping lift (continue from commit 0123f8f)
 * now works with lift_min
 * now works
 * discard travel_max_lift, use retract_lift & enforce this height.

* Fix crash from unsaved changed dialog

* Add new settings "filament_fill_top_flow_ratio" and "filament_first_layer_flow_ratio"

* Allow to set the min/max user layer height when doing variable layer height

* Max layer height can now grow higher than nozzle diameter (only a warning message is displayed)

* Fix wipe speed

* chronology broken

* Fix range checks, other small improvements (supermerill#4374)

- Make the input range checks consistent with start_idx, end_idx of existing implementation
- Make default extrusion factor 1.0f to prevent similar issues
- Small readability improvements

* avoid crash when seam search on empty tree.
(real fix is in 2.7)
supermerill#4428

* fix 2 points on same spot (2.5.60)
supermerill#4436

* Fix merge : bad LinesBucket::curLines()

* brim patch: a bit better ordering (still not perfect)
need to avoid travel when a surface split
currently from out to in, mayeb the opposite is better?

* Fix overhangs_max_slope for when an object has multiple regions

* slice_closing_radius: now also works on multi-part objects.

* Allow to reduce overhangs speed via small perimeter speed.

* Don't add a toolchange if from prusa and there is a character 'T' in the toolchange field.
instead of "T{next_extruder}" (because of XL)

* Fix editing a preset then saving it by erasing another one is vanishing current changes.

* Fix interaction between flow_ratio(s) and fill_exactly
sometimes, fill_exactly erased the flow ratio change.

* ensure resolution is used in more stuff.

* Fix Frequent settings not updated after a profile change (unless it's the print one).

* fix commit d92c7b Fix editing a preset then saving it by erasing another one is vanishing current changes.

* Fix commit f28375 (spiral vase crash)

* fix merge: settings with different names

* fix wipe first point can be same as last gcode point.

* Fix _merge_thin_walls when merging at the start of the lopp

* Fix wipe algo
also secure wipe (as_polyline() create a new object, it's not a reference)

* Remove last polygon point only if it's necessary.

* fix crash from avoid crossing perimeter

* Fix solid_infill_every_layers adding a solid top layer even with fill_density set to 0

* Allow scripted widget to back_initial_value(), read it and erase again with a new value.

* Fix double_to_string: don't discard max_precision

* fix merge: sorting perimeters & infill areas in regions

* Fix arc generation & manipulation (G2/G3)

* fix smoothing on medium-length travels

* fix overhangs_width_speed/overhangs_width disabled & fix overhangs_speed_enforce.
(b380222 was reverted by the 2.7 merge)

* fix wipe tower

* new setting: filament pressure advance

* fix is_gap_fill_changed_state_due_to_speed

* Fix 3Dpath, brim for SupportSpotsGenerator

* New setting: wipe lift
To start lifting while wiping.

* clean

* fix some ui issues

* Fix ramping lift

* fix lift/unlift for toolchange

* Fix ArcPolyline::get_point_from_begin()

* parallel_objects_step: allow complete_objects_sort

* fix process arc with not-0 origin

* allow more zoom

* fix ToolOrdering::tools_for_layer when the layer z isn't present
(because of no extrusion)

* Fix for _clipper_pl_open (see 37838be, 8cc345, 1f48f3)
Use x to move y, and y to move x, so it's predicable.
Also move x, as the same problem can also arise with same x and different y.

* Fix extra overhangs when insanely big overhang threshold value.

* Fix parallel_objects_step

* fix overhangs_width_speed convert from old version.
and the scripted widget for on/off

* scripted widget: update for get/id enabled
and doc for vector settings.

* fix fill_angle_template

* new setting: first_layer_size_compensation_no_collapse
also fix layer xy compensation & similar stuff

* resolution fixes

* new wipe settings: wipe_min, wipe_lift_min
 * allow to ensure the wipe is long enough
 * the wipe lift can start after the start

* fix retract+wipe+arc

* fix seam projection to the moon

* resolution : be more lenient for simplifying extrusions vs polygons

* fix dynamic overhangs creating 0-length segments

* fix _clipper_pl_open also for clip_extrusion (arachne)

* Fix overhangs with arachne

* Fix ramping travel from unknown position.

* Fix "prusa no thick bridge"

* external_perimeters_first_force: to have all external perimeters (contour & hole) before any internal ones.

* Use tool_name for SET_PRESSURE_ADVANCE if set

* Fix host type choice

* fix some resolution issues

* catch exception when current screen is deleted.

* Seam modifier: now with cylinder to only attract between a min & max z
also add is_brim() in modelvolume

* perimeter direction: don't reverse on external first.

* Add arc_fitting_resolution to reduce resolution for arc creation.

* Optimisation for can_cross_perimeter with big perimeters.

* Fix duplicate_distance refresh.

* Update to gcode_min_length & max_gcode_per_second:
 * now can be disabled via checkbox
 * fixed when using gcode_min_length and not max_gcode_per_second
 * max_gcode_per_second still broken.

* alpha version

* fix script for arm

* Implement Velocity Painting and Extrusion Painting functionalities

* **Velocity Painting**:
  - Add `VelocityPainting.cpp` with functions to adjust print speed based on grayscale image intensity, support projection modes, and process G-code post-slicing.
  - Add `VelocityPainting.hpp` with function declarations for adjusting print speed, supporting projection modes, and processing G-code.
  - Add `VelocityPaintingTab.cpp` to implement GUI for Velocity Painting with input fields and preview.
  - Add `VelocityPaintingTab.hpp` to declare GUI components for Velocity Painting.
  - Add `velocity_painting.py` to implement CLI tool for Velocity Painting.

* **Extrusion Painting**:
  - Add `ExtrusionPainting.cpp` with functions to modify extrusion rates, smooth transitions, and process G-code post-slicing.
  - Add `ExtrusionPainting.hpp` with function declarations for modifying extrusion rates, smoothing transitions, and processing G-code.
  - Add `ExtrusionPaintingTab.cpp` to implement GUI for Extrusion Painting with input fields and preview.
  - Add `ExtrusionPaintingTab.hpp` to declare GUI components for Extrusion Painting.
  - Add `extrusion_painting.py` to implement CLI tool for Extrusion Painting.

* **Documentation**:
  - Add `velocity_painting.md` to document usage of Velocity Painting plugin.
  - Add `extrusion_painting.md` to document usage of Extrusion Painting plugin.

* Fix build errors in SuperSlicer

Address various build issues and errors in the project.

* **MASM-Related Errors**: Modify `src/angelscript/CMakeLists.txt` to exclude unsupported flags for assembly files by adding `set_source_files_properties` for relevant assembly files.
* **Invalid CMake Configuration**: Update `CMakeLists.txt` to include `cmake_policy(SET CMP0175 NEW)`.
* **Missing Dependencies**: Ensure submodules are updated by initializing submodules recursively in `.github/workflows/ccpp_ubuntu.yml` and `.github/workflows/ccpp_win_debug.yml`.
* **PowerShell Script Issues**: Add steps in `.github/workflows/ccpp_win_debug.yml` to replace +UNKNOWN with a date in `version.inc` only if the file exists.

---

For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/J-DRD/SuperSlicer?shareId=XXXX-XXXX-XXXX-XXXX).

* Update `ccpp_win_rc.yml` to replace +UNKNOWN with a date in `version.inc`

* Add a step to check if `version.inc` exists before replacing +UNKNOWN with the current date in the format yyyy-MM-dd

* BuildLinux.sh Staging

---------

Signed-off-by: Icenowy Zheng <[email protected]>
Co-authored-by: supermerill <[email protected]>
Co-authored-by: Christos Karampeazis-Papadakis <[email protected]>
Co-authored-by: Icenowy Zheng <[email protected]>
Co-authored-by: stxve4203 <[email protected]>
Co-authored-by: legend069 <[email protected]>
Co-authored-by: Lukas Matena <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants