Feature high flow merge - #787
Closed
zhouzengping wants to merge 18 commits into
Closed
Conversation
* Added high-flow template parameters and related interfaces. * Added "filament_flow_step_size", completing the reading mechanism for filament configuration. * Preset changes and adapt for high_flow saving. * Add a new template function named "get_value_at". * feat: align filament_volume_type per filament and migrate it to coEnums. * feat: add per-extruder nozzle_volume_type (standard / high_flow). * feat-flow: support filament_max_volumetric_speed persistence, parsing, and G-code generation. * feat: high-flow filament grouping, flow combo, and type adaptation - Add FilamentVolumeType enum with to_string/from_string conversions - Add filament_volume_type / nozzle_volume_type as coEnums in config system - Add per-nozzle flow combo in sidebar; declare high flow for U1 0.4 - Add flow-type helper facade (FlowTypeHelper), high-flow compat checker (HighFlowCompat) - Add slice-mode hover popup on slice button (SliceModePopup) - Add custom filament grouping dialog with drag-and-drop (FilamentGroupDialog) - Gate slicing behind grouping dialog in custom mode - Add zh_CN translations for high-flow grouping UI - Add filament_grouping_mode config option and grouping constants - Fix: enable flow combo via vendor version bump - Fix: decouple grouping from nozzle combos - Fix: rebuild nozzle UI after diameter switch - Fix: swap button uses SVG icon without gray background - Fix: remove duplicate nozzle_volume_type registration - Fix: FlowTypeHelper uses coEnums instead of coStrings for nozzle_volume_type - Fix: FilamentGroupDialog uses FilamentVolumeType enum internally - Add test_flow_type for enum conversion validation * Batch modification of "process" parameters to support high-volume parameter access. * Update consumable files. * feat-flow: support standard and high-flow filament parameter variants - add shared helpers for resolving filament parameters by nozzle flow type - preserve standard and high-flow values during preset composition - update slicing, G-code, calibration, and GUI consumers - prevent calibration saves from overwriting other flow variants * The process configuration file "process" and "machine" added high-flow parameters. * Add to snapmaker.json file. * The filament file in the process configuration file section has added high-flow parameters. * feat-flow: support floats-or-percents option fields - create text controls for coFloatsOrPercents options - support indexed default-value display and value parsing - read and write individual float-or-percent vector elements - preserve percentage values during GUI updates - log unsupported option types instead of throwing an exception * Delete a few unnecessary process files. * feat-flow: serialize only active filament flow variant values in G-code. * feat-flow: warn about incompatible nozzle flow types in newer 3MF files Detect filament_extruder_map when loading a 3MF created by a newer Snapmaker Orca version and display a compatibility warning. Add the corresponding Simplified Chinese translation. * feat: SSWCP flow type protocol, nozzle flow sync, and resolve_machine_info Add SSWCPProtocol parsing unit with flow type normalization, filament/nozzle flow type exposure, query_machine_info refactor with nozzle flow synchronization, and resolve_machine_info field-priority merge replacing all query_machine_info call sites. Key changes: - SSWCPProtocol: flow type parsing, normalize_machine_model, parse_extruder_nozzle_info - resolve_machine_info: parallel system_info + objects.query, 3-state ResolveResult - 3 call sites refactored (sw_mqtt_set_engine, nozzle sync, filament sync) - parse_extruder_nozzle_info: leave volume_types empty when firmware lacks flow field, so user-configured high_flow is never overwritten on old firmware - FlowTypeHelper: nozzle volume type support - PresetBundle: connect_machine_info_list for cached nozzle slots - MachineIPType: lock_guard exception safety - Unit tests: 8 cases, 67 assertions - Documentation: design doc, flow type sync, resolve_machine_info changes * Update the process interface. Change all the configuration related to speed in the process to support high flow. * fix: serialize flow support fields with commas in G-code Use comma-separated values for filament_flow_support, process_flow_support, and printer_flow_support when exporting the G-code configuration block. * The process configuration UI supports switching of traffic types, as well as switching of the dirty state for different traffic types. * feat: add flow variant switch to filament settings pages Extend the flow variant selector to support multiple pages and show the Standard/High Flow switch on Filament, Cooling, Setting Overrides, and Multimaterial pages. Keep the selector hidden on other filament settings pages and update variant-specific option indices and dirty states when switching modes. * fix: isolate filament override states by flow variant Use the active flow variant index only for filament options that support Standard and High Flow values. Keep non-variant override options on their original index to prevent unrelated checkboxes from becoming selected when switching flow modes. * feat: plain-text flow-variant selector UI on high-flow branch * feat: mark high-flow filament parameters with a flow-variant icon Draw a flow-variant marker icon to the left of each filament flow-variant parameter's label, but only when the edited filament supports high flow (filament_flow_support declares >1 variant). - new resources/images/flow_variant.svg (teal/grey flow marker) - ConfigOptionsGroup::get_config() accessor - OG_CustomCtrl paints the icon in CtrlLine::render; the label column shrinks by the icon width so field columns stay aligned * feat: hide flow-variant toggle when the preset declares one variant Gate Tab::update_flow_variant_view_visibility on modes.size() > 1 so a preset that only declares [standard] hides the whole selector instead of showing a meaningless one-segment standard-only toggle. Uniform across the filament, process and printer flow-variant views. * fix: swap-groups button icon double-scaled on HiDPI ScalableBitmap's px_cnt is a logical (DIP) size that create_scaled_bitmap already passes through FromDIP; wrapping it in FromDIP again scaled the icon by DPI squared, overflowing the 20x20 swap button on HiDPI displays. Pass the raw 14, matching the other icons in this dialog. * style: teal background for the selected nozzle tab The selected tab in the per-nozzle CustomNotebook now fills with the teal accent (OrcaSlicer#9688) with white text, matching the Figma nozzle selector. The rest of the tab-bar styling is unchanged. * feat: gate slice-mode popup on distinct selected nozzle flow types The standard/custom filament-grouping hover popup (and the custom FilamentGroupDialog confirm on slice) now appears only when the nozzles actually mix flow variant types -- distinct_nozzle_flow_type_count() >= 2, based on the per-nozzle flow combos rather than the printer's high-flow capability. When every nozzle uses the same type there is nothing to group, so slicing routes every filament to that one type (guaranteed by get_config_idx / flow_variant_index returning index 0 for an unsupported mode). * Add high-traffic black and white list prompts: Do not recommend consumables prompt and unavailable consumables prompt. * Fix the issues where the type name is not displayed completely, and where the right and left boundaries are not symmetrical. * fix: preserve scalar option state with flow variants Keep the original shallow comparison behavior for regular options on pages that mix scalar and flow-variant fields. Apply indexed deep comparison only to registered flow-variant options so page refreshes do not affect unchanged scalar option state. * fix: use selected flow variant for dependent controls Resolve pressure advance and multitool ramming dependencies from the currently selected flow variant instead of the printer nozzle flow type. This keeps dependent controls isolated between standard and high-flow filament settings. * feat: slice flow follows the selected nozzle type when grouping is moot When the custom per-filament grouping does not apply (standard mode, or the nozzles are not mixing flow types), every filament now follows the single selected nozzle flow type at slice time -- all-standard nozzles slice standard, all-high-flow nozzles slice high flow -- instead of being driven by a stale custom filament_volume_type mapping. High-flow values apply only for a custom + mixed setup (per-filament dialog mapping) or uniformly high-flow nozzles. Adds FlowType::sync_filament_volume_types_for_slice(); the slice-button handler calls it in the else branch of the custom-grouping gate. * style: nozzle tab / flow icon / locale-aware brackets, and reword grouping copy - CustomNotebook: deepen the unselected nozzle tab text to #6B6B6B, matching the process flow toggle's unselected grey - flow-variant parameter icon (flow_variant.svg) updated to the new artwork - flow-variant toggle brackets are locale-aware now: CJK brackets for Chinese, ASCII square brackets for other languages - reword the custom filament grouping dialog intro and tip strings, with the matching zh_CN .po msgid updates * feat: require a high-flow-capable filament to show the custom grouping popup The standard/custom grouping hover popup and the FilamentGroupDialog confirm on slice now appear only when -- in addition to the nozzles mixing flow types -- at least one selected filament declares high_flow in its filament_flow_support. Adds FlowType::any_filament_supports_high_flow(). * fix: preserve independent flow variant option states - compare dirty states per flow variant, including nullable values - preserve nil state for optional filament override fields - fix checkbox and reset behavior after switching flow variants - read nullable vector values using the selected variant index - handle nullable float and percent updates with their actual types - normalize process flow option vectors to the declared variant count - prevent standard and high-flow speed values from sharing one slot * A new black and white list mechanism for consumables has been added. The list of consumables that are not recommended or not supported will be accessed through a JSON file. * fix: synced nozzle flow types not applied to UI Two issues broke nozzle-flow-type sync from the printer: 1. select_complete_cached_nozzle_info cleared the caller's flows when the cache was incomplete, discarding the values just resolved from objects.query/system_info -- so the captured nozzle_volume_types was empty and set_nozzle_volume_types was never called. Now an incomplete cache leaves the resolved flows untouched (only a complete, valid cache overrides them). 2. In the uniform-diameter sync branch, update_nozzle_settings (which rebuilds the per-nozzle flow combos by reading nozzle_volume_type from config) ran BEFORE set_nozzle_volume_types, so the combos were rebuilt with stale values. Write the synced flow types first, then rebuild. * fix: default synced nozzle flow types to standard when machine omits them When resolve_machine_info got nozzle diameters but no flow types from either system_info or objects.query, nozzle_volume_types stayed empty, so the sync handler skipped set_nozzle_volume_types entirely -- the config kept its old/preset value while the UI reported a successful sync. Now resolve normalizes: if diameters are present but flows are absent, fill flows with FLOW_MODE_STANDARD (one per nozzle). This matches the read-side semantics (FlowType::nozzle_volume_types() already pads missing entries with standard) and applies to both resolve call sites. * fix: reset per-nozzle flow types to standard on new project Printer presets carry no per-nozzle flow-type field (nozzle_volume_type lives in the shared project config, not the preset). On New Project the per-nozzle flow types therefore lingered at whatever the previous project left -- e.g. high flow -- while the diameter correctly followed the newly selected preset. Add FlowType::reset_nozzle_volume_types_to_standard() (fills one standard entry per nozzle, sized to the current nozzle count) and call it at the end of Plater::new_project so a fresh project always starts on standard flow. * fix: rebuild nozzle panel after new-project flow-type reset The flow-type reset in Plater::new_project wrote nozzle_volume_type to config but did not refresh the nozzle panel. Entry points that select a preset first (home-page device card -> sw_NewProject) already rebuild the panel via on_select_preset BEFORE new_project runs, so the combos kept showing the pre-reset flow types. Rebuild update_nozzle_settings after the reset (deferred via CallAfter so no combo is destroyed mid-event on the select path). The menu Ctrl+N path already worked; this makes the device-card path match. * Update on the latest changes to process consumables. * Add a modified updated version number. * Adjust all consumable files to ensure a unique tree structure. * Update the consumable version number to 02.03.01.02 * Revise the scattered node files of the partial process documents. * fix: scroll overflowing colours in custom filament grouping dialog * Restore renamed consumables to prevent user presets from becoming invalid. * Revise the process documents by adding a "renamed_from" field to ensure compatibility after the process files are renamed. Also, modify the naming of some color-mixing processes to achieve a unified naming convention. * After fixing the high traffic issue, close the software. The variable values in the pop-up window have incorrect changes. * Fix the issue where modifying parameters does not take effect in the high-flow mode when restoring the filament retraction length. * fix: localize flow toggle labels; refine custom filament dialog dark mode * feat: custom filament dialog title bar; slice on flow-regroup confirm * Fix dirty state for percent speed options * Fix the issue where modifying the high-traffic temperature setting does not work. * fix: preserve unselected indexed filament options during transfer Keep indexed option keys such as `option#0` and `option#1` when transferring preset changes. Cache the base vector option for reading, but apply the cached values with the original indexed keys so only the selected vector elements are updated in the target filament preset. This prevents unmodified standard or high-flow volumetric capacity values from being overwritten during filament migration. * Fix the issue where the modified default_jerk and max_volumetric_extrusion_rate_slope cannot be enabled when in high traffic mode, as the expanded values controlled by them are unable to be activated. * Revise the description of the color blending process. * Fix the issue where the modifications to the parameters filament_wipe_distance and filament_z_hop_types do not take effect in the high-traffic mode. * feat: add 3MF project schema compatibility warning Add project schema version metadata for 3MF files and warn users when loading a project created with a newer schema version. Continue loading project settings and embedded presets while notifying users that the nozzle flow rate type may not match the file. * fix: reword 3MF schema version warning dialog and update zh_CN translation * Modify the file name of the color mixing process. * Merge the processing procedures based on the high-flow branch. --------- Co-authored-by: lzqiang46-cyber <lzqiang46@gmail.com> Co-authored-by: ZhangZheng <99784311@qq.com>
…'s preset settings are not lost.
…ss restarts: mirror it into the AppConfig "nozzle_volume_types" section and restore it after the startup blank-project reset; New Project still resets to Standard without wiping the memory.
… model configuration after the consumable parameters are selected for override.
…grouping strings with zh_CN translations
… the mobile capability of the device has been removed.
* fix revert try catch for the mqtt connect. * fix add try catch for mqtt. * feature add the exception catch for mqtt. * fix exception not catch question # Conflicts: # src/slic3r/GUI/SSWCP.cpp
|
❌ Documentation validation failed 🔗 Link Validation Errors📄 doc/developer-reference\Built-in-placeholders-variables.md:
📄 doc/developer-reference\How-to-wiki.md:
📄 doc/Home.md:
📄 doc/Tab.cpp:
🖼️ Image Validation Errors📄 doc/developer-reference\How-to-create-profiles.md:
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Screenshots/Recordings/Graphs
Tests