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

[BUG] Multimaterial painting not working #4349

Open
jmceara opened this issue Jul 3, 2024 · 0 comments
Open

[BUG] Multimaterial painting not working #4349

jmceara opened this issue Jul 3, 2024 · 0 comments
Labels
bug Something isn't working as intended fixed for the next version That means that you should be able to test it in the latest nightly build

Comments

@jmceara
Copy link

jmceara commented Jul 3, 2024

Bug description
Multimaterial painting not working when using specific widths on extrusions.

Expected behavior
Should work/slice without any error.

!!>> Project File <<!!
Mickey Wizard Hat.zip

To Reproduce
Steps to reproduce the behavior:

  1. With a new and fresh SuperSlicer configuration, add an STL to plate
  2. Use Voron profile (any)
  3. Paint object
  4. Without changing anything, this will work.
  5. Now, go to Print Settings =>Width & Flow and change perimeter to 0 (zero) and save settings. At this point, slice object. This will still WORK because the last changes on perimeter, despiste save, looks like is not applied.
  6. Go to Print Settings and change something. For example, change the number of extruders (from 6 to 7 or 8) and Save settings.
  7. Go to model again and try to Slice. This won't work and trhow the error (screenshot).
  8. To fix this error, change all extrusion widths to percent (%) and restart superslicer (or change anything in Printer Settings TAB).

Screenshots
Error:
image

image

This cause error:
image

This WONT cause error:
image

Desktop (please complete the following information):

  • OS: Windows 11
  • Version 2.5.59.X (tested with all versions, up to 2.5.60)
  • Voron v0 and v2.4 (tested with custom profile and with SuperSlicer profiles)
@supermerill supermerill added bug Something isn't working as intended fixed for the next version That means that you should be able to test it in the latest nightly build labels Jul 4, 2024
J-DRD added a commit to J-DRD/SuperSlicer that referenced this issue 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
bug Something isn't working as intended fixed for the next version That means that you should be able to test it in the latest nightly build
Projects
None yet
Development

No branches or pull requests

2 participants