diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index ee325b7ef7..79ffafa0f1 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -142,7 +142,7 @@ jobs: flatpak: name: "Flatpak" container: - image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-49 + image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-50 options: --privileged volumes: - /usr/local/lib/android:/usr/local/lib/android diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b81b0..0000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/OrcaSlicer.iml b/.idea/OrcaSlicer.iml deleted file mode 100644 index f08604bb65..0000000000 --- a/.idea/OrcaSlicer.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index f60388162d..0000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index 79ee123c2b..0000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 79b3c94830..0000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b80725f1d9..0000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfbb..0000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/build_flatpak.sh b/build_flatpak.sh index 0dd07041be..b805bb3422 100755 --- a/build_flatpak.sh +++ b/build_flatpak.sh @@ -199,22 +199,22 @@ echo -e "${GREEN}All required dependencies found${NC}" # Install runtime and SDK if requested if [[ "$INSTALL_RUNTIME" == true ]]; then echo -e "${YELLOW}Installing GNOME runtime and SDK...${NC}" - flatpak install --user -y flathub org.gnome.Platform//49 - flatpak install --user -y flathub org.gnome.Sdk//49 + flatpak install --user -y flathub org.gnome.Platform//50 + flatpak install --user -y flathub org.gnome.Sdk//50 fi # Check if required runtime is available -if ! flatpak info --user org.gnome.Platform//49 &> /dev/null; then - echo -e "${RED}Error: GNOME Platform 49 runtime is not installed.${NC}" +if ! flatpak info --user org.gnome.Platform//50 &> /dev/null; then + echo -e "${RED}Error: GNOME Platform 50 runtime is not installed.${NC}" echo "Run with -i flag to install it automatically, or install manually:" - echo "flatpak install --user flathub org.gnome.Platform//49" + echo "flatpak install --user flathub org.gnome.Platform//50" exit 1 fi -if ! flatpak info --user org.gnome.Sdk//49 &> /dev/null; then - echo -e "${RED}Error: GNOME SDK 49 is not installed.${NC}" +if ! flatpak info --user org.gnome.Sdk//50 &> /dev/null; then + echo -e "${RED}Error: GNOME SDK 50 is not installed.${NC}" echo "Run with -i flag to install it automatically, or install manually:" - echo "flatpak install --user flathub org.gnome.Sdk//49" + echo "flatpak install --user flathub org.gnome.Sdk//50" exit 1 fi diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 04ce132983..80c8acb881 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -111,7 +111,7 @@ msgstr "" msgid "On highlighted overhangs only" msgstr "" -msgid "Erase all painting" +msgid "Erase all" msgstr "" msgid "Highlight overhang areas" @@ -181,6 +181,9 @@ msgstr "" msgid "No auto support" msgstr "" +msgid "Done" +msgstr "" + msgid "Support Generated" msgstr "" @@ -330,6 +333,12 @@ msgstr "" msgid "Fixed step drag" msgstr "" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "" @@ -478,6 +487,18 @@ msgstr "" msgid "Build Volume" msgstr "" +msgid "Multiple" +msgstr "" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "" + msgid "Part" msgstr "" @@ -580,12 +601,6 @@ msgstr "" msgid "Add connectors" msgstr "" -msgid "Reset cut" -msgstr "" - -msgid "Reset cutting plane and remove connectors" -msgstr "" - msgid "Upper part" msgstr "" @@ -604,6 +619,9 @@ msgstr "" msgid "Cut to parts" msgstr "" +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Perform cut" msgstr "" @@ -830,6 +848,9 @@ msgstr "" msgid "Advanced" msgstr "" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1457,15 +1478,6 @@ msgid "" "feature 2 has been feature 1" msgstr "" -msgid "Warning: please select Plane's feature." -msgstr "" - -msgid "Warning: please select Point's or Circle's feature." -msgstr "" - -msgid "Warning: please select two different meshes." -msgstr "" - msgid "Copy to clipboard" msgstr "" @@ -1517,6 +1529,15 @@ msgstr "" msgid "Point and point assembly" msgstr "" +msgid "Warning: please select two different meshes." +msgstr "" + +msgid "Warning: please select Plane's feature." +msgstr "" + +msgid "Warning: please select Point's or Circle's feature." +msgstr "" + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1693,6 +1714,18 @@ msgstr "" msgid "Info" msgstr "" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1749,6 +1782,23 @@ msgid "" "version before it can be used normally." msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" @@ -2281,10 +2331,10 @@ msgstr "" msgid "Edit" msgstr "" -msgid "Delete this filament" +msgid "Merge with" msgstr "" -msgid "Merge with" +msgid "Delete this filament" msgstr "" msgid "Select All" @@ -4359,9 +4409,6 @@ msgstr "" msgid "Proceed" msgstr "" -msgid "Done" -msgstr "" - msgid "Retry" msgstr "" @@ -4617,33 +4664,6 @@ msgstr "" msgid "Mixed" msgstr "" -msgid "mm/s" -msgstr "" - -msgid "mm/s²" -msgstr "" - -msgid "Flow rate" -msgstr "" - -msgid "mm³/s" -msgstr "" - -msgid "Fan speed" -msgstr "" - -msgid "°C" -msgstr "" - -msgid "Time" -msgstr "" - -msgid "Actual speed profile" -msgstr "" - -msgid "Speed: " -msgstr "" - msgid "Height: " msgstr "" @@ -4677,6 +4697,33 @@ msgstr "" msgid "PA: " msgstr "" +msgid "mm/s" +msgstr "" + +msgid "mm/s²" +msgstr "" + +msgid "mm³/s" +msgstr "" + +msgid "Flow rate" +msgstr "" + +msgid "Fan speed" +msgstr "" + +msgid "°C" +msgstr "" + +msgid "Time" +msgstr "" + +msgid "Speed: " +msgstr "" + +msgid "Actual speed profile" +msgstr "" + msgid "Statistics of All Plates" msgstr "" @@ -4988,9 +5035,6 @@ msgstr "" msgid "Arrange options" msgstr "" -msgid "Spacing" -msgstr "" - msgid "0 means auto spacing." msgstr "" @@ -5125,7 +5169,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-c-format, possible-boost-format +#, possible-boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5503,6 +5547,15 @@ msgstr "" msgid "Export" msgstr "" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "" @@ -5628,6 +5681,9 @@ msgstr "" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "" @@ -7997,19 +8053,33 @@ msgstr "" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -msgid "Swap pan and rotate mouse buttons" -msgstr "" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" - msgid "Reverse mouse zoom" msgstr "" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "" +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -8032,6 +8102,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "" @@ -8172,6 +8295,15 @@ msgstr "" msgid "Skip AMS blacklist check" msgstr "" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "" @@ -9129,8 +9261,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "" @@ -9701,6 +9833,32 @@ msgstr "" msgid "Discard" msgstr "" +msgid "the new profile" +msgstr "" + +#, possible-boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, possible-boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, possible-boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "" @@ -10204,6 +10362,9 @@ msgstr "" msgid "Login" msgstr "" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "" @@ -10240,6 +10401,18 @@ msgstr "" msgid "Global shortcuts" msgstr "" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -10693,9 +10866,6 @@ msgstr "" msgid "Internal Bridge" msgstr "" -msgid "Multiple" -msgstr "" - #, possible-boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12073,9 +12243,6 @@ msgid "" "external-facing bridges\n" msgstr "" -msgid "Disabled" -msgstr "" - msgid "External bridge only" msgstr "" @@ -12569,6 +12736,18 @@ msgstr "" msgid "Auto For Match" msgstr "" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "" @@ -12974,6 +13153,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "" @@ -13124,8 +13314,8 @@ msgid "mm/s² or %" msgstr "" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" msgid "" @@ -13243,10 +13433,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -13649,6 +13839,30 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "" @@ -14963,8 +15177,8 @@ msgid "Role base wipe speed" msgstr "" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -15260,6 +15474,19 @@ msgstr "" msgid "Enable filament ramming" msgstr "" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "" @@ -15547,10 +15774,11 @@ msgid "Threshold angle" msgstr "" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" msgid "Threshold overlap" @@ -15685,8 +15913,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -16469,8 +16697,8 @@ msgid "Debug level" msgstr "" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" msgid "Enable timelapse for print" @@ -18016,8 +18244,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" @@ -18173,6 +18401,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "" @@ -18380,32 +18620,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, possible-c-format, possible-boost-format -msgid "nozzle size in preset: %d" -msgstr "" - -#, possible-c-format, possible-boost-format -msgid "nozzle size memorized: %d" -msgstr "" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, possible-c-format, possible-boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "" - -#, possible-c-format, possible-boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, possible-c-format, possible-boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -19148,25 +19362,16 @@ msgstr "" msgid "Detection radius" msgstr "" -msgid "Remove selected points" +msgid "Selected" msgstr "" -msgid "Remove all" +msgid "Auto-generate" msgstr "" -msgid "Auto-generate points" +msgid "Generate brim ears using Max angle and Detection radius" msgstr "" -msgid "Add a brim ear" -msgstr "" - -msgid "Delete a brim ear" -msgstr "" - -msgid "Adjust head diameter" -msgstr "" - -msgid "Adjust section view" +msgid "Add or Select" msgstr "" msgid "" @@ -19177,7 +19382,7 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "" -msgid " invalid brim ears" +msgid "invalid brim ears" msgstr "" msgid "Brim Ears" @@ -19396,8 +19601,8 @@ msgstr "" msgid "How to use keyboard shortcuts\nDid you know that Orca Slicer offers a wide range of keyboard shortcuts and 3D scene operations?" msgstr "" -#: resources/data/hints.ini: [hint:Reverse on odd] -msgid "Reverse on odd\nDid you know that Reverse on odd feature can significantly improve the surface quality of your overhangs?" +#: resources/data/hints.ini: [hint:Reverse on even] +msgid "Reverse on even\nDid you know that Reverse on even feature can significantly improve the surface quality of your overhangs? However, it can cause wall inconsistencies so use carefully!" msgstr "" #: resources/data/hints.ini: [hint:Cut Tool] diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index f22400ed0a..c0c591b107 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-03-15 10:55+0100\n" "Last-Translator: \n" "Language-Team: \n" @@ -126,8 +126,8 @@ msgstr "Realitzar" msgid "On highlighted overhangs only" msgstr "Només als voladissos ressaltats" -msgid "Erase all painting" -msgstr "Esborrar tota el pintat" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Ressaltar zones en voladís" @@ -196,6 +196,9 @@ msgstr "Ressalteu les cares segons l'angle del voladís." msgid "No auto support" msgstr "No suports automàtics" +msgid "Done" +msgstr "Fet" + msgid "Support Generated" msgstr "Suport generat" @@ -349,6 +352,12 @@ msgstr "Selecció de part" msgid "Fixed step drag" msgstr "Arrossegament de pas fix" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Escalat unilateral" @@ -498,6 +507,18 @@ msgstr "Posició de tall" msgid "Build Volume" msgstr "Volum de construcció" +msgid "Multiple" +msgstr "Múltiple" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Espaiat" + msgid "Part" msgstr "Peça" @@ -605,12 +626,6 @@ msgstr "Editar connectors" msgid "Add connectors" msgstr "Afegir connectors" -msgid "Reset cut" -msgstr "Restableix el tall" - -msgid "Reset cutting plane and remove connectors" -msgstr "Restableix el pla de tall i elimina els connectors" - msgid "Upper part" msgstr "Part superior" @@ -629,6 +644,9 @@ msgstr "Després del tall" msgid "Cut to parts" msgstr "Separa en parts" +msgid "Reset cutting plane and remove connectors" +msgstr "Restableix el pla de tall i elimina els connectors" + msgid "Perform cut" msgstr "Realitzar tall" @@ -862,6 +880,9 @@ msgstr "Tipus de lletra predeterminat" msgid "Advanced" msgstr "Avançat" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1520,15 +1541,6 @@ msgstr "" "La funció 1 s'ha restablert, \n" "la funció 2 ha estat la funció 1" -msgid "Warning: please select Plane's feature." -msgstr "Avís: seleccioneu la funció Avió." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Avís: seleccioneu la funció de Punt o Cercle." - -msgid "Warning: please select two different meshes." -msgstr "Avís: seleccioneu dues malles diferents." - msgid "Copy to clipboard" msgstr "Copiar al porta-retalls" @@ -1581,6 +1593,15 @@ msgstr "(Movent)" msgid "Point and point assembly" msgstr "Muntatge punt a punt" +msgid "Warning: please select two different meshes." +msgstr "Avís: seleccioneu dues malles diferents." + +msgid "Warning: please select Plane's feature." +msgstr "Avís: seleccioneu la funció Avió." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Avís: seleccioneu la funció de Punt o Cercle." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1779,6 +1800,18 @@ msgstr "Aquesta és la versió més recent." msgid "Info" msgstr "Informació" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1846,6 +1879,23 @@ msgstr "" "La versió de l'Orca Slicer és massa antiga i s'ha d'actualitzar a la versió " "més recent abans que es pugui utilitzar amb normalitat" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Recuperant informació de la impressora, torneu-ho a provar més tard." @@ -2407,12 +2457,12 @@ msgstr "" msgid "Edit" msgstr "Editar" -msgid "Delete this filament" -msgstr "Elimina aquest filament" - msgid "Merge with" msgstr "Fusiona amb" +msgid "Delete this filament" +msgstr "Elimina aquest filament" + msgid "Select All" msgstr "Seleccionar-ho tot" @@ -4126,8 +4176,8 @@ msgid "" "be opened during copy check. The output G-code is at %1%.tmp." msgstr "" "La còpia del codi-G temporal ha finalitzat, però el codi exportat no s'ha " -"pogut obrir durant la verificació de la còpia. El codi-G de sortida és a %1%." -"tmp." +"pogut obrir durant la verificació de la còpia. El codi-G de sortida és a " +"%1%.tmp." #, boost-format msgid "G-code file exported to %1%" @@ -4776,9 +4826,6 @@ msgstr "Atura l'assecament" msgid "Proceed" msgstr "Continua" -msgid "Done" -msgstr "Fet" - msgid "Retry" msgstr "Reintentar" @@ -5042,33 +5089,6 @@ msgstr "Transició de suport" msgid "Mixed" msgstr "Mixt" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Ratio de Flux" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Velocitat del ventilador" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Temps" - -msgid "Actual speed profile" -msgstr "Perfil de velocitat real" - -msgid "Speed: " -msgstr "Velocitat: " - msgid "Height: " msgstr "Alçada: " @@ -5102,6 +5122,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Ratio de Flux" + +msgid "Fan speed" +msgstr "Velocitat del ventilador" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Temps" + +msgid "Speed: " +msgstr "Velocitat: " + +msgid "Actual speed profile" +msgstr "Perfil de velocitat real" + msgid "Statistics of All Plates" msgstr "Estadístiques de totes les plaques" @@ -5441,9 +5488,6 @@ msgstr "Orientar/alinear" msgid "Arrange options" msgstr "Opcions d'ordenació" -msgid "Spacing" -msgstr "Espaiat" - msgid "0 means auto spacing." msgstr "0 significa espaiat automàtic." @@ -5578,7 +5622,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, fuzzy, c-format, boost-format +#, fuzzy, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5755,8 +5799,8 @@ msgid "" "You can find it in \"Setting > Setting > LAN only > Access Code\"\n" "on the printer, as shown in the figure:" msgstr "" -"Podeu trobar-lo a \"Configuració > Configuració > Només LAN > Codi d'accés" -"\"\n" +"Podeu trobar-lo a \"Configuració > Configuració > Només LAN > Codi " +"d'accés\"\n" "a la impressora, com es mostra a la figura:" msgid "Invalid input." @@ -5980,6 +6024,15 @@ msgstr "Exportar la configuració actual a fitxers" msgid "Export" msgstr "Exportar" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Surt" @@ -6107,6 +6160,9 @@ msgstr "Vista" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Ajuda" @@ -8765,15 +8821,6 @@ msgstr "" "Si està activat, fa servir la càmera lliure. Si no està activat, fa servir " "la càmera restringida." -msgid "Swap pan and rotate mouse buttons" -msgstr "Intercanviar la panoràmica i girar els botons del ratolí" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Si està activat, intercanvia les funcions de panoràmica i rotació dels " -"botons esquerre i dret del ratolí." - msgid "Reverse mouse zoom" msgstr "Zoom invers del ratolí" @@ -8781,6 +8828,27 @@ msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "" "Si està habilitat, inverteix la direcció del zoom amb la roda del ratolí." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Esborra la meva elecció a..." @@ -8805,6 +8873,59 @@ msgstr "" "Esborra la meva elecció per sincronitzar el perfil de la impressora després " "de carregar el fitxer." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Deshabilitat" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Regió d'inici de sessió" @@ -8970,6 +9091,15 @@ msgstr "Mode de desenvolupament" msgid "Skip AMS blacklist check" msgstr "Omet la comprovació de la llista negra AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Permet emmagatzematge anormal" @@ -10108,8 +10238,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -10742,6 +10872,32 @@ msgstr "No desar" msgid "Discard" msgstr "Descartar" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Feu clic amb el botó dret del ratolí per mostrar el text complet." @@ -11330,6 +11486,9 @@ msgstr "Feu clic aquí per descarregar-lo." msgid "Login" msgstr "Iniciar sessió" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Acció necessària] " @@ -11368,6 +11527,18 @@ msgstr "Mostrar la llista de dreceres de teclat" msgid "Global shortcuts" msgstr "Dreceres Globals" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11868,9 +12039,6 @@ msgstr " no es pot col·locar al " msgid "Internal Bridge" msgstr "Pont Interior" -msgid "Multiple" -msgstr "Múltiple" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13729,8 +13897,9 @@ msgstr "" "reducció de coixins a les superfícies superiors, així com una separació " "reduïda de la capa de pont externa dels seus perímetres circumdants.\n" "\n" -"En general, es recomana establir això com a mínim com a \"Només pont extern" -"\", tret que es detectin problemes específics amb el model en rodanxes.\n" +"En general, es recomana establir això com a mínim com a \"Només pont " +"extern\", tret que es detectin problemes específics amb el model en " +"rodanxes.\n" "\n" "Opcions:\n" "1. Desactivat: no genera segones capes de pont. Aquest és el valor " @@ -13750,9 +13919,6 @@ msgstr "" "4. Aplicar a tots: genera segones capes de pont per als ponts interiors i " "exteriors\n" -msgid "Disabled" -msgstr "Deshabilitat" - msgid "External bridge only" msgstr "Només pont exterior" @@ -14460,6 +14626,18 @@ msgstr "Automàtic per a purga" msgid "Auto For Match" msgstr "Automàtic per a coincidència" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Temperatura de purga" @@ -14981,6 +15159,17 @@ msgstr "" "Ús de múltiples línies per al patró de farciment, si el patró de farciment " "ho admet." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Patró farciment poc dens" @@ -15162,8 +15351,8 @@ msgid "mm/s² or %" msgstr "mm/s o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Acceleració del farciment poc dens. Si el valor s'expressa en percentatge " "( per exemple, 100% ), es calcularà a partir de l'acceleració predeterminada." @@ -15299,15 +15488,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" -"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " -"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa " +"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " +"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -15503,9 +15692,9 @@ msgstr "" "inferior a un cert nivell. Normalment equival al 15-25%% de l'alçada de la " "capa. Per tant, el gruix màxim de pell difusa amb una amplada de perímetre " "de 0.4 mm i una alçada de capa de 0.2 mm serà 0.4-(0.2*0.25)=±0.35mm! Si " -"introduïu un paràmetre superior a aquest, es mostrarà l'error Flow::" -"spacing() i el model no es tallarà. Podeu triar aquest número fins que es " -"repeteixi l'error." +"introduïu un paràmetre superior a aquest, es mostrarà l'error " +"Flow::spacing() i el model no es tallarà. Podeu triar aquest número fins que " +"es repeteixi l'error." msgid "Displacement" msgstr "Desplaçament" @@ -15826,6 +16015,30 @@ msgstr "" "aconseguir que el ventilador s'acceleri més ràpidament.\n" "Poseu-lo a 0 per desactivar-lo." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Cost per Temps" @@ -17464,8 +17677,8 @@ msgid "Role base wipe speed" msgstr "Velocitat de neteja basada en l'acció" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17862,6 +18075,19 @@ msgstr "Purga el filament restant a la Torre de Purga" msgid "Enable filament ramming" msgstr "Activa l'empenta del filament" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Sense capes poc denses( beta )" @@ -18218,15 +18444,18 @@ msgid "Threshold angle" msgstr "Pendent màxim" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Es generarà suport per als voladissos l'angle de pendent dels quals estigui per sota del llindar." -"Com més petit sigui aquest valor, més inclinat serà el voladís que es pot imprimir sense suport.\n" -"Nota: si s'estableix a 0, els suports normals utilitzen en el seu lloc la Superposició de llindars, " -"mentre que els suports en arbre tornen al valor predeterminat de 30." +"Es generarà suport per als voladissos l'angle de pendent dels quals estigui " +"per sota del llindar.Com més petit sigui aquest valor, més inclinat serà el " +"voladís que es pot imprimir sense suport.\n" +"Nota: si s'estableix a 0, els suports normals utilitzen en el seu lloc la " +"Superposició de llindars, mentre que els suports en arbre tornen al valor " +"predeterminat de 30." msgid "Threshold overlap" msgstr "Superposició de llindars" @@ -18395,8 +18624,8 @@ msgstr "Activar el control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18880,8 +19109,9 @@ msgid "" "0 to disable." msgstr "" "Temperatura del broquet quan l'eina no s'utilitza actualment en " -"configuracions multieina. Només s'utilitza quan la \"Prevenció de supuració" -"\" està activa a la configuració d'impressió. Establiu a 0 per desactivar." +"configuracions multieina. Només s'utilitza quan la \"Prevenció de " +"supuració\" està activa a la configuració d'impressió. Establiu a 0 per " +"desactivar." msgid "X-Y hole compensation" msgstr "Compensació de forat( contorn intern ) X-Y" @@ -19423,11 +19653,11 @@ msgid "Debug level" msgstr "Nivell de depuració" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Defineix el nivell de registre de depuració. 0:fatal, 1:error, 2:warning, 3:" -"info, 4:debug, 5:tracejar\n" +"Defineix el nivell de registre de depuració. 0:fatal, 1:error, 2:warning, " +"3:info, 4:debug, 5:tracejar\n" msgid "Enable timelapse for print" msgstr "Activa el timelapse per a la impressió" @@ -19977,8 +20207,8 @@ msgstr "El fitxer subministrat no s'ha pogut llegir perquè està buit" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fitxer desconegut. El fitxer d'entrada ha de tenir extensió .stl, ." -"obj, .amf( .xml )." +"Format de fitxer desconegut. El fitxer d'entrada ha de tenir " +"extensió .stl, .obj, .amf( .xml )." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" @@ -21238,8 +21468,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " @@ -21427,6 +21657,18 @@ msgstr "" "El perfil del sistema no permet la creació.\n" "Torneu a introduir el model de la impressora o el diàmetre del broquet." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Èxit Creant Impressora" @@ -21684,36 +21926,6 @@ msgstr "" "impressora.\n" "Feu clic al botó Sincronitza a dalt i reinicieu el calibratge." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "mida del broquet al perfil: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "mida del broquet memoritzada: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"La mida del tipus de broquet al perfil no és consistent amb el broquet " -"memoritzat. Heu canviat el broquet recentment?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "broquet[%d] al perfil: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "broquet[%d] memoritzat: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"El tipus de broquet al perfil no és consistent amb el broquet memoritzat. " -"Heu canviat el broquet recentment?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Imprimir material %1s amb broquet %2s pot causar danys al broquet." @@ -22672,39 +22884,30 @@ msgstr "Angle màxim" msgid "Detection radius" msgstr "Radi de detecció" -msgid "Remove selected points" -msgstr "Elimina els punts seleccionats" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Elimina- ho tot" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Generar punts automàticament" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Afegir una orella de Vora d'Adherència" - -msgid "Delete a brim ear" -msgstr "Suprimir la Vora d'Adherència" - -msgid "Adjust head diameter" -msgstr "Ajusta el diàmetre del capçal" - -msgid "Adjust section view" -msgstr "Ajusta la vista en secció" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " "take effect!" msgstr "" -"Advertència: el tipus de Vora d'Adherència no està configurat com a \"pintat" -"\", les orelles de la Vora d'Adherència no tindran efecte!" +"Advertència: el tipus de Vora d'Adherència no està configurat com a " +"\"pintat\", les orelles de la Vora d'Adherència no tindran efecte!" msgid "Set the brim type of this object to \"painted\"" msgstr "Estableix el tipus de vora d'aquest objecte a \"pintat\"" -msgid " invalid brim ears" -msgstr " orelles de la Vora d'Adherència invàlides" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Orelles de la Vora d'Adherència" @@ -22988,15 +23191,13 @@ msgstr "" "Sabíeu que Orca Slicer ofereix una àmplia gamma de dreceres de teclat i " "operacions en escenes 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Parets invertides en capes imparells\n" -"Sabíeu que la funció Parets invertides en capes imparells pot " -"millorar significativament la qualitat de la superficie dels voladissos?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23292,6 +23493,85 @@ msgstr "" "augmentar adequadament la temperatura del llit pot reduir la probabilitat de " "deformació?" +#~ msgid "Erase all painting" +#~ msgstr "Esborrar tota el pintat" + +#~ msgid "Reset cut" +#~ msgstr "Restableix el tall" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Intercanviar la panoràmica i girar els botons del ratolí" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Si està activat, intercanvia les funcions de panoràmica i rotació dels " +#~ "botons esquerre i dret del ratolí." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "mida del broquet al perfil: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "mida del broquet memoritzada: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "La mida del tipus de broquet al perfil no és consistent amb el broquet " +#~ "memoritzat. Heu canviat el broquet recentment?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "broquet[%d] al perfil: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "broquet[%d] memoritzat: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "El tipus de broquet al perfil no és consistent amb el broquet memoritzat. " +#~ "Heu canviat el broquet recentment?" + +#~ msgid "Remove selected points" +#~ msgstr "Elimina els punts seleccionats" + +#~ msgid "Remove all" +#~ msgstr "Elimina- ho tot" + +#~ msgid "Auto-generate points" +#~ msgstr "Generar punts automàticament" + +#~ msgid "Add a brim ear" +#~ msgstr "Afegir una orella de Vora d'Adherència" + +#~ msgid "Delete a brim ear" +#~ msgstr "Suprimir la Vora d'Adherència" + +#~ msgid "Adjust head diameter" +#~ msgstr "Ajusta el diàmetre del capçal" + +#~ msgid "Adjust section view" +#~ msgstr "Ajusta la vista en secció" + +#~ msgid " invalid brim ears" +#~ msgstr " orelles de la Vora d'Adherència invàlides" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Parets invertides en capes imparells\n" +#~ "Sabíeu que la funció Parets invertides en capes imparells pot " +#~ "millorar significativament la qualitat de la superficie dels voladissos?" + #~ msgid "Pen size" #~ msgstr "Mida del llapis" @@ -23899,8 +24179,8 @@ msgstr "" #~ "No AMS filaments. Please select a printer in 'Device' page to load AMS " #~ "info." #~ msgstr "" -#~ "Sense filaments AMS. Seleccioneu una impressora a la pàgina \"Dispositiu" -#~ "\" per carregar informació AMS." +#~ "Sense filaments AMS. Seleccioneu una impressora a la pàgina " +#~ "\"Dispositiu\" per carregar informació AMS." #~ msgid "" #~ "Sync filaments with AMS will drop all current selected filament presets " @@ -24353,9 +24633,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Establir Posició" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index fa0fb9e794..9d6c0ca729 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: Jakub Hencl\n" "Language-Team: \n" @@ -119,8 +119,8 @@ msgstr "Provést" msgid "On highlighted overhangs only" msgstr "Pouze na zvýrazněné převisy" -msgid "Erase all painting" -msgstr "Smazat celé malování" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Zvýraznit oblasti s převisem" @@ -189,6 +189,9 @@ msgstr "Zvýraznit plochy podle úhlu převisu." msgid "No auto support" msgstr "Žádné automatické podpory" +msgid "Done" +msgstr "Hotovo" + msgid "Support Generated" msgstr "Vygenerovaná podpora" @@ -341,6 +344,12 @@ msgstr "Výběr části" msgid "Fixed step drag" msgstr "Posouvání o pevný krok" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Jednostranné měřítko" @@ -489,6 +498,18 @@ msgstr "Pozice řezu" msgid "Build Volume" msgstr "Stavební objem" +msgid "Multiple" +msgstr "Více" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Rozestup" + msgid "Part" msgstr "Díl" @@ -596,12 +617,6 @@ msgstr "Upravit konektory" msgid "Add connectors" msgstr "Přidat konektory" -msgid "Reset cut" -msgstr "Obnovit řez" - -msgid "Reset cutting plane and remove connectors" -msgstr "Resetovat řezací rovinu a odstranit konektory" - msgid "Upper part" msgstr "Horní část" @@ -620,6 +635,9 @@ msgstr "Po ořezu" msgid "Cut to parts" msgstr "Rozdělit na části" +msgid "Reset cutting plane and remove connectors" +msgstr "Resetovat řezací rovinu a odstranit konektory" + msgid "Perform cut" msgstr "Provést řez" @@ -853,6 +871,9 @@ msgstr "Výchozí písmo" msgid "Advanced" msgstr "Pokročilé" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1492,15 +1513,6 @@ msgstr "" "Funkce 1 byla resetována,\n" "funkce 2 byla funkce 1" -msgid "Warning: please select Plane's feature." -msgstr "Varování: Vyberte prosím vlastnost roviny." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Varování: Vyberte prosím vlastnost bodu nebo kruhu." - -msgid "Warning: please select two different meshes." -msgstr "Varování: Vyberte prosím dvě různé sítě." - msgid "Copy to clipboard" msgstr "Kopírovat do schránky" @@ -1552,6 +1564,15 @@ msgstr "(Pohyblivé)" msgid "Point and point assembly" msgstr "Sestavení bod–bod" +msgid "Warning: please select two different meshes." +msgstr "Varování: Vyberte prosím dvě různé sítě." + +msgid "Warning: please select Plane's feature." +msgstr "Varování: Vyberte prosím vlastnost roviny." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Varování: Vyberte prosím vlastnost bodu nebo kruhu." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1743,6 +1764,18 @@ msgstr "Toto je nejnovější verze." msgid "Info" msgstr "Info" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1810,6 +1843,23 @@ msgstr "" "Verze Orca Slicer je příliš stará a je nutné ji aktualizovat na nejnovější " "verzi, aby ji bylo možné používat." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Načítání informací o tiskárně, zkuste to prosím později." @@ -2367,12 +2417,12 @@ msgstr "Automaticky natočit objekt pro zlepšení kvality tisku" msgid "Edit" msgstr "Upravit" -msgid "Delete this filament" -msgstr "Smazat tento filament" - msgid "Merge with" msgstr "Sloučit s" +msgid "Delete this filament" +msgstr "Smazat tento filament" + msgid "Select All" msgstr "Vybrat vše" @@ -4694,9 +4744,6 @@ msgstr "Stop Drying" msgid "Proceed" msgstr "Proceed" -msgid "Done" -msgstr "Hotovo" - msgid "Retry" msgstr "Zkusit znovu" @@ -4959,33 +5006,6 @@ msgstr "Přechod podpory" msgid "Mixed" msgstr "Mixed" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Průtok" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Rychlost ventilátoru" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Čas" - -msgid "Actual speed profile" -msgstr "Actual speed profile" - -msgid "Speed: " -msgstr "Rychlost: " - msgid "Height: " msgstr "Výška: " @@ -5019,6 +5039,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Průtok" + +msgid "Fan speed" +msgstr "Rychlost ventilátoru" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Čas" + +msgid "Speed: " +msgstr "Rychlost: " + +msgid "Actual speed profile" +msgstr "Actual speed profile" + msgid "Statistics of All Plates" msgstr "Statistiky všech desek" @@ -5352,9 +5399,6 @@ msgstr "Orient" msgid "Arrange options" msgstr "Možnosti rozložení" -msgid "Spacing" -msgstr "Rozestup" - msgid "0 means auto spacing." msgstr "0 znamená automatické rozestupy." @@ -5489,7 +5533,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5888,6 +5932,15 @@ msgstr "Exportovat aktuální konfiguraci do souborů" msgid "Export" msgstr "Export" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Ukončit" @@ -6015,6 +6068,9 @@ msgstr "Zobrazit" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Nápověda" @@ -8608,21 +8664,33 @@ msgstr "" "Pokud je povoleno, použít volnou kameru. Pokud není povoleno, použít " "omezenou kameru." -msgid "Swap pan and rotate mouse buttons" -msgstr "Prohodit tlačítka myši pro posun a otáčení" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Je-li povoleno, zamění se funkce posunu a rotace mezi levým a pravým " -"tlačítkem myši." - msgid "Reverse mouse zoom" msgstr "Změnit směr přibližování myší" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Je-li povoleno, obrátí se směr přiblížení kolečkem myši." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Clear my choice on..." @@ -8646,6 +8714,59 @@ msgid "" msgstr "" "Clear my choice for synchronizing printer preset after loading the file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Zakázáno" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Login region" @@ -8796,6 +8917,15 @@ msgstr "Vývojářský režim" msgid "Skip AMS blacklist check" msgstr "Přeskočit kontrolu blacklistu AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Allow Abnormal Storage" @@ -9887,8 +10017,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Při záznamu časosběru bez tiskové hlavy je doporučeno přidat „Časosběr věž " "na očištění trysky“.\n" @@ -10517,6 +10647,32 @@ msgstr "Neukládat" msgid "Discard" msgstr "Zahodit" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Kliknutím pravým tlačítkem myši zobrazíte celý text." @@ -11092,6 +11248,9 @@ msgstr "Klikněte zde pro stažení." msgid "Login" msgstr "Přihlášení" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action Required] " @@ -11128,6 +11287,18 @@ msgstr "Zobrazit seznam klávesových zkratek" msgid "Global shortcuts" msgstr "Globální klávesové zkratky" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11614,9 +11785,6 @@ msgstr " can not be placed in the " msgid "Internal Bridge" msgstr "Vnitřní most" -msgid "Multiple" -msgstr "Více" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "Nepodařilo se vypočítat šířku čáry %1%. Nelze získat hodnotu „%2%“. " @@ -13415,9 +13583,6 @@ msgstr "" "tohoto ostrova\n" "4. Použít na vše – generuje druhé mostové vrstvy pro vnitřní i vnější mosty\n" -msgid "Disabled" -msgstr "Zakázáno" - msgid "External bridge only" msgstr "Pouze externí most" @@ -14096,6 +14261,18 @@ msgstr "Auto For Flush" msgid "Auto For Match" msgstr "Auto For Match" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Flush temperature" @@ -14592,6 +14769,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "Použití více řádků pro vzor výplně, pokud to daný vzor podporuje." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Vzor řídké výplně" @@ -14764,8 +14952,8 @@ msgid "mm/s² or %" msgstr "mm/s² nebo %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Akcelerace řídké výplně. Pokud je hodnota vyjádřena v procentech (např. 100 " "%), bude vypočtena na základě výchozí akcelerace." @@ -14898,10 +15086,10 @@ msgstr "Plná rychlost ventilátoru na vrstvě" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Rychlost ventilátoru bude lineárně zvyšována od nuly na vrstvě \"zavřít " "ventilátor na prvních x vrstvách\" až po maximum na vrstvě " @@ -15407,6 +15595,30 @@ msgstr "" "spuštění z klidu, nebo pro rychlejší rozběh ventilátoru.\n" "Nastavte na 0 pro deaktivaci." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "Časová náročnost" @@ -16984,8 +17196,8 @@ msgid "Role base wipe speed" msgstr "Rychlost vytírání podle role" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17372,6 +17584,19 @@ msgstr "Zbývající filament bude vyčištěn do základní věže." msgid "Enable filament ramming" msgstr "Povolit protlačování filamentu" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Žádné řídké vrstvy (beta)" @@ -17415,8 +17640,8 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Použijte \"Sudý-lichý\" pro modely letadel 3DLabPrint. Použijte \"Zavřít díry" -"\" pro uzavření všech otvorů v modelu." +"Použijte \"Sudý-lichý\" pro modely letadel 3DLabPrint. Použijte \"Zavřít " +"díry\" pro uzavření všech otvorů v modelu." msgid "Regular" msgstr "Obvyklý" @@ -17715,15 +17940,16 @@ msgid "Threshold angle" msgstr "Prahový úhel" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" "Podpěry budou generovány pro převisy s úhlem sklonu pod nastaveným prahem. " "Čím menší je tato hodnota, tím strmější převis lze tisknout bez podpěr.\n" -"Poznámka: Pokud je nastavena na 0, běžné podpěry místo toho použijí Hraniční překrytí, " -"zatímco stromové podpěry se vrátí na výchozí hodnotu 30." +"Poznámka: Pokud je nastavena na 0, běžné podpěry místo toho použijí Hraniční " +"překrytí, zatímco stromové podpěry se vrátí na výchozí hodnotu 30." msgid "Threshold overlap" msgstr "Prahové překrytí" @@ -17887,8 +18113,8 @@ msgstr "Aktivovat kontrolu teploty" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18873,11 +19099,11 @@ msgid "Debug level" msgstr "Úroveň ladění" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Nastaví úroveň logování pro ladění. 0:fatal, 1:error, 2:warning, 3:info, 4:" -"debug, 5:trace\n" +"Nastaví úroveň logování pro ladění. 0:fatal, 1:error, 2:warning, 3:info, " +"4:debug, 5:trace\n" msgid "Enable timelapse for print" msgstr "Povolit časosběr pro tisk" @@ -19415,8 +19641,8 @@ msgstr "Zadaný soubor nelze načíst, protože je prázdný." msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj nebo ." -"amf(.xml)." +"Neznámý formát souboru. Vstupní soubor musí mít příponu .stl, .obj " +"nebo .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" @@ -20639,8 +20865,8 @@ msgstr "" "Chcete to přepsat?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Předvolby přejmenujeme na „Výrobce Typ Sériové číslo @tiskárna, kterou jste " @@ -20815,6 +21041,18 @@ msgstr "" "The system preset does not allow creation. \n" "Please re-enter the printer model or nozzle diameter." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Tiskárna byla úspěšně vytvořena" @@ -21066,36 +21304,6 @@ msgstr "" "The nozzle type does not match the actual printer nozzle type.\n" "Please click the Sync button above and restart the calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "nozzle size in preset: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "nozzle size memorized: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "nozzle[%d] in preset: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozzle[%d] memorized: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -22011,26 +22219,17 @@ msgstr "Maximální úhel" msgid "Detection radius" msgstr "Detekční poloměr" -msgid "Remove selected points" -msgstr "Odstranit vybrané body" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Odstranit vše" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Automaticky generovat body" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Přidat okraj (brim)" - -msgid "Delete a brim ear" -msgstr "Smazat okrajové ucho" - -msgid "Adjust head diameter" -msgstr "Upravit průměr hlavy" - -msgid "Adjust section view" -msgstr "Upravit pohled na řez" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22041,8 +22240,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Nastavit typ lemu tohoto objektu na „malovaný“" -msgid " invalid brim ears" -msgstr " neplatné okraje podložky (brim)" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Ouška límce" @@ -22319,15 +22518,13 @@ msgstr "" "Věděli jste, že Orca Slicer nabízí širokou škálu klávesových zkratek a " "operací ve 3D scéně?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Obrátit na lichých\n" -"Víte, že funkce Obrátit na lichých může výrazně zlepšit kvalitu " -"povrchu vašich převisů?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22617,6 +22814,85 @@ msgstr "" "Víte, že při tisku materiálů náchylných ke kroucení, jako je ABS, může " "vhodné zvýšení teploty vyhřívané desky snížit pravděpodobnost kroucení?" +#~ msgid "Erase all painting" +#~ msgstr "Smazat celé malování" + +#~ msgid "Reset cut" +#~ msgstr "Obnovit řez" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Prohodit tlačítka myši pro posun a otáčení" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Je-li povoleno, zamění se funkce posunu a rotace mezi levým a pravým " +#~ "tlačítkem myši." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "nozzle size in preset: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "nozzle size memorized: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "nozzle[%d] in preset: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozzle[%d] memorized: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" + +#~ msgid "Remove selected points" +#~ msgstr "Odstranit vybrané body" + +#~ msgid "Remove all" +#~ msgstr "Odstranit vše" + +#~ msgid "Auto-generate points" +#~ msgstr "Automaticky generovat body" + +#~ msgid "Add a brim ear" +#~ msgstr "Přidat okraj (brim)" + +#~ msgid "Delete a brim ear" +#~ msgstr "Smazat okrajové ucho" + +#~ msgid "Adjust head diameter" +#~ msgstr "Upravit průměr hlavy" + +#~ msgid "Adjust section view" +#~ msgstr "Upravit pohled na řez" + +#~ msgid " invalid brim ears" +#~ msgstr " neplatné okraje podložky (brim)" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Obrátit na lichých\n" +#~ "Víte, že funkce Obrátit na lichých může výrazně zlepšit kvalitu " +#~ "povrchu vašich převisů?" + #~ msgid "Pen size" #~ msgstr "Velikost pera" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 680266959a..62b7cb292a 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -121,8 +121,8 @@ msgstr "Ausführen" msgid "On highlighted overhangs only" msgstr "Nur an hervorgehobenen Überhängen" -msgid "Erase all painting" -msgstr "Alles gemalte löschen" +msgid "Erase all" +msgstr "Alles löschen" msgid "Highlight overhang areas" msgstr "Bereiche mit Überhang hervorheben" @@ -192,6 +192,9 @@ msgstr "Markieren der Flächen entsprechend dem Überhangwinkel." msgid "No auto support" msgstr "Kein automatischer Support" +msgid "Done" +msgstr "Erledigt" + msgid "Support Generated" msgstr "Support generiert" @@ -346,6 +349,12 @@ msgstr "Teilauswahl" msgid "Fixed step drag" msgstr "Fester Schritt ziehen" +msgid "Context Menu" +msgstr "Kontextmenü" + +msgid "Toggle Auto-Drop" +msgstr "Automatisches Absenken umschalten" + msgid "Single sided scaling" msgstr "Einseitige Skalierung" @@ -496,6 +505,18 @@ msgstr "Schnittposition" msgid "Build Volume" msgstr "Bau Volumen" +msgid "Multiple" +msgstr "Mehrere" + +msgid "Count" +msgstr "Anzahl" + +msgid "Gap" +msgstr "Spalt" + +msgid "Spacing" +msgstr "Abstand" + msgid "Part" msgstr "Teil" @@ -535,7 +556,7 @@ msgid "Drag" msgstr "Ziehen" msgid "Move cut line" -msgstr "" +msgstr "Schnittlinie bewegen" msgid "Draw cut line" msgstr "Schnittlinie zeichnen" @@ -604,12 +625,6 @@ msgstr "Verbinder ändern" msgid "Add connectors" msgstr "Verbinder zufügen" -msgid "Reset cut" -msgstr "Schnitt zurücksetzen" - -msgid "Reset cutting plane and remove connectors" -msgstr "Schnittfläche zurücksetzen und Verbinder entfernen" - msgid "Upper part" msgstr "Oberes Teil" @@ -628,6 +643,9 @@ msgstr "nach dem Schnitt" msgid "Cut to parts" msgstr "In Teile schneiden" +msgid "Reset cutting plane and remove connectors" +msgstr "Schnittfläche zurücksetzen und Verbinder entfernen" + msgid "Perform cut" msgstr "Schnitt ausführen" @@ -835,7 +853,7 @@ msgid "Embossing actions" msgstr "Geprägte Aktionen" msgid "Position on surface" -msgstr "" +msgstr "Position auf Oberfläche" msgid "Emboss" msgstr "Prägen" @@ -864,6 +882,9 @@ msgstr "Standard-Schriftart" msgid "Advanced" msgstr "Erweiterte Einstellungen" +msgid "Reset all options except the text and operation" +msgstr "Alle Optionen außer dem Text und der Operation zurücksetzen" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1525,15 +1546,6 @@ msgstr "" "Feature 1 wurde zurückgesetzt, \n" "Feature 2 wurde zu Feature 1" -msgid "Warning: please select Plane's feature." -msgstr "Warnung: Bitte wählen Sie die Funktion der Ebene." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Warnung: Bitte wählen Sie die Funktion des Punktes oder Kreises." - -msgid "Warning: please select two different meshes." -msgstr "Warnung: Bitte wählen Sie zwei verschiedene Mesh-Netze." - msgid "Copy to clipboard" msgstr "In Zwischenablage kopieren" @@ -1587,6 +1599,15 @@ msgstr "(Bewegen)" msgid "Point and point assembly" msgstr "Punkt-zu-Punkt-Montage" +msgid "Warning: please select two different meshes." +msgstr "Warnung: Bitte wählen Sie zwei verschiedene Mesh-Netze." + +msgid "Warning: please select Plane's feature." +msgstr "Warnung: Bitte wählen Sie die Funktion der Ebene." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Warnung: Bitte wählen Sie die Funktion des Punktes oder Kreises." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1783,6 +1804,18 @@ msgstr "Dies ist die neueste Version." msgid "Info" msgstr "Info" +msgid "Loading printer & filament profiles" +msgstr "Lade Drucker- und Filamentprofile" + +msgid "Creating main window" +msgstr "Erstelle Hauptfenster" + +msgid "Loading current preset" +msgstr "Lade aktuelles Preset" + +msgid "Showing main window" +msgstr "Zeige Hauptfenster" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1851,6 +1884,26 @@ msgstr "" "Die Version von Orca Slicer ist veraltet und muss auf die neueste Version " "aktualisiert werden, bevor sie normal verwendet werden kann" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" +"Verbindung zu OrcaCloud fehlgeschlagen.\n" +"Bitte überprüfen Sie Ihre Netzwerkverbindung\n" +"(HTTP %u)" + +msgid "Cloud Error" +msgstr "Cloud-Fehler" + msgid "Retrieving printer information, please try again later." msgstr "Empfange Druckerinformationen, bitte später erneut versuchen." @@ -1911,14 +1964,14 @@ msgstr "Datenschutzrichtlinien-Update" #, c-format, boost-format msgid "your Bambu Cloud profile (user ID: \"%s\")" -msgstr "" +msgstr "dein Bambu Cloud Profil (Benutzer-ID: \"%s\")" msgid "your default profile" -msgstr "" +msgstr "dein Standardprofil" #, c-format, boost-format msgid "a user profile (folder: \"%s\")" -msgstr "" +msgstr "ein Benutzerprofil (Ordner: \"%s\")" #, c-format, boost-format msgid "" @@ -1926,15 +1979,20 @@ msgid "" "Do you want to migrate them to your OrcaCloud profile?\n" "This will copy your presets so they are available under your new account." msgstr "" +"Es wurden vorhandene Benutzerprofile in %s gefunden.\n" +"Möchten Sie diese in Ihr OrcaCloud-Profil migrieren?\n" +"Dies kopiert Ihre Profile, sodass sie unter Ihrem neuen Konto verfügbar sind." msgid "Migrate User Presets" -msgstr "" +msgstr "Benutzerprofile migrieren" #, c-format, boost-format msgid "" "Failed to migrate user presets:\n" "%s" msgstr "" +"Fehler bei der Migration der Benutzerprofile:\n" +"%s" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -1959,7 +2017,7 @@ msgstr "" #, c-format, boost-format msgid "%s has been downloaded." -msgstr "" +msgstr "%s wurde heruntergeladen." #, c-format, boost-format msgid "Bundle %s is no longer available." @@ -1967,14 +2025,14 @@ msgstr "" #, c-format, boost-format msgid "Bundle %s access is unauthorized." -msgstr "" +msgstr "Zugriff auf Bundle %s ist nicht autorisiert." msgid "Loading user preset" msgstr "Benutzerprofil wird geladen" #, c-format, boost-format msgid "%s has been removed." -msgstr "" +msgstr "%s wurde entfernt." msgid "Switching application language" msgstr "Wechsel der Sprache" @@ -2221,7 +2279,7 @@ msgid "Support Enforcer" msgstr "Stützverstärker" msgid "Change part type" -msgstr "" +msgstr "Ändere den Teile Type" msgid "Set as an individual object" msgstr "Als eigenes Objekt definieren" @@ -2240,10 +2298,10 @@ msgid "Printable" msgstr "Druckbar" msgid "Auto Drop" -msgstr "" +msgstr "Automatisch ablegen" msgid "Automatically drops the selected object to the build plate" -msgstr "" +msgstr "Legt das ausgewählte Objekt automatisch auf die Bauplatte" msgid "Fix model" msgstr "Modell reparieren" @@ -2416,12 +2474,12 @@ msgstr "" msgid "Edit" msgstr "Bearbeiten" -msgid "Delete this filament" -msgstr "Diesen Filament löschen" - msgid "Merge with" msgstr "Zusammenführen mit" +msgid "Delete this filament" +msgstr "Diesen Filament löschen" + msgid "Select All" msgstr "Alle auswählen" @@ -2526,7 +2584,7 @@ msgid "Set Filament for selected items" msgstr "Filament für ausgewählte Elemente festlegen" msgid "Automatically snaps the selected object to the build plate" -msgstr "" +msgstr "Legt das ausgewählte Objekt automatisch auf die Bauplatte" msgid "Unlock" msgstr "Entsperren" @@ -2829,7 +2887,7 @@ msgid "Brim" msgstr "Umrandung" msgid "Object/Part Settings" -msgstr "" +msgstr "Objekt-/Teileinstellungen" msgid "Reset parameter" msgstr "Parameter zurücksetzen" @@ -3544,6 +3602,13 @@ msgid "" "enhancements. Each project carried the work of its predecessors forward, " "crediting those who came before." msgstr "" +"Die Open-Source-Slicing-Software steht auf einer Tradition der " +"Zusammenarbeit und Anerkennung. Slic3r, erstellt von Alessandro Ranellucci " +"und der RepRap-Gemeinschaft, legte den Grundstein. PrusaSlicer von Prusa " +"Research baute auf dieser Arbeit auf, Bambu Studio wurde von PrusaSlicer " +"verzweigt und SuperSlicer erweiterte es mit gemeinschaftsgetriebenen " +"Verbesserungen. Jedes Projekt trug die Arbeit seiner Vorgänger weiter und " +"würdigte diejenigen, die das zuvor erbracht haben." msgid "" "OrcaSlicer began in that same spirit, drawing from PrusaSlicer, BambuStudio, " @@ -3551,12 +3616,20 @@ msgid "" "introducing advanced calibration tools, precise wall and seam control and " "hundreds of other features." msgstr "" +"OrcaSlicer begann in diesem gleichen Geist, indem es von PrusaSlicer, " +"BambuStudio, SuperSlicer und CuraSlicer lernte. Aber es hat sich seitdem " +"weit über seine Ursprünge hinaus entwickelt - mit fortschrittlichen " +"Kalibrierungswerkzeugen, präziser Wand- und Nahtkontrolle und Hunderten von " +"anderen Funktionen." msgid "" "Today, OrcaSlicer is the most widely used and actively developed open-source " "slicer in the 3D printing community. Many of its innovations have been " "adopted by other slicers, making it a driving force for the entire industry." msgstr "" +"Heute ist OrcaSlicer der am weitesten verbreitete und aktiv entwickelte Open-" +"Source-Slicer in der 3D-Druck-Community. Viele seiner Innovationen wurden " +"von anderen Slicern übernommen und treiben die gesamte Industrie voran." msgid "Version" msgstr "Version" @@ -4338,6 +4411,9 @@ msgid "" "\n" "The first layer height will be reset to 0.2." msgstr "" +"Eine anfängliche Schichthöhe von Null ist ungültig.\n" +"\n" +"Die Höhe der ersten Schicht wird auf 0,2 zurückgesetzt." msgid "" "This setting is only used for model size tunning with small value in some " @@ -4816,9 +4892,6 @@ msgstr "Trocknen stoppen" msgid "Proceed" msgstr "Fortfahren" -msgid "Done" -msgstr "Erledigt" - msgid "Retry" msgstr "Wiederholen" @@ -4905,7 +4978,7 @@ msgid "Range" msgstr "Reichweite" msgid "Empty string" -msgstr "" +msgstr "Leere Zeichenfolge" msgid "Value is out of range." msgstr "Wert ist außerhalb der Reichweite." @@ -4987,7 +5060,7 @@ msgid "Acceleration" msgstr "Beschleunigung" msgid "Jerk" -msgstr "" +msgstr "Ruck" msgid "Fan Speed" msgstr "Lüftergeschwindigkeit" @@ -5085,33 +5158,6 @@ msgstr "Stützenübergang" msgid "Mixed" msgstr "Gemischt" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Durchflussrate" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Lüftergeschwindigkeit" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Zeit" - -msgid "Actual speed profile" -msgstr "Aktuelles Geschwindigkeitsprofil" - -msgid "Speed: " -msgstr "Geschwindigkeit " - msgid "Height: " msgstr "Höhe: " @@ -5137,14 +5183,41 @@ msgid "Color: " msgstr "Farbe: " msgid "Acceleration: " -msgstr "" +msgstr "Beschleunigung: " msgid "Jerk: " -msgstr "" +msgstr "Ruck: " msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Durchflussrate" + +msgid "Fan speed" +msgstr "Lüftergeschwindigkeit" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Zeit" + +msgid "Speed: " +msgstr "Geschwindigkeit " + +msgid "Actual speed profile" +msgstr "Aktuelles Geschwindigkeitsprofil" + msgid "Statistics of All Plates" msgstr "Statistiken aller Platten" @@ -5274,10 +5347,10 @@ msgid "Actual Speed (mm/s)" msgstr "Aktuelle Geschwindigkeit (mm/s)" msgid "Acceleration (mm/s²)" -msgstr "" +msgstr "Beschleunigung (mm/s²)" msgid "Jerk (mm/s)" -msgstr "" +msgstr "Ruck (mm/s)" msgid "Fan Speed (%)" msgstr "Lüftergeschwindigkeit (%)" @@ -5310,7 +5383,7 @@ msgid "Filament change times" msgstr "Filamentwechselzeiten" msgid "Tool changes" -msgstr "" +msgstr "Werkzeugwechsel" msgid "Color change" msgstr "Farbwechsel" @@ -5404,10 +5477,10 @@ msgid "Sequence" msgstr "Reihenfolge" msgid "Object Selection" -msgstr "" +msgstr "Objektauswahl" msgid "Part Selection" -msgstr "" +msgstr "Teilauswahl" msgid "number keys" msgstr "Nummerntasten" @@ -5490,9 +5563,6 @@ msgstr "Orientieren" msgid "Arrange options" msgstr "Anordnungsoptionen" -msgid "Spacing" -msgstr "Abstand" - msgid "0 means auto spacing." msgstr "0 bedeutet automatischer Abstand." @@ -5627,7 +5697,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5804,8 +5874,8 @@ msgid "" "You can find it in \"Setting > Setting > LAN only > Access Code\"\n" "on the printer, as shown in the figure:" msgstr "" -"Sie finden es unter „Einstellungen > Einstellungen > Nur LAN > Zugangscode" -"\"\n" +"Sie finden es unter „Einstellungen > Einstellungen > Nur LAN > " +"Zugangscode\"\n" "am Drucker, wie in der Abbildung gezeigt:" msgid "Invalid input." @@ -5896,7 +5966,7 @@ msgid "Show Tip of the Day" msgstr "Tipp des Tages anzeigen" msgid "Check for Updates" -msgstr "" +msgstr "Nach Updates suchen" msgid "Open Network Test" msgstr "Netzwerktest öffnen" @@ -6032,6 +6102,15 @@ msgstr "Aktuelle Konfiguration in Dateien exportieren" msgid "Export" msgstr "Exportieren" +msgid "Sync Presets" +msgstr "Presets synchronisieren" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "Die neuesten Presets von OrcaCloud abrufen und anwenden" + +msgid "You must be logged in to sync presets from cloud." +msgstr "Sie müssen angemeldet sein, um Presets aus der Cloud zu synchronisieren." + msgid "Quit" msgstr "Beenden" @@ -6157,7 +6236,10 @@ msgid "View" msgstr "Ansicht" msgid "Preset Bundle" -msgstr "" +msgstr "Vorlagen-Bundle" + +msgid "Syncing presets from cloud…" +msgstr "Synchronisiere Presets aus der Cloud…" msgid "Help" msgstr "Hilfe" @@ -6199,7 +6281,7 @@ msgid "VFA" msgstr "VFA" msgid "Calibration Guide" -msgstr "" +msgstr "Kalibrierungsanleitung" msgid "&Open G-code" msgstr "&Öffne G-Code" @@ -6319,6 +6401,11 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"Möchten Sie Ihre persönlichen Daten von Orca Cloud synchronisieren?\n" +"Es enthält die folgenden Informationen:\n" +"1. Die Prozessvoreinstellungen\n" +"2. Die Filamentvoreinstellungen\n" +"3. Die Druckervoreinstellungen" msgid "Synchronization" msgstr "Synchronisierung" @@ -6342,6 +6429,8 @@ msgid "" "The player is not loaded because the GStreamer GTK video sink is missing or " "failed to initialize." msgstr "" +"Der Player ist nicht geladen, weil der GStreamer GTK Video-Sink fehlt oder " +"die Initialisierung fehlgeschlagen ist." msgid "Please confirm if the printer is connected." msgstr "Bitte bestätigen Sie, ob der Drucker verbunden ist." @@ -7261,10 +7350,10 @@ msgid "Model file downloaded." msgstr "Modelldatei heruntergeladen." msgid "Shared profiles may be available for this printer." -msgstr "" +msgstr "Für diesen Drucker sind möglicherweise freigegebene Profile verfügbar." msgid "Browse shared profiles" -msgstr "" +msgstr "Freigegebene Profile durchsuchen" msgid "Serious warning:" msgstr "Wichtige Warnung:" @@ -7369,7 +7458,7 @@ msgid "Spaghetti Detection" msgstr "Spaghettierkennung" msgid "Detect spaghetti failures (scattered lose filament)." -msgstr "" +msgstr "Erkennen von Spaghetti-Fehlern (verstreutes lose Filament)." msgid "Purge Chute Pile-Up Detection" msgstr "Erkennung von Abfallstau im Reinigungsrutsche" @@ -7480,7 +7569,7 @@ msgid "Objects" msgstr "Objekte" msgid "Cycle settings visibility" -msgstr "" +msgstr "Sichtbarkeit der Einstellungen wechseln" msgid "Compare presets" msgstr "Profile vergleichen" @@ -7787,9 +7876,13 @@ msgstr "" msgid "" "The 3MF file was generated by an older version, loading geometry data only." msgstr "" +"Die 3MF-Datei wurde von einer älteren Version erstellt, es werden nur die " +"Geometriedaten geladen." msgid "The 3MF file was generated by BambuStudio, loading geometry data only." msgstr "" +"Die 3MF-Datei wurde von BambuStudio erstellt, es werden nur die " +"Geometriedaten geladen." msgid "" "This project was created with an OrcaSlicer 2.3.1-alpha and uses infill " @@ -7838,10 +7931,15 @@ msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Some settings may not be fully compatible." msgstr "" +"Die 3MF wurde von BambuStudio (Version %s) erstellt, die neuer ist als die " +"kompatible Version %s. Einige Einstellungen sind möglicherweise nicht " +"vollständig kompatibel." msgid "" "The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer." msgstr "" +"Die 3MF wurde von BambuStudio erstellt. Einige Einstellungen können von " +"OrcaSlicer abweichen." msgid "Invalid values found in the 3MF:" msgstr "Ungültige Werte in der 3MF-Datei gefunden:" @@ -8010,10 +8108,10 @@ msgid "The selected object couldn't be split." msgstr "Das ausgewählte Objekt konnte nicht geteilt werden." msgid "Disable Auto-Drop to preserve z positioning?\n" -msgstr "" +msgstr "Auto-Drop deaktivieren, um die Z-Positionierung beizubehalten?\n" msgid "Object with floating parts was detected" -msgstr "" +msgstr "Objekt mit schwebenden Teilen erkannt" msgid "Another export job is running." msgstr "Ein weiterer Exportauftrag läuft gerade." @@ -8612,15 +8710,17 @@ msgid "Show the splash screen during startup." msgstr "Zeige den Splash-Screen beim Start." msgid "Show shared profiles notification" -msgstr "" +msgstr "Benachrichtigung für geteilte Profile anzeigen" msgid "" "Show a notification with a link to browse shared profiles when the selected " "printer is changed." msgstr "" +"Zeigen Sie eine Benachrichtigung mit einem Link zum Durchsuchen von " +"geteilten Profilen an, wenn der ausgewählte Drucker geändert wird." msgid "Use window buttons on left side" -msgstr "" +msgstr "Windows Taste auf der linken Seite verwenden" msgid "(Requires restart)" msgstr "(Erfordert Neustart)" @@ -8837,21 +8937,33 @@ msgstr "Freie Kamera verwenden" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Wenn aktiviert, wird die freie Kamera verwendet." -msgid "Swap pan and rotate mouse buttons" -msgstr "Schwenk- und Dreh-Maustasten vertauschen" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Wenn aktiviert, werden die Schwenk- und Drehfunktionen der linken und " -"rechten Maustaste vertauscht." - msgid "Reverse mouse zoom" msgstr "Maus-Zoom umkehren" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Wenn aktiviert, wird die Richtung des Zooms mit dem Mausrad umgekehrt." +msgid "Pan" +msgstr "Schwenken" + +msgid "Left Mouse Drag" +msgstr "Linke Maustaste drücken" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "Legen Sie die Aktion fest, die das Ziehen der linken Maustaste ausführen soll." + +msgid "Middle Mouse Drag" +msgstr "Mittlere Maustaste drücken" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "Legen Sie die Aktion fest, die das Ziehen der mittleren Maustaste ausführen soll." + +msgid "Right Mouse Drag" +msgstr "Rechte Maustaste drücken" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "Legen Sie die Aktion fest, die das Ziehen der rechten Maustaste ausführen soll." + msgid "Clear my choice on..." msgstr "Meine Auswahl löschen bei ..." @@ -8876,6 +8988,74 @@ msgstr "" "Lösche meine Auswahl zum Synchronisieren des Druckerprofils nach dem Laden " "der Datei." +msgid "Graphics" +msgstr "Grafik" + +msgid "Anti-aliasing" +msgstr "Kantenglättung" + +msgid "MSAA Multiplier" +msgstr "MSAA-Multiplikator" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" +"Stellen Sie die Stufe der Multi-Sample-Kantenglättung ein.\n" +"Höhere Werte führen zu glatteren Kanten, aber die Auswirkungen auf die " +"Leistung sind exponentiell.\n" +"Niedrigere Werte verbessern die Leistung auf Kosten von gezackten Kanten.\n" +"Wenn deaktiviert, wird empfohlen, FXAA zu aktivieren, um gezackte Kanten mit minimalen Auswirkungen auf die Leistung zu reduzieren.\n" +"\n" +"Erfordert einen Neustart der Anwendung." + +msgid "Disabled" +msgstr "Deaktiviert" + +msgid "FXAA post-processing" +msgstr "FXAA-Nachbearbeitung" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" +"Führt Fast Approximate Anti-Aliasing als Bildschirmraum-Pass aus.\n" +"Nützlich, um die MSAA-Einstellung zu deaktivieren oder zu reduzieren, um die Leistung zu verbessern.\n" +"\n" +"ist sofort wirksam" + +msgid "FPS" +msgstr "FPS" + +msgid "FPS cap" +msgstr "FPS-Begrenzung" + +msgid "(0 = unlimited)" +msgstr "(0 = unbegrenzt)" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" +"Begrenzt die Bildrate des Viewports, um die GPU-Auslastung und den " +"Energieverbrauch zu reduzieren.\n" +"Auf 0 setzen für unbegrenzte Bildrate." + + +msgid "Show FPS overlay" +msgstr "FPS-Overlay anzeigen" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "Zeigt die aktuelle FPS des Viewports in der oberen rechten Ecke an." + msgid "Login region" msgstr "Login region" @@ -8887,6 +9067,10 @@ msgid "" "the transmission of data to Bambu's cloud services too. Users who don't use " "BBL machines or use LAN mode only can safely turn on this function." msgstr "" +"Dies deaktiviert alle Cloud-Dienste, z.B. Orca Cloud und Bambu Cloud. Dies " +"stoppt auch die Übertragung von Daten an die Cloud-Dienste von Bambu. " +"Benutzer, die keine BBL-Maschinen verwenden oder nur den LAN-Modus nutzen, " +"können diese Funktion sicher aktivieren." msgid "Network test" msgstr "Netzwerktest" @@ -8895,15 +9079,17 @@ msgid "Test" msgstr "Test" msgid "Cloud Providers" -msgstr "" +msgstr "Cloud-Anbieter" msgid "Enable Bambu Cloud" -msgstr "" +msgstr "Bambu Cloud aktivieren" msgid "" "Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu " "login section appears on the homepage." msgstr "" +"Erlaubt das Anmelden bei Bambu Cloud neben Orca Cloud. Wenn aktiviert, " +"erscheint ein Bambu-Login-Bereich auf der Startseite." msgid "Update & sync" msgstr "Aktualisieren & synchronisieren" @@ -9038,6 +9224,19 @@ msgstr "Entwicklermodus" msgid "Skip AMS blacklist check" msgstr "Überspringen der AMS Blacklist-Prüfung" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "(Experimentell) Behalte bemalte Funktionen nach Mesh-Änderung bei" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" +"Versuchen Sie, bemalte Funktionen (Farbe/Naht/Stütze/unscharf usw.) nach " +"Änderung des Objekt-Meshs (z. B. schneiden/neu laden von der Festplatte/vereinfachen/reparieren usw.) beizubehalten\n" +"Sehr experimentell! Langsam und kann Artefakte erzeugen." + + msgid "Allow Abnormal Storage" msgstr "Fehlerhaften Speicher zulassen" @@ -9190,7 +9389,7 @@ msgid "Project-inside presets" msgstr "Projektinternes Profil" msgid "Bundle presets" -msgstr "" +msgstr "Gebündelte Profile" msgid "System" msgstr "System" @@ -9799,6 +9998,9 @@ msgid "" "type in the slicing file. Please make sure you have installed the correct " "filament in the external spool." msgstr "" +"Der Typ des externen Filaments ist unbekannt oder stimmt nicht mit dem " +"Filamenttyp in der Slicing-Datei überein. Bitte stellen Sie sicher, dass Sie " +"das richtige Filament in der externen Spule installiert haben." msgid "Please refer to Wiki before use->" msgstr "Bitte lesen Sie vor der Verwendung das Wiki->" @@ -10045,6 +10247,8 @@ msgid "" "Enabling both precise Z height and the prime tower may cause slicing errors. " "Do you still want to enable?" msgstr "" +"Das Aktivieren von sowohl präziser Z-Höhe als auch Reinigungsturm kann zu " +"Slicing-Fehlern führen. Möchten Sie trotzdem aktivieren?" msgid "" "A prime tower is required for clumping detection. There may be flaws on the " @@ -10058,6 +10262,8 @@ msgid "" "Enabling both precise Z height and the prime tower may cause slicing errors. " "Do you still want to enable precise Z height?" msgstr "" +"Das Aktivieren von sowohl präziser Z-Höhe als auch Reinigungsturm kann zu " +"Slicing-Fehlern führen. Möchten Sie trotzdem die präzise Z-Höhe aktivieren?" msgid "" "A prime tower is required for smooth timelapse. There may be flaws on the " @@ -10150,8 +10356,8 @@ msgid "" "Layer height exceeds the limit in Printer Settings -> Extruder -> Layer " "height limits, this may cause printing quality issues." msgstr "" -"Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder -" -"> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen." +"Die Schichthöhe überschreitet das Limit in Druckereinstellungen -> Extruder " +"-> Schichthöhenlimits. Dies kann zu Problemen mit der Druckqualität führen." msgid "Adjust to the set range automatically?\n" msgstr "Automatisch an den eingestellten Bereich anpassen?\n" @@ -10188,8 +10394,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Reinigungsturm\" hinzuzufügen, indem Sie mit der rechten " @@ -10610,7 +10816,7 @@ msgid "Normal" msgstr "Normal" msgid "Resonance Compensation" -msgstr "" +msgstr "Resonanzkompensation" msgid "Resonance Avoidance Speed" msgstr "Resonanzvermeidungs-Geschwindigkeit" @@ -10622,12 +10828,14 @@ msgid "" "The frequency of the anti-vibration signal will correspond to the natural " "frequency of the frame." msgstr "" +"Die Frequenz des Antivibrationssignals entspricht der Eigenfrequenz des " +"Rahmens." msgid "Damping" -msgstr "" +msgstr "Dämpfung" msgid "Damping ratio for the input shaping filter." -msgstr "" +msgstr "Dämpfungsverhältnis für den Eingangsformungsfilter." msgid "Speed limitation" msgstr "Geschwindigkeitsbegrenzung" @@ -10753,38 +10961,49 @@ msgid "" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" +" - %s:\n" +" %s erste Schicht %d %s, andere Schichten %d %s\n" +" %s maximale Delta %d %s, aktuelle Delta %d %s\n" msgid "" "Some first-layer and other-layer temperature pairs exceed safety limits.\n" -msgstr "" +msgstr "Einige Temperaturpaare für die erste und andere Schicht überschreiten die Sicherheitsgrenzen.\n" msgid "" "\n" "Invalid pairs:\n" msgstr "" +"\n" +"Ungültige Paare:\n" msgid "" "\n" "You can go back to edit values, or continue if this is intentional." msgstr "" +"\n" +"Sie können zurückgehen, um die Werte zu bearbeiten, oder fortfahren, wenn dies " +"absichtlich ist." msgid "" "\n" "\n" "Continue anyway?" msgstr "" +"\n" +"\n" +"Trotzdem fortfahren?" msgid "Temperature Safety Check" -msgstr "" +msgstr "Temperatur-Sicherheitsprüfung" msgid "Continue" msgstr "Fortsetzen" msgid "Back" -msgstr "Rückseite" +msgstr "Zurück" msgid "Don't warn again for this preset" -msgstr "" +msgstr "Nicht erneut für dieses Profil warnen" #, c-format, boost-format msgid "Left: %s" @@ -10831,6 +11050,36 @@ msgstr "Nicht speichern" msgid "Discard" msgstr "Verwerfen" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" +"Alle \"Neuer Wert\" Einstellungen in\n" +"\"%1%\"\n" +"werden gespeichert und \"%2%\" wird ohne Änderungen geöffnet." + + msgid "Click the right mouse button to display the full text." msgstr "" "Klicken Sie mit der rechten Maustaste, um den vollständigen Text anzuzeigen." @@ -10920,7 +11169,7 @@ msgstr "" "geänderten Werte in das neue Projekt übertragen möchten." msgid "Extruder count" -msgstr "" +msgstr "Anzahl der Extruder" msgid "Capabilities" msgstr "Fähigkeiten" @@ -11099,7 +11348,7 @@ msgstr "" "um fortzufahren oder sie manuell anzupassen." msgid "—> " -msgstr "" +msgstr "—> " msgid "" "Synchronizing AMS filaments will discard your modified but unsaved filament " @@ -11255,8 +11504,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach Objekt" -"\" eingestellt ist." +"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach " +"Objekt\" eingestellt ist." msgid "" "You selected external and AMS filament at the same time in an extruder, you " @@ -11370,11 +11619,16 @@ msgid "" "Native Wayland liveview requires the GStreamer GTK video sink. Please " "install the gtksink plugin for GStreamer, then restart OrcaSlicer." msgstr "" +"Native Wayland Liveview erfordert das GStreamer GTK Video Sink. Bitte " +"installieren Sie das gtksink-Plugin für GStreamer und starten Sie OrcaSlicer " +"neu." msgid "" "Failed to initialize the native Wayland GStreamer video sink. Please check " "your GStreamer GTK plugin installation." msgstr "" +"Fehler beim Initialisieren des nativen Wayland GStreamer Video Sinks. Bitte " +"überprüfen Ihre GStreamer GTK-Plugin-Installation." msgid "" "Windows Media Player is required for this task! Do you want to enable " @@ -11394,6 +11648,9 @@ msgid "" "Missing BambuSource component registered for media playing! Please re-" "install OrcaSlicer or seek community help." msgstr "" +"Fehlende BambuSource-Komponente, die für das Abspielen von Medien " +"registriert ist! Bitte installieren Sie OrcaSlicer neu oder suchen Sie Hilfe " +"in der Community." msgid "" "Using a BambuSource from a different install, video play may not work " @@ -11414,6 +11671,8 @@ msgstr "" msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "" +"Cloud-Agent ist nicht verfügbar. Bitte starten Sie OrcaSlicer neu und " +"versuchen Sie es erneut." msgid "Bambu Network plug-in not detected." msgstr "Bambu Network Plugin nicht erkannt." @@ -11424,6 +11683,9 @@ msgstr "Hier klicken um es herunterzuladen." msgid "Login" msgstr "Anmelden" +msgid "Login failed. Please try again." +msgstr "Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut." + msgid "[Action Required] " msgstr "[Aktion erforderlich] " @@ -11461,6 +11723,18 @@ msgstr "Liste der Tastaturkürzel anzeigen" msgid "Global shortcuts" msgstr "Globale Tastaturkürzel" +msgid "Pan View" +msgstr "Ansicht verschieben" + +msgid "Rotate View" +msgstr "Ansicht drehen" + +msgid "Middle mouse button" +msgstr "Mittlere Maustaste" + +msgid "Zoom View" +msgstr "Ansicht zoomen" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11594,7 +11868,7 @@ msgid "Zoom out" msgstr "Verkleinern" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Druckbar für Objekt/Teil umschalten" msgid "Switch between Prepare/Preview" msgstr "Zwischen Vorbereiten/ Vorschau wechseln" @@ -11686,7 +11960,7 @@ msgid "New version of Orca Slicer" msgstr "Neue Version von Orca Slicer" msgid "Check on Github" -msgstr "" +msgstr "Auf Github überprüfen" msgid "Skip this Version" msgstr "Überspringe diese Version" @@ -11854,13 +12128,13 @@ msgstr "Erweiterungsboard" #, boost-format msgid "Split into %1% parts" -msgstr "" +msgstr "In %1% Teile aufteilen" msgid "Repair finished" msgstr "Reparatur abgeschlossen" msgid "Repair failed" -msgstr "" +msgstr "Reparatur fehlgeschlagen" msgid "Repair canceled" msgstr "Reparatur abgebrochen" @@ -11908,10 +12182,10 @@ msgstr "" "hat ein fehlerhaftes Netz" msgid "Process change extrusion role G-code" -msgstr "" +msgstr "G-Code für Extrusionsrollenwechsel verarbeiten" msgid "Filament change extrusion role G-code" -msgstr "" +msgstr "G-Code für Extrusionsrollenwechsel verarbeiten" msgid "No object can be printed. Maybe too small" msgstr "" @@ -11945,15 +12219,19 @@ msgid "Flush volumes matrix do not match to the correct size!" msgstr "Reinigungsvolumen-Matrix stimmt nicht mit der korrekten Größe überein!" msgid "set_accel_and_jerk() is only supported by Klipper" -msgstr "" +msgstr "set_accel_and_jerk() wird nur von Klipper unterstützt" msgid "" "Input shaping is not supported by Marlin < 2.1.2.\n" "Check your firmware version and update your G-code flavor to ´Marlin 2´" msgstr "" +"Input Shaping wird von Marlin < 2.1.2 nicht unterstützt.\n" +"Überprüfen Sie Ihre Firmware-Version und aktualisieren Sie Ihren G-Code-" +"Flavour auf 'Marlin 2'" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2" msgstr "" +"Input Shaping wird nur von Klipper, RepRapFirmware und Marlin 2 unterstützt" msgid "Grouping error: " msgstr "Gruppierungsfehler: " @@ -11964,9 +12242,6 @@ msgstr " kann nicht platziert werden in der " msgid "Internal Bridge" msgstr "Interne Brücke" -msgid "Multiple" -msgstr "Mehrere" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12120,16 +12395,25 @@ msgid "" "temperature must fall within the recommended nozzle temperature range of the " "other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" +"Die ausgewählten Düsentemperaturen sind nicht kompatibel. Die " +"Düsentemperatur jedes Filaments muss innerhalb des empfohlenen " +"Düsentemperaturbereichs der anderen Filamente liegen. Andernfalls kann es zu " +"Düsenverstopfungen oder Druckerschäden kommen." msgid "" "Invalid recommended nozzle temperature range. The lower bound must be lower " "than the upper bound." msgstr "" +"Ungültiger empfohlener Düsentemperaturbereich. Die untere Grenze muss " +"niedriger sein als die obere Grenze." msgid "" "If you still want to print, you can enable the option in Preferences / " "Control / Slicing / Remove mixed temperature restriction." msgstr "" +"Wenn Sie trotzdem drucken möchten, können Sie die Option in Einstellungen / " +"Steuerung / Schneiden / Entfernen der gemischten Temperaturbeschränkung " +"aktivieren." msgid "No extrusions under current settings." msgstr "Keine Extrusion unter den aktuellen Einstellungen." @@ -12144,12 +12428,14 @@ msgstr "" msgid "" "Clumping detection is not supported when \"by object\" sequence is enabled." msgstr "" -"Die Klumpenerkennung wird nicht unterstützt, wenn die Sequenz \"nach Objekt" -"\" " +"Die Klumpenerkennung wird nicht unterstützt, wenn die Sequenz \"nach " +"Objekt\" aktiviert ist." msgid "" "Enabling both precise Z height and the prime tower may cause slicing errors." msgstr "" +"Die gleichzeitige Aktivierung von präziser Z-Höhe und Reinigungsturm kann zu " +"Schneidefehlern führen." msgid "" "A prime tower is required for clumping detection; otherwise, there may be " @@ -12350,6 +12636,8 @@ msgid "" "The Hollow base pattern is not supported by this support type; Rectilinear " "will be used instead." msgstr "" +"Das Hohl-Basis-Muster wird von diesem Stütztyp nicht unterstützt; Stattdessen " +"wird das Rechteckmuster verwendet." msgid "" "Support enforcers are used but support is not enabled. Please enable support." @@ -12534,7 +12822,7 @@ msgstr "" "Schicht, die durch diesen Wert angegeben ist." msgid "Elephant foot layers density" -msgstr "" +msgstr "Dichte der Schichten für die Elefantenfußkompensation" msgid "" "Density of internal solid infill for Elephant foot layers compensation.\n" @@ -12542,6 +12830,11 @@ msgid "" "Subsequent layers become linearly denser by the height specified in " "elefant_foot_compensation_layers." msgstr "" +"Dichte der internen festen Füllung für die Kompensation der Elefantenfuß-" +"Schichten.\n" +"Der Anfangswert für die zweite Schicht wird gesetzt.\n" +"Die nachfolgenden Schichten werden linear dichter, bis zur Höhe, die in " +"elefant_foot_compensation_layers angegeben ist." msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " @@ -12607,8 +12900,8 @@ msgstr "" "Feld sollte den Hostnamen, die IP-Adresse oder die URL der Drucker-Host-" "Instanz enthalten. Auf einen Drucker-Host hinter HAProxy mit aktivierter " "Basisauthentifizierung kann zugegriffen werden, indem Benutzername und " -"Passwort in die URL in folgendem Format eingegeben werden: https://username:" -"password@Ihre-octopi-Adresse/" +"Passwort in die URL in folgendem Format eingegeben werden: https://" +"username:password@Ihre-octopi-Adresse/" msgid "Device UI" msgstr "Gerät" @@ -13560,7 +13853,7 @@ msgstr "" "des Randes erleichtern" msgid "Brim flow ratio" -msgstr "" +msgstr "Brim-Flussverhältnis" msgid "" "This factor affects the amount of material for brims.\n" @@ -13570,6 +13863,14 @@ msgid "" "\n" "Note: The resulting value will not be affected by the first-layer flow ratio." msgstr "" +"Dieser Faktor beeinflusst die Menge des Materials für Ränder.\n" +"\n" +"Der tatsächliche Brimfluss wird berechnet, indem dieser Wert mit dem " +"Filamentflussverhältnis und, falls festgelegt, dem Objektflussverhältnis " +"multipliziert wird.\n" +"\n" +"Hinweis: Der resultierende Wert wird nicht vom Flussverhältnis der ersten " +"Schicht beeinflusst." msgid "Brim follows compensated outline" msgstr "Umrandung folgt einem kompensierten Umriss" @@ -13593,15 +13894,17 @@ msgstr "" "verschmilzt." msgid "Combine brims" -msgstr "" +msgstr "Ränder kombinieren" msgid "" "Combine multiple brims into one when they are close to each other. This can " "improve brim adhesion." msgstr "" +"Mehrere Ränder zu einem kombinieren, wenn sie nahe beieinander liegen. Dies " +"kann die Haftung des Rands verbessern." msgid "Brim ears" -msgstr "Brim Ohren" +msgstr "Brim-Ohren" msgid "Only draw brim over the sharp edges of the model." msgstr "Zeichne den Brim nur über die scharfen Kanten des Modells." @@ -13727,14 +14030,18 @@ msgstr "" msgid "" "Enable this to override the fan speed set in custom G-code during print." msgstr "" +"Aktivieren Sie dies, um die im benutzerdefinierten G-Code während des Drucks " +"eingestellte Lüftergeschwindigkeit zu überschreiben." msgid "On completion" -msgstr "" +msgstr "Nach Abschluss" msgid "" "Enable this to override the fan speed set in custom G-code after print " "completion." msgstr "" +"Aktivieren Sie dies, um die im benutzerdefinierten G-Code nach Abschluss des " +"Drucks eingestellte Lüftergeschwindigkeit zu überschreiben." msgid "" "Speed of exhaust fan during printing. This speed will override the speed in " @@ -13862,9 +14169,6 @@ msgstr "" "4. Auf alle anwenden - erzeugt zweite Brückenschichten für interne und nach " "außen gerichtete Brücken\n" -msgid "Disabled" -msgstr "Deaktiviert" - msgid "External bridge only" msgstr "Nur externe Brücke" @@ -14145,8 +14449,8 @@ msgid "" "external surface finish. It can also cause the infill to shine through the " "external surfaces of the part." msgstr "" -"Reihenfolge der Wand/Füllung. Wenn das Kontrollkästchen nicht aktiviert ist," -"werden die Wände zuerst gedruckt, was in den meisten Fällen am besten " +"Reihenfolge der Wand/Füllung. Wenn das Kontrollkästchen nicht aktiviert " +"ist,werden die Wände zuerst gedruckt, was in den meisten Fällen am besten " "funktioniert.\n" "\n" "Das Drucken der Füllung zuerst kann bei extremen Überhängen helfen, da die " @@ -14167,6 +14471,14 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"Die Richtung, in die die Konturwandschleifen extrudiertwerden, wenn man von " +"oben nach unten schaut.\n" +"Löcher werden in die entgegengesetzte Richtung zur Kontur gedruckt,um die " +"Ausrichtung mit Schichten beizubehalten, deren Konturpolygoneunvollständig " +"sind und die Richtung ändern, wodurch auch teilweise die Kontur eines Lochs " +"gebildet wird.\n" +"\n" +"Diese Option wird deaktiviert, wenn der Spiralen-Vasenmodus aktiviert ist." msgid "Counter clockwise" msgstr "Gegen den Uhrzeigersinn" @@ -14572,6 +14884,18 @@ msgstr "Automatisch für Spülen" msgid "Auto For Match" msgstr "Automatisch für Übereinstimmung" +msgid "Enable filament dynamic map" +msgstr "Dynamische Filamentzuordnung aktivieren" + +msgid "Enable dynamic filament mapping during print." +msgstr "Dynamische Filamentzuordnung während des Drucks aktivieren." + +msgid "Has filament switcher" +msgstr "Hat Filamentwechsler" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "Der Drucker verfügt über eine Filamentwechsler-Hardware (z. B. AMS)." + msgid "Flush temperature" msgstr "Spültemperatur" @@ -14696,6 +15020,13 @@ msgid "" "Note: Experimental and incomplete feature imported from BBS. Functional for " "some profiles that already have the variable saved." msgstr "" +"Wenn aktiviert, wird der Extrusionsfluss durch den kleineren Wert begrenzt, " +"der aus der Anpassung (berechnet aus Linienbreite und Schichthöhe) und dem " +"benutzerdefinierten maximalen Fluss berechnet wird. Wenn deaktiviert, wird " +"nur der benutzerdefinierte maximale Fluss angewendet.\n" +"\n" +"Hinweis: Experimentelle und unvollständige Funktion, importiert von BBS. " +"Funktional für einige Profile, die die Variable bereits gespeichert haben." msgid "Max volumetric speed multinomial coefficients" msgstr "Maximale volumetrische Geschwindigkeits-Multinomial-Koeffizienten" @@ -14835,10 +15166,10 @@ msgstr "" "nicht gestört wird und die Qualität des Drucks erhalten bleibt." msgid "Wipe tower cooling" -msgstr "" +msgstr "Kühlung des Wipe-Turms" msgid "Temperature drop before entering filament tower" -msgstr "" +msgstr "Temperaturabfall vor dem Betreten des Filamentturms" msgid "Interface layer pre-extrusion distance" msgstr "Vorextrusionsabstand der Schnittstellenschicht" @@ -15083,6 +15414,22 @@ msgstr "" "Verwendung mehrerer Linien für das Füllmuster, wenn vom Füllmuster " "unterstützt." +msgid "Z-buckling bias optimization (experimental)" +msgstr "Z-Buckling-Bias-Optimierung (experimentell)" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" +"Strafft die Gyroid-Welle entlang der Z-Achse (vertikal) bei geringer Fülldichte, " +"um die effektive vertikale Säulenlänge zu verkürzen und die Z-Achsen-Kompressions-" +"Knickfestigkeit zu verbessern. Der Filamentverbrauch bleibt erhalten. Keine " +"Auswirkung bei ~30% einfacher Fülldichte und darüber. Gilt nur, wenn das einfache " +"Füllmuster auf Gyroid eingestellt ist." + msgid "Sparse infill pattern" msgstr "Füllmuster" @@ -15260,16 +15607,16 @@ msgid "" "Acceleration of bridges. If the value is expressed as a percentage (e.g. " "50%), it will be calculated based on the outer wall acceleration." msgstr "" -"Beschleunigung der Brücken. Wenn der Wert als Prozentwert angegeben wird (z." -"B. 50%), wird er auf der Grundlage der Beschleunigung der Außenwand " +"Beschleunigung der Brücken. Wenn der Wert als Prozentwert angegeben wird " +"(z.B. 50%), wird er auf der Grundlage der Beschleunigung der Außenwand " "berechnet." msgid "mm/s² or %" msgstr "mm/s² o. %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Beschleunigung der spärlichen Innenfüllung. Wenn der Wert als Prozentwert " "angegeben wird (z.B. 100%), wird er auf der Grundlage der " @@ -15292,12 +15639,14 @@ msgstr "" "kann die Druckbetthaftung verbessern" msgid "First layer travel" -msgstr "" +msgstr "Bewegung der ersten Schicht" msgid "" "Travel acceleration of first layer.\n" "The percentage value is relative to Travel Acceleration." msgstr "" +"Bewegungsbeschleunigung der ersten Schicht.\n" +"Der Prozentwert bezieht sich auf die Bewegungsbeschleunigung." msgid "Enable accel_to_decel" msgstr "Beschleunigung zu Verzögerung einschalten" @@ -15351,6 +15700,8 @@ msgid "" "Travel jerk of first layer.\n" "The percentage value is relative to Travel Jerk." msgstr "" +"Bewegungsruck der ersten Schicht.\n" +"Der Prozentwert bezieht sich auf den Bewegungsruck." msgid "" "Line width of the first layer. If expressed as a %, it will be computed over " @@ -15380,7 +15731,7 @@ msgid "Speed of solid infill part of the first layer." msgstr "Geschwindigkeit des massiven Füllung der ersten Schicht." msgid "First layer travel speed" -msgstr "Bewegung" +msgstr "Geschwindigkeit der ersten Schicht" msgid "Travel speed of the first layer." msgstr "Bewegungsgeschwindigkeit der ersten Schicht" @@ -15410,13 +15761,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" -"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der " +"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " @@ -15644,6 +15995,16 @@ msgid "" "Ripple: Uniform ripple pattern that ripples left and right of the original " "path. Repeating pattern, woven appearance." msgstr "" +"Rauschtyp für die Fuzzy Skin Generierung:\n" +"Klassisch: Klassisches gleichmäßiges Rauschen.\n" +"Perlin: Perlin-Rauschen, das eine konsistentere Textur ergibt.\"nBillow: " +"Ähnlich wie Perlin-Rauschen, aber klumpiger.\n" +"Ridged Multifractal: Ridged-Rauschen mit scharfen, gezackten Merkmalen. " +"Erzeugt marmorartige Texturen.\n" +"Voronoi: Teilt die Oberfläche in Voronoi-Zellen auf und verschiebt jede um " +"eine zufällige Menge. Erzeugt eine Patchwork-Textur.\n" +"Ripple: Gleichmäßiges Wellmuster, das sich links und rechts des " +"ursprünglichen Pfades wellt. Wiederholendes Muster, gewobenes Aussehen." msgid "Classic" msgstr "Klassisch" @@ -15661,7 +16022,7 @@ msgid "Voronoi" msgstr "Voronoi" msgid "Ripple" -msgstr "" +msgstr "Ripple" msgid "Fuzzy skin feature size" msgstr "Fuzzy Skin Merkmalsgröße" @@ -15695,13 +16056,14 @@ msgstr "" "Werte führen zu glatterem Rauschen." msgid "Number of ripples per layer" -msgstr "" +msgstr "Anzahl der Wellen pro Schicht" msgid "Controls how many full cycles of ripples will be added per layer." msgstr "" +"Steuert, wie viele vollständige Wellenzyklen pro Schicht hinzugefügt werden." msgid "Ripple offset" -msgstr "" +msgstr "Wellenversatz" msgid "" "Shifts the ripple phase forward along the print path by the specified " @@ -15715,9 +16077,20 @@ msgid "" "The shift is applied once every number of layers set by Layers between " "ripple offset, so layers within the same group are printed identically." msgstr "" +"Verschiebt die Wellenphase entlang des Druckpfads um den angegebenen " +"Prozentsatz einer Wellenlänge pro Schichtperiode nach vorne.\n" +"- 0% hält jede Schicht identisch.\n" +"- 50% verschiebt das Muster um eine halbe Wellenlänge, wodurch die Phase " +"effektiv invertiert wird.\n" +"- 100% verschiebt das Muster um eine volle Wellenlänge, wodurch die " +"ursprüngliche Phase wiederhergestellt wird.\n" +"\n" +"Die Verschiebung wird einmal alle Anzahl von Schichten angewendet, die durch " +"Schichten zwischen Wellenversatz eingestellt ist, so dass Schichten " +"innerhalb derselben Gruppe identisch gedruckt werden." msgid "Layers between ripple offset" -msgstr "" +msgstr "Schichten zwischen Wellenversatz" msgid "" "Specifies how many consecutive layers share the same ripple phase before the " @@ -15730,6 +16103,15 @@ msgid "" "to 6 are shifted by the configured offset, then layers 7 to 9 return to the " "base pattern, etc." msgstr "" +"Legt fest, wie viele aufeinanderfolgende Schichten die gleiche Wellenphase " +"teilen, bevor der Versatz angewendet wird.\n" +"Beispiel:\n" +"- 1 = Schicht 1 wird mit dem Basis-Wellenmuster gedruckt, dann wird Schicht " +"2 um den konfigurierten Versatz verschoben, dann kehrt Schicht 3 zum Basis-" +"Muster zurück, und so weiter.\n" +"- 3 = Schichten 1 bis 3 werden mit dem Basis-Wellenmuster gedruckt, dann " +"werden Schichten 4 bis 6 um den konfigurierten Versatz verschoben, dann " +"kehren Schichten 7 bis 9 zum Basis-Muster zurück, usw." msgid "Filter out tiny gaps" msgstr "Filtert winzige Lücken aus" @@ -15932,9 +16314,38 @@ msgstr "" "aus, bevor die Geschwindigkeit auf die Zielgeschwindigkeit reduziert wird, " "um den Kühlventilator anzuschubsen.Dies ist bei Lüftern nützlich, bei denen " "eine niedrige PWM-Leistung möglicherweise nicht ausreicht, um den Lüfter vom " -"Stillstand aus zu starten oder um den Lüfter schneller auf Touren zu bringen." +"Stillstand aus zu starten oder um den Lüfter schneller auf Touren zu " +"bringen.Setze den Wert auf 0, um diese Funktion zu deaktivieren." + +msgid "Minimum non-zero part cooling fan speed" +msgstr "Minimale nicht-null Lüftergeschwindigkeit für die Teilekühlung" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" +"Einige Teilekühlventilatoren können nicht zu drehen beginnen, wenn sie unter einem bestimmten PWM-Arbeitszyklus befehligt werden. Wenn dieser Wert über 0 eingestellt ist, wird jeder nicht-null-Teilekühlventilatorbefehl auf mindestens diesen Prozentsatz angehoben, damit der Lüfter zuverlässig startet. Ein Lüfterbefehl von 0 (Lüfter aus) wird immer genau eingehalten. Diese Begrenzung wird nach jeder anderen Lüfterberechnung angewendet (Erstschicht-Ramp-up, Schichtzeit-Interpolation, Überhangs-/Brücken-/Stützstruktur-Schnittstellen-/Glättungsüberschreibungen), sodass die Skalierung weiterhin im Bereich [dieser Wert, 100%] erfolgt.\n" +"\n" +"Wenn Ihre Firmware den Lüfter bereits unter einem Schwellenwert deaktiviert (z.B. Klipper's [fan] off_below: 0.10 schaltet den Lüfter aus, wenn der befehligte Arbeitszyklus unter 10% liegt), sollten idealerweise dieser Wert und der Firmware-Schwellenwert auf denselben Wert eingestellt werden. Wenn sie übereinstimmen (z.B. off_below: 0.10 in Klipper und 10% hier), garantiert der Slicer, dass er nie einen nicht-null-Wert emittiert, den die Firmware stillschweigend fallen lässt, und der Lüfter nie einen Wert erhält, der unter dem Wert liegt, den er tatsächlich anfahren kann.\n" +"\n" "Setze den Wert auf 0, um diese Funktion zu deaktivieren." +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Druckzeit Kosten" @@ -16389,7 +16800,7 @@ msgid "" "nozzle diameter." msgstr "" "Der Abstand zu den Kanten. Ein Wert von 0 setzt dies auf die Hälfte des " -"Düsen Durchmessers" +"Düsendurchmessers." msgid "Print speed of ironing lines." msgstr "Druckgeschwindigkeit der Glättlinien." @@ -16407,46 +16818,55 @@ msgid "Use a fixed absolute angle for ironing." msgstr "Verwenden Sie einen festen absoluten Winkel zum Glätten." msgid "Ironing expansion" -msgstr "" +msgstr "Glättungsausdehnung" msgid "Expand or contract the ironing area." -msgstr "" +msgstr "Erweitern oder Verkleinern des Glättbereichs." msgid "Z contouring enabled" -msgstr "" +msgstr "Z Konturierung aktiviert" msgid "Enable Z-layer contouring (aka Z-layer anti-aliasing)." msgstr "" +"Z-Schicht-Konturierung aktivieren (auch bekannt als Z-Schicht-Anti-Aliasing)." msgid "Minimize wall height angle" -msgstr "" +msgstr "Minimale Wandhöhe Winkel" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" "Affects perimeters with a slope less than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" +"Reduziert die Höhe der oberen Oberflächenumrandungen, um der Modellkante zu " +"entsprechen.\n" +"Wirkt sich auf Umrandungen mit einer Neigung unterhalb dieses Winkels (Grad) " +"aus.\n" +"Ein vernünftiger Wert ist 35. Auf 0 setzen, um zu deaktivieren." msgid "°" msgstr "°" msgid "Don't alternate fill direction" -msgstr "" +msgstr "Füllrichtung nicht wechseln" msgid "Disable alternating fill direction when using Z contouring." msgstr "" +"Wechsel der Füllrichtung bei Verwendung der Z-Konturierung deaktivieren." msgid "Minimum z height" -msgstr "" +msgstr "Minimale Z-Höhe" msgid "" "Minimum Z-layer height.\n" "Also controls the slicing plane." msgstr "" +"Minimale Z-Schichthöhe.\n" +"Steuert auch die Schneideebene." msgid "This G-code is inserted at every layer change after the Z lift." msgstr "" -"Dieser G-Code wird bei jedem Schichtwechsel nach dem anheben von Z eingefügt." +"Dieser G-Code wird bei jedem Schichtwechsel nach dem Anheben von Z eingefügt." msgid "Clumping detection G-code" msgstr "Klumpen-Erkennungs-G-Code" @@ -16647,12 +17067,14 @@ msgid "Maximum speed of resonance avoidance." msgstr "Maximale Geschwindigkeit der Resonanzvermeidung." msgid "Emit input shaping" -msgstr "" +msgstr "Input Shaping ausgeben" msgid "" "Override firmware input shaping settings.\n" "If disabled, firmware settings are used." msgstr "" +"Firmware-Einstellungen für Input Shaping überschreiben.\n" +"Wenn deaktiviert, werden die Firmware-Einstellungen verwendet." msgid "Input shaper type" msgstr "Input Shaper Typ" @@ -16662,42 +17084,45 @@ msgid "" "Default uses the firmware default settings.\n" "Disable turns off input shaping in the firmware." msgstr "" +"Wählen Sie den Input Shaper Algorithmus.\n" +"Standardmäßig werden die Standardeinstellungen der Firmware verwendet.\n" +"Deaktivieren schaltet die Eingangsformung in der Firmware aus." msgid "MZV" -msgstr "" +msgstr "MZV" msgid "ZV" -msgstr "" +msgstr "ZV" msgid "ZVD" -msgstr "" +msgstr "ZVD" msgid "ZVDD" -msgstr "" +msgstr "ZVDD" msgid "ZVDDD" -msgstr "" +msgstr "ZVDDD" msgid "EI" -msgstr "" +msgstr "EI" msgid "EI2" -msgstr "" +msgstr "EI2" msgid "2HUMP_EI" -msgstr "" +msgstr "2HUMP_EI" msgid "EI3" -msgstr "" +msgstr "EI3" msgid "3HUMP_EI" -msgstr "" +msgstr "3HUMP_EI" msgid "DAA" -msgstr "" +msgstr "DAA" msgid "X" -msgstr "" +msgstr "X" msgid "" "Resonant frequency for the X axis input shaper.\n" @@ -16705,15 +17130,23 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Resonanzfrequenz für den X-Achsen-Input-Shaper.\n" +"Null verwendet die Firmware-Frequenz.\n" +"Um die Eingangsformung zu deaktivieren, verwenden Sie den Typ Deaktivieren.\n" +"RRF: X- und Y-Werte sind gleich." msgid "Y" -msgstr "" +msgstr "Y" msgid "" "Resonant frequency for the Y axis input shaper.\n" "Zero will use the firmware frequency.\n" "To disable input shaping, use the Disable type." msgstr "" +"Resonanzfrequenz für den Y-Achsen-Input-Shaper.\n" +"Null verwendet die Firmware-Frequenz.\n" +"Um die Eingangsformung zu deaktivieren, verwenden Sie den Typ Deaktivieren.\n" +"RRF: X- und Y-Werte sind gleich." msgid "" "Damping ratio for the X axis input shaper.\n" @@ -16721,12 +17154,20 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Dämpfungsverhältnis für den X-Achsen-Input-Shaper.\n" +"Null verwendet das Dämpfungsverhältnis der Firmware.\n" +"Um die Eingangsformung zu deaktivieren, verwenden Sie den Typ Deaktivieren.\n" +"RRF: X- und Y-Werte sind gleich." msgid "" "Damping ratio for the Y axis input shaper.\n" "Zero will use the firmware damping ratio.\n" "To disable input shaping, use the Disable type." msgstr "" +"Dämpfungsverhältnis für den Y-Achsen-Input-Shaper.\n" +"Null verwendet das Dämpfungsverhältnis der Firmware.\n" +"Um die Eingangsformung zu deaktivieren, verwenden Sie den Typ Deaktivieren.\n" +"RRF: X- und Y-Werte sind gleich." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -16853,10 +17294,12 @@ msgstr "" "diese Funktion zu verwenden. G-Code-Befehl: M106 P2 S(0-255)" msgid "For the first" -msgstr "" +msgstr "Für die Erste" msgid "Set special auxiliary cooling fan for the first certain layers." msgstr "" +"Spezielle Hilfsventilatorgeschwindigkeit für die ersten bestimmten Schichten " +"einstellen." msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" " @@ -16865,10 +17308,18 @@ msgid "" "in which case the fan will run at maximum allowed speed at layer \"For the " "first\" + 1." msgstr "" +"Die Geschwindigkeit des Hilfsventilators wird linear von der Schicht \"Für " +"das Erste\" bis zur maximalen Geschwindigkeit bei der Schicht \"Volle " +"Ventilator-geschwindigkeit bei Schicht\" erhöht.\n" +"\"Volle Ventilatorgeschwindigkeit bei Schicht\" wird ignoriert, wenn sie " +"niedriger ist als \"Für das Erste\", in diesem Fall wird der Ventilator bei " +"der Schicht \"Für das Erste\" + 1 mit maximaler Geschwindigkeit laufen." msgid "" "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "" +"Spezielle Hilfsventilatorgeschwindigkeit, nur für die ersten x Schichten " +"wirksam." msgid "" "The lowest printable layer height for the extruder. Used to limit the " @@ -17102,12 +17553,15 @@ msgstr "" "Konfigurationseinstellungen durch Lesen von Umgebungsvariablen abrufen." msgid "Change extrusion role G-code (process)" -msgstr "" +msgstr "G-Code für den Wechsel der Extrusionsrolle (Prozess)" msgid "" "This G-code is inserted when the extrusion role is changed. It runs after " "the machine and filament extrusion role G-code." msgstr "" +"Dieser G-Code wird eingefügt, wenn die Extrusionsrolle gewechselt wird. Er " +"wird nach dem G-Code für die Maschine und die Filamentextrusionsrolle " +"ausgeführt." msgid "Printer type" msgstr "Druckertyp" @@ -17515,8 +17969,8 @@ msgstr "" "Geschwindigkeit der äußeren oder inneren Wände abweicht. Wenn die hier " "angegebene Geschwindigkeit höher ist als die Geschwindigkeit der äußeren " "oder inneren Wände, wird der Drucker auf die langsamere der beiden " -"Geschwindigkeiten zurückgesetzt. Wenn sie als Prozentsatz angegeben wird (z." -"B. 80%), wird die Geschwindigkeit auf der Grundlage der jeweiligen " +"Geschwindigkeiten zurückgesetzt. Wenn sie als Prozentsatz angegeben wird " +"(z.B. 80%), wird die Geschwindigkeit auf der Grundlage der jeweiligen " "Geschwindigkeit der äußeren oder inneren Wand berechnet. Der Standardwert " "ist auf 100% eingestellt." @@ -17571,8 +18025,8 @@ msgid "Role base wipe speed" msgstr "Rollenbasierte Wipe Geschwindigkeit" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17949,7 +18403,7 @@ msgstr "" "übersprungen. Dies ist nützlich für den manuellen Mehrmaterialdruck, bei dem " msgid "Wipe tower type" -msgstr "" +msgstr "Reinigungsturm-Typ" msgid "" "Choose the wipe tower implementation for multi-material prints. Type 1 is " @@ -17957,12 +18411,16 @@ msgid "" "offers better compatibility with multi-tool and MMU printers and provide " "overall better compatibility." msgstr "" +"Wählen Sie die Implementierung des Reinigungsturms für Mehrmaterialdrucke. " +"Typ 1 wird für Bambu- und Qidi-Drucker mit Filamentabschneider empfohlen. " +"Typ 2 bietet bessere Kompatibilität mit Mehrwerkzeug- und MMU-Druckern und " +"insgesamt bessere Kompatibilität." msgid "Type 1" -msgstr "" +msgstr "Typ 1" msgid "Type 2" -msgstr "" +msgstr "Typ 2" msgid "Purge in prime tower" msgstr "Reinige im Reinigungsturm" @@ -17973,6 +18431,21 @@ msgstr "Reinige das restliche Filament im Reinigungsturm" msgid "Enable filament ramming" msgstr "Erlaube Filamentrammen" +msgid "Tool change on wipe tower" +msgstr "Werkzeugwechsel auf dem Reinigungsturm" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" +"Erzwinge, dass der Werkzeugkopf zum Reinigungsturm fährt, bevor der Werkzeugwechselbefehl (Tx) ausgegeben wird. Nur relevant für Mehrfach-Extruder (Mehrfach-Werkzeugkopf) Drucker, die einen Typ-2-Reinigungsturm verwenden. Standardmäßig überspringt Orca die Fahrt auf Mehrfach-Werkzeugkopf-Maschinen, da die Firmware den Kopfwechsel übernimmt, was dazu führen kann, dass der Tx-Befehl über dem gedruckten Teil ausgegeben wird. Aktivieren Sie diese Option, wenn Sie möchten, dass der Werkzeugwechsel immer über dem Reinigungsturm ausgegeben wird." + + msgid "No sparse layers (beta)" msgstr "Keine dünnen Schichten (Beta)" @@ -18337,15 +18810,18 @@ msgid "Threshold angle" msgstr "Schwellenwinkel" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Für Überhänge, deren Neigungswinkel unter diesem Schwellwert liegt, werden Stützen generiert." -"Je kleiner dieser Wert ist, desto steiler kann der Überhang ohne Stützen gedruckt werden.\n" -"Hinweis: Bei 0 verwenden normale Stützen stattdessen die Schwellwertüberlappung, " -"während Baumstützen auf den Standardwert 30 zurückfallen." +"Für Überhänge, deren Neigungswinkel unter diesem Schwellwert liegt, werden " +"Stützen generiert.Je kleiner dieser Wert ist, desto steiler kann der " +"Überhang ohne Stützen gedruckt werden.\n" +"Hinweis: Bei 0 verwenden normale Stützen stattdessen die " +"Schwellwertüberlappung, während Baumstützen auf den Standardwert 30 " +"zurückfallen." msgid "Threshold overlap" msgstr "Schwellwertüberlappung" @@ -18512,8 +18988,8 @@ msgstr "aktiviere Temperaturkontrolle" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18601,12 +19077,14 @@ msgid "This G-code is inserted when the extrusion role is changed." msgstr "Dieser G-Code wird beim Wechsel der Extrusionsart eingefügt." msgid "Change extrusion role G-code (filament)" -msgstr "" +msgstr "Ändere Extrusionsart G-Code (Filament)" msgid "" "This G-code is inserted when the extrusion role is changed for the active " "filament." msgstr "" +"Dieser G-Code wird eingefügt, wenn die Extrusionsart für das aktive Filament " +"geändert wird." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -18918,7 +19396,7 @@ msgstr "" "verschiedene Materialien aufeinandertreffen." msgid "Cool down from interface boost during prime tower" -msgstr "^" +msgstr "Abkühlung von der Schnittstellen-Boost während des Reinigungsturms" msgid "" "When interface-layer temperature boost is active, set the nozzle back to " @@ -19220,15 +19698,17 @@ msgstr "" "Wände für die Oberfläche aktiviert sind." msgid "Maximum wall resolution" -msgstr "" +msgstr "Maximale Wandauflösung" msgid "" "This value determines the smallest wall line segment length in mm. The " "smaller you set this value, the more accurate and precise the walls will be." msgstr "" +"Dieser Wert bestimmt die kleinste Wandliniensegmentlänge in mm. Je kleiner " +"Sie diesen Wert einstellen, desto genauer und präziser werden die Wände sein." msgid "Maximum wall deviation" -msgstr "" +msgstr "Maximale Wandabweichung" msgid "" "The maximum deviation allowed when reducing the resolution for the 'Maximum " @@ -19237,6 +19717,11 @@ msgid "" "'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' " "takes precedence." msgstr "" +"Die maximale Abweichung, die bei der Reduzierung der Auflösung für die " +"Einstellung 'Maximale Wandauflösung' zulässig ist. Wenn Sie diesen Wert " +"erhöhen, wird der Druck weniger genau, aber der G-Code wird kleiner. " +"'Maximale Wandabweichung' begrenzt 'Maximale Wandauflösung', so dass wenn " +"die beiden in Konflikt stehen, 'Maximale Wandabweichung' Vorrang hat." msgid "First layer minimum wall width" msgstr "Erste Schicht minimale Wandbreite" @@ -19542,8 +20027,8 @@ msgid "Debug level" msgstr "Fehlersuchstufe" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Legt die Stufe der Fehlerprotokollierung fest. 0:fatal, 1:error, 2:warning, " "3:info, 4:debug, 5:trace\n" @@ -20021,7 +20506,7 @@ msgid "Generating infill toolpath" msgstr "Füllbewegungen generieren" msgid "Z contouring" -msgstr "" +msgstr "Z-Konturierung" msgid "Detect overhangs for auto-lift" msgstr "Erkennen der Überhänge für das automatische Anheben" @@ -20102,8 +20587,8 @@ msgstr "Die angegebene Datei konnte nicht gelesen werden, weil sie leer ist." msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj oder ." -"amf(.xml) haben." +"Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .stl, .obj " +"oder .amf(.xml) haben." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" @@ -20647,6 +21132,11 @@ msgid "" "temperature range of the other filaments. Otherwise, nozzle clogging or " "printer damage may occur." msgstr "" +"Die ausgewählten Düsentemperaturen sind nicht kompatibel. Bei mehrfarbigem " +"oder mehrmaterialigem Drucken muss die Düsentemperatur jedes Filaments " +"innerhalb des empfohlenen Düsentemperaturbereichs der anderen Filamente " +"liegen. Andernfalls kann es zu Düsenverstopfungen oder Schäden am Drucker " +"kommen." msgid "Sync AMS and nozzle information" msgstr "AMS- und Düseninformationen synchronisieren" @@ -21074,25 +21564,25 @@ msgid "NOTE: High values may cause Layer shift (>%s)" msgstr "Hinweis: Hohe Werte können zu Schichverschiebungen führen (>%s)" msgid "Flow Ratio Calibration" -msgstr "" +msgstr "Flussratenkalibrierung" msgid "Calibration Test Type" -msgstr "" +msgstr "Kalibrierungstesttyp" msgid "Pass 1 (Coarse)" -msgstr "" +msgstr "Durchgang 1 (Grob)" msgid "Pass 2 (Fine)" -msgstr "" +msgstr "Durchgang 2 (Fein)" msgid "YOLO (Recommended)" msgstr "YOLO (Empfohlen)" msgid "YOLO (Perfectionist)" -msgstr "" +msgstr "YOLO (Perfektionist)" msgid "Top Surface Pattern" -msgstr "" +msgstr "Oberflächenmuster" msgid "Send G-code to printer host" msgstr "Senden Sie G-Code an den Drucker-Host" @@ -21365,8 +21855,8 @@ msgstr "" "Möchten Sie es überschreiben?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Wir würden die Profile als \"Hersteller Typ Seriennummer @Drucker, den Sie " @@ -21550,6 +22040,24 @@ msgstr "" "Das Systemprofil erlaubt keine Erstellung. \n" "Bitte geben Sie das Druckermodell oder den Düsendurchmesser erneut ein." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" +"\n" +"\n" +"Verfügbare Düsenprofile für diesen Drucker:" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" +"\n" +"\n" +"Wählen Sie JA, um das vorhandene Profil zu wechseln:" + msgid "Printer Created Successfully" msgstr "Drucker erfolgreich erstellt" @@ -21802,36 +22310,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "Düsengröße im Profil: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "Düsengröße gespeichert: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"Die Größe des Düsentypen im Profil stimmt nicht mit der gespeicherten Düse " -"überein. Haben Sie Ihre Düse kürzlich gewechselt ?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "Düse[%d] im Profil: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "Düse[%d] gespeichert: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Ihre Düsenart im Profil stimmt nicht mit der gespeicherten Düse überein. " -"Haben Sie Ihre Düse kürzlich gewechselt?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -22710,7 +23188,7 @@ msgid "Global settings" msgstr "Globale Einstellungen" msgid "Video tutorial" -msgstr "" +msgstr "Video-Tutorial" msgid "(Sync with printer)" msgstr "(Mit Drucker synchronisieren)" @@ -22786,26 +23264,17 @@ msgstr "Maximaler Winkel" msgid "Detection radius" msgstr "Erkennungsradius" -msgid "Remove selected points" -msgstr "Ausgewählte Punkte entfernen" +msgid "Selected" +msgstr "Ausgewählt" -msgid "Remove all" -msgstr "Alle entfernen" +msgid "Auto-generate" +msgstr "Automatisch generieren" -msgid "Auto-generate points" -msgstr "Punkte automatisch generieren" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "Mausohren mit Maximalwinkel und Erkennungsradius generieren" -msgid "Add a brim ear" -msgstr "Ein Mausohr hinzufügen" - -msgid "Delete a brim ear" -msgstr "Löschen Sie ein Mausohr" - -msgid "Adjust head diameter" -msgstr "Kopfdurchmesser anpassen" - -msgid "Adjust section view" -msgstr "Justieren Sie die Schnittansicht" +msgid "Add or Select" +msgstr "Hinzufügen oder auswählen" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22817,8 +23286,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Den Brim-Typ dieses Objekts auf \"bemalt\" setzen" -msgid " invalid brim ears" -msgstr " ungültige Mausohren" +msgid "invalid brim ears" +msgstr "Ungültige Mausohren" msgid "Brim Ears" msgstr "Mausohren" @@ -23109,15 +23578,13 @@ msgstr "" "Wussten Sie, dass Orca Slicer eine Vielzahl von Tastenkombinationen und 3D-" "Szenenoperationen bietet?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Umkehrung bei ungeraden\n" -"Wussten Sie, dass die Funktion Umkehrung bei ungeraden die " -"Oberflächenqualität Ihrer Überhänge erheblich verbessern kann?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23417,6 +23884,85 @@ msgstr "" "wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die " "Wahrscheinlichkeit von Verwerfungen verringert werden kann?" +#~ msgid "Erase all painting" +#~ msgstr "Alles gemalte löschen" + +#~ msgid "Reset cut" +#~ msgstr "Schnitt zurücksetzen" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Schwenk- und Dreh-Maustasten vertauschen" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Wenn aktiviert, werden die Schwenk- und Drehfunktionen der linken und " +#~ "rechten Maustaste vertauscht." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "Düsengröße im Profil: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "Düsengröße gespeichert: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "Die Größe des Düsentypen im Profil stimmt nicht mit der gespeicherten " +#~ "Düse überein. Haben Sie Ihre Düse kürzlich gewechselt ?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "Düse[%d] im Profil: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "Düse[%d] gespeichert: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Ihre Düsenart im Profil stimmt nicht mit der gespeicherten Düse überein. " +#~ "Haben Sie Ihre Düse kürzlich gewechselt?" + +#~ msgid "Remove selected points" +#~ msgstr "Ausgewählte Punkte entfernen" + +#~ msgid "Remove all" +#~ msgstr "Alle entfernen" + +#~ msgid "Auto-generate points" +#~ msgstr "Punkte automatisch generieren" + +#~ msgid "Add a brim ear" +#~ msgstr "Ein Mausohr hinzufügen" + +#~ msgid "Delete a brim ear" +#~ msgstr "Löschen Sie ein Mausohr" + +#~ msgid "Adjust head diameter" +#~ msgstr "Kopfdurchmesser anpassen" + +#~ msgid "Adjust section view" +#~ msgstr "Justieren Sie die Schnittansicht" + +#~ msgid " invalid brim ears" +#~ msgstr " ungültige Mausohren" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Umkehrung bei ungeraden\n" +#~ "Wussten Sie, dass die Funktion Umkehrung bei ungeraden die " +#~ "Oberflächenqualität Ihrer Überhänge erheblich verbessern kann?" + #~ msgid "Pen size" #~ msgstr "Pinselgröße" @@ -24797,9 +25343,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Position setzen" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 566052444c..9de37b6c3f 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-05-18 09:32-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: \n" @@ -107,7 +107,7 @@ msgstr "Apply" msgid "On highlighted overhangs only" msgstr "" -msgid "Erase all painting" +msgid "Erase all" msgstr "" msgid "Highlight overhang areas" @@ -177,6 +177,9 @@ msgstr "" msgid "No auto support" msgstr "" +msgid "Done" +msgstr "" + msgid "Support Generated" msgstr "Support generated" @@ -326,6 +329,12 @@ msgstr "" msgid "Fixed step drag" msgstr "" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "" @@ -474,6 +483,18 @@ msgstr "" msgid "Build Volume" msgstr "" +msgid "Multiple" +msgstr "" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "" + msgid "Part" msgstr "" @@ -576,12 +597,6 @@ msgstr "" msgid "Add connectors" msgstr "" -msgid "Reset cut" -msgstr "" - -msgid "Reset cutting plane and remove connectors" -msgstr "" - msgid "Upper part" msgstr "" @@ -600,6 +615,9 @@ msgstr "" msgid "Cut to parts" msgstr "" +msgid "Reset cutting plane and remove connectors" +msgstr "" + msgid "Perform cut" msgstr "" @@ -826,6 +844,9 @@ msgstr "" msgid "Advanced" msgstr "" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1453,15 +1474,6 @@ msgid "" "feature 2 has been feature 1" msgstr "" -msgid "Warning: please select Plane's feature." -msgstr "" - -msgid "Warning: please select Point's or Circle's feature." -msgstr "" - -msgid "Warning: please select two different meshes." -msgstr "" - msgid "Copy to clipboard" msgstr "" @@ -1513,6 +1525,15 @@ msgstr "" msgid "Point and point assembly" msgstr "" +msgid "Warning: please select two different meshes." +msgstr "" + +msgid "Warning: please select Plane's feature." +msgstr "" + +msgid "Warning: please select Point's or Circle's feature." +msgstr "" + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1691,6 +1712,18 @@ msgstr "" msgid "Info" msgstr "" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1749,6 +1782,23 @@ msgid "" "version before it can be used normally." msgstr "" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" @@ -2281,10 +2331,10 @@ msgstr "" msgid "Edit" msgstr "" -msgid "Delete this filament" +msgid "Merge with" msgstr "" -msgid "Merge with" +msgid "Delete this filament" msgstr "" msgid "Select All" @@ -4416,9 +4466,6 @@ msgstr "" msgid "Proceed" msgstr "" -msgid "Done" -msgstr "" - msgid "Retry" msgstr "" @@ -4674,33 +4721,6 @@ msgstr "" msgid "Mixed" msgstr "" -msgid "mm/s" -msgstr "" - -msgid "mm/s²" -msgstr "" - -msgid "Flow rate" -msgstr "" - -msgid "mm³/s" -msgstr "" - -msgid "Fan speed" -msgstr "" - -msgid "°C" -msgstr "" - -msgid "Time" -msgstr "" - -msgid "Actual speed profile" -msgstr "" - -msgid "Speed: " -msgstr "" - msgid "Height: " msgstr "" @@ -4734,6 +4754,33 @@ msgstr "" msgid "PA: " msgstr "" +msgid "mm/s" +msgstr "" + +msgid "mm/s²" +msgstr "" + +msgid "mm³/s" +msgstr "" + +msgid "Flow rate" +msgstr "" + +msgid "Fan speed" +msgstr "" + +msgid "°C" +msgstr "" + +msgid "Time" +msgstr "" + +msgid "Speed: " +msgstr "" + +msgid "Actual speed profile" +msgstr "" + msgid "Statistics of All Plates" msgstr "" @@ -5045,9 +5092,6 @@ msgstr "" msgid "Arrange options" msgstr "" -msgid "Spacing" -msgstr "" - msgid "0 means auto spacing." msgstr "" @@ -5182,7 +5226,7 @@ msgstr "" msgid "Size:" msgstr "" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5560,6 +5604,15 @@ msgstr "" msgid "Export" msgstr "" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "" @@ -5685,6 +5738,9 @@ msgstr "" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "" @@ -8089,19 +8145,33 @@ msgstr "" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" -msgid "Swap pan and rotate mouse buttons" -msgstr "" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" - msgid "Reverse mouse zoom" msgstr "" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "" +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -8124,6 +8194,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "" @@ -8270,6 +8393,15 @@ msgstr "" msgid "Skip AMS blacklist check" msgstr "" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "" @@ -9240,8 +9372,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "" @@ -9840,6 +9972,32 @@ msgstr "" msgid "Discard" msgstr "" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "" @@ -10343,6 +10501,9 @@ msgstr "" msgid "Login" msgstr "" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "" @@ -10379,6 +10540,18 @@ msgstr "" msgid "Global shortcuts" msgstr "" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -10841,9 +11014,6 @@ msgstr "" msgid "Internal Bridge" msgstr "" -msgid "Multiple" -msgstr "" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "Failed to calculate line width of %1%. Cannot get value of “%2%” " @@ -12308,9 +12478,6 @@ msgid "" "external-facing bridges\n" msgstr "" -msgid "Disabled" -msgstr "" - msgid "External bridge only" msgstr "" @@ -12825,6 +12992,18 @@ msgstr "" msgid "Auto For Match" msgstr "" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "" @@ -13242,6 +13421,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "" @@ -13394,8 +13584,8 @@ msgid "mm/s² or %" msgstr "" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" msgid "" @@ -13520,10 +13710,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -13939,6 +14129,30 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "" @@ -15287,8 +15501,8 @@ msgid "Role base wipe speed" msgstr "" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -15600,6 +15814,19 @@ msgstr "" msgid "Enable filament ramming" msgstr "" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "" @@ -15900,15 +16127,17 @@ msgid "Threshold angle" msgstr "" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgid "Threshold overlap" msgstr "" @@ -16042,8 +16271,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -16868,8 +17097,8 @@ msgid "Debug level" msgstr "" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" msgid "Enable timelapse for print" @@ -18447,8 +18676,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" @@ -18617,6 +18846,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "" @@ -18834,32 +19075,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -19604,25 +19819,16 @@ msgstr "" msgid "Detection radius" msgstr "" -msgid "Remove selected points" +msgid "Selected" msgstr "" -msgid "Remove all" +msgid "Auto-generate" msgstr "" -msgid "Auto-generate points" +msgid "Generate brim ears using Max angle and Detection radius" msgstr "" -msgid "Add a brim ear" -msgstr "" - -msgid "Delete a brim ear" -msgstr "" - -msgid "Adjust head diameter" -msgstr "" - -msgid "Adjust section view" +msgid "Add or Select" msgstr "" msgid "" @@ -19633,7 +19839,7 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "" -msgid " invalid brim ears" +msgid "invalid brim ears" msgstr "" msgid "Brim Ears" @@ -19876,11 +20082,12 @@ msgid "" "3D scene operations?" msgstr "" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" #: resources/data/hints.ini: [hint:Cut Tool] diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 10785b1760..c28d9561a5 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: Ian A. Bassi <>\n" "Language-Team: \n" @@ -121,8 +121,8 @@ msgstr "Realizar" msgid "On highlighted overhangs only" msgstr "Solo en voladizos resaltados" -msgid "Erase all painting" -msgstr "Borrar todo lo pintado" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Resaltar las zonas de voladizos" @@ -191,6 +191,9 @@ msgstr "Resalte las caras según el ángulo del voladizo." msgid "No auto support" msgstr "No auto soportes" +msgid "Done" +msgstr "Hecho" + msgid "Support Generated" msgstr "Soportes generados" @@ -346,6 +349,12 @@ msgstr "Selección de parte" msgid "Fixed step drag" msgstr "Arrastre de paso fijo" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Escalado de un solo lado" @@ -496,6 +505,18 @@ msgstr "Posición de corte" msgid "Build Volume" msgstr "Volumen de construcción" +msgid "Multiple" +msgstr "Múltiple" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Separación" + msgid "Part" msgstr "Pieza" @@ -603,12 +624,6 @@ msgstr "Editar conectores" msgid "Add connectors" msgstr "Añadir conectores" -msgid "Reset cut" -msgstr "Reiniciar corte" - -msgid "Reset cutting plane and remove connectors" -msgstr "Reajustar el plano de corte y retirar los conectores" - msgid "Upper part" msgstr "Parte superior" @@ -627,6 +642,9 @@ msgstr "Después del corte" msgid "Cut to parts" msgstr "Cortar en piezas" +msgid "Reset cutting plane and remove connectors" +msgstr "Reajustar el plano de corte y retirar los conectores" + msgid "Perform cut" msgstr "Realizar corte" @@ -861,6 +879,9 @@ msgstr "Fuente por defecto" msgid "Advanced" msgstr "Avanzado" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1524,16 +1545,6 @@ msgstr "" "Característica 1 se ha reiniciado.\n" "característica 2 ha sido característica 1" -msgid "Warning: please select Plane's feature." -msgstr "Advertencia: por favor selecciona la característica del Plano." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "" -"Advertencia: por favor selecciona la característica del Punto o Círculo." - -msgid "Warning: please select two different meshes." -msgstr "Advertencia: por favor selecciona dos malla distintas." - msgid "Copy to clipboard" msgstr "Copiar al portapapeles" @@ -1587,6 +1598,16 @@ msgstr "(Moviendo)" msgid "Point and point assembly" msgstr "Ensamblaje punto a punto" +msgid "Warning: please select two different meshes." +msgstr "Advertencia: por favor selecciona dos malla distintas." + +msgid "Warning: please select Plane's feature." +msgstr "Advertencia: por favor selecciona la característica del Plano." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "" +"Advertencia: por favor selecciona la característica del Punto o Círculo." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1784,6 +1805,18 @@ msgstr "Esta es la versión más reciente." msgid "Info" msgstr "Información" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1851,6 +1884,23 @@ msgstr "" "La versión de Orca Slicer es una versión demasiado antigua y necesita ser " "actualizada a la última versión antes de poder utilizarla con normalidad." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" "Recuperando información de la impresora, por favor, inténtelo de nuevo más " @@ -2425,12 +2475,12 @@ msgstr "" msgid "Edit" msgstr "Editar" -msgid "Delete this filament" -msgstr "Eliminar este filamento" - msgid "Merge with" msgstr "Fusionar con" +msgid "Delete this filament" +msgstr "Eliminar este filamento" + msgid "Select All" msgstr "Seleccionar Todo" @@ -4833,9 +4883,6 @@ msgstr "Deja de secar" msgid "Proceed" msgstr "Continuar" -msgid "Done" -msgstr "Hecho" - msgid "Retry" msgstr "Reintentar" @@ -5100,33 +5147,6 @@ msgstr "Transición de soporte" msgid "Mixed" msgstr "Mixto" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Test de Flujo" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Velocidad del ventilador" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Tiempo" - -msgid "Actual speed profile" -msgstr "Perfil de velocidad real" - -msgid "Speed: " -msgstr "Velocidad: " - msgid "Height: " msgstr "Altura: " @@ -5160,6 +5180,33 @@ msgstr "Jerk: " msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Test de Flujo" + +msgid "Fan speed" +msgstr "Velocidad del ventilador" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Tiempo" + +msgid "Speed: " +msgstr "Velocidad: " + +msgid "Actual speed profile" +msgstr "Perfil de velocidad real" + msgid "Statistics of All Plates" msgstr "Estadísticas de todas las Camas" @@ -5504,9 +5551,6 @@ msgstr "Orientar" msgid "Arrange options" msgstr "Opciones de Organización" -msgid "Spacing" -msgstr "Separación" - msgid "0 means auto spacing." msgstr "0 significa auto separación." @@ -5641,7 +5685,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -6043,6 +6087,15 @@ msgstr "Exportar configuración actual a archivos" msgid "Export" msgstr "Exportar" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Salir del programa" @@ -6170,6 +6223,9 @@ msgstr "Vista" msgid "Preset Bundle" msgstr "Paquete de perfiles" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Ayuda" @@ -8862,21 +8918,33 @@ msgstr "" "Si está activada, utiliza la cámara libre. Si no está activada, utiliza la " "cámara restringida." -msgid "Swap pan and rotate mouse buttons" -msgstr "Intercambiar los botones de panorámica y rotación del mouse" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Si está habilitado, intercambia las funciones de panorámica y rotación de " -"los botones izquierdo y derecho del mouse." - msgid "Reverse mouse zoom" msgstr "Invertir el zoom del ratón" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Si se activa, invierte la dirección del zoom con la rueda del ratón." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Limpiar mi elección en..." @@ -8901,6 +8969,59 @@ msgstr "" "Limpiar mi elección para sincronizar el preajuste de la impresora después de " "cargar el archivo." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Desactivado" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Región de inicio de sesión" @@ -9067,6 +9188,15 @@ msgstr "Modo de desarrollador" msgid "Skip AMS blacklist check" msgstr "Evitar la comprobación de lista negra de AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Permitir almacenamiento anómalo" @@ -9576,8 +9706,8 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" -"\" para empezar a imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione " +"\"Confirmar\" para empezar a imprimir." msgid "Please check the following:" msgstr "Por favor compruebe lo siguiente:" @@ -10226,8 +10356,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en una " @@ -10881,6 +11011,32 @@ msgstr "No guardar" msgid "Discard" msgstr "Descartar" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Pulse el botón derecho del ratón para mostrar el texto completo." @@ -11469,6 +11625,9 @@ msgstr "Presione aquí para descargarlo." msgid "Login" msgstr "Inicio de sesión" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Acción requerida] " @@ -11506,6 +11665,18 @@ msgstr "Muestra lista de atajos de teclado" msgid "Global shortcuts" msgstr "Atajos globales" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -12005,9 +12176,6 @@ msgstr " no se puede colocar en el " msgid "Internal Bridge" msgstr "Puente Interior" -msgid "Multiple" -msgstr "Múltiple" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12661,8 +12829,8 @@ msgstr "" "contener el nombre de host, la dirección IP o la URL de la instancia de la " "impresora. Se puede acceder a la impresora detrás de un proxy con la " "autenticación básica activada por un nombre de usuario y contraseña en la " -"URL en el siguiente formato: https://nombredeusuario:" -"contraseña@tudirecciondeoctopi/" +"URL en el siguiente formato: https://" +"nombredeusuario:contraseña@tudirecciondeoctopi/" msgid "Device UI" msgstr "IU de dispositivo" @@ -13914,9 +14082,6 @@ msgstr "" "4. Aplicar a todos - genera segundas capas de puente tanto para puentes " "internos como externos.\n" -msgid "Disabled" -msgstr "Desactivado" - msgid "External bridge only" msgstr "Solo puente externo" @@ -14630,6 +14795,18 @@ msgstr "Auto para Descarga" msgid "Auto For Match" msgstr "Auto para Coincidencia" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Temperatura de descarga" @@ -15155,6 +15332,17 @@ msgstr "" "Usar múltiples líneas para el patrón de relleno, si el patrón de relleno lo " "soporta." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Patrón de relleno de baja densidad" @@ -15338,8 +15526,8 @@ msgid "mm/s² or %" msgstr "mm/s² o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Aceleración del relleno de baja densidad. Si el valor se expresa en " "porcentaje (por ejemplo 100%), se calculará basándose en la aceleración por " @@ -15480,16 +15668,16 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero desde la capa " -"\"close_fan_the_first_x_layers\" al máximo en la capa \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" se ignorará si es menor que " -"\"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al " -"máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al máximo en la capa " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" se ignorará si es menor " +"que \"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará " +"al máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "capa" @@ -15683,10 +15871,10 @@ msgstr "" "Al mismo tiempo, el ancho de extrusión para una capa determinada tampoco " "debe estar por debajo de un cierto umbral, que suele ser el 15–25%% de la " "altura de capa. Por lo tanto, el espesor máximo de piel difusa con un ancho " -"de perímetro de 0,4 mm y una altura de capa de 0,2 mm será 0,4-(0,2*0,25)=" -"±0,35 mm. Si introduce un valor mayor, se mostrará el error Flow::spacing() " -"y el modelo no se podrá laminar. Puede ajustar este valor hasta que deje de " -"producirse el error." +"de perímetro de 0,4 mm y una altura de capa de 0,2 mm será 0,4-" +"(0,2*0,25)=±0,35 mm. Si introduce un valor mayor, se mostrará el error " +"Flow::spacing() y el modelo no se podrá laminar. Puede ajustar este valor " +"hasta que deje de producirse el error." msgid "Displacement" msgstr "Desplazamiento" @@ -16037,6 +16225,30 @@ msgstr "" "para que el ventilador alcance la velocidad más rápido.\n" "Ajústelo a 0 para desactivarlo." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Coste monetario por hora" @@ -17721,8 +17933,8 @@ msgid "Role base wipe speed" msgstr "Velocidad de purga según tipo de línea" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -18125,6 +18337,19 @@ msgstr "Purgar el filamento restante en una torre." msgid "Enable filament ramming" msgstr "Habilitar compactación de filamento" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Sin capas de baja densidad (beta)" @@ -18482,15 +18707,18 @@ msgid "Threshold angle" msgstr "Pendiente máxima" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Se generará soporte para los voladizos cuyo ángulo de inclinación sea inferior al umbral." -"Cuanto menor sea este valor, más pronunciado podrá ser el voladizo que se imprima sin soporte.\n" -"Nota: Si se establece en 0, los soportes normales usarán en su lugar Umbral de solapamiento, " -"mientras que los soportes de árbol volverán al valor predeterminado de 30." +"Se generará soporte para los voladizos cuyo ángulo de inclinación sea " +"inferior al umbral.Cuanto menor sea este valor, más pronunciado podrá ser el " +"voladizo que se imprima sin soporte.\n" +"Nota: Si se establece en 0, los soportes normales usarán en su lugar Umbral " +"de solapamiento, mientras que los soportes de árbol volverán al valor " +"predeterminado de 30." msgid "Threshold overlap" msgstr "Umbral de solapamiento" @@ -18659,8 +18887,8 @@ msgstr "Activar control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -19231,8 +19459,8 @@ msgid "" "Picture sizes to be stored into a .gcode and .sl1 / .sl1s files, in the " "following format: \"XxY, XxY, ...\"" msgstr "" -"Los tamaños de las imágenes para almacenar en archivos .gcode y .sl1 / ." -"sl1s, en el siguiente formato: \"XxY, XxY, ...\"" +"Los tamaños de las imágenes para almacenar en archivos .gcode " +"y .sl1 / .sl1s, en el siguiente formato: \"XxY, XxY, ...\"" msgid "Format of G-code thumbnails" msgstr "Formato de las miniaturas de G-Code" @@ -19700,8 +19928,8 @@ msgid "Debug level" msgstr "Nivel de depuración" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Ajusta el nivel de registro de depuración. 0:fatal, 1:error, 2:advertencia, " "3:información, 4:depuración, 5:rastreo\n" @@ -20258,13 +20486,13 @@ msgstr "El archivo proporcionado no puede ser leído debido a que está vacío" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato de archivo desconocido: el archivo de entrada debe tener extensión ." -"STL, .obj o .amf (.xml)." +"Formato de archivo desconocido: el archivo de entrada debe tener " +"extensión .STL, .obj o .amf (.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato de archivo desconocido: el archivo de entrada debe tener " -"extensión .3mf o .zip.amf." +"Formato de archivo desconocido: el archivo de entrada debe tener extensión " +".3mf o .zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: fallo al parsear" @@ -20526,12 +20754,12 @@ msgstr "" "impresión de varios colores/materiales, la impresora utilizará el parámetro " "de compensación por defecto para el filamento durante cada cambio de " "filamento que tendrá un buen resultado en la mayoría de los casos.\n" -"un solo color/material, con la opción \"calibración de la dinámica de flujo" -"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " -"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " -"impresión de varios colores/materiales, la impresora utilizará el parámetro " -"de compensación por defecto para el filamento durante cada cambio de " -"filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de " +"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " +"camino antiguo, calibrar el filamento antes de la impresión; cuando se " +"inicia una impresión de varios colores/materiales, la impresora utilizará el " +"parámetro de compensación por defecto para el filamento durante cada cambio " +"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la cama de " @@ -21539,8 +21767,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -21730,6 +21958,18 @@ msgstr "" "Por favor, vuelva a introducir el modelo de la impresora o el diámetro de la " "boquilla." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Impresora creada con éxito" @@ -21987,36 +22227,6 @@ msgstr "" "impresora.\n" "Haga clic en el botón Sincronizar situado arriba y reinicie la calibración." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "tamaño de la boquilla en el preajuste: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "tamaño de boquilla guardado: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"El tamaño del tipo de boquilla preestablecido no coincide con la boquilla " -"memorizada. ¿Ha cambiado la boquilla recientemente?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "boquilla[%d] en preajuste: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "boquilla[%d] memorizada: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"El tipo de boquilla preestablecido no coincide con la boquilla memorizada. " -"¿Ha cambiado la boquilla recientemente?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Imprimir material %1s con una boquilla %2s puede dañar la boquilla." @@ -22977,26 +23187,17 @@ msgstr "Ángulo máximo" msgid "Detection radius" msgstr "Radio de detección" -msgid "Remove selected points" -msgstr "Eliminar puntos seleccionados" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Eliminar todo" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Auto-generar puntos" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Añadir oreja de borde" - -msgid "Delete a brim ear" -msgstr "Eliminar oreja de borde" - -msgid "Adjust head diameter" -msgstr "Ajustar diámetro de cabeza" - -msgid "Adjust section view" -msgstr "Ajustar vista de sección" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -23008,8 +23209,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Establecer el tipo de borde de este objeto a \"pintado\"" -msgid " invalid brim ears" -msgstr " orejas de borde inválidas" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Orejas de borde" @@ -23296,15 +23497,13 @@ msgstr "" "¿Sabías que Orca Slicer ofrece una amplia gama de atajos de teclado y " "operaciones de escenas 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Invertir en impar\n" -"¿Sabías que la función Invertir en impar puede mejorar " -"significativamente la calidad de la superficie de los voladizos?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23599,6 +23798,85 @@ msgstr "" "aumentar adecuadamente la temperatura de la cama térmica puede reducir la " "probabilidad de deformaciones?" +#~ msgid "Erase all painting" +#~ msgstr "Borrar todo lo pintado" + +#~ msgid "Reset cut" +#~ msgstr "Reiniciar corte" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Intercambiar los botones de panorámica y rotación del mouse" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Si está habilitado, intercambia las funciones de panorámica y rotación de " +#~ "los botones izquierdo y derecho del mouse." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "tamaño de la boquilla en el preajuste: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "tamaño de boquilla guardado: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "El tamaño del tipo de boquilla preestablecido no coincide con la boquilla " +#~ "memorizada. ¿Ha cambiado la boquilla recientemente?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "boquilla[%d] en preajuste: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "boquilla[%d] memorizada: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "El tipo de boquilla preestablecido no coincide con la boquilla " +#~ "memorizada. ¿Ha cambiado la boquilla recientemente?" + +#~ msgid "Remove selected points" +#~ msgstr "Eliminar puntos seleccionados" + +#~ msgid "Remove all" +#~ msgstr "Eliminar todo" + +#~ msgid "Auto-generate points" +#~ msgstr "Auto-generar puntos" + +#~ msgid "Add a brim ear" +#~ msgstr "Añadir oreja de borde" + +#~ msgid "Delete a brim ear" +#~ msgstr "Eliminar oreja de borde" + +#~ msgid "Adjust head diameter" +#~ msgstr "Ajustar diámetro de cabeza" + +#~ msgid "Adjust section view" +#~ msgstr "Ajustar vista de sección" + +#~ msgid " invalid brim ears" +#~ msgstr " orejas de borde inválidas" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Invertir en impar\n" +#~ "¿Sabías que la función Invertir en impar puede mejorar " +#~ "significativamente la calidad de la superficie de los voladizos?" + #~ msgid "Pen size" #~ msgstr "Tamaño del lápiz" @@ -24672,9 +24950,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Establecer Posición" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" @@ -25642,8 +25917,8 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la cama de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" -#~ "\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " +#~ "Purga\"." #~ msgid "Current association: " #~ msgstr "Asociación actual:" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index 97805813d1..e9278dcf0f 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -125,8 +125,8 @@ msgstr "Exécuter" msgid "On highlighted overhangs only" msgstr "Uniquement sur les surplombs mis en évidence" -msgid "Erase all painting" -msgstr "Effacer tout" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Mettre en surbrillance les zones en surplomb" @@ -196,6 +196,9 @@ msgstr "Mettre en surbrillance les faces en fonction de l'angle de surplomb." msgid "No auto support" msgstr "Pas de support auto" +msgid "Done" +msgstr "Terminé" + msgid "Support Generated" msgstr "Supports générés" @@ -350,6 +353,12 @@ msgstr "Sélection de pièce" msgid "Fixed step drag" msgstr "Déplacement par pas fixe" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Mise à l'échelle unilatérale" @@ -500,6 +509,18 @@ msgstr "Position de coupe" msgid "Build Volume" msgstr "Volume d’impression" +msgid "Multiple" +msgstr "Plusieurs" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Espacement" + msgid "Part" msgstr "Pièce" @@ -607,12 +628,6 @@ msgstr "Modifier les connecteurs" msgid "Add connectors" msgstr "Ajouter des connecteurs" -msgid "Reset cut" -msgstr "Réinitialiser la coupe" - -msgid "Reset cutting plane and remove connectors" -msgstr "Réinitialiser le plan de coupe et retirer les connecteurs" - msgid "Upper part" msgstr "Partie supérieure" @@ -631,6 +646,9 @@ msgstr "Après la coupe" msgid "Cut to parts" msgstr "Couper la sélection dans le presse-papiers" +msgid "Reset cutting plane and remove connectors" +msgstr "Réinitialiser le plan de coupe et retirer les connecteurs" + msgid "Perform cut" msgstr "Effectuer la coupe" @@ -863,6 +881,9 @@ msgstr "Police de caractères par défaut" msgid "Advanced" msgstr "Avancé" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1537,16 +1558,6 @@ msgstr "" "La fonction 1 a été réinitialisée, \n" "la fonction 2 a été la fonction 1" -msgid "Warning: please select Plane's feature." -msgstr "Avertissement : veuillez sélectionner la fonction du plan." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "" -"Avertissement : veuillez sélectionner la fonction du Point ou du Cercle." - -msgid "Warning: please select two different meshes." -msgstr "Attention : veuillez sélectionner deux maillages différents." - msgid "Copy to clipboard" msgstr "Copier dans le presse-papier" @@ -1600,6 +1611,16 @@ msgstr "(Déplacement)" msgid "Point and point assembly" msgstr "Assemblage point à point" +msgid "Warning: please select two different meshes." +msgstr "Attention : veuillez sélectionner deux maillages différents." + +msgid "Warning: please select Plane's feature." +msgstr "Avertissement : veuillez sélectionner la fonction du plan." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "" +"Avertissement : veuillez sélectionner la fonction du Point ou du Cercle." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1798,6 +1819,18 @@ msgstr "Il s'agit de la version la plus récente." msgid "Info" msgstr "Info" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1866,6 +1899,23 @@ msgstr "" "La version de OrcaSlicer est trop ancienne et doit être mise à jour vers la " "dernière version afin qu’il puisse être utilisé normalement" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" "Récupération des informations de l'imprimante, veuillez réessayer plus tard." @@ -2431,12 +2481,12 @@ msgstr "" msgid "Edit" msgstr "Éditer" -msgid "Delete this filament" -msgstr "Supprimer ce filament" - msgid "Merge with" msgstr "Fusionner avec" +msgid "Delete this filament" +msgstr "Supprimer ce filament" + msgid "Select All" msgstr "Tout sélectionner" @@ -4820,9 +4870,6 @@ msgstr "Arrêter le séchage" msgid "Proceed" msgstr "Continuer" -msgid "Done" -msgstr "Terminé" - msgid "Retry" msgstr "Réessayer" @@ -5084,33 +5131,6 @@ msgstr "Soutenir la transition" msgid "Mixed" msgstr "Mixte" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Débit" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Vitesse du ventilateur" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Durée" - -msgid "Actual speed profile" -msgstr "Profil de vitesse réel" - -msgid "Speed: " -msgstr "Vitesse: " - msgid "Height: " msgstr "Hauteur: " @@ -5144,6 +5164,33 @@ msgstr "" msgid "PA: " msgstr "AP : " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Débit" + +msgid "Fan speed" +msgstr "Vitesse du ventilateur" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Durée" + +msgid "Speed: " +msgstr "Vitesse: " + +msgid "Actual speed profile" +msgstr "Profil de vitesse réel" + msgid "Statistics of All Plates" msgstr "Statistiques de toutes les plaques" @@ -5489,9 +5536,6 @@ msgstr "Orienter" msgid "Arrange options" msgstr "Options d'agencement" -msgid "Spacing" -msgstr "Espacement" - msgid "0 means auto spacing." msgstr "0 signifie espacement automatique." @@ -5626,7 +5670,7 @@ msgstr "Le volume:" msgid "Size:" msgstr "Taille:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -6030,6 +6074,15 @@ msgstr "Exporter la configuration actuelle vers des fichiers" msgid "Export" msgstr "Exporter" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Quitter" @@ -6159,6 +6212,9 @@ msgstr "Affichage" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Aide" @@ -8849,15 +8905,6 @@ msgstr "" "Si activée, utilise la caméra libre. Si désactivée, utilise la caméra " "contrainte." -msgid "Swap pan and rotate mouse buttons" -msgstr "Échanger les boutons de panoramique et de rotation de la souris" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Si cette option est activée, les fonctions de panoramique et de rotation des " -"boutons gauche et droit de la souris sont échangées." - msgid "Reverse mouse zoom" msgstr "Inverser le zoom de la souris" @@ -8866,6 +8913,27 @@ msgstr "" "Si cette option est activée, elle inverse le sens du zoom avec la molette de " "la souris." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Effacer mon choix sur..." @@ -8890,6 +8958,59 @@ msgstr "" "Effacer mon choix pour la synchronisation du préréglage d'imprimante après " "le chargement du fichier." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Désactivé" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Région d'origine" @@ -9051,6 +9172,15 @@ msgstr "Mode Développeur" msgid "Skip AMS blacklist check" msgstr "Ignorer la vérification de la liste noire AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Autoriser le stockage anormal" @@ -10224,8 +10354,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Lorsque vous enregistrez un timelapse sans tête d’outil, il est recommandé " "d’ajouter une \"Tour d’essuyage timelapse\".\n" @@ -10875,6 +11005,32 @@ msgstr "Ne pas enregistrer" msgid "Discard" msgstr "Ignorer" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "" "Cliquez sur le bouton droit de la souris pour afficher le texte complet." @@ -11473,6 +11629,9 @@ msgstr "Cliquez ici pour le télécharger." msgid "Login" msgstr "Connexion" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action requise] " @@ -11514,6 +11673,18 @@ msgstr "Afficher la liste des raccourcis clavier" msgid "Global shortcuts" msgstr "Raccourcis globaux" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + #, fuzzy msgid "" "Auto orients selected objects or all objects. If there are selected objects, " @@ -12015,9 +12186,6 @@ msgstr " ne peut pas être placé dans le/la " msgid "Internal Bridge" msgstr "Pont interne" -msgid "Multiple" -msgstr "Plusieurs" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13926,9 +14094,6 @@ msgstr "" "4. Appliquer à tous - génère les deuxièmes couches de bridge pour les " "bridges internes et externes.\n" -msgid "Disabled" -msgstr "Désactivé" - msgid "External bridge only" msgstr "Pont externe uniquement" @@ -14649,6 +14814,18 @@ msgstr "Auto pour la purge" msgid "Auto For Match" msgstr "Auto pour la correspondance" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Température de purge" @@ -15173,6 +15350,17 @@ msgstr "" "Utilisation de lignes multiples pour le motif de remplissage, si pris en " "charge par le motif." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Motif de remplissage" @@ -15357,8 +15545,8 @@ msgid "mm/s² or %" msgstr "mm/s² ou %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Accélération du remplissage interne. Si la valeur est exprimée en " "pourcentage (par exemple 100%), elle sera calculée en fonction de " @@ -15497,10 +15685,10 @@ msgstr "Ventilateur à pleine vitesse à la couche" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La vitesse du ventilateur augmentera de manière linéaire à partir de zéro à " "la couche \"close_fan_the_first_x_layers\" jusqu’au maximum à la couche " @@ -16027,6 +16215,30 @@ msgstr "" "démarrer le ventilateur plus rapidement.\n" "Mettre à 0 pour désactiver." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Coût horaire" @@ -17688,8 +17900,8 @@ msgid "Role base wipe speed" msgstr "Vitesse d’essuyage basée sur la vitesse d’extrusion" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -18098,6 +18310,19 @@ msgstr "Purger le filament restant dans la tour d’amorçage" msgid "Enable filament ramming" msgstr "Activer le bourrage de filament" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Pas de couches éparses (beta)" @@ -18143,8 +18368,8 @@ msgid "" "Use \"Even-odd\" for 3DLabPrint airplane models. Use \"Close holes\" to " "close all holes in the model." msgstr "" -"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez « " -"Fermer les trous » pour fermer tous les trous du modèle." +"Utilisez « Pair-impair » pour les modèles d'avion 3DLabPrint. Utilisez " +"« Fermer les trous » pour fermer tous les trous du modèle." msgid "Regular" msgstr "Standard" @@ -18458,15 +18683,18 @@ msgid "Threshold angle" msgstr "Angle de seuil" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Un support sera généré pour les surplombs dont l'angle de pente est inférieur au seuil." -"Plus cette valeur est petite, plus le surplomb imprimable sans support est raide.\n" -"Remarque : si elle est définie sur 0, les supports normaux utilisent à la place Chevauchement du seuil, " -"tandis que les supports arborescents reviennent à la valeur par défaut de 30." +"Un support sera généré pour les surplombs dont l'angle de pente est " +"inférieur au seuil.Plus cette valeur est petite, plus le surplomb imprimable " +"sans support est raide.\n" +"Remarque : si elle est définie sur 0, les supports normaux utilisent à la " +"place Chevauchement du seuil, tandis que les supports arborescents " +"reviennent à la valeur par défaut de 30." msgid "Threshold overlap" msgstr "Chevauchement du seuil" @@ -18637,8 +18865,8 @@ msgstr "Activer le contrôle de la température" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -19231,8 +19459,8 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked." msgstr "" -"L’extrusion relative est recommandée lors de l’utilisation de l’option « " -"label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " +"L’extrusion relative est recommandée lors de l’utilisation de l’option " +"« label_objects ». Certains extrudeurs fonctionnent mieux avec cette option " "non verrouillée (mode d’extrusion absolu). La tour d’essuyage n’est " "compatible qu’avec le mode relatif. Il est recommandé sur la plupart des " "imprimantes. L’option par défaut est cochée" @@ -19681,11 +19909,11 @@ msgid "Debug level" msgstr "Niveau de débogage" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, 2 :" -"avertissement, 3 :info, 4 :débogage, 5 :trace\n" +"Définit le niveau de journalisation du débogage. 0 :fatal, 1 :erreur, " +"2 :avertissement, 3 :info, 4 :débogage, 5 :trace\n" msgid "Enable timelapse for print" msgstr "Activer le timelapse pour l’impression" @@ -20247,13 +20475,13 @@ msgstr "Le fichier fourni n'a pas pu être lu car il est vide" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter l'extension ." -"stl, .obj ou .amf (.xml)." +"Format de fichier inconnu : le fichier d'entrée doit porter " +"l'extension .stl, .obj ou .amf (.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Format de fichier inconnu : le fichier d'entrée doit porter " -"l'extension .3mf, .zip ou .amf." +"Format de fichier inconnu : le fichier d'entrée doit porter l'extension " +".3mf, .zip ou .amf." msgid "load_obj: failed to parse" msgstr "load_obj : échec de l'analyse" @@ -21528,8 +21756,8 @@ msgstr "" "Voulez-vous le réécrire ?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Nous renommerions les préréglages en « Vendor Type Serial @printer you " @@ -21717,6 +21945,18 @@ msgstr "" "Le préréglage système ne permet pas la création.\n" "Veuillez ressaisir le modèle d'imprimante ou le diamètre de buse." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Création d’une imprimante réussie" @@ -21981,36 +22221,6 @@ msgstr "" "Veuillez cliquer sur le bouton Synchroniser ci-dessus et redémarrer la " "calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "taille de buse dans le préréglage : %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "taille de buse mémorisée : %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"La taille du type de buse dans le préréglage ne correspond pas à la buse " -"mémorisée. Avez-vous changé votre buse récemment ?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "buse[%d] dans le préréglage : %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "buse[%d] mémorisée : %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Votre type de buse dans le préréglage ne correspond pas à la buse mémorisée. " -"Avez-vous changé votre buse récemment ?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Imprimer du matériau %1s avec une buse %2s peut endommager la buse." @@ -22986,26 +23196,17 @@ msgstr "Angle maximal" msgid "Detection radius" msgstr "Rayon de détection" -msgid "Remove selected points" -msgstr "Retirer les points sélectionnés" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Supprimer tout" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Générer automatiquement les points" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Ajouter une bordure à oreilles" - -msgid "Delete a brim ear" -msgstr "Supprimer une bordure à oreilles" - -msgid "Adjust head diameter" -msgstr "Ajuster le diamètre de la tête" - -msgid "Adjust section view" -msgstr "Ajuster la vue de section" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -23017,8 +23218,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Définir le type de bordure de cet objet sur \"peint\"" -msgid " invalid brim ears" -msgstr " bordure à oreilles invalide" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Bordure à oreilles" @@ -23306,16 +23507,13 @@ msgstr "" "Saviez-vous qu’Orca Slicer offre une large gamme de raccourcis clavier et " "d’opérations sur les scènes 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Parois inversées sur couches impaires\n" -"Saviez-vous que la fonction Parois inversées sur couches impaires " -"peut améliorer de manière significative la qualité de la surface de vos " -"surplombs ?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23616,6 +23814,86 @@ msgstr "" "déformer, tels que l’ABS, une augmentation appropriée de la température du " "plateau chauffant peut réduire la probabilité de déformation?" +#~ msgid "Erase all painting" +#~ msgstr "Effacer tout" + +#~ msgid "Reset cut" +#~ msgstr "Réinitialiser la coupe" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Échanger les boutons de panoramique et de rotation de la souris" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Si cette option est activée, les fonctions de panoramique et de rotation " +#~ "des boutons gauche et droit de la souris sont échangées." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "taille de buse dans le préréglage : %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "taille de buse mémorisée : %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "La taille du type de buse dans le préréglage ne correspond pas à la buse " +#~ "mémorisée. Avez-vous changé votre buse récemment ?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "buse[%d] dans le préréglage : %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "buse[%d] mémorisée : %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Votre type de buse dans le préréglage ne correspond pas à la buse " +#~ "mémorisée. Avez-vous changé votre buse récemment ?" + +#~ msgid "Remove selected points" +#~ msgstr "Retirer les points sélectionnés" + +#~ msgid "Remove all" +#~ msgstr "Supprimer tout" + +#~ msgid "Auto-generate points" +#~ msgstr "Générer automatiquement les points" + +#~ msgid "Add a brim ear" +#~ msgstr "Ajouter une bordure à oreilles" + +#~ msgid "Delete a brim ear" +#~ msgstr "Supprimer une bordure à oreilles" + +#~ msgid "Adjust head diameter" +#~ msgstr "Ajuster le diamètre de la tête" + +#~ msgid "Adjust section view" +#~ msgstr "Ajuster la vue de section" + +#~ msgid " invalid brim ears" +#~ msgstr " bordure à oreilles invalide" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Parois inversées sur couches impaires\n" +#~ "Saviez-vous que la fonction Parois inversées sur couches impaires " +#~ "peut améliorer de manière significative la qualité de la surface de vos " +#~ "surplombs ?" + #~ msgid "Pen size" #~ msgstr "Taille du crayon" @@ -24841,9 +25119,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Définir la Position" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" @@ -25613,8 +25888,8 @@ msgstr "" #~ "modèle. Réglez le « seuil d’une paroi » dans les paramètres avancés ci-" #~ "dessous pour ajuster la sensibilité de ce qui est considéré comme une " #~ "surface supérieure. Le « seuil d’une paroi » n’est visible que si ce " -#~ "paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option « " -#~ "surfaces supérieures à une paroi » est activée." +#~ "paramètre est supérieur à la valeur par défaut de 0,5 ou si l’option " +#~ "« surfaces supérieures à une paroi » est activée." #, c-format, boost-format #~ msgid "" @@ -26443,8 +26718,8 @@ msgstr "" #~ "thickness (top+bottom solid layers)" #~ msgstr "" #~ "Ajoutez du remplissage solide à proximité des surfaces inclinées pour " -#~ "garantir l'épaisseur verticale de la coque (couches solides supérieure" -#~ "+inférieure)." +#~ "garantir l'épaisseur verticale de la coque (couches solides " +#~ "supérieure+inférieure)." #~ msgid "Further reduce solid infill on walls (beta)" #~ msgstr "Réduire davantage le remplissage solide des parois (expérimental)" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 141dd7429a..15157d7ba8 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -118,8 +118,8 @@ msgstr "Alkalmaz" msgid "On highlighted overhangs only" msgstr "Csak a kiemelt túlnyúlásokon" -msgid "Erase all painting" -msgstr "Minden festés törlése" +msgid "Erase all" +msgstr "Az összes törlése" msgid "Highlight overhang areas" msgstr "Túlnyúló területek kiemelése" @@ -188,6 +188,9 @@ msgstr "Felületek kiemelése a túlnyúlási szögnek megfelelően." msgid "No auto support" msgstr "Nincs automatikus támasz" +msgid "Done" +msgstr "Kész" + msgid "Support Generated" msgstr "Támasz legenerálva" @@ -341,6 +344,12 @@ msgstr "Rész kijelölése" msgid "Fixed step drag" msgstr "Rögzített lépésközű húzás" +msgid "Context Menu" +msgstr "Helyi menü" + +msgid "Toggle Auto-Drop" +msgstr "Automatikus leejtés váltása" + msgid "Single sided scaling" msgstr "Egyoldalas méretezés" @@ -491,6 +500,18 @@ msgstr "Vágási pozíció" msgid "Build Volume" msgstr "Nyomtatási térfogat" +msgid "Multiple" +msgstr "Többszörös" + +msgid "Count" +msgstr "Darab" + +msgid "Gap" +msgstr "Rés" + +msgid "Spacing" +msgstr "Térköz" + msgid "Part" msgstr "Tárgy" @@ -529,7 +550,7 @@ msgid "Drag" msgstr "Húzás" msgid "Move cut line" -msgstr "" +msgstr "Vágási vonal mozgatása" msgid "Draw cut line" msgstr "Vágóvonal rajzolása" @@ -598,12 +619,6 @@ msgstr "Csatlakozók szerkesztése" msgid "Add connectors" msgstr "Csatlakozók hozzáadása" -msgid "Reset cut" -msgstr "Vágás visszaállítása" - -msgid "Reset cutting plane and remove connectors" -msgstr "Vágósík visszaállítása és connectorok eltávolítása" - msgid "Upper part" msgstr "Felső rész" @@ -622,6 +637,9 @@ msgstr "Vágás után" msgid "Cut to parts" msgstr "Részekre darabolás" +msgid "Reset cutting plane and remove connectors" +msgstr "Vágósík visszaállítása és connectorok eltávolítása" + msgid "Perform cut" msgstr "Vágás" @@ -826,7 +844,7 @@ msgid "Embossing actions" msgstr "Dombornyomási műveletek" msgid "Position on surface" -msgstr "" +msgstr "Elhelyezés a felületen" msgid "Emboss" msgstr "Dombornyomás" @@ -855,6 +873,9 @@ msgstr "Az alapértelmezett nyomtató" msgid "Advanced" msgstr "Haladó" +msgid "Reset all options except the text and operation" +msgstr "Összes beállítás visszaállítása, kivéve a szöveget és a műveletet" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1015,8 +1036,7 @@ msgstr "Érvénytelen stílus." #, boost-format msgid "Style \"%1%\" can't be used and will be removed from a list." -msgstr "" -"A(z) \"%1%\" stílus nem használható, ezért el lesz távolítva a listából." +msgstr "A(z) \"%1%\" stílus nem használható, ezért el lesz távolítva a listából." msgid "Unset italic" msgstr "Dőlt kikapcsolása" @@ -1123,9 +1143,7 @@ msgid "Rotate text Clockwise." msgstr "Szöveg forgatása az óramutató járásával megegyezően." msgid "Unlock the text's rotation when moving text along the object's surface." -msgstr "" -"A szöveg forgatásának feloldása, amikor a szöveget az objektum felületén " -"mozgatod." +msgstr "A szöveg forgatásának feloldása, amikor a szöveget az objektum felületén mozgatod." msgid "Lock the text's rotation when moving text along the object's surface." msgstr "" @@ -1509,15 +1527,6 @@ msgstr "" "Az 1. jellemző vissza lett állítva, \n" "a 2. jellemző lett az 1. jellemző" -msgid "Warning: please select Plane's feature." -msgstr "Figyelmeztetés: válaszd a sík jellemzőt." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Figyelmeztetés: válaszd a pont vagy kör jellemzőt." - -msgid "Warning: please select two different meshes." -msgstr "Figyelmeztetés: válassz ki két különböző hálót." - msgid "Copy to clipboard" msgstr "Másolás a vágólapra" @@ -1571,6 +1580,15 @@ msgstr "(Mozgatás)" msgid "Point and point assembly" msgstr "Pont-pont összeállítás" +msgid "Warning: please select two different meshes." +msgstr "Figyelmeztetés: válassz ki két különböző hálót." + +msgid "Warning: please select Plane's feature." +msgstr "Figyelmeztetés: válaszd a sík jellemzőt." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Figyelmeztetés: válaszd a pont vagy kör jellemzőt." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1764,6 +1782,18 @@ msgstr "Ez a legújabb verzió." msgid "Info" msgstr "Infó" +msgid "Loading printer & filament profiles" +msgstr "Nyomtató- és filamentprofilok betöltése" + +msgid "Creating main window" +msgstr "Főablak létrehozása" + +msgid "Loading current beállítás" +msgstr "Jelenlegi beállítás betöltése" + +msgid "Showing main window" +msgstr "Fő ablak megjelenítése" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1817,8 +1847,7 @@ msgid "User logged out" msgstr "Felhasználó kijelentkezett" msgid "new or open project file is not allowed during the slicing process!" -msgstr "" -"a projektfájlokkal kapcsolatos műveletek nem engedélyezettek szeletés közben!" +msgstr "a projektfájlokkal kapcsolatos műveletek nem engedélyezettek szeletés közben!" msgid "Open Project" msgstr "Projekt megnyitása" @@ -1830,6 +1859,29 @@ msgstr "" "A Orca Slicer ezen verziója túl régi és a legfrissebb verzióra kell " "frissíteni, mielőtt rendesen használható lenne" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" +"Nem sikerült csatlakozni az OrcaCloudhoz.\n" +"Ellenőrizd a hálózati kapcsolatodat\n" +"(HTTP %u): %s" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" +"Nem sikerült csatlakozni az OrcaCloudhoz.\n" +"Ellenőrizd a hálózati kapcsolatodat\n" +"(HTTP %u)" + +msgid "Cloud Error" +msgstr "Cloud hiba" + msgid "Retrieving printer information, please try again later." msgstr "Nyomtatóinformációk lekérése folyamatban, próbáld újra később." @@ -1885,14 +1937,14 @@ msgstr "Adatvédelmi szabályzat frissítése" #, c-format, boost-format msgid "your Bambu Cloud profile (user ID: \"%s\")" -msgstr "" +msgstr "a Bambu Cloud-profilod (felhasználói azonosító: \"%s\")" msgid "your default profile" -msgstr "" +msgstr "az alapértelmezett profilod" #, c-format, boost-format msgid "a user profile (folder: \"%s\")" -msgstr "" +msgstr "egy felhasználói profil (mappa: \"%s\")" #, c-format, boost-format msgid "" @@ -1900,6 +1952,9 @@ msgid "" "Do you want to migrate them to your OrcaCloud profile?\n" "This will copy your presets so they are available under your new account." msgstr "" +"Meglévő felhasználói beállítások találhatók a %s-ban.\n" +"Szeretnéd áttelepíteni őket OrcaCloud-profilba?\n" +"Ezzel átmásolja az beállítás értékeket, így azok elérhetők lesznek az új fiókjában." msgid "Migrate User Presets" msgstr "" @@ -1909,6 +1964,8 @@ msgid "" "Failed to migrate user presets:\n" "%s" msgstr "" +"Nem sikerült áttelepíteni a felhasználói beállításokat:\n" +"%s" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -1925,29 +1982,32 @@ msgid "" "reduce the preset size by removing custom configurations or use it locally " "only." msgstr "" +"Az beállítás tartalom túl nagy a cloud-al való szinkronizáláshoz " +"(több mint 1 MB). Csökkentsd a beállítás méretet az egyéni " +"konfigurációk eltávolításával, vagy használd csak helyileg." #, c-format, boost-format msgid "%s updated from %s to %s" -msgstr "" +msgstr "%s frissítve %s-ról %s-ra" #, c-format, boost-format msgid "%s has been downloaded." -msgstr "" +msgstr "%s letöltve." #, c-format, boost-format msgid "Bundle %s is no longer available." -msgstr "" +msgstr "A %s csomag már nem érhető el." #, c-format, boost-format msgid "Bundle %s access is unauthorized." -msgstr "" +msgstr "A %s csomaghoz való hozzáférés jogosulatlan." msgid "Loading user preset" msgstr "Felhasználói beállítás betöltése" #, c-format, boost-format msgid "%s has been removed." -msgstr "" +msgstr "%s eltávolítva." msgid "Switching application language" msgstr "Alkalmazás nyelvének váltása" @@ -2194,7 +2254,7 @@ msgid "Support Enforcer" msgstr "Támasz kényszerítő" msgid "Change part type" -msgstr "" +msgstr "Alkatrész típusának módosítsa" msgid "Set as an individual object" msgstr "Beállítás különálló objektumként" @@ -2214,10 +2274,10 @@ msgid "Printable" msgstr "Nyomtatható" msgid "Auto Drop" -msgstr "" +msgstr "Automatikus leejtés" msgid "Automatically drops the selected object to the build plate" -msgstr "" +msgstr "A kiválasztott objektumot automatikusan az építőlemezre ejti" msgid "Fix model" msgstr "Model javítása" @@ -2392,12 +2452,12 @@ msgstr "" msgid "Edit" msgstr "Szerkesztés" -msgid "Delete this filament" -msgstr "Filament törlése" - msgid "Merge with" msgstr "Egyesítés ezzel" +msgid "Delete this filament" +msgstr "Filament törlése" + msgid "Select All" msgstr "Összes kijelölése" @@ -2503,7 +2563,7 @@ msgid "Set Filament for selected items" msgstr "Filament beállítása a kiválasztott tárgyakhoz" msgid "Automatically snaps the selected object to the build plate" -msgstr "" +msgstr "A kiválasztott objektumot automatikusan az építőlemezre illeszti" msgid "Unlock" msgstr "Feloldás" @@ -2798,7 +2858,7 @@ msgid "Brim" msgstr "Perem" msgid "Object/Part Settings" -msgstr "" +msgstr "Objektum/alkatrész beállítások" msgid "Reset parameter" msgstr "Paraméter visszaállítása" @@ -2916,8 +2976,7 @@ msgid "Failed to connect to cloud service" msgstr "Nem sikerült csatlakozni a felhőszolgáltatáshoz" msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "" -"A felhőszolgáltatás állapotának megtekintéséhez kattints a fenti hivatkozásra" +msgstr "A felhőszolgáltatás állapotának megtekintéséhez kattints a fenti hivatkozásra" msgid "Failed to connect to the printer" msgstr "Nem sikerült csatlakozni a nyomtatóhoz" @@ -3326,8 +3385,7 @@ msgstr "" "nyomtatási feladatot küldesz a nyomtatóra." msgid "Encountered an unknown error with the Storage status. Please try again." -msgstr "" -"Ismeretlen hiba történt a tároló állapotával kapcsolatban. Próbáld újra." +msgstr "Ismeretlen hiba történt a tároló állapotával kapcsolatban. Próbáld újra." msgid "Sending G-code file over LAN" msgstr "G-kód fájl küldése LAN-on keresztül" @@ -3505,6 +3563,13 @@ msgid "" "enhancements. Each project carried the work of its predecessors forward, " "crediting those who came before." msgstr "" +"A nyílt forráskódú szeletelés az együttműködés és a hozzárendelés " +"hagyományán alapul. Az Alessandro Ranellucci és a RepRap közösség által " +"létrehozott Slic3r lerakta az alapot. A Prusa Research által készített " +"PrusaSlicer erre a munkára épült, a Bambu Studio a PrusaSlicerből " +"született, a SuperSlicer pedig közösségvezérelt fejlesztésekkel bővítette " +"ki. Mindegyik projekt az elődök munkáját vitte előre, elismerését fejezve ki" +" az előbbieknek." msgid "" "OrcaSlicer began in that same spirit, drawing from PrusaSlicer, BambuStudio, " @@ -3512,12 +3577,19 @@ msgid "" "introducing advanced calibration tools, precise wall and seam control and " "hundreds of other features." msgstr "" +"Az OrcaSlicer ugyanebben a szellemben indult, a PrusaSlicer, a BambuStudio, " +"a SuperSlicer és a CuraSlicer szoftverekből. Azóta azonban messze túlnőtt " +"eredetén – fejlett kalibráló eszközöket, pontos fal- és varratvezérlést és " +"több száz egyéb funkciót vezet be." msgid "" "Today, OrcaSlicer is the most widely used and actively developed open-source " "slicer in the 3D printing community. Many of its innovations have been " "adopted by other slicers, making it a driving force for the entire industry." msgstr "" +"Ma az OrcaSlicer a legszélesebb körben használt és legaktívabban fejlesztett " +"nyílt forráskódú szeletelő a 3D nyomtatási közösségben. Sok újítását más " +"szeletelők is átvették, így az egész iparág hajtóereje." msgid "Version" msgstr "Verzió" @@ -4751,9 +4823,6 @@ msgstr "Szárítás leállítása" msgid "Proceed" msgstr "Folytatás" -msgid "Done" -msgstr "Kész" - msgid "Retry" msgstr "Újra" @@ -4918,7 +4987,7 @@ msgid "Acceleration" msgstr "Gyorsulás" msgid "Jerk" -msgstr "" +msgstr "Rántás" msgid "Fan Speed" msgstr "Ventilátor fordulatszám" @@ -5016,33 +5085,6 @@ msgstr "Támasz átmenet" msgid "Mixed" msgstr "Vegyes" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Anyagáramlás" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Ventilátor fordulatszám" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Idő" - -msgid "Actual speed profile" -msgstr "Tényleges sebességprofil" - -msgid "Speed: " -msgstr "Sebesség:" - msgid "Height: " msgstr "Magasság:" @@ -5068,14 +5110,41 @@ msgid "Color: " msgstr "Szín: " msgid "Acceleration: " -msgstr "" +msgstr "Gyorsulás: " msgid "Jerk: " -msgstr "" +msgstr "Rántás: " msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Anyagáramlás" + +msgid "Fan speed" +msgstr "Ventilátor fordulatszám" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Idő" + +msgid "Speed: " +msgstr "Sebesség:" + +msgid "Actual speed profile" +msgstr "Tényleges sebességprofil" + msgid "Statistics of All Plates" msgstr "Összes tálca statisztikája" @@ -5205,10 +5274,10 @@ msgid "Actual Speed (mm/s)" msgstr "Tényleges sebesség (mm/s)" msgid "Acceleration (mm/s²)" -msgstr "" +msgstr "Gyorsulás (mm/s²)" msgid "Jerk (mm/s)" -msgstr "" +msgstr "Rántás (mm/s)" msgid "Fan Speed (%)" msgstr "Ventilátor fordulatszám (%)" @@ -5241,7 +5310,7 @@ msgid "Filament change times" msgstr "Filamentcserék száma" msgid "Tool changes" -msgstr "" +msgstr "Szerszámváltások" msgid "Color change" msgstr "Színváltás" @@ -5333,10 +5402,10 @@ msgid "Sequence" msgstr "Sorrend" msgid "Object Selection" -msgstr "" +msgstr "Objektum kijelölés" msgid "Part Selection" -msgstr "" +msgstr "Alkatrész kijelölés" msgid "number keys" msgstr "számbillentyűk" @@ -5418,9 +5487,6 @@ msgstr "Orientáció" msgid "Arrange options" msgstr "Elrendezési lehetőségek" -msgid "Spacing" -msgstr "Térköz" - msgid "0 means auto spacing." msgstr "A 0 automatikus térközt jelent." @@ -5529,7 +5595,7 @@ msgid "Paint Toolbar" msgstr "Festés eszköztár" msgid "part selection" -msgstr "" +msgstr "alkatrész kijelölés" msgid "Explosion Ratio" msgstr "Robbantási arány" @@ -5555,7 +5621,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5957,6 +6023,15 @@ msgstr "Aktuális konfiguráció exportálása fájlokba" msgid "Export" msgstr "Exportálás" +msgid "Sync Presets" +msgstr "Beállítások szinkronizálása" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "Hívd le és alkalmazd az OrcaCloud legújabb beállításait" + +msgid "You must be logged in to sync presets from cloud." +msgstr "A beállítások felhőből történő szinkronizálásához be kell jelentkezz." + msgid "Quit" msgstr "Kilépés" @@ -6082,7 +6157,10 @@ msgid "View" msgstr "Nézet" msgid "Preset Bundle" -msgstr "" +msgstr "Beállításcsomag" + +msgid "Syncing presets from cloud…" +msgstr "Beállítások szinkronizálása a felhőből…" msgid "Help" msgstr "Segítség" @@ -6124,7 +6202,7 @@ msgid "VFA" msgstr "VFA" msgid "Calibration Guide" -msgstr "" +msgstr "Kalibrálási útmutató" msgid "&Open G-code" msgstr "&G-kód megnyitása" @@ -6235,6 +6313,11 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"Szinkronizálni szeretnéd személyes adataid az Orca Cloudból?\n" +"A következő információkat tartalmazza:\n" +"1. A folyamat beállítás beállításai\n" +"2. A Filament beállítások\n" +"3. A nyomtató beállításai" msgid "Synchronization" msgstr "Szinkronizálás" @@ -6254,6 +6337,8 @@ msgid "" "The player is not loaded because the GStreamer GTK video sink is missing or " "failed to initialize." msgstr "" +"A lejátszó nem töltődik be, mert hiányzik a GStreamer GTK videonyelő, vagy " +"nem sikerült inicializálni." msgid "Please confirm if the printer is connected." msgstr "Kérlek, ellenőrizd, hogy a nyomtató csatlakoztatva van." @@ -7150,10 +7235,10 @@ msgid "Model file downloaded." msgstr "Modellfájl letöltve." msgid "Shared profiles may be available for this printer." -msgstr "" +msgstr "Megosztott profilok állnak rendelkezésre ehhez a nyomtatóhoz." msgid "Browse shared profiles" -msgstr "" +msgstr "Böngéssz a megosztott profilok között" msgid "Serious warning:" msgstr "Súlyos figyelmeztetés:" @@ -7190,7 +7275,8 @@ msgid "" "The application cannot run normally because OpenGL version is lower than " "3.2.\n" msgstr "" -"Az alkalmazás nem futtatható megfelelően, mert az OpenGL verzió 3.2 alatti.\n" +"Az alkalmazás nem futtatható megfelelően, mert az OpenGL verzió 3.2 " +"alatti.\n" msgid "Please upgrade your graphics card driver." msgstr "Kérlek, frissítsd a grafikus kártya illesztőprogramját." @@ -7367,7 +7453,7 @@ msgid "Objects" msgstr "Tárgyak" msgid "Cycle settings visibility" -msgstr "" +msgstr "Ciklusbeállítások láthatósága" msgid "Compare presets" msgstr "Beállítások összehasonlítása" @@ -7649,7 +7735,7 @@ msgid "Load 3MF" msgstr "3MF betöltése" msgid "BambuStudio Project" -msgstr "" +msgstr "BambuStudio projekt" msgid "The 3MF is not supported by OrcaSlicer, loading geometry data only." msgstr "" @@ -7666,9 +7752,11 @@ msgstr "" msgid "" "The 3MF file was generated by an older version, loading geometry data only." msgstr "" +"A 3MF fájlt egy régebbi verzió hozta létre, csak a geometriai adatok töltődnek be." msgid "The 3MF file was generated by BambuStudio, loading geometry data only." msgstr "" +"A 3MF fájlt a BambuStudio hozta létre, csak a geometriai adatok töltődnek be." msgid "" "This project was created with an OrcaSlicer 2.3.1-alpha and uses infill " @@ -7711,16 +7799,22 @@ msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Found unrecognized settings:" msgstr "" +"A 3MF-et a BambuStudio készítette (%s verzió), amely újabb, mint a %s " +"kompatibilis verzió. Felismeretlen beállításokat találtunk:" #, c-format, boost-format msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Some settings may not be fully compatible." msgstr "" +"A 3MF-et a BambuStudio készítette (%s verzió), amely újabb, mint a %s " +"kompatibilis verzió. Előfordulhat, hogy egyes beállítások nem teljesen " +"kompatibilisek." msgid "" "The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer." msgstr "" +"A 3MF-et a BambuStudio készítette. Egyes beállítások eltérhetnek az OrcaSlicer-től." msgid "Invalid values found in the 3MF:" msgstr "Érvénytelen értékek találhatók a 3MF-ben:" @@ -7806,7 +7900,7 @@ msgid "Object with multiple parts was detected" msgstr "Több részből álló objektumot észleltünk" msgid "Auto-Drop" -msgstr "" +msgstr "Automatikus leejtés" #, c-format, boost-format msgid "" @@ -7881,10 +7975,10 @@ msgid "The selected object couldn't be split." msgstr "A kijelölt objektumot nem lehet feldarabolni." msgid "Disable Auto-Drop to preserve z positioning?\n" -msgstr "" +msgstr "Letiltja az Auto-Drop funkciót a z pozicionálás megőrzéséhez?\n" msgid "Object with floating parts was detected" -msgstr "" +msgstr "Lebegő részeket tartalmazó tárgyat észleltünk" msgid "Another export job is running." msgstr "Egy másik exportálási feladat is fut." @@ -8300,7 +8394,7 @@ msgid "Triangles: %1%\n" msgstr "Háromszögek: %1%\n" msgid "Use \"Fix Model\" to repair the mesh." -msgstr "" +msgstr "A háló javításához használd a „Modell rögzítése” lehetőséget." #, c-format, boost-format msgid "" @@ -8474,15 +8568,17 @@ msgid "Show the splash screen during startup." msgstr "Indításkor nyitókép megjelenítése." msgid "Show shared profiles notification" -msgstr "" +msgstr "Megosztott profilok értesítésének megjelenítése" msgid "" "Show a notification with a link to browse shared profiles when the selected " "printer is changed." msgstr "" +"Értesítés megjelenítése hivatkozással a megosztott profilok böngészéséhez, " +"ha a kiválasztott nyomtató megváltozik." msgid "Use window buttons on left side" -msgstr "" +msgstr "Használd a bal oldalon lévő ablakgombokat" msgid "(Requires restart)" msgstr "(Újraindítást igényel)" @@ -8700,21 +8796,33 @@ msgstr "" "Ha engedélyezve van, szabad kamerát használ. Ha nincs engedélyezve, akkor " "kötött kamerát használ." -msgid "Swap pan and rotate mouse buttons" -msgstr "Felcserélt pásztázás és forgatás egérgombok" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Ha engedélyezve van, felcseréli a bal és jobb egérgomb pásztázási és " -"forgatási funkcióit." - msgid "Reverse mouse zoom" msgstr "Fordított egér-nagyítás" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Ha engedélyezve van, megfordítja az egérgörgős nagyítás irányát." +msgid "Pan" +msgstr "Pásztázás" + +msgid "Left Mouse Drag" +msgstr "Bal egér húzása" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "Állítsd be a bal egérgomb húzásával végrehajtandó műveletet." + +msgid "Middle Mouse Drag" +msgstr "Középső egér húzása" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "Állítsd be a középső egérgomb húzásával végrehajtandó műveletet." + +msgid "Right Mouse Drag" +msgstr "Jobb egérhúzás" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "Állítsd be a jobb egérgomb húzásával végrehajtandó műveletet." + msgid "Clear my choice on..." msgstr "Választásom törlése ennél..." @@ -8738,6 +8846,73 @@ msgid "" msgstr "" "Választásom törlése a nyomtatóbeállítás szinkronizálásához fájlbetöltés után." +msgid "Graphics" +msgstr "Grafika" + +msgid "Anti-aliasing" +msgstr "Élsimítás" + +msgid "MSAA Multiplier" +msgstr "MSAA szorzó" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" +"Állítsd be a Multi-Sample Anti-Aliasing szintjét.\n" +"A magasabb értékek simább éleket eredményeznek, de a teljesítményre gyakorolt ​​hatás " +"exponenciális.\n" +"Az alacsonyabb értékek javítják a teljesítményt a szaggatott élek árán.\n" +"Ha le van tiltva, ajánlott az FXAA engedélyezése, hogy minimális teljesítményhatás mellett " +"csökkentse a szaggatott éleket.\n" +"\n" +"Az alkalmazás újraindítása szükséges." + +msgid "Disabled" +msgstr "Letiltva" + +msgid "FXAA post-processing" +msgstr "FXAA utófeldolgozás" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" +"Gyors, hozzávetőleges élsimítást alkalmaz képernyőközi átlépésként.\n" +"Hasznos az MSAA beállítás letiltásához vagy csökkentéséhez a teljesítmény javítása érdekében.\n" +"\n" +"Azonnal hatályba lép." + +msgid "FPS" +msgstr "FPS" + +msgid "FPS cap" +msgstr "FPS korlát" + +msgid "(0 = unlimited)" +msgstr "(0 = korlátlan)" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" +"Korlátozza a nézetablak képsebességét a GPU terhelés és az energiafogyasztás csökkentése érdekében.\n" +"Állítsd 0-ra a korlátlan képkockasebességhez." + +msgid "Show FPS overlay" +msgstr "FPS fedvény megjelenítése" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "Megjeleníti az aktuális nézetablak FPS-t a jobb felső sarokban." + msgid "Login region" msgstr "Régió" @@ -8749,6 +8924,10 @@ msgid "" "the transmission of data to Bambu's cloud services too. Users who don't use " "BBL machines or use LAN mode only can safely turn on this function." msgstr "" +"Ezzel letilt minden felhőszolgáltatást, pl. Orca Cloud és Bambu Cloud. Ez " +"leállítja az adatok továbbítását a Bambu felhőszolgáltatásai felé is. Azok a " +"felhasználók, akik nem használnak BBL gépeket vagy csak LAN módot " +"használnak, biztonságosan bekapcsolhatják ezt a funkciót." msgid "Network test" msgstr "Hálózati teszt" @@ -8757,15 +8936,17 @@ msgid "Test" msgstr "Teszt" msgid "Cloud Providers" -msgstr "" +msgstr "Cloud szolgáltatók" msgid "Enable Bambu Cloud" -msgstr "" +msgstr "Bambu Cloud engedélyezése" msgid "" "Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu " "login section appears on the homepage." msgstr "" +"A Bambu Cloudba való bejelentkezés engedélyezése az Orca Cloud mellett. Ha " +"engedélyezve van, egy Bambu bejelentkezési szakasz jelenik meg a kezdőlapon." msgid "Update & sync" msgstr "Frissítés és szinkronizálás" @@ -8775,8 +8956,7 @@ msgstr "Csak stabil frissítések keresése" msgid "Auto sync user presets (Printer/Filament/Process)" msgstr "" -"Felhasználói beállítások automatikus szinkronizálása (Nyomtató/Filament/" -"Folyamat)" +"Felhasználói beállítások automatikus szinkronizálása (Nyomtató/Filament/Folyamat)" msgid "Update built-in Presets automatically." msgstr "Beépített beállítások automatikus frissítése." @@ -8904,6 +9084,16 @@ msgstr "Fejlesztői mód" msgid "Skip AMS blacklist check" msgstr "AMS tiltólista ellenőrzés kihagyása" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "(Kísérleti) A festett jellemző megtartása hálócsere után" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" +"Megpróbálja tartani a festett jellemzőket (szín/varrat/támasz/fuzzy stb.) az objektumháló megváltoztatása után (például kivágás/újratöltés lemezről/egyszerűsítés/javítás stb.)\n" +"Kísérletei szint! Lassú és hibákat hozhat létre." + msgid "Allow Abnormal Storage" msgstr "Rendellenes tároló engedélyezése" @@ -9055,13 +9245,13 @@ msgid "Project-inside presets" msgstr "Projekten belüli beállítások" msgid "Bundle presets" -msgstr "" +msgstr "Beállítások kötegelése" msgid "System" msgstr "Rendszer" msgid "Unsupported presets" -msgstr "Nem támogatott előbeállítások" +msgstr "Nem támogatott beállítások" msgid "Unsupported" msgstr "Nem támogatott" @@ -9272,8 +9462,7 @@ msgstr "" "szeleteld ->" msgid "Manually change external spool during printing for multi-color printing" -msgstr "" -"Többszínű nyomtatáshoz manuálisan cseréld a külső tekercset nyomtatás közben" +msgstr "Többszínű nyomtatáshoz manuálisan cseréld a külső tekercset nyomtatás közben" msgid "Multi-color with external" msgstr "Többszínű nyomtatás külső tekercssel" @@ -9651,6 +9840,9 @@ msgid "" "type in the slicing file. Please make sure you have installed the correct " "filament in the external spool." msgstr "" +"A külső filament típusa ismeretlen, vagy nem egyezik a szeletelőfájlban " +"szereplő filament típusával. Győződj meg arról, hogy a megfelelő " +"filamentet helyezted be a külső orsóba." msgid "Please refer to Wiki before use->" msgstr "Használat előtt nézd meg a Wikit ->" @@ -10035,8 +10227,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ha a nyomtatófej nélküli időfelvétel engedélyezve van, javasoljuk, hogy " "helyezz el a tálcán egy \"Időfelvétel törlőtornyot\". Ehhez kattints jobb " @@ -10453,7 +10645,7 @@ msgid "Normal" msgstr "Normál" msgid "Resonance Compensation" -msgstr "" +msgstr "Rezonancia kompenzáció" msgid "Resonance Avoidance Speed" msgstr "Rezonanciaelkerülési sebesség" @@ -10465,12 +10657,14 @@ msgid "" "The frequency of the anti-vibration signal will correspond to the natural " "frequency of the frame." msgstr "" +"A rezgéscsillapító jel frekvenciája megfelel a keret természetes " +"frekvenciájának." msgid "Damping" -msgstr "" +msgstr "Csillapítás" msgid "Damping ratio for the input shaping filter." -msgstr "" +msgstr "A rezgéskompenzáció szűrő csillapítási aránya." msgid "Speed limitation" msgstr "Sebesség limitek" @@ -10594,29 +10788,40 @@ msgid "" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" +" - %s:\n" +" %s első réteg %d %s, egyéb rétegek %d %s\n" +" %s max. delta %d %s, aktuális delta %d %s\n" msgid "" "Some first-layer and other-layer temperature pairs exceed safety limits.\n" msgstr "" +"Egyes első és további réteg hőmérsékletpárok túllépik a biztonsági határértékeket.\n" msgid "" "\n" "Invalid pairs:\n" msgstr "" +"\n" +"Érvénytelen párok:\n" msgid "" "\n" "You can go back to edit values, or continue if this is intentional." msgstr "" +"\n" +"Visszatérhetsz az értékek szerkesztéséhez, vagy folytathatod, ha ez szándékos." msgid "" "\n" "\n" "Continue anyway?" msgstr "" +"\n" +"\n" +"Mindképp folytatod?" msgid "Temperature Safety Check" -msgstr "" +msgstr "Hőmérséklet biztonsági ellenőrzés" msgid "Continue" msgstr "Folytatás" @@ -10625,7 +10830,7 @@ msgid "Back" msgstr "Hátul" msgid "Don't warn again for this preset" -msgstr "" +msgstr "Ne legyen több figyelmeztetés ennél az előbeállításnál" #, c-format, boost-format msgid "Left: %s" @@ -10636,8 +10841,7 @@ msgid "Right: %s" msgstr "Jobb: %s" msgid "Click to reset current value and attach to the global value." -msgstr "" -"Kattints ide az érték visszaállításához és a globális érték használatához." +msgstr "Kattints ide az érték visszaállításához és a globális érték használatához." msgid "Click to drop current modify and reset to saved value." msgstr "" @@ -10671,6 +10875,43 @@ msgstr "Ne mentsd" msgid "Discard" msgstr "Elvetés" +msgid "the new profile" +msgstr "az új profilt" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" +"Váltás erre:\n" +"\"%1%\"\n" +"a benne végrehajtott változtatások elvetése\n" +"\"%2%\"." + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" +"Minden „Új érték” beállítás módosítva\n" +"\"%1%\"\n" +"címre kerülnek át\n" +"\"%2%\"." + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" +"Minden „Új érték” beállítás mentésre kerül\n" +"\"%1%\"\n" +"és a \"%2%\" változtatás nélkül nyílik meg." + msgid "Click the right mouse button to display the full text." msgstr "Kattints a jobb egérgombbal a teljes szöveg megjelenítéséhez." @@ -10707,8 +10948,7 @@ msgstr "" #, boost-format msgid "Preset \"%1%\" contains the following unsaved changes:" -msgstr "" -"A(z) \"%1%\" beállítás a következő elmentetlen változásokat tartalmazza:" +msgstr "A(z) \"%1%\" beállítás a következő elmentetlen változásokat tartalmazza:" #, boost-format msgid "" @@ -11202,11 +11442,15 @@ msgid "" "Native Wayland liveview requires the GStreamer GTK video sink. Please " "install the gtksink plugin for GStreamer, then restart OrcaSlicer." msgstr "" +"A natív Wayland élőképhez a GStreamer GTK videonyelő szükséges. Telepítsd a " +"gtksink beépülő modult a GStreamerhez, majd indítsd újra az OrcaSlicert." msgid "" "Failed to initialize the native Wayland GStreamer video sink. Please check " "your GStreamer GTK plugin installation." msgstr "" +"Nem sikerült inicializálni a natív Wayland GStreamer videonyelőt." +"Ellenőrizd a GStreamer GTK bővítmény telepítését." msgid "" "Windows Media Player is required for this task! Do you want to enable " @@ -11247,7 +11491,7 @@ msgstr "" "gstreamer1.0-libav csomagokat, majd indítsd újra az Orca Slicert.)" msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." -msgstr "" +msgstr "A cloud ügynök nem érhető el. Indítsd újra az OrcaSlicert és próbáljd újra." msgid "Bambu Network plug-in not detected." msgstr "A Bambu Network plug-in nem található." @@ -11258,6 +11502,9 @@ msgstr "Kattints ide a letöltéshez." msgid "Login" msgstr "Bejelentkezés" +msgid "Login failed. Please try again." +msgstr "Sikertelen bejelentkezés. Próbáld újra." + msgid "[Action Required] " msgstr "[Művelet szükséges] " @@ -11294,6 +11541,18 @@ msgstr "Gyorsgombok listájának megjelenítése" msgid "Global shortcuts" msgstr "Globális gyorsbillentyűk" +msgid "Pan View" +msgstr "Pásztázó nézet" + +msgid "Rotate View" +msgstr "Forgató nézet" + +msgid "Middle mouse button" +msgstr "Középső egérgomb" + +msgid "Zoom View" +msgstr "Nagyító nézet" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11424,7 +11683,7 @@ msgid "Zoom out" msgstr "Zoom távolítás" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Nyomtathatóság váltása objektumhoz/alkatrészhez" msgid "Switch between Prepare/Preview" msgstr "Váltás előkészítés/előnézet között" @@ -11517,7 +11776,7 @@ msgid "New version of Orca Slicer" msgstr "A Orca Slicer új verziója" msgid "Check on Github" -msgstr "" +msgstr "Ellenőrizd a GitHub-on" msgid "Skip this Version" msgstr "Verzió kihagyása" @@ -11683,13 +11942,13 @@ msgstr "Bővítőpanel" #, boost-format msgid "Split into %1% parts" -msgstr "" +msgstr "Felosztva %1% részre" msgid "Repair finished" msgstr "Javítás befejezve" msgid "Repair failed" -msgstr "" +msgstr "A javítás sikertelen" msgid "Repair canceled" msgstr "Javítás megszakítva" @@ -11736,10 +11995,10 @@ msgstr "" "objektum hibás hálóval rendelkezik." msgid "Process change extrusion role G-code" -msgstr "" +msgstr "Folyamat módosítása extrudálási szerepkör G-kódja" msgid "Filament change extrusion role G-code" -msgstr "" +msgstr "Filament változás extrudálási szerepkör G-kódja" msgid "No object can be printed. Maybe too small" msgstr "Objektum nem nyomtatható ki. Lehet, hogy túl kicsi." @@ -11771,15 +12030,17 @@ msgid "Flush volumes matrix do not match to the correct size!" msgstr "Az öblítési mennyiségek mátrixa nem a megfelelő méretű!" msgid "set_accel_and_jerk() is only supported by Klipper" -msgstr "" +msgstr "set_accel_and_jerk() csak Klipperen támogatott" msgid "" "Input shaping is not supported by Marlin < 2.1.2.\n" "Check your firmware version and update your G-code flavor to ´Marlin 2´" msgstr "" +"A rezgéskompenzációt a Marlin < 2.1.2 nem támogatja.\n" +"Ellenőrizd a firmware verzióját és állítsd a G-kód változatot „Marlin 2”-re" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2" -msgstr "" +msgstr "A rezgéskompenzációt csak a Klipper, a RepRapFirmware és a Marlin 2 támogatja" msgid "Grouping error: " msgstr "Csoportosítási hiba: " @@ -11790,9 +12051,6 @@ msgstr " nem helyezhető ide: " msgid "Internal Bridge" msgstr "Belső híd" -msgid "Multiple" -msgstr "Többszörös" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -11916,9 +12174,7 @@ msgid "%1% is too tall, and collisions will be caused." msgstr "%1% túl magas, a nyomtatás során előfordulhatnak ütközések." msgid " is too close to exclusion area, there may be collisions when printing." -msgstr "" -"túl közel van a tiltott területhez, a nyomtatás során előfordulhatnak " -"ütközések." +msgstr " túl közel van a tiltott területhez, a nyomtatás során előfordulhatnak ütközések." msgid "" " is too close to clumping detection area, there may be collisions when " @@ -11931,13 +12187,10 @@ msgid "Prime Tower" msgstr "Törlőtorony" msgid " is too close to others, and collisions may be caused.\n" -msgstr "" -" túl közel van más tárgyakhoz, a nyomtatás során előfordulhatnak ütközések.\n" +msgstr " túl közel van más tárgyakhoz, a nyomtatás során előfordulhatnak ütközések.\n" msgid " is too close to exclusion area, and collisions will be caused.\n" -msgstr "" -" túl közel van a tiltott területhez, a nyomtatás során előfordulhatnak " -"ütközések.\n" +msgstr " túl közel van a tiltott területhez, a nyomtatás során előfordulhatnak ütközések.\n" msgid "" " is too close to clumping detection area, and collisions will be caused.\n" @@ -11949,19 +12202,27 @@ msgid "" "temperature must fall within the recommended nozzle temperature range of the " "other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" +"A kiválasztott fúvóka hőmérsékletek nem kompatibilisek. Mindegyik filament " +"fúvóka hőmérsékletének a többi filament ajánlott fúvóka hőmérsékleti " +"tartományába kell esnie. Ellenkező esetben a fúvóka eltömődhet vagy a " +"nyomtató megsérülhet." msgid "" "Invalid recommended nozzle temperature range. The lower bound must be lower " "than the upper bound." msgstr "" +"Érvénytelen ajánlott fúvóka hőmérséklet-tartomány. Az alsó határnak " +"alacsonyabbnak kell lennie, mint a felső határnak." msgid "" "If you still want to print, you can enable the option in Preferences / " "Control / Slicing / Remove mixed temperature restriction." msgstr "" +"Ha továbbra is szeretnél nyomtatni, engedélyezheted az opciót itt: " +"Beállítások / Vezérlés / Szeletelés / Vegyes hőmérséklet korlátozás feloldása." msgid "No extrusions under current settings." -msgstr "A jelenlegi beállítások mellett nincsenek extrudálások." +msgstr "A jelenlegi beállításokkal nincsenek extrudálások." msgid "" "Smooth mode of timelapse is not supported when \"by object\" sequence is " @@ -12360,7 +12621,7 @@ msgstr "" "egyre kisebb mértékben zsugorodnak lineárisan az itt megadott rétegig." msgid "Elephant foot layers density" -msgstr "" +msgstr "Az elefántláb rétegek sűrűsége" msgid "" "Density of internal solid infill for Elephant foot layers compensation.\n" @@ -12368,6 +12629,10 @@ msgid "" "Subsequent layers become linearly denser by the height specified in " "elefant_foot_compensation_layers." msgstr "" +"A belső szilárd töltés sűrűsége az elefánt lábrétegeinek kompenzálásához.\n" +"A második réteg kezdeti értéke van állítva.\n" +"A következő rétegek lineárisan sűrűbbé válnak az elefant_foot_compensation_layers " +"paraméterben megadott magassággal." msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " @@ -12380,9 +12645,7 @@ msgid "Printable height" msgstr "Nyomtatási magasság" msgid "Maximum printable height which is limited by mechanism of printer." -msgstr "" -"Ez a maximális nyomtatható magasság, amelyet a nyomtatótér magassága " -"korlátoz." +msgstr "Maximális nyomtatható magasság a nyomtató mechanikája által korlátozva." msgid "Extruder printable height" msgstr "Extruder nyomtatható magassága" @@ -12398,8 +12661,7 @@ msgid "Preferred orientation" msgstr "Előnyben részesített orientáció" msgid "Automatically orient STL files on the Z axis upon initial import." -msgstr "" -"Az STL fájlok automatikus Z tengely szerinti tájolása első importáláskor." +msgstr "Az STL fájlok automatikus Z tengely szerinti tájolása első importáláskor." msgid "Printer preset names" msgstr "Nyomtató beállítások neve" @@ -13365,7 +13627,7 @@ msgstr "" "eltávolítását" msgid "Brim flow ratio" -msgstr "" +msgstr "Perem áramlási arány" msgid "" "This factor affects the amount of material for brims.\n" @@ -13375,6 +13637,12 @@ msgid "" "\n" "Note: The resulting value will not be affected by the first-layer flow ratio." msgstr "" +"Ez a tényező befolyásolja a karimák anyagának mennyiségét.\n" +"\n" +"A ténylegesen használt peremáramlást úgy számítjuk ki, hogy ezt az értéket megszorozzuk a " +"filament áramlási arányával, és ha be van állítva, akkor az objektum áramlási arányával.\n" +"\n" +"Megjegyzés: A kapott értéket nem befolyásolja az első réteg áramlási aránya." msgid "Brim follows compensated outline" msgstr "A Perem a kompenzált körvonalat követi" @@ -13398,12 +13666,14 @@ msgstr "" "rétegekkel." msgid "Combine brims" -msgstr "" +msgstr "Peremek egyesítése" msgid "" "Combine multiple brims into one when they are close to each other. This can " "improve brim adhesion." msgstr "" +"Karimák egybevonása, ha azok közel vannak egymáshoz. Ez " +"javíthatja a perem tapadását." msgid "Brim ears" msgstr "Karimás fülek" @@ -13531,14 +13801,18 @@ msgstr "Aktiváld a jobb légszűrés érdekében. G-kód parancs: M106 P3 S(0-2 msgid "" "Enable this to override the fan speed set in custom G-code during print." msgstr "" +"Engedélyezzd ezt az egyéni G-kódban beállított ventilátorsebesség " +"felülbírálásához nyomtatás közben." msgid "On completion" -msgstr "" +msgstr "Befejezéskor" msgid "" "Enable this to override the fan speed set in custom G-code after print " "completion." msgstr "" +"Engedélyezzd ezt az egyéni G-kódban beállított ventilátorsebesség " +"felülbírálásához a nyomtatás befejezése után." msgid "" "Speed of exhaust fan during printing. This speed will override the speed in " @@ -13660,9 +13934,6 @@ msgstr "" "4. Alkalmazás mindenre - második hídréteget hoz létre mind a belső, mind a " "kifelé néző hidakhoz\n" -msgid "Disabled" -msgstr "Letiltva" - msgid "External bridge only" msgstr "Csak külső híd" @@ -13957,6 +14228,12 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"Az az irány, amerre a kontúrfalhurkok extrudálódnak felülről lefelé nézve.\n" +"A lyukak a kontúrral ellentétes irányban vannak nyomtatva, hogy fenntartsák " +"az igazodást azokkal a rétegekkel, amelyek kontúrpoligonjai nem teljesek " +"és megváltoztatják az irányt, ugyanakkor a lyuk részleges kontúrját képezve.\n" +"\n" +"Ez az opció le lesz tiltva, ha a spirálváza mód engedélyezve van." msgid "Counter clockwise" msgstr "Óramutató járásával ellentétes" @@ -14352,6 +14629,18 @@ msgstr "Automatikus öblítéshez" msgid "Auto For Match" msgstr "Automatikus egyeztetéshez" +msgid "Enable filament dynamic map" +msgstr "Filament dinamikus leképezés engedélyezése" + +msgid "Enable dynamic filament mapping during print." +msgstr "Dinamikus filament-leképezés engedélyezése nyomtatás közben." + +msgid "Has filament switcher" +msgstr "Filament-váltóval rendelkezik" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "A nyomtató rendelkezik filament-váltó hardverrel (pl. AMS)." + msgid "Flush temperature" msgstr "Öblítési hőmérséklet" @@ -14616,10 +14905,10 @@ msgstr "" "extrudálások megbízhatóan történjenek." msgid "Wipe tower cooling" -msgstr "" +msgstr "Törlőtorony hűtése" msgid "Temperature drop before entering filament tower" -msgstr "" +msgstr "Hőmérsékletcsökkenés az filamenttoronyba lépés előtt" msgid "Interface layer pre-extrusion distance" msgstr "Érintkezőréteg előextrudálási távolsága" @@ -14861,6 +15150,23 @@ msgstr "" "Több vonal használata a kitöltési mintához, ha azt a kitöltési minta " "támogatja." +msgid "Z-buckling bias optimization (experimental)" +msgstr "Z-kihajlási torzítás optimalizálása (kísérleti)" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" +"Alacsony feltöltési sűrűség mellett megfeszíti a gyroid hullámot a Z " +"(függőleges) tengely mentén, hogy lerövidítse a tényleges függőleges " +"oszlophosszt és javítsa a Z-tengely összenyomódási kihajlási ellenállását. A " +"filamenthasználat megmarad. Nincs hatása ~30%-os és afeletti ritka kitöltési " +"sűrűségnél. Csak akkor érvényes, ha a Ritka kitöltési minta Gyroid-ra " +"van állítva." + msgid "Sparse infill pattern" msgstr "Kitöltési mintázat" @@ -15042,8 +15348,8 @@ msgid "mm/s² or %" msgstr "mm/s² vagy %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Gyorsulás a ritkás kitöltéseknél. Ha az érték százalékban van megadva (pl. " "100%), akkor az alapértelmezett gyorsulás alapján kerül kiszámításra." @@ -15064,19 +15370,20 @@ msgstr "" "tárgyasztalhoz való tapadást" msgid "First layer travel" -msgstr "" +msgstr "Első réteg mozgás" msgid "" "Travel acceleration of first layer.\n" "The percentage value is relative to Travel Acceleration." msgstr "" +"Az első réteg mozgási gyorsulása.\n" +"A százalékos érték az mozgási gyorsuláshoz van viszonyítva." msgid "Enable accel_to_decel" msgstr "accel_to_decel engedélyezése" msgid "Klipper's max_accel_to_decel will be adjusted automatically." -msgstr "" -"A Klipper max_accel_to_decel értékét a rendszer automatikusan beállítja" +msgstr "A Klipper max_accel_to_decel értékét a rendszer automatikusan beállítja" msgid "accel_to_decel" msgstr "accel_to_decel" @@ -15123,6 +15430,8 @@ msgid "" "Travel jerk of first layer.\n" "The percentage value is relative to Travel Jerk." msgstr "" +"Az első réteg Jerk-je.\n" +"A százalékos érték a mozgás Jerk-hez van viszonyítva." msgid "" "Line width of the first layer. If expressed as a %, it will be computed over " @@ -15179,10 +15488,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "A ventilátor fordulatszáma lineárisan nő nulláról a " "\"close_fan_the_first_x_layers\" rétegtől a maximális értékig a " @@ -15405,6 +15714,16 @@ msgid "" "Ripple: Uniform ripple pattern that ripples left and right of the original " "path. Repeating pattern, woven appearance." msgstr "" +"A bolyhos felület generálására használható zajtípus:\n" +"Klasszikus: Klasszikus egységes véletlenszerű zaj.\n" +"Perlin: Perlin zaj, amely egyenletesebb textúrát ad.\n" +"Billow: Hasonló a perlin zajhoz, de csomósabb.\n" +"Ridged Multifractal: Bordázott zaj éles, szaggatott jellemzőkkel. " +"Márványszerű textúrákat hoz létre.\n" +"Voronoi: A felületet voronoi cellákra osztja, és mindegyiket véletlenszerűen " +"kiszorítja. Patchwork textúrát hoz létre.\n" +"Hullámozás: Egységes hullámzási minta, amely az eredeti útvonaltól balra és jobbra " +"hullámzik. Ismétlődő minta, szövött megjelenés." msgid "Classic" msgstr "Klasszikus" @@ -15422,7 +15741,7 @@ msgid "Voronoi" msgstr "Voronoi" msgid "Ripple" -msgstr "" +msgstr "Fodrozódás" msgid "Fuzzy skin feature size" msgstr "A bolyhos felület mintázatmérete" @@ -15455,13 +15774,15 @@ msgstr "" "értékek simább zajt eredményeznek." msgid "Number of ripples per layer" -msgstr "" +msgstr "A fodrozódások száma rétegenként" msgid "Controls how many full cycles of ripples will be added per layer." msgstr "" +"Azt szabályozza, hogy hány teljes ciklus hullámzás kerüljön hozzáadásra " +"rétegenként." msgid "Ripple offset" -msgstr "" +msgstr "Fodrozódás eltolás" msgid "" "Shifts the ripple phase forward along the print path by the specified " @@ -15475,9 +15796,19 @@ msgid "" "The shift is applied once every number of layers set by Layers between " "ripple offset, so layers within the same group are printed identically." msgstr "" +"Előre tolja a hullámos fázist a nyomtatási útvonal mentén a hullámhossz meghatározott " +"százalékával minden rétegperiódusban.\n" +"- A 0% minden réteget azonosan tart.\n" +"- 50% fél hullámhosszal eltolja a mintát, hatékonyan megfordítva a " +"fázist.\n" +"- 100% eltolja a mintát egy teljes hullámhosszal, visszatérve az eredeti " +"fázishoz.\n" +"\n" +"Az eltolás a hullámosság eltolása közötti rétegek által beállított rétegközzel " +"érvényesül, így az azonos csoporton belüli rétegek nyomtatása azonos." msgid "Layers between ripple offset" -msgstr "" +msgstr "A hullámosság eltolása közötti rétegek" msgid "" "Specifies how many consecutive layers share the same ripple phase before the " @@ -15490,6 +15821,15 @@ msgid "" "to 6 are shifted by the configured offset, then layers 7 to 9 return to the " "base pattern, etc." msgstr "" +"Meghatározza, hogy hány egymást követő réteg osztozik ugyanazon a hullámzási fázison az " +"eltolás alkalmazása előtt.\n" +"Például:\n" +"- 1 = Az 1. réteg az alap hullámmintával kerül nyomtatásra, majd a 2. réteg " +"eltolódik a konfigurált eltolás szerint, majd a 3. réteg visszatér az alapmintázathoz, " +"és így tovább.\n" +"- 3 = Az 1-től 3-ig rétegek nyomtatása az alap hullámmintával, majd a 4-től " +"6-ig a konfigurált eltolás szerint eltolódik, majd a 7-től 9-ig visszaáll az " +"alapmintázat stb." msgid "Filter out tiny gaps" msgstr "Apró rések szűrése" @@ -15697,6 +16037,46 @@ msgstr "" "felpörgetéshez.\n" "A kikapcsoláshoz állítsd 0-ra." +msgid "Minimum non-zero part cooling fan speed" +msgstr "Minimális nem nulla rész-hűtőventilátor fordulatszáma" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" +"Egyes részleges hűtőventilátorok nem tudnak pörögni, ha egy bizonyos " +"PWM munkaciklus alá utasítják őket. Ha 0 fölé állítod, minden nem nulla " +"részleges hűtési ventilátorparancs legalább erre a százalékra emelkedik, " +"így a ventilátor megbízhatóan elindul. A 0-s ventilátorparancs (ventilátor " +"kikapcsolva) mindig pontosan végrhajtódik. Ez a korlátozás minden " +"második ventilátorszámítás után alkalmazódik (első réteg rámpa, rétegidő " +"interpoláció, túlnyúlás/híd/tartófelület/vasalás felülbírálása), így a skálázás " +"továbbra is a [ez az érték, 100%] tartományon belül működik.\n" +"Ha a firmware már letiltja a ventilátort egy küszöbérték alatt (például a Klipper " +"[fan] off_below: 0.10 értéke kikapcsolja a ventilátort, ha a parancsolt munkaciklus " +"10% alatt van), akkor ezt az opciót és a firmware küszöbértékét ideális esetben " +"ugyanarra az értékre kell állítani. Ezek megfeleltetése (pl. off_below: 0,10 a " +"Klipperben és 10% itt) garantálja, hogy a szeletelő soha nem ad ki olyan nullától " +"eltérő értéket, amelyet a firmware csendben ejtene, és a ventilátor soha nem kap " +"olyan értéket, amely alacsonyabb, mint amiről tudod, hogy ténylegesen képes forogni.\n" +"A deaktiváláshoz állítsd 0-ra." + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Időköltség" @@ -15888,9 +16268,7 @@ msgid "Infill lock depth" msgstr "Kitöltés rögzítési mélysége" msgid "The parameter sets the overlapping depth between the interior and skin." -msgstr "" -"Ez a paraméter a belső rész és a felületi réteg közötti átfedés mélységét " -"állítja be." +msgstr "Ez a paraméter a belső rész és a felületi réteg közötti átfedés mélységét állítja be." msgid "Skin line width" msgstr "Felületi vonalszélesség" @@ -16160,53 +16538,56 @@ msgid "Use a fixed absolute angle for ironing." msgstr "Rögzített abszolút szög használata a vasaláshoz." msgid "Ironing expansion" -msgstr "" +msgstr "Vasaló bővítés" msgid "Expand or contract the ironing area." -msgstr "" +msgstr "A vasalási terület bővítése/szűkítése ." msgid "Z contouring enabled" -msgstr "" +msgstr "Z kontúrozás engedélyezve" msgid "Enable Z-layer contouring (aka Z-layer anti-aliasing)." -msgstr "" +msgstr "Z-réteg kontúrozás engedélyezése (más néven Z-réteg élsimítás)." msgid "Minimize wall height angle" -msgstr "" +msgstr "Falmagasság szög minimalizálása" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" "Affects perimeters with a slope less than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" +"Csökkentsd a felső felület kerületének magasságát, hogy megfeleljen a modell élmagasságának.\n" +"Befolyásolja az ennél a szögnél (foknál) kisebb lejtésű kerületeket.\n" +"Az ésszerű érték 35. A letiltáshoz állítsd 0-ra." msgid "°" -msgstr "" +msgstr "°" msgid "Don't alternate fill direction" -msgstr "" +msgstr "Ne váltakozzon a töltési irány" msgid "Disable alternating fill direction when using Z contouring." -msgstr "" +msgstr "A váltakozó kitöltési irány letiltása Z kontúrozás használatakor." msgid "Minimum z height" -msgstr "" +msgstr "Minimális z magasság" msgid "" "Minimum Z-layer height.\n" "Also controls the slicing plane." msgstr "" +"Minimális Z-réteg magasság.\n" +"Vezérli a szeletelő síkot is." msgid "This G-code is inserted at every layer change after the Z lift." -msgstr "" -"Ez a G-kód minden rétegváltásnál beillesztésre kerül a Z tengely megemelése " -"után." +msgstr "Ez a G-kód minden rétegváltásnál beillesztésre kerül a Z tengely megemelése után." msgid "Clumping detection G-code" msgstr "Csomósodásészlelés G-kód" msgid "Supports silent mode" -msgstr "Csendes mód" +msgstr "Csendes mód támogatva" msgid "" "Whether the machine supports silent mode in which machine use lower " @@ -16399,12 +16780,14 @@ msgid "Maximum speed of resonance avoidance." msgstr "A rezonanciaelkerülés maximális sebessége." msgid "Emit input shaping" -msgstr "" +msgstr "Rezgéskompenzáció kibocsájtás" msgid "" "Override firmware input shaping settings.\n" "If disabled, firmware settings are used." msgstr "" +"Firmware rezgéskompenzáció beállítások felülírása.\n" +"Ha le van tiltva, a firmware-beállítások használatosak." msgid "Input shaper type" msgstr "Rezgéskompenzátor típusa" @@ -16414,42 +16797,45 @@ msgid "" "Default uses the firmware default settings.\n" "Disable turns off input shaping in the firmware." msgstr "" +"Válaszd ki a rezgéskompenzáció algoritmust.\n" +"A Default a firmware alapértelmezett beállításait használja.\n" +"A letiltása kikapcsolja a rezgéskompenzációt a firmware-ben." msgid "MZV" -msgstr "" +msgstr "MZV" msgid "ZV" -msgstr "" +msgstr "ZV" msgid "ZVD" -msgstr "" +msgstr "ZVD" msgid "ZVDD" -msgstr "" +msgstr "ZVDD" msgid "ZVDDD" -msgstr "" +msgstr "ZVDDD" msgid "EI" -msgstr "" +msgstr "EI" msgid "EI2" -msgstr "" +msgstr "EI2" msgid "2HUMP_EI" -msgstr "" +msgstr "2HUMP_EI" msgid "EI3" -msgstr "" +msgstr "EI3" msgid "3HUMP_EI" -msgstr "" +msgstr "3HUMP_EI" msgid "DAA" -msgstr "" +msgstr "DAA" msgid "X" -msgstr "" +msgstr "X" msgid "" "Resonant frequency for the X axis input shaper.\n" @@ -16457,15 +16843,22 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Rezonanciafrekvencia az X tengely rezgéskompenzációjához.\n" +"A nulla érték firmware frekvenciáját fogja használni.\n" +"A rezgéskompenzáció letiltásához használd a Letiltás típust.\n" +"RRF: X és Y értékek egyenlőek." msgid "Y" -msgstr "" +msgstr "Y" msgid "" "Resonant frequency for the Y axis input shaper.\n" "Zero will use the firmware frequency.\n" "To disable input shaping, use the Disable type." msgstr "" +"Rezonanciafrekvencia az Y tengely rezgéskompenzációjához.\n" +"A nulla érték a firmware frekvenciáját fogja használni.\n" +"A rezgéskompenzáció letiltásához használd a Letiltás típust." msgid "" "Damping ratio for the X axis input shaper.\n" @@ -16473,12 +16866,19 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Csillapítási arány az X tengely rezgéskompenzációjához.\n" +"A nulla érték a firmware csillapítási arányát fogja használni.\n" +"A rezgéskompenzáció letiltásához használd a Letiltás típust.\n" +"RRF: X és Y értékek egyenlőek." msgid "" "Damping ratio for the Y axis input shaper.\n" "Zero will use the firmware damping ratio.\n" "To disable input shaping, use the Disable type." msgstr "" +"Csillapítási arány az Y tengely rezgéskompenzációjához.\n" +"A nulla érték a firmware csillapítási arányát fogja használni.\n" +"A rezgéskompenzáció letiltásához használd a Letiltás típust." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -16609,10 +17009,10 @@ msgstr "" "nyomtatóbeállításokban. G-kód parancs: M106 P2 S(0-255)" msgid "For the first" -msgstr "" +msgstr "Az első" msgid "Set special auxiliary cooling fan for the first certain layers." -msgstr "" +msgstr "A speciális kiegészítő hűtőventilátor beállítása az első bizonyos rétegekhez." msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" " @@ -16621,10 +17021,16 @@ msgid "" "in which case the fan will run at maximum allowed speed at layer \"For the " "first\" + 1." msgstr "" +"A segédventilátor sebessége lineárisan megemelkedik az \"Az első\" rétegtől " +"a maximálisig a \"Teljes ventilátorsebesség\" rétegnél.\n" +"A rendszer figyelmen kívül hagyja a „teljes ventilátor fordulatszámot” ha alacsonyabb, " +"mint „Az első”, ebben az esetben a ventilátor a maximális megengedett sebességgel " +"fog működni „Az első” + 1 rétegben." msgid "" "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "" +"Speciális kiegészítő hűtőventilátor sebessége, csak az első x rétegeknél hatásos." msgid "" "The lowest printable layer height for the extruder. Used to limit the " @@ -16855,12 +17261,14 @@ msgstr "" "konfigurációs beállításaihoz." msgid "Change extrusion role G-code (process)" -msgstr "" +msgstr "Extrudálási szerepkör G-kód módosítása (folyamat)" msgid "" "This G-code is inserted when the extrusion role is changed. It runs after " "the machine and filament extrusion role G-code." msgstr "" +"Ez a G-kód akkor kerül beillesztésre, amikor az extrudálási szerep " +"megváltozik. A gép és a filament extrudálási szerepkör G-kódja után fut." msgid "Printer type" msgstr "Nyomtató típusa" @@ -16983,7 +17391,8 @@ msgid "" "Experimental feature: Retraction length before cutting off during filament " "change." msgstr "" -"Kísérleti funkció: a visszahúzás hossza a filamentváltás közbeni vágás előtt." +"Kísérleti funkció: a visszahúzás hossza a filamentváltás közbeni vágás " +"előtt." msgid "Long retraction when extruder change" msgstr "Hosszú visszahúzás extruderváltáskor" @@ -17318,8 +17727,8 @@ msgid "Role base wipe speed" msgstr "Szerepalapú törlési sebesség" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17725,6 +18134,26 @@ msgstr "A megmaradt filament kiürítése a törlőtoronyba." msgid "Enable filament ramming" msgstr "Filament tömörítés engedélyezése" +msgid "Tool change on wipe tower" +msgstr "Szerszámcsere a törlőtoronyban" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" +"A szerszámcsere parancs (Tx) kiadása előtt kényszerítse a szerszámfejet a " +"törlőtoronyhoz. Csak a 2-es típusú törlőtornyot használó többextruderes " +"(több szerszámfejes) nyomtatóknál releváns. Alapértelmezés szerint az Orca " +"kihagyja az utazást a több szerszámfejes gépeken, mert a firmware kezeli a " +"fejcserét, ami azt eredményezheti, hogy a Tx parancs a nyomtatott rész " +"felett kerül kiadásra. Engedélyezd ezt az opciót, ha azt szeretnéd, hogy a " +"szerszámcsere mindig a törlőtorony felett történjen." + msgid "No sparse layers (beta)" msgstr "Nincsenek ritka rétegek (béta)" @@ -17840,8 +18269,7 @@ msgid "Pattern angle" msgstr "Mintázat szöge" msgid "Use this setting to rotate the support pattern on the horizontal plane." -msgstr "" -"Ezzel a beállítással elforgathatod a támasz mintázatát a vízszintes síkon." +msgstr "Ezzel a beállítással elforgathatod a támasz mintázatát a vízszintes síkon." msgid "On build plate only" msgstr "Csak a tárgyasztaltól" @@ -17928,8 +18356,9 @@ msgid "" "Filament to print support interface. \"Default\" means no specific filament " "for support interface and current filament is used." msgstr "" -"Filament a támasz érintkező felületének nyomtatásához. Az \"Alapértelmezett" -"\" beállítás választásakor a jelenleg használt filament kerül felhasználásra." +"Filament a támasz érintkező felületének nyomtatásához. Az " +"\"Alapértelmezett\" beállítás választásakor a jelenleg használt filament " +"kerül felhasználásra." msgid "Top interface layers" msgstr "Felső érintkező rétegek" @@ -18080,15 +18509,18 @@ msgid "Threshold angle" msgstr "Dőlésszög küszöbértéke" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Az olyan túlnyúlásoknál, amelynek dőlésszöge ez alatt az érték alatt van, támasz fog generálódni." -"Minél kisebb ez az érték, annál meredekebb a túlnyúlás, amely alátámasztás nélkül nyomtatható.\n" -"Megjegyzés: Ha 0-ra van állítva, a normál támaszok a Küszöbátfedést használják, " -"míg a fa típusú támaszok az alapértelmezett 30-as értékre térnek vissza." +"Az olyan túlnyúlásoknál, amelynek dőlésszöge ez alatt az érték alatt van, " +"támasz fog generálódni.Minél kisebb ez az érték, annál meredekebb a " +"túlnyúlás, amely alátámasztás nélkül nyomtatható.\n" +"Megjegyzés: Ha 0-ra van állítva, a normál támaszok a Küszöbátfedést " +"használják, míg a fa típusú támaszok az alapértelmezett 30-as értékre térnek " +"vissza." msgid "Threshold overlap" msgstr "Átfedési küszöbérték" @@ -18254,8 +18686,8 @@ msgstr "Hőmérséklet-szabályozás aktiválása" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18344,12 +18776,14 @@ msgstr "" "megváltozik." msgid "Change extrusion role G-code (filament)" -msgstr "" +msgstr "Az extrudálási szerep G-kódjának módosítása (szál)" msgid "" "This G-code is inserted when the extrusion role is changed for the active " "filament." msgstr "" +"Ez a G-kód akkor kerül beillesztésre, amikor az aktív filament extrudálási " +"szerepe megváltozik." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -18953,15 +19387,18 @@ msgstr "" "engedélyezve vannak." msgid "Maximum wall resolution" -msgstr "" +msgstr "Maximális falfelbontás" msgid "" "This value determines the smallest wall line segment length in mm. The " "smaller you set this value, the more accurate and precise the walls will be." msgstr "" +"Ez az érték határozza meg a legkisebb falvonalszakasz hosszát mm-ben. Minél " +"kisebbre állítod be ezt az értéket, annál pontosabbak és precízebbek lesznek " +"a falak." msgid "Maximum wall deviation" -msgstr "" +msgstr "Maximális fal eltérés" msgid "" "The maximum deviation allowed when reducing the resolution for the 'Maximum " @@ -18970,6 +19407,11 @@ msgid "" "'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' " "takes precedence." msgstr "" +"A megengedett legnagyobb eltérés a „Maximális falfelbontás” beállítás " +"felbontásának csökkentésekor. Ha ezt növeled, a nyomtatás kevésbé lesz " +"pontos, de a G-kód kisebb lesz. A „maximális faleltérés” korlátozza a " +"„maximális falfelbontást”, így ha a kettő ütközik, a „Maximális faleltérés” " +"élvez elsőbbséget." msgid "First layer minimum wall width" msgstr "Első réteg minimális falszélessége" @@ -19272,11 +19714,11 @@ msgid "Debug level" msgstr "Hibakeresés szintje" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"A hibakeresési naplózási szint beállítása. 0:fatal, 1:error, 2:warning, 3:" -"info, 4:debug, 5:trace\n" +"A hibakeresési naplózási szint beállítása. 0:fatal, 1:error, 2:warning, " +"3:info, 4:debug, 5:trace\n" msgid "Enable timelapse for print" msgstr "Időfelvétel engedélyezése a nyomtatáshoz" @@ -19748,7 +20190,7 @@ msgid "Generating infill toolpath" msgstr "Kitöltési szerszámút generálás" msgid "Z contouring" -msgstr "" +msgstr "Z kontúrozás" msgid "Detect overhangs for auto-lift" msgstr "Túlnyúlások észlelése az automatikus emeléshez" @@ -20365,6 +20807,10 @@ msgid "" "temperature range of the other filaments. Otherwise, nozzle clogging or " "printer damage may occur." msgstr "" +"A kiválasztott fúvóka hőmérsékletek nem kompatibilisek. Több anyagból " +"történő nyomtatás esetén az egyes filamentak fúvóka hőmérsékletének a többi " +"filament ajánlott fúvókahőmérséklet-tartományán belül kell lennie. Ellenkező " +"esetben a fúvóka eltömődhet vagy a nyomtató megsérülhet." msgid "Sync AMS and nozzle information" msgstr "AMS- és fúvókainformációk szinkronizálása" @@ -20662,8 +21108,7 @@ msgid "" "Check your firmware documentation for supported shaper types." msgstr "" "RepRap firmware verzió => 3.4.0\n" -"Ellenőrizd a firmware dokumentációját a támogatott rezgéskompenzátor-" -"típusokhoz." +"Ellenőrizd a firmware dokumentációját a támogatott rezgéskompenzátor-típusokhoz." msgid "Frequency (Start / End): " msgstr "Frekvencia (Kezdés / Vég): " @@ -20791,25 +21236,25 @@ msgid "NOTE: High values may cause Layer shift (>%s)" msgstr "MEGJEGYZÉS: A magas értékek rétegeltolódást okozhatnak (>%s)" msgid "Flow Ratio Calibration" -msgstr "" +msgstr "Anyagáramlás kalibrálás" msgid "Calibration Test Type" -msgstr "" +msgstr "Kalibrációs teszt típusa" msgid "Pass 1 (Coarse)" -msgstr "" +msgstr "1. menet (durva)" msgid "Pass 2 (Fine)" -msgstr "" +msgstr "2. menet (finom)" msgid "YOLO (Recommended)" msgstr "YOLO (Ajánlott)" msgid "YOLO (Perfectionist)" -msgstr "" +msgstr "YOLO (perfekcionista)" msgid "Top Surface Pattern" -msgstr "" +msgstr "Felső felület mintázata" msgid "Send G-code to printer host" msgstr "G-kód küldése a nyomtató gazdagépének" @@ -21071,8 +21516,8 @@ msgstr "" "Szeretnéd felülírni?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "A beállításokat a következő formára nevezzük át: \"Gyártó Típus Sorozat @a " @@ -21253,6 +21698,24 @@ msgstr "" "A rendszerbeállítás nem teszi lehetővé a létrehozást. \n" "Add meg újra a nyomtatómodellt vagy a fúvókaátmérőt." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" +"\n" +"\n" +"Elérhető fúvókaprofilok ehhez a nyomtatóhoz:" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" +"\n" +"\n" +"Válassz IGEN-t a beállítás váltásához:" + msgid "Printer Created Successfully" msgstr "Nyomtató sikeresen létrehozva" @@ -21503,36 +21966,6 @@ msgstr "" "A fúvóka típusa nem egyezik a nyomtató tényleges fúvókatípusával.\n" "Kattints a fenti Szinkronizálás gombra, majd indítsd újra a kalibrálást." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "fúvókaméret a beállításban: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "megjegyzett fúvókaméret: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"A beállításban szereplő fúvókaméret nem egyezik a megjegyzett fúvókával. " -"Mostanában cseréltél fúvókát?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "fúvóka[%d] a beállításban: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "fúvóka[%d] megjegyezve: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"A beállításban szereplő fúvókatípus nem egyezik a megjegyzett fúvókával. " -"Mostanában cseréltél fúvókát?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "%1s anyag nyomtatása %2s fúvókával a fúvóka károsodását okozhatja." @@ -22412,7 +22845,7 @@ msgid "Global settings" msgstr "Globális beállítások" msgid "Video tutorial" -msgstr "" +msgstr "Videós útmutató" msgid "(Sync with printer)" msgstr "(Szinkronizálás a nyomtatóval)" @@ -22480,26 +22913,17 @@ msgstr "Maximális szög" msgid "Detection radius" msgstr "Érzékelési sugár" -msgid "Remove selected points" -msgstr "Kijelölt pontok eltávolítása" +msgid "Selected" +msgstr "Kiválasztva" -msgid "Remove all" -msgstr "Összes eltávolítása" +msgid "Auto-generate" +msgstr "Automatikus generálás" -msgid "Auto-generate points" -msgstr "Pontok automatikus generálása" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "Hozzon létre peremfüleket a Max szög és az észlelési sugár használatával" -msgid "Add a brim ear" -msgstr "Karimafül hozzáadása" - -msgid "Delete a brim ear" -msgstr "Karimafül törlése" - -msgid "Adjust head diameter" -msgstr "Fejátmérő módosítása" - -msgid "Adjust section view" -msgstr "Metszeti nézet módosítása" +msgid "Add or Select" +msgstr "Hozzáadás vagy kiválasztás" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22511,8 +22935,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Ennek az objektumnak a karimatípusát állítsd \"festett\" értékre" -msgid " invalid brim ears" -msgstr " érvénytelen karimás fülek" +msgid "invalid brim ears" +msgstr "érvénytelen peremfülek" msgid "Brim Ears" msgstr "Karimás Fülek" @@ -22795,15 +23219,17 @@ msgstr "" "Tudtad, hogy az Orca Slicer számos billentyűparancsot és 3D jelenetműveletet " "kínál?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Fordítás páratlan rétegeken\n" -"Tudtad, hogy a Fordítás páratlan rétegeken funkció jelentősen " -"javíthatja a túlnyúlások felületi minőségét?" +"Fordítás a párosan\n" +"Tudtad, hogy a Fordítás a párosan funkció jelentősen javíthatja " +"a túlnyúlások felületi minőségét? Azonban fal egyenetlenséget okozhat, " +"ezért óvatosan használjad!" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23097,6 +23523,85 @@ msgstr "" "tárgyasztal hőmérsékletének növelése csökkentheti a kunkorodás " "valószínűségét?" +#~ msgid "Erase all painting" +#~ msgstr "Minden festés törlése" + +#~ msgid "Reset cut" +#~ msgstr "Vágás visszaállítása" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Felcserélt pásztázás és forgatás egérgombok" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Ha engedélyezve van, felcseréli a bal és jobb egérgomb pásztázási és " +#~ "forgatási funkcióit." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "fúvókaméret a beállításban: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "megjegyzett fúvókaméret: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "A beállításban szereplő fúvókaméret nem egyezik a megjegyzett fúvókával. " +#~ "Mostanában cseréltél fúvókát?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "fúvóka[%d] a beállításban: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "fúvóka[%d] megjegyezve: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "A beállításban szereplő fúvókatípus nem egyezik a megjegyzett fúvókával. " +#~ "Mostanában cseréltél fúvókát?" + +#~ msgid "Remove selected points" +#~ msgstr "Kijelölt pontok eltávolítása" + +#~ msgid "Remove all" +#~ msgstr "Összes eltávolítása" + +#~ msgid "Auto-generate points" +#~ msgstr "Pontok automatikus generálása" + +#~ msgid "Add a brim ear" +#~ msgstr "Karimafül hozzáadása" + +#~ msgid "Delete a brim ear" +#~ msgstr "Karimafül törlése" + +#~ msgid "Adjust head diameter" +#~ msgstr "Fejátmérő módosítása" + +#~ msgid "Adjust section view" +#~ msgstr "Metszeti nézet módosítása" + +#~ msgid " invalid brim ears" +#~ msgstr " érvénytelen karimás fülek" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Fordítás páratlan rétegeken\n" +#~ "Tudtad, hogy a Fordítás páratlan rétegeken funkció jelentősen " +#~ "javíthatja a túlnyúlások felületi minőségét?" + #~ msgid "Pen size" #~ msgstr "Tollméret" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 991fe0c0fa..c45b45eea0 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -122,8 +122,8 @@ msgstr "Esegui" msgid "On highlighted overhangs only" msgstr "Solo sulle sporgenze evidenziate" -msgid "Erase all painting" -msgstr "Cancella tutto" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Evidenziare le sporgenze" @@ -192,6 +192,9 @@ msgstr "Evidenziare le facce in base all'angolo di sporgenza." msgid "No auto support" msgstr "Nessun supporto automatico" +msgid "Done" +msgstr "Fatto" + msgid "Support Generated" msgstr "Supporto generato" @@ -346,6 +349,12 @@ msgstr "Selezione parte" msgid "Fixed step drag" msgstr "Trascinamento a passo fisso" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Ridimensionamento su un solo lato" @@ -494,6 +503,18 @@ msgstr "Posizione taglio" msgid "Build Volume" msgstr "Volume di stampa" +msgid "Multiple" +msgstr "Multiplo" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Spaziatura" + msgid "Part" msgstr "Parte" @@ -533,7 +554,7 @@ msgid "Drag" msgstr "Trascina" msgid "Move cut line" -msgstr "" +msgstr "Sposta linea di taglio" msgid "Draw cut line" msgstr "Disegna linea di taglio" @@ -602,12 +623,6 @@ msgstr "Modifica connettori" msgid "Add connectors" msgstr "Aggiungi connettori" -msgid "Reset cut" -msgstr "Ripristina taglio" - -msgid "Reset cutting plane and remove connectors" -msgstr "Ripristina il piano di taglio e rimuovi i connettori" - msgid "Upper part" msgstr "Parte superiore" @@ -626,6 +641,9 @@ msgstr "Dopo il taglio" msgid "Cut to parts" msgstr "Taglia in parti" +msgid "Reset cutting plane and remove connectors" +msgstr "Ripristina il piano di taglio e rimuovi i connettori" + msgid "Perform cut" msgstr "Effettua taglio" @@ -831,7 +849,7 @@ msgid "Embossing actions" msgstr "Azioni di rilievo" msgid "Position on surface" -msgstr "" +msgstr "Posizione sulla superficie" msgid "Emboss" msgstr "Rilievo" @@ -860,6 +878,9 @@ msgstr "Carattere predefinito" msgid "Advanced" msgstr "Avanzate" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1532,15 +1553,6 @@ msgstr "" "L'elemento 1 è stato ripristinato, \n" "l'elemento 2 è stato l'elemento 1" -msgid "Warning: please select Plane's feature." -msgstr "Attenzione: selezionare l'elemento del Piano." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Attenzione: selezionare l'elemento del Punto o del Cerchio." - -msgid "Warning: please select two different meshes." -msgstr "Attenzione: selezionare due maglie poligonali diverse." - msgid "Copy to clipboard" msgstr "Copia negli appunti" @@ -1593,6 +1605,15 @@ msgstr "(In movimento)" msgid "Point and point assembly" msgstr "Assemblaggio punto a punto" +msgid "Warning: please select two different meshes." +msgstr "Attenzione: selezionare due maglie poligonali diverse." + +msgid "Warning: please select Plane's feature." +msgstr "Attenzione: selezionare l'elemento del Piano." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Attenzione: selezionare l'elemento del Punto o del Cerchio." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1788,6 +1809,18 @@ msgstr "Hai la versione più recente." msgid "Info" msgstr "Informazioni" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1855,6 +1888,23 @@ msgstr "" "La versione di OrcaSlicer è obsoleta. Devi aggiornarla all'ultima versione " "prima di poter utilizzare normalmente il programma." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Recupero delle informazioni della stampante, riprovare più tardi." @@ -1911,14 +1961,14 @@ msgstr "Aggiornamento dell'informativa sulla riservatezza" #, c-format, boost-format msgid "your Bambu Cloud profile (user ID: \"%s\")" -msgstr "" +msgstr "il tuo profilo Bambu Cloud (ID utente: \"%s\")" msgid "your default profile" -msgstr "" +msgstr "il tuo profilo predefinito" #, c-format, boost-format msgid "a user profile (folder: \"%s\")" -msgstr "" +msgstr "profilo utente (cartella: \"%s\")" #, c-format, boost-format msgid "" @@ -1926,15 +1976,20 @@ msgid "" "Do you want to migrate them to your OrcaCloud profile?\n" "This will copy your presets so they are available under your new account." msgstr "" +"Sono stati trovati dei profili utente in %s.\n" +"Desideri migrarli al tuo profilo OrcaCloud?\n" +"In questo modo verranno copiati e resi disponibili nel tuo nuovo profilo." msgid "Migrate User Presets" -msgstr "" +msgstr "Migra profili utente" #, c-format, boost-format msgid "" "Failed to migrate user presets:\n" "%s" msgstr "" +"Impossibile migrare i profili utente:\n" +"%s" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -1951,29 +2006,33 @@ msgid "" "reduce the preset size by removing custom configurations or use it locally " "only." msgstr "" +"Il contenuto del profilo è troppo grande per essere sincronizzato con il " +"cloud (supera 1 MB). Si prega di ridurre le dimensioni del profilo " +"rimuovendo le configurazioni personalizzate oppure utilizzarlo solo in " +"locale." #, c-format, boost-format msgid "%s updated from %s to %s" -msgstr "" +msgstr "%s aggiornato da %s a %s" #, c-format, boost-format msgid "%s has been downloaded." -msgstr "" +msgstr "%s è stato scaricato." #, c-format, boost-format msgid "Bundle %s is no longer available." -msgstr "" +msgstr "Il pacchetto %s non è più disponibile." #, c-format, boost-format msgid "Bundle %s access is unauthorized." -msgstr "" +msgstr "L'accesso al pacchetto %s non è autorizzato." msgid "Loading user preset" msgstr "Caricamento profili utente" #, c-format, boost-format msgid "%s has been removed." -msgstr "" +msgstr "%s è stato rimosso." msgid "Switching application language" msgstr "Cambio lingua applicazione" @@ -2141,7 +2200,7 @@ msgid "Backspace" msgstr "Backspace" msgid "Load..." -msgstr "Caricamento..." +msgstr "Carica..." msgid "Cube" msgstr "Cubo" @@ -2190,9 +2249,9 @@ msgid "" "No - Do not change these settings for me" msgstr "" "Questo modello presenta una goffratura del testo sulla superficie superiore. " -"Per ottenere risultati ottimali, si consiglia di impostare la 'Soglia di una " -"parete(min_width_top_surface)' su 0 affinché la 'Soglia di una sola parete " -"sulle superfici superiori' funzioni al meglio.\n" +"Per ottenere risultati ottimali, si consiglia di impostare 'Soglia singola " +"parete (min_width_top_surface)' su 0 affinché l'opzione 'Solo una parete su " +"superfici superiori' funzioni al meglio.\n" "Sì - Modificare automaticamente queste impostazioni\n" "No - Non modificare queste impostazioni per me" @@ -2221,7 +2280,7 @@ msgid "Support Enforcer" msgstr "Supporto di rinforzo" msgid "Change part type" -msgstr "" +msgstr "Modifica tipo di parte" msgid "Set as an individual object" msgstr "Imposta come singolo oggetto" @@ -2239,10 +2298,10 @@ msgid "Printable" msgstr "Stampabile" msgid "Auto Drop" -msgstr "" +msgstr "Rilascio automatico" msgid "Automatically drops the selected object to the build plate" -msgstr "" +msgstr "Rilascia automaticamente l'oggetto selezionato sul piano di stampa" msgid "Fix model" msgstr "Correggi il modello" @@ -2414,12 +2473,12 @@ msgstr "Orienta automaticamente l'oggetto per migliorare la qualità di stampa" msgid "Edit" msgstr "Modifica" -msgid "Delete this filament" -msgstr "Elimina questo filamento" - msgid "Merge with" msgstr "Unisci con" +msgid "Delete this filament" +msgstr "Elimina questo filamento" + msgid "Select All" msgstr "Seleziona tutto" @@ -2427,10 +2486,10 @@ msgid "Select all objects on the current plate" msgstr "Seleziona tutti gli oggetti sul piatto corrente" msgid "Select All Plates" -msgstr "Seleziona tutte le piastre" +msgstr "Seleziona tutti i piatti" msgid "Select all objects on all plates" -msgstr "Seleziona tutti gli oggetti su tutte le piastre" +msgstr "Seleziona tutti gli oggetti su tutti i piatti" msgid "Delete All" msgstr "Elimina tutto" @@ -2493,7 +2552,7 @@ msgid "Simplify Model" msgstr "Semplifica Modello" msgid "Subdivision mesh" -msgstr "Suddivisione mesh" +msgstr "Suddivisione maglia" msgid "(Lost color)" msgstr "(Colore perso)" @@ -2505,7 +2564,7 @@ msgid "Drop" msgstr "Lascia" msgid "Edit Process Settings" -msgstr "Modifica le impostazioni del processo" +msgstr "Modifica impostazioni di processo" msgid "Copy Process Settings" msgstr "Copia impostazioni di processo" @@ -2523,7 +2582,7 @@ msgid "Set Filament for selected items" msgstr "Imposta filamento per gli elementi selezionati" msgid "Automatically snaps the selected object to the build plate" -msgstr "" +msgstr "Aggancia automaticamente l'oggetto selezionato sul piano di stampa" msgid "Unlock" msgstr "Sblocca" @@ -2821,7 +2880,7 @@ msgid "Brim" msgstr "Tesa" msgid "Object/Part Settings" -msgstr "" +msgstr "Impostazioni oggetto/parte" msgid "Reset parameter" msgstr "Ripristina parametro" @@ -3535,6 +3594,14 @@ msgid "" "enhancements. Each project carried the work of its predecessors forward, " "crediting those who came before." msgstr "" +"I programmi di sezionamento a sorgente aperta per l'elaborazione del modelli " +"per la stampa 3D, si fondano su una tradizione di collaborazione e " +"riconoscimento del merito. Slic3r, creato da Alessandro Ranellucci e dalla " +"comunità RepRap, ha gettato le basi. PrusaSlicer di Prusa Research ha " +"sviluppato ulteriormente questo lavoro; Bambu Studio è derivato da " +"PrusaSlicer e SuperSlicer lo ha ampliato con miglioramenti apportati dalla " +"comunità. Ogni progetto ha portato avanti il ​​lavoro dei suoi predecessori, " +"riconoscendo il contributo di chi li ha preceduti." msgid "" "OrcaSlicer began in that same spirit, drawing from PrusaSlicer, BambuStudio, " @@ -3542,12 +3609,20 @@ msgid "" "introducing advanced calibration tools, precise wall and seam control and " "hundreds of other features." msgstr "" +"OrcaSlicer è nato con lo stesso spirito, traendo ispirazione da PrusaSlicer, " +"BambuStudio, SuperSlicer e CuraSlicer. Ma da allora si è evoluto ben oltre " +"le sue origini, introducendo strumenti di calibrazione avanzati, controllo " +"preciso su pareti e cuciture e centinaia di altre funzionalità." msgid "" "Today, OrcaSlicer is the most widely used and actively developed open-source " "slicer in the 3D printing community. Many of its innovations have been " "adopted by other slicers, making it a driving force for the entire industry." msgstr "" +"Oggi, OrcaSlicer è il programma di sezionamento a sorgente aperta più " +"utilizzato e attivamente sviluppato nella comunità della stampa 3D. Molte " +"delle sue innovazioni sono state adottate da altri programmi di stampa, " +"rendendolo un punto di riferimento per l'intero settore." msgid "Version" msgstr "Versione" @@ -4501,7 +4576,7 @@ msgid "Inspecting first layer" msgstr "Ispezione del primo strato" msgid "Identifying build plate type" -msgstr "Identificazione tipo piatto di stampa" +msgstr "Identificazione tipo piano di stampa" msgid "Calibrating Micro Lidar" msgstr "Calibrazione Micro Lidar" @@ -4802,9 +4877,6 @@ msgstr "Interrompi asciugatura" msgid "Proceed" msgstr "Procedi" -msgid "Done" -msgstr "Fatto" - msgid "Retry" msgstr "Riprova" @@ -4970,7 +5042,7 @@ msgid "Acceleration" msgstr "Accelerazione" msgid "Jerk" -msgstr "" +msgstr "Scatto" msgid "Fan Speed" msgstr "Velocità ventola" @@ -5068,33 +5140,6 @@ msgstr "Transizione di supporto" msgid "Mixed" msgstr "Misto" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Flusso di stampa" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Velocità ventola" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Tempo" - -msgid "Actual speed profile" -msgstr "Profilo di velocità effettivo" - -msgid "Speed: " -msgstr "Velocità: " - msgid "Height: " msgstr "Altezza: " @@ -5120,14 +5165,41 @@ msgid "Color: " msgstr "Colore: " msgid "Acceleration: " -msgstr "" +msgstr "Accelerazione: " msgid "Jerk: " -msgstr "" +msgstr "Scatto: " msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Flusso di stampa" + +msgid "Fan speed" +msgstr "Velocità ventola" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Tempo" + +msgid "Speed: " +msgstr "Velocità: " + +msgid "Actual speed profile" +msgstr "Profilo di velocità effettivo" + msgid "Statistics of All Plates" msgstr "Statistiche di tutti i piatti" @@ -5156,8 +5228,9 @@ msgid "" "Automatically re-slice according to the optimal filament grouping, and the " "grouping results will be displayed after slicing." msgstr "" -"Ri-slicing automatico secondo il raggruppamento filamenti ottimale; i " -"risultati del raggruppamento verranno visualizzati dopo lo slicing." +"Rielabora automaticamente in base al raggruppamento ottimale dei filamenti; " +"i risultati del raggruppamento verranno visualizzati al termine " +"dell'elaborazione." msgid "Filament Grouping" msgstr "Raggruppamento filamenti" @@ -5258,10 +5331,10 @@ msgid "Actual Speed (mm/s)" msgstr "Velocità effettiva (mm/s)" msgid "Acceleration (mm/s²)" -msgstr "" +msgstr "Accelerazione (mm/s²)" msgid "Jerk (mm/s)" -msgstr "" +msgstr "Scatto (mm/s)" msgid "Fan Speed (%)" msgstr "Velocità ventola (%)" @@ -5294,7 +5367,7 @@ msgid "Filament change times" msgstr "Tempi cambio filamento" msgid "Tool changes" -msgstr "" +msgstr "Cambi testina" msgid "Color change" msgstr "Cambio colore" @@ -5387,10 +5460,10 @@ msgid "Sequence" msgstr "Sequenza" msgid "Object Selection" -msgstr "" +msgstr "Selezione oggetto" msgid "Part Selection" -msgstr "" +msgstr "Selezione parte" msgid "number keys" msgstr "tasti numerici" @@ -5471,9 +5544,6 @@ msgstr "Orienta" msgid "Arrange options" msgstr "Opzioni di disposizione" -msgid "Spacing" -msgstr "Spaziatura" - msgid "0 means auto spacing." msgstr "0 significa spaziatura automatica." @@ -5582,7 +5652,7 @@ msgid "Paint Toolbar" msgstr "Barra strumenti di pittura" msgid "part selection" -msgstr "" +msgstr "selezione parte" msgid "Explosion Ratio" msgstr "Rapporto di esplosione" @@ -5608,7 +5678,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -6011,6 +6081,15 @@ msgstr "Esporta la configurazione corrente in un file" msgid "Export" msgstr "Esporta" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Esci" @@ -6136,6 +6215,9 @@ msgid "View" msgstr "Vista" msgid "Preset Bundle" +msgstr "Pacchetto profili" + +msgid "Syncing presets from cloud…" msgstr "" msgid "Help" @@ -6178,7 +6260,7 @@ msgid "VFA" msgstr "VFA" msgid "Calibration Guide" -msgstr "" +msgstr "Guida alla calibrazione" msgid "&Open G-code" msgstr "Apri G-code" @@ -6293,6 +6375,11 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"Desideri sincronizzare i tuoi dati personali da Orca Cloud?\n" +"Contiene le seguenti informazioni:\n" +"1. Profili di processo\n" +"2. Profili di filamento\n" +"3. Profili della stampante" msgid "Synchronization" msgstr "Sincronizzazione" @@ -6314,6 +6401,8 @@ msgid "" "The player is not loaded because the GStreamer GTK video sink is missing or " "failed to initialize." msgstr "" +"Il lettore non è stato caricato perché il ricevitore video GTK di GStreamer " +"è mancante o non è stato inizializzato correttamente." msgid "Please confirm if the printer is connected." msgstr "Verifica che la stampante sia collegata." @@ -7216,10 +7305,10 @@ msgid "Model file downloaded." msgstr "File del modello scaricato." msgid "Shared profiles may be available for this printer." -msgstr "" +msgstr "Per questa stampante potrebbero essere disponibili profili condivisi." msgid "Browse shared profiles" -msgstr "" +msgstr "Esplora i profili condivisi" msgid "Serious warning:" msgstr "Avviso serio:" @@ -7433,7 +7522,7 @@ msgid "Objects" msgstr "Oggetti" msgid "Cycle settings visibility" -msgstr "" +msgstr "Visibilità impostazioni" msgid "Compare presets" msgstr "Confronta i profili" @@ -7718,28 +7807,30 @@ msgid "Load 3MF" msgstr "Carica 3MF" msgid "BambuStudio Project" -msgstr "" +msgstr "Progetto BambuStudio" -#, fuzzy msgid "The 3MF is not supported by OrcaSlicer, loading geometry data only." msgstr "" "Il formato 3MF non è supportato da OrcaSlicer. Saranno caricati solo i dati " "geometrici." -#, fuzzy msgid "" "The 3MF file was generated by an old OrcaSlicer version, loading geometry " "data only." msgstr "" -"Il 3MF è stato generato da una vecchia versione di OrcaSlicer, caricando " -"solo i dati geometrici." +"Il file 3MF è stato generato da una vecchia versione di OrcaSlicer. Saranno " +"caricati solo i dati geometrici." msgid "" "The 3MF file was generated by an older version, loading geometry data only." msgstr "" +"Il file 3MF è stato generato da una versione precedente. Saranno caricati " +"solo i dati geometrici." msgid "The 3MF file was generated by BambuStudio, loading geometry data only." msgstr "" +"Il file 3MF è stato generato da BambuStudio. Saranno caricati solo i dati " +"geometrici." msgid "" "This project was created with an OrcaSlicer 2.3.1-alpha and uses infill " @@ -7782,12 +7873,18 @@ msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Found unrecognized settings:" msgstr "" +"Il file 3MF è stato creato da BambuStudio (versione %s), che è più recente " +"della versione compatibile %s. Sono state trovate impostazioni non " +"riconosciute:" #, c-format, boost-format msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Some settings may not be fully compatible." msgstr "" +"Il file 3MF è stato creato da BambuStudio (versione %s), che è più recente " +"della versione compatibile %s. Alcune impostazioni potrebbero non essere " +"pienamente compatibili." msgid "" "The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer." @@ -7804,7 +7901,7 @@ msgstr "Si prega di correggerli nella scheda dei parametri" msgid "" "The 3MF has the following modified G-code in filament or printer presets:" msgstr "" -"Il 3MF ha i seguenti G-code modificati nei profili del filamento o della " +"Il 3MF ha i seguenti G-code modificati nei profili di filamento o della " "stampante:" msgid "" @@ -7883,7 +7980,7 @@ msgid "Object with multiple parts was detected" msgstr "È stato rilevato un oggetto con più parti" msgid "Auto-Drop" -msgstr "" +msgstr "Rilascio automatico" #, c-format, boost-format msgid "" @@ -7958,9 +8055,11 @@ msgstr "L'oggetto selezionato non può essere diviso." msgid "Disable Auto-Drop to preserve z positioning?\n" msgstr "" +"Disabilitare la funzione di Rilascio automatico per preservare il " +"posizionamento sull'asse Z?\n" msgid "Object with floating parts was detected" -msgstr "" +msgstr "È stato rilevato un oggetto con parti fluttuanti" msgid "Another export job is running." msgstr "È in esecuzione un altro processo di esportazione." @@ -8380,7 +8479,7 @@ msgid "Triangles: %1%\n" msgstr "Triangoli: %1%\n" msgid "Use \"Fix Model\" to repair the mesh." -msgstr "" +msgstr "Utilizza \"Correggi modello\" per riparare la maglia poligonale." #, c-format, boost-format msgid "" @@ -8554,15 +8653,17 @@ msgid "Show the splash screen during startup." msgstr "Mostra la schermata iniziale durante l'avvio." msgid "Show shared profiles notification" -msgstr "" +msgstr "Mostra notifica profili condivisi" msgid "" "Show a notification with a link to browse shared profiles when the selected " "printer is changed." msgstr "" +"Quando si cambia la stampante selezionata, viene visualizzata una notifica " +"con un collegamento per esplorare i profili condivisi." msgid "Use window buttons on left side" -msgstr "" +msgstr "Utilizza i pulsanti della finestra sul lato sinistro" msgid "(Requires restart)" msgstr "(Richiede riavvio)" @@ -8638,10 +8739,10 @@ msgstr "" "del filamento/processo per ciascuna stampante." msgid "Group user filament presets" -msgstr "Raggruppa profili filamento utente" +msgstr "Raggruppa profili di filamento utente" msgid "Group user filament presets based on selection" -msgstr "Raggruppa profili filamento utente in base alla selezione" +msgstr "Raggruppa i profili di filamento utente in base alla selezione" msgid "All" msgstr "Tutto" @@ -8716,7 +8817,7 @@ msgid "Auto arrange plate after cloning" msgstr "Disposizione automatica del piatto dopo la clonazione" msgid "Auto slice after changes" -msgstr "Slicing automatico dopo le modifiche" +msgstr "Elaborazione automatica dopo le modifiche" msgid "" "If enabled, OrcaSlicer will re-slice automatically whenever slicing-related " @@ -8783,15 +8884,6 @@ msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" "Se abilitato, usa la visuale libera. Altrimenti, usa la visuale vincolata." -msgid "Swap pan and rotate mouse buttons" -msgstr "Scambia i pulsanti del mouse per ruotare e spostare" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Se abilitato, inverte le funzioni di panoramica e rotazione dei pulsanti " -"sinistro e destro del mouse." - msgid "Reverse mouse zoom" msgstr "Inverti zoom del mouse" @@ -8800,6 +8892,27 @@ msgstr "" "Se abilitato, inverte la direzione dell'ingrandimento con la rotellina del " "mouse." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Cancella la mia scelta su..." @@ -8824,6 +8937,59 @@ msgstr "" "Cancella la mia scelta per la sincronizzazione del profilo stampante dopo il " "caricamento del file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Disabilitato" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Regione di accesso" @@ -8835,6 +9001,10 @@ msgid "" "the transmission of data to Bambu's cloud services too. Users who don't use " "BBL machines or use LAN mode only can safely turn on this function." msgstr "" +"Questa opzione disabilita tutti i servizi cloud, ad esempio Orca Cloud e " +"Bambu Cloud. Interrompe anche la trasmissione dei dati ai servizi cloud di " +"Bambu. Gli utenti che non utilizzano macchine BBL o che utilizzano solo la " +"modalità LAN, possono attivare questa opzione in tutta sicurezza." msgid "Network test" msgstr "Test di rete" @@ -8843,15 +9013,18 @@ msgid "Test" msgstr "Prova" msgid "Cloud Providers" -msgstr "" +msgstr "Fornitori di servizi cloud" msgid "Enable Bambu Cloud" -msgstr "" +msgstr "Abilita Bambu Cloud" msgid "" "Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu " "login section appears on the homepage." msgstr "" +"Consente l'accesso sia a Bambu Cloud che a Orca Cloud. Quando questa opzione " +"è abilitata, nella pagina iniziale viene visualizzata una sezione per " +"l'accesso a Bambu." msgid "Update & sync" msgstr "Aggiorna e sincronizza" @@ -8983,6 +9156,15 @@ msgstr "Modalità sviluppatore" msgid "Skip AMS blacklist check" msgstr "Salta il controllo della lista nera dell'AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Consenti memoria anomala" @@ -9133,7 +9315,7 @@ msgid "Project-inside presets" msgstr "Profilo interno al progetto" msgid "Bundle presets" -msgstr "" +msgstr "Pacchetto profili" msgid "System" msgstr "Sistema" @@ -9738,6 +9920,9 @@ msgid "" "type in the slicing file. Please make sure you have installed the correct " "filament in the external spool." msgstr "" +"Il tipo di filamento esterno è sconosciuto o non corrisponde al tipo di " +"filamento specificato nel file di sezionamento. Assicurati di aver " +"installato il filamento corretto nella bobina esterna." msgid "Please refer to Wiki before use->" msgstr "Fare riferimento alla Wiki prima dell'uso ->" @@ -10129,8 +10314,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quando si registra un timelapse senza la testina di stampa, si consiglia di " "aggiungere un \"Timelapse Torre di spurgo\"\n" @@ -10500,7 +10685,7 @@ msgid "Cooling Fan" msgstr "Velocità minima ventola di raffreddamento" msgid "Fan speed-up time" -msgstr "Tempo di accelerazione della ventola" +msgstr "Tempo accelerazione ventola" msgid "Extruder Clearance" msgstr "Spazio libero estrusore" @@ -10554,10 +10739,10 @@ msgid "Normal" msgstr "Normale" msgid "Resonance Compensation" -msgstr "" +msgstr "Compensazione risonanza" msgid "Resonance Avoidance Speed" -msgstr "Velocità evita risonanza" +msgstr "Velocità prevenzione risonanza" msgid "Frequency" msgstr "Frequenza" @@ -10566,12 +10751,15 @@ msgid "" "The frequency of the anti-vibration signal will correspond to the natural " "frequency of the frame." msgstr "" +"La frequenza del segnale antivibrazione corrisponderà alla frequenza " +"naturale del telaio." msgid "Damping" -msgstr "" +msgstr "Smorzamento" msgid "Damping ratio for the input shaping filter." msgstr "" +"Rapporto di smorzamento per il filtro della compensazione della risonanza." msgid "Speed limitation" msgstr "Limitazione velocità" @@ -10696,29 +10884,42 @@ msgid "" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" +" - %s:\n" +" %s primo strato %d %s, altri strati %d %s\n" +" %s delta massimo %d %s, delta attuale %d %s\n" msgid "" "Some first-layer and other-layer temperature pairs exceed safety limits.\n" msgstr "" +"Alcune coppie di temperature del primo strato e di altri strati superano i " +"limiti di sicurezza.\n" msgid "" "\n" "Invalid pairs:\n" msgstr "" +"\n" +"Coppie non valide:\n" msgid "" "\n" "You can go back to edit values, or continue if this is intentional." msgstr "" +"\n" +"È possibile tornare indietro per modificare i valori, oppure continuare se " +"questa scelta è intenzionale." msgid "" "\n" "\n" "Continue anyway?" msgstr "" +"\n" +"\n" +"Continuare comunque?" msgid "Temperature Safety Check" -msgstr "" +msgstr "Controllo di sicurezza della temperatura" msgid "Continue" msgstr "Continua" @@ -10727,7 +10928,7 @@ msgid "Back" msgstr "Posteriore" msgid "Don't warn again for this preset" -msgstr "" +msgstr "Non inviare più avvisi per questo profilo" #, c-format, boost-format msgid "Left: %s" @@ -10773,6 +10974,32 @@ msgstr "Non salvare" msgid "Discard" msgstr "Scarta" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "" "Clicca il pulsante destro del mouse per visualizzare il testo completo." @@ -11046,7 +11273,7 @@ msgid "" "presets.\n" "Are you sure you want to continue?" msgstr "" -"La sincronizzazione dei filamenti AMS scarterà i profili filamento " +"La sincronizzazione dei filamenti AMS scarterà i profili di filamento " "modificati ma non salvati.\n" "Sei sicuro di voler continuare?" @@ -11148,7 +11375,7 @@ msgid "" "replaced with the mapped filament types and colors. This action cannot be " "undone." msgstr "" -"Dopo la sincronizzazione, i profili filamento e i colori del progetto " +"Dopo la sincronizzazione, i profili di filamento e i colori del progetto " "saranno sostituiti con i tipi e i colori dei filamenti mappati. Questa " "azione non può essere annullata." @@ -11241,15 +11468,15 @@ msgid "" "This is an expert-level setting, incorrect adjustment will likely lead to " "jams, extruder wheel grinding into filament etc." msgstr "" -"Per modellazione del filamento (o Ramming) si intende l'operazione di " -"estrusione effettuata appena prima di un cambio di filamento in una " -"stampante MM con estrusore singolo. Il suo scopo è quello di dare una forma " -"corretta all'estremità del filamento scaricato, in modo che non impedisca " -"l'inserimento del nuovo filamento e possa essere reinserito successivamente. " -"Questa fase è importante e i diversi materiali possono richiedere velocità " -"di estrusione diverse per ottenere una buona forma. Per questo motivo, le " -"velocità di estrusione nella fase di modellazione del filamento sono " -"regolabili.\n" +"Per Spinta del filamento (o Ramming) si intende l'operazione di estrusione " +"effettuata appena prima di un cambio di filamento in una stampante " +"multimateriale con estrusore singolo. Il suo scopo è quello di dare una " +"forma corretta all'estremità del filamento scaricato, in modo che non " +"impedisca l'inserimento del nuovo filamento e possa essere reinserito " +"successivamente. Questa fase è importante e i diversi materiali possono " +"richiedere velocità di estrusione diverse per ottenere una buona forma. Per " +"questo motivo, le velocità di estrusione nella fase di modellazione del " +"filamento sono regolabili.\n" "\n" "Si tratta di un'impostazione per esperti: una regolazione errata potrebbe " "causare inceppamenti, la macinazione del filamento da parte dell'ingranaggio " @@ -11314,11 +11541,16 @@ msgid "" "Native Wayland liveview requires the GStreamer GTK video sink. Please " "install the gtksink plugin for GStreamer, then restart OrcaSlicer." msgstr "" +"La funzione di visualizzazione in tempo reale nativa di Wayland richiede il " +"ricevitore video GTK di GStreamer. Installare il modulo gtksink per " +"GStreamer e riavviare OrcaSlicer." msgid "" "Failed to initialize the native Wayland GStreamer video sink. Please check " "your GStreamer GTK plugin installation." msgstr "" +"Impossibile inizializzare il ricevitore video nativo di Wayland GStreamer. " +"Verificare l'installazione del modulo GTK di GStreamer." msgid "" "Windows Media Player is required for this task! Do you want to enable " @@ -11361,6 +11593,8 @@ msgstr "" msgid "Cloud agent is not available. Please restart OrcaSlicer and try again." msgstr "" +"Il fornitore di servizi cloud non è disponibile. Riavviare OrcaSlicer e " +"riprovare." msgid "Bambu Network plug-in not detected." msgstr "Modulo di rete Bambu non rilevato." @@ -11371,6 +11605,9 @@ msgstr "Clicca qui per scaricarlo." msgid "Login" msgstr "Accedi" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Azione necessaria] " @@ -11411,6 +11648,18 @@ msgstr "Mostra elenco scorciatoie da tastiera" msgid "Global shortcuts" msgstr "Scorciatoie globali" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11541,7 +11790,7 @@ msgid "Zoom out" msgstr "Rimpicciolisci" msgid "Toggle printable for object/part" -msgstr "" +msgstr "Attiva/disattiva stampa per oggetto/parte" msgid "Switch between Prepare/Preview" msgstr "Passa tra Prepara e Anteprima" @@ -11635,7 +11884,7 @@ msgid "New version of Orca Slicer" msgstr "Nuova versione di OrcaSlicer" msgid "Check on Github" -msgstr "" +msgstr "Visualizza su GitHub" msgid "Skip this Version" msgstr "Salta questa versione" @@ -11787,8 +12036,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " +"firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -11805,13 +12054,13 @@ msgstr "Scheda di estensione" #, boost-format msgid "Split into %1% parts" -msgstr "" +msgstr "Dividere in %1% parti" msgid "Repair finished" msgstr "Riparazione completata" msgid "Repair failed" -msgstr "" +msgstr "Riparazione fallita" msgid "Repair canceled" msgstr "Riparazione annullata" @@ -11858,10 +12107,10 @@ msgstr "" "l'oggetto potrebbe avere una maglia poligonale difettosa" msgid "Process change extrusion role G-code" -msgstr "" +msgstr "G-code cambio ruolo estrusione processo" msgid "Filament change extrusion role G-code" -msgstr "" +msgstr "G-code cambio ruolo estrusione filamento" msgid "No object can be printed. Maybe too small" msgstr "Non è possibile stampare alcun oggetto. Potrebbe essere troppo piccolo" @@ -11895,15 +12144,19 @@ msgstr "" "La matrice dei volumi di spurgo non corrisponde alla dimensione corretta!" msgid "set_accel_and_jerk() is only supported by Klipper" -msgstr "" +msgstr "set_accel_and_jerk() è supportato solo da Klipper" msgid "" "Input shaping is not supported by Marlin < 2.1.2.\n" "Check your firmware version and update your G-code flavor to ´Marlin 2´" msgstr "" +"La compensazione della risonanza non è supportata da Marlin < 2.1.2.\n" +"Verifica la versione del firmware e aggiorna il G-code a ´Marlin 2´" msgid "Input shaping is only supported by Klipper, RepRapFirmware and Marlin 2" msgstr "" +"La compensazione della risonanza è supportata solo da Klipper, " +"RepRapFirmware e Marlin 2" msgid "Grouping error: " msgstr "Errore di raggruppamento: " @@ -11914,9 +12167,6 @@ msgstr " non può essere posizionato nel " msgid "Internal Bridge" msgstr "Ponte interno" -msgid "Multiple" -msgstr "Multiplo" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12071,16 +12321,24 @@ msgid "" "temperature must fall within the recommended nozzle temperature range of the " "other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" +"Le temperature degli ugelli selezionate sono incompatibili. La temperatura " +"dell'ugello per ciascun filamento deve rientrare nell'intervallo di " +"temperatura consigliato per gli altri filamenti. In caso contrario, " +"potrebbero verificarsi ostruzioni degli ugelli o danni alla stampante." msgid "" "Invalid recommended nozzle temperature range. The lower bound must be lower " "than the upper bound." msgstr "" +"Intervallo di temperatura dell'ugello consigliato non valido. Il limite " +"inferiore deve essere minore del limite superiore." msgid "" "If you still want to print, you can enable the option in Preferences / " "Control / Slicing / Remove mixed temperature restriction." msgstr "" +"Se desideri comunque stampare, puoi abilitare l'opzione in Preferenze / " +"Controllo / Elaborazione / Rimuovi restrizione temperature miste." msgid "No extrusions under current settings." msgstr "Nessuna estrusione con le impostazioni attuali." @@ -12321,7 +12579,7 @@ msgid "" "each layer to prevent loss of floating point accuracy. Add \"G92 E0\" to " "layer_gcode." msgstr "" -"L'indirizzamento relativo dell'estrusore richiede la reimpostazione della " +"L'indirizzamento relativo dell'estrusore richiede il ripristino della " "posizione dell'estrusore ad ogni strato per evitare la perdita di precisione " "in virgola mobile. Aggiungi \"G92 E0\" a layer_gcode." @@ -12475,7 +12733,7 @@ msgstr "" "compensare l'effetto zampa d'elefante." msgid "Elephant foot compensation layers" -msgstr "Strato di compensazione zampa d'elefante" +msgstr "Strati compensazione zampa d'elefante" msgid "" "The number of layers on which the elephant foot compensation will be active. " @@ -12483,13 +12741,13 @@ msgid "" "the next layers will be linearly shrunk less, up to the layer indicated by " "this value." msgstr "" -"Il numero di strati su cui sarà attiva la compensazione della zampa " -"d'elefante. Il primo strato verrà ridotto in base al valore della " -"compensazione della zampa d'elefante, mentre gli strati successivi saranno " -"ridotti in modo lineare, fino allo strato indicato da questo parametro." +"Numero di strati su cui sarà attiva la compensazione della zampa d'elefante. " +"Il primo strato verrà ridotto in base al valore della compensazione della " +"zampa d'elefante, mentre gli strati successivi saranno ridotti in modo " +"lineare, fino allo strato indicato da questo parametro." msgid "Elephant foot layers density" -msgstr "" +msgstr "Densità strati zampa d'elefante" msgid "" "Density of internal solid infill for Elephant foot layers compensation.\n" @@ -12497,6 +12755,11 @@ msgid "" "Subsequent layers become linearly denser by the height specified in " "elefant_foot_compensation_layers." msgstr "" +"Densità del riempimento solido interno per gli strati di compensazione " +"dell'effetto zampa d'elefante.\n" +"Il valore iniziale è impostato per il secondo strato.\n" +"Gli strati successivi aumentano di densità in modo lineare in base " +"all'altezza specificata in elefant_foot_compensation_layers." msgid "" "Slicing height for each layer. Smaller layer height means more accurate and " @@ -13043,7 +13306,7 @@ msgstr "" "Diminuisci leggermente questo valore (ad esempio 0,9) per ridurre la " "quantità di filamento estruso per i ponti e tendere il materiale.\n" "\n" -"Il flusso effettivo utilizzato nei ponti viene calcolato moltiplicando " +"Il flusso di stampa effettivo per i ponti viene calcolato moltiplicando " "questo valore con il flusso di stampa del filamento e, se impostato, con il " "flusso di stampa dell'oggetto." @@ -13062,9 +13325,10 @@ msgstr "" "Questo valore regola lo spessore dello strato dei ponti interni. È il primo " "strato sopra il riempimento sparso. Ridurre leggermente questo valore (ad " "esempio 0,9) per migliorare la qualità della superficie sopra i riempimenti " -"radi.\n" -"Il flusso effettivo utilizzato nei ponti interni viene calcolato " -"moltiplicando questo valore con il flusso di stampa dei ponti, flusso di " +"sparsi.\n" +"\n" +"Il flusso di stampa effettivo utilizzato per i ponti interni viene calcolato " +"moltiplicando questo valore con il flusso di stampa dei ponti, il flusso di " "stampa del filamento e, se impostato, con il flusso di stampa dell'oggetto." msgid "Top surface flow ratio" @@ -13077,13 +13341,13 @@ msgid "" "The actual top surface flow used is calculated by multiplying this value " "with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo valore influenza la quantità di materiale utilizzata per il " +"Questo fattore influenza la quantità di materiale utilizzata per il " "riempimento solido della superficie superiore. Puoi diminuirlo leggermente " "per avere una finitura liscia sulla superficie.\n" "\n" -"Il flusso di stampa effettivo utilizzato nelle superfici superiori viene " -"calcolato moltiplicando questo valore con il flusso di stampa del filamento " -"e, se impostato, con il flusso di stampa dell'oggetto." +"Il flusso di stampa effettivo per le superfici superiori viene calcolato " +"moltiplicando questo valore con il flusso di stampa del filamento e, se " +"impostato, con il flusso di stampa dell'oggetto." msgid "Bottom surface flow ratio" msgstr "Flusso di stampa superficie inferiore" @@ -13094,12 +13358,12 @@ msgid "" "The actual bottom solid infill flow used is calculated by multiplying this " "value with the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo valore influenza la quantità di materiale utilizzata per il " +"Questo fattore influenza la quantità di materiale utilizzata per il " "riempimento solido della superficie inferiore.\n" "\n" -"Il flusso di stampa effettivo utilizzato nelle superfici inferiori viene " -"calcolato moltiplicando questo valore con il flusso di stampa del filamento " -"e, se impostato, con il flusso di stampa dell'oggetto." +"Il flusso di stampa effettivo per le superfici inferiori viene calcolato " +"moltiplicando questo valore con il flusso di stampa del filamento e, se " +"impostato, con il flusso di stampa dell'oggetto." msgid "Set other flow ratios" msgstr "Imposta altri rapporti di flusso" @@ -13109,7 +13373,7 @@ msgstr "" "Modifica i rapporti di flusso per altri tipi di percorso di estrusione." msgid "First layer flow ratio" -msgstr "Rapporto di flusso primo strato" +msgstr "Flusso di stampa primo strato" msgid "" "This factor affects the amount of material on the first layer for the " @@ -13118,14 +13382,15 @@ msgid "" "For the first layer, the actual flow ratio for each path role (does not " "affect brims and skirts) will be multiplied by this value." msgstr "" -"Questo fattore influisce sulla quantità di materiale sul primo strato per i " -"ruoli del percorso di estrusione elencati in questa sezione.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata sul primo " +"strato per i ruoli del percorso di estrusione elencati in questa sezione.\n" "\n" -"Per il primo strato, il rapporto di flusso effettivo per ogni ruolo del " -"percorso (non influisce su tese e gonne) sarà moltiplicato per questo valore." +"Per il primo strato, il flusso di stampa effettivo per ogni ruolo del " +"percorso di estrusione (non influisce su tese e gonne) sarà moltiplicato per " +"questo valore." msgid "Outer wall flow ratio" -msgstr "Rapporto di flusso parete esterna" +msgstr "Flusso di stampa pareti esterne" msgid "" "This factor affects the amount of material for outer walls.\n" @@ -13133,14 +13398,15 @@ msgid "" "The actual outer wall flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per le pareti esterne.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"pareti esterne.\n" "\n" -"Il flusso effettivo della parete esterna viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le pareti esterne viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Inner wall flow ratio" -msgstr "Rapporto di flusso parete interna" +msgstr "Flusso di stampa pareti interne" msgid "" "This factor affects the amount of material for inner walls.\n" @@ -13148,14 +13414,15 @@ msgid "" "The actual inner wall flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per le pareti interne.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"pareti interne.\n" "\n" -"Il flusso effettivo della parete interna viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le pareti interne viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Overhang flow ratio" -msgstr "Rapporto di flusso per sbalzi" +msgstr "Flusso di stampa sporgenze" msgid "" "This factor affects the amount of material for overhangs.\n" @@ -13163,14 +13430,15 @@ msgid "" "The actual overhang flow used is calculated by multiplying this value by the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per gli sbalzi.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"sporgenze.\n" "\n" -"Il flusso effettivo degli sbalzi viene calcolato moltiplicando questo valore " -"per il rapporto di flusso del filamento e, se impostato, per il rapporto di " -"flusso dell'oggetto." +"Il flusso di stampa effettivo per le sporgenze viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto." msgid "Sparse infill flow ratio" -msgstr "Rapporto di flusso riempimento sparso" +msgstr "Flusso di stampa riempimento sparso" msgid "" "This factor affects the amount of material for sparse infill.\n" @@ -13178,15 +13446,15 @@ msgid "" "The actual sparse infill flow used is calculated by multiplying this value " "by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"sparso.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento sparso.\n" "\n" -"Il flusso effettivo del riempimento sparso viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento sparso viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Internal solid infill flow ratio" -msgstr "Rapporto di flusso riempimento solido interno" +msgstr "Flusso di stampa riempimento solido interno" msgid "" "This factor affects the amount of material for internal solid infill.\n" @@ -13194,15 +13462,15 @@ msgid "" "The actual internal solid infill flow used is calculated by multiplying this " "value by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"solido interno.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento solido interno.\n" "\n" -"Il flusso effettivo del riempimento solido interno viene calcolato " -"moltiplicando questo valore per il rapporto di flusso del filamento e, se " -"impostato, per il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento solido interno viene " +"calcolato moltiplicando questo valore per il flusso di stampa del filamento " +"e, se impostato, per il flusso di stampa dell'oggetto." msgid "Gap fill flow ratio" -msgstr "Rapporto di flusso riempimento spazi" +msgstr "Flusso di stampa riempimento spazi" msgid "" "This factor affects the amount of material for filling the gaps.\n" @@ -13210,15 +13478,15 @@ msgid "" "The actual gap filling flow used is calculated by multiplying this value by " "the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il riempimento " -"degli spazi.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per il " +"riempimento degli spazi vuoti.\n" "\n" -"Il flusso effettivo del riempimento spazi viene calcolato moltiplicando " -"questo valore per il rapporto di flusso del filamento e, se impostato, per " -"il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per il riempimento degli spazi vuoti viene " +"calcolato moltiplicando questo valore per il flusso di stampa del filamento " +"e, se impostato, per il flusso di stampa dell'oggetto." msgid "Support flow ratio" -msgstr "Rapporto di flusso supporto" +msgstr "Flusso di stampa supporti" msgid "" "This factor affects the amount of material for support.\n" @@ -13226,14 +13494,15 @@ msgid "" "The actual support flow used is calculated by multiplying this value by the " "filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per il supporto.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per i " +"supporti.\n" "\n" -"Il flusso effettivo del supporto viene calcolato moltiplicando questo valore " -"per il rapporto di flusso del filamento e, se impostato, per il rapporto di " -"flusso dell'oggetto." +"Il flusso di stampa effettivo per i supporti viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto." msgid "Support interface flow ratio" -msgstr "Rapporto di flusso interfaccia supporto" +msgstr "Flusso di stampa interfaccie supporti" msgid "" "This factor affects the amount of material for the support interface.\n" @@ -13241,12 +13510,12 @@ msgid "" "The actual support interface flow used is calculated by multiplying this " "value by the filament flow ratio, and if set, the object's flow ratio." msgstr "" -"Questo fattore influisce sulla quantità di materiale per l'interfaccia di " -"supporto.\n" +"Questo fattore influisce sulla quantità di materiale utilizzata per le " +"interfacce dei supporti.\n" "\n" -"Il flusso effettivo dell'interfaccia di supporto viene calcolato " -"moltiplicando questo valore per il rapporto di flusso del filamento e, se " -"impostato, per il rapporto di flusso dell'oggetto." +"Il flusso di stampa effettivo per le interfacce dei supporti viene calcolato " +"moltiplicando questo valore per il flusso di stampa del filamento e, se " +"impostato, per il flusso di stampa dell'oggetto." msgid "Precise wall" msgstr "Parete precisa" @@ -13391,7 +13660,7 @@ msgid "Sacrificial layer" msgstr "Strato sacrificale" msgid "Reverse threshold" -msgstr "Soglia inversa" +msgstr "Soglia di inversione" msgid "Overhang reversal threshold" msgstr "Soglia di inversione sporgenze" @@ -13518,7 +13787,7 @@ msgstr "" "più facile la rimozione della tesa." msgid "Brim flow ratio" -msgstr "" +msgstr "Flusso di stampa tese" msgid "" "This factor affects the amount of material for brims.\n" @@ -13528,9 +13797,17 @@ msgid "" "\n" "Note: The resulting value will not be affected by the first-layer flow ratio." msgstr "" +"Questo valore influisce sulla quantità di materiale utilizzata per le tese.\n" +"\n" +"Il flusso di stampa effettivo per le tese viene calcolato moltiplicando " +"questo valore per il flusso di stampa del filamento e, se impostato, per il " +"flusso di stampa dell'oggetto.\n" +"\n" +"Nota: il valore risultante non sarà influenzato dal flusso di stampa del " +"primo strato." msgid "Brim follows compensated outline" -msgstr "Tesa segue il contorno compensato" +msgstr "Tesa su contorno con compensazione" msgid "" "When enabled, the brim is aligned with the first-layer perimeter geometry " @@ -13541,21 +13818,24 @@ msgid "" "If your current setup already works well, enabling it may be unnecessary and " "can cause the brim to fuse with upper layers." msgstr "" -"Quando abilitato, tesa è allineato con la geometria perimetrale del primo " -"strato dopo l'applicazione della compensazione del piede di elefante.\n" -"Questa opzione è prevista per i casi in cui è prevista la compensazione del " -"piede di elefante altera significativamente l'impronta del primo strato.\n" +"Se abilitata, la tesa viene allineata con il perimetro del primo strato dopo " +"l'applicazione della Compensazione della zampa d'elefante.\n" +"Questa opzione è pensata per i casi in cui la compensazione della zampa di " +"elefante altera significativamente le dimensioni del primo strato.\n" "\n" -"Se la tua configurazione attuale funziona già bene, abilitarla potrebbe non " -"essere necessaria e può causare la fusione del tesa con gli strati superiori." +"Se la tua configurazione attuale funziona in modo ottimale, non è necessario " +"abilitare questa opzione, in quanto potrebbe causare la fusione della tesa " +"con gli strati superiori." msgid "Combine brims" -msgstr "" +msgstr "Unisci tese" msgid "" "Combine multiple brims into one when they are close to each other. This can " "improve brim adhesion." msgstr "" +"Unisce più tese in una quando sono vicine tra loro. Questo può migliorare " +"l'adesione delle tese." msgid "Brim ears" msgstr "Tesa ad orecchio" @@ -13688,14 +13968,18 @@ msgstr "" msgid "" "Enable this to override the fan speed set in custom G-code during print." msgstr "" +"Abilita questa opzione per sovrascrivere la velocità della ventola impostata " +"nel G-code personalizzato durante la stampa." msgid "On completion" -msgstr "" +msgstr "Al completamento" msgid "" "Enable this to override the fan speed set in custom G-code after print " "completion." msgstr "" +"Abilita questa opzione per sovrascrivere la velocità della ventola impostata " +"nel G-code personalizzato una volta terminata la stampa." msgid "" "Speed of exhaust fan during printing. This speed will override the speed in " @@ -13822,9 +14106,6 @@ msgstr "" "4. Applica a tutti: genera secondi strati di ponti sia per i ponti interni " "che esterni\n" -msgid "Disabled" -msgstr "Disabilitato" - msgid "External bridge only" msgstr "Solo ponti esterni" @@ -14130,6 +14411,13 @@ msgid "" "\n" "This option will be disabled if spiral vase mode is enabled." msgstr "" +"Direzione in cui vengono estrusi i perimetri di stampa, guardando dall'alto " +"verso il basso.\n" +"I fori vengono stampati nella direzione opposta ai perimetri, per mantenere " +"l'allineamento con gli strati i cui contorni sono incompleti e cambiano " +"direzione, formando parzialmente contorni di fori.\n" +"\n" +"Questa opzione verrà disabilitata se la modalità vaso a spirale è attiva." msgid "Counter clockwise" msgstr "Senso antiorario" @@ -14537,6 +14825,18 @@ msgstr "Automatico per spurgo" msgid "Auto For Match" msgstr "Automatico per abbinamento" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Temperatura di spurgo" @@ -14777,9 +15077,9 @@ msgid "" "this movement should be before the filament is retracted again." msgstr "" "Se impostato su un valore diverso da zero, il filamento viene spostato verso " -"l'ugello tra i singoli movimenti nei tubi di raffreddamento (\"timbratura" -"\"). Questa opzione configura la durata di questo movimento prima che il " -"filamento venga nuovamente retratto." +"l'ugello tra i singoli movimenti nei tubi di raffreddamento " +"(\"timbratura\"). Questa opzione configura la durata di questo movimento " +"prima che il filamento venga nuovamente retratto." msgid "Speed of the first cooling move" msgstr "Velocità del primo movimento di raffreddamento" @@ -14807,10 +15107,11 @@ msgstr "" "oggetti sacrificali o riempimenti." msgid "Wipe tower cooling" -msgstr "" +msgstr "Raffreddamento torre di spurgo" msgid "Temperature drop before entering filament tower" msgstr "" +"Calo di temperatura prima dell'ingresso nella torre di spurgo del filamento" msgid "Interface layer pre-extrusion distance" msgstr "Distanza di pre-estrusione dello strato di interfaccia" @@ -14880,7 +15181,7 @@ msgid "" "This string is edited by RammingDialog and contains ramming specific " "parameters." msgstr "" -"Questa stringa è stata modifcata da RammingDialog e contiene parametri " +"Questa stringa è stata modificata da RammingDialog e contiene parametri " "specifici per l'operazione di modellazione della punta del filamento." msgid "Enable ramming for multi-tool setups" @@ -15059,6 +15360,17 @@ msgstr "" "Utilizzo di linee multiple per il pattern di riempimento, se supportato dal " "pattern di riempimento." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Motivo riempimento sparso" @@ -15241,8 +15553,8 @@ msgid "mm/s² or %" msgstr "mm/s o %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Accelerazione del riempimento sparso. Se il valore è espresso in percentuale " "(ad esempio 100%), verrà calcolato in base all'accelerazione predefinita." @@ -15264,12 +15576,14 @@ msgstr "" "inferiore, è possibile migliorare l'adesione sul piano di stampa." msgid "First layer travel" -msgstr "" +msgstr "Spostamento primo strato" msgid "" "Travel acceleration of first layer.\n" "The percentage value is relative to Travel Acceleration." msgstr "" +"Accelerazione dello spostamento nel primo strato.\n" +"Il valore percentuale è relativo all'accelerazione dello spostamento." msgid "Enable accel_to_decel" msgstr "Abilita accel_to_decel" @@ -15323,6 +15637,8 @@ msgid "" "Travel jerk of first layer.\n" "The percentage value is relative to Travel Jerk." msgstr "" +"Scatto dello spostamento nel primo strato.\n" +"Il valore percentuale è relativo allo scatto dello spostamento." msgid "" "Line width of the first layer. If expressed as a %, it will be computed over " @@ -15379,21 +15695,21 @@ msgstr "" "Temperatura dell'ugello per la stampa del primo strato con questo filamento." msgid "Full fan speed at layer" -msgstr "Velocità massima della ventola su strato" +msgstr "Velocità massima ventola su strato" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà in modo lineare da zero nello strato " "\"close_fan_the_first_x_layers\" al massimo nello strato " "\"full_fan_speed_layer\". Se inferiore a \"close_fan_the_first_x_layers\", " "\"full_fan_speed_layer\" verrà ignorato. in tal caso la ventola funzionerà " -"alla massima velocità consentita nello strato \"close_fan_the_first_x_layers" -"\" + 1." +"alla massima velocità consentita nello strato " +"\"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "strato" @@ -15617,6 +15933,17 @@ msgid "" "Ripple: Uniform ripple pattern that ripples left and right of the original " "path. Repeating pattern, woven appearance." msgstr "" +"Tipo di rumore da utilizzare per la generazione della superficie ruvida:\n" +"Classico: rumore casuale uniforme classico.\n" +"Perlin: rumore Perlin, che conferisce una trama più uniforme.\n" +"Ondulato: Simile al rumore Perlin, ma più granuloso.\n" +"Multifrattale ruvido: rumore con superfici nette e frastagliate. Crea trame " +"simili al marmo.\n" +"Voronoi: divide la superficie in tassellazioni di Voronoi e ne sposta " +"ciascuna di una quantità casuale. Crea una trama a mosaico.\n" +"Increspature: Motivo con onde uniformi che si propagano a sinistra e a " +"destra del percorso originale. Motivo ripetuto, aspetto in stile tessuto " +"intrecciato." msgid "Classic" msgstr "Classico" @@ -15628,13 +15955,13 @@ msgid "Billow" msgstr "Ondulato" msgid "Ridged Multifractal" -msgstr "Multifrattale increspato" +msgstr "Multifrattale ruvido" msgid "Voronoi" msgstr "Voronoi" msgid "Ripple" -msgstr "" +msgstr "Increspature" msgid "Fuzzy skin feature size" msgstr "Dimensione struttura superficie ruvida" @@ -15667,13 +15994,15 @@ msgstr "" "daranno luogo a un rumore più uniforme." msgid "Number of ripples per layer" -msgstr "" +msgstr "Numero increspature per strato" msgid "Controls how many full cycles of ripples will be added per layer." msgstr "" +"Controlla quanti cicli completi di increspature verranno aggiunti per ogni " +"strato." msgid "Ripple offset" -msgstr "" +msgstr "Deviazione increspature" msgid "" "Shifts the ripple phase forward along the print path by the specified " @@ -15687,9 +16016,20 @@ msgid "" "The shift is applied once every number of layers set by Layers between " "ripple offset, so layers within the same group are printed identically." msgstr "" +"Sposta in avanti la fase dell'increspatura, lungo il percorso di stampa, " +"della percentuale specificata di lunghezza d'onda.\n" +"- 0% mantieni ogni strato identico.\n" +"- 50% sposta il motivo di mezza lunghezza d'onda, invertendo di fatto la " +"fase.\n" +"- 100% sposta il motivo di un'intera lunghezza d'onda, tornando alla fase " +"originale.\n" +"\n" +"Lo spostamento viene applicato una volta ogni numero di strati impostato " +"nell'opzione \"Strati deviazione increspature\", in modo che gli strati " +"all'interno dello stesso gruppo vengano stampati in modo identico." msgid "Layers between ripple offset" -msgstr "" +msgstr "Strati deviazione increspature" msgid "" "Specifies how many consecutive layers share the same ripple phase before the " @@ -15702,6 +16042,15 @@ msgid "" "to 6 are shifted by the configured offset, then layers 7 to 9 return to the " "base pattern, etc." msgstr "" +"Specifica quanti strati consecutivi condividono la stessa fase di " +"increspatura prima che venga applicata la deviazione.\n" +"Per esempio:\n" +"- 1 = lo strato 1 viene stampato con il motivo di increspatura di base, lo " +"strato 2 viene spostato in base alla deviazione configurata, lo strato 3 " +"ritorna al motivo di base e così via.\n" +"- 3 = Gli strati da 1 a 3 vengono stampati con il motivo di increspatura di " +"base, gli strati da 4 a 6 vengono spostati in base alla deviazione " +"configurata, gli strati da 7 a 9 ritornano al motivo di base e così via." msgid "Filter out tiny gaps" msgstr "Filtra piccoli spazi vuoti" @@ -15895,7 +16244,7 @@ msgid "Will only take into account the delay for the cooling of overhangs." msgstr "Terrà conto solo del ritardo per il raffreddamento delle sporgenze." msgid "Fan kick-start time" -msgstr "Tempo di avvio della ventola" +msgstr "Tempo avvio ventola" msgid "" "Emit a max fan speed command for this amount of seconds before reducing to " @@ -15912,6 +16261,30 @@ msgstr "" "fargli raggiungere la velocità necessaria più rapidamente.\n" "Impostare su 0 per disattivare." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Costo orario" @@ -16370,7 +16743,7 @@ msgid "Print speed of ironing lines." msgstr "Indica la velocità di stampa per le linee di stiratura." msgid "Ironing angle offset" -msgstr "Offset angolo di stiratura" +msgstr "Angolo di stiratura" msgid "The angle of ironing lines offset from the top surface." msgstr "L'angolo delle linee di stiratura rispetto alla superficie superiore." @@ -16382,42 +16755,53 @@ msgid "Use a fixed absolute angle for ironing." msgstr "Usa un angolo assoluto fisso per la stiratura." msgid "Ironing expansion" -msgstr "" +msgstr "Espansione stiratura" msgid "Expand or contract the ironing area." -msgstr "" +msgstr "Espande o riduce l'area di stiratura." msgid "Z contouring enabled" -msgstr "" +msgstr "Contornatura Z abilitata" msgid "Enable Z-layer contouring (aka Z-layer anti-aliasing)." msgstr "" +"Abilita la contornatura degli strati sull'asse Z (noto anche come anti-" +"aliasing dell'asse Z)." msgid "Minimize wall height angle" -msgstr "" +msgstr "Riduci altezza su pareti inclinate" msgid "" "Reduce the height of top-surface perimeters to match the model edge height.\n" "Affects perimeters with a slope less than this angle (degrees).\n" "A reasonable value is 35. Set to 0 to disable." msgstr "" +"Riduce l'altezza dei perimetri della superficie superiore in modo che si " +"adattino meglio al bordo del modello\n" +"Influisce sui perimetri con una pendenza inferiore a questo angolo (in " +"gradi).\n" +"Il valore consigliato è 35. Impostare a 0 per disabilitare questa funzione." msgid "°" msgstr "°" msgid "Don't alternate fill direction" -msgstr "" +msgstr "Non alternare direzione riempimento" msgid "Disable alternating fill direction when using Z contouring." msgstr "" +"Disabilita il riempimento a direzione alternata quando si utilizza l'opzione " +"\"Contornatura Z\"." msgid "Minimum z height" -msgstr "" +msgstr "Altezza Z minima" msgid "" "Minimum Z-layer height.\n" "Also controls the slicing plane." msgstr "" +"Altezza minima dello strato sull'asse Z.\n" +"Controlla anche il piano per l'elaborazione." msgid "This G-code is inserted at every layer change after the Z lift." msgstr "" @@ -16599,16 +16983,17 @@ msgstr "" "Marlin 2." msgid "Resonance avoidance" -msgstr "Evitamento della risonanza" +msgstr "Prevenzione risonanza" msgid "" "By reducing the speed of the outer wall to avoid the resonance zone of the " "printer, ringing on the surface of the model are avoided.\n" "Please turn this option off when testing ringing." msgstr "" -"Riducendo la velocità della parete esterna per evitare la zona di risonanza " -"della stampante, si evitano le ondulazioni sulla superficie del modello.\n" -"Disattivare questa opzione quando si testa il ringing." +"Riducendo la velocità nelle pareti esterne per evitare la zona di risonanza " +"della stampante, si evitano le ondulazioni o ronzii (ringing) sulla " +"superficie del modello.\n" +"Disattivare questa opzione quando si testa il ronzio ." msgid "Min" msgstr "Minimo" @@ -16623,12 +17008,14 @@ msgid "Maximum speed of resonance avoidance." msgstr "Velocità massima per l'evitamento della risonanza." msgid "Emit input shaping" -msgstr "" +msgstr "Sovrascrivi compensazione risonanza" msgid "" "Override firmware input shaping settings.\n" "If disabled, firmware settings are used." msgstr "" +"Sovrascrivi le impostazioni di compensazione della risonanza del firmware.\n" +"Se disabilitato, verranno utilizzate le impostazioni del firmware." msgid "Input shaper type" msgstr "Tipo di compensazione della risonanza" @@ -16638,42 +17025,44 @@ msgid "" "Default uses the firmware default settings.\n" "Disable turns off input shaping in the firmware." msgstr "" +"Seleziona l'algoritmo di compensazione della risonanza.\n" +"L'opzione \"Default\" utilizza le impostazioni predefinite del firmware." msgid "MZV" -msgstr "" +msgstr "MZV" msgid "ZV" -msgstr "" +msgstr "ZV" msgid "ZVD" -msgstr "" +msgstr "ZVD" msgid "ZVDD" -msgstr "" +msgstr "ZVDD" msgid "ZVDDD" -msgstr "" +msgstr "ZVDDD" msgid "EI" -msgstr "" +msgstr "EI" msgid "EI2" -msgstr "" +msgstr "EI2" msgid "2HUMP_EI" -msgstr "" +msgstr "2HUMP_EI" msgid "EI3" -msgstr "" +msgstr "EI3" msgid "3HUMP_EI" -msgstr "" +msgstr "3HUMP_EI" msgid "DAA" -msgstr "" +msgstr "DAA" msgid "X" -msgstr "" +msgstr "X" msgid "" "Resonant frequency for the X axis input shaper.\n" @@ -16681,15 +17070,26 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Frequenza di risonanza per la compensazione sull'asse X.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di frequenza del " +"firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\".\n" +"RRF: i valori X e Y sono uguali." msgid "Y" -msgstr "" +msgstr "Y" msgid "" "Resonant frequency for the Y axis input shaper.\n" "Zero will use the firmware frequency.\n" "To disable input shaping, use the Disable type." msgstr "" +"Frequenza di risonanza per la compensazione sull'asse Y.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di frequenza del " +"firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\"." msgid "" "Damping ratio for the X axis input shaper.\n" @@ -16697,12 +17097,23 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Rapporto di smorzamento per la compensazione della risonanza sull'asse X.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di rapporto di " +"smorzamento del firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\".\n" +"RRF: i valori X e Y sono uguali." msgid "" "Damping ratio for the Y axis input shaper.\n" "Zero will use the firmware damping ratio.\n" "To disable input shaping, use the Disable type." msgstr "" +"Rapporto di smorzamento per la compensazione della risonanza sull'asse Y.\n" +"Se impostato a zero, verranno utilizzate le impostazioni di rapporto di " +"smorzamento del firmware.\n" +"Per disabilitare la compensazione della risonanza, selezionare il tipo " +"\"Disabilita\"." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -16840,10 +17251,12 @@ msgstr "" "utilizzare questa funzione. Comando G-code: M106 P2 S(0-255)" msgid "For the first" -msgstr "" +msgstr "Per il primo" msgid "Set special auxiliary cooling fan for the first certain layers." msgstr "" +"Imposta la ventola di raffreddamento ausiliaria per i primi strati " +"specificati." msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" " @@ -16852,10 +17265,18 @@ msgid "" "in which case the fan will run at maximum allowed speed at layer \"For the " "first\" + 1." msgstr "" +"La velocità della ventola ausiliaria aumenterà linearmente da \"Per il " +"primo\" fino al valore massimo impostato su \"Velocità massima ventola su " +"strato\".\n" +"Il valore \"Velocità massima ventola su strato\" verrà ignorato se inferiore " +"a \"Per il primo\"; in tal caso, la ventola funzionerà alla velocità massima " +"consentita con il valore \"Per il primo\" + 1." msgid "" "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "" +"Velocità della ventola di raffreddamento ausiliaria, operativa solo per i " +"primi x strati." msgid "" "The lowest printable layer height for the extruder. Used to limit the " @@ -17094,12 +17515,15 @@ msgstr "" "OrcaSlicer leggendo le variabili di ambiente." msgid "Change extrusion role G-code (process)" -msgstr "" +msgstr "Modifica G-code ruolo di estrusione (processo)" msgid "" "This G-code is inserted when the extrusion role is changed. It runs after " "the machine and filament extrusion role G-code." msgstr "" +"Questo G-code viene inserito quando si effettua il cambio del ruolo di " +"estrusione. Viene eseguito dopo il G-code della macchina e del ruolo di " +"estrusione del filamento." msgid "Printer type" msgstr "Tipo stampante" @@ -17452,9 +17876,10 @@ msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." msgstr "" -"Applica le cuciture a sciarpa solo sui perimetri lisci, dove le cuciture " -"tradizionali non riescono a nascondere efficacemente quelle in " -"corrispondenza degli angoli vivi." +"Applica le cuciture a sciarpa solo sui perimetri lisci e curvi, dove le " +"cuciture tradizionali risulterebbero molto evidenti. Gli angoli netti " +"continueranno a utilizzare le cuciture normali per mantenere la precisione " +"dimensionale." msgid "Conditional angle threshold" msgstr "Soglia angolo condizionale" @@ -17522,52 +17947,55 @@ msgstr "" "cucitura a sciarpa." msgid "Scarf start height" -msgstr "Altezza iniziale sciarpa" +msgstr "Altezza iniziale cucitura a sciarpa" msgid "" "Start height of the scarf.\n" "This amount can be specified in millimeters or as a percentage of the " "current layer height. The default value for this parameter is 0." msgstr "" -"Altezza iniziale della sciarpa.\n" -"Questa quantità può essere specificata in millimetri o come percentuale " +"Altezza iniziale della cucitura a sciarpa.\n" +"Questo valore può essere specificato in millimetri o come percentuale " "dell'altezza dello strato corrente. Il valore predefinito per questo " "parametro è 0." msgid "Scarf around entire wall" -msgstr "Sciarpa attorno all'intera parete" +msgstr "Cucitura a sciarpa su intera parete" msgid "The scarf extends to the entire length of the wall." -msgstr "La sciarpa si estende per tutta la lunghezza della parete." +msgstr "" +"La cucitura a sciarpa si estende lungo tutto il perimetro della parete." msgid "Scarf length" -msgstr "Lunghezza sciarpa" +msgstr "Lunghezza cucitura a sciarpa" msgid "" "Length of the scarf. Setting this parameter to zero effectively disables the " "scarf." msgstr "" -"Lunghezza della sciarpa. Impostando questo parametro su zero, la sciarpa " -"viene effettivamente disabilitata." +"Lunghezza della cucitura a sciarpa. Impostando questo parametro su zero, la " +"cucitura a sciarpa viene disabilitata." msgid "Scarf steps" -msgstr "Incrementi sciarpa" +msgstr "Incrementi cucitura a sciarpa" msgid "Minimum number of segments of each scarf." -msgstr "Numero minimo di segmenti di ogni sciarpa." +msgstr "" +"Numero minimo di segmenti utilizzati per la creazione della sfumatura della " +"cucitura a sciarpa." msgid "Scarf joint for inner walls" msgstr "Cucitura a sciarpa per pareti interne" msgid "Use scarf joint for inner walls as well." -msgstr "Utilizzare la cucitura a sciarpa anche per le pareti interne." +msgstr "Utilizza la cucitura a sciarpa anche per le pareti interne." msgid "Role base wipe speed" msgstr "Velocità di spurgo basata su ruolo" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17944,7 +18372,7 @@ msgstr "" "l'azione di cambio filamento manuale." msgid "Wipe tower type" -msgstr "Tipo di torre di pulizia" +msgstr "Tipo di torre di spurgo" msgid "" "Choose the wipe tower implementation for multi-material prints. Type 1 is " @@ -17972,6 +18400,19 @@ msgstr "Spurga il filamento rimanente nella torre di spurgo." msgid "Enable filament ramming" msgstr "Abilita spinta del filamento" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Nessuno strato sparso (beta)" @@ -18107,10 +18548,11 @@ msgstr "" "sbalzi, ecc." msgid "Ignore small overhangs" -msgstr "Ignora sbalzi piccoli" +msgstr "Ignora piccole sporgenze" msgid "Ignore small overhangs that possibly don't require support." -msgstr "Ignora i piccoli sbalzi che potrebbero non richiedere supporto." +msgstr "" +"Ignora le piccole sporgenze che potrebbero non necessitare dei supporti." msgid "Top Z distance" msgstr "Distanza Z superiore" @@ -18330,15 +18772,18 @@ msgid "Threshold angle" msgstr "Angolo di soglia" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"I supporti verranno generati per gli sbalzi il cui angolo di inclinazione è inferiore alla soglia." -"Più piccolo è questo valore, più ripido sarà lo sbalzo che può essere stampato senza supporto.\n" -"Nota: se impostato su 0, i supporti normali useranno invece Soglia sovrapposizione, " -"mentre i supporti ad albero torneranno al valore predefinito di 30." +"I supporti verranno generati per le sporgenze il cui angolo di inclinazione " +"è inferiore a questa soglia. Più piccolo è questo valore, più ripide saranno " +"le sporgenze stampabili senza supporti.\n" +"Nota: se impostato a 0, i supporti normali useranno il valore specificato in " +"\"Soglia sovrapposizione\", mentre i supporti ad albero torneranno al valore " +"predefinito di 30." msgid "Threshold overlap" msgstr "Soglia sovrapposizione" @@ -18350,8 +18795,8 @@ msgid "" msgstr "" "Se l'angolo di soglia è zero, i supporti verranno generati per le sporgenze " "la cui sovrapposizione è al di sotto della soglia. Quanto più piccolo è " -"questo valore, tanto più ripida sarà la sporgenza che può essere stampata " -"senza supporto." +"questo valore, tanto più ripide saranno le sporgenze stampabili senza " +"supporti." msgid "Tree support branch angle" msgstr "Angolo rami supporti ad albero" @@ -18509,8 +18954,8 @@ msgstr "Attiva controllo della temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18598,12 +19043,14 @@ msgstr "" "Questo gcode viene inserito quando viene modificato il ruolo di estrusione." msgid "Change extrusion role G-code (filament)" -msgstr "" +msgstr "Modifica G-code ruolo di estrusione (filamento)" msgid "" "This G-code is inserted when the extrusion role is changed for the active " "filament." msgstr "" +"Questo G-code viene inserito quando si effettua il cambio del ruolo di " +"estrusione per il filamento attivo." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -19217,15 +19664,18 @@ msgstr "" "singola." msgid "Maximum wall resolution" -msgstr "" +msgstr "Risoluzione massima parete" msgid "" "This value determines the smallest wall line segment length in mm. The " "smaller you set this value, the more accurate and precise the walls will be." msgstr "" +"Questo valore determina la lunghezza minima del segmento di linea della " +"parete, in mm. Più piccolo è il valore impostato, più accurate e precise " +"saranno le pareti." msgid "Maximum wall deviation" -msgstr "" +msgstr "Deviazione massima parete" msgid "" "The maximum deviation allowed when reducing the resolution for the 'Maximum " @@ -19234,6 +19684,11 @@ msgid "" "'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' " "takes precedence." msgstr "" +"Deviazione massima consentita quando si riduce la risoluzione tramite " +"l'impostazione \"Risoluzione massima parete\". Se si aumenta questo valore, " +"la stampa sarà meno precisa, ma il G-Code sarà più contenuto. \"Deviazione " +"massima parete\" limita \"Risoluzione massima parete\", quindi in caso di " +"conflitto tra i due valori, \"Deviazione massima parete\" ha la precedenza." msgid "First layer minimum wall width" msgstr "Larghezza minima parete del primo strato" @@ -19536,11 +19991,11 @@ msgid "Debug level" msgstr "Livello di debug" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Imposta livello di debug. 0:fatale, 1:errore, 2:avviso, 3:info, 4:debug, 5:" -"traccia\n" +"Imposta livello di debug. 0:fatale, 1:errore, 2:avviso, 3:info, 4:debug, " +"5:traccia\n" msgid "Enable timelapse for print" msgstr "Abilita timelapse per la stampa" @@ -20023,7 +20478,7 @@ msgid "Generating infill toolpath" msgstr "Generazione percorso testina per riempimento" msgid "Z contouring" -msgstr "" +msgstr "Contornatura Z" msgid "Detect overhangs for auto-lift" msgstr "Rilevamento sporgenze per il sollevamento automatico" @@ -20104,13 +20559,13 @@ msgstr "Impossibile leggere il file fornito perché è vuoto" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere un'estensione .stl, ." -"obj o .amf(.xml)." +"Formato file sconosciuto: il file di input deve avere " +"un'estensione .stl, .obj o .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Formato file sconosciuto: il file di input deve avere un'estensione .3mf o ." -"zip.amf." +"Formato file sconosciuto: il file di input deve avere un'estensione .3mf " +"o .zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: impossibile analizzare" @@ -20660,6 +21115,11 @@ msgid "" "temperature range of the other filaments. Otherwise, nozzle clogging or " "printer damage may occur." msgstr "" +"Le temperature degli ugelli selezionate sono incompatibili. Per la stampa " +"multimateriale, la temperatura dell'ugello per ciascun filamento deve " +"rientrare nell'intervallo di temperatura consigliato per gli altri " +"filamenti. In caso contrario, potrebbero verificarsi ostruzioni degli ugelli " +"o danni alla stampante." msgid "Sync AMS and nozzle information" msgstr "Sincronizza informazioni AMS e ugello" @@ -21090,25 +21550,25 @@ msgid "NOTE: High values may cause Layer shift (>%s)" msgstr "NOTA: valori elevati possono causare spostamento degli strati (>%s)" msgid "Flow Ratio Calibration" -msgstr "" +msgstr "Calibrazione flusso di stampa" msgid "Calibration Test Type" -msgstr "" +msgstr "Tipo test calibrazione" msgid "Pass 1 (Coarse)" -msgstr "" +msgstr "Passaggio 1 (Impreciso)" msgid "Pass 2 (Fine)" -msgstr "" +msgstr "Passaggio 2 (Fine)" msgid "YOLO (Recommended)" msgstr "YOLO (Consigliato)" msgid "YOLO (Perfectionist)" -msgstr "" +msgstr "YOLO (Perfezionista)" msgid "Top Surface Pattern" -msgstr "" +msgstr "Motivo superficie superiore" msgid "Send G-code to printer host" msgstr "Invia G-code all'host di stampa" @@ -21378,12 +21838,12 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" -"Rinomineremo i profili come \"Produttore Tipo Seriale @stampante selezionata" -"\".\n" +"Rinomineremo i profili come \"Produttore Tipo Seriale @stampante " +"selezionata\".\n" "Per aggiungere il profilo per più stampanti, vai alla selezione della " "stampante" @@ -21505,7 +21965,7 @@ msgstr "" "Il nome del profilo della stampante che hai creato esiste già. Vuoi " "sovrascriverlo?\n" "\tSì: Sovrascrivi il profilo della stampante con lo stesso nome, e i profili " -"del filamento e del processo con lo stesso nome saranno ricreati,\n" +"di filamento e di processo con lo stesso nome saranno ricreati,\n" "mentre gli altri saranno conservati.\n" "\tAnnulla: Non creare un profilo, torna alla pagina di creazione." @@ -21571,6 +22031,18 @@ msgstr "" "Il profilo di sistema non consente la creazione.\n" "Reinserire il modello della stampante o il diametro dell'ugello." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Creazione stampante riuscita" @@ -21626,7 +22098,7 @@ msgid "Printer presets(.zip)" msgstr "Profili stampante (.zip)" msgid "Filament presets(.zip)" -msgstr "Profili filamento (.zip)" +msgstr "Profili di filamento (.zip)" msgid "Process presets(.zip)" msgstr "Profili di processo (.zip)" @@ -21822,36 +22294,6 @@ msgstr "" "stampante.\n" "Fare clic sul pulsante Sincronizza sopra e riavviare la calibrazione." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "dimensione ugello nel profilo: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "dimensione ugello memorizzata: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"La dimensione del tipo di ugello nel profilo non è coerente con l'ugello " -"memorizzato. Hai cambiato l'ugello di recente?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "ugello[%d] nel profilo: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "ugello[%d] memorizzato: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Il tipo di ugello nel profilo non è coerente con l'ugello memorizzato. Hai " -"cambiato l'ugello di recente?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -22738,7 +23180,7 @@ msgid "Global settings" msgstr "Impostazioni globali" msgid "Video tutorial" -msgstr "" +msgstr "Video tutorial" msgid "(Sync with printer)" msgstr "(Sincronizza con stampante)" @@ -22811,26 +23253,17 @@ msgstr "Angolo massimo" msgid "Detection radius" msgstr "Raggio di rilevamento" -msgid "Remove selected points" -msgstr "Rimuovi punti selezionati" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Rimuovi tutto" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Genera punti automaticamente" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Aggiungi tesa ad orecchio" - -msgid "Delete a brim ear" -msgstr "Rimuovi tesa ad orecchio" - -msgid "Adjust head diameter" -msgstr "Regola diametro testa" - -msgid "Adjust section view" -msgstr "Regola la vista della sezione" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22842,8 +23275,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Imposta il tipo di tesa di questo oggetto su \"dipinta\"" -msgid " invalid brim ears" -msgstr " tese ad orecchio non valide" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Tese ad orecchio" @@ -23017,7 +23450,7 @@ msgid "" "Generic filament presets will be used." msgstr "" "Il filamento potrebbe non essere compatibile con le impostazioni correnti " -"della macchina. Verranno utilizzati i profili filamento generici." +"della macchina. Verranno utilizzati i profili di filamento generici." msgid "" "The filament model is unknown. Still using the previous filament preset." @@ -23027,7 +23460,7 @@ msgstr "" msgid "The filament model is unknown. Generic filament presets will be used." msgstr "" -"Il modello di filamento è sconosciuto. Verranno utilizzati i profili " +"Il modello di filamento è sconosciuto. Verranno utilizzati i profili di " "filamento generici." msgid "" @@ -23129,15 +23562,13 @@ msgstr "" "Sapevi che OrcaSlicer offre un'ampia gamma di scorciatoie da tastiera e " "operazioni di scena 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Inverti su strati dispari\n" -"Sapevi che la funzione Inverti su strati dispari può migliorare " -"significativamente la qualità delle superfici delle tue sporgenze?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23432,6 +23863,85 @@ msgstr "" "aumentare in modo appropriato la temperatura del piano riscaldato può " "ridurre la probabilità di deformazione?" +#~ msgid "Erase all painting" +#~ msgstr "Cancella tutto" + +#~ msgid "Reset cut" +#~ msgstr "Ripristina taglio" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Scambia i pulsanti del mouse per ruotare e spostare" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Se abilitato, inverte le funzioni di panoramica e rotazione dei pulsanti " +#~ "sinistro e destro del mouse." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "dimensione ugello nel profilo: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "dimensione ugello memorizzata: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "La dimensione del tipo di ugello nel profilo non è coerente con l'ugello " +#~ "memorizzato. Hai cambiato l'ugello di recente?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "ugello[%d] nel profilo: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "ugello[%d] memorizzato: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Il tipo di ugello nel profilo non è coerente con l'ugello memorizzato. " +#~ "Hai cambiato l'ugello di recente?" + +#~ msgid "Remove selected points" +#~ msgstr "Rimuovi punti selezionati" + +#~ msgid "Remove all" +#~ msgstr "Rimuovi tutto" + +#~ msgid "Auto-generate points" +#~ msgstr "Genera punti automaticamente" + +#~ msgid "Add a brim ear" +#~ msgstr "Aggiungi tesa ad orecchio" + +#~ msgid "Delete a brim ear" +#~ msgstr "Rimuovi tesa ad orecchio" + +#~ msgid "Adjust head diameter" +#~ msgstr "Regola diametro testa" + +#~ msgid "Adjust section view" +#~ msgstr "Regola la vista della sezione" + +#~ msgid " invalid brim ears" +#~ msgstr " tese ad orecchio non valide" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Inverti su strati dispari\n" +#~ "Sapevi che la funzione Inverti su strati dispari può migliorare " +#~ "significativamente la qualità delle superfici delle tue sporgenze?" + #~ msgid "Pen size" #~ msgstr "Dimensione penna" @@ -24504,9 +25014,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Imposta posizione" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" @@ -25201,9 +25708,10 @@ msgstr "" #~ "\n" #~ "\n" #~ "Per impostazione predefinita, i piccoli bridge interni vengono filtrati e " -#~ "il riempimento solido interno viene stampato direttamente sul riempimento." -#~ "Questo metodo funziona bene nella maggior parte dei casi, velocizzando la " -#~ "stampa senza compromettere troppo la qualità della superficie superiore.\n" +#~ "il riempimento solido interno viene stampato direttamente sul " +#~ "riempimento.Questo metodo funziona bene nella maggior parte dei casi, " +#~ "velocizzando la stampa senza compromettere troppo la qualità della " +#~ "superficie superiore.\n" #~ "\n" #~ "Tuttavia, in modelli fortemente inclinati o curvi, soprattutto se si " #~ "utilizza una densità di riempimento troppo bassa, potrebbe comportare " @@ -25417,12 +25925,13 @@ msgstr "" #~ "nostro wiki.\n" #~ "\n" #~ "Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso" -#~ "\" selezionata nel menu di avvio della stampa, la stampante seguirà il " -#~ "vecchio modo, calibrando il filamento prima della stampa; Quando si avvia " -#~ "una stampa multicolore/materiale, la stampante utilizzerà il parametro di " -#~ "compensazione predefinito per il filamento durante ogni cambio di " -#~ "filamento, che avrà un buon risultato nella maggior parte dei casi.\n" +#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del " +#~ "flusso\" selezionata nel menu di avvio della stampa, la stampante seguirà " +#~ "il vecchio modo, calibrando il filamento prima della stampa; Quando si " +#~ "avvia una stampa multicolore/materiale, la stampante utilizzerà il " +#~ "parametro di compensazione predefinito per il filamento durante ogni " +#~ "cambio di filamento, che avrà un buon risultato nella maggior parte dei " +#~ "casi.\n" #~ "\n" #~ "Si prega di notare che ci sono alcuni casi che renderanno il risultato " #~ "della calibrazione non affidabile: utilizzo di una piastra di texture per " diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 1229f7d176..a7ea831179 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -120,8 +120,8 @@ msgstr "適用" msgid "On highlighted overhangs only" msgstr "強調表示されたオーバーハングのみ" -msgid "Erase all painting" -msgstr "全てを消去" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "オーバーハングをハイライト" @@ -190,6 +190,9 @@ msgstr "オーバーハングの角度によりハイライト" msgid "No auto support" msgstr "自動サポート無し" +msgid "Done" +msgstr "完了" + msgid "Support Generated" msgstr "生成されたサポート" @@ -342,6 +345,12 @@ msgstr "パーツ選択" msgid "Fixed step drag" msgstr "固定ステップドラッグ" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "片側スケーリング" @@ -490,6 +499,18 @@ msgstr "カットポジション" msgid "Build Volume" msgstr "ビルドボリューム" +msgid "Multiple" +msgstr "複数" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "間隔" + msgid "Part" msgstr "パーツ" @@ -597,12 +618,6 @@ msgstr "コネクタを編集" msgid "Add connectors" msgstr "コネクタを追加" -msgid "Reset cut" -msgstr "カットをリセット" - -msgid "Reset cutting plane and remove connectors" -msgstr "カット面をリセットし、コネクターを削除" - msgid "Upper part" msgstr "上部パーツ" @@ -621,6 +636,9 @@ msgstr "カット後" msgid "Cut to parts" msgstr "パーツに割り切る" +msgid "Reset cutting plane and remove connectors" +msgstr "カット面をリセットし、コネクターを削除" + msgid "Perform cut" msgstr "カットを実行" @@ -849,6 +867,9 @@ msgstr "デフォルトフォント" msgid "Advanced" msgstr "高度な設定" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1502,15 +1523,6 @@ msgstr "" "フィーチャー1がリセットされました。\n" "フィーチャー2がフィーチャー1になりました" -msgid "Warning: please select Plane's feature." -msgstr "警告: 平面フィーチャーを選択してください。" - -msgid "Warning: please select Point's or Circle's feature." -msgstr "警告: 点または円のフィーチャーを選択してください。" - -msgid "Warning: please select two different meshes." -msgstr "警告: 2つの異なるメッシュを選択してください。" - msgid "Copy to clipboard" msgstr "コピー" @@ -1563,6 +1575,15 @@ msgstr "(移動中)" msgid "Point and point assembly" msgstr "点と点の組み立て" +msgid "Warning: please select two different meshes." +msgstr "警告: 2つの異なるメッシュを選択してください。" + +msgid "Warning: please select Plane's feature." +msgstr "警告: 平面フィーチャーを選択してください。" + +msgid "Warning: please select Point's or Circle's feature." +msgstr "警告: 点または円のフィーチャーを選択してください。" + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1751,6 +1772,18 @@ msgstr "最新バージョンです。" msgid "Info" msgstr "情報" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1813,6 +1846,23 @@ msgstr "" "現在のOrca Slicerはバージョンが古いため使用できません、アップデートしてくださ" "い。" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "プリンター情報を取得中です。後でもう一度お試しください。" @@ -2367,12 +2417,12 @@ msgstr "オブジェクトの向きを自動的に調整する" msgid "Edit" msgstr "編集" -msgid "Delete this filament" -msgstr "このフィラメントを削除" - msgid "Merge with" msgstr "結合" +msgid "Delete this filament" +msgstr "このフィラメントを削除" + msgid "Select All" msgstr "全てを選択" @@ -4647,9 +4697,6 @@ msgstr "乾燥を停止" msgid "Proceed" msgstr "続行" -msgid "Done" -msgstr "完了" - msgid "Retry" msgstr "再試行" @@ -4909,33 +4956,6 @@ msgstr "サポート変換層" msgid "Mixed" msgstr "混合" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "フロー率" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "回転速度" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "時間" - -msgid "Actual speed profile" -msgstr "実際の速度プロファイル" - -msgid "Speed: " -msgstr "速度" - msgid "Height: " msgstr "高度" @@ -4969,6 +4989,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "フロー率" + +msgid "Fan speed" +msgstr "回転速度" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "時間" + +msgid "Speed: " +msgstr "速度" + +msgid "Actual speed profile" +msgstr "実際の速度プロファイル" + msgid "Statistics of All Plates" msgstr "全プレートの統計" @@ -5304,9 +5351,6 @@ msgstr "向き調整" msgid "Arrange options" msgstr "レイアウト設定" -msgid "Spacing" -msgstr "間隔" - msgid "0 means auto spacing." msgstr "0は自動間隔です。" @@ -5441,7 +5485,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5839,6 +5883,15 @@ msgstr "現在の構成をエクスポート" msgid "Export" msgstr "エクスポート" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "終了" @@ -5966,6 +6019,9 @@ msgstr "表示" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "ヘルプ" @@ -8528,21 +8584,33 @@ msgstr "" "チェックすると、フリーカメラが使用されます。 そうでない場合は、拘束カメラを使" "用します。" -msgid "Swap pan and rotate mouse buttons" -msgstr "パンと回転のマウスボタンを入れ替える" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"有効にすると、マウスの左ボタンと右ボタンのパン機能と回転機能が入れ替わりま" -"す。" - msgid "Reverse mouse zoom" msgstr "マウスの逆ズーム" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "有効にすると、マウス ホイールによるズームの方向が反転します。" +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "選択をクリア..." @@ -8565,6 +8633,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "ファイルロード後のプリンタープリセット同期の選択をクリアします。" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "無効" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "地域" @@ -8724,6 +8845,15 @@ msgstr "開発者モード" msgid "Skip AMS blacklist check" msgstr "AMSブラックリストチェックをスキップ" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "異常なストレージを許可" @@ -9809,8 +9939,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -10422,6 +10552,32 @@ msgstr "保存しない" msgid "Discard" msgstr "破棄" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "マウスを右クリックして全文を表示します" @@ -10976,6 +11132,9 @@ msgstr "ここをクリックしてダウンロードしてください。" msgid "Login" msgstr "サインイン" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "【対応が必要】 " @@ -11012,6 +11171,18 @@ msgstr "ショートカット一覧を表示" msgid "Global shortcuts" msgstr "ショートカット" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11486,9 +11657,6 @@ msgstr " に配置できません " msgid "Internal Bridge" msgstr "内部ブリッジ" -msgid "Multiple" -msgstr "複数" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "線幅 %1% を算出できませんでした。%2%の値を取得できません。" @@ -12990,9 +13158,6 @@ msgid "" "external-facing bridges\n" msgstr "" -msgid "Disabled" -msgstr "無効" - msgid "External bridge only" msgstr "外部ブリッジのみ" @@ -13505,6 +13670,18 @@ msgstr "フラッシュ用自動" msgid "Auto For Match" msgstr "マッチ用自動" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "フラッシュ温度" @@ -13937,6 +14114,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "充填パターン" @@ -14089,8 +14277,8 @@ msgid "mm/s² or %" msgstr "mm/s² 或は %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" msgid "" @@ -14210,10 +14398,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -14622,6 +14810,30 @@ msgid "" "Set to 0 to deactivate." msgstr "" +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "" @@ -14894,8 +15106,8 @@ msgid "" "\"mmu_segmented_region_interlocking_depth\" is bigger than " "\"mmu_segmented_region_max_width\". Zero disables this feature." msgstr "" -"セグメント化された領域の連動深さ。mmu_segmented_region_max_width \"が0" -"か、\"mmu_segmented_region_interlocking_depth \"が " +"セグメント化された領域の連動深さ。mmu_segmented_region_max_width \"が0か、" +"\"mmu_segmented_region_interlocking_depth \"が " "\"mmu_segmented_region_max_width \"より大きい場合は無視される。ゼロはこの機能" "を無効にする。" @@ -16002,8 +16214,8 @@ msgid "Role base wipe speed" msgstr "" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -16309,6 +16521,19 @@ msgstr "" msgid "Enable filament ramming" msgstr "フィラメントラミングを有効にする" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "" @@ -16618,15 +16843,16 @@ msgid "Threshold angle" msgstr "閾値角度" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"オーバーハングの角度がこの閾値以下になる場合、サポートを生成します" -"この値が小さいほど、サポートなしで印刷できるオーバーハングの急勾配になります。\n" -"注: 0 に設定すると、通常のサポートは代わりに閾値オーバーラップを使用しますが、" -"ツリーサポートはデフォルト値の 30 に戻ります。" +"オーバーハングの角度がこの閾値以下になる場合、サポートを生成しますこの値が小" +"さいほど、サポートなしで印刷できるオーバーハングの急勾配になります。\n" +"注: 0 に設定すると、通常のサポートは代わりに閾値オーバーラップを使用します" +"が、ツリーサポートはデフォルト値の 30 に戻ります。" msgid "Threshold overlap" msgstr "閾値の重複" @@ -16637,8 +16863,8 @@ msgid "" "overhang that can be printed without support." msgstr "" "しきい値角度がゼロの場合、オーバーラップがしきい値を下回るオーバーハングに対" -"してサポートが生成されます。この値が小さいほど、サポートなしで印刷できるオ" -"ーバーハングの角度が急になります。" +"してサポートが生成されます。この値が小さいほど、サポートなしで印刷できるオー" +"バーハングの角度が急になります。" msgid "Tree support branch angle" msgstr "ツリーサポート枝アングル" @@ -16775,8 +17001,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -17610,11 +17836,11 @@ msgid "Debug level" msgstr "デバッグ レベル" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"デバッグロギングレベルを設定します。0:fatal、1:error、2:warning、3:info、4:" -"debug、5:trace。\n" +"デバッグロギングレベルを設定します。0:fatal、1:error、2:warning、3:info、" +"4:debug、5:trace。\n" msgid "Enable timelapse for print" msgstr "" @@ -19222,8 +19448,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" @@ -19379,6 +19605,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "プリンターが正常に作成されました" @@ -19589,32 +19827,6 @@ msgstr "" "ノズルタイプが実際のプリンターのノズルタイプと一致しません。\n" "上部の同期ボタンをクリックしてキャリブレーションを再開してください。" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "プリセットのノズルサイズ: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "記憶されたノズルサイズ: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "プリセットのノズル[%d]: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "記憶されたノズル[%d]: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "%1s材料を%2sノズルで印刷するとノズルが損傷する可能性があります。" @@ -20371,26 +20583,17 @@ msgstr "最大角度" msgid "Detection radius" msgstr "検知半径" -msgid "Remove selected points" -msgstr "選択したポイントを削除" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "全て削除" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "自動ポイント生成" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "ブリムを追加" - -msgid "Delete a brim ear" -msgstr "ブリムを削除" - -msgid "Adjust head diameter" -msgstr "ヘッド径を調整" - -msgid "Adjust section view" -msgstr "断面を調整" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -20401,8 +20604,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "このオブジェクトのブリムタイプを「ペイント」に設定" -msgid " invalid brim ears" -msgstr "不適切なブリム" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "ブリム" @@ -20668,11 +20871,12 @@ msgid "" "3D scene operations?" msgstr "" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" #: resources/data/hints.ini: [hint:Cut Tool] @@ -20926,6 +21130,62 @@ msgstr "" "ABSのような反りやすい素材を印刷する場合、ヒートベッドの温度を適切に上げること" "で、反りが発生する確率を下げることができることをご存知ですか?" +#~ msgid "Erase all painting" +#~ msgstr "全てを消去" + +#~ msgid "Reset cut" +#~ msgstr "カットをリセット" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "パンと回転のマウスボタンを入れ替える" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "有効にすると、マウスの左ボタンと右ボタンのパン機能と回転機能が入れ替わりま" +#~ "す。" + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "プリセットのノズルサイズ: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "記憶されたノズルサイズ: %d" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "プリセットのノズル[%d]: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "記憶されたノズル[%d]: %.1f" + +#~ msgid "Remove selected points" +#~ msgstr "選択したポイントを削除" + +#~ msgid "Remove all" +#~ msgstr "全て削除" + +#~ msgid "Auto-generate points" +#~ msgstr "自動ポイント生成" + +#~ msgid "Add a brim ear" +#~ msgstr "ブリムを追加" + +#~ msgid "Delete a brim ear" +#~ msgstr "ブリムを削除" + +#~ msgid "Adjust head diameter" +#~ msgstr "ヘッド径を調整" + +#~ msgid "Adjust section view" +#~ msgstr "断面を調整" + +#~ msgid " invalid brim ears" +#~ msgstr "不適切なブリム" + #~ msgid "Pen size" #~ msgstr "ペンサイズ" @@ -21529,9 +21789,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "位置を設定" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index 01764f679a..e536c9e4f9 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-06-02 17:12+0900\n" "Last-Translator: crwusiz \n" "Language-Team: \n" @@ -122,8 +122,8 @@ msgstr "수행" msgid "On highlighted overhangs only" msgstr "강조된 오버행에만 칠하기" -msgid "Erase all painting" -msgstr "모든 페인팅 삭제" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "오버행 영역 강조" @@ -192,6 +192,9 @@ msgstr "오버행 각도에 따라 면을 강조 표시합니다." msgid "No auto support" msgstr "자동 서포트 비활성" +msgid "Done" +msgstr "완료" + msgid "Support Generated" msgstr "서포트 생성됨" @@ -344,6 +347,12 @@ msgstr "파트 선택" msgid "Fixed step drag" msgstr "고정 단계 드래그" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "단면 스케일링" @@ -492,6 +501,18 @@ msgstr "자르기 위치" msgid "Build Volume" msgstr "빌드 볼륨" +msgid "Multiple" +msgstr "다수" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "간격" + msgid "Part" msgstr "부품" @@ -599,12 +620,6 @@ msgstr "커넥터 편집" msgid "Add connectors" msgstr "커넥터 추가" -msgid "Reset cut" -msgstr "컷 재설정" - -msgid "Reset cutting plane and remove connectors" -msgstr "절단면 재설정 및 커넥터 제거" - msgid "Upper part" msgstr "상부 부품" @@ -623,6 +638,9 @@ msgstr "잘라내기 후" msgid "Cut to parts" msgstr "부품으로 자르기" +msgid "Reset cutting plane and remove connectors" +msgstr "절단면 재설정 및 커넥터 제거" + msgid "Perform cut" msgstr "잘라내기 실행" @@ -852,6 +870,9 @@ msgstr "기본 글꼴" msgid "Advanced" msgstr "고급" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1498,15 +1519,6 @@ msgstr "" "기능 1이 재설정되었습니다.\n" "기능 2는 기능 1이 되었습니다" -msgid "Warning: please select Plane's feature." -msgstr "경고: 평면의 기능을 선택하세요." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "경고: 점 또는 원의 특징을 선택하십시오." - -msgid "Warning: please select two different meshes." -msgstr "경고: 서로 다른 두 개의 메시를 선택하십시오." - msgid "Copy to clipboard" msgstr "클립보드로 복사" @@ -1558,6 +1570,15 @@ msgstr "(이동 중)" msgid "Point and point assembly" msgstr "점과 점 조립" +msgid "Warning: please select two different meshes." +msgstr "경고: 서로 다른 두 개의 메시를 선택하십시오." + +msgid "Warning: please select Plane's feature." +msgstr "경고: 평면의 기능을 선택하세요." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "경고: 점 또는 원의 특징을 선택하십시오." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1747,6 +1768,18 @@ msgstr "최신 버전입니다." msgid "Info" msgstr "정보" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1810,6 +1843,23 @@ msgstr "" "Orca Slicer의 버전이 너무 낮아 최신 버전으로 업데이트해야 정상적으로 사용 가" "능합니다" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "프린터 정보를 가져오는 중입니다. 나중에 다시 시도하세요." @@ -2364,12 +2414,12 @@ msgstr "객체의 방향을 자동으로 지정하여 출력 품질을 향상시 msgid "Edit" msgstr "편집" -msgid "Delete this filament" -msgstr "이 필라멘트 삭제" - msgid "Merge with" msgstr "병합" +msgid "Delete this filament" +msgstr "이 필라멘트 삭제" + msgid "Select All" msgstr "모두 선택" @@ -4612,9 +4662,6 @@ msgstr "건조 중지" msgid "Proceed" msgstr "진행" -msgid "Done" -msgstr "완료" - msgid "Retry" msgstr "재시도" @@ -4876,33 +4923,6 @@ msgstr "서포트 전환" msgid "Mixed" msgstr "혼합" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "압출량" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "팬 속도" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "시간" - -msgid "Actual speed profile" -msgstr "실제 속도 프로파일" - -msgid "Speed: " -msgstr "속도: " - msgid "Height: " msgstr "높이: " @@ -4936,6 +4956,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "압출량" + +msgid "Fan speed" +msgstr "팬 속도" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "시간" + +msgid "Speed: " +msgstr "속도: " + +msgid "Actual speed profile" +msgstr "실제 속도 프로파일" + msgid "Statistics of All Plates" msgstr "모든 플레이트 통계" @@ -5259,9 +5306,6 @@ msgstr "방향" msgid "Arrange options" msgstr "정렬 옵션" -msgid "Spacing" -msgstr "간격" - msgid "0 means auto spacing." msgstr "0은 자동 간격을 의미합니다." @@ -5396,7 +5440,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5793,6 +5837,15 @@ msgstr "현재 설정을 파일로 내보내기" msgid "Export" msgstr "내보내기" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "종료" @@ -5919,6 +5972,9 @@ msgstr "시점" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "도움말" @@ -6269,8 +6325,8 @@ msgid "" "The .gcode.3mf file contains no G-code data. Please slice it with Orca " "Slicer and export a new .gcode.3mf file." msgstr "" -".gcode.3mf 파일에는 Gcode 데이터가 없습니다. OrcaSlicer에서 슬라이스하고 새 ." -"gcode.3mf 파일을 내보내십시오." +".gcode.3mf 파일에는 Gcode 데이터가 없습니다. OrcaSlicer에서 슬라이스하고 " +"새 .gcode.3mf 파일을 내보내십시오." #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -8411,21 +8467,33 @@ msgstr "" "활성화된 경우 자유로운 카메라 앵글을 사용합니다. 활성화되지 않은 경우 제한된 " "카메라 앵글을 사용합니다." -msgid "Swap pan and rotate mouse buttons" -msgstr "팬 및 회전 마우스 버튼 바꾸기" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"이 기능을 활성화하면 왼쪽 마우스 버튼과 오른쪽 마우스 버튼의 팬 및 회전 기능" -"이 바뀝니다." - msgid "Reverse mouse zoom" msgstr "역방향 마우스 줌" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "활성화되면 마우스 휠을 사용하여 확대/축소 방향을 반대로 바꿉니다." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -8448,6 +8516,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "비활성" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "로그인 지역" @@ -8598,6 +8719,15 @@ msgstr "개발자 모드" msgid "Skip AMS blacklist check" msgstr "AMS 블랙리스트 확인 건너뛰기" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "" @@ -9610,8 +9740,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "툴헤드 없이 시간 경과를 기록할 경우 \"타임랩스 프라임 타워\"를 추가하는 것이 " "좋습니다\n" @@ -10219,6 +10349,32 @@ msgstr "저장하지 않음" msgid "Discard" msgstr "폐기" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "마우스 오른쪽 버튼을 클릭하여 전체 텍스트를 표시합니다." @@ -10765,6 +10921,9 @@ msgstr "다운로드하려면 여기를 클릭하세요." msgid "Login" msgstr "로그인" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "" @@ -10801,6 +10960,18 @@ msgstr "키보드 단축키 목록 보기" msgid "Global shortcuts" msgstr "전역 단축키" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11275,9 +11446,6 @@ msgstr "" msgid "Internal Bridge" msgstr "내부 브릿지" -msgid "Multiple" -msgstr "다수" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -11850,9 +12018,9 @@ msgid "" msgstr "" "Orca Slicer은 Gcode 파일을 프린터 호스트에 업로드할 수 있습니다. 이 필드에는 " "프린터 호스트 인스턴스의 호스트 이름, IP 주소 또는 URL이 포함되어야 합니다. " -"기본 인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://username:" -"password@your-octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력하여 액세" -"스할 수 있습니다" +"기본 인증이 활성화된 HAProxy 뒤의 출력 호스트는 https://" +"username:password@your-octopi-address/ 형식의 URL에 사용자 이름과 암호를 입력" +"하여 액세스할 수 있습니다" msgid "Device UI" msgstr "장치 UI" @@ -12941,9 +13109,6 @@ msgstr "" "4. 모두 적용 - 내부 및 외부를 향한 브릿지 모두에 대한 두 번째 브릿지 레이어" "를 생성합니다.\n" -msgid "Disabled" -msgstr "비활성" - msgid "External bridge only" msgstr "외부 브릿지 전용" @@ -13590,6 +13755,18 @@ msgstr "" msgid "Auto For Match" msgstr "" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "" @@ -14044,6 +14221,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "드문 채우기 패턴" @@ -14214,8 +14402,8 @@ msgid "mm/s² or %" msgstr "mm/s² 또는 %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "드문 채우기 가속도. 값이 백분율 (예. 100%)로 표시되면 기본 가속도를 기준으로 " "계산됩니다." @@ -14344,10 +14532,10 @@ msgstr "팬 최대 속도 레이어" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "팬 속도는 \"close_fan_the_first_x_layers\" 의 0에서 \"full_fan_speed_layer\" " "의 최고 속도까지 선형적으로 증가합니다. \"full_fan_speed_layer\"가 " @@ -14806,6 +14994,30 @@ msgstr "" "를 빠르게 향상시키기에 부족할 수 있는 팬에게 유용합니다.\n" "비활성화하려면 0으로 설정합니다." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "시간비용" @@ -16313,8 +16525,8 @@ msgid "Role base wipe speed" msgstr "역할 기반 노즐 청소 속도" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -16677,6 +16889,19 @@ msgstr "남은 필라멘트를 프라임 타워에서 제거" msgid "Enable filament ramming" msgstr "" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "희소 레이어 없음(베타)" @@ -17001,15 +17226,16 @@ msgid "Threshold angle" msgstr "임계값 각도" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"기울기 각도가 임계값보다 작은 오버행에 대해 서포트가 생성됩니다." -"이 값이 작을수록 서포트 없이 출력할 수 있는 오버행이 더 가파릅니다.\n" -"참고: 0으로 설정하면 일반 서포트는 대신 임계값 중복을 사용하고, " -"트리 서포트는 기본값 30으로 돌아갑니다." +"기울기 각도가 임계값보다 작은 오버행에 대해 서포트가 생성됩니다.이 값이 작을" +"수록 서포트 없이 출력할 수 있는 오버행이 더 가파릅니다.\n" +"참고: 0으로 설정하면 일반 서포트는 대신 임계값 중복을 사용하고, 트리 서포트" +"는 기본값 30으로 돌아갑니다." msgid "Threshold overlap" msgstr "임계값 중복" @@ -17160,8 +17386,8 @@ msgstr "온도 제어 활성화" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18089,8 +18315,8 @@ msgid "Debug level" msgstr "디버그 수준" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "디버그 로깅 수준을 설정합니다. 0:치명적, 1:오류, 2:경고, 3:정보, 4:디버그, 5:" "추적\n" @@ -19771,8 +19997,8 @@ msgstr "" "다시 작성하시겠습니까?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" @@ -19944,6 +20170,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "프린터 생성 성공" @@ -20179,32 +20417,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -21022,26 +21234,17 @@ msgstr "최대 각도" msgid "Detection radius" msgstr "감지 반경" -msgid "Remove selected points" -msgstr "선택한 지점 제거" - -msgid "Remove all" -msgstr "모두 제거" - -msgid "Auto-generate points" -msgstr "포인트 자동 생성" - -msgid "Add a brim ear" -msgstr "브림 귀 추가" - -msgid "Delete a brim ear" -msgstr "브림 귀 삭제" - -msgid "Adjust head diameter" +msgid "Selected" msgstr "" -msgid "Adjust section view" -msgstr "섹션 보기 조정" +msgid "Auto-generate" +msgstr "" + +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" + +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -21053,8 +21256,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "" -msgid " invalid brim ears" -msgstr " 유효하지 않은 브림 귀" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "브림 귀" @@ -21318,15 +21521,13 @@ msgstr "" "키보드 단축키를 사용하는 방법\n" "Orca Slicer는 다양한 키보드 단축키와 3D 장면 작업을 제공합니다." -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"홀수에 반전\n" -"홀수에 반전 기능이 오버행의 표면 품질을 크게 향상시킬 수 있다는 사실" -"을 알고 계셨나요?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -21614,6 +21815,52 @@ msgstr "" "ABS와 같이 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 " "높이면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#~ msgid "Erase all painting" +#~ msgstr "모든 페인팅 삭제" + +#~ msgid "Reset cut" +#~ msgstr "컷 재설정" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "팬 및 회전 마우스 버튼 바꾸기" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "이 기능을 활성화하면 왼쪽 마우스 버튼과 오른쪽 마우스 버튼의 팬 및 회전 기" +#~ "능이 바뀝니다." + +#~ msgid "Remove selected points" +#~ msgstr "선택한 지점 제거" + +#~ msgid "Remove all" +#~ msgstr "모두 제거" + +#~ msgid "Auto-generate points" +#~ msgstr "포인트 자동 생성" + +#~ msgid "Add a brim ear" +#~ msgstr "브림 귀 추가" + +#~ msgid "Delete a brim ear" +#~ msgstr "브림 귀 삭제" + +#~ msgid "Adjust section view" +#~ msgstr "섹션 보기 조정" + +#~ msgid " invalid brim ears" +#~ msgstr " 유효하지 않은 브림 귀" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "홀수에 반전\n" +#~ "홀수에 반전 기능이 오버행의 표면 품질을 크게 향상시킬 수 있다는 사" +#~ "실을 알고 계셨나요?" + #~ msgid "Pen size" #~ msgstr "펜 크기" @@ -22605,9 +22852,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "위치 설정" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" @@ -22893,8 +23137,8 @@ msgstr "" #~ msgstr "mm/mm" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\".\n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\".\n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" @@ -23921,8 +24165,8 @@ msgstr "" #~ "로 지정되지 않은 경우 필라멘트의 최소 출력 속도가 활성화됩니다." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\".\n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\".\n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "사전 설정의 이름을 \"선택한 공급업체 유형 직렬 @프린터\"로 변경합니다.\n" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 1c5ab711d8..46fd16cb2f 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-10-25 23:01+0300\n" "Last-Translator: Gintaras Kučinskas \n" "Language-Team: \n" @@ -16,8 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && (n%100<11 || n%100>19) ? 0 : n" -"%10>=2 && n%10<=9 && (n%100<11 || n%100>19) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && (n%100<11 || n%100>19) ? 0 : " +"n%10>=2 && n%10<=9 && (n%100<11 || n%100>19) ? 1 : 2);\n" "X-Generator: Poedit 3.6\n" msgid "right" @@ -121,8 +121,8 @@ msgstr "Atlikti" msgid "On highlighted overhangs only" msgstr "Tik paryškintiems kabantiems" -msgid "Erase all painting" -msgstr "Ištrinti visą piešinį" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Paryškinti kabančias vietas" @@ -191,6 +191,9 @@ msgstr "Paryškinti paviršius pagal iškyšos kampą." msgid "No auto support" msgstr "Nenaudoti automatinių atramų" +msgid "Done" +msgstr "Atlikta" + msgid "Support Generated" msgstr "Atramos sugeneruotos" @@ -343,6 +346,12 @@ msgstr "Detalių pasirinkimas" msgid "Fixed step drag" msgstr "Vilkimas fiksuotu žingsniu" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Vienpusis mastelio keitimas" @@ -492,6 +501,18 @@ msgstr "Pjovimo vieta" msgid "Build Volume" msgstr "Spausdinimo tūris" +msgid "Multiple" +msgstr "Keli" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Tarpai" + msgid "Part" msgstr "Dalis" @@ -599,12 +620,6 @@ msgstr "Taisyti jungtis" msgid "Add connectors" msgstr "Įtraukti jungtis" -msgid "Reset cut" -msgstr "Atstatyti pjovimą" - -msgid "Reset cutting plane and remove connectors" -msgstr "Atstatyti pjovimo plokštumą ir pašalinti jungtis" - msgid "Upper part" msgstr "Viršutinė dalis" @@ -623,6 +638,9 @@ msgstr "Po pjovimo" msgid "Cut to parts" msgstr "Supjaustyti į dalis" +msgid "Reset cutting plane and remove connectors" +msgstr "Atstatyti pjovimo plokštumą ir pašalinti jungtis" + msgid "Perform cut" msgstr "Atlikti pjūvį" @@ -857,6 +875,9 @@ msgstr "Numatytasis šriftas" msgid "Advanced" msgstr "Plačiau" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1507,15 +1528,6 @@ msgstr "" "1 funkcija buvo iš naujo nustatyta, \n" "2 funkcija buvo 1 funkcija" -msgid "Warning: please select Plane's feature." -msgstr "Įspėjimas: pasirinkite Plokštumos funkciją." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Įspėjimas: pasirinkite Taško arba Apskritimo funkciją." - -msgid "Warning: please select two different meshes." -msgstr "Įspėjimas: pasirinkite dvi skirtingas figūras." - msgid "Copy to clipboard" msgstr "Nukopijuoti į iškarpinę" @@ -1567,6 +1579,15 @@ msgstr "(Moving)" msgid "Point and point assembly" msgstr "Point and point assembly" +msgid "Warning: please select two different meshes." +msgstr "Įspėjimas: pasirinkite dvi skirtingas figūras." + +msgid "Warning: please select Plane's feature." +msgstr "Įspėjimas: pasirinkite Plokštumos funkciją." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Įspėjimas: pasirinkite Taško arba Apskritimo funkciją." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1762,6 +1783,18 @@ msgstr "Čia yra naujausia versija." msgid "Info" msgstr "Info" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1830,6 +1863,23 @@ msgstr "" "OrcaSlicer versija yra pasenusi. Norint naudotis, reikia ją atnaujinti į " "naujausią versiją." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Retrieving printer information, please try again later." @@ -2388,12 +2438,12 @@ msgstr "Automatiškai nustatoma padėtis spausdinimo kokybės pagerinimui." msgid "Edit" msgstr "Redaguoti" -msgid "Delete this filament" -msgstr "Delete this filament" - msgid "Merge with" msgstr "Merge with" +msgid "Delete this filament" +msgstr "Delete this filament" + msgid "Select All" msgstr "Pasirinkti viską" @@ -4746,9 +4796,6 @@ msgstr "Stop Drying" msgid "Proceed" msgstr "Proceed" -msgid "Done" -msgstr "Atlikta" - msgid "Retry" msgstr "Kartoti" @@ -5013,33 +5060,6 @@ msgstr "Atramų perėjimas" msgid "Mixed" msgstr "Mixed" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Srauto greitis" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Ventiliatoriaus greitis" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Laikas" - -msgid "Actual speed profile" -msgstr "Actual speed profile" - -msgid "Speed: " -msgstr "Greitis: " - msgid "Height: " msgstr "Aukštis: " @@ -5073,6 +5093,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Srauto greitis" + +msgid "Fan speed" +msgstr "Ventiliatoriaus greitis" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Laikas" + +msgid "Speed: " +msgstr "Greitis: " + +msgid "Actual speed profile" +msgstr "Actual speed profile" + msgid "Statistics of All Plates" msgstr "Visų plokščių statistika" @@ -5406,9 +5453,6 @@ msgstr "Orientuoti" msgid "Arrange options" msgstr "Išdėstymo parinktys" -msgid "Spacing" -msgstr "Tarpai" - msgid "0 means auto spacing." msgstr "0 reiškia automatinius tarpus." @@ -5543,7 +5587,7 @@ msgstr "Tūris:" msgid "Size:" msgstr "Dydis:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5942,6 +5986,15 @@ msgstr "Eksportuoti dabartinę konfigūraciją į failus" msgid "Export" msgstr "Eksportuoti" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Išeiti" @@ -6069,6 +6122,9 @@ msgstr "Vaizdas" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Pagalba" @@ -8685,21 +8741,33 @@ msgstr "" "Jei įjungta, naudoti laisvą kamerą. Jei neįjungta, naudoti stacionarią " "kamerą." -msgid "Swap pan and rotate mouse buttons" -msgstr "Sukeisti judėjimą ir sukimąsi pelės mygtuko" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Jei įjungta, sukeičia kairiojo ir dešiniojo pelės mygtukų panoraminio ir " -"pasukimo funkcijas." - msgid "Reverse mouse zoom" msgstr "Apversti pelės didinimą" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Jei įjungta, apverčia didinimo ar mažinimo kryptį pelės ratuku." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Clear my choice on..." @@ -8723,6 +8791,59 @@ msgid "" msgstr "" "Clear my choice for synchronizing printer preset after loading the file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Išjungta" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Prisijungimo regionas" @@ -8886,6 +9007,15 @@ msgstr "Kūrėjo režimas" msgid "Skip AMS blacklist check" msgstr "Praleisti AMS draudžiamo sąrašo tikrinimą" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Allow Abnormal Storage" @@ -10002,8 +10132,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Įrašant pakadrinį vaizdo įrašą be spausdinimo galvutės judesių, " "rekomenduojama naudoti „Pakadrinio valymo bokštą“.\n" @@ -10650,6 +10780,32 @@ msgstr "Neišsaugoti" msgid "Discard" msgstr "Atsisakyti" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Spustelėkite dešinįjį pelės klavišą, kad būtų rodomas visas tekstas." @@ -11230,6 +11386,9 @@ msgstr "Spustelėkite čia, jei norite jį atsisiųsti." msgid "Login" msgstr "Prisijungti" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action Required] " @@ -11266,6 +11425,18 @@ msgstr "Rodyti sparčiųjų klavišų sąrašą" msgid "Global shortcuts" msgstr "Bendrieji spartieji klavišai" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11644,8 +11815,8 @@ msgid "" msgstr "" "Įterptinės programinės įrangos versija yra nenormali. Prieš spausdinant " "reikia pataisyti ir atnaujinti. Ar norite atnaujinti dabar? Taip pat galite " -"atnaujinti vėliau spausdintuve arba atnaujinti kitą kartą paleisdami \"Orca" -"\"." +"atnaujinti vėliau spausdintuve arba atnaujinti kitą kartą paleisdami " +"\"Orca\"." msgid "Extension Board" msgstr "Išplėtimo plokštė" @@ -11757,9 +11928,6 @@ msgstr " can not be placed in the " msgid "Internal Bridge" msgstr "Vidinis tiltas" -msgid "Multiple" -msgstr "Keli" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12018,8 +12186,8 @@ msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"Pagrindinis bokštas šiuo metu palaikomas tik \"Marlin\", \"RepRap/Sprinter" -"\", \"RepRapFirmware\" ir \"Repetier\" G-kodo tipuose." +"Pagrindinis bokštas šiuo metu palaikomas tik \"Marlin\", \"RepRap/" +"Sprinter\", \"RepRapFirmware\" ir \"Repetier\" G-kodo tipuose." msgid "The prime tower is not supported in \"By object\" print." msgstr "Pirminis bokštas nepalaikomas spausdinant \"Pagal objektą\"." @@ -13601,9 +13769,6 @@ msgstr "" "4. Taikyti visiems - sukuriami antrieji tiltų sluoksniai, skirti tiek į " "vidiniams, tiek į išoriniams tiltams.\n" -msgid "Disabled" -msgstr "Išjungta" - msgid "External bridge only" msgstr "Tik išorinis tiltas" @@ -14292,6 +14457,18 @@ msgstr "Auto For Flush" msgid "Auto For Match" msgstr "Auto For Match" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Flush temperature" @@ -14798,6 +14975,17 @@ msgstr "" "Naudoti kelias linijas užpildymo šablonui, jei tai palaiko užpildymo " "šablonas." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Reto užpildymo raštas" @@ -14976,8 +15164,8 @@ msgid "mm/s² or %" msgstr "mm/s² arba %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Retų užpildų pagreitis. Jei reikšmė išreikšta procentais (pvz., 100 %), ji " "bus apskaičiuota pagal numatytąjį pagreitį." @@ -15112,10 +15300,10 @@ msgstr "Visas ventiliatoriaus greitis sluoksnyje" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Ventiliatoriaus greitis bus didinamas tiesiškai nuo nulio sluoksnyje " "\"close_fan_the_first_x_layers\" iki maksimalaus sluoksnyje " @@ -15631,6 +15819,30 @@ msgstr "" "greičiau įsibėgėtų.\n" "Nustatykite 0, kad išjungtumėte." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Laiko kaina" @@ -17237,8 +17449,8 @@ msgid "Role base wipe speed" msgstr "Vaidmens pagrindo nuvalymo greitis" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17635,6 +17847,19 @@ msgstr "Išstumti likusias gijas į pirminio valymo bokštą." msgid "Enable filament ramming" msgstr "Įjungti gijos ramingą" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Nėra retų sluoksnių (beta)" @@ -17986,15 +18211,17 @@ msgid "Threshold angle" msgstr "Ribinis kampas" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Atramos bus generuojamos iškyšoms, kurių nuolydžio kampas yra mažesnis už slenkstį." -"Kuo mažesnė ši reikšmė, tuo statesnę iškyšą galima spausdinti be atramų.\n" -"Pastaba: jei nustatyta 0, įprastos atramos vietoje naudoja Slenksčio persidengimas, " -"o medžio tipo atramos grįžta prie numatytosios 30 reikšmės." +"Atramos bus generuojamos iškyšoms, kurių nuolydžio kampas yra mažesnis už " +"slenkstį.Kuo mažesnė ši reikšmė, tuo statesnę iškyšą galima spausdinti be " +"atramų.\n" +"Pastaba: jei nustatyta 0, įprastos atramos vietoje naudoja Slenksčio " +"persidengimas, o medžio tipo atramos grįžta prie numatytosios 30 reikšmės." msgid "Threshold overlap" msgstr "Slenksčio persidengimas" @@ -18156,8 +18383,8 @@ msgstr "Suaktyvinti temperatūros reguliavimą" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -19162,8 +19389,8 @@ msgid "Debug level" msgstr "Derinimo lygis" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Nustato derinimo žurnalizavimo lygį. 0: mirtinas, 1: klaida, 2: įspėjimas, " "3: informacija, 4: derinimas, 5: sekimas\n" @@ -19709,13 +19936,13 @@ msgstr "Pateikto failo nepavyko perskaityti, nes jis tuščias" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Nežinomas failo formatas. Įvesties failo plėtinys turi būti .stl, .obj, ." -"amf(.xml)." +"Nežinomas failo formatas. Įvesties failo plėtinys turi " +"būti .stl, .obj, .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Nežinomas failo formatas. Įvesties failo plėtinys turi būti .3mf arba .zip." -"amf." +"Nežinomas failo formatas. Įvesties failo plėtinys turi būti .3mf " +"arba .zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: nepavyko apdoroti" @@ -20953,8 +21180,8 @@ msgstr "" "Ar norite jį perrašyti?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Būtų galima pervadinti iš anksto nustatytus nustatymus į \"Pardavėjo tipo " @@ -21135,6 +21362,18 @@ msgstr "" "The system preset does not allow creation. \n" "Please re-enter the printer model or nozzle diameter." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Sėkmingai sukurtas spausdintuvas" @@ -21396,36 +21635,6 @@ msgstr "" "The nozzle type does not match the actual printer nozzle type.\n" "Please click the Sync button above and restart the calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "nozzle size in preset: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "nozzle size memorized: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "nozzle[%d] in preset: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozzle[%d] memorized: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -21804,9 +22013,9 @@ msgid "" "quality but much longer print time." msgstr "" "Palyginti su numatytuoju 0,4 mm purkštuko profiliu, jo sluoksnio aukštis " -"mažesnis, greitis ir pagreitis mažesni, o retas užpildymo raštas yra \"Gyroid" -"\". Taigi, dėl jo mažiau matomų sluoksnio linijų ir daug geresnė spausdinimo " -"kokybė, tačiau daug ilgesnis spausdinimo laikas." +"mažesnis, greitis ir pagreitis mažesni, o retas užpildymo raštas yra " +"\"Gyroid\". Taigi, dėl jo mažiau matomų sluoksnio linijų ir daug geresnė " +"spausdinimo kokybė, tačiau daug ilgesnis spausdinimo laikas." msgid "" "Compared with the default profile of a 0.4 mm nozzle, it has a smaller layer " @@ -22354,26 +22563,17 @@ msgstr "Maksimalus kampas" msgid "Detection radius" msgstr "Aptikimo spindulys" -msgid "Remove selected points" -msgstr "Pašalinti pasirinktus taškus" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Pašalinti viską" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Automatiškai generuoti taškus" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Krašto \"ausys\"" - -msgid "Delete a brim ear" -msgstr "Ištrinti krašto \"ausį\"" - -msgid "Adjust head diameter" -msgstr "Nustatykite galvutės skersmenį" - -msgid "Adjust section view" -msgstr "Pritaikyti sekcijos vaizdą" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22385,8 +22585,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Nustatykite šio objekto krašto tipą kaip „pieštas“" -msgid " invalid brim ears" -msgstr " netinkamos krašto \"ausys\"" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Krašto \"ausys\"" @@ -22665,15 +22865,13 @@ msgstr "" "Ar žinojote, kad „Orca Slicer“ siūlo platų klavišų kombinacijų ir 3D scenos " "operacijų pasirinkimą?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Atvirkštinis ant nelyginio paviršiaus\n" -"Ar žinojote, kad atvirkštinio ant nelyginio paviršiaus funkcija gali " -"gerokai pagerinti jūsų iškyšų paviršiaus kokybę?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22967,6 +23165,85 @@ msgstr "" "pavyzdžiui, ABS, tinkamai padidinus kaitinimo pagrindo temperatūrą galima " "sumažinti deformavimosi tikimybę." +#~ msgid "Erase all painting" +#~ msgstr "Ištrinti visą piešinį" + +#~ msgid "Reset cut" +#~ msgstr "Atstatyti pjovimą" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Sukeisti judėjimą ir sukimąsi pelės mygtuko" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Jei įjungta, sukeičia kairiojo ir dešiniojo pelės mygtukų panoraminio ir " +#~ "pasukimo funkcijas." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "nozzle size in preset: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "nozzle size memorized: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "nozzle[%d] in preset: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozzle[%d] memorized: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" + +#~ msgid "Remove selected points" +#~ msgstr "Pašalinti pasirinktus taškus" + +#~ msgid "Remove all" +#~ msgstr "Pašalinti viską" + +#~ msgid "Auto-generate points" +#~ msgstr "Automatiškai generuoti taškus" + +#~ msgid "Add a brim ear" +#~ msgstr "Krašto \"ausys\"" + +#~ msgid "Delete a brim ear" +#~ msgstr "Ištrinti krašto \"ausį\"" + +#~ msgid "Adjust head diameter" +#~ msgstr "Nustatykite galvutės skersmenį" + +#~ msgid "Adjust section view" +#~ msgstr "Pritaikyti sekcijos vaizdą" + +#~ msgid " invalid brim ears" +#~ msgstr " netinkamos krašto \"ausys\"" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Atvirkštinis ant nelyginio paviršiaus\n" +#~ "Ar žinojote, kad atvirkštinio ant nelyginio paviršiaus funkcija " +#~ "gali gerokai pagerinti jūsų iškyšų paviršiaus kokybę?" + #~ msgid "Pen size" #~ msgstr "Pieštuko dydis" @@ -24091,9 +24368,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Nustatyti padėtį" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 827c19d732..3784a0cb36 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -115,8 +115,8 @@ msgstr "Uitvoeren" msgid "On highlighted overhangs only" msgstr "Alleen op gemarkeerde overhangen" -msgid "Erase all painting" -msgstr "Alle getekende delen wissen" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Overhangende gebieden markeren" @@ -185,6 +185,9 @@ msgstr "Gebieden markeren op basis van overhangende hoek." msgid "No auto support" msgstr "Geen automatische ondersteuning" +msgid "Done" +msgstr "Klaar" + msgid "Support Generated" msgstr "Ondersteuning gegenereerd" @@ -338,6 +341,12 @@ msgstr "Part selection" msgid "Fixed step drag" msgstr "Fixed step drag" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Single sided scaling" @@ -486,6 +495,18 @@ msgstr "Cut position" msgid "Build Volume" msgstr "Build Volume" +msgid "Multiple" +msgstr "Meerdere" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Uitlijning" + msgid "Part" msgstr "Onderdeel" @@ -593,12 +614,6 @@ msgstr "Verbindingen bewerken" msgid "Add connectors" msgstr "Verbindingen toevoegen" -msgid "Reset cut" -msgstr "Reset cut" - -msgid "Reset cutting plane and remove connectors" -msgstr "Reset cutting plane and remove connectors" - msgid "Upper part" msgstr "Bovenste deel" @@ -617,6 +632,9 @@ msgstr "Na knippen" msgid "Cut to parts" msgstr "In delen knippen" +msgid "Reset cutting plane and remove connectors" +msgstr "Reset cutting plane and remove connectors" + msgid "Perform cut" msgstr "Knippen uitvoeren" @@ -850,6 +868,9 @@ msgstr "Standaard lettertype" msgid "Advanced" msgstr "Geavanceerd" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1500,15 +1521,6 @@ msgstr "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" -msgid "Warning: please select Plane's feature." -msgstr "Warning: please select Plane's feature." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Warning: please select Point's or Circle's feature." - -msgid "Warning: please select two different meshes." -msgstr "Warning: please select two different meshes." - msgid "Copy to clipboard" msgstr "Kopieer naar klembord" @@ -1560,6 +1572,15 @@ msgstr "(Moving)" msgid "Point and point assembly" msgstr "Point and point assembly" +msgid "Warning: please select two different meshes." +msgstr "Warning: please select two different meshes." + +msgid "Warning: please select Plane's feature." +msgstr "Warning: please select Plane's feature." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Warning: please select Point's or Circle's feature." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1754,6 +1775,18 @@ msgstr "Dit is de nieuwste versie." msgid "Info" msgstr "Informatie" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1818,6 +1851,23 @@ msgstr "" "De versie van Orca Slicer is te oud en dient te worden bijgewerkt naar de " "nieuwste versie voordat deze normaal kan worden gebruikt" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Retrieving printer information, please try again later." @@ -2378,12 +2428,12 @@ msgstr "" msgid "Edit" msgstr "Bewerken" -msgid "Delete this filament" -msgstr "Delete this filament" - msgid "Merge with" msgstr "Merge with" +msgid "Delete this filament" +msgstr "Delete this filament" + msgid "Select All" msgstr "Alles selecteren" @@ -4736,9 +4786,6 @@ msgstr "Stop Drying" msgid "Proceed" msgstr "Doorgaan" -msgid "Done" -msgstr "Klaar" - msgid "Retry" msgstr "Opnieuw proberen" @@ -5000,33 +5047,6 @@ msgstr "Onderteuning (support) overgang" msgid "Mixed" msgstr "Gemengd" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Flowrate" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Ventilator snelheid" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Tijd" - -msgid "Actual speed profile" -msgstr "Actual speed profile" - -msgid "Speed: " -msgstr "Snelheid: " - msgid "Height: " msgstr "Hoogte: " @@ -5060,6 +5080,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Flowrate" + +msgid "Fan speed" +msgstr "Ventilator snelheid" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Tijd" + +msgid "Speed: " +msgstr "Snelheid: " + +msgid "Actual speed profile" +msgstr "Actual speed profile" + msgid "Statistics of All Plates" msgstr "Statistics of All Plates" @@ -5393,9 +5440,6 @@ msgstr "Oriënteren" msgid "Arrange options" msgstr "Rangschik opties" -msgid "Spacing" -msgstr "Uitlijning" - msgid "0 means auto spacing." msgstr "0 means auto spacing." @@ -5530,7 +5574,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Maat:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5929,6 +5973,15 @@ msgstr "Huidige configuratie exporteren naar bestanden" msgid "Export" msgstr "Exporteren" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Stop" @@ -6056,6 +6109,9 @@ msgstr "Weergave" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Hulp" @@ -8690,15 +8746,6 @@ msgstr "" "Als dit is ingeschakeld wordt de vrij beweegbare camera gebruikt, anders een " "vaste camera." -msgid "Swap pan and rotate mouse buttons" -msgstr "Wissel de pan- en rotatiemuisknoppen om" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Als deze optie is ingeschakeld, worden de pan- en rotatiefuncties van de " -"linker- en rechtermuisknop omgedraaid." - msgid "Reverse mouse zoom" msgstr "Omgekeerde muiszoom" @@ -8707,6 +8754,27 @@ msgstr "" "Als deze optie is ingeschakeld, wordt de zoomrichting met het muiswiel " "omgedraaid." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Clear my choice on..." @@ -8730,6 +8798,59 @@ msgid "" msgstr "" "Clear my choice for synchronizing printer preset after loading the file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Uit" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Inlogregio" @@ -8892,6 +9013,15 @@ msgstr "Ontwikkelmodus" msgid "Skip AMS blacklist check" msgstr "AMS-zwartelijstcontrole overslaan" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Allow Abnormal Storage" @@ -10008,8 +10138,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Bij het opnemen van timelapse zonder toolhead is het aan te raden om een " "„Timelapse Wipe Tower” toe te voegen \n" @@ -10644,6 +10774,32 @@ msgstr "Niet opslaan" msgid "Discard" msgstr "Verwerpen" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Klik op de rechtermuisknop om de volledige tekst weer te geven." @@ -11229,6 +11385,9 @@ msgstr "Klik hier om het te downloaden." msgid "Login" msgstr "Inloggen" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action Required] " @@ -11267,6 +11426,18 @@ msgstr "Toon lijst met sneltoetsen" msgid "Global shortcuts" msgstr "Globale snelkoppelingen" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11759,9 +11930,6 @@ msgstr " can not be placed in the " msgid "Internal Bridge" msgstr "Internal Bridge" -msgid "Multiple" -msgstr "Meerdere" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13601,9 +13769,6 @@ msgstr "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" -msgid "Disabled" -msgstr "Uit" - msgid "External bridge only" msgstr "External bridge only" @@ -14290,6 +14455,18 @@ msgstr "Auto For Flush" msgid "Auto For Match" msgstr "Auto For Match" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Flush temperature" @@ -14796,6 +14973,17 @@ msgid "" msgstr "" "Using multiple lines for the infill pattern, if supported by infill pattern." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Vulpatroon" @@ -14976,8 +15164,8 @@ msgid "mm/s² or %" msgstr "mm/s² of %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Versnelling van de schaarse invulling. Als de waarde wordt uitgedrukt als " "een percentage (bijvoorbeeld 100%), wordt deze berekend op basis van de " @@ -15117,16 +15305,16 @@ msgstr "Volledige snelheid op laag" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "laag" @@ -15632,6 +15820,30 @@ msgstr "" "fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Time cost" @@ -17240,13 +17452,13 @@ msgid "Role base wipe speed" msgstr "Role base wipe speed" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." @@ -17637,6 +17849,19 @@ msgstr "Purge remaining filament into prime tower." msgid "Enable filament ramming" msgstr "Enable filament ramming" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "No sparse layers (beta)" @@ -17993,15 +18218,18 @@ msgid "Threshold angle" msgstr "Drempel hoek" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken waarvan de hellingshoek lager is dan deze drempel." -"Hoe kleiner deze waarde is, hoe steiler de overhang die zonder ondersteuning kan worden geprint.\n" -"Opmerking: Indien ingesteld op 0, gebruiken normale ondersteuningen in plaats daarvan de drempelwaarde voor overlap," -"terwijl boomstructuurondersteuningen terugvallen op een standaardwaarde van 30." +"Er zal ondersteuning support gegenereerd worden voor overhangende hoeken " +"waarvan de hellingshoek lager is dan deze drempel.Hoe kleiner deze waarde " +"is, hoe steiler de overhang die zonder ondersteuning kan worden geprint.\n" +"Opmerking: Indien ingesteld op 0, gebruiken normale ondersteuningen in " +"plaats daarvan de drempelwaarde voor overlap,terwijl " +"boomstructuurondersteuningen terugvallen op een standaardwaarde van 30." msgid "Threshold overlap" msgstr "Threshold overlap" @@ -18011,9 +18239,10 @@ msgid "" "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" -"Als de drempelhoek nul is, wordt er ondersteuning gegenereerd voor overhangen waarvan de overlap " -"onder de drempelwaarde ligt. Hoe kleiner deze waarde is, hoe steiler de overhang die zonder " -"ondersteuning kan worden geprint." +"Als de drempelhoek nul is, wordt er ondersteuning gegenereerd voor " +"overhangen waarvan de overlap onder de drempelwaarde ligt. Hoe kleiner deze " +"waarde is, hoe steiler de overhang die zonder ondersteuning kan worden " +"geprint." msgid "Tree support branch angle" msgstr "Tree support vertakkingshoek" @@ -18168,8 +18397,8 @@ msgstr "Temperatuurregeling activeren" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18179,8 +18408,8 @@ msgid "" "heater is installed." msgstr "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18743,10 +18972,11 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked." msgstr "" -"Relatieve extrusie wordt aanbevolen bij gebruik van de optie \"label_objects" -"\". Sommige extruders werken beter als deze optie niet is aangevinkt " -"(absolute extrusiemodus). Wipe tower is alleen compatibel met relatieve " -"modus. Het wordt aanbevolen op de meeste printers. Standaard is aangevinkt" +"Relatieve extrusie wordt aanbevolen bij gebruik van de optie " +"\"label_objects\". Sommige extruders werken beter als deze optie niet is " +"aangevinkt (absolute extrusiemodus). Wipe tower is alleen compatibel met " +"relatieve modus. Het wordt aanbevolen op de meeste printers. Standaard is " +"aangevinkt" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -19171,11 +19401,11 @@ msgid "Debug level" msgstr "Debuggen level" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgid "Enable timelapse for print" msgstr "Enable timelapse for print" @@ -20951,12 +21181,12 @@ msgstr "" "Wil je het herschrijven?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgid "Create Printer/Nozzle" @@ -21132,6 +21362,18 @@ msgstr "" "The system preset does not allow creation. \n" "Please re-enter the printer model or nozzle diameter." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Printer succesvol gemaakt" @@ -21384,36 +21626,6 @@ msgstr "" "The nozzle type does not match the actual printer nozzle type.\n" "Please click the Sync button above and restart the calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "nozzle size in preset: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "nozzle size memorized: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "nozzle[%d] in preset: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozzle[%d] memorized: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -22331,26 +22543,17 @@ msgstr "Max angle" msgid "Detection radius" msgstr "Detection radius" -msgid "Remove selected points" -msgstr "Verwijder geselecteerde punten" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Remove all" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Genereer automatisch punten" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Add a brim ear" - -msgid "Delete a brim ear" -msgstr "Delete a brim ear" - -msgid "Adjust head diameter" -msgstr "Adjust head diameter" - -msgid "Adjust section view" -msgstr "Adjust section view" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22362,8 +22565,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Set the brim type of this object to \"painted\"" -msgid " invalid brim ears" -msgstr " ongeldige rand oren" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Rand Oren" @@ -22641,15 +22844,13 @@ msgstr "" "Wist u dat Orca Slicer een breed scala aan sneltoetsen en 3D-" "scènebewerkingen biedt?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Achteruit op oneven\n" -"Wist u dat de functie Achteruit op oneven de oppervlaktekwaliteit van " -"uw overhangen aanzienlijk kan verbeteren?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22943,6 +23144,85 @@ msgstr "" "kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " "warmtebed de kans op kromtrekken kan verkleinen?" +#~ msgid "Erase all painting" +#~ msgstr "Alle getekende delen wissen" + +#~ msgid "Reset cut" +#~ msgstr "Reset cut" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Wissel de pan- en rotatiemuisknoppen om" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Als deze optie is ingeschakeld, worden de pan- en rotatiefuncties van de " +#~ "linker- en rechtermuisknop omgedraaid." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "nozzle size in preset: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "nozzle size memorized: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "nozzle[%d] in preset: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozzle[%d] memorized: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" + +#~ msgid "Remove selected points" +#~ msgstr "Verwijder geselecteerde punten" + +#~ msgid "Remove all" +#~ msgstr "Remove all" + +#~ msgid "Auto-generate points" +#~ msgstr "Genereer automatisch punten" + +#~ msgid "Add a brim ear" +#~ msgstr "Add a brim ear" + +#~ msgid "Delete a brim ear" +#~ msgstr "Delete a brim ear" + +#~ msgid "Adjust head diameter" +#~ msgstr "Adjust head diameter" + +#~ msgid "Adjust section view" +#~ msgstr "Adjust section view" + +#~ msgid " invalid brim ears" +#~ msgstr " ongeldige rand oren" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Achteruit op oneven\n" +#~ "Wist u dat de functie Achteruit op oneven de oppervlaktekwaliteit " +#~ "van uw overhangen aanzienlijk kan verbeteren?" + #~ msgid "Pen size" #~ msgstr "Pengrootte" @@ -23779,9 +24059,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Positie instellen" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index a3e6b0af05..8039fea2ec 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.3.0-rc\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga <>\n" "Language-Team: \n" @@ -113,8 +113,8 @@ msgstr "Wykonaj" msgid "On highlighted overhangs only" msgstr "Tylko na podświetlonych nawisach" -msgid "Erase all painting" -msgstr "Wymaż wszystko" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Podświetl miejsca nawisu" @@ -183,6 +183,9 @@ msgstr "Podświetl ściany zgodnie z kątem nawisu." msgid "No auto support" msgstr "Brak automatycznej podpory" +msgid "Done" +msgstr "Gotowe" + msgid "Support Generated" msgstr "Wygenerowana podpora" @@ -335,6 +338,12 @@ msgstr "" msgid "Fixed step drag" msgstr "" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "" @@ -483,6 +492,18 @@ msgstr "Miejsce przcięcia" msgid "Build Volume" msgstr "Wymiary robocze" +msgid "Multiple" +msgstr "Wielokrotne" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Rozstaw" + msgid "Part" msgstr "Część" @@ -591,12 +612,6 @@ msgstr "Edytuj złączki" msgid "Add connectors" msgstr "Dodaj łączniki" -msgid "Reset cut" -msgstr "Resetuj" - -msgid "Reset cutting plane and remove connectors" -msgstr "Resetuj płaszczyznę przecinania i usuń łączniki" - msgid "Upper part" msgstr "Górna część" @@ -615,6 +630,9 @@ msgstr "Po przecięciu" msgid "Cut to parts" msgstr "Podziel na części" +msgid "Reset cutting plane and remove connectors" +msgstr "Resetuj płaszczyznę przecinania i usuń łączniki" + msgid "Perform cut" msgstr "Wykonaj cięcie" @@ -850,6 +868,9 @@ msgstr "Domyślna czcionka" msgid "Advanced" msgstr "Zaawansowane" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1503,15 +1524,6 @@ msgstr "" "Funkcja 1 została zresetowana,\n" "funkcja 2 została funkcją 1" -msgid "Warning: please select Plane's feature." -msgstr "Uwaga: proszę wybrać funkcję płaszczyzny." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Uwaga: wybierz funkcję Punkt lub Okrąg." - -msgid "Warning: please select two different meshes." -msgstr "Uwaga: proszę wybrać dwie różne siatki." - msgid "Copy to clipboard" msgstr "Kopiuj do schowka" @@ -1563,6 +1575,15 @@ msgstr "" msgid "Point and point assembly" msgstr "" +msgid "Warning: please select two different meshes." +msgstr "Uwaga: proszę wybrać dwie różne siatki." + +msgid "Warning: please select Plane's feature." +msgstr "Uwaga: proszę wybrać funkcję płaszczyzny." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Uwaga: wybierz funkcję Punkt lub Okrąg." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1753,6 +1774,18 @@ msgstr "To jest najnowsza wersja." msgid "Info" msgstr "Informacja" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1820,6 +1853,23 @@ msgstr "" "Wersja Orca Slicer jest przestarzała i musi zostać uaktualniona do " "najnowszej wersji, aby działać normalnie" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" @@ -2362,10 +2412,10 @@ msgstr "Automatyczna orientacja obiektu w celu poprawy jakości druku." msgid "Edit" msgstr "Edytuj" -msgid "Delete this filament" +msgid "Merge with" msgstr "" -msgid "Merge with" +msgid "Delete this filament" msgstr "" msgid "Select All" @@ -4629,9 +4679,6 @@ msgstr "" msgid "Proceed" msgstr "" -msgid "Done" -msgstr "Gotowe" - msgid "Retry" msgstr "Ponów" @@ -4892,33 +4939,6 @@ msgstr "Przejście podpór" msgid "Mixed" msgstr "" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Natężenie przepływu" - -msgid "mm³/s" -msgstr "" - -msgid "Fan speed" -msgstr "Prędkość wentylatora" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Czas" - -msgid "Actual speed profile" -msgstr "" - -msgid "Speed: " -msgstr "Prędkość: " - msgid "Height: " msgstr "Wysokość: " @@ -4952,6 +4972,33 @@ msgstr "" msgid "PA: " msgstr "" +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "" + +msgid "Flow rate" +msgstr "Natężenie przepływu" + +msgid "Fan speed" +msgstr "Prędkość wentylatora" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Czas" + +msgid "Speed: " +msgstr "Prędkość: " + +msgid "Actual speed profile" +msgstr "" + msgid "Statistics of All Plates" msgstr "Statystyki wszystkich płyt roboczych" @@ -5263,9 +5310,6 @@ msgstr "Orientacja" msgid "Arrange options" msgstr "Opcje rozmieszczania" -msgid "Spacing" -msgstr "Rozstaw" - msgid "0 means auto spacing." msgstr "Wartość 0 oznacza automatyczny odstęp." @@ -5400,7 +5444,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5783,6 +5827,15 @@ msgstr "Eksportuj bieżącą konfigurację do plików" msgid "Export" msgstr "Eksportuj" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Zakończ" @@ -5911,6 +5964,9 @@ msgstr "Widok" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Pomoc" @@ -8448,21 +8504,33 @@ msgstr "Używanie wolnego widoku kamery" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Przełącza pomiędzy wolnym a ograniczonym widokiem kamery." -msgid "Swap pan and rotate mouse buttons" -msgstr "Zamień przyciski przesuwania i obracania myszy" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Jeśli włączone, zamienia funkcje przesuwania i obracania lewym i prawym " -"przyciskiem myszy." - msgid "Reverse mouse zoom" msgstr "Odwrócone przybliżanie myszką" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Odwraca kierunek przybliżania kółkiem myszy." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -8485,6 +8553,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Wyłączony" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Region logowania" @@ -8628,6 +8749,15 @@ msgstr "Tryb deweloperski" msgid "Skip AMS blacklist check" msgstr "Pomijanie sprawdzania czarnej listy AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "" @@ -9656,8 +9786,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Podczas nagrywania timelapse bez głowicy drukującej zaleca się dodanie " "„Timelapse - Wieża czyszcząca” \n" @@ -10289,6 +10419,32 @@ msgstr "Nie zapisuj" msgid "Discard" msgstr "Odrzuć" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Kliknij prawym przyciskiem myszy, aby wyświetlić pełny tekst." @@ -10842,6 +10998,9 @@ msgstr "Kliknij tutaj, aby pobrać." msgid "Login" msgstr "Logowanie" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "" @@ -10879,6 +11038,18 @@ msgstr "Pokaż listę skrótów klawiszowych" msgid "Global shortcuts" msgstr "Globalne skróty" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11361,9 +11532,6 @@ msgstr "" msgid "Internal Bridge" msgstr "Wewnętrzny most" -msgid "Multiple" -msgstr "Wielokrotne" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -11974,8 +12142,8 @@ msgstr "" "Orca Slicer może przesyłać pliki G-code na hosta drukarki. To pole powinno " "zawierać nazwę hosta, adres IP lub URL hosta drukarki. Host drukowania za " "HAProxy z włączoną autoryzacją podstawową można uzyskać, wpisując nazwę " -"użytkownika i hasło w URL w następującym formacie: https://username:" -"password@your-octopi-address/" +"użytkownika i hasło w URL w następującym formacie: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "UI urządzenia" @@ -13145,9 +13313,6 @@ msgstr "" "4. Dla wszystkich mostów – dodatkowa warstwa jest generowana zarówno dla " "mostów wewnętrznych, jak i zewnętrznych.\n" -msgid "Disabled" -msgstr "Wyłączony" - msgid "External bridge only" msgstr "Tylko zewnętrzne mosty" @@ -13840,6 +14005,18 @@ msgstr "" msgid "Auto For Match" msgstr "" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "" @@ -14316,6 +14493,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Wzór wypełnienia" @@ -14497,8 +14685,8 @@ msgid "mm/s² or %" msgstr "mm/s² lub %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Przyspieszenie na rzadkim wypełnieniu. Jeśli wartość jest wyrażona w " "procentach (np. 100%), będzie obliczana na podstawie domyślnego " @@ -14636,10 +14824,10 @@ msgstr "Pełna prędkość wentylatora na warstwie" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Prędkość wentylatora będzie stopniowo zwiększana liniowo od zera na warstwie " "„close_fan_the_first_x_layers” do maksymalnej na warstwie " @@ -15117,6 +15305,30 @@ msgstr "" "\n" "Ustaw 0, aby wyłączyć tę funkcję." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Koszt czasu" @@ -16693,8 +16905,8 @@ msgid "Role base wipe speed" msgstr "Prędkość wycierania dyszy w oparciu o rolę ekstruzji" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17086,6 +17298,19 @@ msgstr "Oczyszczanie pozostałego filamentu do wieży czyszczącej" msgid "Enable filament ramming" msgstr "" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Warstwy bez czyszczenia (beta)" @@ -17424,15 +17649,17 @@ msgid "Threshold angle" msgstr "Kąt progowy" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Podpora zostanie wygenerowana dla nawisów, których kąt nachylenia jest poniżej tego progu." -"Im mniejsza jest ta wartość, tym bardziej stromy nawis można wydrukować bez podpór.\n" -"Uwaga: Jeśli ustawiono na 0, normalne podpory używają zamiast tego progu nakładania się, " -"podpory drzewne wracają do domyślnej wartości 30." +"Podpora zostanie wygenerowana dla nawisów, których kąt nachylenia jest " +"poniżej tego progu.Im mniejsza jest ta wartość, tym bardziej stromy nawis " +"można wydrukować bez podpór.\n" +"Uwaga: Jeśli ustawiono na 0, normalne podpory używają zamiast tego progu " +"nakładania się, podpory drzewne wracają do domyślnej wartości 30." msgid "Threshold overlap" msgstr "Próg nakładania" @@ -17591,8 +17818,8 @@ msgstr "Aktywuj kontrolę temperatury" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18569,11 +18796,11 @@ msgid "Debug level" msgstr "Poziom debugowania" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Ustawia poziom logowania debugowania. 0:fatal, 1:error, 2:warning, 3:info, 4:" -"debug, 5:trace\n" +"Ustawia poziom logowania debugowania. 0:fatal, 1:error, 2:warning, 3:info, " +"4:debug, 5:trace\n" msgid "Enable timelapse for print" msgstr "Włącz timelapse dla druku" @@ -19109,13 +19336,13 @@ msgstr "Dostarczony plik nie mógł być odczytany, ponieważ jest pusty" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .stl, .obj, ." -"amf(.xml)." +"Nieznany format pliku. Plik wejściowy musi mieć " +"rozszerzenie .stl, .obj, .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .3mf lub .zip." -"amf." +"Nieznany format pliku. Plik wejściowy musi mieć rozszerzenie .3mf " +"lub .zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: nie udało się przetworzyć" @@ -20302,8 +20529,8 @@ msgstr "" "Czy zastąpić go?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Nazwa profilu zostanie zmieniona na „Dostawca Typ Seria @nazwa drukarki, " @@ -20483,6 +20710,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Utworzenie profilu drukarki zakończyło się powodzeniem" @@ -20732,32 +20971,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -21605,26 +21818,17 @@ msgstr "Maksymalny kąt" msgid "Detection radius" msgstr "Promień wykrywania" -msgid "Remove selected points" -msgstr "Usuń zaznaczone punkty" - -msgid "Remove all" -msgstr "Usuń wszystkie" - -msgid "Auto-generate points" -msgstr "Generuj punkty automatycznie" - -msgid "Add a brim ear" -msgstr "Dodaj ucho brim" - -msgid "Delete a brim ear" -msgstr "Usuń ucho brim" - -msgid "Adjust head diameter" +msgid "Selected" msgstr "" -msgid "Adjust section view" -msgstr "Widok przekroju" +msgid "Auto-generate" +msgstr "" + +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" + +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -21636,8 +21840,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "" -msgid " invalid brim ears" -msgstr " nieprawidłowe uszy brim" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Uszy brim" @@ -21904,15 +22108,13 @@ msgstr "" "Czy wiesz, że Orca Slicer oferuje szeroki zakres skrótów klawiszowych i " "operacji na scenie 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Odwróć na nieparzystych\n" -"Czy wiesz, że funkcja Zmień kierunek na nieparzystych może znacząco " -"poprawić jakość powierzchni twoich występów?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22206,6 +22408,52 @@ msgstr "" "takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może " "zmniejszyć prawdopodobieństwo odkształceń?" +#~ msgid "Erase all painting" +#~ msgstr "Wymaż wszystko" + +#~ msgid "Reset cut" +#~ msgstr "Resetuj" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Zamień przyciski przesuwania i obracania myszy" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Jeśli włączone, zamienia funkcje przesuwania i obracania lewym i prawym " +#~ "przyciskiem myszy." + +#~ msgid "Remove selected points" +#~ msgstr "Usuń zaznaczone punkty" + +#~ msgid "Remove all" +#~ msgstr "Usuń wszystkie" + +#~ msgid "Auto-generate points" +#~ msgstr "Generuj punkty automatycznie" + +#~ msgid "Add a brim ear" +#~ msgstr "Dodaj ucho brim" + +#~ msgid "Delete a brim ear" +#~ msgstr "Usuń ucho brim" + +#~ msgid "Adjust section view" +#~ msgstr "Widok przekroju" + +#~ msgid " invalid brim ears" +#~ msgstr " nieprawidłowe uszy brim" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Odwróć na nieparzystych\n" +#~ "Czy wiesz, że funkcja Zmień kierunek na nieparzystych może " +#~ "znacząco poprawić jakość powierzchni twoich występów?" + #~ msgid "Pen size" #~ msgstr "Rozmiar pióra" @@ -23195,9 +23443,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Ustaw pozycję" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" @@ -23990,8 +24235,8 @@ msgstr "" #~ "\n" #~ "Jednakże w mocno pochylonych lub zakrzywionych modelach, zwłaszcza przy " #~ "niskiej gęstości struktury wypełnienia, może to prowadzić do wywijania " -#~ "się niewspieranej struktury wypełnienia, co powoduje efekt \"pillowing" -#~ "\".\n" +#~ "się niewspieranej struktury wypełnienia, co powoduje efekt " +#~ "\"pillowing\".\n" #~ "\n" #~ "Włączenie tej opcji spowoduje drukowanie wewnętrznej warstwy mostka nad " #~ "nieco niewspieraną wewnętrzną strukturą wypełnienia. Poniższe opcje " @@ -25281,8 +25526,8 @@ msgstr "" #~ "Elevation is too low for object. Use the \"Pad around object\" feature to " #~ "print the object without elevation." #~ msgstr "" -#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu" -#~ "\", aby wydrukować model bez podniesienia." +#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół " +#~ "modelu\", aby wydrukować model bez podniesienia." #~ msgid "" #~ "The endings of the support pillars will be deployed on the gap between " diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index e52deb8c5e..67bda6a277 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2026-03-22 17:15-0300\n" "Last-Translator: Alexandre Folle de Menezes\n" "Language-Team: Portuguese, Brazilian\n" @@ -127,8 +127,8 @@ msgstr "Executar" msgid "On highlighted overhangs only" msgstr "Apenas em saliências destacadas" -msgid "Erase all painting" -msgstr "Apagar toda a pintura" +msgid "Erase all" +msgstr "Apagar tudo" msgid "Highlight overhang areas" msgstr "Realçar áreas com saliências" @@ -197,6 +197,9 @@ msgstr "Realçar faces conforme o ângulo de saliência." msgid "No auto support" msgstr "Sem suporte automático" +msgid "Done" +msgstr "Concluído" + msgid "Support Generated" msgstr "Suporte Gerado" @@ -351,6 +354,12 @@ msgstr "Seleção de peça" msgid "Fixed step drag" msgstr "Arrasto de passo fixo" +msgid "Context Menu" +msgstr "Menu de Contexto" + +msgid "Toggle Auto-Drop" +msgstr "Alternar Auto-Soltar" + msgid "Single sided scaling" msgstr "Escala unilateral" @@ -499,6 +508,18 @@ msgstr "Posição de corte" msgid "Build Volume" msgstr "Volume de Impressão" +msgid "Multiple" +msgstr "Múltiplo" + +msgid "Count" +msgstr "Contagem" + +msgid "Gap" +msgstr "Vão" + +msgid "Spacing" +msgstr "Espaçamento" + msgid "Part" msgstr "Peça" @@ -537,7 +558,7 @@ msgid "Drag" msgstr "Arrastar" msgid "Move cut line" -msgstr "" +msgstr "Mover linha de corte" msgid "Draw cut line" msgstr "Desenhar linha de corte" @@ -606,12 +627,6 @@ msgstr "Editar conectores" msgid "Add connectors" msgstr "Adicionar conectores" -msgid "Reset cut" -msgstr "Redefinir corte" - -msgid "Reset cutting plane and remove connectors" -msgstr "Redefinir plano de corte e remover conectores" - msgid "Upper part" msgstr "Parte superior" @@ -630,6 +645,9 @@ msgstr "Após o corte" msgid "Cut to parts" msgstr "Cortar em peças" +msgid "Reset cutting plane and remove connectors" +msgstr "Redefinir plano de corte e remover conectores" + msgid "Perform cut" msgstr "Executar corte" @@ -837,7 +855,7 @@ msgid "Embossing actions" msgstr "Ações de relevo" msgid "Position on surface" -msgstr "" +msgstr "Posição na superfície" msgid "Emboss" msgstr "Relevo" @@ -866,6 +884,9 @@ msgstr "Fonte padrão" msgid "Advanced" msgstr "Avançado" +msgid "Reset all options except the text and operation" +msgstr "Redefinir todas as opções, exceto o texto e a operação" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1519,15 +1540,6 @@ msgstr "" "O recurso 1 foi redefinido, \n" "o recurso 2 foi o recurso 1" -msgid "Warning: please select Plane's feature." -msgstr "Aviso: por favor selecione o recurso do Plano." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Aviso: por favor selecione o recurso do Ponto ou do Círculo." - -msgid "Warning: please select two different meshes." -msgstr "Aviso: por favor selecione duas malhas diferentes." - msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" @@ -1581,6 +1593,15 @@ msgstr "(Movendo)" msgid "Point and point assembly" msgstr "Montagem ponto a ponto" +msgid "Warning: please select two different meshes." +msgstr "Aviso: por favor selecione duas malhas diferentes." + +msgid "Warning: please select Plane's feature." +msgstr "Aviso: por favor selecione o recurso do Plano." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Aviso: por favor selecione o recurso do Ponto ou do Círculo." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1775,6 +1796,18 @@ msgstr "Esta é a versão mais recente." msgid "Info" msgstr "Informações" +msgid "Loading printer & filament profiles" +msgstr "Carregando perfis de impressora e filamento" + +msgid "Creating main window" +msgstr "Criando a janela principal" + +msgid "Loading current preset" +msgstr "Carregando a predefinição atual" + +msgid "Showing main window" +msgstr "Mostrando a janela principal" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1842,6 +1875,29 @@ msgstr "" "Esta versão do OrcaSlicer é muito antiga e precisa ser atualizada para a " "versão mais recente antes de poder ser usada normalmente." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" +"Falha ao conectar ao OrcaCloud.\n" +"Verifique sua conexão de rede\n" +"(HTTP %u): %s" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" +"Falha ao conectar ao OrcaCloud.\n" +"Verifique sua conexão de rede\n" +"(HTTP %u)" + +msgid "Cloud Error" +msgstr "Erro de nuvem" + msgid "Retrieving printer information, please try again later." msgstr "Obtendo informações da impressora, tente novamente mais tarde." @@ -1898,14 +1954,14 @@ msgstr "Atualização da Política de Privacidade" #, c-format, boost-format msgid "your Bambu Cloud profile (user ID: \"%s\")" -msgstr "" +msgstr "seu perfil Bambu Cloud (ID de usuário: \"%s\")" msgid "your default profile" -msgstr "" +msgstr "seu perfil padrão" #, c-format, boost-format msgid "a user profile (folder: \"%s\")" -msgstr "" +msgstr "um perfil de usuário (pasta: \"%s\")" #, c-format, boost-format msgid "" @@ -1913,15 +1969,21 @@ msgid "" "Do you want to migrate them to your OrcaCloud profile?\n" "This will copy your presets so they are available under your new account." msgstr "" +"Foram encontradas predefinições de usuário existentes em %s.\n" +"Deseja migrá-las para o seu perfil do OrcaCloud?\n" +"Isso copiará suas predefinições para que estejam disponíveis em sua nova " +"conta." msgid "Migrate User Presets" -msgstr "" +msgstr "Migrar Predefinições de Usuário" #, c-format, boost-format msgid "" "Failed to migrate user presets:\n" "%s" msgstr "" +"Falha ao migrar predefinições de usuário:\n" +"%s" msgid "" "The number of user presets cached in the cloud has exceeded the upper limit, " @@ -1939,29 +2001,32 @@ msgid "" "reduce the preset size by removing custom configurations or use it locally " "only." msgstr "" +"O conteúdo da predefinição é muito grande para ser sincronizado com a nuvem " +"(excede 1 MB). Reduza o tamanho da predefinição removendo configurações " +"personalizadas ou use-o apenas localmente." #, c-format, boost-format msgid "%s updated from %s to %s" -msgstr "" +msgstr "%s atualizado de %s para %s" #, c-format, boost-format msgid "%s has been downloaded." -msgstr "" +msgstr "%s foi baixado." #, c-format, boost-format msgid "Bundle %s is no longer available." -msgstr "" +msgstr "O pacote %s não está mais disponível." #, c-format, boost-format msgid "Bundle %s access is unauthorized." -msgstr "" +msgstr "Acesso ao pacote %s não é autorizado." msgid "Loading user preset" msgstr "Carregando predefinição de usuário" #, c-format, boost-format msgid "%s has been removed." -msgstr "" +msgstr "%s foi removido." msgid "Switching application language" msgstr "Alternando o idioma do aplicativo" @@ -2208,7 +2273,7 @@ msgid "Support Enforcer" msgstr "Reforço de Suporte" msgid "Change part type" -msgstr "" +msgstr "Mudar tipo de peça" msgid "Set as an individual object" msgstr "Definir como objeto individual" @@ -2226,10 +2291,10 @@ msgid "Printable" msgstr "Imprimível" msgid "Auto Drop" -msgstr "" +msgstr "Soltura Automática" msgid "Automatically drops the selected object to the build plate" -msgstr "" +msgstr "Solta automaticamente o objeto selecionado na placa de impressão" msgid "Fix model" msgstr "Corrigir modelo" @@ -2401,12 +2466,12 @@ msgstr "" msgid "Edit" msgstr "Editar" -msgid "Delete this filament" -msgstr "Apagar este filamento" - msgid "Merge with" msgstr "Mesclar com" +msgid "Delete this filament" +msgstr "Apagar este filamento" + msgid "Select All" msgstr "Selecionar Tudo" @@ -2438,7 +2503,7 @@ msgid "Reload all from disk" msgstr "Recarregar tudo do disco" msgid "Auto Rotate" -msgstr "Auto Rotação" +msgstr "Rotação Automática" msgid "Auto rotate current plate" msgstr "Rotacionar automaticamente a placa atual" @@ -2511,7 +2576,7 @@ msgid "Set Filament for selected items" msgstr "Definir Filamento para itens selecionados" msgid "Automatically snaps the selected object to the build plate" -msgstr "" +msgstr "Encaixa automaticamente o objeto selecionado na placa de impressão" msgid "Unlock" msgstr "Desbloquear" @@ -2802,7 +2867,7 @@ msgid "Brim" msgstr "Borda" msgid "Object/Part Settings" -msgstr "" +msgstr "Configurações de Objeto/Peça" msgid "Reset parameter" msgstr "Redefinir parâmetro" @@ -3512,6 +3577,13 @@ msgid "" "enhancements. Each project carried the work of its predecessors forward, " "crediting those who came before." msgstr "" +"O fatiamento de código aberto se baseia em uma tradição de colaboração e " +"atribuição. O Slic3r, criado por Alessandro Ranellucci e a comunidade " +"RepRap, lançou as fundações. O PrusaSlicer, da Prusa Research, se baseou " +"nesse trabalho, o Bambu Studio foi derivado do PrusaSlicer, e o SuperSlicer " +"o estendeu com melhorias impulsionadas pela comunidade. Cada projeto deu " +"continuidade ao trabalho de seus predecessores, dando crédito àqueles que " +"vieram antes." msgid "" "OrcaSlicer began in that same spirit, drawing from PrusaSlicer, BambuStudio, " @@ -3519,12 +3591,20 @@ msgid "" "introducing advanced calibration tools, precise wall and seam control and " "hundreds of other features." msgstr "" +"O OrcaSlicer começou com esse mesmo espírito, inspirando-se no PrusaSlicer, " +"Bambu Studio, SuperSlicer e CuraSlicer. Mas desde então, cresceu muito além " +"de suas origens, introduzindo ferramentas avançadas de calibração, controle " +"preciso de paredes e costuras e centenas de outros recursos." msgid "" "Today, OrcaSlicer is the most widely used and actively developed open-source " "slicer in the 3D printing community. Many of its innovations have been " "adopted by other slicers, making it a driving force for the entire industry." msgstr "" +"Atualmente, o OrcaSlicer é o fatiador de código aberto mais utilizado e " +"ativamente desenvolvido na comunidade de impressão 3D. Muitas de suas " +"inovações foram adotadas por outros fatiadores, tornando-o uma força motriz " +"para toda a indústria." msgid "Version" msgstr "Versão" @@ -4769,9 +4849,6 @@ msgstr "Parar de Secar" msgid "Proceed" msgstr "Prosseguir" -msgid "Done" -msgstr "Concluído" - msgid "Retry" msgstr "Tentar Novamente" @@ -5036,33 +5113,6 @@ msgstr "Transição de suporte" msgid "Mixed" msgstr "Misturado" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Taxa de fluxo" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Velocidade do ventilador" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Tempo" - -msgid "Actual speed profile" -msgstr "Perfil de velocidade real" - -msgid "Speed: " -msgstr "Velocidade: " - msgid "Height: " msgstr "Altura: " @@ -5088,7 +5138,7 @@ msgid "Color: " msgstr "Cor: " msgid "Acceleration: " -msgstr "" +msgstr "Aceleração: " msgid "Jerk: " msgstr "" @@ -5096,6 +5146,33 @@ msgstr "" msgid "PA: " msgstr "AP: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Taxa de fluxo" + +msgid "Fan speed" +msgstr "Velocidade do ventilador" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Tempo" + +msgid "Speed: " +msgstr "Velocidade: " + +msgid "Actual speed profile" +msgstr "Perfil de velocidade real" + msgid "Statistics of All Plates" msgstr "Estatísticas de Todas as Placas" @@ -5226,7 +5303,7 @@ msgid "Actual Speed (mm/s)" msgstr "Velocidade Real (mm/s)" msgid "Acceleration (mm/s²)" -msgstr "" +msgstr "Aceleração (mm/s²)" msgid "Jerk (mm/s)" msgstr "" @@ -5262,7 +5339,7 @@ msgid "Filament change times" msgstr "Quantidade de trocas de filamento" msgid "Tool changes" -msgstr "" +msgstr "Trocas de ferramenta" msgid "Color change" msgstr "Mudança de cor" @@ -5354,10 +5431,10 @@ msgid "Sequence" msgstr "Sequência" msgid "Object Selection" -msgstr "" +msgstr "Seleção de Objeto" msgid "Part Selection" -msgstr "" +msgstr "Seleção de Peça" msgid "number keys" msgstr "teclas numéricas" @@ -5436,9 +5513,6 @@ msgstr "Orientar" msgid "Arrange options" msgstr "Opções de arranjo" -msgid "Spacing" -msgstr "Espaçamento" - msgid "0 means auto spacing." msgstr "0 significa auto-espaçamento." @@ -5573,7 +5647,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5975,6 +6049,15 @@ msgstr "Exportar configuração atual para arquivos" msgid "Export" msgstr "Exportar" +msgid "Sync Presets" +msgstr "Sincronizar Predefinições" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "Baixar e aplicar as predefinições mais recentes do OrcaCloud" + +msgid "You must be logged in to sync presets from cloud." +msgstr "Você precisa estar logado para sincronizar as predefinições da nuvem." + msgid "Quit" msgstr "Sair" @@ -6100,7 +6183,10 @@ msgid "View" msgstr "Visualizar" msgid "Preset Bundle" -msgstr "" +msgstr "Pacote de Predefinições" + +msgid "Syncing presets from cloud…" +msgstr "Sincronizando predefinições da nuvem…" msgid "Help" msgstr "Ajuda" @@ -6142,7 +6228,7 @@ msgid "VFA" msgstr "VFA" msgid "Calibration Guide" -msgstr "" +msgstr "Guia de Calibração" msgid "&Open G-code" msgstr "&Abrir G-code" @@ -6257,6 +6343,11 @@ msgid "" "2. The Filament presets\n" "3. The Printer presets" msgstr "" +"Você deseja sincronizar seus dados pessoais da OrcaCloud?\n" +"Isso inclui as seguintes informações:\n" +"1. As predefinições de Processo\n" +"2. As predefinições de Filamento\n" +"3. As predefinições de Impressora" msgid "Synchronization" msgstr "Sincronização" @@ -6280,6 +6371,8 @@ msgid "" "The player is not loaded because the GStreamer GTK video sink is missing or " "failed to initialize." msgstr "" +"O reprodutor não foi carregado porque o receptor de vídeo GTK do GStreamer " +"está ausente ou não pôde ser inicializado." msgid "Please confirm if the printer is connected." msgstr "Por favor, confirme se a impressora está conectada." @@ -7185,10 +7278,10 @@ msgid "Model file downloaded." msgstr "Arquivo do modelo baixado." msgid "Shared profiles may be available for this printer." -msgstr "" +msgstr "Perfis compartilhadas podem estar disponíveis para essa impressora." msgid "Browse shared profiles" -msgstr "" +msgstr "Procurar perfis compartilhados" msgid "Serious warning:" msgstr "Aviso sério:" @@ -7685,7 +7778,7 @@ msgid "Load 3MF" msgstr "Carregar 3MF" msgid "BambuStudio Project" -msgstr "" +msgstr "Projeto Bambu Studio" msgid "The 3MF is not supported by OrcaSlicer, loading geometry data only." msgstr "" @@ -7701,9 +7794,13 @@ msgstr "" msgid "" "The 3MF file was generated by an older version, loading geometry data only." msgstr "" +"O arquivo 3MF foi gerado por uma versão antiga, carregando apenas dados de " +"geometria." msgid "The 3MF file was generated by BambuStudio, loading geometry data only." msgstr "" +"O arquivo 3MF foi gerado pelo Bambu Studio, carregando apenas dados de " +"geometria." msgid "" "This project was created with an OrcaSlicer 2.3.1-alpha and uses infill " @@ -7746,16 +7843,22 @@ msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Found unrecognized settings:" msgstr "" +"O arquivo 3MF foi criado pelo Bambu Studio (versão %s), que é mais recente " +"que a versão compatível %s. Configurações não reconhecidas encontradas:" #, c-format, boost-format msgid "" "The 3MF was created by BambuStudio (version %s), which is newer than the " "compatible version %s. Some settings may not be fully compatible." msgstr "" +"O arquivo 3MF foi criado pelo Bambu Studio (versão %s), que é mais recente " +"que a versão compatível %s. Algumas configurações podem não ser compatíveis." msgid "" "The 3MF was created by BambuStudio. Some settings may differ from OrcaSlicer." msgstr "" +"O arquivo 3MF foi criado pelo Bambu Studio. Algumas configurações podem ser " +"diferentes do OrcaSlicer." msgid "Invalid values found in the 3MF:" msgstr "Valores inválidos encontrados no 3MF:" @@ -8746,21 +8849,36 @@ msgstr "Usar câmera livre" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "Se ativado, usa câmera livre. Se não ativado, usa câmera restrita." -msgid "Swap pan and rotate mouse buttons" -msgstr "Alterar a panorâmica e girar os botões do mouse" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Se ativado, troca as funções de panorâmica e rotação dos botões esquerdo e " -"direito do mouse." - msgid "Reverse mouse zoom" msgstr "Inverter zoom do mouse" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Se ativo, inverte a direção de zoom com a roda do mouse." +msgid "Pan" +msgstr "Mover" + +msgid "Left Mouse Drag" +msgstr "Arrastar com Mouse Esquerdo" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" +"Defina a ação que arrastar com o botão esquerdo do mouse deve executar." + +msgid "Middle Mouse Drag" +msgstr "Arrastar com Mouse do Meio" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" +"Defina a ação que arrastar com o botão do meio do mouse deve executar." + +msgid "Right Mouse Drag" +msgstr "Arrastar com Mouse Direito" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" +"Defina a ação que arrastar com o botão direito do mouse deve executar." + msgid "Clear my choice on..." msgstr "Limpar minha escolha em..." @@ -8785,6 +8903,73 @@ msgstr "" "Limpar minha opção de sincronização da predefinição da impressora após " "carregar o arquivo." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "Antisserrilhamento" + +msgid "MSAA Multiplier" +msgstr "Multiplicador MSAA" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" +"Define o nível de Antisserrilhamento Multiamostra.\n" +"Valores mais altos resultam em bordas mais suaves, mas o impacto no " +"desempenho é exponencial.\n" +"Valores mais baixos melhoram o desempenho, ao custo de bordas serrilhadas.\n" +"Se desativado, recomenda-se ativar o FXAA para reduzir as bordas " +"serrilhadas com impacto mínimo no desempenho.\n" +"\n" +"Requer reinicialização do aplicativo." + +msgid "Disabled" +msgstr "Desativado" + +msgid "FXAA post-processing" +msgstr "Pós-processamento FXAA" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" +"Aplica o Antisserrilhamento Aproximado Rápido como um passo de espaço de " +"tela.\n" +"Útil para desativar ou reduzir a configuração MSAA para melhorar o " +"desempenho.\n" +"\n" +"Entra em vigor imediatamente." + +msgid "FPS" +msgstr "FPS" + +msgid "FPS cap" +msgstr "Limite de FPS" + +msgid "(0 = unlimited)" +msgstr "(0 = ilimitado)" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Região de login" @@ -8804,15 +8989,17 @@ msgid "Test" msgstr "Testar" msgid "Cloud Providers" -msgstr "" +msgstr "Provedores de Nuvem" msgid "Enable Bambu Cloud" -msgstr "" +msgstr "Habilitar Bambu Cloud" msgid "" "Allow logging into Bambu Cloud alongside Orca Cloud. When enabled, a Bambu " "login section appears on the homepage." msgstr "" +"Permitir o login no Bambu Cloud juntamente com o OrcaCloud. Quando ativado, " +"uma seção de login do Bambu aparece na página inicial." msgid "Update & sync" msgstr "Atualizar e sincronizar" @@ -8941,6 +9128,15 @@ msgstr "Modo de Desenvolvedor" msgid "Skip AMS blacklist check" msgstr "Pular verificação de lista negra AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Permitir Armazenamento Anormal" @@ -9006,7 +9202,7 @@ msgid "Rotate view" msgstr "Rotacionar vista" msgid "Pan view" -msgstr "Movimentar vista" +msgstr "Mover vista" msgid "Zoom view" msgstr "Aproximar vista" @@ -10086,8 +10282,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ao gravar um timelapse sem o cabeçote aparecer, é recomendável adicionar uma " "\"Torre de Limpeza para Timelapse\" \n" @@ -10506,7 +10702,7 @@ msgid "Normal" msgstr "Normal" msgid "Resonance Compensation" -msgstr "" +msgstr "Compensação de Ressonância" msgid "Resonance Avoidance Speed" msgstr "Velocidade de Prevenção de Ressonância" @@ -10518,12 +10714,14 @@ msgid "" "The frequency of the anti-vibration signal will correspond to the natural " "frequency of the frame." msgstr "" +"A frequência do sinal antivibração corresponderá à frequência natural da " +"estrutura." msgid "Damping" -msgstr "" +msgstr "Amortecimento" msgid "Damping ratio for the input shaping filter." -msgstr "" +msgstr "Taxa de amortecimento para o filtro de modelagem de entrada." msgid "Speed limitation" msgstr "Limitação de velocidade" @@ -10651,29 +10849,42 @@ msgid "" " %s first layer %d %s, other layers %d %s\n" " %s max delta %d %s, current delta %d %s\n" msgstr "" +" - %s:\n" +" %s primeira camada %d %s, outras camads %d %s\n" +" %s delta máx %d %s, delta atual %d %s\n" msgid "" "Some first-layer and other-layer temperature pairs exceed safety limits.\n" msgstr "" +"Alguns pares de temperaturas entre a primeira camada e outras camadas " +"excedem os limites de segurança.\n" msgid "" "\n" "Invalid pairs:\n" msgstr "" +"\n" +"Pares inválidos:\n" msgid "" "\n" "You can go back to edit values, or continue if this is intentional." msgstr "" +"\n" +"Você pode voltar para editar os valores ou continuar se isso for " +"intencional." msgid "" "\n" "\n" "Continue anyway?" msgstr "" +"\n" +"\n" +"Continuar mesmo assim?" msgid "Temperature Safety Check" -msgstr "" +msgstr "Verificação de Segurança de Temperatura" msgid "Continue" msgstr "Continue" @@ -10682,7 +10893,7 @@ msgid "Back" msgstr "Atrás" msgid "Don't warn again for this preset" -msgstr "" +msgstr "Não avisar novamente para essa predifinição" #, c-format, boost-format msgid "Left: %s" @@ -10726,6 +10937,43 @@ msgstr "Não salvar" msgid "Discard" msgstr "Descartar" +msgid "the new profile" +msgstr "o novo perfil" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" +"Trocar para\n" +"\"%1%\"\n" +"descartando qualquer alteração feita em\n" +"\"%2%\"." + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" +"Todas as definições \"Novo Valor\" modificadas em\n" +"\"%1%\"\n" +"serão transferidos para\n" +"\"%2%\"." + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" +"Todas as definições \"Novo Valor\" foram salvas em\n" +"\"%1%\"\n" +"e \"%2%\" será aberto sem nenhuma alteração." + msgid "Click the right mouse button to display the full text." msgstr "Clique com o botão direito do mouse para exibir o texto completo." @@ -11313,6 +11561,9 @@ msgstr "Clique aqui para baixá-lo." msgid "Login" msgstr "Entrar" +msgid "Login failed. Please try again." +msgstr "Falha no login. Tente novamente." + msgid "[Action Required] " msgstr "[Ação Necessária] " @@ -11349,6 +11600,18 @@ msgstr "Mostrar lista de atalhos de teclado" msgid "Global shortcuts" msgstr "Atalhos globais" +msgid "Pan View" +msgstr "Mover Vista" + +msgid "Rotate View" +msgstr "Rotacionar Vista" + +msgid "Middle mouse button" +msgstr "Botão do meio do mouse" + +msgid "Zoom View" +msgstr "Aproximar Vista" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11568,7 +11831,7 @@ msgid "New version of Orca Slicer" msgstr "Nova versão do OrcaSlicer" msgid "Check on Github" -msgstr "" +msgstr "Verifique no GitHub" msgid "Skip this Version" msgstr "Pular esta versão" @@ -11839,9 +12102,6 @@ msgstr " não pode ser colocado na " msgid "Internal Bridge" msgstr "Ponte interna" -msgid "Multiple" -msgstr "Múltiplo" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -11994,16 +12254,24 @@ msgid "" "temperature must fall within the recommended nozzle temperature range of the " "other filaments. Otherwise, nozzle clogging or printer damage may occur." msgstr "" +"As temperaturas dos bicos selecionadas são incompatíveis. A temperatura do " +"bico de cada filamento deve estar dentro da faixa de temperatura recomendada " +"para os demais filamentos. Caso contrário, pode ocorrer entupimento do bico " +"ou danos à impressora." msgid "" "Invalid recommended nozzle temperature range. The lower bound must be lower " "than the upper bound." msgstr "" +"Faixa de temperatura do bico recomendada inválida. O limite inferior deve " +"ser menor que o limite superior." msgid "" "If you still want to print, you can enable the option in Preferences / " "Control / Slicing / Remove mixed temperature restriction." msgstr "" +"Se ainda assim desejar imprimir, você pode ativar a opção em Preferências / " +"Controle / Fatiamento / Remover restrição de temperatura mista." msgid "No extrusions under current settings." msgstr "Nenhuma extrusão com as configurações atuais." @@ -13408,7 +13676,7 @@ msgstr "" "remoção da borda." msgid "Brim flow ratio" -msgstr "" +msgstr "Taxa de fluxo em borda" msgid "" "This factor affects the amount of material for brims.\n" @@ -13418,6 +13686,13 @@ msgid "" "\n" "Note: The resulting value will not be affected by the first-layer flow ratio." msgstr "" +"Este fator afeta a quantidade de material para as bordas.\n" +"\n" +"O fluxo real da borda é calculado multiplicando-se este valor pela " +"taxa de fluxo do filamento e, se definida, pela taxa de fluxo do objeto.\n" +"\n" +"Nota: o valor resultante não será afetado pela taxa de fluxo da primeira " +"camada." msgid "Brim follows compensated outline" msgstr "Borda segue contorno compensado" @@ -13440,12 +13715,14 @@ msgstr "" "e pode fazer com que o borda se funda com as camadas superiores." msgid "Combine brims" -msgstr "" +msgstr "Combinar bordas" msgid "" "Combine multiple brims into one when they are close to each other. This can " "improve brim adhesion." msgstr "" +"Combine várias bordas em uma só quando estiverem próximas umas das outras. " +"Isso pode melhorar a adesão das bordas." msgid "Brim ears" msgstr "Orelhas da borda" @@ -13705,9 +13982,6 @@ msgstr "" "4. Aplicar a todos - gera segundas camadas de ponte para pontes internas e " "externas.\n" -msgid "Disabled" -msgstr "Desativado" - msgid "External bridge only" msgstr "Apenas pontes externas" @@ -14409,6 +14683,18 @@ msgstr "Automático para purga" msgid "Auto For Match" msgstr "Automático para correspondência" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Temperatura de purga" @@ -14932,6 +15218,17 @@ msgstr "" "Usar múltiplas linhas para o padrão de preenchimento, se suportado pelo " "padrão de preenchimento." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Padrão de preenchimento esparso" @@ -15112,8 +15409,8 @@ msgid "mm/s² or %" msgstr "mm/s² ou %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Aceleração do preenchimento esparso. Se o valor for expresso como uma " "porcentagem (por exemplo, 100%), será calculado com base na aceleração " @@ -15250,10 +15547,10 @@ msgstr "Velocidade total do ventilador na camada" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "A velocidade do ventilador aumentará linearmente de zero na camada " "\"close_fan_the_first_x_layers\" para o máximo na camada " @@ -15453,10 +15750,10 @@ msgstr "" "tempo, a largura da extrusão para uma camada específica também não deve ser " "inferior a um determinado nível. Geralmente, é igual a 15-25%% da altura da " "camada. Portanto, a espessura máxima da camada fuzzy com uma largura de " -"perímetro de 0,4 mm e uma altura de camada de 0,2 mm será 0,4-(0,2*0,25)=" -"±0,35 mm! Se você inserir um parâmetro maior que esse, o erro Flow::" -"spacing() será exibido e o modelo não será fatiado. Você pode escolher este " -"número até que o erro se repita." +"perímetro de 0,4 mm e uma altura de camada de 0,2 mm será 0,4-" +"(0,2*0,25)=±0,35 mm! Se você inserir um parâmetro maior que esse, o erro " +"Flow::spacing() será exibido e o modelo não será fatiado. Você pode escolher " +"este número até que o erro se repita." msgid "Displacement" msgstr "Deslocamento" @@ -15776,6 +16073,49 @@ msgstr "" "ou para fazer o ventilador alcançar a velocidade mais rapidamente.\n" "Defina como 0 para desativar." +msgid "Minimum non-zero part cooling fan speed" +msgstr "Velocidade mínima não-zero da ventoinha de resfriamento da peça" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" +"Algumas ventoinhas de resfriamento de componentes não conseguem iniciar a " +"rotação quando comandadas abaixo de um determinado ciclo de trabalho PWM. " +"Quando definido acima de 0, qualquer comando de ventoinha de resfriamento de " +"componentes diferente de zero será elevado para pelo menos essa porcentagem, " +"para que a ventoinha inicie de forma confiável. Um comando de ventoinha de 0 " +"(ventoinha desligada) é sempre atendido exatamente. Essa limitação é " +"aplicada após cada outro cálculo da ventoinha (rampa da primeira camada, " +"interpolação do tempo da camada, substituições de saliência/ponte/interface " +"de suporte/alisamento), para que o dimensionamento ainda opere dentro do " +"intervalo [este valor, 100%].\n" +"Se o seu firmware já desativa a ventoinha abaixo de um limite (por exemplo, " +"[fan] off_below: 0.10 do Klipper desliga a ventoinha sempre que o ciclo de " +"trabalho comandado for inferior a 10%), esta opção e o limite do firmware " +"devem idealmente ser definidos com o mesmo valor. A correspondência entre " +"eles (por exemplo, off_below: 0.10 no Klipper e 10% aqui) garante que o " +"fatiador nunca emita um valor diferente de zero que o firmware emitiria a " +"velocidade cai silenciosamente e a ventoinha nunca recebe um valor abaixo " +"daquele que você sabe que ela pode realmente atingir.\n" +"Defina como 0 para desativar." + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Custo de tempo" @@ -16243,16 +16583,17 @@ msgid "Use a fixed absolute angle for ironing." msgstr "Utilize um ângulo fixo absoluto para o alisamento." msgid "Ironing expansion" -msgstr "" +msgstr "Expansão de alisamento" msgid "Expand or contract the ironing area." -msgstr "" +msgstr "Expande ou contrai a área de alisamento." msgid "Z contouring enabled" -msgstr "" +msgstr "Contorno em Z habilitado" msgid "Enable Z-layer contouring (aka Z-layer anti-aliasing)." msgstr "" +"Habilitar o contorno da camada Z (antisserrilhamento da camada Z)." msgid "Minimize wall height angle" msgstr "" @@ -16267,10 +16608,11 @@ msgid "°" msgstr "°" msgid "Don't alternate fill direction" -msgstr "" +msgstr "Não alternar direção de preenchimento" msgid "Disable alternating fill direction when using Z contouring." msgstr "" +"Desative a alternância da direção de preenchimento ao usar o contorno em Z." msgid "Minimum z height" msgstr "" @@ -16531,7 +16873,7 @@ msgid "DAA" msgstr "" msgid "X" -msgstr "" +msgstr "X" msgid "" "Resonant frequency for the X axis input shaper.\n" @@ -16539,15 +16881,22 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Frequência de ressonância para o modelador de entrada do eixo X.\n" +"Zero usará a frequência do firmware.\n" +"Para desativar o modelador de entrada, use o tipo Desativar.\n" +"RRF: Os valores de X e Y são iguais." msgid "Y" -msgstr "" +msgstr "Y" msgid "" "Resonant frequency for the Y axis input shaper.\n" "Zero will use the firmware frequency.\n" "To disable input shaping, use the Disable type." msgstr "" +"Frequência de ressonância para o modelador de entrada do eixo Y.\n" +"Zero usará a frequência do firmware.\n" +"Para desativar a modelagem de entrada, use o tipo Desativar." msgid "" "Damping ratio for the X axis input shaper.\n" @@ -16555,12 +16904,19 @@ msgid "" "To disable input shaping, use the Disable type.\n" "RRF: X and Y values are equal." msgstr "" +"Taxa de amortecimento para o modelador de entrada do eixo X.\n" +"Zero usará a taxa de amortecimento do firmware.\n" +"Para desativar o modelador de entrada, use o tipo Desativar.\n" +"RRF: Os valores de X e Y são iguais." msgid "" "Damping ratio for the Y axis input shaper.\n" "Zero will use the firmware damping ratio.\n" "To disable input shaping, use the Disable type." msgstr "" +"Taxa de amortecimento para o modelador de entrada do eixo Y.\n" +"O valor zero usará a taxa de amortecimento do firmware.\n" +"Para desativar o modelador de entrada, use o tipo Desativar." msgid "" "Part cooling fan speed may be increased when auto cooling is enabled. This " @@ -16696,10 +17052,12 @@ msgstr "" "para usar esta função. Comando G-code: M106 P2 S(0-255)" msgid "For the first" -msgstr "" +msgstr "Para as primeiras" msgid "Set special auxiliary cooling fan for the first certain layers." msgstr "" +"Definir um ventilador auxiliar de resfriamento específico para as primeiras " +"camadas." msgid "" "Auxiliary fan speed will be ramped up linearly from layer \"For the first\" " @@ -16708,10 +17066,18 @@ msgid "" "in which case the fan will run at maximum allowed speed at layer \"For the " "first\" + 1." msgstr "" +"A velocidade do ventilador auxiliar aumentará linearmente da camada \"Para " +"as primeiras\" até o máximo na camada \"Velocidade total do ventilador na " +"camada\".\n" +"A \"Velocidade total do ventilador na camada\" será ignorada se for menor " +"que \"Para as primeiras\", caso em que o ventilador funcionará na velocidade " +"máxima permitida na camada \"Para as primeiras\" + 1." msgid "" "Special auxiliary cooling fan speed, effective only for the first x layers." msgstr "" +"Velocidade especial do ventilador de resfriamento auxiliar, efetiva apenas " +"para as primeiras x camadas." msgid "" "The lowest printable layer height for the extruder. Used to limit the " @@ -16941,12 +17307,14 @@ msgstr "" "configurações do OrcaSlicer lendo variáveis de ambiente." msgid "Change extrusion role G-code (process)" -msgstr "" +msgstr "G-code de mudança de tipo de extrusão (processo)" msgid "" "This G-code is inserted when the extrusion role is changed. It runs after " "the machine and filament extrusion role G-code." msgstr "" +"Este G-code é inserido quando a função de extrusão é trocada. Ele é " +"executado após o G-code de máquina e do tipo de extrusão de filamento." msgid "Printer type" msgstr "Tipo de impressora" @@ -17404,8 +17772,8 @@ msgid "Role base wipe speed" msgstr "Velocidade de limpeza baseada na função" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17804,6 +18172,27 @@ msgstr "Purgar o filamento restante na torre de preparo." msgid "Enable filament ramming" msgstr "Habilitar moldeamento de filamento" +msgid "Tool change on wipe tower" +msgstr "Troca de ferramenta na torre de limpeza" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" +"Força o cabeçote de impressão a se deslocar até a torre de limpeza antes de " +"emitir o comando de troca de ferramenta (Tx). Relevante apenas para " +"impressoras com múltiplas extrusoras (múltiplos cabeçotes de impressão) que " +"utilizam uma torre de limpeza Tipo 2. Por padrão, o Orca ignora o " +"deslocamento em máquinas com múltiplos cabeçotes de impressão, pois o " +"firmware gerencia a troca do cabeçote, o que pode resultar na emissão do " +"comando Tx acima da peça impressa. Habilite esta opção se desejar que a " +"troca de ferramenta seja sempre emitida acima da torre de limpeza." + msgid "No sparse layers (beta)" msgstr "Sem camadas esparsas (beta)" @@ -18156,15 +18545,17 @@ msgid "Threshold angle" msgstr "Ângulo limiar" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"O suporte será gerado para saliências cujo ângulo de inclinação esteja abaixo do limiar." -"Quanto menor esse valor, mais íngreme será a saliência que pode ser impressa sem suporte.\n" -"Observação: se definido como 0, os suportes normais usarão Sobreposição de limiar, " -"enquanto os suportes em árvore voltarão ao valor padrão de 30." +"O suporte será gerado para saliências cujo ângulo de inclinação esteja " +"abaixo do limiar.Quanto menor esse valor, mais íngreme será a saliência que " +"pode ser impressa sem suporte.\n" +"Observação: se definido como 0, os suportes normais usarão Sobreposição de " +"limiar, enquanto os suportes em árvore voltarão ao valor padrão de 30." msgid "Threshold overlap" msgstr "Sobreposição de limiar" @@ -18333,8 +18724,8 @@ msgstr "Ativar controle de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18344,8 +18735,8 @@ msgid "" "heater is installed." msgstr "" "Habilite esta opção para controle automatizado da temperatura da câmara. " -"Esta opção ativa a emissão de um comando M191 antes do \"machine_start_gcode" -"\"\n" +"Esta opção ativa a emissão de um comando M191 antes do " +"\"machine_start_gcode\"\n" "que define a temperatura da câmara e aguarda até que ela seja atingida. Além " "disso, emite um comando M141 no final da impressão para desligar o aquecedor " "da câmara, se presente.\n" @@ -18421,12 +18812,13 @@ msgid "This G-code is inserted when the extrusion role is changed." msgstr "Esse G-code é inserido quando o tipo de extrusão é alterado." msgid "Change extrusion role G-code (filament)" -msgstr "" +msgstr "G-code de mudança de tipo de extrusão (filamento)" msgid "" "This G-code is inserted when the extrusion role is changed for the active " "filament." msgstr "" +"Este G-code é inserido quando o tipo de extrusão do filamento ativo é alterada." msgid "" "Line width for top surfaces. If expressed as a %, it will be computed over " @@ -19027,15 +19419,18 @@ msgstr "" "superfícies superiores de uma única parede estiverem habilitadas." msgid "Maximum wall resolution" -msgstr "" +msgstr "Resolução máxima de parede" msgid "" "This value determines the smallest wall line segment length in mm. The " "smaller you set this value, the more accurate and precise the walls will be." msgstr "" +"Este valor determina o menor comprimento do segmento de linha da parede em " +"milímetros. Quanto menor for este valor, mais exatas e precisas serão as " +"paredes." msgid "Maximum wall deviation" -msgstr "" +msgstr "Desvio máximo de parede" msgid "" "The maximum deviation allowed when reducing the resolution for the 'Maximum " @@ -19044,6 +19439,11 @@ msgid "" "'Maximum wall resolution', so if the two conflict, 'Maximum wall deviation' " "takes precedence." msgstr "" +"O desvio máximo permitido ao reduzir a resolução para a configuração " +"'Resolução máxima de parede'. Se você aumentar esse valor, a impressão ficará " +"menos precisa, mas o G-code será menor. 'Desvio máximo de parede' limita a " +"'Resolução máxima de parede', portanto, se houver conflito entre os dois, " +"'Desvio máximo de parede' terá prioridade." msgid "First layer minimum wall width" msgstr "Largura mínima de parede da primeira camada" @@ -19346,11 +19746,11 @@ msgid "Debug level" msgstr "Nível de depuração" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Define o nível do log de depuração. 0:fatal, 1:error, 2:warning, 3:info, 4:" -"debug, 5:trace\n" +"Define o nível do log de depuração. 0:fatal, 1:error, 2:warning, 3:info, " +"4:debug, 5:trace\n" msgid "Enable timelapse for print" msgstr "Habilitar timelapse para impressão" @@ -19817,7 +20217,7 @@ msgid "Generating infill toolpath" msgstr "Gerando caminho da ferramenta de preenchimento" msgid "Z contouring" -msgstr "" +msgstr "Contorno em Z" msgid "Detect overhangs for auto-lift" msgstr "Detectar saliências para levantamento automático" @@ -19895,8 +20295,8 @@ msgstr "O arquivo fornecido não pôde ser lido porque está vazio" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Formato de arquivo desconhecido. O arquivo de entrada deve ter extensão ." -"stl, .obj, .amf(.xml)." +"Formato de arquivo desconhecido. O arquivo de entrada deve ter " +"extensão .stl, .obj, .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" @@ -20436,6 +20836,10 @@ msgid "" "temperature range of the other filaments. Otherwise, nozzle clogging or " "printer damage may occur." msgstr "" +"As temperaturas de bico selecionadas são incompatíveis. Para impressão com " +"múltiplos materiais, a temperatura do bico de cada filamento deve estar " +"dentro da faixa de temperatura recomendada para os demais filamentos. Caso " +"contrário, pode ocorrer entupimento do bico ou danos à impressora." msgid "Sync AMS and nozzle information" msgstr "Sincronizar informações do AMS e do bico" @@ -20861,25 +21265,25 @@ msgid "NOTE: High values may cause Layer shift (>%s)" msgstr "NOTA: Valores altos podem causar deslocamento de camada (>%s)" msgid "Flow Ratio Calibration" -msgstr "" +msgstr "Calibração de Taxa de Fluxo" msgid "Calibration Test Type" -msgstr "" +msgstr "Tipo de Teste de Calibração" msgid "Pass 1 (Coarse)" -msgstr "" +msgstr "Passo 1 (Grosso)" msgid "Pass 2 (Fine)" -msgstr "" +msgstr "Passo 2 (Fino)" msgid "YOLO (Recommended)" msgstr "YOLO (Recomendado)" msgid "YOLO (Perfectionist)" -msgstr "" +msgstr "YOLO (Perfeccionista)" msgid "Top Surface Pattern" -msgstr "" +msgstr "Padrão de Superfície Superior" msgid "Send G-code to printer host" msgstr "Enviar G-code para o host da impressora" @@ -21147,8 +21551,8 @@ msgstr "" "Você deseja reescrevê-lo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Renomearíamos as predefinições como \"Fornecedor Tipo Serial @ impressora " @@ -21333,6 +21737,24 @@ msgstr "" "A configuração predefinida do sistema não permite a criação. \n" "Insira novamente o modelo da impressora ou o diâmetro do bico." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" +"\n" +"\n" +"Perfis de bico disponíveis paar essa impressora:" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" +"\n" +"\n" +"Escolha SIM para trocar a predefinição existente:" + msgid "Printer Created Successfully" msgstr "Impressora criada com sucesso" @@ -21595,36 +22017,6 @@ msgstr "" "O tipo de bico não corresponde ao tipo de bico real da impressora.\n" "Clique no botão Sincronizar acima e reinicie a calibração." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "tamanho do bico na predefinição: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "tamanho do bico memorizado: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"O tamanho do bico na prédefinição não corresponde ao bico memorizado. Você " -"trocou o bico recentemente?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "bico[%d] na predefinição: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "bico[%d] memorizado: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"O tipo de bico predefinido não corresponde ao bico memorizado. Você trocou o " -"bico recentemente?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Imprimir material %1s com bico %2s pode causar danos ao bico." @@ -22503,7 +22895,7 @@ msgid "Global settings" msgstr "Definições globais" msgid "Video tutorial" -msgstr "" +msgstr "Tutorial em vídeo" msgid "(Sync with printer)" msgstr "(Sinc. com impressora)" @@ -22574,26 +22966,17 @@ msgstr "Ângulo máx" msgid "Detection radius" msgstr "Raio de detecção" -msgid "Remove selected points" -msgstr "Remover pontos selecionados" +msgid "Selected" +msgstr "Selecionado" -msgid "Remove all" -msgstr "Remover tudo" +msgid "Auto-generate" +msgstr "Geração automática" -msgid "Auto-generate points" -msgstr "Pontos gerados automaticamente" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "Gerar orelhas de borda usando o Ângulo Máximo e o Raio de Detecção" -msgid "Add a brim ear" -msgstr "Adicionar orelha da borda" - -msgid "Delete a brim ear" -msgstr "Remover orelha da borda" - -msgid "Adjust head diameter" -msgstr "Ajustar diâmetro da cabeça" - -msgid "Adjust section view" -msgstr "Ajustar vista de seção" +msgid "Add or Select" +msgstr "Adicionar ou Selecionar" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22605,8 +22988,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Definir o tipo de borda deste objeto como \"pintada\"" -msgid " invalid brim ears" -msgstr " orelhas da borda iválidas" +msgid "invalid brim ears" +msgstr "orelhas da borda iválidas" msgid "Brim Ears" msgstr "Orelhas da Borda" @@ -22890,15 +23273,13 @@ msgstr "" "Você sabia que o OrcaSlicer oferece uma ampla gama de atalhos de teclado e " "operações de cena 3D?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Reverter em ímpar\n" -"Você sabia que a função Reverter em ímpar pode melhorar " -"significativamente a qualidade da superfície das saliências?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23192,6 +23573,85 @@ msgstr "" "aumentar adequadamente a temperatura da mesa aquecida pode reduzir a " "probabilidade de empenamento?" +#~ msgid "Erase all painting" +#~ msgstr "Apagar toda a pintura" + +#~ msgid "Reset cut" +#~ msgstr "Redefinir corte" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Alterar a panorâmica e girar os botões do mouse" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Se ativado, troca as funções de panorâmica e rotação dos botões esquerdo " +#~ "e direito do mouse." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "tamanho do bico na predefinição: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "tamanho do bico memorizado: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "O tamanho do bico na prédefinição não corresponde ao bico memorizado. " +#~ "Você trocou o bico recentemente?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "bico[%d] na predefinição: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "bico[%d] memorizado: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "O tipo de bico predefinido não corresponde ao bico memorizado. Você " +#~ "trocou o bico recentemente?" + +#~ msgid "Remove selected points" +#~ msgstr "Remover pontos selecionados" + +#~ msgid "Remove all" +#~ msgstr "Remover tudo" + +#~ msgid "Auto-generate points" +#~ msgstr "Pontos gerados automaticamente" + +#~ msgid "Add a brim ear" +#~ msgstr "Adicionar orelha da borda" + +#~ msgid "Delete a brim ear" +#~ msgstr "Remover orelha da borda" + +#~ msgid "Adjust head diameter" +#~ msgstr "Ajustar diâmetro da cabeça" + +#~ msgid "Adjust section view" +#~ msgstr "Ajustar vista de seção" + +#~ msgid " invalid brim ears" +#~ msgstr " orelhas da borda iválidas" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Reverter em ímpar\n" +#~ "Você sabia que a função Reverter em ímpar pode melhorar " +#~ "significativamente a qualidade da superfície das saliências?" + #~ msgid "Pen size" #~ msgstr "Tamanho da caneta" @@ -23282,9 +23742,9 @@ msgstr "" #~ msgstr "" #~ "Você deseja sincronizar seus dados pessoais da Bambu Cloud?\n" #~ "Isso inclui as seguintes informações:\n" -#~ "1. Predefinições de Processo\n" -#~ "2. Predefinições de Filamento\n" -#~ "3. Predefinições de Impressora" +#~ "1. As predefinições de Processo\n" +#~ "2. As predefinições de Filamento\n" +#~ "3. As predefinições de Impressora" #~ msgid "Show/Hide advanced parameters" #~ msgstr "Mostrar/Ocultar parâmetros avançados" @@ -24898,12 +25358,6 @@ msgstr "" #~ "O tamanho do arquivo excede o limite de envio de 100MB. Por favor, envie " #~ "seu arquivo através do painel." -#~ msgid "Please input a valid value (K in 0~0.3)" -#~ msgstr "Por favor insira um valor válido (K entre 0~0.3)" - -#~ msgid "Please input a valid value (K in 0~0.3, N in 0.6~2.0)" -#~ msgstr "Por favor insira um valor válido (K entre 0~0.3, N entre 0.6~2.0))" - #~ msgid "PrintingPause" #~ msgstr "Pausa na Impressão" diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index b0afabb0d5..44afae3c57 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer V2.3.2 beta2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2026-02-25 13:38+0300\n" "Last-Translator: Felix14_v2\n" "Language-Team: Felix14_v2 (ДС/ТГ: @felix14_v2, почта: aleks111001@list.ru), " @@ -16,8 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.8\n" # В большинстве мест подставляется в "%s экструдер", но также тянется и в @@ -130,8 +130,8 @@ msgstr "Выполнить" msgid "On highlighted overhangs only" msgstr "Только на подсвеченных нависаниях" -msgid "Erase all painting" -msgstr "Очистить всё" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Выделить зоны нависания" @@ -208,6 +208,9 @@ msgstr "Выделение граней по углу нависания." msgid "No auto support" msgstr "Автоподдержка отключена" +msgid "Done" +msgstr "Готово" + msgid "Support Generated" msgstr "Поддержка сгенерирована" @@ -361,6 +364,12 @@ msgstr "Выбрать часть" msgid "Fixed step drag" msgstr "Сместить с шагом" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Масштабирование без привязки к центру" @@ -509,6 +518,21 @@ msgstr "Положение сечения" msgid "Build Volume" msgstr "Область построения" +msgid "Multiple" +msgstr "Множитель" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +# В английском тут в кучу намешаны и "отступ", и "интервал". Используется в +# настройках авторасстановки моделей (в значении отступа) и в окне настроек +# рэмминга (в значении интервала, но там процент, так что не прям критично) +msgid "Spacing" +msgstr "Отступ" + msgid "Part" msgstr "Часть" @@ -618,12 +642,6 @@ msgstr "Редактировать соединения" msgid "Add connectors" msgstr "Добавить соединения" -msgid "Reset cut" -msgstr "Сброс сечения" - -msgid "Reset cutting plane and remove connectors" -msgstr "Сброс позиции секущей плоскости и удаление всех соединений" - msgid "Upper part" msgstr "Верхняя часть" @@ -643,6 +661,9 @@ msgstr "Результат" msgid "Cut to parts" msgstr "Объединить в сборку" +msgid "Reset cutting plane and remove connectors" +msgstr "Сброс позиции секущей плоскости и удаление всех соединений" + msgid "Perform cut" msgstr "Разрезать" @@ -877,6 +898,9 @@ msgstr "Шрифт по умолчанию" msgid "Advanced" msgstr "Расширенные" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1542,18 +1566,6 @@ msgstr "" "Выбор элемента 1 отменён,\n" "элемент 2 стал элементом 1" -# Зачем здесь "внимание"? Это просто руководство к действию -msgid "Warning: please select Plane's feature." -msgstr "Внимание: выберите плоскость." - -# Зачем здесь "внимание"? Это просто руководство к действию -msgid "Warning: please select Point's or Circle's feature." -msgstr "Внимание: выберите точку или окружность." - -# Зачем здесь "внимание"? Это просто руководство к действию -msgid "Warning: please select two different meshes." -msgstr "Внимание: выберите элемент на втором объекте." - msgid "Copy to clipboard" msgstr "Копировать в буфер обмена" @@ -1607,6 +1619,18 @@ msgstr "(подвижная)" msgid "Point and point assembly" msgstr "Сборка по точкам" +# Зачем здесь "внимание"? Это просто руководство к действию +msgid "Warning: please select two different meshes." +msgstr "Внимание: выберите элемент на втором объекте." + +# Зачем здесь "внимание"? Это просто руководство к действию +msgid "Warning: please select Plane's feature." +msgstr "Внимание: выберите плоскость." + +# Зачем здесь "внимание"? Это просто руководство к действию +msgid "Warning: please select Point's or Circle's feature." +msgstr "Внимание: выберите точку или окружность." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1810,6 +1834,18 @@ msgstr "Установлена последняя версия программ msgid "Info" msgstr "Информация" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1878,6 +1914,23 @@ msgstr "" "Слишком старая версия Orca Slicer. Для корректной работы обновите программу " "до последней версии." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Получение информации о принтере, попробуйте позднее." @@ -2212,9 +2265,9 @@ msgid "" "No - Do not change these settings for me" msgstr "" "На верхней поверхности модели присутствует рельефный текст. Для достижения " -"оптимального результата рекомендуется установить «Порог одного " -"периметра» (min_width_top_surface) равным 0, чтобы избежать проблем в работе " -"настройки «Только один периметр на верхней поверхности».\n" +"оптимального результата рекомендуется установить «Порог одного периметра» " +"(min_width_top_surface) равным 0, чтобы избежать проблем в работе настройки " +"«Только один периметр на верхней поверхности».\n" "\n" "Да – применить рекомендуемые настройки\n" "Нет – ничего не менять" @@ -2439,12 +2492,12 @@ msgstr "Автоориентация модели для улучшения ка msgid "Edit" msgstr "Правка" -msgid "Delete this filament" -msgstr "Удалить этот филамент" - msgid "Merge with" msgstr "Объединить с" +msgid "Delete this filament" +msgstr "Удалить этот филамент" + msgid "Select All" msgstr "Выбрать всё" @@ -4865,9 +4918,6 @@ msgstr "Остановить сушку" msgid "Proceed" msgstr "Продолжить" -msgid "Done" -msgstr "Готово" - msgid "Retry" msgstr "Повтор" @@ -5141,41 +5191,6 @@ msgstr "Переходный слой" msgid "Mixed" msgstr "Смешанный" -msgid "mm/s" -msgstr "мм/с" - -msgid "mm/s²" -msgstr "мм/с²" - -# В идеале должно быть "Объёмный расход", но кое-как пытаемся совместить с -# меню калибровок. Используется в табличке просмотра слоёв в значении "расход" -# и в меню калибровок в значении "поток". -msgid "Flow rate" -msgstr "Расход" - -msgid "mm³/s" -msgstr "мм³/с" - -# Костыль для обхода переноса одной буквы на строку – 0хлаждение, пока -# попробуем просто обдув. "Скорость вентилятора" тут не очень уместно, т.к. -# отображается в просмотре кода не в % (косяк орки) а в единицах, + длинная -# строка растягивает панель свойств линии. -msgid "Fan speed" -msgstr "Обдув" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Время" - -# Перед строкой подставляется кнопка "Показать"/"Скрыть" -msgid "Actual speed profile" -msgstr "график расчётной скорости" - -msgid "Speed: " -msgstr "Скорость: " - msgid "Height: " msgstr "Высота: " @@ -5210,6 +5225,41 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "мм/с" + +msgid "mm/s²" +msgstr "мм/с²" + +msgid "mm³/s" +msgstr "мм³/с" + +# В идеале должно быть "Объёмный расход", но кое-как пытаемся совместить с +# меню калибровок. Используется в табличке просмотра слоёв в значении "расход" +# и в меню калибровок в значении "поток". +msgid "Flow rate" +msgstr "Расход" + +# Костыль для обхода переноса одной буквы на строку – 0хлаждение, пока +# попробуем просто обдув. "Скорость вентилятора" тут не очень уместно, т.к. +# отображается в просмотре кода не в % (косяк орки) а в единицах, + длинная +# строка растягивает панель свойств линии. +msgid "Fan speed" +msgstr "Обдув" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Время" + +msgid "Speed: " +msgstr "Скорость: " + +# Перед строкой подставляется кнопка "Показать"/"Скрыть" +msgid "Actual speed profile" +msgstr "график расчётной скорости" + msgid "Statistics of All Plates" msgstr "Статистика по всем столам" @@ -5553,12 +5603,6 @@ msgstr "Ориентация" msgid "Arrange options" msgstr "Параметры расстановки" -# В английском тут в кучу намешаны и "отступ", и "интервал". Используется в -# настройках авторасстановки моделей (в значении отступа) и в окне настроек -# рэмминга (в значении интервала, но там процент, так что не прям критично) -msgid "Spacing" -msgstr "Отступ" - msgid "0 means auto spacing." msgstr "0 - автоматический отступ." @@ -5697,7 +5741,7 @@ msgstr "Объём:" msgid "Size:" msgstr "Размер:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -6119,6 +6163,15 @@ msgstr "Экспортировать текущую конфигурацию в msgid "Export" msgstr "Экспорт" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Выход" @@ -6247,6 +6300,9 @@ msgstr "Вид" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Помощь" @@ -8928,22 +8984,33 @@ msgstr "" "Если включено, используется свободное вращение камеры. Если выключено, " "используется вращение камеры с ограничениями." -# Поменять местами кнопки перемещение и поворота камеры -msgid "Swap pan and rotate mouse buttons" -msgstr "Поменять местами перемещение и вращение камеры" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Поменять местами функции перемещения и вращения камеры для левой и правой " -"кнопок мыши." - msgid "Reverse mouse zoom" msgstr "Инвертировать приближение" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Инвертировать масштабирование с помощью колеса мыши." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Сброс выбора по умолчанию" @@ -8971,6 +9038,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "Отменить выбор для синхронизации профиля принтера при открытии файла." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Отключено" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Регион входа" @@ -9118,6 +9238,15 @@ msgstr "Режим разработчика" msgid "Skip AMS blacklist check" msgstr "Пропуск проверки материалов в AMS из файла чёрного списка" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Игнорировать неисправность хранилища" @@ -10255,8 +10384,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записи таймлапса со скрытием головы рекомендуется добавить черновую " "башню таймлапса.\n" @@ -10913,6 +11042,32 @@ msgstr "Не сохранять" msgid "Discard" msgstr "Не сохранять" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Нажмите правой кнопкой мыши, чтобы отобразить полный текст." @@ -11501,6 +11656,9 @@ msgstr "Нажмите здесь, чтобы загрузить его." msgid "Login" msgstr "Войти" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Требуется действие] " @@ -11537,6 +11695,18 @@ msgstr "Показать список сочетаний клавиш" msgid "Global shortcuts" msgstr "Глобальные горячие клавиши" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -12033,9 +12203,6 @@ msgstr " нельзя заправить в " msgid "Internal Bridge" msgstr "Внутренний мост" -msgid "Multiple" -msgstr "Множитель" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13908,9 +14075,6 @@ msgstr "" "4. Везде – создавать доп. слой как для внутренних, так и для внешних " "мостов.\n" -msgid "Disabled" -msgstr "Отключено" - msgid "External bridge only" msgstr "Внешние мосты" @@ -14663,6 +14827,18 @@ msgstr "Авто для промывки" msgid "Auto For Match" msgstr "Авто для сопоставления" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Температура прочистки" @@ -15184,6 +15360,17 @@ msgstr "" "Внимание: плотность заполнения будет скорректирована для сохранения того же " "расхода материала." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Шаблон заполнения" @@ -15396,8 +15583,8 @@ msgid "mm/s² or %" msgstr "мм/с² или %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Ускорение на разреженном заполнении. Можно указать процент от ускорения по " "умолчанию." @@ -15544,10 +15731,10 @@ msgstr "Полная скорость вентилятора на слое" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Интенсивность охлаждения будет линейно увеличиваться от нуля со слоя " "заданным параметром «Не включать вентилятор на первых» до заданной " @@ -15702,8 +15889,9 @@ msgstr "" "Максимальная величина отклонения сегментов оболочки. \n" "\n" "Внимание! Режимы «Экструзия» и «Совместный» не будут работать, если значение " -"превышает ширину периметра. Если при нарезке возникает ошибка Flow::" -"spacing(), проверьте, что значение меньше выражения: [∅ сопла - h слоя/4]." +"превышает ширину периметра. Если при нарезке возникает ошибка " +"Flow::spacing(), проверьте, что значение меньше выражения: [∅ сопла - h слоя/" +"4]." msgid "Fuzzy skin point distance" msgstr "Длина сегментов" @@ -16084,6 +16272,30 @@ msgstr "" "увеличения скорости его вращения.\n" "Установите 0 для отключения." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Стоимость часа печати" @@ -17804,8 +18016,8 @@ msgid "Role base wipe speed" msgstr "Местная скорость очистки" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -18247,6 +18459,19 @@ msgstr "Прочистка сопла от остатков материала msgid "Enable filament ramming" msgstr "Включить рэмминг прутка" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Без разреженных слоёв (beta)" @@ -18646,15 +18871,18 @@ msgstr "Максимальный угол" # поддержки при этом будут использовать угол по умолчанию (30°)" ВНИМАНИЕ: # последнее предложение – особенность PR msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Создавать поддержки для поверхностей с указанным или более острым углом нависания над столом. " -"С понижением угла повышается допустимый наклон поверхности для печати без поддержки.\n" -"Примечание: используйте 0° для переключения обычных поддержек в режим обнаружения нависаний по проценту выноса линии. " -"Древовидные поддержки при этом будут использовать угол по умолчанию (30°)" +"Создавать поддержки для поверхностей с указанным или более острым углом " +"нависания над столом. С понижением угла повышается допустимый наклон " +"поверхности для печати без поддержки.\n" +"Примечание: используйте 0° для переключения обычных поддержек в режим " +"обнаружения нависаний по проценту выноса линии. Древовидные поддержки при " +"этом будут использовать угол по умолчанию (30°)" # ??? Порог перекрытия периметров msgid "Threshold overlap" @@ -18835,8 +19063,8 @@ msgstr "Вкл. контроль температуры" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -19938,8 +20166,8 @@ msgid "Debug level" msgstr "Уровень отладки журнала" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Задаёт параметр чувствительности записи событий в журнал:\n" " 0 – Критическая ошибка\n" @@ -20526,8 +20754,8 @@ msgstr "" msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *." -"zip.amf." +"Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или " +"*.zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: ошибка обработки" @@ -21781,8 +22009,8 @@ msgstr "" "Хотите перезаписать его?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Мы переименуем профиль в \"Производитель Тип Серия @выбранный принтер\".\n" @@ -21960,6 +22188,18 @@ msgstr "" "Системный профиль не допускает создания.\n" "Пожалуйста, повторно введите модель принтера или диаметр сопла." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Профиль принтера успешно создан" @@ -22210,36 +22450,6 @@ msgstr "" "Тип сопла не соответствует установленному соплу.\n" "Выполните синхронизацию и перезапустите калибровку." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "сопло в профиле: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "Запомненный размер сопла: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"Диаметр сопла в профиле не соответствует сохранённому \n" -"в памяти диаметру сопла. Вы недавно сменили сопло?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "Сопло [%d] в профиле: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "Сопло [%d] запомнено: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Тип сопла в профиле не соответствует сохранённому \n" -"в памяти диаметру сопла. Вы недавно сменили сопло?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -23174,26 +23384,17 @@ msgstr "Макс. угол" msgid "Detection radius" msgstr "Радиус обнаружения" -msgid "Remove selected points" -msgstr "Удалить выбранные" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Удалить все" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Сгенерировать автоматически" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Добавить «мышиные уши»" - -msgid "Delete a brim ear" -msgstr "Удалить «мышиные уши»" - -msgid "Adjust head diameter" -msgstr "Настройка диаметра головы" - -msgid "Adjust section view" -msgstr "Настройка вида сечения" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -23205,8 +23406,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Переключить тип каймы для этого объекта на «Вручную»." -msgid " invalid brim ears" -msgstr " недействительные «мышиные уши»" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Кайма «мышиные уши»" @@ -23436,9 +23637,9 @@ msgid "" "overhangs?" msgstr "" "Порядок печати периметров «Навстречу»\n" -"Знаете ли вы, что можно использовать порядок печати периметров " -"«Навстречу» (Inner/Outer/Inner)? Это улучшает точность, прочность и внешний " -"вид, если у модели не очень крутые нависания." +"Знаете ли вы, что можно использовать порядок печати периметров «Навстречу» " +"(Inner/Outer/Inner)? Это улучшает точность, прочность и внешний вид, если у " +"модели не очень крутые нависания." #: resources/data/hints.ini: [hint:Chamber temperature] msgid "" @@ -23504,15 +23705,13 @@ msgstr "" "Знаете ли вы, что в Orca Slicer имеется большой список горячих клавиш для " "облегчения и ускорения работы с программой?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Реверс на нависаниях\n" -"Знаете ли вы, что функция Реверс на нависаниях может значительно " -"улучшить качество поверхности нависающий частей?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -23806,6 +24005,86 @@ msgstr "" "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" +#~ msgid "Erase all painting" +#~ msgstr "Очистить всё" + +#~ msgid "Reset cut" +#~ msgstr "Сброс сечения" + +# Поменять местами кнопки перемещение и поворота камеры +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Поменять местами перемещение и вращение камеры" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Поменять местами функции перемещения и вращения камеры для левой и правой " +#~ "кнопок мыши." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "сопло в профиле: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "Запомненный размер сопла: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "Диаметр сопла в профиле не соответствует сохранённому \n" +#~ "в памяти диаметру сопла. Вы недавно сменили сопло?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "Сопло [%d] в профиле: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "Сопло [%d] запомнено: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Тип сопла в профиле не соответствует сохранённому \n" +#~ "в памяти диаметру сопла. Вы недавно сменили сопло?" + +#~ msgid "Remove selected points" +#~ msgstr "Удалить выбранные" + +#~ msgid "Remove all" +#~ msgstr "Удалить все" + +#~ msgid "Auto-generate points" +#~ msgstr "Сгенерировать автоматически" + +#~ msgid "Add a brim ear" +#~ msgstr "Добавить «мышиные уши»" + +#~ msgid "Delete a brim ear" +#~ msgstr "Удалить «мышиные уши»" + +#~ msgid "Adjust head diameter" +#~ msgstr "Настройка диаметра головы" + +#~ msgid "Adjust section view" +#~ msgstr "Настройка вида сечения" + +#~ msgid " invalid brim ears" +#~ msgstr " недействительные «мышиные уши»" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Реверс на нависаниях\n" +#~ "Знаете ли вы, что функция Реверс на нависаниях может значительно " +#~ "улучшить качество поверхности нависающий частей?" + #~ msgid "Pen size" #~ msgstr "Размер кисти" @@ -25128,9 +25407,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Задание позиции" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index a42e820d05..10c620f390 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -112,8 +112,8 @@ msgstr "Utför" msgid "On highlighted overhangs only" msgstr "Endast på markerade överhäng" -msgid "Erase all painting" -msgstr "Radera all färgläggning" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Markera områden med överhäng" @@ -182,6 +182,9 @@ msgstr "Markera ytor enligt överhängs vinkeln." msgid "No auto support" msgstr "Ingen auto support" +msgid "Done" +msgstr "Klar" + msgid "Support Generated" msgstr "Support skapad" @@ -335,6 +338,12 @@ msgstr "Part selection" msgid "Fixed step drag" msgstr "Fixed step drag" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Single sided scaling" @@ -483,6 +492,18 @@ msgstr "Cut position" msgid "Build Volume" msgstr "Build Volume" +msgid "Multiple" +msgstr "Flertalet" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Mellanrum" + msgid "Part" msgstr "Del" @@ -590,12 +611,6 @@ msgstr "Redigera kontaktdon" msgid "Add connectors" msgstr "Lägg till kontaktdon" -msgid "Reset cut" -msgstr "Reset cut" - -msgid "Reset cutting plane and remove connectors" -msgstr "Reset cutting plane and remove connectors" - msgid "Upper part" msgstr "Övre del" @@ -614,6 +629,9 @@ msgstr "Efter skärning" msgid "Cut to parts" msgstr "Beskär till delar" +msgid "Reset cutting plane and remove connectors" +msgstr "Reset cutting plane and remove connectors" + msgid "Perform cut" msgstr "Utför beskärning" @@ -843,6 +861,9 @@ msgstr "Default font" msgid "Advanced" msgstr "Avancerat" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1491,15 +1512,6 @@ msgstr "" "Feature 1 has been reset, \n" "feature 2 has been feature 1" -msgid "Warning: please select Plane's feature." -msgstr "Warning: please select Plane's feature." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Warning: please select Point's or Circle's feature." - -msgid "Warning: please select two different meshes." -msgstr "Warning: please select two different meshes." - msgid "Copy to clipboard" msgstr "Kopiera till urklipp" @@ -1551,6 +1563,15 @@ msgstr "(Moving)" msgid "Point and point assembly" msgstr "Point and point assembly" +msgid "Warning: please select two different meshes." +msgstr "Warning: please select two different meshes." + +msgid "Warning: please select Plane's feature." +msgstr "Warning: please select Plane's feature." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Warning: please select Point's or Circle's feature." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1741,6 +1762,18 @@ msgstr "Det är den senaste versionen." msgid "Info" msgstr "Info" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1806,6 +1839,23 @@ msgstr "" "Versionen av Orca Slicer är för låg och behöver uppdateras till den senaste " "versionen innan den kan användas normalt" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Retrieving printer information, please try again later." @@ -2363,12 +2413,12 @@ msgstr "Auto placera objektet för att förbättra utskriftskvaliteten." msgid "Edit" msgstr "Redigera" -msgid "Delete this filament" -msgstr "Delete this filament" - msgid "Merge with" msgstr "Merge with" +msgid "Delete this filament" +msgstr "Delete this filament" + msgid "Select All" msgstr "Välj Alla" @@ -4704,9 +4754,6 @@ msgstr "Stop Drying" msgid "Proceed" msgstr "Fortsätt" -msgid "Done" -msgstr "Klar" - msgid "Retry" msgstr "Försök igen" @@ -4969,33 +5016,6 @@ msgstr "Support övergång" msgid "Mixed" msgstr "Blandat" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Flödeshastighet" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Fläkt hastighet" - -msgid "°C" -msgstr "° C" - -msgid "Time" -msgstr "Tid" - -msgid "Actual speed profile" -msgstr "Actual speed profile" - -msgid "Speed: " -msgstr "Hastighet: " - msgid "Height: " msgstr "Höjd: " @@ -5029,6 +5049,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Flödeshastighet" + +msgid "Fan speed" +msgstr "Fläkt hastighet" + +msgid "°C" +msgstr "° C" + +msgid "Time" +msgstr "Tid" + +msgid "Speed: " +msgstr "Hastighet: " + +msgid "Actual speed profile" +msgstr "Actual speed profile" + msgid "Statistics of All Plates" msgstr "Statistik för alla plattor" @@ -5362,9 +5409,6 @@ msgstr "Placera" msgid "Arrange options" msgstr "Arrangera val" -msgid "Spacing" -msgstr "Mellanrum" - msgid "0 means auto spacing." msgstr "0 means auto spacing." @@ -5499,7 +5543,7 @@ msgstr "Volym:" msgid "Size:" msgstr "Storlek:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5898,6 +5942,15 @@ msgstr "Exportera aktuell konfiguration till filer" msgid "Export" msgstr "Exportera" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Avsluta" @@ -6025,6 +6078,9 @@ msgstr "Vy" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Hjälp" @@ -8616,21 +8672,33 @@ msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "" "Om aktiverat, använd fri kamera. Om inte aktiverat, använd begränsad kamera." -msgid "Swap pan and rotate mouse buttons" -msgstr "Växla panorerings- och rotationsknapparna på musen" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Om aktiverat växlar vänster och höger musknapps panorerings- och " -"rotationsfunktioner." - msgid "Reverse mouse zoom" msgstr "Omvänd muszoomning" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Om aktiverad, vänder zoomriktningen med mushjulet." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Clear my choice on..." @@ -8654,6 +8722,59 @@ msgid "" msgstr "" "Clear my choice for synchronizing printer preset after loading the file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Disabled" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Logga in region" @@ -8807,6 +8928,15 @@ msgstr "Utvecklingsläge" msgid "Skip AMS blacklist check" msgstr "Hoppa över kontrollen av AMS svarta lista" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Allow Abnormal Storage" @@ -9913,8 +10043,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "När du spelar in timelapse utan verktygshuvud rekommenderas att du lägger " "till ett \"Timelapse Wipe Tower\".\n" @@ -10548,6 +10678,32 @@ msgstr "Spara inte" msgid "Discard" msgstr "Överge" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Högerklicka för att se hela texten." @@ -10955,8 +11111,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per objekt" -"\"." +"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per " +"objekt\"." msgid "" "You selected external and AMS filament at the same time in an extruder, you " @@ -11125,6 +11281,9 @@ msgstr "Klicka här för att ladda ner den." msgid "Login" msgstr "Logga in" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action Required] " @@ -11161,6 +11320,18 @@ msgstr "Visa tangentbordets genvägs lista" msgid "Global shortcuts" msgstr "Övergripande genvägar" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11645,9 +11816,6 @@ msgstr " can not be placed in the " msgid "Internal Bridge" msgstr "Internal Bridge" -msgid "Multiple" -msgstr "Flertalet" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13288,9 +13456,9 @@ msgid "" "quality for needle and small details." msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" -"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " -"kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " +"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " +"förbättra kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -13455,9 +13623,6 @@ msgstr "" "4. Apply to all - generates second bridge layers for both internal and " "external-facing bridges\n" -msgid "Disabled" -msgstr "Disabled" - msgid "External bridge only" msgstr "External bridge only" @@ -14139,6 +14304,18 @@ msgstr "Auto For Flush" msgid "Auto For Match" msgstr "Auto For Match" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Flush temperature" @@ -14642,6 +14819,17 @@ msgid "" msgstr "" "Using multiple lines for the infill pattern, if supported by infill pattern." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Sparsam ifyllnads mönster" @@ -14821,8 +15009,8 @@ msgid "mm/s² or %" msgstr "mm/s² eller %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Acceleration av gles utfyllnad. Om värdet uttrycks som en procentsats (t.ex. " "100%) kommer det att beräknas baserat på standard accelerationen." @@ -14958,16 +15146,16 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "layer" @@ -15472,6 +15660,30 @@ msgstr "" "fan started spinning from a stop, or to get the fan up to speed faster.\n" "Set to 0 to deactivate." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Time cost" @@ -17064,13 +17276,13 @@ msgid "Role base wipe speed" msgstr "Role base wipe speed" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." @@ -17455,6 +17667,19 @@ msgstr "Purge remaining filament into prime tower." msgid "Enable filament ramming" msgstr "Enable filament ramming" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "No sparse layers (beta)" @@ -17804,15 +18029,17 @@ msgid "Threshold angle" msgstr "Gräns vinkel" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Support skapas för överhäng vars sluttning är under denna gräns." -"Ju mindre detta värde är, desto brantare överhäng kan skrivas ut utan stöd.\n" -"Obs: Om det är satt till 0 använder vanliga stöd istället tröskelöverlappningen, " -"medan trädstöd faller tillbaka till ett standardvärde på 30." +"Support skapas för överhäng vars sluttning är under denna gräns.Ju mindre " +"detta värde är, desto brantare överhäng kan skrivas ut utan stöd.\n" +"Obs: Om det är satt till 0 använder vanliga stöd istället " +"tröskelöverlappningen, medan trädstöd faller tillbaka till ett standardvärde " +"på 30." msgid "Threshold overlap" msgstr "Threshold overlap" @@ -17822,9 +18049,9 @@ msgid "" "overlap is below the threshold. The smaller this value is, the steeper the " "overhang that can be printed without support." msgstr "" -"Om tröskelvinkeln är noll genereras stöd för överhäng vars överlappning " -"är under tröskeln. Ju mindre detta värde är, desto brantare är det överhäng " -"som kan skrivas ut utan stöd." +"Om tröskelvinkeln är noll genereras stöd för överhäng vars överlappning är " +"under tröskeln. Ju mindre detta värde är, desto brantare är det överhäng som " +"kan skrivas ut utan stöd." msgid "Tree support branch angle" msgstr "Tree support grenarnas vinkel" @@ -17978,8 +18205,8 @@ msgstr "Activate temperature control" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -17989,8 +18216,8 @@ msgid "" "heater is installed." msgstr "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18976,11 +19203,11 @@ msgid "Debug level" msgstr "Felsökningsnivå" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Välj felsöknings nivå. 0:allvarlig, 1:fel, 2:varning, 3:info, 4:felsök, 5:" -"spåra\n" +"Välj felsöknings nivå. 0:allvarlig, 1:fel, 2:varning, 3:info, 4:felsök, " +"5:spåra\n" msgid "Enable timelapse for print" msgstr "Enable timelapse for print" @@ -20750,12 +20977,12 @@ msgstr "" "Vill du skriva om det?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgid "Create Printer/Nozzle" @@ -20931,6 +21158,18 @@ msgstr "" "The system preset does not allow creation. \n" "Please re-enter the printer model or nozzle diameter." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Skapa Printer lyckades" @@ -21180,36 +21419,6 @@ msgstr "" "The nozzle type does not match the actual printer nozzle type.\n" "Please click the Sync button above and restart the calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "nozzle size in preset: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "nozzle size memorized: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "nozzle[%d] in preset: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozzle[%d] memorized: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -22127,26 +22336,17 @@ msgstr "Max angle" msgid "Detection radius" msgstr "Detection radius" -msgid "Remove selected points" -msgstr "Remove selected points" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Remove all" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Auto-generate points" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Add a brim ear" - -msgid "Delete a brim ear" -msgstr "Delete a brim ear" - -msgid "Adjust head diameter" -msgstr "Adjust head diameter" - -msgid "Adjust section view" -msgstr "Adjust section view" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22158,8 +22358,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Set the brim type of this object to \"painted\"" -msgid " invalid brim ears" -msgstr " ogiltiga öron" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Brätte Öron" @@ -22436,15 +22636,13 @@ msgstr "" "Did you know that Orca Slicer offers a wide range of keyboard shortcuts and " "3D scene operations?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22736,6 +22934,85 @@ msgstr "" "ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten " "för vridning?" +#~ msgid "Erase all painting" +#~ msgstr "Radera all färgläggning" + +#~ msgid "Reset cut" +#~ msgstr "Reset cut" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Växla panorerings- och rotationsknapparna på musen" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Om aktiverat växlar vänster och höger musknapps panorerings- och " +#~ "rotationsfunktioner." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "nozzle size in preset: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "nozzle size memorized: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "nozzle[%d] in preset: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozzle[%d] memorized: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" + +#~ msgid "Remove selected points" +#~ msgstr "Remove selected points" + +#~ msgid "Remove all" +#~ msgstr "Remove all" + +#~ msgid "Auto-generate points" +#~ msgstr "Auto-generate points" + +#~ msgid "Add a brim ear" +#~ msgstr "Add a brim ear" + +#~ msgid "Delete a brim ear" +#~ msgstr "Delete a brim ear" + +#~ msgid "Adjust head diameter" +#~ msgstr "Adjust head diameter" + +#~ msgid "Adjust section view" +#~ msgstr "Adjust section view" + +#~ msgid " invalid brim ears" +#~ msgstr " ogiltiga öron" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" + #~ msgid "Pen size" #~ msgstr "Penn storlek" @@ -23546,9 +23823,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Ställ in Position" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 6667141e66..ef84e57f0e 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2026-04-08 23:59+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -120,8 +120,8 @@ msgstr "Uygula" msgid "On highlighted overhangs only" msgstr "Yalnızca vurgulanan çıkıntılarda" -msgid "Erase all painting" -msgstr "Tüm boyamayı sil" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Çıkıntı alanlarını vurgulayın" @@ -191,6 +191,9 @@ msgstr "Yüzleri çıkıntı açısına göre vurgulayın." msgid "No auto support" msgstr "Otomatik destek yok" +msgid "Done" +msgstr "Tamamlandı" + msgid "Support Generated" msgstr "Destek Oluşturuldu" @@ -344,6 +347,12 @@ msgstr "Parça seçimi" msgid "Fixed step drag" msgstr "Sabit adım sürükleme" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Tek taraflı ölçekleme" @@ -492,6 +501,18 @@ msgstr "Kesim konumu" msgid "Build Volume" msgstr "Birim oluştur" +msgid "Multiple" +msgstr "Çoklu" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Boşluk" + msgid "Part" msgstr "Parça" @@ -599,12 +620,6 @@ msgstr "Bağlayıcıları düzenle" msgid "Add connectors" msgstr "Bağlayıcı ekle" -msgid "Reset cut" -msgstr "Kesimi sıfırla" - -msgid "Reset cutting plane and remove connectors" -msgstr "Kesme düzlemini sıfırlayın ve bağlayıcıları çıkarın" - msgid "Upper part" msgstr "Üst parça" @@ -623,6 +638,9 @@ msgstr "Kesildikten sonra" msgid "Cut to parts" msgstr "Parçalara ayır" +msgid "Reset cutting plane and remove connectors" +msgstr "Kesme düzlemini sıfırlayın ve bağlayıcıları çıkarın" + msgid "Perform cut" msgstr "Kesimi gerçekleştir" @@ -856,6 +874,9 @@ msgstr "Varsayılan yazı tipi" msgid "Advanced" msgstr "Gelişmiş" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1510,15 +1531,6 @@ msgstr "" "Özellik 1 sıfırlandı, \n" "özellik 2, özellik 1 oldu" -msgid "Warning: please select Plane's feature." -msgstr "Uyarı: Lütfen Düzlemin özelliğini seçin." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Uyarı: Lütfen Noktanın veya Çemberin özelliğini seçin." - -msgid "Warning: please select two different meshes." -msgstr "Uyarı: Lütfen iki farklı ağ seçin." - msgid "Copy to clipboard" msgstr "Panoya kopyala" @@ -1571,6 +1583,15 @@ msgstr "(Hareketli)" msgid "Point and point assembly" msgstr "Nokta ve nokta montajı" +msgid "Warning: please select two different meshes." +msgstr "Uyarı: Lütfen iki farklı ağ seçin." + +msgid "Warning: please select Plane's feature." +msgstr "Uyarı: Lütfen Düzlemin özelliğini seçin." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Uyarı: Lütfen Noktanın veya Çemberin özelliğini seçin." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1761,6 +1782,18 @@ msgstr "Bu en yeni versiyondur." msgid "Info" msgstr "Bilgi" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1827,6 +1860,23 @@ msgstr "" "Orca Slicer'ın sürümü çok düşük ve normal şekilde kullanılabilmesi için en " "son sürüme güncellenmesi gerekiyor." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Yazıcı bilgileri alınıyor, lütfen daha sonra tekrar deneyin." @@ -2382,12 +2432,12 @@ msgstr "Baskı kalitesini artırmak için nesneyi otomatik olarak yönlendirin." msgid "Edit" msgstr "Düzenle" -msgid "Delete this filament" -msgstr "Bu filamanı sil" - msgid "Merge with" msgstr "Şununla birleştir:" +msgid "Delete this filament" +msgstr "Bu filamanı sil" + msgid "Select All" msgstr "Hepsini seç" @@ -4719,9 +4769,6 @@ msgstr "Kurumayı Durdur" msgid "Proceed" msgstr "İlerlemek" -msgid "Done" -msgstr "Tamamlandı" - msgid "Retry" msgstr "Yeniden dene" @@ -4982,33 +5029,6 @@ msgstr "Destek geçişi" msgid "Mixed" msgstr "Karışık" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Akış hızı" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Fan hızı" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Zaman" - -msgid "Actual speed profile" -msgstr "Gerçek hız profili" - -msgid "Speed: " -msgstr "Hız: " - msgid "Height: " msgstr "Yükseklik: " @@ -5042,6 +5062,33 @@ msgstr "" msgid "PA: " msgstr "PA:" +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Akış hızı" + +msgid "Fan speed" +msgstr "Fan hızı" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Zaman" + +msgid "Speed: " +msgstr "Hız: " + +msgid "Actual speed profile" +msgstr "Gerçek hız profili" + msgid "Statistics of All Plates" msgstr "Tüm Plakaların İstatistikleri" @@ -5381,9 +5428,6 @@ msgstr "Yön" msgid "Arrange options" msgstr "Hizalama seçenekleri" -msgid "Spacing" -msgstr "Boşluk" - msgid "0 means auto spacing." msgstr "0 otomatik aralık anlamına gelir." @@ -5518,7 +5562,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5918,6 +5962,15 @@ msgstr "Geçerli yapılandırmayı dosyalara aktar" msgid "Export" msgstr "Dışa Aktar" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Çıkış" @@ -6045,6 +6098,9 @@ msgstr "Görünüm" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Yardım" @@ -8653,15 +8709,6 @@ msgstr "" "Etkinleştirilirse serbest kamerayı kullanın. Etkin değilse kısıtlı kamerayı " "kullanın." -msgid "Swap pan and rotate mouse buttons" -msgstr "Pan ve döndürme işlevlerini fare düğmeleri arasında değiştir" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Etkinleştirildiğinde, sol ve sağ fare düğmelerinin pan ve döndürme " -"işlevlerini yer değiştirir." - msgid "Reverse mouse zoom" msgstr "Mouse yakınlaştırmasını tersine çevir" @@ -8669,6 +8716,27 @@ msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "" "Etkinleştirilirse, mouse tekerleğiyle yakınlaştırmanın yönü tersine çevrilir." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Seçimimi temizle..." @@ -8693,6 +8761,59 @@ msgstr "" "Dosyayı yükledikten sonra yazıcı ön ayarını senkronize etmek için seçimimi " "temizleyin." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Devredışı" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Giriş bölgesi" @@ -8851,6 +8972,15 @@ msgstr "Geliştirici Modu" msgid "Skip AMS blacklist check" msgstr "AMS kara liste kontrolünü atla" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Anormal Depolamaya İzin Ver" @@ -9977,8 +10107,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -10606,6 +10736,32 @@ msgstr "Kaydetme" msgid "Discard" msgstr "Çıkart" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Tam metni görüntülemek için farenin sağ tuşuna tıklayın." @@ -11188,6 +11344,9 @@ msgstr "İndirmek için buraya tıklayın." msgid "Login" msgstr "Giriş yap" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[İşlem Gerekli]" @@ -11224,6 +11383,18 @@ msgstr "Klavye kısayolları listesini göster" msgid "Global shortcuts" msgstr "Genel kısayollar" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11712,9 +11883,6 @@ msgstr "içine yerleştirilemez" msgid "Internal Bridge" msgstr "İç Köprü" -msgid "Multiple" -msgstr "Çoklu" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "%1% çizgi genişliği hesaplanamadı. \"%2%\" değeri alınamıyor " @@ -11907,8 +12075,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" -"\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " +"göre\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -13541,9 +13709,6 @@ msgstr "" "4. Tümüne uygula - hem iç hem de dış köprüler için ikinci köprü katmanları " "oluşturur\n" -msgid "Disabled" -msgstr "Devredışı" - msgid "External bridge only" msgstr "Yalnızca dış köprü" @@ -14226,6 +14391,18 @@ msgstr "Yıkama İçin Otomatik" msgid "Auto For Match" msgstr "Otomatik Maç İçin" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Yıkama sıcaklığı" @@ -14733,6 +14910,17 @@ msgstr "" "Dolgu deseni tarafından destekleniyorsa, dolgu deseni için birden fazla " "çizgi kullanılması." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Dolgu deseni" @@ -14908,8 +15096,8 @@ msgid "mm/s² or %" msgstr "mm/s² veya %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Seyrek dolgunun hızlandırılması. Değer yüzde olarak ifade edilirse (örn. " "%100), varsayılan ivmeye göre hesaplanacaktır." @@ -15041,16 +15229,17 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " "\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" -"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." +"düşükse göz ardı edilecektir; bu durumda fan, " +"\"close_fan_the_first_x_layers\" + 1 katmanında izin verilen maksimum hızda " +"çalışacaktır." msgid "layer" msgstr "katman" @@ -15555,6 +15744,30 @@ msgstr "" "daha hızlı hızlanması için yetersiz olabileceği fanlar için kullanışlıdır.\n" "Devre dışı bırakmak için 0'a ayarlayın." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "Zaman maliyeti" @@ -17166,8 +17379,8 @@ msgid "Role base wipe speed" msgstr "Otomatik temizleme hızı" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17558,6 +17771,19 @@ msgstr "Kalan filamenti Prime Tower'da akıt." msgid "Enable filament ramming" msgstr "Filament sıkıştırmayı etkinleştir" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Seyrek katman yok (beta)" @@ -17908,15 +18134,17 @@ msgid "Threshold angle" msgstr "Destek açısı" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Eğim açısı eşik değerinin altında olan çıkıntılar için destek oluşturulacaktır." -"Bu değer ne kadar küçükse, desteksiz yazdırılabilecek çıkıntı o kadar dik olur.\n" -"Not: 0 olarak ayarlanırsa, normal destekler bunun yerine Eşik çakışması kullanır, " -"ağaç destekler ise varsayılan 30 değerine geri döner." +"Eğim açısı eşik değerinin altında olan çıkıntılar için destek " +"oluşturulacaktır.Bu değer ne kadar küçükse, desteksiz yazdırılabilecek " +"çıkıntı o kadar dik olur.\n" +"Not: 0 olarak ayarlanırsa, normal destekler bunun yerine Eşik çakışması " +"kullanır, ağaç destekler ise varsayılan 30 değerine geri döner." msgid "Threshold overlap" msgstr "Eşik çakışması" @@ -18080,8 +18308,8 @@ msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -19086,8 +19314,8 @@ msgid "Debug level" msgstr "Hata ayıklama düzeyi" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Hata ayıklama günlüğü düzeyini ayarlar. 0:önemli, 1:hata, 2:uyarı, 3:bilgi, " "4:hata ayıklama, 5:izleme\n" @@ -20877,8 +21105,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -21056,6 +21284,18 @@ msgstr "" "Sistem ön ayarı oluşturmaya izin vermiyor. \n" "Lütfen yazıcı modelini veya püskürtme ucu çapını yeniden girin." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Yazıcı Oluşturma Başarılı" @@ -21309,36 +21549,6 @@ msgstr "" "Lütfen yukarıdaki Senkronizasyon düğmesine tıklayın ve kalibrasyonu yeniden " "başlatın." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "ön ayardaki meme boyutu: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "hafızaya alınan meme boyutu: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"Ön ayardaki nozül tipinin boyutu hafızaya alınan nozül ile tutarlı değil. " -"Son zamanlarda nozulunuzu değiştirdiniz mi?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "püskürtme ucu[%d] ön ayarda: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozul[%d] hafızaya alındı: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Ön ayardaki püskürtme ucu tipiniz hafızaya alınan püskürtme ucuyla tutarlı " -"değil. Son zamanlarda nozulunuzu değiştirdiniz mi?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -22292,26 +22502,17 @@ msgstr "Maksimum açı" msgid "Detection radius" msgstr "Algılama yarıçapı" -msgid "Remove selected points" -msgstr "Seçili noktaları kaldır" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Hepsini kaldır" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Noktaları otomatik olarak üret" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Destek kulağı ekle" - -msgid "Delete a brim ear" -msgstr "Destek kulağı sil" - -msgid "Adjust head diameter" -msgstr "Kafa çapını ayarlayın" - -msgid "Adjust section view" -msgstr "Kesit görünümünü ayarla" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -22323,8 +22524,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Bu nesnenin kenar türünü \"boyalı\" olarak ayarlayın" -msgid " invalid brim ears" -msgstr " geçersi̇z kenarlı kulaklar" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Kenar kulakları" @@ -22604,15 +22805,13 @@ msgstr "" "Orca Slicer'ın çok çeşitli klavye kısayolları ve 3D sahne işlemleri " "sunduğunu biliyor muydunuz?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Tersine çevir\n" -"Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " -"ölçüde artırabileceğini biliyor muydunuz?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22907,6 +23106,85 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz?" +#~ msgid "Erase all painting" +#~ msgstr "Tüm boyamayı sil" + +#~ msgid "Reset cut" +#~ msgstr "Kesimi sıfırla" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Pan ve döndürme işlevlerini fare düğmeleri arasında değiştir" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Etkinleştirildiğinde, sol ve sağ fare düğmelerinin pan ve döndürme " +#~ "işlevlerini yer değiştirir." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "ön ayardaki meme boyutu: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "hafızaya alınan meme boyutu: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "Ön ayardaki nozül tipinin boyutu hafızaya alınan nozül ile tutarlı değil. " +#~ "Son zamanlarda nozulunuzu değiştirdiniz mi?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "püskürtme ucu[%d] ön ayarda: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozul[%d] hafızaya alındı: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Ön ayardaki püskürtme ucu tipiniz hafızaya alınan püskürtme ucuyla " +#~ "tutarlı değil. Son zamanlarda nozulunuzu değiştirdiniz mi?" + +#~ msgid "Remove selected points" +#~ msgstr "Seçili noktaları kaldır" + +#~ msgid "Remove all" +#~ msgstr "Hepsini kaldır" + +#~ msgid "Auto-generate points" +#~ msgstr "Noktaları otomatik olarak üret" + +#~ msgid "Add a brim ear" +#~ msgstr "Destek kulağı ekle" + +#~ msgid "Delete a brim ear" +#~ msgstr "Destek kulağı sil" + +#~ msgid "Adjust head diameter" +#~ msgstr "Kafa çapını ayarlayın" + +#~ msgid "Adjust section view" +#~ msgstr "Kesit görünümünü ayarla" + +#~ msgid " invalid brim ears" +#~ msgstr " geçersi̇z kenarlı kulaklar" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Tersine çevir\n" +#~ "Tersine çevir özelliğinin çıkıntılarınızın yüzey kalitesini önemli " +#~ "ölçüde artırabileceğini biliyor muydunuz?" + #~ msgid "Pen size" #~ msgstr "Kalem boyutu" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 85589819de..d8bfad864f 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: orcaslicerua\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-03-07 09:30+0200\n" "Last-Translator: \n" "Language-Team: Ukrainian\n" @@ -117,8 +117,8 @@ msgstr "Виконати" msgid "On highlighted overhangs only" msgstr "Тільки на підсвічених нависанняхх" -msgid "Erase all painting" -msgstr "Стерти всі малюнки" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Підсвічувати області нависань" @@ -187,6 +187,9 @@ msgstr "Підсвічувати грані відповідно до кута msgid "No auto support" msgstr "Без автоматичної підтримки" +msgid "Done" +msgstr "Виконано" + msgid "Support Generated" msgstr "Згенеровані підтримки" @@ -339,6 +342,12 @@ msgstr "" msgid "Fixed step drag" msgstr "" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "" @@ -487,6 +496,18 @@ msgstr "Положення зрізу" msgid "Build Volume" msgstr "Робочий об'єм" +msgid "Multiple" +msgstr "Кілька" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Відстань" + msgid "Part" msgstr "Частина" @@ -594,12 +615,6 @@ msgstr "Редагувати з'єднувачі" msgid "Add connectors" msgstr "Додати з'єднання" -msgid "Reset cut" -msgstr "Скинути розрізання" - -msgid "Reset cutting plane and remove connectors" -msgstr "Скиньте площину різання та зніміть з'єднувачі" - msgid "Upper part" msgstr "Верхня частина" @@ -618,6 +633,9 @@ msgstr "Після вирізування" msgid "Cut to parts" msgstr "Розрізати на частини" +msgid "Reset cutting plane and remove connectors" +msgstr "Скиньте площину різання та зніміть з'єднувачі" + msgid "Perform cut" msgstr "Виконати розрізання" @@ -852,6 +870,9 @@ msgstr "Типовий шрифт" msgid "Advanced" msgstr "Розширені" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1509,15 +1530,6 @@ msgstr "" "Особливість 1 скинута, \n" "Особливість 2 тепер особливість 1" -msgid "Warning: please select Plane's feature." -msgstr "Попередження: будь ласка, виберіть характеристику площини." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Попередження: будь ласка, виберіть характеристику точки або кола." - -msgid "Warning: please select two different meshes." -msgstr "Попередження: будь ласка, виберіть дві різні сітки." - msgid "Copy to clipboard" msgstr "Копіювати в буфер обміну" @@ -1569,6 +1581,15 @@ msgstr "" msgid "Point and point assembly" msgstr "" +msgid "Warning: please select two different meshes." +msgstr "Попередження: будь ласка, виберіть дві різні сітки." + +msgid "Warning: please select Plane's feature." +msgstr "Попередження: будь ласка, виберіть характеристику площини." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Попередження: будь ласка, виберіть характеристику точки або кола." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1755,6 +1776,18 @@ msgstr "Це найновіша версія." msgid "Info" msgstr "Інформація" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1821,6 +1854,23 @@ msgstr "" "Версія студії Bambu надто низька, її необхідно оновити до останньоїверсії, " "перш ніж її можна буде використовувати у звичайному режимі" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "" @@ -2364,10 +2414,10 @@ msgstr "Автоматично орієнтуйте об'єкт для покр msgid "Edit" msgstr "Редагувати" -msgid "Delete this filament" +msgid "Merge with" msgstr "" -msgid "Merge with" +msgid "Delete this filament" msgstr "" msgid "Select All" @@ -3430,8 +3480,8 @@ msgid "" "This software uses open source components whose copyright and other " "proprietary rights belong to their respective owners" msgstr "" -"Це програмне забезпечення використовує компоненти з відкритим вихідним кодом," -"авторські права та інші\n" +"Це програмне забезпечення використовує компоненти з відкритим вихідним " +"кодом,авторські права та інші\n" "права власності належать їх відповідним власникам" #, c-format, boost-format @@ -4630,9 +4680,6 @@ msgstr "" msgid "Proceed" msgstr "" -msgid "Done" -msgstr "Виконано" - msgid "Retry" msgstr "Повторити спробу" @@ -4894,33 +4941,6 @@ msgstr "Годтримка переходу" msgid "Mixed" msgstr "" -msgid "mm/s" -msgstr "мм/с" - -msgid "mm/s²" -msgstr "мм/с²" - -msgid "Flow rate" -msgstr "Потік" - -msgid "mm³/s" -msgstr "мм³/с" - -msgid "Fan speed" -msgstr "Швидкість вентилятора" - -msgid "°C" -msgstr "" - -msgid "Time" -msgstr "Час" - -msgid "Actual speed profile" -msgstr "" - -msgid "Speed: " -msgstr "Швидкість: " - msgid "Height: " msgstr "Висота: " @@ -4954,6 +4974,33 @@ msgstr "" msgid "PA: " msgstr "" +msgid "mm/s" +msgstr "мм/с" + +msgid "mm/s²" +msgstr "мм/с²" + +msgid "mm³/s" +msgstr "мм³/с" + +msgid "Flow rate" +msgstr "Потік" + +msgid "Fan speed" +msgstr "Швидкість вентилятора" + +msgid "°C" +msgstr "" + +msgid "Time" +msgstr "Час" + +msgid "Speed: " +msgstr "Швидкість: " + +msgid "Actual speed profile" +msgstr "" + msgid "Statistics of All Plates" msgstr "Статистика всіх пластин" @@ -5265,9 +5312,6 @@ msgstr "Орієнтація" msgid "Arrange options" msgstr "Параметри впорядкування" -msgid "Spacing" -msgstr "Відстань" - msgid "0 means auto spacing." msgstr "0 означає автоматичний інтервал." @@ -5402,7 +5446,7 @@ msgstr "Об'єм:" msgid "Size:" msgstr "Розмір:" -#, fuzzy, c-format, boost-format +#, fuzzy, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5785,6 +5829,15 @@ msgstr "Експорт поточної конфігурації до файлі msgid "Export" msgstr "Експорт" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Вихід" @@ -5910,6 +5963,9 @@ msgstr "Вид" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Допомога" @@ -8465,15 +8521,6 @@ msgstr "" "Якщо увімкнено, використовуватиметься вільна камера. Якщо вимкнено, " "використовуватиметься камера з обмеженими можливостями." -msgid "Swap pan and rotate mouse buttons" -msgstr "Поміняти кнопки миші для панорамування й обертання" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Якщо ввімкнено, змінює місцями функції панорамування та обертання між лівою " -"та правою кнопками миші." - msgid "Reverse mouse zoom" msgstr "Зворотне масштабування мишкою" @@ -8481,6 +8528,27 @@ msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "" "Якщо увімкнено, змінює напрямок масштабування за допомогою коліщатка миші." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "" @@ -8503,6 +8571,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Вимкнено" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Регіон входу" @@ -8657,6 +8778,15 @@ msgstr "Режим розробки" msgid "Skip AMS blacklist check" msgstr "Пропустити перевірку чорного списку AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "" @@ -9687,8 +9817,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записі таймлапсу без інструментальної головки рекомендується додати " "“Timelapse Wipe Tower” \n" @@ -10325,6 +10455,32 @@ msgstr "Не зберігати" msgid "Discard" msgstr "Не зберігати" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Натисніть праву кнопку миші, щоб відобразити повний текст." @@ -10874,6 +11030,9 @@ msgstr "Натисніть тут, щоб завантажити його." msgid "Login" msgstr "Логін" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "" @@ -10910,6 +11069,18 @@ msgstr "Показати список клавіш" msgid "Global shortcuts" msgstr "Глобальні ярлики" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11389,9 +11560,6 @@ msgstr "" msgid "Internal Bridge" msgstr "Внутрішній міст" -msgid "Multiple" -msgstr "Кілька" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -13148,9 +13316,6 @@ msgstr "" "4. Застосовувати до всіх - створює другий містовий шар для внутрішніх і " "зовнішніх мостів\n" -msgid "Disabled" -msgstr "Вимкнено" - msgid "External bridge only" msgstr "Тільки зовнішні мости" @@ -13846,6 +14011,18 @@ msgstr "" msgid "Auto For Match" msgstr "" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "" @@ -14317,6 +14494,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Шаблон часткового заповнення" @@ -14430,8 +14618,8 @@ msgstr "" "знайдено, лінія заповнення з'єднується з сегментом периметра лише з одного " "боку, і довжина взятого сегменту периметра обмежена цим параметром, але не " "більше anchor_length_max.\n" -"Встановіть цей параметр рівним нулю, щоб вимкнути периметри прив'язки." -"пов'язані з однією лінією заповнення." +"Встановіть цей параметр рівним нулю, щоб вимкнути периметри " +"прив'язки.пов'язані з однією лінією заповнення." msgid "0 (no open anchors)" msgstr "0 (немає відкритих прив'язок)" @@ -14498,8 +14686,8 @@ msgid "mm/s² or %" msgstr "мм/с² або %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Прискорення заповнення. Якщо значення виражено у відсотках (наприклад, " "100%), воно буде розраховане на основі прискорення за умовчанням." @@ -14633,10 +14821,10 @@ msgstr "Повна швидкість вентилятора на шарі" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Швидкість вентилятора лінійно збільшується від нуля на " "рівні«close_fan_the_first_x_layers» до максимуму на рівні " @@ -15115,6 +15303,30 @@ msgstr "" "прискорення роботи вентилятора.\n" "Для деактивації встановіть значення 0." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "%" + msgid "Time cost" msgstr "Вартість часу" @@ -16684,8 +16896,8 @@ msgid "Role base wipe speed" msgstr "Швидкість протирання залежно від типу" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -16701,8 +16913,8 @@ msgid "" "To minimize the visibility of the seam in a closed loop extrusion, a small " "inward movement is executed before the extruder leaves the loop." msgstr "" -"Щоб звести до мінімуму видимість шва при екструзії із замкнутим контуром," -"Невеликий рух усередину виконується до виходу екструдера з контуру." +"Щоб звести до мінімуму видимість шва при екструзії із замкнутим " +"контуром,Невеликий рух усередину виконується до виходу екструдера з контуру." msgid "Wipe before external loop" msgstr "Протирати перед зовнішнім контуром" @@ -17067,6 +17279,19 @@ msgstr "Очистити від залишків філаменту на під msgid "Enable filament ramming" msgstr "" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Без розріджених шарів (бета)" @@ -17197,8 +17422,8 @@ msgid "" "Only create support for critical regions including sharp tail, cantilever, " "etc." msgstr "" -"Створювати підтримку тільки для критичних областей, включаючи гострий хвіст," -"консоль і т.д." +"Створювати підтримку тільки для критичних областей, включаючи гострий " +"хвіст,консоль і т.д." msgid "Ignore small overhangs" msgstr "" @@ -17405,15 +17630,17 @@ msgid "Threshold angle" msgstr "Кут порога" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Буде створена опора для нависань з кутом нахилу нижче порогу." -"Чим менше це значення, тим крутіше нависання можна надрукувати без підтримки.\n" -"Примітка: Якщо встановлено значення 0, звичайні опори використовують перекриття " -"порогу, тоді як опори дерев повертаються до значення за замовчуванням 30." +"Буде створена опора для нависань з кутом нахилу нижче порогу.Чим менше це " +"значення, тим крутіше нависання можна надрукувати без підтримки.\n" +"Примітка: Якщо встановлено значення 0, звичайні опори використовують " +"перекриття порогу, тоді як опори дерев повертаються до значення за " +"замовчуванням 30." msgid "Threshold overlap" msgstr "Поріг накладання" @@ -17569,8 +17796,8 @@ msgstr "Увімкнути контроль температури" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -17758,9 +17985,9 @@ msgstr "" "Залежно від тривалості операції витирання, швидкості та тривалості " "втягування екструдера/нитки, може знадобитися рух накату для нитки.\n" "\n" -"Якщо встановити значення у параметрі \"Кількість втягування перед витиранням" -"\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно " -"буде виконано після нього." +"Якщо встановити значення у параметрі \"Кількість втягування перед " +"витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, " +"інакше воно буде виконано після нього." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -18530,8 +18757,8 @@ msgid "Debug level" msgstr "Рівень налагодження" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "Встановлює рівень реєстрації налагодження. 0: непереборний, 1: помилка, 2: " "попередження, 3: інформація, 4: налагодження, 5: трасування\n" @@ -19064,13 +19291,13 @@ msgstr "Наданий файл не вдалося прочитати, оскі msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або ." -"amf (.xml)." +"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj " +"або .amf (.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Невідомий формат файлу: вхідний файл повинен мати розширення .3mf або .zip." -"amf." +"Невідомий формат файлу: вхідний файл повинен мати розширення .3mf " +"або .zip.amf." msgid "load_obj: failed to parse" msgstr "помилка завантаження файлу OBJ: не вдалося розпізнати формат" @@ -20264,8 +20491,8 @@ msgstr "" "Чи бажаєте ви їх перезаписати?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Ми б перейменували попередні налаштування на «Вибраний вами серійний " @@ -20446,6 +20673,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Створення принтера успішно завершено" @@ -20703,32 +20942,6 @@ msgid "" "Please click the Sync button above and restart the calibration." msgstr "" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "" @@ -21572,26 +21785,17 @@ msgstr "Максимальний кут" msgid "Detection radius" msgstr "Радіус виявлення" -msgid "Remove selected points" -msgstr "Видалити вибрані точки" - -msgid "Remove all" -msgstr "Видалити все" - -msgid "Auto-generate points" -msgstr "Автоматично згенерувати точки" - -msgid "Add a brim ear" -msgstr "Додати краєчок" - -msgid "Delete a brim ear" -msgstr "Видалити краєчок" - -msgid "Adjust head diameter" +msgid "Selected" msgstr "" -msgid "Adjust section view" -msgstr "Налаштувати вид секції" +msgid "Auto-generate" +msgstr "" + +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" + +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -21603,8 +21807,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "" -msgid " invalid brim ears" -msgstr " Неправильні краєчки" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Краєчки" @@ -21871,15 +22075,13 @@ msgstr "" "Чи знаєте ви, що Orca Slicer пропонує широкий спектр комбінацій клавіш для " "роботи з 3D-сценами?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Reverse on odd\n" -"Чи знали ви, що функція Реверс по непарних периметрах може значно " -"покращити якість поверхні ваших нависань?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22173,6 +22375,52 @@ msgstr "" "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації?" +#~ msgid "Erase all painting" +#~ msgstr "Стерти всі малюнки" + +#~ msgid "Reset cut" +#~ msgstr "Скинути розрізання" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Поміняти кнопки миші для панорамування й обертання" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Якщо ввімкнено, змінює місцями функції панорамування та обертання між " +#~ "лівою та правою кнопками миші." + +#~ msgid "Remove selected points" +#~ msgstr "Видалити вибрані точки" + +#~ msgid "Remove all" +#~ msgstr "Видалити все" + +#~ msgid "Auto-generate points" +#~ msgstr "Автоматично згенерувати точки" + +#~ msgid "Add a brim ear" +#~ msgstr "Додати краєчок" + +#~ msgid "Delete a brim ear" +#~ msgstr "Видалити краєчок" + +#~ msgid "Adjust section view" +#~ msgstr "Налаштувати вид секції" + +#~ msgid " invalid brim ears" +#~ msgstr " Неправильні краєчки" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Reverse on odd\n" +#~ "Чи знали ви, що функція Реверс по непарних периметрах може значно " +#~ "покращити якість поверхні ваших нависань?" + #~ msgid "Pen size" #~ msgstr "Розмір пера" @@ -23183,9 +23431,6 @@ msgstr "" #~ msgid "Set Position" #~ msgstr "Встановити позицію" -#~ msgid "%" -#~ msgstr "%" - #, boost-format #~ msgid "%1%" #~ msgstr "%1%" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 3cd500544f..44213ae93f 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-10-02 17:43+0700\n" "Last-Translator: \n" "Language-Team: hainguyen.ts13@gmail.com\n" @@ -116,8 +116,8 @@ msgstr "Thực hiện" msgid "On highlighted overhangs only" msgstr "Chỉ trên các overhang được làm nổi bật" -msgid "Erase all painting" -msgstr "Xóa tất cả vẽ" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "Tô sáng vùng overhang" @@ -186,6 +186,9 @@ msgstr "Tô sáng các mặt theo góc overhang." msgid "No auto support" msgstr "Không tự động support" +msgid "Done" +msgstr "Hoàn thành" + msgid "Support Generated" msgstr "Đã tạo support" @@ -338,6 +341,12 @@ msgstr "Chọn phần" msgid "Fixed step drag" msgstr "Kéo bước cố định" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "Co giãn một mặt" @@ -486,6 +495,18 @@ msgstr "Vị trí cắt" msgid "Build Volume" msgstr "Thể tích in" +msgid "Multiple" +msgstr "Nhiều" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "Khoảng cách" + msgid "Part" msgstr "Phần" @@ -593,12 +614,6 @@ msgstr "Chỉnh sửa connector" msgid "Add connectors" msgstr "Thêm connector" -msgid "Reset cut" -msgstr "Đặt lại cắt" - -msgid "Reset cutting plane and remove connectors" -msgstr "Đặt lại mặt cắt và xóa connector" - msgid "Upper part" msgstr "Phần trên" @@ -617,6 +632,9 @@ msgstr "Sau khi cắt" msgid "Cut to parts" msgstr "Cắt thành phần" +msgid "Reset cutting plane and remove connectors" +msgstr "Đặt lại mặt cắt và xóa connector" + msgid "Perform cut" msgstr "Thực hiện cắt" @@ -846,6 +864,9 @@ msgstr "Font mặc định" msgid "Advanced" msgstr "Nâng cao" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1490,15 +1511,6 @@ msgstr "" "Đặc trưng 1 đã được đặt lại, \n" "đặc trưng 2 đã trở thành đặc trưng 1" -msgid "Warning: please select Plane's feature." -msgstr "Cảnh báo: vui lòng chọn đặc trưng mặt phẳng." - -msgid "Warning: please select Point's or Circle's feature." -msgstr "Cảnh báo: vui lòng chọn đặc trưng điểm hoặc đường tròn." - -msgid "Warning: please select two different meshes." -msgstr "Cảnh báo: vui lòng chọn hai mesh khác nhau." - msgid "Copy to clipboard" msgstr "Sao chép vào clipboard" @@ -1550,6 +1562,15 @@ msgstr "(Moving)" msgid "Point and point assembly" msgstr "Point and point assembly" +msgid "Warning: please select two different meshes." +msgstr "Cảnh báo: vui lòng chọn hai mesh khác nhau." + +msgid "Warning: please select Plane's feature." +msgstr "Cảnh báo: vui lòng chọn đặc trưng mặt phẳng." + +msgid "Warning: please select Point's or Circle's feature." +msgstr "Cảnh báo: vui lòng chọn đặc trưng điểm hoặc đường tròn." + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1740,6 +1761,18 @@ msgstr "Đây là phiên bản mới nhất." msgid "Info" msgstr "Thông tin" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1803,6 +1836,23 @@ msgstr "" "Phiên bản Orca Slicer quá cũ và cần được cập nhật lên phiên bản mới nhất " "trước khi có thể sử dụng bình thường." +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "Retrieving printer information, please try again later." @@ -2359,12 +2409,12 @@ msgstr "Tự động định hướng vật thể để cải thiện chất lư msgid "Edit" msgstr "Chỉnh sửa" -msgid "Delete this filament" -msgstr "Delete this filament" - msgid "Merge with" msgstr "Merge with" +msgid "Delete this filament" +msgstr "Delete this filament" + msgid "Select All" msgstr "Chọn tất cả" @@ -4666,9 +4716,6 @@ msgstr "Stop Drying" msgid "Proceed" msgstr "Proceed" -msgid "Done" -msgstr "Hoàn thành" - msgid "Retry" msgstr "Thử lại" @@ -4931,33 +4978,6 @@ msgstr "Chuyển tiếp support" msgid "Mixed" msgstr "Mixed" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "Flow rate" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "Tốc độ quạt" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "Thời gian" - -msgid "Actual speed profile" -msgstr "Actual speed profile" - -msgid "Speed: " -msgstr "Tốc độ: " - msgid "Height: " msgstr "Chiều cao: " @@ -4991,6 +5011,33 @@ msgstr "" msgid "PA: " msgstr "PA: " +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "Flow rate" + +msgid "Fan speed" +msgstr "Tốc độ quạt" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "Thời gian" + +msgid "Speed: " +msgstr "Tốc độ: " + +msgid "Actual speed profile" +msgstr "Actual speed profile" + msgid "Statistics of All Plates" msgstr "Thống kê tất cả các plate" @@ -5324,9 +5371,6 @@ msgstr "Định hướng" msgid "Arrange options" msgstr "Tùy chọn sắp xếp" -msgid "Spacing" -msgstr "Khoảng cách" - msgid "0 means auto spacing." msgstr "0 nghĩa là tự động khoảng cách." @@ -5461,7 +5505,7 @@ msgstr "Thể tích:" msgid "Size:" msgstr "Kích thước:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5860,6 +5904,15 @@ msgstr "Xuất cấu hình hiện tại ra file" msgid "Export" msgstr "Xuất" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "Thoát" @@ -5987,6 +6040,9 @@ msgstr "Xem" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "Trợ giúp" @@ -8563,20 +8619,33 @@ msgstr "" "Nếu được bật, sử dụng camera tự do. Nếu không được bật, sử dụng camera bị " "ràng buộc." -msgid "Swap pan and rotate mouse buttons" -msgstr "Hoán đổi nút chuột kéo và xoay" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "" -"Nếu được bật, hoán đổi chức năng kéo và xoay của nút chuột trái và phải." - msgid "Reverse mouse zoom" msgstr "Đảo ngược thu phóng chuột" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "Nếu được bật, đảo ngược hướng thu phóng bằng con lăn chuột." +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "Clear my choice on..." @@ -8600,6 +8669,59 @@ msgid "" msgstr "" "Clear my choice for synchronizing printer preset after loading the file." +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "Tắt" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "Login region" @@ -8751,6 +8873,15 @@ msgstr "Chế độ phát triển" msgid "Skip AMS blacklist check" msgstr "Bỏ qua kiểm tra danh sách đen AMS" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "Allow Abnormal Storage" @@ -9839,8 +9970,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Khi ghi timelapse không có đầu công cụ, khuyến nghị thêm \"Timelapse Wipe " "Tower\" \n" @@ -10459,6 +10590,32 @@ msgstr "Không lưu" msgid "Discard" msgstr "Loại bỏ" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "Nhấp chuột phải để hiển thị toàn bộ văn bản." @@ -11035,6 +11192,9 @@ msgstr "Nhấp vào đây để tải xuống." msgid "Login" msgstr "Đăng nhập" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[Action Required] " @@ -11071,6 +11231,18 @@ msgstr "Hiển thị danh sách phím tắt" msgid "Global shortcuts" msgstr "Phím tắt toàn cục" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11553,9 +11725,6 @@ msgstr " can not be placed in the " msgid "Internal Bridge" msgstr "Cầu bên trong" -msgid "Multiple" -msgstr "Nhiều" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "" @@ -12163,8 +12332,8 @@ msgstr "" "Orca Slicer có thể tải file G-code lên máy chủ máy in. Trường này nên chứa " "tên máy chủ, địa chỉ IP hoặc URL của phiên bản máy chủ máy in. Máy chủ in " "đằng sau HAProxy với xác thực cơ bản được bật có thể được truy cập bằng cách " -"đặt tên người dùng và mật khẩu vào URL theo định dạng sau: https://username:" -"password@your-octopi-address/" +"đặt tên người dùng và mật khẩu vào URL theo định dạng sau: https://" +"username:password@your-octopi-address/" msgid "Device UI" msgstr "Giao diện thiết bị" @@ -13337,9 +13506,6 @@ msgstr "" "4. Áp dụng cho tất cả - tạo lớp cầu thứ hai cho cả cầu bên trong và hướng ra " "ngoài\n" -msgid "Disabled" -msgstr "Tắt" - msgid "External bridge only" msgstr "Chỉ cầu bên ngoài" @@ -14007,6 +14173,18 @@ msgstr "Auto For Flush" msgid "Auto For Match" msgstr "Auto For Match" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "Flush temperature" @@ -14501,6 +14679,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "Sử dụng nhiều đường cho mẫu infill, nếu được hỗ trợ bởi mẫu infill." +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "Mẫu infill thưa" @@ -14675,8 +14864,8 @@ msgid "mm/s² or %" msgstr "mm/s² hoặc %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "Gia tốc của infill thưa. Nếu giá trị được biểu thị dưới dạng phần trăm (ví " "dụ 100%), nó sẽ được tính dựa trên gia tốc mặc định." @@ -14809,14 +14998,14 @@ msgstr "Tốc độ quạt đầy tại lớp" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Tốc độ quạt sẽ được tăng tuyến tính từ không tại lớp " -"\"close_fan_the_first_x_layers\" đến tối đa tại lớp \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" sẽ bị bỏ qua nếu thấp hơn " +"\"close_fan_the_first_x_layers\" đến tối đa tại lớp " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" sẽ bị bỏ qua nếu thấp hơn " "\"close_fan_the_first_x_layers\", trong trường hợp đó quạt sẽ chạy ở tốc độ " "tối đa được phép tại lớp \"close_fan_the_first_x_layers\" + 1." @@ -15314,6 +15503,30 @@ msgstr "" "nhanh hơn.\n" "Đặt thành 0 để vô hiệu hóa." +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "Chi phí thời gian" @@ -16878,8 +17091,8 @@ msgid "Role base wipe speed" msgstr "Tốc độ lau dựa trên vai trò" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -17266,6 +17479,19 @@ msgstr "Xả filament còn lại vào prime tower." msgid "Enable filament ramming" msgstr "Bật ramming filament" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "Không có lớp thưa (beta)" @@ -17604,15 +17830,16 @@ msgid "Threshold angle" msgstr "Góc ngưỡng" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"Hỗ trợ sẽ được tạo cho các phần nhô có góc dốc thấp hơn ngưỡng." -"Giá trị này càng nhỏ, phần nhô có thể in không cần hỗ trợ càng dốc.\n" -"Lưu ý: Nếu đặt thành 0, hỗ trợ thường sẽ dùng Chồng lấp ngưỡng thay thế, " -"còn hỗ trợ dạng cây sẽ quay về giá trị mặc định là 30." +"Hỗ trợ sẽ được tạo cho các phần nhô có góc dốc thấp hơn ngưỡng.Giá trị này " +"càng nhỏ, phần nhô có thể in không cần hỗ trợ càng dốc.\n" +"Lưu ý: Nếu đặt thành 0, hỗ trợ thường sẽ dùng Chồng lấp ngưỡng thay thế, còn " +"hỗ trợ dạng cây sẽ quay về giá trị mặc định là 30." msgid "Threshold overlap" msgstr "Chồng lấp ngưỡng" @@ -17775,8 +18002,8 @@ msgstr "Kích hoạt điều khiển nhiệt độ" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -18751,11 +18978,11 @@ msgid "Debug level" msgstr "Mức gỡ lỗi" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"Đặt mức ghi log gỡ lỗi. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Đặt mức ghi log gỡ lỗi. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgid "Enable timelapse for print" msgstr "Bật timelapse cho in" @@ -19299,13 +19526,13 @@ msgstr "File được cung cấp không thể đọc được vì nó trống" msgid "" "Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." msgstr "" -"Định dạng file không xác định. File đầu vào phải có phần mở rộng .stl, ." -"obj, .amf(.xml)." +"Định dạng file không xác định. File đầu vào phải có phần mở " +"rộng .stl, .obj, .amf(.xml)." msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" -"Định dạng file không xác định. File đầu vào phải có phần mở rộng .3mf hoặc ." -"zip.amf." +"Định dạng file không xác định. File đầu vào phải có phần mở rộng .3mf " +"hoặc .zip.amf." msgid "load_obj: failed to parse" msgstr "load_obj: phân tích thất bại" @@ -20528,8 +20755,8 @@ msgstr "" "Bạn có muốn viết lại nó không?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "Chúng tôi sẽ đổi tên cài đặt sẵn thành \"Nhà cung cấp Loại Serial @máy in " @@ -20707,6 +20934,18 @@ msgstr "" "The system preset does not allow creation. \n" "Please re-enter the printer model or nozzle diameter." +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "Máy in đã được tạo thành công" @@ -20954,36 +21193,6 @@ msgstr "" "The nozzle type does not match the actual printer nozzle type.\n" "Please click the Sync button above and restart the calibration." -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "nozzle size in preset: %d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "nozzle size memorized: %d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "nozzle[%d] in preset: %.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "nozzle[%d] memorized: %.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -21900,26 +22109,17 @@ msgstr "Góc tối đa" msgid "Detection radius" msgstr "Bán kính phát hiện" -msgid "Remove selected points" -msgstr "Xóa điểm đã chọn" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "Xóa tất cả" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "Tự động tạo điểm" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "Thêm tai vành" - -msgid "Delete a brim ear" -msgstr "Xóa tai vành" - -msgid "Adjust head diameter" -msgstr "Điều chỉnh đường kính đầu" - -msgid "Adjust section view" -msgstr "Điều chỉnh chế độ xem phần" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -21931,8 +22131,8 @@ msgstr "" msgid "Set the brim type of this object to \"painted\"" msgstr "Đặt loại vành của đối tượng này thành \"được vẽ\"" -msgid " invalid brim ears" -msgstr " tai vành không hợp lệ" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "Tai vành" @@ -22209,15 +22409,13 @@ msgstr "" "Bạn có biết rằng Orca Slicer cung cấp nhiều phím tắt và thao tác cảnh 3D " "không?" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"Đảo ngược trên lẻ\n" -"Bạn có biết rằng tính năng Đảo ngược trên lẻ có thể cải thiện đáng kể " -"chất lượng bề mặt của phần nhô của bạn không?" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -22510,6 +22708,84 @@ msgstr "" "Bạn có biết rằng khi in vật liệu dễ cong vênh như ABS, tăng nhiệt độ bàn " "nóng một cách thích hợp có thể giảm xác suất cong vênh không?" +#~ msgid "Erase all painting" +#~ msgstr "Xóa tất cả vẽ" + +#~ msgid "Reset cut" +#~ msgstr "Đặt lại cắt" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "Hoán đổi nút chuột kéo và xoay" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "" +#~ "Nếu được bật, hoán đổi chức năng kéo và xoay của nút chuột trái và phải." + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "nozzle size in preset: %d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "nozzle size memorized: %d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "nozzle[%d] in preset: %.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "nozzle[%d] memorized: %.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" + +#~ msgid "Remove selected points" +#~ msgstr "Xóa điểm đã chọn" + +#~ msgid "Remove all" +#~ msgstr "Xóa tất cả" + +#~ msgid "Auto-generate points" +#~ msgstr "Tự động tạo điểm" + +#~ msgid "Add a brim ear" +#~ msgstr "Thêm tai vành" + +#~ msgid "Delete a brim ear" +#~ msgstr "Xóa tai vành" + +#~ msgid "Adjust head diameter" +#~ msgstr "Điều chỉnh đường kính đầu" + +#~ msgid "Adjust section view" +#~ msgstr "Điều chỉnh chế độ xem phần" + +#~ msgid " invalid brim ears" +#~ msgstr " tai vành không hợp lệ" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "Đảo ngược trên lẻ\n" +#~ "Bạn có biết rằng tính năng Đảo ngược trên lẻ có thể cải thiện đáng " +#~ "kể chất lượng bề mặt của phần nhô của bạn không?" + #~ msgid "Pen size" #~ msgstr "Kích thước bút" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index ba2f5cfc79..1418ff083c 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2026-02-28 00:59\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -110,8 +110,8 @@ msgstr "执行" msgid "On highlighted overhangs only" msgstr "仅对高亮悬垂区生效" -msgid "Erase all painting" -msgstr "擦除所有绘制" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "高亮悬垂区域" @@ -180,6 +180,9 @@ msgstr "根据当前设置的悬垂角度来高亮片面。" msgid "No auto support" msgstr "无自动支撑" +msgid "Done" +msgstr "完成" + msgid "Support Generated" msgstr "已生成支撑" @@ -330,6 +333,12 @@ msgstr "零件选择" msgid "Fixed step drag" msgstr "固定拖动步长" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "单面缩放" @@ -478,6 +487,18 @@ msgstr "切割位置" msgid "Build Volume" msgstr "打印体积" +msgid "Multiple" +msgstr "多个" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "间距" + msgid "Part" msgstr "零件" @@ -585,12 +606,6 @@ msgstr "编辑连接件" msgid "Add connectors" msgstr "添加连接件" -msgid "Reset cut" -msgstr "重置" - -msgid "Reset cutting plane and remove connectors" -msgstr "重置切割平面并移除连接器" - msgid "Upper part" msgstr "上半部分" @@ -609,6 +624,9 @@ msgstr "切割后" msgid "Cut to parts" msgstr "切割为零件" +msgid "Reset cutting plane and remove connectors" +msgstr "重置切割平面并移除连接器" + msgid "Perform cut" msgstr "执行切割" @@ -833,6 +851,9 @@ msgstr "默认字体" msgid "Advanced" msgstr "高级" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1472,15 +1493,6 @@ msgid "" "feature 2 has been feature 1" msgstr "特征1已经被重置,特征2变成特征1" -msgid "Warning: please select Plane's feature." -msgstr "警告:请选择面特征。" - -msgid "Warning: please select Point's or Circle's feature." -msgstr "警告:请选择点或圆特征。" - -msgid "Warning: please select two different meshes." -msgstr "警告:请选择两个不同的网格。" - msgid "Copy to clipboard" msgstr "复制到剪贴板" @@ -1532,6 +1544,15 @@ msgstr "(移动中)" msgid "Point and point assembly" msgstr "点对点装配" +msgid "Warning: please select two different meshes." +msgstr "警告:请选择两个不同的网格。" + +msgid "Warning: please select Plane's feature." +msgstr "警告:请选择面特征。" + +msgid "Warning: please select Point's or Circle's feature." +msgstr "警告:请选择点或圆特征。" + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1718,6 +1739,18 @@ msgstr "已经是最新版本。" msgid "Info" msgstr "信息" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1777,6 +1810,23 @@ msgid "" "version before it can be used normally." msgstr "此逆戟鲸切片器的版本过低,需更新至最新版本方可正常使用" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "正在获取打印机信息,请稍后重试。" @@ -2326,12 +2376,12 @@ msgstr "自动调整对象朝向以提高打印质量。" msgid "Edit" msgstr "编辑" -msgid "Delete this filament" -msgstr "移除此耗材" - msgid "Merge with" msgstr "与其合并" +msgid "Delete this filament" +msgstr "移除此耗材" + msgid "Select All" msgstr "全选" @@ -4513,9 +4563,6 @@ msgstr "停止干燥" msgid "Proceed" msgstr "继续" -msgid "Done" -msgstr "完成" - msgid "Retry" msgstr "重试" @@ -4776,33 +4823,6 @@ msgstr "支撑转换层" msgid "Mixed" msgstr "混合" -msgid "mm/s" -msgstr "毫米/秒" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "流量" - -msgid "mm³/s" -msgstr "毫米立方/秒" - -msgid "Fan speed" -msgstr "风扇速度" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "时间" - -msgid "Actual speed profile" -msgstr "实际速度曲线" - -msgid "Speed: " -msgstr "速度: " - msgid "Height: " msgstr "层高: " @@ -4836,6 +4856,33 @@ msgstr "" msgid "PA: " msgstr "PA:" +msgid "mm/s" +msgstr "毫米/秒" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "毫米立方/秒" + +msgid "Flow rate" +msgstr "流量" + +msgid "Fan speed" +msgstr "风扇速度" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "时间" + +msgid "Speed: " +msgstr "速度: " + +msgid "Actual speed profile" +msgstr "实际速度曲线" + msgid "Statistics of All Plates" msgstr "所有盘切片信息" @@ -5152,9 +5199,6 @@ msgstr "调整朝向" msgid "Arrange options" msgstr "自动摆放选项" -msgid "Spacing" -msgstr "间距" - msgid "0 means auto spacing." msgstr "0 表示自动间距。" @@ -5289,7 +5333,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5675,6 +5719,15 @@ msgstr "导出当前选择的预设" msgid "Export" msgstr "导出" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "退出程序" @@ -5800,6 +5853,9 @@ msgstr "视图" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "帮助" @@ -6141,8 +6197,8 @@ msgid "" "The .gcode.3mf file contains no G-code data. Please slice it with Orca " "Slicer and export a new .gcode.3mf file." msgstr "" -".gcode.3mf文件中不包含G-code数据。请使用Orca Slicer进行切片并导出新的." -"gcode.3mf文件。" +".gcode.3mf文件中不包含G-code数据。请使用Orca Slicer进行切片并导出新" +"的.gcode.3mf文件。" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -8230,19 +8286,33 @@ msgstr "使用自由视角" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "如果启用,使用自由视角。如果未启用,使用约束视角。" -msgid "Swap pan and rotate mouse buttons" -msgstr "交换鼠标按钮的平移与旋转功能" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "启用后,将左键和右键的平移与旋转功能对调" - msgid "Reverse mouse zoom" msgstr "反转鼠标缩放" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "如果启用,使用鼠标滚轮缩放的方向会反转。" +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "清除我的选择..." @@ -8265,6 +8335,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "加载文件后清除我对同步打印机预设的选择。" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "禁用" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "登录区域" @@ -8408,6 +8531,15 @@ msgstr "开发者模式" msgid "Skip AMS blacklist check" msgstr "跳过AMS黑名单检查" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "允许异常存储" @@ -9433,8 +9565,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在录制无工具头延时摄影视频时,建议添加“延时摄影擦料塔”\n" "右键单击打印板的空白位置,选择“添加标准模型”->“延时摄影擦料塔”。" @@ -10029,6 +10161,32 @@ msgstr "不保存" msgid "Discard" msgstr "放弃" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "单击鼠标右键显示全文。" @@ -10570,6 +10728,9 @@ msgstr "点此下载" msgid "Login" msgstr "登录" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[需要操作] " @@ -10606,6 +10767,18 @@ msgstr "显示键盘快捷键列表" msgid "Global shortcuts" msgstr "全局快捷键" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11070,9 +11243,6 @@ msgstr "不能放置在" msgid "Internal Bridge" msgstr "内部搭桥" -msgid "Multiple" -msgstr "多个" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "计算 %1%的线宽失败。无法获得 \"%2%\" 的值" @@ -12651,9 +12821,6 @@ msgstr "" "存在多个具有不同桥接角度的区域,则该岛屿的最后一个区域将被选为角度参考\n" "4. 全部应用 - 为内部和面向外部的桥接生成第二桥接层\n" -msgid "Disabled" -msgstr "禁用" - msgid "External bridge only" msgstr "仅外部桥接" @@ -13251,6 +13418,18 @@ msgstr "自动冲洗" msgid "Auto For Match" msgstr "自动匹配" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "冲洗温度" @@ -13709,6 +13888,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "如果填充图案支持,使用多线进行填充。" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "稀疏填充图案" @@ -13869,8 +14059,8 @@ msgid "mm/s² or %" msgstr "mm/s² 或 %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "稀疏填充的加速度。如果该值表示为百分比(例如100%),则将根据默认加速度进行计" "算。" @@ -13996,10 +14186,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零转速,线性上升到“全风扇速度层”的最大转速。\n" "如果低于“禁用风扇第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将" @@ -14455,6 +14645,30 @@ msgstr "" "快提升转速。\n" "设为 0 以禁用。" +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "耗时" @@ -15905,8 +16119,8 @@ msgid "Role base wipe speed" msgstr "自动擦拭速度" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -16255,6 +16469,19 @@ msgstr "冲刷剩余的耗材丝进入擦拭塔" msgid "Enable filament ramming" msgstr "启用耗材尖端成型" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "无稀疏层 (实验功能)" @@ -16572,15 +16799,15 @@ msgid "Threshold angle" msgstr "阈值角度" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"将会为倾斜角度低于阈值的悬垂生成支撑。" -"该值越小,可在不使用支撑的情况下打印的悬垂就越陡。\n" -"注意:若设置为 0,普通支撑将改用阈值支撑比例," -"而树状支撑将回退到默认值 30。" +"将会为倾斜角度低于阈值的悬垂生成支撑。该值越小,可在不使用支撑的情况下打印的" +"悬垂就越陡。\n" +"注意:若设置为 0,普通支撑将改用阈值支撑比例,而树状支撑将回退到默认值 30。" msgid "Threshold overlap" msgstr "阈值支撑比例" @@ -16729,8 +16956,8 @@ msgstr "激活温度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -17630,11 +17857,11 @@ msgid "Debug level" msgstr "调试等级" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" -"设置调试日志的等级。0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"设置调试日志的等级。0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgid "Enable timelapse for print" msgstr "为打印启用延时摄影" @@ -18363,10 +18590,10 @@ msgid "" msgstr "" "请从我们的wiki中找到动态流量校准的详细信息。\n" "\n" -"通常情况下,校准是不必要的。当您开始单色/单耗材打印,并在打印开始菜单中勾选" -"了“动态流量校准”选项时,打印机将按照旧的方式在打印前校准耗材;当您开始多色/多" -"耗材打印时,打印机将在每次换耗材时使用默认的补偿参数,这在大多数情况下会产生" -"良好的效果。\n" +"通常情况下,校准是不必要的。当您开始单色/单耗材打印,并在打印开始菜单中勾选了" +"“动态流量校准”选项时,打印机将按照旧的方式在打印前校准耗材;当您开始多色/多耗" +"材打印时,打印机将在每次换耗材时使用默认的补偿参数,这在大多数情况下会产生良" +"好的效果。\n" "\n" "有些情况可能导致校准结果不可靠,例如打印板的附着力不足。清洗构建或者使用胶水" "可以增强打印板的附着力。您可以在我们的wiki上找到更多相关信息。\n" @@ -19296,8 +19523,8 @@ msgstr "" "你想重写预设吗" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "我们将会把预设重命名为“供应商类型名 @ 您选择的打印机”\n" @@ -19459,6 +19686,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "不允许创建系统级预设。请重新输入打印机型号或喷嘴直径。" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "创建打印机成功" @@ -19692,32 +19931,6 @@ msgstr "" "喷嘴类型与打印机实际喷嘴类型不匹配。\n" "请单击上面的同步按钮并重新启动校准。" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "预设喷嘴尺寸:%d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "已记住喷嘴尺寸:%d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "预设中的喷嘴类型与已记住的喷嘴尺寸不一致。您最近有更换喷嘴吗?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "预设中的 [%d] 喷嘴:%.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "[%d] 喷嘴已记住:%.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "您预设中的喷嘴类型与已记住的喷嘴不一致。您最近有更换喷嘴吗?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -20191,8 +20404,8 @@ msgid "" "to this wiki: Printing Tips for High Temp / Engineering materials." msgstr "" "打印此耗材时,可能有喷嘴堵塞、渗漏、翘曲和层间强度低的风险。为了获得更好的结" -"果,请参考此英文wiki:Printing Tips for High Temp / Engineering " -"materials(“高温/工程材料的打印技巧”)" +"果,请参考此英文wiki:Printing Tips for High Temp / Engineering materials" +"(“高温/工程材料的打印技巧”)" msgid "" "To get better transparent or translucent results with the corresponding " @@ -20260,8 +20473,8 @@ msgid "" "wiki: PVA Printing Guide." msgstr "" "这是一种水溶性支撑耗材,通常只用作支撑结构,不用于模型本体。打印此类耗材需要" -"满足较多条件,为了获得更好的打印质量,请参考这个英文wiki:PVA Printing " -"Guide(“PVA打印指南”)" +"满足较多条件,为了获得更好的打印质量,请参考这个英文wiki:PVA Printing Guide" +"(“PVA打印指南”)" msgid "" "This is a non-water-soluble support filament, and usually it is only for the " @@ -20555,26 +20768,17 @@ msgstr "最大角度" msgid "Detection radius" msgstr "检测半径" -msgid "Remove selected points" -msgstr "删除已选择的点" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "删除所有点" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "自动生成点" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "加入一个耳状Brim" - -msgid "Delete a brim ear" -msgstr "删除一个耳状Brim" - -msgid "Adjust head diameter" -msgstr "调整喷头直径" - -msgid "Adjust section view" -msgstr "调整剖面视图" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -20584,8 +20788,8 @@ msgstr "警告:Brim类型未设置为绘制模式,耳状Brim将不会生效 msgid "Set the brim type of this object to \"painted\"" msgstr "将此对象的边缘类型设置为\"绘制\"" -msgid " invalid brim ears" -msgstr " 个无效耳状Brim" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "耳状帽檐" @@ -20847,14 +21051,13 @@ msgstr "" "如何使用键盘快捷键\n" "您知道吗?Orca Slicer提供了广泛的键盘快捷键和3D场景操作。" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"奇数层反转\n" -"您知道吗?奇数层反转功能可以显著提高您悬垂的表面质量。" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -21122,6 +21325,78 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#~ msgid "Erase all painting" +#~ msgstr "擦除所有绘制" + +#~ msgid "Reset cut" +#~ msgstr "重置" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "交换鼠标按钮的平移与旋转功能" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "启用后,将左键和右键的平移与旋转功能对调" + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "预设喷嘴尺寸:%d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "已记住喷嘴尺寸:%d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "预设中的喷嘴类型与已记住的喷嘴尺寸不一致。您最近有更换喷嘴吗?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "预设中的 [%d] 喷嘴:%.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "[%d] 喷嘴已记住:%.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "您预设中的喷嘴类型与已记住的喷嘴不一致。您最近有更换喷嘴吗?" + +#~ msgid "Remove selected points" +#~ msgstr "删除已选择的点" + +#~ msgid "Remove all" +#~ msgstr "删除所有点" + +#~ msgid "Auto-generate points" +#~ msgstr "自动生成点" + +#~ msgid "Add a brim ear" +#~ msgstr "加入一个耳状Brim" + +#~ msgid "Delete a brim ear" +#~ msgstr "删除一个耳状Brim" + +#~ msgid "Adjust head diameter" +#~ msgstr "调整喷头直径" + +#~ msgid "Adjust section view" +#~ msgstr "调整剖面视图" + +#~ msgid " invalid brim ears" +#~ msgstr " 个无效耳状Brim" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "奇数层反转\n" +#~ "您知道吗?奇数层反转功能可以显著提高您悬垂的表面质量。" + #~ msgid "Pen size" #~ msgstr "画笔尺寸" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 5b695ea81b..1b10eaded1 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-05-13 09:31-0300\n" +"POT-Creation-Date: 2026-05-22 02:24+0800\n" "PO-Revision-Date: 2025-11-28 13:48-0600\n" "Last-Translator: tntchn <15895303+tntchn@users.noreply.github.com>\n" "Language-Team: \n" @@ -115,8 +115,8 @@ msgstr "套用" msgid "On highlighted overhangs only" msgstr "僅對高亮懸空區生效" -msgid "Erase all painting" -msgstr "擦除所有自訂支撐" +msgid "Erase all" +msgstr "" msgid "Highlight overhang areas" msgstr "突顯出懸空區域" @@ -185,6 +185,9 @@ msgstr "根據懸空角度突顯出表面。" msgid "No auto support" msgstr "無自動支撐" +msgid "Done" +msgstr "完成" + msgid "Support Generated" msgstr "已產生支撐" @@ -334,6 +337,12 @@ msgstr "選擇零件" msgid "Fixed step drag" msgstr "以固定間距拖曳" +msgid "Context Menu" +msgstr "" + +msgid "Toggle Auto-Drop" +msgstr "" + msgid "Single sided scaling" msgstr "單側縮放" @@ -482,6 +491,18 @@ msgstr "切割位置" msgid "Build Volume" msgstr "列印體積" +msgid "Multiple" +msgstr "多個" + +msgid "Count" +msgstr "" + +msgid "Gap" +msgstr "" + +msgid "Spacing" +msgstr "間距" + msgid "Part" msgstr "零件" @@ -589,12 +610,6 @@ msgstr "編輯連接件" msgid "Add connectors" msgstr "新增連接件" -msgid "Reset cut" -msgstr "重設切割" - -msgid "Reset cutting plane and remove connectors" -msgstr "重設切割面且移除連接件" - msgid "Upper part" msgstr "上半部分" @@ -613,6 +628,9 @@ msgstr "切割後" msgid "Cut to parts" msgstr "切割為零件" +msgid "Reset cutting plane and remove connectors" +msgstr "重設切割面且移除連接件" + msgid "Perform cut" msgstr "執行切割" @@ -837,6 +855,9 @@ msgstr "預設字型" msgid "Advanced" msgstr "進階" +msgid "Reset all options except the text and operation" +msgstr "" + msgid "" "The text cannot be written using the selected font. Please try choosing a " "different font." @@ -1475,15 +1496,6 @@ msgstr "" "特徵 1 已重設,\n" "特徵 2 已變為特徵 1" -msgid "Warning: please select Plane's feature." -msgstr "警告:請選擇平面的特徵。" - -msgid "Warning: please select Point's or Circle's feature." -msgstr "警告:請選擇點或圓的特徵。" - -msgid "Warning: please select two different meshes." -msgstr "警告:請選擇兩個不同的網格。" - msgid "Copy to clipboard" msgstr "複製到剪貼簿" @@ -1535,6 +1547,15 @@ msgstr "(移動中)" msgid "Point and point assembly" msgstr "點對點裝配" +msgid "Warning: please select two different meshes." +msgstr "警告:請選擇兩個不同的網格。" + +msgid "Warning: please select Plane's feature." +msgstr "警告:請選擇平面的特徵。" + +msgid "Warning: please select Point's or Circle's feature." +msgstr "警告:請選擇點或圓的特徵。" + msgid "" "It is recommended to assemble the objects first,\n" "because the objects is restriced to bed \n" @@ -1723,6 +1744,18 @@ msgstr "已經是最新版本。" msgid "Info" msgstr "資訊" +msgid "Loading printer & filament profiles" +msgstr "" + +msgid "Creating main window" +msgstr "" + +msgid "Loading current preset" +msgstr "" + +msgid "Showing main window" +msgstr "" + msgid "" "The OrcaSlicer configuration file may be corrupted and cannot be parsed.\n" "OrcaSlicer has attempted to recreate the configuration file.\n" @@ -1782,6 +1815,23 @@ msgid "" "version before it can be used normally." msgstr "Orca Slicer 版本過舊,需要更新到最新版本才能正常使用" +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u): %s" +msgstr "" + +#, c-format, boost-format +msgid "" +"Failed to connect to OrcaCloud.\n" +"Please check your network connectivity\n" +"(HTTP %u)" +msgstr "" + +msgid "Cloud Error" +msgstr "" + msgid "Retrieving printer information, please try again later." msgstr "正在取得列印設備資訊,請稍後再試。" @@ -2333,12 +2383,12 @@ msgstr "自動調整物件轉向以提高列印品質。" msgid "Edit" msgstr "編輯" -msgid "Delete this filament" -msgstr "刪除此線材" - msgid "Merge with" msgstr "合併到" +msgid "Delete this filament" +msgstr "刪除此線材" + msgid "Select All" msgstr "全選" @@ -4580,9 +4630,6 @@ msgstr "停止乾燥" msgid "Proceed" msgstr "繼續" -msgid "Done" -msgstr "完成" - msgid "Retry" msgstr "重試" @@ -4843,33 +4890,6 @@ msgstr "支撐轉換層" msgid "Mixed" msgstr "混合" -msgid "mm/s" -msgstr "mm/s" - -msgid "mm/s²" -msgstr "mm/s²" - -msgid "Flow rate" -msgstr "流量" - -msgid "mm³/s" -msgstr "mm³/s" - -msgid "Fan speed" -msgstr "風扇速度" - -msgid "°C" -msgstr "°C" - -msgid "Time" -msgstr "時間" - -msgid "Actual speed profile" -msgstr "實際速度設定檔" - -msgid "Speed: " -msgstr "速度:" - msgid "Height: " msgstr "層高:" @@ -4903,6 +4923,33 @@ msgstr "" msgid "PA: " msgstr "PA:" +msgid "mm/s" +msgstr "mm/s" + +msgid "mm/s²" +msgstr "mm/s²" + +msgid "mm³/s" +msgstr "mm³/s" + +msgid "Flow rate" +msgstr "流量" + +msgid "Fan speed" +msgstr "風扇速度" + +msgid "°C" +msgstr "°C" + +msgid "Time" +msgstr "時間" + +msgid "Speed: " +msgstr "速度:" + +msgid "Actual speed profile" +msgstr "實際速度設定檔" + msgid "Statistics of All Plates" msgstr "所有列印板統計資料" @@ -5219,9 +5266,6 @@ msgstr "調整定向" msgid "Arrange options" msgstr "自動擺放選項" -msgid "Spacing" -msgstr "間距" - msgid "0 means auto spacing." msgstr "0 表示自動間距。" @@ -5356,7 +5400,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of G-code paths have been found at layer %d, Z = %.2lfmm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5743,6 +5787,15 @@ msgstr "匯出目前選擇的設定檔" msgid "Export" msgstr "匯出" +msgid "Sync Presets" +msgstr "" + +msgid "Pull and apply the latest presets from OrcaCloud" +msgstr "" + +msgid "You must be logged in to sync presets from cloud." +msgstr "" + msgid "Quit" msgstr "結束" @@ -5868,6 +5921,9 @@ msgstr "視角" msgid "Preset Bundle" msgstr "" +msgid "Syncing presets from cloud…" +msgstr "" + msgid "Help" msgstr "幫助" @@ -6214,9 +6270,9 @@ msgid "" "The .gcode.3mf file contains no G-code data. Please slice it with Orca " "Slicer and export a new .gcode.3mf file." msgstr "" -".gcode.3mf 檔案不包含 G-code 資料。請使用 OrcaSlicer 切片並匯出新的 ." -"gcode.3mf 檔案。.gcode.3mf 檔案中不包含 G-code 資料。請使用 Orca Slicer 進行" -"切片並匯出新的 .gcode.3mf 檔案。" +".gcode.3mf 檔案不包含 G-code 資料。請使用 OrcaSlicer 切片並匯出新" +"的 .gcode.3mf 檔案。.gcode.3mf 檔案中不包含 G-code 資料。請使用 Orca Slicer " +"進行切片並匯出新的 .gcode.3mf 檔案。" #, c-format, boost-format msgid "File '%s' was lost! Please download it again." @@ -8313,19 +8369,33 @@ msgstr "使用自由鏡頭" msgid "If enabled, use free camera. If not enabled, use constrained camera." msgstr "如果啟用,則使用自由鏡頭。若未啟用,則使用受限鏡頭。" -msgid "Swap pan and rotate mouse buttons" -msgstr "對調滑鼠的平移與旋轉按鍵" - -msgid "" -"If enabled, swaps the left and right mouse buttons pan and rotate functions." -msgstr "啟用後,對調滑鼠左鍵與右鍵的平移與旋轉功能。" - msgid "Reverse mouse zoom" msgstr "反轉滑鼠滾輪縮放方向" msgid "If enabled, reverses the direction of zoom with mouse wheel." msgstr "啟用後,改變滑鼠滾輪縮放方向。" +msgid "Pan" +msgstr "" + +msgid "Left Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the left mouse button should perform." +msgstr "" + +msgid "Middle Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the middle mouse button should perform." +msgstr "" + +msgid "Right Mouse Drag" +msgstr "" + +msgid "Set the action that dragging the right mouse button should perform." +msgstr "" + msgid "Clear my choice on..." msgstr "清除我的選擇於..." @@ -8348,6 +8418,59 @@ msgid "" "Clear my choice for synchronizing printer preset after loading the file." msgstr "清除我在載入檔案後同步列印設備預設的選擇。" +msgid "Graphics" +msgstr "" + +msgid "Anti-aliasing" +msgstr "" + +msgid "MSAA Multiplier" +msgstr "" + +msgid "" +"Set the Multi-Sample Anti-Aliasing level.\n" +"Higher values result in smoother edges, but the impact on performance is " +"exponential.\n" +"Lower values improve performance, at the cost of jagged edges.\n" +"If disabled, its recommended to enable FXAA to reduce jagged edges with " +"minimal performance impact.\n" +"\n" +"Requires application restart." +msgstr "" + +msgid "Disabled" +msgstr "停用" + +msgid "FXAA post-processing" +msgstr "" + +msgid "" +"Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" +"Useful for disabling or reducing the MSAA setting to improve performance.\n" +"\n" +"Takes effect immediately." +msgstr "" + +msgid "FPS" +msgstr "" + +msgid "FPS cap" +msgstr "" + +msgid "(0 = unlimited)" +msgstr "" + +msgid "" +"Limits viewport frame rate to reduce GPU load and power usage.\n" +"Set to 0 for unlimited frame rate." +msgstr "" + +msgid "Show FPS overlay" +msgstr "" + +msgid "Displays current viewport FPS in the top-right corner." +msgstr "" + msgid "Login region" msgstr "登入區域" @@ -8494,6 +8617,15 @@ msgstr "開發者模式" msgid "Skip AMS blacklist check" msgstr "跳過 AMS 黑名單檢查" +msgid "(Experimental) Keep painted feature after mesh change" +msgstr "" + +msgid "" +"Attempt to keep painted features (color/seam/support/fuzzy etc.) after " +"changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\n" +"Highly experimental! Slow and may create artifact." +msgstr "" + msgid "Allow Abnormal Storage" msgstr "允許異常儲存空間" @@ -9527,8 +9659,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在錄製無工具頭縮時錄影影片時,建議新增一個「縮時錄影換料塔」\n" "可以通過右鍵點擊構建板的空白位置,選擇『新增標準模型』->『縮時錄影換料塔』來" @@ -10127,6 +10259,32 @@ msgstr "不儲存" msgid "Discard" msgstr "放棄" +msgid "the new profile" +msgstr "" + +#, boost-format +msgid "" +"Switch to\n" +"\"%1%\"\n" +"discarding any changes made in\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings modified in\n" +"\"%1%\"\n" +"will be transferred to\n" +"\"%2%\"." +msgstr "" + +#, boost-format +msgid "" +"All \"New Value\" settings are saved in\n" +"\"%1%\"\n" +"and \"%2%\" will open without any changes." +msgstr "" + msgid "Click the right mouse button to display the full text." msgstr "單擊滑鼠右鍵顯示全文。" @@ -10672,6 +10830,9 @@ msgstr "點擊下載。" msgid "Login" msgstr "登入" +msgid "Login failed. Please try again." +msgstr "" + msgid "[Action Required] " msgstr "[需要操作] " @@ -10708,6 +10869,18 @@ msgstr "顯示鍵盤快捷鍵清單" msgid "Global shortcuts" msgstr "全域快捷鍵" +msgid "Pan View" +msgstr "" + +msgid "Rotate View" +msgstr "" + +msgid "Middle mouse button" +msgstr "" + +msgid "Zoom View" +msgstr "" + msgid "" "Auto orients selected objects or all objects. If there are selected objects, " "it just orients the selected ones. Otherwise, it will orient all objects in " @@ -11171,9 +11344,6 @@ msgstr "無法放置於" msgid "Internal Bridge" msgstr "內部橋接" -msgid "Multiple" -msgstr "多個" - #, boost-format msgid "Failed to calculate line width of %1%. Cannot get value of \"%2%\" " msgstr "計算 %1% 的線寬失敗。無法獲得「%2%」的值" @@ -12769,9 +12939,6 @@ msgstr "" "將作為角度參考。\n" "4. 套用於所有橋接區域 - 為內部與外部橋接區域都新增第二層橋接層。\n" -msgid "Disabled" -msgstr "停用" - msgid "External bridge only" msgstr "僅外部橋接" @@ -13371,6 +13538,18 @@ msgstr "自動清理" msgid "Auto For Match" msgstr "自動匹配" +msgid "Enable filament dynamic map" +msgstr "" + +msgid "Enable dynamic filament mapping during print." +msgstr "" + +msgid "Has filament switcher" +msgstr "" + +msgid "Printer has a filament switcher hardware (e.g., AMS)." +msgstr "" + msgid "Flush temperature" msgstr "清理溫度" @@ -13819,6 +13998,17 @@ msgid "" "Using multiple lines for the infill pattern, if supported by infill pattern." msgstr "為填充圖案使用多條線,如果填充圖案支援。" +msgid "Z-buckling bias optimization (experimental)" +msgstr "" + +msgid "" +"Tightens the gyroid wave along the Z (vertical) axis at low infill density " +"to shorten the effective vertical column length and improve Z-axis " +"compression buckling resistance. Filament use is preserved. No effect at " +"~30% sparse infill density and above. Only applies when Sparse infill " +"pattern is set to Gyroid." +msgstr "" + msgid "Sparse infill pattern" msgstr "稀疏填充圖案" @@ -13980,8 +14170,8 @@ msgid "mm/s² or %" msgstr "mm/s² 或 %" msgid "" -"Acceleration of sparse infill. If the value is expressed as a percentage (e." -"g. 100%), it will be calculated based on the default acceleration." +"Acceleration of sparse infill. If the value is expressed as a percentage " +"(e.g. 100%), it will be calculated based on the default acceleration." msgstr "" "稀疏填充的加速度。如果該值表示為百分比(例如 100%),則將根據預設加速度進行計" "算。" @@ -14103,10 +14293,10 @@ msgstr "滿速風扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "風扇速度會從第「close_fan_the_first_x_layers」層開始,從零速以線性方式逐漸增" "加,直到第「full_fan_speed_layer」層達到最大速度。如果" @@ -14566,6 +14756,30 @@ msgstr "" "譯者補充:風扇啟動時間通常是指風扇從靜止狀態到穩定運轉所需的時間\n" "這個設定可以確保風扇在低轉速時順利啟動,避免因功率不足而無法正常運行。" +msgid "Minimum non-zero part cooling fan speed" +msgstr "" + +msgid "" +"Some part-cooling fans cannot start spinning when commanded below a certain " +"PWM duty cycle. When set above 0, any non-zero part-cooling fan command will " +"be raised to at least this percentage so the fan reliably starts. A fan " +"command of 0 (fan off) is always honoured exactly. This clamp is applied " +"after every other fan calculation (first-layer ramp, layer-time " +"interpolation, overhang/bridge/support-interface/ironing overrides), so " +"scaling still operates within the range [this value, 100%].\n" +"If your firmware already disables the fan below a threshold (for example " +"Klipper's [fan] off_below: 0.10 shuts the fan off whenever the commanded " +"duty cycle is below 10%), this option and the firmware threshold should " +"ideally be set to the same value. Matching them (e.g. off_below: 0.10 in " +"Klipper and 10% here) guarantees the slicer never emits a non-zero value " +"that the firmware would silently drop, and the fan never receives a value " +"below the one you know it can actually spool at.\n" +"Set to 0 to deactivate." +msgstr "" + +msgid "%" +msgstr "" + msgid "Time cost" msgstr "時間成本" @@ -16031,8 +16245,8 @@ msgid "Role base wipe speed" msgstr "自動擦拭速度" msgid "" -"The wipe speed is determined by the speed of the current extrusion role. e." -"g. if a wipe action is executed immediately following an outer wall " +"The wipe speed is determined by the speed of the current extrusion role. " +"e.g. if a wipe action is executed immediately following an outer wall " "extrusion, the speed of the outer wall extrusion will be utilized for the " "wipe action." msgstr "" @@ -16384,6 +16598,19 @@ msgstr "沖刷剩餘的線材進入換料塔" msgid "Enable filament ramming" msgstr "啟用線材尖端成型" +msgid "Tool change on wipe tower" +msgstr "" + +msgid "" +"Force the toolhead to travel to the wipe tower before issuing the tool " +"change command (Tx). Only relevant for multi-extruder (multi-toolhead) " +"printers using a Type 2 wipe tower. By default Orca skips the travel on " +"multi-toolhead machines because the firmware handles the head swap, which " +"can result in the Tx command being issued above the printed part. Enable " +"this option if you want the tool change to always be issued above the wipe " +"tower instead." +msgstr "" + msgid "No sparse layers (beta)" msgstr "取消稀疏層(Beta)" @@ -16705,15 +16932,15 @@ msgid "Threshold angle" msgstr "臨界值角度" msgid "" -"Support will be generated for overhangs whose slope angle is below the threshold. " -"The smaller this value is, the steeper the overhang that can be printed without support.\n" -"Note: If set to 0, normal supports use the Threshold overlap instead, " -"while tree supports fall back to a default value of 30." +"Support will be generated for overhangs whose slope angle is below the " +"threshold. The smaller this value is, the steeper the overhang that can be " +"printed without support.\n" +"Note: If set to 0, normal supports use the Threshold overlap instead, while " +"tree supports fall back to a default value of 30." msgstr "" -"將會為傾斜角度低於臨界值的懸垂產生支撐。" -"數值越小,代表可以在不使用支撐的情況下列印更陡峭的懸垂結構。\n" -"注意:若設為 0,一般支撐會改用閾值疊加比例," -"而樹狀支撐則會回退到預設值 30。" +"將會為傾斜角度低於臨界值的懸垂產生支撐。數值越小,代表可以在不使用支撐的情況" +"下列印更陡峭的懸垂結構。\n" +"注意:若設為 0,一般支撐會改用閾值疊加比例,而樹狀支撐則會回退到預設值 30。" msgid "Threshold overlap" msgstr "閾值疊加比例" @@ -16863,8 +17090,8 @@ msgstr "啟動溫度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present.\n" @@ -17761,8 +17988,8 @@ msgid "Debug level" msgstr "除錯模式等級" msgid "" -"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, 5:" -"trace\n" +"Sets debug logging level. 0:fatal, 1:error, 2:warning, 3:info, 4:debug, " +"5:trace\n" msgstr "" "設定除錯日誌級別。0:致命錯誤,1:錯誤,2:警告,3:資訊,4:除錯,5:追蹤\n" @@ -19430,8 +19657,8 @@ msgstr "" "確定要覆寫嗎?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\".\n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\".\n" "To add preset for more printers, please go to printer selection" msgstr "" "將會將預設名稱重新命名為「廠牌 型號 序號 @選擇的列印設備」。\n" @@ -19593,6 +19820,18 @@ msgid "" "Please re-enter the printer model or nozzle diameter." msgstr "系統預設不允許建立。 請重新輸入列印設備型號或噴嘴直徑。" +msgid "" +"\n" +"\n" +"Available nozzle profiles for this printer:" +msgstr "" + +msgid "" +"\n" +"\n" +"Choose YES to switch existing preset:" +msgstr "" + msgid "Printer Created Successfully" msgstr "列印設備建立成功" @@ -19828,32 +20067,6 @@ msgstr "" "噴嘴類型與實際列印設備噴嘴類型不匹配。\n" "請單擊上面的同步按鈕並重新啟動校正。" -#, c-format, boost-format -msgid "nozzle size in preset: %d" -msgstr "預設噴嘴尺寸:%d" - -#, c-format, boost-format -msgid "nozzle size memorized: %d" -msgstr "記憶噴嘴尺寸:%d" - -msgid "" -"The size of nozzle type in preset is not consistent with memorized nozzle. " -"Did you change your nozzle lately?" -msgstr "預設的噴嘴類型尺寸與記憶的噴嘴尺寸不一致。您最近更換噴嘴了嗎?" - -#, c-format, boost-format -msgid "nozzle[%d] in preset: %.1f" -msgstr "預設中的噴嘴[%d]:%.1f" - -#, c-format, boost-format -msgid "nozzle[%d] memorized: %.1f" -msgstr "噴嘴[%d] 已記憶:%.1f" - -msgid "" -"Your nozzle type in preset is not consistent with memorized nozzle. Did you " -"change your nozzle lately?" -msgstr "您預設的噴嘴類型與記憶的噴嘴不一致。您最近更換噴嘴了嗎?" - #, c-format, boost-format msgid "Printing %1s material with %2s nozzle may cause nozzle damage." msgstr "Printing %1s material with %2s nozzle may cause nozzle damage." @@ -20692,26 +20905,17 @@ msgstr "最大角度" msgid "Detection radius" msgstr "偵測範圍" -msgid "Remove selected points" -msgstr "移除選定的點" +msgid "Selected" +msgstr "" -msgid "Remove all" -msgstr "刪除全部" +msgid "Auto-generate" +msgstr "" -msgid "Auto-generate points" -msgstr "自動產生點" +msgid "Generate brim ears using Max angle and Detection radius" +msgstr "" -msgid "Add a brim ear" -msgstr "新增邊緣支撐 (Brim)" - -msgid "Delete a brim ear" -msgstr "刪除邊緣支撐 (Brim)" - -msgid "Adjust head diameter" -msgstr "調整噴頭直徑" - -msgid "Adjust section view" -msgstr "調整截圖視角" +msgid "Add or Select" +msgstr "" msgid "" "Warning: The brim type is not set to \"painted\", the brim ears will not " @@ -20721,8 +20925,8 @@ msgstr "警告:邊緣類型未設置「上色」,因此邊緣支撐 (Brim) msgid "Set the brim type of this object to \"painted\"" msgstr "將此物件的邊緣類型設定為\"繪製\"" -msgid " invalid brim ears" -msgstr " 無效的邊緣支撐 (Brim)" +msgid "invalid brim ears" +msgstr "" msgid "Brim Ears" msgstr "邊緣支撐 (Brim)" @@ -20984,14 +21188,13 @@ msgstr "" "如何使用鍵盤快捷鍵\n" "您知道嗎? Orca Slicer 提供了廣泛的鍵盤快捷鍵和 3D 場景操作。" -#: resources/data/hints.ini: [hint:Reverse on odd] +#: resources/data/hints.ini: [hint:Reverse on even] msgid "" -"Reverse on odd\n" -"Did you know that Reverse on odd feature can significantly improve " -"the surface quality of your overhangs?" +"Reverse on even\n" +"Did you know that Reverse on even feature can significantly improve " +"the surface quality of your overhangs? However, it can cause wall " +"inconsistencies so use carefully!" msgstr "" -"奇數反向\n" -"您知道嗎?奇數反向 功能能大幅提升懸空結構的表面品質。" #: resources/data/hints.ini: [hint:Cut Tool] msgid "" @@ -21268,6 +21471,78 @@ msgstr "" "您知道嗎?當列印容易翹曲的材料(如 ABS)時,適當提高熱床溫度\n" "可以降低翹曲的機率。" +#~ msgid "Erase all painting" +#~ msgstr "擦除所有自訂支撐" + +#~ msgid "Reset cut" +#~ msgstr "重設切割" + +#~ msgid "Swap pan and rotate mouse buttons" +#~ msgstr "對調滑鼠的平移與旋轉按鍵" + +#~ msgid "" +#~ "If enabled, swaps the left and right mouse buttons pan and rotate " +#~ "functions." +#~ msgstr "啟用後,對調滑鼠左鍵與右鍵的平移與旋轉功能。" + +#, c-format, boost-format +#~ msgid "nozzle size in preset: %d" +#~ msgstr "預設噴嘴尺寸:%d" + +#, c-format, boost-format +#~ msgid "nozzle size memorized: %d" +#~ msgstr "記憶噴嘴尺寸:%d" + +#~ msgid "" +#~ "The size of nozzle type in preset is not consistent with memorized " +#~ "nozzle. Did you change your nozzle lately?" +#~ msgstr "預設的噴嘴類型尺寸與記憶的噴嘴尺寸不一致。您最近更換噴嘴了嗎?" + +#, c-format, boost-format +#~ msgid "nozzle[%d] in preset: %.1f" +#~ msgstr "預設中的噴嘴[%d]:%.1f" + +#, c-format, boost-format +#~ msgid "nozzle[%d] memorized: %.1f" +#~ msgstr "噴嘴[%d] 已記憶:%.1f" + +#~ msgid "" +#~ "Your nozzle type in preset is not consistent with memorized nozzle. Did " +#~ "you change your nozzle lately?" +#~ msgstr "您預設的噴嘴類型與記憶的噴嘴不一致。您最近更換噴嘴了嗎?" + +#~ msgid "Remove selected points" +#~ msgstr "移除選定的點" + +#~ msgid "Remove all" +#~ msgstr "刪除全部" + +#~ msgid "Auto-generate points" +#~ msgstr "自動產生點" + +#~ msgid "Add a brim ear" +#~ msgstr "新增邊緣支撐 (Brim)" + +#~ msgid "Delete a brim ear" +#~ msgstr "刪除邊緣支撐 (Brim)" + +#~ msgid "Adjust head diameter" +#~ msgstr "調整噴頭直徑" + +#~ msgid "Adjust section view" +#~ msgstr "調整截圖視角" + +#~ msgid " invalid brim ears" +#~ msgstr " 無效的邊緣支撐 (Brim)" + +#~ msgid "" +#~ "Reverse on odd\n" +#~ "Did you know that Reverse on odd feature can significantly improve " +#~ "the surface quality of your overhangs?" +#~ msgstr "" +#~ "奇數反向\n" +#~ "您知道嗎?奇數反向 功能能大幅提升懸空結構的表面品質。" + #~ msgid "Pen size" #~ msgstr "筆刷尺寸" diff --git a/resources/data/hints.ini b/resources/data/hints.ini index 7839e5fd45..3ecf029298 100644 --- a/resources/data/hints.ini +++ b/resources/data/hints.ini @@ -94,8 +94,8 @@ text = Switch workspaces\nYou can switch between Prepare and PreviewReverse on odd feature can significantly improve the surface quality of your overhangs? +[hint:Reverse on even] +text = Reverse on even\nDid you know that Reverse on even feature can significantly improve the surface quality of your overhangs? However, it can cause wall inconsistencies so use carefully! [hint:Cut Tool] text = Cut Tool\nDid you know that you can cut a model at any angle and position with the cutting tool? diff --git a/resources/handy_models/OrcaCube_v2.3mf b/resources/handy_models/OrcaCube_v2.3mf deleted file mode 100644 index ede7d884b9..0000000000 Binary files a/resources/handy_models/OrcaCube_v2.3mf and /dev/null differ diff --git a/resources/handy_models/OrcaCube_v2.drc b/resources/handy_models/OrcaCube_v2.drc new file mode 100644 index 0000000000..799dd8a9fa Binary files /dev/null and b/resources/handy_models/OrcaCube_v2.drc differ diff --git a/resources/handy_models/OrcaPlug_v2.drc b/resources/handy_models/OrcaPlug_v2.drc new file mode 100644 index 0000000000..c887aba046 Binary files /dev/null and b/resources/handy_models/OrcaPlug_v2.drc differ diff --git a/resources/handy_models/OrcaSliced.3mf b/resources/handy_models/OrcaSliced.3mf new file mode 100644 index 0000000000..d60a6d31e3 Binary files /dev/null and b/resources/handy_models/OrcaSliced.3mf differ diff --git a/resources/handy_models/OrcaSliced.drc b/resources/handy_models/OrcaSliced.drc new file mode 100644 index 0000000000..1dc9072b35 Binary files /dev/null and b/resources/handy_models/OrcaSliced.drc differ diff --git a/resources/images/filter.svg b/resources/images/filter.svg new file mode 100644 index 0000000000..c48942073b --- /dev/null +++ b/resources/images/filter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/printers/version.txt b/resources/printers/version.txt index b7c8d86711..8b31e51e65 100644 --- a/resources/printers/version.txt +++ b/resources/printers/version.txt @@ -1 +1 @@ -02.00.00.29 \ No newline at end of file +02.00.00.30 \ No newline at end of file diff --git a/resources/profiles/Afinia.json b/resources/profiles/Afinia.json index 13cab053a3..e684195301 100644 --- a/resources/profiles/Afinia.json +++ b/resources/profiles/Afinia.json @@ -1,6 +1,6 @@ { "name": "Afinia", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Afinia configurations", "machine_model_list": [ diff --git a/resources/profiles/Afinia/filament/fdm_filament_common.json b/resources/profiles/Afinia/filament/fdm_filament_common.json index dd89148ec9..94ed0997ee 100644 --- a/resources/profiles/Afinia/filament/fdm_filament_common.json +++ b/resources/profiles/Afinia/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Anet A8 Plus(A8+)_cover.png b/resources/profiles/Anet A8 Plus(A8+)_cover.png deleted file mode 100644 index 4eb1ee93b2..0000000000 Binary files a/resources/profiles/Anet A8 Plus(A8+)_cover.png and /dev/null differ diff --git a/resources/profiles/Anet/Anet A8 Plus(A8+)_cover.png b/resources/profiles/Anet/Anet A8 Plus(A8+)_cover.png deleted file mode 100644 index 4eb1ee93b2..0000000000 Binary files a/resources/profiles/Anet/Anet A8 Plus(A8+)_cover.png and /dev/null differ diff --git a/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.json b/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.json deleted file mode 100644 index 50c3866955..0000000000 --- a/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "type": "machine", - "name": "Anet A8 Plus 0.4 nozzle", - "inherits": "", - "from": "User", - "adaptive_bed_mesh_margin": "0", - "auxiliary_fan": "0", - "bbl_use_printhost": "0", - "bed_custom_model": "", - "bed_custom_texture": "", - "bed_exclude_area": [ - "0x0" - ], - "bed_mesh_max": "99999,99999", - "bed_mesh_min": "-99999,-99999", - "bed_mesh_probe_distance": "50,50", - "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n", - "best_object_pos": "0.5,0.5", - "change_extrusion_role_gcode": "", - "change_filament_gcode": "M600", - "cooling_tube_length": "5", - "cooling_tube_retraction": "91.5", - "default_bed_type": "", - "default_filament_profile": [ - "Anycubic Generic PLA" - ], - "default_print_profile": "0.20mm Standard @Anycubic 4MaxPro2", - "deretraction_speed": [ - "25" - ], - "disable_m73": "0", - "emit_machine_limits_to_gcode": "1", - "enable_filament_ramming": "1", - "enable_long_retraction_when_cut": "0", - "extra_loading_move": "-2", - "extruder_clearance_height_to_lid": "140", - "extruder_clearance_height_to_rod": "36", - "extruder_clearance_radius": "65", - "extruder_colour": [ - "#018001" - ], - "extruder_offset": [ - "0x0" - ], - "fan_kickstart": "0", - "fan_speedup_overhangs": "1", - "fan_speedup_time": "0", - "gcode_flavor": "marlin", - "head_wrap_detect_zone": [], - "high_current_on_filament_swap": "0", - "host_type": "octoprint", - "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", - "long_retractions_when_cut": [ - "0" - ], - "machine_end_gcode": "M104 S0 ; turn off extruder heating\nM140 S0 ; turn off bed heating\nM107 ; turn off fans\nG91 ; relative positioning\nG0 Z+0.5 ; move Z up a tiny bit\nG90 ; absolute positioning\nG0 X135 Y105 F{machine_max_speed_x[0]*60} ; move extruder to center position\nG0 Z190.5 F{machine_max_speed_z[0]*60} ; lower the plattform to Z min\nM84 ; steppers off\nG90 ; absolute positioning\n", - "machine_load_filament_time": "0", - "machine_max_acceleration_e": [ - "5000", - "5000" - ], - "machine_max_acceleration_extruding": [ - "1250", - "1250" - ], - "machine_max_acceleration_retracting": [ - "1250", - "1250" - ], - "machine_max_acceleration_travel": [ - "1500", - "1500" - ], - "machine_max_acceleration_x": [ - "1000", - "900" - ], - "machine_max_acceleration_y": [ - "1000", - "900" - ], - "machine_max_acceleration_z": [ - "1000", - "100" - ], - "machine_max_jerk_e": [ - "5", - "5" - ], - "machine_max_jerk_x": [ - "6", - "6" - ], - "machine_max_jerk_y": [ - "6", - "6" - ], - "machine_max_jerk_z": [ - "0.2", - "0.2" - ], - "machine_max_junction_deviation": [ - "0.10", - "0" - ], - "machine_max_speed_e": [ - "120", - "120" - ], - "machine_max_speed_x": [ - "200", - "200" - ], - "machine_max_speed_y": [ - "200", - "200" - ], - "machine_max_speed_z": [ - "64", - "16" - ], - "machine_min_extruding_rate": [ - "0", - "0" - ], - "machine_min_travel_rate": [ - "0", - "0" - ], - "machine_pause_gcode": "M601", - "machine_start_gcode": "G21 ; metric values\nG90 ; absolute positioning\nM82 ; set extruder to absolute mode\nM140 S[first_layer_bed_temperature] ; set bed temp\nG28 X0 Y0 ; home X and Y\nG28 Z0 ; home Z\nG1 Z30 F{machine_max_speed_z[0]*60} ; move Z a bit down to not blow on the bed edge while heating\nG1 X10 F3900 ; let some space on x to prevent the filament cooling exhaust from beeing blocked by the servo motor\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nM106 S80 ; turn on fan to prevent air nozzle melt while heating up\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\nM107 ; start with the fan off\nG28 X0 ; goto X home again\nG92 E0 ; zero the extruded length\nG1 Z0.2 F360 ; move plattform upwards\n; extrude material next to the plattform (comment or remove following lines to disable)\nG1 F180 E20 ; extrude some material next to the plattform\nG92 E0 ; zero the extruded length\nG1 E-[retraction_length] F{retraction_speed[0]*60} ; do a filament retract\nG92 E0 ; zero the extruded length again\nG1 X5 F3900 ; move sideways to get rid of that string\nG1 E[retraction_length] F{retraction_speed[0]*60} ; do a filament deretract with retract parameters\nG92 E0 ; zero the extruded length again\n; draw intro line (comment or remove following lines to disable)\nG1 X30 E5 F700 ; draw intro line\nG92 E0 ; zero the extruded length\nG1 E-[retraction_length] F{retraction_speed[0]*60} ; do a filament retract\nG1 X40 Z2.0 ; move away from the introline\nG92 E0 ; zero the extruded length again\nG1 E[retraction_length] F{retraction_speed[0]*60} ; do a filament deretract with retract parameters\n; end of intro line code\nM117 Printing...\nG5", - "machine_tool_change_time": "0", - "machine_unload_filament_time": "0", - "manual_filament_change": "0", - "max_layer_height": [ - "0.3" - ], - "max_resonance_avoidance_speed": "120", - "min_layer_height": [ - "0.07" - ], - "min_resonance_avoidance_speed": "70", - "nozzle_diameter": [ - "0.4" - ], - "nozzle_height": "2.5", - "nozzle_hrc": "0", - "nozzle_type": "undefine", - "nozzle_volume": "0", - "parking_pos_retraction": "92", - "pellet_modded_printer": "0", - "preferred_orientation": "0", - "printable_area": [ - "0x0", - "300x0", - "300x300", - "0x300" - ], - "printable_height": "350", - "printer_model": "Anet A8 Plus", - "printer_notes": "", - "printer_settings_id": "Anet A8 Plus 0.4 nozzle", - "printer_structure": "undefine", - "printer_technology": "FFF", - "printer_variant": "0.4", - "printhost_authorization_type": "key", - "printhost_ssl_ignore_revoke": "0", - "printing_by_object_gcode": "", - "purge_in_prime_tower": "1", - "resonance_avoidance": "0", - "retract_before_wipe": [ - "0%" - ], - "retract_length_toolchange": [ - "10" - ], - "retract_lift_above": [ - "0" - ], - "retract_lift_below": [ - "0" - ], - "retract_lift_enforce": [ - "All Surfaces" - ], - "retract_restart_extra": [ - "0" - ], - "retract_restart_extra_toolchange": [ - "0" - ], - "retract_when_changing_layer": [ - "1" - ], - "retraction_distances_when_cut": [ - "18" - ], - "retraction_length": [ - "2.5" - ], - "retraction_minimum_travel": [ - "2" - ], - "retraction_speed": [ - "35" - ], - "scan_first_layer": "0", - "silent_mode": "0", - "single_extruder_multi_material": "1", - "support_air_filtration": "1", - "support_chamber_temp_control": "1", - "support_multi_bed_types": "0", - "template_custom_gcode": "", - "thumbnails": "48x48/PNG,300x300/PNG", - "thumbnails_format": "PNG", - "time_cost": "0", - "time_lapse_gcode": "", - "travel_slope": [ - "3" - ], - "upward_compatible_machine": [], - "use_firmware_retraction": "0", - "use_relative_e_distances": "1", - "wipe": [ - "1" - ], - "wipe_distance": [ - "1" - ], - "z_hop": [ - "0.4" - ], - "z_hop_types": [ - "Normal Lift" - ], - "z_offset": "0" -} diff --git a/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.orca_printer b/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.orca_printer deleted file mode 100644 index b73091555d..0000000000 Binary files a/resources/profiles/Anet/machine/Anet A8 Plus 0.4 nozzle.orca_printer and /dev/null differ diff --git a/resources/profiles/Anker.json b/resources/profiles/Anker.json index c1a38a5f89..2d578cab61 100644 --- a/resources/profiles/Anker.json +++ b/resources/profiles/Anker.json @@ -1,6 +1,6 @@ { "name": "Anker", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Anker configurations", "machine_model_list": [ diff --git a/resources/profiles/Anycubic.json b/resources/profiles/Anycubic.json index eae65e069a..789f72f3a1 100644 --- a/resources/profiles/Anycubic.json +++ b/resources/profiles/Anycubic.json @@ -1,6 +1,6 @@ { "name": "Anycubic", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Anycubic configurations", "machine_model_list": [ diff --git a/resources/profiles/Anycubic/filament/fdm_filament_common.json b/resources/profiles/Anycubic/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Anycubic/filament/fdm_filament_common.json +++ b/resources/profiles/Anycubic/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json index a33b6ee6f8..72e5707665 100644 --- a/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json +++ b/resources/profiles/Anycubic/machine/Anycubic Kobra X 0.4 nozzle.json @@ -41,7 +41,7 @@ "before_layer_change_gcode": "", "best_object_pos": "0.5,0.5", "change_extrusion_role_gcode": "", - "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 17:46:45 3+n换料gcode,包括7=3+4,19=3+4×4\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n;;; SET_VELOCITY_LIMIT VELOCITY=350 ACCEL=10000\n;;; G1 E-2 F4800\n;;; G1 Z{toolchange_z+0.6} F1800\n;;; M106 S0\n;;; G1 X265 F21000\n;;; M400 P370\n;;; G1 X277.5 F600\n;;; G1 E-2 F300\n;;; M400 P361\n;;; G1 Z{toolchange_z+3} F1200\n;;; G1 X0 F21000\n;;; G1 X-17.5 F5250\n;;; M400 P1569\n\n{local minimal_extrude_ = 5.0}\n{if one_of(filament_type[current_extruder], \"TPU\", \"PVA\")}\n{local minimal_extrude_ = 8.0}\n{endif}\n;;; G1 E{minimal_extrude_} F300\n;;; G1 E-33 F600\n\n{ local curr_t = current_extruder; local next_t = next_extruder;}\n{ local tab_step_time_ = (0, 850, 1350, 850, 850, 0, 1350, 1350, 1350, 1350, 0, 850, 850, 1350, 850, 0)};\n{ if (0 <= curr_t && curr_t < 3) then local step_from_=curr_t else local step_from_=3 endif}; from {step_from_}\n{ if (0 <= next_t && next_t < 3) then local step_into_=next_t else local step_into_=3 endif}; from {step_into_}\n;;; M400 P{tab_step_time_[step_from_ * 4 + step_into_]}\n\n{ local magic_mask_with_box = flush_length_4}\n{ if magic_mask_with_box == -1392 && size(filament_type) > 0 && size(filament_type) == size(ace_t_box_vector) && size(filament_type) == size(ace_t_slot_vector) }\n { local is_curr_in_box = size(ace_t_box_vector) > curr_t ? ace_t_box_vector[curr_t] >= 0 ? true : false : false}; is_curr_in_box = {is_curr_in_box}\n { local is_next_in_box = size(ace_t_box_vector) > next_t ? ace_t_box_vector[next_t] >= 0 ? true : false : false}; is_next_in_box = {is_next_in_box}\n\n; curr_t box={ace_t_box_vector[curr_t]}, slot={ace_t_slot_vector[curr_t]}; next_t box={ace_t_box_vector[next_t]}, slot={ace_t_slot_vector[next_t]}\n { if ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] < 0}\n;;; M400 P0 ; 料架→料架\n { elsif ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] >= 0 }\n;;; M400 P40409 ; 料架→盒子\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] < 0 }\n;;; M400 P51591 ; 盒子→料架\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] == ace_t_box_vector[curr_t] }\n { if 0 < ace_t_slot_vector[curr_t] && ace_t_slot_vector[curr_t] <= 4 && 0 < ace_t_slot_vector[next_t] && ace_t_slot_vector[next_t] <= 4}\n;;; M400 P2700 ; 四进四→料盒\n { else }\n;;; M400 P91279 ; 盒子→盒子\n { endif }\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] != ace_t_box_vector[curr_t] }\n;;; M400 P93746 ; 盒子→不同盒子\n { else }\n; 未知\n { endif }\n{ endif }\n\n\nT[next_extruder]\n\n;;; G1 E8 F300\n;;; M400 P3643\n;;; G1 E13 F1200\n;;; M400 P1000\n\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_-70+150) / 150))}\n{local extrude_length_=flush_length_ / loops_}\n{local EXTRUDE_SPEED_ = 5 * 60}\n{local UNWIND_SPEED_ = 20 *60}\n{local index_ = 0}\n\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; G1 E0.000001\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n\n; G1 X{x_after_toolchange} Y{y_after_toolchange} F12000\n; G1 Z{toolchange_z} F1200\n;;; G1 E2 F1800\n; SET_VELOCITY_LIMIT VELOCITY=450 ACCEL=10000\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END", + "change_filament_gcode": "; FLUSH_START\n;@2026-04-03 17:46:45 3+n换料gcode,包括7=3+4,19=3+4×4\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n;;; SET_VELOCITY_LIMIT VELOCITY=350 ACCEL=10000\n;;; G1 E-2 F4800\n;;; G1 Z{toolchange_z+0.6} F1800\n;;; M106 S0\n;;; G1 X265 F21000\n;;; M400 P370\n;;; G1 X277.5 F600\n;;; G1 E-2 F300\n;;; M400 P361\n;;; G1 Z{toolchange_z+3} F1200\n;;; G1 X0 F21000\n;;; G1 X-17.5 F5250\n;;; M400 P1569\n\n{local minimal_extrude_ = 5.0}\n{if one_of(filament_type[current_extruder], \"TPU\", \"PVA\")}\n{local minimal_extrude_ = 8.0}\n{endif}\n;;; G1 E{minimal_extrude_} F300\n;;; G1 E-33 F600\n\n{ local curr_t = current_extruder; local next_t = next_extruder;}\n{ local tab_step_time_ = (0, 850, 1350, 850, 850, 0, 1350, 1350, 1350, 1350, 0, 850, 850, 1350, 850, 0)};\n{ if (0 <= curr_t && curr_t < 3) then local step_from_=curr_t else local step_from_=3 endif}; from {step_from_}\n{ if (0 <= next_t && next_t < 3) then local step_into_=next_t else local step_into_=3 endif}; from {step_into_}\n;;; M400 P{tab_step_time_[step_from_ * 4 + step_into_]}\n\n{ local magic_mask_with_box = flush_length_4}\n{ if magic_mask_with_box == -1392 }\n { local is_curr_in_box = size(ace_t_box_vector) > curr_t ? ace_t_box_vector[curr_t] >= 0 ? true : false : false}; is_curr_in_box = {is_curr_in_box}\n { local is_next_in_box = size(ace_t_box_vector) > next_t ? ace_t_box_vector[next_t] >= 0 ? true : false : false}; is_next_in_box = {is_next_in_box}\n\n; curr_t box={ace_t_box_vector[curr_t]}, slot={ace_t_slot_vector[curr_t]}; next_t box={ace_t_box_vector[next_t]}, slot={ace_t_slot_vector[next_t]}\n { if ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] < 0}\n;;; M400 P0 ; 料架→料架\n { elsif ace_t_box_vector[curr_t] < 0 && ace_t_box_vector[next_t] >= 0 }\n;;; M400 P40409 ; 料架→盒子\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] < 0 }\n;;; M400 P51591 ; 盒子→料架\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] == ace_t_box_vector[curr_t] }\n { if 0 < ace_t_slot_vector[curr_t] && ace_t_slot_vector[curr_t] <= 4 && 0 < ace_t_slot_vector[next_t] && ace_t_slot_vector[next_t] <= 4}\n;;; M400 P2700 ; 四进四→料盒\n { else }\n;;; M400 P91279 ; 盒子→盒子\n { endif }\n { elsif ace_t_box_vector[curr_t] >= 0 && ace_t_box_vector[next_t] != ace_t_box_vector[curr_t] }\n;;; M400 P93746 ; 盒子→不同盒子\n { else }\n; 未知\n { endif }\n{ endif }\n\n\nT[next_extruder]\n\n;;; G1 E8 F300\n;;; M400 P3643\n;;; G1 E13 F1200\n;;; M400 P1000\n\n{local flush_length_= flush_length}\n{local loops_=max(1,int((flush_length_-70+150) / 150))}\n{local extrude_length_=flush_length_ / loops_}\n{local EXTRUDE_SPEED_ = 5 * 60}\n{local UNWIND_SPEED_ = 20 *60}\n{local index_ = 0}\n\n{ if (loops_ > 0) }\n{ local loops_ = loops_ - 1}\n{ local index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; G1 E0.000001\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ loops_ = loops_ - 1}\n{ index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n{ if (loops_ > 0) }\n{ loops_ = loops_ - 1}\n{ index_ = index_ + 1}\n; {index_} + {loops_}\n;;; M106 S0\n;;; M400 P1000\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.18} F{EXTRUDE_SPEED_}\n;;; G1 E{extrude_length_*0.02} F{EXTRUDE_SPEED_}\n;;; M400 P{extrude_length_/0.03}\n;;; M106 S255\n;;; M400 P2005\n;;; G1 E-2 F{UNWIND_SPEED_}\n;;; M400 P414\n{endif}\n\n; G1 X{x_after_toolchange} Y{y_after_toolchange} F12000\n; G1 Z{toolchange_z} F1200\n;;; G1 E2 F1800\n; SET_VELOCITY_LIMIT VELOCITY=450 ACCEL=10000\n;;; M400 P0\n;_GP_INLINE_ESTIMATED_PRINTING_TIME_PLACEHOLDER\n; FLUSH_END", "cooling_tube_length": "0", "cooling_tube_retraction": "0", "deretraction_speed": [ diff --git a/resources/profiles/Artillery.json b/resources/profiles/Artillery.json index 977d5c4d10..bf9e93f525 100644 --- a/resources/profiles/Artillery.json +++ b/resources/profiles/Artillery.json @@ -1,6 +1,6 @@ { "name": "Artillery", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Artillery configurations", "machine_model_list": [ diff --git a/resources/profiles/Artillery/filament/fdm_filament_common.json b/resources/profiles/Artillery/filament/fdm_filament_common.json index f8aa522eb2..abf727c392 100644 --- a/resources/profiles/Artillery/filament/fdm_filament_common.json +++ b/resources/profiles/Artillery/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 3a77d47b5f..d110bda4b2 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "02.01.00.13", + "version": "02.01.00.14", "force_update": "0", "description": "BBL configurations", "machine_model_list": [ diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 69fb92a4ec..caa037c74b 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -97,7 +97,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_ramming_volumetric_speed": [ "-1" diff --git a/resources/profiles/BIQU.json b/resources/profiles/BIQU.json index cef8049680..4cdfde4ada 100644 --- a/resources/profiles/BIQU.json +++ b/resources/profiles/BIQU.json @@ -1,6 +1,6 @@ { "name": "BIQU", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "BIQU configurations", "machine_model_list": [ diff --git a/resources/profiles/Blocks.json b/resources/profiles/Blocks.json index 6f39b96ef5..5a40e50ce1 100644 --- a/resources/profiles/Blocks.json +++ b/resources/profiles/Blocks.json @@ -1,6 +1,6 @@ { "name": "Blocks", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Blocks configurations", "machine_model_list": [ diff --git a/resources/profiles/Blocks/filament/fdm_filament_common.json b/resources/profiles/Blocks/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Blocks/filament/fdm_filament_common.json +++ b/resources/profiles/Blocks/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/CONSTRUCT3D.json b/resources/profiles/CONSTRUCT3D.json index 730b1c3bd4..371c99775e 100644 --- a/resources/profiles/CONSTRUCT3D.json +++ b/resources/profiles/CONSTRUCT3D.json @@ -1,6 +1,6 @@ { "name": "CONSTRUCT3D", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Construct3D configurations", "machine_model_list": [ diff --git a/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json b/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json index fc6dba4016..bf2a52192b 100644 --- a/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json +++ b/resources/profiles/CONSTRUCT3D/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Chuanying.json b/resources/profiles/Chuanying.json index 325569339a..8fe61c9bff 100644 --- a/resources/profiles/Chuanying.json +++ b/resources/profiles/Chuanying.json @@ -1,7 +1,7 @@ { "name": "Chuanying", "url": "", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Chuanying configurations", "machine_model_list": [ diff --git a/resources/profiles/Co Print.json b/resources/profiles/Co Print.json index 7184d02328..47b9398af9 100644 --- a/resources/profiles/Co Print.json +++ b/resources/profiles/Co Print.json @@ -1,6 +1,6 @@ { "name": "Co Print", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "CoPrint configurations", "machine_model_list": [ diff --git a/resources/profiles/CoLiDo.json b/resources/profiles/CoLiDo.json index a5bf288f29..88a7776661 100644 --- a/resources/profiles/CoLiDo.json +++ b/resources/profiles/CoLiDo.json @@ -1,6 +1,6 @@ { "name": "CoLiDo", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "CoLiDo configurations", "machine_model_list": [ diff --git a/resources/profiles/CoLiDo/filament/fdm_filament_common.json b/resources/profiles/CoLiDo/filament/fdm_filament_common.json index 996fd8412b..ab6956a1a4 100644 --- a/resources/profiles/CoLiDo/filament/fdm_filament_common.json +++ b/resources/profiles/CoLiDo/filament/fdm_filament_common.json @@ -67,7 +67,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Comgrow.json b/resources/profiles/Comgrow.json index 13f8fad50f..45bbe6d8d4 100644 --- a/resources/profiles/Comgrow.json +++ b/resources/profiles/Comgrow.json @@ -1,6 +1,6 @@ { "name": "Comgrow", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Comgrow configurations", "machine_model_list": [ diff --git a/resources/profiles/Comgrow/filament/fdm_filament_common.json b/resources/profiles/Comgrow/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Comgrow/filament/fdm_filament_common.json +++ b/resources/profiles/Comgrow/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Creality/filament/fdm_filament_common.json b/resources/profiles/Creality/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Creality/filament/fdm_filament_common.json +++ b/resources/profiles/Creality/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Cubicon.json b/resources/profiles/Cubicon.json index 94ff81914b..c85e766a66 100644 --- a/resources/profiles/Cubicon.json +++ b/resources/profiles/Cubicon.json @@ -1,6 +1,6 @@ { "name": "Cubicon", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Cubicon configurations", "machine_model_list": [ diff --git a/resources/profiles/Cubicon/filament/fdm_filament_common.json b/resources/profiles/Cubicon/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Cubicon/filament/fdm_filament_common.json +++ b/resources/profiles/Cubicon/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index de265beb0d..a2dae74cab 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "My configurations", "machine_model_list": [ diff --git a/resources/profiles/DeltaMaker.json b/resources/profiles/DeltaMaker.json index 16fc960347..7942285ce0 100755 --- a/resources/profiles/DeltaMaker.json +++ b/resources/profiles/DeltaMaker.json @@ -1,7 +1,7 @@ { "name": "DeltaMaker", "url": "", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "DeltaMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json b/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json index 6e60f86bbd..52cc522d49 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_pet.json @@ -14,7 +14,7 @@ "15" ], "filament_max_volumetric_speed": [ - "0" + "8" ], "filament_type": [ "PETG" diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json b/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json index b4a6b48e02..6a791a5846 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_pla.json @@ -6,7 +6,7 @@ "instantiation": "false", "fan_cooling_layer_time": "100", "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_type": [ "PLA" diff --git a/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json b/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json index 5776cd8939..29b2e790a5 100755 --- a/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json +++ b/resources/profiles/DeltaMaker/filament/fdm_filament_tpu.json @@ -14,7 +14,7 @@ "30" ], "filament_max_volumetric_speed": [ - "0" + "3.6" ], "filament_type": [ "TPU" diff --git a/resources/profiles/Dremel.json b/resources/profiles/Dremel.json index d434911900..8988c73e45 100644 --- a/resources/profiles/Dremel.json +++ b/resources/profiles/Dremel.json @@ -1,6 +1,6 @@ { "name": "Dremel", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Dremel configurations", "machine_model_list": [ diff --git a/resources/profiles/Dremel/filament/fdm_filament_common.json b/resources/profiles/Dremel/filament/fdm_filament_common.json index fbfcbfb193..b87e860352 100644 --- a/resources/profiles/Dremel/filament/fdm_filament_common.json +++ b/resources/profiles/Dremel/filament/fdm_filament_common.json @@ -40,7 +40,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Elegoo.json b/resources/profiles/Elegoo.json index 2aa70618a3..25597355fb 100644 --- a/resources/profiles/Elegoo.json +++ b/resources/profiles/Elegoo.json @@ -1,6 +1,6 @@ { "name": "Elegoo", - "version": "02.03.02.71", + "version": "02.04.00.00", "force_update": "0", "description": "Elegoo configurations", "machine_model_list": [ diff --git a/resources/profiles/Elegoo/filament/fdm_filament_common.json b/resources/profiles/Elegoo/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Elegoo/filament/fdm_filament_common.json +++ b/resources/profiles/Elegoo/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Eryone.json b/resources/profiles/Eryone.json index c8645f54c4..9e695f2420 100644 --- a/resources/profiles/Eryone.json +++ b/resources/profiles/Eryone.json @@ -1,6 +1,6 @@ { "name": "Eryone", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Eryone configurations", "machine_model_list": [ diff --git a/resources/profiles/Eryone/filament/fdm_filament_common.json b/resources/profiles/Eryone/filament/fdm_filament_common.json index 83af95dd28..83f2a1f5d3 100644 --- a/resources/profiles/Eryone/filament/fdm_filament_common.json +++ b/resources/profiles/Eryone/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FLSun.json b/resources/profiles/FLSun.json index 17439d0851..6c2da9e7a2 100644 --- a/resources/profiles/FLSun.json +++ b/resources/profiles/FLSun.json @@ -1,6 +1,6 @@ { "name": "FLSun", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "FLSun configurations", "machine_model_list": [ diff --git a/resources/profiles/FLSun/filament/fdm_filament_common.json b/resources/profiles/FLSun/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/FLSun/filament/fdm_filament_common.json +++ b/resources/profiles/FLSun/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Flashforge.json b/resources/profiles/Flashforge.json index 2cc425021e..d198488a09 100644 --- a/resources/profiles/Flashforge.json +++ b/resources/profiles/Flashforge.json @@ -1,7 +1,7 @@ { "name": "Flashforge", "url": "", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Flashforge configurations", "machine_model_list": [ diff --git a/resources/profiles/Flashforge/filament/fdm_filament_common.json b/resources/profiles/Flashforge/filament/fdm_filament_common.json index cb6109169c..77353ae799 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_common.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pet.json b/resources/profiles/Flashforge/filament/fdm_filament_pet.json index f32eb3f72c..678ab77822 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pet.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pet.json @@ -38,7 +38,7 @@ "15" ], "filament_max_volumetric_speed": [ - "0" + "8" ], "filament_type": [ "PETG" diff --git a/resources/profiles/Flashforge/filament/fdm_filament_pla.json b/resources/profiles/Flashforge/filament/fdm_filament_pla.json index 3086172aab..7dd7f4e42a 100644 --- a/resources/profiles/Flashforge/filament/fdm_filament_pla.json +++ b/resources/profiles/Flashforge/filament/fdm_filament_pla.json @@ -8,7 +8,7 @@ "100" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_type": [ "PLA" diff --git a/resources/profiles/FlyingBear.json b/resources/profiles/FlyingBear.json index fafaad227b..a92eb99002 100644 --- a/resources/profiles/FlyingBear.json +++ b/resources/profiles/FlyingBear.json @@ -1,6 +1,6 @@ { "name": "FlyingBear", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "1", "description": "FlyingBear configurations", "machine_model_list": [ diff --git a/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json b/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json index 01c835d5c8..7200bb2a0f 100644 --- a/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json +++ b/resources/profiles/FlyingBear/filament/Ghost7/fdm_filament_common_Ghost7.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json index cefa33afa5..5501986fb5 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_common_S1.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/FlyingBear/filament/fdm_filament_common.json b/resources/profiles/FlyingBear/filament/fdm_filament_common.json index 64993e656a..b01bfa0377 100644 --- a/resources/profiles/FlyingBear/filament/fdm_filament_common.json +++ b/resources/profiles/FlyingBear/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Folgertech.json b/resources/profiles/Folgertech.json index d8615ab990..00c443f558 100644 --- a/resources/profiles/Folgertech.json +++ b/resources/profiles/Folgertech.json @@ -1,6 +1,6 @@ { "name": "Folgertech", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Folgertech configurations", "machine_model_list": [ diff --git a/resources/profiles/Geeetech.json b/resources/profiles/Geeetech.json index 0dc30266fc..4bee5a1f6a 100644 --- a/resources/profiles/Geeetech.json +++ b/resources/profiles/Geeetech.json @@ -1,6 +1,6 @@ { "name": "Geeetech", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Geeetech configurations", "machine_model_list": [ diff --git a/resources/profiles/Ginger Additive.json b/resources/profiles/Ginger Additive.json index a54bdc3b1f..299f6ee009 100644 --- a/resources/profiles/Ginger Additive.json +++ b/resources/profiles/Ginger Additive.json @@ -1,6 +1,6 @@ { "name": "Ginger Additive", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "1", "description": "Ginger configuration", "machine_model_list": [ diff --git a/resources/profiles/InfiMech.json b/resources/profiles/InfiMech.json index 7131aa62be..d519b846d6 100644 --- a/resources/profiles/InfiMech.json +++ b/resources/profiles/InfiMech.json @@ -1,6 +1,6 @@ { "name": "InfiMech", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "1", "description": "InfiMech configurations", "machine_model_list": [ diff --git a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json index 9cc78b356c..2d051eeee2 100644 --- a/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json +++ b/resources/profiles/InfiMech/filament/EX+APS/fdm_filament_common_EX+APS.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json b/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json index f4990a806c..a67718f5e0 100644 --- a/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json +++ b/resources/profiles/InfiMech/filament/EX/fdm_filament_common_EX.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json index 847c3260e4..e8ae383cf3 100644 --- a/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json +++ b/resources/profiles/InfiMech/filament/HSN/fdm_filament_common_HSN.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_common.json b/resources/profiles/InfiMech/filament/fdm_filament_common.json index 64993e656a..b01bfa0377 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_common.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Kingroon.json b/resources/profiles/Kingroon.json index 704ad96793..adda5d8537 100644 --- a/resources/profiles/Kingroon.json +++ b/resources/profiles/Kingroon.json @@ -1,7 +1,7 @@ { "name": "Kingroon", "url": "https://kingroon.com/", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "1", "description": "Kingroon configuration files", "machine_model_list": [ diff --git a/resources/profiles/LH.json b/resources/profiles/LH.json index 32df35a0cf..27c489033d 100644 --- a/resources/profiles/LH.json +++ b/resources/profiles/LH.json @@ -1,7 +1,7 @@ { "name": "LH", "url": "https://github.com/lhndo/LH-Stinger", - "version": "01.00.00.00", + "version": "02.04.00.00", "force_update": "0", "description": "LH 3D Printer Configuration", "machine_model_list": [ diff --git a/resources/profiles/LH/filament/fdm_filament_common.json b/resources/profiles/LH/filament/fdm_filament_common.json index 788382bc9e..50f0df75c4 100644 --- a/resources/profiles/LH/filament/fdm_filament_common.json +++ b/resources/profiles/LH/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/LONGER.json b/resources/profiles/LONGER.json index 86572785da..397f95b157 100644 --- a/resources/profiles/LONGER.json +++ b/resources/profiles/LONGER.json @@ -1,6 +1,6 @@ { "name": "LONGER", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "LONGER configurations", "machine_model_list": [ diff --git a/resources/profiles/LONGER/filament/fdm_filament_common.json b/resources/profiles/LONGER/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/LONGER/filament/fdm_filament_common.json +++ b/resources/profiles/LONGER/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Lulzbot.json b/resources/profiles/Lulzbot.json index 0f2d77c79e..9d4c5617f9 100644 --- a/resources/profiles/Lulzbot.json +++ b/resources/profiles/Lulzbot.json @@ -1,7 +1,7 @@ { "name": "Lulzbot", "url": "https://ohai.lulzbot.com/group/taz-6/", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Lulzbot configurations", "machine_model_list": [ diff --git a/resources/profiles/M3D.json b/resources/profiles/M3D.json index d8bbdd1e56..830dd2ae7d 100644 --- a/resources/profiles/M3D.json +++ b/resources/profiles/M3D.json @@ -1,6 +1,6 @@ { "name": "M3D", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Configuration for M3D printers", "machine_model_list": [ diff --git a/resources/profiles/MagicMaker.json b/resources/profiles/MagicMaker.json index c537d91a9c..87327300d4 100644 --- a/resources/profiles/MagicMaker.json +++ b/resources/profiles/MagicMaker.json @@ -1,6 +1,6 @@ { "name": "MagicMaker", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "MagicMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Mellow.json b/resources/profiles/Mellow.json index 1db75c75aa..678fb93480 100644 --- a/resources/profiles/Mellow.json +++ b/resources/profiles/Mellow.json @@ -1,6 +1,6 @@ { "name": "Mellow", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Mellow Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/OpenEYE.json b/resources/profiles/OpenEYE.json index 62861b96ef..e8f05e8fd7 100644 --- a/resources/profiles/OpenEYE.json +++ b/resources/profiles/OpenEYE.json @@ -1,7 +1,7 @@ { "name": "OpenEYE", "url": "http://www.openeye.tech", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "OpenEYE Printers Configurations", "machine_model_list": [ diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json index f8507698dc..43b9a4fd68 100644 --- a/resources/profiles/OrcaArena.json +++ b/resources/profiles/OrcaArena.json @@ -1,7 +1,7 @@ { "name": "Orca Arena Printer", "url": "", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Orca Arena configuration files", "machine_model_list": [ diff --git a/resources/profiles/OrcaArena/filament/fdm_filament_common.json b/resources/profiles/OrcaArena/filament/fdm_filament_common.json index 4026949258..27b0ff7b5e 100644 --- a/resources/profiles/OrcaArena/filament/fdm_filament_common.json +++ b/resources/profiles/OrcaArena/filament/fdm_filament_common.json @@ -70,7 +70,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 63c3a15596..b4f615dd3d 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -1507,6 +1507,118 @@ { "name": "GreenGate3D PETG @System", "sub_path": "filament/GreenGate3D/GreenGate3D PETG @System.json" + }, + { + "name": "DREMC PLA+ @base", + "sub_path": "filament/DREMC/DREMC PLA+ @base.json" + }, + { + "name": "DREMC PLA+ @System", + "sub_path": "filament/DREMC/DREMC PLA+ @System.json" + }, + { + "name": "DREMC PETG @base", + "sub_path": "filament/DREMC/DREMC PETG @base.json" + }, + { + "name": "DREMC PETG @System", + "sub_path": "filament/DREMC/DREMC PETG @System.json" + }, + { + "name": "DREMC ABS @base", + "sub_path": "filament/DREMC/DREMC ABS @base.json" + }, + { + "name": "DREMC ABS @System", + "sub_path": "filament/DREMC/DREMC ABS @System.json" + }, + { + "name": "DREMC ABS+ @base", + "sub_path": "filament/DREMC/DREMC ABS+ @base.json" + }, + { + "name": "DREMC ABS+ @System", + "sub_path": "filament/DREMC/DREMC ABS+ @System.json" + }, + { + "name": "DREMC ASA @base", + "sub_path": "filament/DREMC/DREMC ASA @base.json" + }, + { + "name": "DREMC ASA @System", + "sub_path": "filament/DREMC/DREMC ASA @System.json" + }, + { + "name": "DREMC PA6-CF @base", + "sub_path": "filament/DREMC/DREMC PA6-CF @base.json" + }, + { + "name": "DREMC PA6-CF @System", + "sub_path": "filament/DREMC/DREMC PA6-CF @System.json" + }, + { + "name": "DREMC PA12-CF @base", + "sub_path": "filament/DREMC/DREMC PA12-CF @base.json" + }, + { + "name": "DREMC PA12-CF @System", + "sub_path": "filament/DREMC/DREMC PA12-CF @System.json" + }, + { + "name": "DREMC PET-CF @base", + "sub_path": "filament/DREMC/DREMC PET-CF @base.json" + }, + { + "name": "DREMC PET-CF @System", + "sub_path": "filament/DREMC/DREMC PET-CF @System.json" + }, + { + "name": "DREMC ABS-GF @base", + "sub_path": "filament/DREMC/DREMC ABS-GF @base.json" + }, + { + "name": "DREMC ABS-GF @System", + "sub_path": "filament/DREMC/DREMC ABS-GF @System.json" + }, + { + "name": "DREMC TPU 95A @base", + "sub_path": "filament/DREMC/DREMC TPU 95A @base.json" + }, + { + "name": "DREMC TPU 95A @System", + "sub_path": "filament/DREMC/DREMC TPU 95A @System.json" + }, + { + "name": "DREMC PPA-CF @base", + "sub_path": "filament/DREMC/DREMC PPA-CF @base.json" + }, + { + "name": "DREMC PPA-CF @System", + "sub_path": "filament/DREMC/DREMC PPA-CF @System.json" + }, + { + "name": "DREMC PLA+ HS @base", + "sub_path": "filament/DREMC/DREMC PLA HS @base.json" + }, + { + "name": "DREMC PLA+ HS @System", + "sub_path": "filament/DREMC/DREMC PLA HS @System.json" + }, + { + "name": "DREMC ASA CF @base", + "sub_path": "filament/DREMC/DREMC ASA CF @base.json" + }, + { + "name": "DREMC ASA CF @System", + "sub_path": "filament/DREMC/DREMC ASA CF @System.json" + }, + { + "name": "DREMC ASA GF @base", + "sub_path": "filament/DREMC/DREMC ASA GF @base.json" + }, + { + "name": "DREMC ASA GF @System", + "sub_path": "filament/DREMC/DREMC ASA GF @System.json" } ], "process_list": [], diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json new file mode 100644 index 0000000000..bb6f1ebd94 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC ABS @System", + "inherits": "DREMC ABS @base", + "from": "system", + "setting_id": "DREMC003", + "instantiation": "false", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json new file mode 100644 index 0000000000..b4835fdeca --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS @base.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "DREMC ABS @base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "DREMC003", + "instantiation": "false", + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.06" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_shrink": [ + "99.7" + ], + "fan_max_speed": [ + "20" + ], + "overhang_fan_speed": [ + "50" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "chamber_temperature": [ + "60" + ], + "filament_vendor": [ + "DREMC" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json new file mode 100644 index 0000000000..1eb4fcd076 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC ABS+ @System", + "inherits": "DREMC ABS+ @base", + "from": "system", + "setting_id": "DREMC004", + "instantiation": "false", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json new file mode 100644 index 0000000000..f9b2cd2c40 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS+ @base.json @@ -0,0 +1,26 @@ +{ + "type": "filament", + "name": "DREMC ABS+ @base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "DREMC004", + "instantiation": "false", + "filament_cost": [ + "24" + ], + "filament_density": [ + "1.06" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_shrink": [ + "99.7" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_vendor": [ + "DREMC" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @System.json new file mode 100644 index 0000000000..73ffb7f363 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @System.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "DREMC ABS-GF @System", + "inherits": "DREMC ABS-GF @base", + "from": "system", + "setting_id": "DREMC009", + "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json new file mode 100644 index 0000000000..b5917c922e --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ABS-GF @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "DREMC ABS-GF @base", + "inherits": "fdm_filament_abs", + "from": "system", + "filament_id": "DREMC009", + "instantiation": "false", + "fan_cooling_layer_time": [ + "12" + ], + "fan_max_speed": [ + "30" + ], + "filament_cost": [ + "40" + ], + "filament_density": [ + "1.12" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_shrink": [ + "99.7" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_type": [ + "ABS-GF" + ], + "filament_vendor": [ + "DREMC" + ], + "overhang_fan_speed": [ + "30" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "4" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json new file mode 100644 index 0000000000..b4026708da --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC ASA @System", + "inherits": "DREMC ASA @base", + "from": "system", + "setting_id": "DREMC005", + "instantiation": "false", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json new file mode 100644 index 0000000000..324e484437 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "DREMC ASA @base", + "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "DREMC005", + "instantiation": "false", + "eng_plate_temp": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "filament_cost": [ + "36" + ], + "filament_density": [ + "1.09" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_shrink": [ + "99.7" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_vendor": [ + "DREMC" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json new file mode 100644 index 0000000000..dd81c1f531 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC ASA CF @System", + "inherits": "DREMC ASA CF @base", + "from": "system", + "setting_id": "DREMC012_00", + "instantiation": "false", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json new file mode 100644 index 0000000000..b15fa0f629 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA CF @base.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "DREMC ASA CF @base", + "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "DREMC012", + "instantiation": "false", + "eng_plate_temp": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "filament_cost": [ + "48" + ], + "filament_density": [ + "1.09" + ], + "filament_flow_ratio": [ + "0.92" + ], + "filament_shrink": [ + "99.7" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_vendor": [ + "DREMC" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_initial_layer": [ + "265" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json new file mode 100644 index 0000000000..c751f9e86c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC ASA GF @System", + "inherits": "DREMC ASA GF @base", + "from": "system", + "setting_id": "DREMC013_00", + "instantiation": "false", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json new file mode 100644 index 0000000000..11f4e56de4 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC ASA GF @base.json @@ -0,0 +1,50 @@ +{ + "type": "filament", + "name": "DREMC ASA GF @base", + "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "DREMC013", + "instantiation": "false", + "eng_plate_temp": [ + "110" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "filament_cost": [ + "36" + ], + "filament_density": [ + "1.12" + ], + "filament_flow_ratio": [ + "0.92" + ], + "filament_shrink": [ + "99.7" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_vendor": [ + "DREMC" + ], + "hot_plate_temp": [ + "110" + ], + "hot_plate_temp_initial_layer": [ + "110" + ], + "textured_plate_temp": [ + "110" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json new file mode 100644 index 0000000000..a187a36efd --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC PA12-CF @System", + "inherits": "DREMC PA12-CF @base", + "from": "system", + "setting_id": "DREMC007", + "instantiation": "false", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json new file mode 100644 index 0000000000..aee897f402 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA12-CF @base.json @@ -0,0 +1,59 @@ +{ + "type": "filament", + "name": "DREMC PA12-CF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "DREMC007", + "instantiation": "false", + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "100" + ], + "filament_cost": [ + "105" + ], + "filament_density": [ + "1.06" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "DREMC" + ], + "full_fan_speed_layer": [ + "2" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "131" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @System.json new file mode 100644 index 0000000000..00ee3751c5 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC PA6-CF @System", + "inherits": "DREMC PA6-CF @base", + "from": "system", + "setting_id": "DREMC006", + "instantiation": "true", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json new file mode 100644 index 0000000000..7d693fc142 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PA6-CF @base.json @@ -0,0 +1,53 @@ +{ + "type": "filament", + "name": "DREMC PA6-CF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "DREMC006", + "instantiation": "false", + "fan_cooling_layer_time": [ + "15" + ], + "filament_cost": [ + "68" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "DREMC" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "215" + ], + "textured_plate_temp": [ + "90" + ], + "textured_plate_temp_initial_layer": [ + "90" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json new file mode 100644 index 0000000000..5b277a22af --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC PET-CF @System", + "inherits": "DREMC PET-CF @base", + "from": "system", + "setting_id": "DREMC008", + "instantiation": "false", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json new file mode 100644 index 0000000000..cc568e5ad6 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PET-CF @base.json @@ -0,0 +1,86 @@ +{ + "type": "filament", + "name": "DREMC PET-CF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "DREMC008", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "242" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "70" + ], + "filament_density": [ + "1.3" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "DREMC" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "required_nozzle_HRC": [ + "40" + ], + "supertack_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "slow_down_layer_time": [ + "5" + ], + "slow_down_min_speed": [ + "10" + ], + "temperature_vitrification": [ + "147" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json new file mode 100644 index 0000000000..e5c8e669cb --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @System.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "name": "DREMC PETG @System", + "inherits": "DREMC PETG @base", + "from": "system", + "setting_id": "DREMC002", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "20" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json new file mode 100644 index 0000000000..840e0104f3 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PETG @base.json @@ -0,0 +1,59 @@ +{ + "type": "filament", + "name": "DREMC PETG @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "DREMC002", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "20" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_vendor": [ + "DREMC" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "overhang_fan_speed": [ + "50" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "slow_down_min_speed": [ + "10" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json new file mode 100644 index 0000000000..b2b78aa204 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @System.json @@ -0,0 +1,12 @@ +{ + "type": "filament", + "name": "DREMC PLA+ HS @System", + "inherits": "DREMC PLA+ @base", + "from": "system", + "setting_id": "DREMC011", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "22" + ], + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json new file mode 100644 index 0000000000..cb2f3e166d --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA HS @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "DREMC PLA+ HS @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "DREMC011", + "instantiation": "false", + "filament_cost": [ + "26" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_vendor": [ + "DREMC" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json new file mode 100644 index 0000000000..116ce2393f --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @System.json @@ -0,0 +1,12 @@ +{ + "type": "filament", + "name": "DREMC PLA+ @System", + "inherits": "DREMC PLA+ @base", + "from": "system", + "setting_id": "DREMC001", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "18" + ], + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json new file mode 100644 index 0000000000..698712e1dd --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PLA+ @base.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "name": "DREMC PLA+ @base", + "inherits": "fdm_filament_pla", + "from": "system", + "filament_id": "DREMC001", + "instantiation": "false", + "filament_cost": [ + "26" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_vendor": [ + "DREMC" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @System.json new file mode 100644 index 0000000000..a8b216a7cc --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @System.json @@ -0,0 +1,9 @@ +{ + "type": "filament", + "name": "DREMC PPA-CF @System", + "inherits": "DREMC PPA-CF @base", + "from": "system", + "setting_id": "DREMC010", + "instantiation": "true", + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json new file mode 100644 index 0000000000..ec5cecd565 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC PPA-CF @base.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "DREMC PPA-CF @base", + "inherits": "fdm_filament_ppa", + "from": "system", + "filament_id": "DREMC010", + "instantiation": "false", + "filament_vendor": [ + "DREMC" + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json new file mode 100644 index 0000000000..7645654b4e --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @System.json @@ -0,0 +1,12 @@ +{ + "type": "filament", + "name": "DREMC TPU 95A @System", + "inherits": "DREMC TPU 95A @base", + "from": "system", + "setting_id": "DREMC010", + "instantiation": "false", + "filament_max_volumetric_speed": [ + "6" + ], + "compatible_printers": [] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json new file mode 100644 index 0000000000..ba17ff46a8 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/DREMC/DREMC TPU 95A @base.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "name": "DREMC TPU 95A @base", + "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "DREMC010", + "instantiation": "false", + "filament_cost": [ + "40" + ], + "filament_density": [ + "1.25" + ], + "filament_vendor": [ + "DREMC" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json index 1dc6e50f39..ce95ca7c52 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/base/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Peopoly.json b/resources/profiles/Peopoly.json index 6f5ecc7917..92502b774c 100644 --- a/resources/profiles/Peopoly.json +++ b/resources/profiles/Peopoly.json @@ -1,6 +1,6 @@ { "name": "Peopoly", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Peopoly configurations", "machine_model_list": [ diff --git a/resources/profiles/Peopoly/filament/fdm_filament_common.json b/resources/profiles/Peopoly/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Peopoly/filament/fdm_filament_common.json +++ b/resources/profiles/Peopoly/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Phrozen.json b/resources/profiles/Phrozen.json index 4a2539de23..64db278ab7 100644 --- a/resources/profiles/Phrozen.json +++ b/resources/profiles/Phrozen.json @@ -1,6 +1,6 @@ { "name": "Phrozen", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Phrozen configurations", "machine_model_list": [ diff --git a/resources/profiles/Phrozen/filament/fdm_filament_common.json b/resources/profiles/Phrozen/filament/fdm_filament_common.json index 868a8418e6..2949245a6e 100644 --- a/resources/profiles/Phrozen/filament/fdm_filament_common.json +++ b/resources/profiles/Phrozen/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Positron3D.json b/resources/profiles/Positron3D.json index 2341f35959..ff2ba78243 100644 --- a/resources/profiles/Positron3D.json +++ b/resources/profiles/Positron3D.json @@ -1,6 +1,6 @@ { "name": "Positron 3D", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Positron 3D Printer Profile", "machine_model_list": [ diff --git a/resources/profiles/Prusa.json b/resources/profiles/Prusa.json index cd52d66c9e..76f0c37877 100644 --- a/resources/profiles/Prusa.json +++ b/resources/profiles/Prusa.json @@ -1,6 +1,6 @@ { "name": "Prusa", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Prusa configurations", "machine_model_list": [ diff --git a/resources/profiles/Prusa/filament/fdm_filament_common.json b/resources/profiles/Prusa/filament/fdm_filament_common.json index f8aa522eb2..abf727c392 100644 --- a/resources/profiles/Prusa/filament/fdm_filament_common.json +++ b/resources/profiles/Prusa/filament/fdm_filament_common.json @@ -58,7 +58,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index 63d5f9c371..24ea0eb606 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -1,6 +1,6 @@ { "name": "Qidi", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Qidi configurations", "machine_model_list": [ diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json index 6b93192da1..f3c4889c7b 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json index dc19040ad4..9bd9f9891c 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json index 4c462f5cfd..58ccb23945 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json index 0c86d130fb..c1ed98f833 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json index ca3ebeb393..870aa4b62a 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json index d828ebdfef..e02891e778 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json index 640dec4788..dec0a1bcdf 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json index 1a93387d67..b4b0eb179f 100644 --- a/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json index cc55033ab6..846667811f 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json index 087dc7f093..24d220c590 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json index d7e8680c28..4235bdf0f5 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json index 13e833f220..934e555457 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi Q1 Pro 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json index b5b27482a2..a4d967883e 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json index a2fc35ea00..b51e255826 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json index 3f1f8c7872..388aa1b953 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json index e14d5d85cd..7f2ce80233 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "Bambu PETG @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Bambu PETG.json b/resources/profiles/Qidi/filament/Bambu PETG.json index 5ac107ebf8..945a08f097 100644 --- a/resources/profiles/Qidi/filament/Bambu PETG.json +++ b/resources/profiles/Qidi/filament/Bambu PETG.json @@ -48,12 +48,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json index d36305d8f6..973b27eb53 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json index 4e8cdb5fd3..e3fb795c88 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json index a867834efc..6f3fbfb423 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json index 327c0d4f19..ac0b3a388d 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json index 6d1fc1521e..2d84298502 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json index f341f907a7..28782b03e1 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json index 495ab3afdb..9e40f5f9e1 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json index d5f261c7bf..ebe2a140b4 100644 --- a/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Bambu PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json index 9c24c1a90d..084d29524a 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json index 5c865a0f50..93406dd75a 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json index ffad28c4de..e793b8bdb6 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json index d25e86761f..b2a740f5a8 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json index 7d38fa21dc..4d0f59add4 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json index eea597d780..0aea7d1217 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json index 9b3db7786d..855f1887db 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json index 968e428679..47cf8b00e8 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json index d84bcb40f9..6f9d2dd62c 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json index ef558e9eb7..9c996e287b 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json index e0713daa28..bf90d8d3cd 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json index 53264719de..bc4b064417 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json index 44b15546bc..b85d2415ab 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json index 751d1ca26e..bf8de06833 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json index f726197e42..8393618843 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json index 95b1d0e3b5..44d7236902 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "HATCHBOX PETG @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json index e7761b5704..5eae8a6341 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PETG @Qidi.json @@ -48,12 +48,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json index 71d09dd19b..c94421bcc5 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json index 84fffa5a33..607e64477e 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json index 71e6d83d87..ecfa4b60d4 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json index 9dce41523b..996a9187e7 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json index 8efd418513..7c87317968 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json index a4db450404..adbe6a9b53 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json index 5ac653d7c3..9788bde3d1 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json index 2e54b9ca06..265a738163 100644 --- a/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/HATCHBOX PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json index fbd96d1fea..dec11db303 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json index f128976b57..288f960208 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -27,9 +27,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json index 95ecfb51dd..46f2965524 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -21,9 +21,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json index f3d4f61ca6..19d2e048c5 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -21,9 +21,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json index e1fd6e3051..79f5e50f6b 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -21,9 +21,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json index f746a4998c..c095847694 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json index aee1894c55..2ac56a877e 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json index 4afb02f1a8..08ee709578 100644 --- a/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json index ab26949958..fe7e059b55 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json index 337c1bb8ae..ebbd3abe66 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json index c1cc71ab1e..b1c4b76695 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json index fc3d1a2f58..850ba1d081 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json index d116d190a6..02a5874f61 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json index d99939a9c1..8ee6dbb9d7 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json index 316113eb84..615ef895b3 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json index f3be25ebae..ac88c21e08 100644 --- a/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Overture PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json index 68070879f8..32c223c423 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json index ea45d186ba..c3c6da64a2 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -27,9 +27,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json index 26315c8e98..285d252a18 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.6 nozzle.json @@ -21,9 +21,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json index 2aab4a499d..b82676aad6 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi Q1 Pro 0.8 nozzle.json @@ -21,9 +21,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json index 01fd58ac92..fa1ac10040 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.2 nozzle.json @@ -21,9 +21,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json index 4276d96501..b426327f41 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json index 691396f5b6..b06da9eeaa 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json index 9808e7be28..65392da9c9 100644 --- a/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite ABS @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "fan_max_speed": [ "80" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "255" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json index 6a7417825e..757d5de4d8 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json index a14c632860..50edbb223a 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json index ab903adc0f..6250aa8dde 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json index 6440a2d5fb..d9116bcf6d 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json index 511670000e..ce2f124739 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json index ab36a362e3..8467c9ee77 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json index 5ebe20a6d1..68848deba5 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json index a9d24dac09..852b7b6be3 100644 --- a/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/PolyLite PLA @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json index 47453334ac..64ef38fac0 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json index a1b002f167..a837b796ea 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json index fabc1c0b39..32a40477c8 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json index 9ef6d4e205..ac704e0352 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json index e118c74afa..7febab3ced 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2.json @@ -42,5 +42,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json index 438fb53cc7..0d431b0976 100644 --- a/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json @@ -42,5 +42,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json index da9beef15d..b328b94f62 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json index 9cd8d57237..2e9e4ce632 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json index 6f315f8fb8..4581dfc54a 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2.json @@ -64,10 +64,10 @@ "12" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -78,5 +78,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json index 0589f30adb..b570247e3f 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json @@ -64,10 +64,10 @@ "12" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -78,5 +78,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json index 10609ebc43..15a15c408a 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2.json @@ -54,5 +54,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json index 38080d7ba3..4fb0fdee07 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json @@ -54,5 +54,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json index fecb4b9f4f..ee01cdb59d 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2.json @@ -46,10 +46,10 @@ "0.032" ], "supertack_plate_temp_initial_layer": [ - "35" + "45" ], "supertack_plate_temp": [ - "35" + "45" ], "temperature_vitrification": [ "45" @@ -60,5 +60,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json index c4d5f216c7..43214269e2 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json @@ -46,10 +46,10 @@ "0.032" ], "supertack_plate_temp_initial_layer": [ - "35" + "45" ], "supertack_plate_temp": [ - "35" + "45" ], "temperature_vitrification": [ "45" @@ -60,5 +60,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json index 5ad79d0762..fa1a0692b3 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2.json @@ -48,5 +48,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json index 1614d1cd88..8e542a9f68 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json @@ -48,5 +48,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json index 5a8cc6f7df..9b1bd8bcd1 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2.json @@ -48,5 +48,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json index fc2ccd0ed2..4d3828acf3 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json @@ -48,5 +48,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json index b8e92076e2..400c7efc36 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json index 59ec2d616a..9ab8361d25 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json @@ -69,5 +69,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json index 13765b583b..7717c31d1e 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json index f070735cc4..b65fd0b94e 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json index 26036bab9c..51daac0878 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2.json @@ -42,5 +42,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json index 772017575b..882be390aa 100644 --- a/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json @@ -42,5 +42,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json index 2f56c30be4..102f96a982 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json index fd926495bb..25529c480e 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json index d5941b3853..daf2b37cc9 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2.json @@ -54,5 +54,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json index 7a17446f22..91a21a86bc 100644 --- a/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json @@ -54,5 +54,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json index f7d55ee9c2..d8b6c6f260 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json index 14b20ae342..3036b4437f 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json index 2136fbcc68..9308ead7fd 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2.json @@ -57,5 +57,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json index 5356889d3e..7422032108 100644 --- a/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json @@ -54,5 +54,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json index c352523105..3a56321d46 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json index d61bfbef59..68bbf59293 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json index ff2c7f7402..df6515efc0 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json index 973012eb85..6fe5eef467 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json @@ -69,5 +69,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json index edad4c1255..db71b3577f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json index 939cb2c52b..55a80f869e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json @@ -69,5 +69,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json index 647b7af057..de714c0ab2 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json index c91af74993..273dc85d4f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json index 64bb581f1a..d2a3b2b52e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json index 6128c22f5a..3e56f7552b 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json index 6390f78436..461a57029f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2.json @@ -93,5 +93,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json index d64bcb1301..d2947a802f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json @@ -90,5 +90,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json index 54113a73e6..6051ada238 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json index d0d664c4dd..3e125f82a2 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json index b02e77be5d..de99e42f7f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json index 0cd09c1c8c..33981b31f3 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json index a45b97f65d..df5d842492 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json index 1de4f82ad8..1971a0ba29 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json index 91ac6a536b..f300cb3b92 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json index f4a9f5a9e0..71f58c586c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json index af547ae9c0..7955c13998 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2.json @@ -73,10 +73,40 @@ "100" ], "hot_plate_temp_initial_layer": [ - "100" + "90" ], "hot_plate_temp": [ - "100" + "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json index 163808f0d0..0c1f5f3888 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json @@ -70,10 +70,40 @@ "100" ], "hot_plate_temp_initial_layer": [ - "100" + "90" ], "hot_plate_temp": [ - "100" + "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json index 24b6a01272..cf33db4628 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json @@ -63,5 +63,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json index edf71c78d2..df087f1064 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json @@ -63,5 +63,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json index cbb01617d5..1f3b4626df 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2.json @@ -79,10 +79,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json index 41e1af9321..dc02a075fb 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json @@ -79,10 +79,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json index d4cf1ffaa0..3a78c0374e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json index a883ef4802..8b28bcba40 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json index 72505e2ce7..d7adc3f905 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json index 60075254e6..7cbfd85ef9 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json index d503310a22..3d2d2cd750 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json index 336493bcf7..402a38f5eb 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json index cc490cd4dc..cbc0f35be5 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json index 8f405eb795..2caca86a36 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json index 4fd07a1629..8815b518f1 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json index d137786751..0a5e7b3f9c 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json index 13543a5668..f08d715064 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json index 7d6b7e5a12..b347344329 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json index 3344e68d56..38c476726b 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json index 9e20730baf..57136f23a7 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json @@ -70,10 +70,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json index b49bd770e8..41ef151749 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2.json @@ -51,5 +51,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json index e6038005c1..6589f8b19d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json @@ -51,5 +51,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json index 51e3cccf16..20175b091f 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2.json @@ -51,5 +51,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json index 1f96183eea..97736ff3b4 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json @@ -51,5 +51,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json index f20bfbaea5..f4321f32d0 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2.json @@ -45,5 +45,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json index 456680e85f..5820937c00 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json @@ -48,5 +48,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json index 39c8ec7a3e..619bdc8919 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2.json @@ -45,5 +45,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json index 9b0fa93b24..11743dd512 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json @@ -45,5 +45,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json index 5ce81748a1..71eb16f367 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2.json @@ -45,5 +45,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json index f6e0d0be67..a9e220c533 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json @@ -45,5 +45,35 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json index f119172cbc..50b388e044 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2.json @@ -40,10 +40,10 @@ "50%" ], "supertack_plate_temp_initial_layer": [ - "0" + "45" ], "supertack_plate_temp": [ - "0" + "45" ], "hot_plate_temp_initial_layer": [ "55" @@ -54,5 +54,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json index abc8005e5f..bf51864967 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json @@ -40,10 +40,10 @@ "50%" ], "supertack_plate_temp_initial_layer": [ - "0" + "45" ], "supertack_plate_temp": [ - "0" + "45" ], "hot_plate_temp_initial_layer": [ "55" @@ -54,5 +54,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json index e06e3379c8..248b4062c1 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2.json @@ -49,13 +49,43 @@ "0.042" ], "supertack_plate_temp_initial_layer": [ - "50" + "45" ], "supertack_plate_temp": [ - "50" + "45" ], "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json index 58a5a4e878..31e21dd09d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json @@ -46,13 +46,43 @@ "0.042" ], "supertack_plate_temp_initial_layer": [ - "50" + "45" ], "supertack_plate_temp": [ - "50" + "45" ], "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json index ba0791565a..e54853403d 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "110" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "110" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "110" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json index 7556021fd2..bc8f35a404 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "110" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "110" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "110" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json index d579d78f75..9e9a281d03 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json @@ -84,5 +84,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json index 583245a16d..5f58a0704a 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json index 313d355c84..5b81300521 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2.json @@ -87,5 +87,29 @@ "supertack_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json index 07da0a5ebe..3eeea472c3 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json @@ -87,5 +87,29 @@ "supertack_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json index 839636bb3e..105fedadf0 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2.json @@ -82,10 +82,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json index 5403e99cde..0bef0d40d1 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json @@ -82,10 +82,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json index e0aa3d4fed..bc84dd50ad 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2.json @@ -51,5 +51,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json index 29dfdd076a..d9970e4afc 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json @@ -51,5 +51,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json index 4b56b832bb..bef8111123 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2.json @@ -60,5 +60,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json index fe9c4770f8..45de2286d5 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json @@ -60,5 +60,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json index 3ad8ff310e..d278dabead 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json @@ -51,5 +51,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json index be8cf20fc7..d0ccd1a71e 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json @@ -51,5 +51,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json index f89c573736..7f1dfaf724 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2.json @@ -66,5 +66,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json index 8af3e2bb99..43171a8d24 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json @@ -66,5 +66,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json index 3fe35e80f0..1de3a74cf8 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json index 887a1ff7bd..99c1637270 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json index 4b76d34d0b..fb9248e9a9 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2.json @@ -48,10 +48,40 @@ "pressure_advance": [ "0.044" ], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "supertack_plate_temp": [ + "45" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], "supertack_plate_temp_initial_layer": [ "45" ], - "supertack_plate_temp": [ + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ "45" ], "temperature_vitrification": [ diff --git a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json index e5fd24c947..3853d54bd9 100644 --- a/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json @@ -48,10 +48,40 @@ "pressure_advance": [ "0.044" ], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "60" + ], + "hot_plate_temp": [ + "60" + ], + "supertack_plate_temp": [ + "45" + ], + "textured_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], "supertack_plate_temp_initial_layer": [ "45" ], - "supertack_plate_temp": [ + "textured_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ "45" ], "temperature_vitrification": [ diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json index ba441e6d14..bde51d0fd9 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.2 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json index ea1ff4e104..b1431fa5c5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.4 nozzle.json @@ -27,9 +27,6 @@ "filament_max_volumetric_speed": [ "22" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json index 3581067a7f..1faf1db312 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.6 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json index a671549518..f49a8ba8ff 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi Q1 Pro 0.8 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json index 51d2d09730..6447de36ed 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.2 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json index 6bb4e0efce..4123a22d98 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.4 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json index 2ca1046cbf..0a63e9c587 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.6 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json index ba6945b500..8341e66e60 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Odorless @Qidi X-Plus 4 0.8 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json index 3819f78a95..00a0cd29f3 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json index 0759e489e1..b2a04c1736 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json index 6d065c63e3..138ba052d5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json index 980a19f08d..cce7028de4 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json index 31845aeade..ccece3db52 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json index f822123c73..6900e9f0b3 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json index 209b4d2f8f..be183ed0f0 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json index 0e621dfe46..4b9b196000 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -24,9 +24,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json index e244e2ffa3..c8c0d350d5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json index 8fbd831f18..cbb243a8d7 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -27,9 +27,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json index 86387a6abc..fc13b021fd 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json index 6a492c65aa..598a51f662 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json index 1b2bab6bb4..bac4ff8148 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "2" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json index 0fe70e251a..8d0a8f50e0 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json index 3f9a90a892..657b0a08fc 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json index a84d6f245c..f8e9bd17e5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -30,9 +30,6 @@ "filament_max_volumetric_speed": [ "24.5" ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json index 16e91f996b..3a2481c709 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json index 09dfa0dcb9..401875ea73 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json index 99c46d9668..3b69cf957c 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json index a8bb648bf3..3c1fefb424 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json index 855edae940..8ea5d1c6cd 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json index 844f7734c3..4e8a078e0f 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF.json b/resources/profiles/Qidi/filament/QIDI ABS-GF.json index 071fc4dafc..5dbd3d315f 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF.json @@ -36,12 +36,6 @@ "chamber_temperature": [ "55" ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], "overhang_fan_speed": [ "80" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json index 3ff67e9bd5..4397987bd6 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json index d062e6af7b..443981bb6c 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json index dd0856b0b2..5b43411531 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json index 11243fcba8..1f7120e746 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json index 4cddef930b..f43cb80c46 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json index 1956983260..a1c89c8685 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle.json @@ -24,12 +24,6 @@ "filament_settings_id": [ "QIDI ABS-GF10 @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json index 09080db2b1..df82f517f5 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF10.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF10.json @@ -36,12 +36,6 @@ "chamber_temperature": [ "55" ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json index 9fa74be7b4..eab9802993 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json index c845646eb8..f82d4ca7ad 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json index 4f40785afc..03c9a66e6e 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json index 477feb8581..bf432a4f1b 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json index 45b4e5184a..cc40b94b9c 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json index dbb30e4046..174ecd7a82 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "QIDI ABS-GF25 @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json index d0088aba7b..27a6931ed6 100644 --- a/resources/profiles/Qidi/filament/QIDI ABS-GF25.json +++ b/resources/profiles/Qidi/filament/QIDI ABS-GF25.json @@ -36,12 +36,6 @@ "chamber_temperature": [ "55" ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/Qidi/filament/QIDI ASA-CF.json b/resources/profiles/Qidi/filament/QIDI ASA-CF.json index 711aed861d..6a1c41192e 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA-CF.json +++ b/resources/profiles/Qidi/filament/QIDI ASA-CF.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI ASA.json b/resources/profiles/Qidi/filament/QIDI ASA.json index 352ce1337a..c7fb51ba7a 100644 --- a/resources/profiles/Qidi/filament/QIDI ASA.json +++ b/resources/profiles/Qidi/filament/QIDI ASA.json @@ -21,30 +21,6 @@ "nozzle_temperature": [ "270" ], - "cool_plate_temp": [ - "90" - ], - "eng_plate_temp": [ - "90" - ], - "hot_plate_temp": [ - "90" - ], - "textured_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "eng_plate_temp_initial_layer": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], "enable_pressure_advance": [ "1" ], diff --git a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json index 624d515999..2a6e6c6010 100644 --- a/resources/profiles/Qidi/filament/QIDI PA-Ultra.json +++ b/resources/profiles/Qidi/filament/QIDI PA-Ultra.json @@ -78,5 +78,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PA12-CF.json b/resources/profiles/Qidi/filament/QIDI PA12-CF.json index dd2aee7a69..9850593754 100644 --- a/resources/profiles/Qidi/filament/QIDI PA12-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PA12-CF.json @@ -75,5 +75,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-CF.json b/resources/profiles/Qidi/filament/QIDI PAHT-CF.json index 0915671ff8..89dfb9ef96 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-CF.json @@ -81,5 +81,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PAHT-GF.json b/resources/profiles/Qidi/filament/QIDI PAHT-GF.json index 9c14989fa6..e2f756eef9 100644 --- a/resources/profiles/Qidi/filament/QIDI PAHT-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PAHT-GF.json @@ -70,5 +70,35 @@ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", "Qidi X-Max 3 0.4 nozzle" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PEBA 95A.json b/resources/profiles/Qidi/filament/QIDI PEBA 95A.json index ffa20335ce..627d8b65d0 100644 --- a/resources/profiles/Qidi/filament/QIDI PEBA 95A.json +++ b/resources/profiles/Qidi/filament/QIDI PEBA 95A.json @@ -57,12 +57,6 @@ "temperature_vitrification": [ "30" ], - "hot_plate_temp_initial_layer": [ - "35" - ], - "hot_plate_temp": [ - "35" - ], "compatible_printers": [ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", diff --git a/resources/profiles/Qidi/filament/QIDI PET-CF.json b/resources/profiles/Qidi/filament/QIDI PET-CF.json index 4df29e8bb5..07f5b6ca67 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PET-CF.json @@ -78,5 +78,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PET-GF.json b/resources/profiles/Qidi/filament/QIDI PET-GF.json index 926c0d0ee5..2c721010b0 100644 --- a/resources/profiles/Qidi/filament/QIDI PET-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PET-GF.json @@ -67,5 +67,35 @@ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", "Qidi X-Max 3 0.4 nozzle" + ], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json index ab27f865e9..3f1f21cc8b 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json index fa4acb1a6e..5e90ef0d2a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json index 92f93737ab..b0b19d9c48 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json index 62f300c5f9..5f0ec1e7ea 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json index 26dc9ea8c5..0e760ddffd 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.054" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json index f3ba6dbfb0..32dd79c90a 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json index 6ab012f071..2e0edfcc1e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json index cb050c14ec..3dd13b5478 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Basic @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Basic.json b/resources/profiles/Qidi/filament/QIDI PETG Basic.json index dc4e6a3689..2ba661074d 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Basic.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Basic.json @@ -51,12 +51,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json index 88b5628079..b601069ab8 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json index dc7b07dcda..b15315f6f8 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.042" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json index 61c73bd085..335f4d173e 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.032" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json index a29a279275..e8f1f9ab78 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.024" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json index fd8460270c..ee8f1fbeec 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.054" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json index 394496bf12..3b9d642182 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.054" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json index a4100953f9..d75da73dc3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json index e1904d1703..258b28d345 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Rapido @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Rapido.json b/resources/profiles/Qidi/filament/QIDI PETG Rapido.json index 12bbbca165..2721536361 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Rapido.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Rapido.json @@ -48,12 +48,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json index c9ed435580..f47c2f3be4 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json index 773e478893..ced98fb927 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json index 710c8ce5be..c3790819b3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json index 4949e913e4..11bfdebbbc 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json index e8cfd9653d..fbf51d1ddf 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json index 7d4fe03a3d..be522df3aa 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json index 09ef8470cc..1b04bfcde3 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json index 666abf579b..9dd342dee6 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle.json @@ -18,9 +18,6 @@ "filament_settings_id": [ "QIDI PETG Tough @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Tough.json b/resources/profiles/Qidi/filament/QIDI PETG Tough.json index f4e5abbc81..b7bd144063 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Tough.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Tough.json @@ -48,12 +48,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json index 5dea75b649..30d3b11a51 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json index 6f868f087e..aaff090dd0 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.042" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json index 881ed5749d..219d5fcc3d 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.032" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json index 28613f040a..67fb0db5eb 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.024" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json index 8985105358..3f175425a0 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi X-Plus 4 0.2 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.056" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json index 3822cc7858..46052bf7bd 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.054" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json index df200f7a7b..55ce33f31c 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle.json @@ -12,9 +12,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json index 8d2fcd3c4f..376ede57fa 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle.json @@ -9,9 +9,6 @@ "filament_settings_id": [ "QIDI PETG Translucent @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "pressure_advance": [ "0.04" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG Translucent.json b/resources/profiles/Qidi/filament/QIDI PETG Translucent.json index 7916938629..ca90a9d3c2 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG Translucent.json +++ b/resources/profiles/Qidi/filament/QIDI PETG Translucent.json @@ -48,12 +48,6 @@ "pressure_advance": [ "0.04" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "filament_density": [ "1.24" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG-CF.json b/resources/profiles/Qidi/filament/QIDI PETG-CF.json index 3fc5245271..db4f170be0 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-CF.json @@ -42,12 +42,6 @@ "pressure_advance": [ "0.048" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "slow_down_layer_time": [ "6" ], diff --git a/resources/profiles/Qidi/filament/QIDI PETG-GF.json b/resources/profiles/Qidi/filament/QIDI PETG-GF.json index 0be16013b3..b523e8ab06 100644 --- a/resources/profiles/Qidi/filament/QIDI PETG-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PETG-GF.json @@ -42,12 +42,6 @@ "pressure_advance": [ "0.056" ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "hot_plate_temp": [ - "80" - ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json index d1bb29978d..f505e3ab80 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json index 9df5068aef..e6dd92e3e8 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json index a7911fc234..33e720de42 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json index f2df9c80d7..a6b7513893 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json index 1a6ce1285f..990b748fcd 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json index 6f3cc6a877..ac6feda98a 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json index 59e08c8518..5df275dc39 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json index 91cf2120f9..bb7a1b75a7 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json index f895e049d3..13d16cdece 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json index 401d67aa9c..5b8b119fdc 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json index a5dfb0907b..8100281ef1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json index bb38e57b11..bfb588b519 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json index 4522a9a768..a33d2be8d2 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json index 15a4be0d23..220fec3a9c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json index 046975dd78..9a16d30605 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json index bd9999d8cf..19d4260f27 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Matte Basic @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json index df6102926a..8e842f04d0 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json index 19e0420f0d..6310dc60b9 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json index 094a3269d9..51538da714 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json index b772e9f13f..9472798576 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json index e1c199c857..cce3c6cef8 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json index 6a669b5517..77215fd2bc 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json index 6b9d7babfc..31dcae5b7d 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json index e65c96a344..a0751c5b31 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json index a4da988868..f0110131a6 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json index af237d3a23..0a91f702bd 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json index c3bdb3b965..00e3853e7e 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.6 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json index 933c333e87..fb93e62141 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi Q1 Pro 0.8 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json index 2be6f2c7c3..0e6f9c7b55 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.2 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "200" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json index c8dd48cd30..866637c544 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "200" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json index d1c2a0f007..63aef16920 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.6 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "200" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json index 690ce6a6ca..a161462609 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Matte @Qidi X-Plus 4 0.8 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "200" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json index 28b47f7f4c..010768c5e4 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json index ebcd184164..af2b19a7e1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json index 29842be4ab..cdc75b8566 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json index 3896972518..880eac96c0 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi Q1 Pro 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json index cfb3114e74..94217bd906 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.2 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json index ec23997e59..0846aff06c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.4 nozzle.json @@ -30,12 +30,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json index b5446520c1..3e1c5e78c1 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json index 8e6c6deff5..ab3a89dbb7 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Metal @Qidi X-Plus 4 0.8 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json index 79f73724e9..4383803b33 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json index fe51bcd98a..a28a9eae1c 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi Q1 Pro 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json index df6756dbef..f4822d6e1b 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.4 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json index ba821f472c..772058c295 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk @Qidi X-Plus 4 0.6 nozzle.json @@ -27,12 +27,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json index c7037becac..2c45d17388 100644 --- a/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json +++ b/resources/profiles/Qidi/filament/QIDI PLA Rapido Silk.json @@ -37,5 +37,23 @@ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", "Qidi X-Max 3 0.4 nozzle" + ], + "eng_plate_temp": [ + "55" + ], + "hot_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PPS-CF.json b/resources/profiles/Qidi/filament/QIDI PPS-CF.json index bb2be26b03..71d619f444 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-CF.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-CF.json @@ -67,5 +67,35 @@ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", "Qidi X-Max 3 0.4 nozzle" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "110" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "110" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI PPS-GF.json b/resources/profiles/Qidi/filament/QIDI PPS-GF.json index 586cf460ab..5953ece5f6 100644 --- a/resources/profiles/Qidi/filament/QIDI PPS-GF.json +++ b/resources/profiles/Qidi/filament/QIDI PPS-GF.json @@ -94,5 +94,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI Support For PAHT.json b/resources/profiles/Qidi/filament/QIDI Support For PAHT.json index 9904f0e2ad..549f4e75db 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PAHT.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PAHT.json @@ -74,5 +74,35 @@ ], "compatible_printers": [ "Qidi X-CF Pro 0.4 nozzle" + ], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json b/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json index f8e16d0d28..a816259320 100644 --- a/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json +++ b/resources/profiles/Qidi/filament/QIDI Support For PET-PA.json @@ -71,5 +71,35 @@ ], "compatible_printers": [ "Qidi X-CF Pro 0.4 nozzle" + ], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/QIDI TPU-Aero.json b/resources/profiles/Qidi/filament/QIDI TPU-Aero.json index 5a136dc2d9..440e888698 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-Aero.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-Aero.json @@ -33,12 +33,6 @@ "nozzle_temperature_range_high": [ "270" ], - "hot_plate_temp": [ - "35" - ], - "hot_plate_temp_initial_layer": [ - "35" - ], "filament_density": [ "1.15" ], diff --git a/resources/profiles/Qidi/filament/QIDI TPU-GF.json b/resources/profiles/Qidi/filament/QIDI TPU-GF.json index c992878739..e6f7b43003 100644 --- a/resources/profiles/Qidi/filament/QIDI TPU-GF.json +++ b/resources/profiles/Qidi/filament/QIDI TPU-GF.json @@ -45,12 +45,6 @@ "temperature_vitrification": [ "30" ], - "hot_plate_temp_initial_layer": [ - "35" - ], - "hot_plate_temp": [ - "35" - ], "compatible_printers": [ "Qidi X-Smart 3 0.4 nozzle", "Qidi X-Plus 3 0.4 nozzle", diff --git a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json index e5d0f95ce4..ec63d4196e 100644 --- a/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json +++ b/resources/profiles/Qidi/filament/QIDI UltraPA-CF25.json @@ -81,5 +81,35 @@ "Qidi X-Smart 3 0.8 nozzle", "Qidi X-Plus 3 0.8 nozzle", "Qidi X-Max 3 0.8 nozzle" + ], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Qidi ASA-Aero.json b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json index e310b1f302..10aa975188 100644 --- a/resources/profiles/Qidi/filament/Qidi ASA-Aero.json +++ b/resources/profiles/Qidi/filament/Qidi ASA-Aero.json @@ -21,30 +21,6 @@ "nozzle_temperature": [ "270" ], - "cool_plate_temp": [ - "90" - ], - "eng_plate_temp": [ - "90" - ], - "hot_plate_temp": [ - "90" - ], - "textured_plate_temp": [ - "90" - ], - "cool_plate_temp_initial_layer": [ - "90" - ], - "eng_plate_temp_initial_layer": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], - "textured_plate_temp_initial_layer": [ - "90" - ], "enable_pressure_advance": [ "1" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json index 97e73e96a2..ba047bbab7 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle.json @@ -15,12 +15,6 @@ "filament_settings_id": [ "Qidi Generic ABS @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json index a38a57ae21..b4e9c92f41 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic ABS @Qidi X-Plus 4 0.4 nozzle.json @@ -18,12 +18,6 @@ "pressure_advance": [ "0.03" ], - "hot_plate_temp": [ - "90" - ], - "hot_plate_temp_initial_layer": [ - "90" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json index f1aa208c24..a4a2a337b5 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle.json @@ -24,9 +24,6 @@ "filament_settings_id": [ "Qidi Generic PETG @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json index e05009ea43..b281abf95c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle.json @@ -27,9 +27,6 @@ "filament_settings_id": [ "Qidi Generic PETG @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "overhang_fan_speed": [ "90" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json index b49846607d..d4cd1df6ac 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PETG @Qidi X-Plus 4 0.8 nozzle.json @@ -45,9 +45,6 @@ "filament_max_volumetric_speed": [ "12" ], - "hot_plate_temp_initial_layer": [ - "80" - ], "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json b/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json index e5b00a5c38..8aad0906df 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PETG-CF.json @@ -15,30 +15,6 @@ "overhang_fan_speed": [ "90" ], - "cool_plate_temp": [ - "0" - ], - "eng_plate_temp": [ - "70" - ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], "required_nozzle_HRC": [ "40" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json index dbec721e9d..528acc7d95 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi Q1 Pro 0.4 nozzle.json @@ -15,12 +15,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json index c1e6b73940..80b9f03d03 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA @Qidi X-Plus 4 0.4 nozzle.json @@ -18,12 +18,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "210" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json index d8d3dc784b..4a47dec8b9 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi Q1 Pro 0.4 nozzle.json @@ -25,12 +25,6 @@ "slow_down_layer_time": [ "8" ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "55" - ], "compatible_printers": [ "Qidi Q1 Pro 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json index 61754130d4..23fde5367c 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk @Qidi X-Plus 4 0.4 nozzle.json @@ -25,12 +25,6 @@ "slow_down_layer_time": [ "8" ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "55" - ], "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json index 4c1009ac5a..eba040f9a8 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA Silk.json @@ -28,12 +28,6 @@ "slow_down_layer_time": [ "8" ], - "hot_plate_temp_initial_layer": [ - "55" - ], - "hot_plate_temp": [ - "55" - ], "filament_vendor": [ "Generic" ], @@ -60,5 +54,23 @@ "Qidi Q1 Pro 0.8 nozzle", "Qidi X-Plus 4 0.6 nozzle", "Qidi X-Plus 4 0.8 nozzle" + ], + "eng_plate_temp": [ + "55" + ], + "hot_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json index a781e6a417..ae35d6daf2 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi Q1 Pro 0.4 nozzle.json @@ -12,12 +12,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "220" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json index 7e171f0bbc..1920d2e25d 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic PLA+ @Qidi X-Plus 4 0.4 nozzle.json @@ -15,12 +15,6 @@ "full_fan_speed_layer": [ "3" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature_initial_layer": [ "230" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json index 9f094c64e7..adba8650c1 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle.json @@ -15,12 +15,6 @@ "filament_settings_id": [ "Qidi Generic TPU 95A @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "220" ], diff --git a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json index 6c439eec2a..149109cf50 100644 --- a/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle.json @@ -15,12 +15,6 @@ "filament_settings_id": [ "Qidi Generic TPU 95A @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp": [ - "60" - ], - "hot_plate_temp_initial_layer": [ - "60" - ], "nozzle_temperature": [ "220" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json index dcad20b1fd..afc761e382 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi Q1 Pro 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json index 2006c85926..fba287b596 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi Q1 Pro 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json index 37bdb4f536..6ebbcca7d7 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi Q1 Pro 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json index 62796a1a2e..32c5a64cc5 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi X-Plus 4 0.4 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json index c08f861328..80888e6bd5 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi X-Plus 4 0.6 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json index 93d011db69..f0116a1390 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle.json @@ -21,12 +21,6 @@ "filament_settings_id": [ "Qidi PC-ABS-FR @Qidi X-Plus 4 0.8 nozzle" ], - "hot_plate_temp": [ - "100" - ], - "hot_plate_temp_initial_layer": [ - "100" - ], "nozzle_temperature": [ "250" ], diff --git a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json index 8c04b7c527..52b62c84d8 100644 --- a/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json +++ b/resources/profiles/Qidi/filament/Qidi PC-ABS-FR.json @@ -30,12 +30,6 @@ "fan_min_speed": [ "10" ], - "hot_plate_temp_initial_layer": [ - "100" - ], - "hot_plate_temp": [ - "100" - ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json index 1b5119b43f..7cf7f7129c 100644 --- a/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json +++ b/resources/profiles/Qidi/filament/Qidi TPU 95A-HF.json @@ -18,12 +18,6 @@ "pressure_advance": [ "0.1" ], - "hot_plate_temp": [ - "35" - ], - "hot_plate_temp_initial_layer": [ - "35" - ], "nozzle_temperature_initial_layer": [ "230" ], diff --git a/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json b/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json index 580c69fd60..f3436e2cdf 100644 --- a/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json +++ b/resources/profiles/Qidi/filament/Tinmorry PETG-ECO.json @@ -51,30 +51,6 @@ "nozzle_temperature": [ "235" ], - "cool_plate_temp": [ - "70" - ], - "eng_plate_temp": [ - "70" - ], - "hot_plate_temp": [ - "70" - ], - "textured_plate_temp": [ - "70" - ], - "cool_plate_temp_initial_layer": [ - "70" - ], - "eng_plate_temp_initial_layer": [ - "70" - ], - "hot_plate_temp_initial_layer": [ - "70" - ], - "textured_plate_temp_initial_layer": [ - "70" - ], "filament_vendor": [ "Generic" ], diff --git a/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json index f2d93a8851..a79d23354a 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu ABS @X-Max 4.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json index c49e943c46..115ad36b10 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu PETG @X-Max 4.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "70" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json index aebca7c65d..2782cecae1 100644 --- a/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Bambu PLA @X-Max 4.json @@ -57,5 +57,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json index aaa73c7a5b..8400b8a49b 100644 --- a/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic ABS @X-Max 4.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json index 4f7d52a685..a1dbc45ae8 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PETG @X-Max 4.json @@ -64,10 +64,10 @@ "12" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -78,5 +78,29 @@ "hot_plate_temp": [ "70" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json index 785869cac3..19b0f0f1e8 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA @X-Max 4.json @@ -63,5 +63,23 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json index 49b3c1a9d0..4a58091d1f 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA Silk @X-Max 4.json @@ -46,10 +46,10 @@ "0.032" ], "supertack_plate_temp_initial_layer": [ - "35" + "45" ], "supertack_plate_temp": [ - "35" + "45" ], "temperature_vitrification": [ "45" @@ -60,5 +60,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json index db6d2bf42e..bec539f6e8 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PLA+ @X-Max 4.json @@ -57,5 +57,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json index e3963dad95..64ecd45283 100644 --- a/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic TPU 95A @X-Max 4.json @@ -48,5 +48,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json index 12e71d9d6d..115d692f51 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX ABS @X-Max 4.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json index 550d11f733..0756031a43 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX PETG @X-Max 4.json @@ -61,10 +61,10 @@ "8" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ - "70" + "60" ], "temperature_vitrification": [ "70" @@ -75,5 +75,29 @@ "hot_plate_temp": [ "70" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json index eee1918b2d..5c9036e7b8 100644 --- a/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/HATCHBOX PLA @X-Max 4.json @@ -57,5 +57,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json index a65e30fc7d..426574efe9 100644 --- a/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Overture ABS @X-Max 4.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json index 8e981f11b7..87057063c8 100644 --- a/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Overture PLA @X-Max 4.json @@ -66,5 +66,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json b/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json index 3616cd8401..770c75cb69 100644 --- a/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/PolyLite ABS @X-Max 4.json @@ -75,5 +75,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json index 0534560e67..4e1f6706d7 100644 --- a/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/PolyLite PLA @X-Max 4.json @@ -66,5 +66,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json index 9ad9bb27a0..fcf0ee420d 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Odorless @X-Max 4.json @@ -70,10 +70,40 @@ "100" ], "hot_plate_temp_initial_layer": [ - "90" + "85" ], "hot_plate_temp": [ - "90" + "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json index dbe9ac26b7..ab0755fca1 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido @X-Max 4.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json index a6528de834..5da78652af 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS Rapido Metal @X-Max 4.json @@ -72,5 +72,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json index 5eb707127a..d3de50be23 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ABS-GF @X-Max 4.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json index cfbc35dfb8..4f9e8c7476 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA @X-Max 4.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json index b63fa6ee45..fdaf5d7b26 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA-Aero @X-Max 4.json @@ -93,5 +93,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json index 6b99c66a13..25fd6a3598 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json index d1ad4bf7ef..17020bd0c2 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PA12-CF @X-Max 4.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json index 9d38ca68b5..74216c25e7 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PAHT-CF @X-Max 4.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json index 55ff610cbe..e165704936 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PAHT-GF @X-Max 4.json @@ -81,5 +81,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json index 0e810b92c3..d2f1f2a17d 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PC-ABS-FR @X-Max 4.json @@ -73,10 +73,40 @@ "100" ], "hot_plate_temp_initial_layer": [ - "90" + "85" ], "hot_plate_temp": [ - "90" + "85" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "85" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "85" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "85" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "85" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json index 1545132ea6..92549cd415 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json @@ -63,5 +63,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json index 74391aae89..daa5d4a2e6 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PET-CF @X-Max 4.json @@ -79,10 +79,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json index dabea060db..86ab634249 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PET-GF @X-Max 4.json @@ -78,5 +78,35 @@ "hot_plate_temp": [ "70" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ + "70" + ], + "supertack_plate_temp": [ + "70" + ], + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json index 271117c41c..15712e12be 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Basic @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json index c1393ff6b9..333cb9eee7 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Rapido @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json index 2045890d63..a01a6737c7 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Tough @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json index ca9d48bb4e..b5bfe487d1 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG Translucent @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json index 99e11b8c63..0cb5a455b5 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG-CF @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json index 7b2ed11a6d..a486fd2dd0 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PETG-GF @X-Max 4.json @@ -70,10 +70,34 @@ "70" ], "supertack_plate_temp_initial_layer": [ - "70" + "60" ], "supertack_plate_temp": [ + "60" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ "70" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "70" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json index 04887d0eed..86281c9d0e 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Basic @X-Max 4.json @@ -63,5 +63,23 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json index b9937f4c2d..6747f96cbd 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Matte Basic @X-Max 4.json @@ -63,5 +63,23 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json index 1a6b2873bd..75abd5c197 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido @X-Max 4.json @@ -63,5 +63,23 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json index 63e6666de2..98f2367932 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Matte @X-Max 4.json @@ -60,5 +60,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json index a7efbb17d7..febec49d93 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Metal @X-Max 4.json @@ -54,5 +54,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json index ae5becbb7f..e37ac82116 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA Rapido Silk @X-Max 4.json @@ -58,10 +58,10 @@ "0.024" ], "supertack_plate_temp_initial_layer": [ - "0" + "45" ], "supertack_plate_temp": [ - "0" + "45" ], "hot_plate_temp_initial_layer": [ "55" @@ -72,5 +72,29 @@ "temperature_vitrification": [ "45" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json index 2d4b1efa94..9e1010670d 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PLA-CF @X-Max 4.json @@ -52,10 +52,10 @@ "0.042" ], "supertack_plate_temp_initial_layer": [ - "50" + "45" ], "supertack_plate_temp": [ - "50" + "45" ], "temperature_vitrification": [ "45" @@ -66,5 +66,29 @@ "hot_plate_temp": [ "55" ], - "compatible_printers": [] + "compatible_printers": [], + "cool_plate_temp": [ + "45" + ], + "eng_plate_temp": [ + "55" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ] } diff --git a/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json index 1a6a3c595b..cee4f7d64b 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PPS-CF @X-Max 4.json @@ -84,5 +84,35 @@ "hot_plate_temp": [ "110" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "110" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "110" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "110" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "110" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json index 92a9007311..6839a69d78 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI PPS-GF @X-Max 4.json @@ -84,5 +84,35 @@ "hot_plate_temp": [ "90" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "90" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "90" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "90" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "90" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json index bdd9a1c6ca..225926ba0b 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI Support For PAHT @X-Max 4.json @@ -87,5 +87,29 @@ "supertack_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "80" + ], + "eng_plate_temp": [ + "80" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "cool_plate_temp_initial_layer": [ + "80" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json index 445453c174..3f5838e51b 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI Support For PET-PA @X-Max 4.json @@ -82,10 +82,34 @@ "80" ], "supertack_plate_temp_initial_layer": [ - "80" + "70" ], "supertack_plate_temp": [ + "70" + ], + "compatible_printers": [], + "cool_plate_temp": [ + "70" + ], + "eng_plate_temp": [ "80" ], - "compatible_printers": [] -} + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "70" + ], + "cool_plate_temp_initial_layer": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "70" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json index 60c81b35da..5b96c207be 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU 95A-HF @X-Max 4.json @@ -63,5 +63,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json index 30713a484b..59e8ce4088 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU-Aero @X-Max 4.json @@ -60,5 +60,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json index 75d1f2e918..972d21d060 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json @@ -63,5 +63,35 @@ "hot_plate_temp": [ "35" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "30" + ], + "eng_plate_temp": [ + "35" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_plate_temp": [ + "35" + ], + "textured_cool_plate_temp": [ + "30" + ], + "cool_plate_temp_initial_layer": [ + "30" + ], + "eng_plate_temp_initial_layer": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_plate_temp_initial_layer": [ + "35" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json index 2dac32c7c8..ba039ce341 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI UltraPA @X-Max 4.json @@ -66,5 +66,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json index b37cfc5479..d4ae5142eb 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI UltraPA-CF25 @X-Max 4.json @@ -84,5 +84,35 @@ "hot_plate_temp": [ "80" ], - "compatible_printers": [] -} + "compatible_printers": [], + "cool_plate_temp": [ + "60" + ], + "eng_plate_temp": [ + "80" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "60" + ], + "cool_plate_temp_initial_layer": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json b/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json index 70707c0139..6845869182 100644 --- a/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/QIDI WOOD Rapido @X-Max 4.json @@ -51,20 +51,44 @@ "pressure_advance": [ "0.044" ], - "supertack_plate_temp_initial_layer": [ + "cool_plate_temp": [ "45" ], - "supertack_plate_temp": [ - "45" - ], - "temperature_vitrification": [ - "45" - ], - "hot_plate_temp_initial_layer": [ + "eng_plate_temp": [ "55" ], "hot_plate_temp": [ "55" ], + "supertack_plate_temp": [ + "45" + ], + "textured_plate_temp": [ + "55" + ], + "textured_cool_plate_temp": [ + "45" + ], + "cool_plate_temp_initial_layer": [ + "45" + ], + "eng_plate_temp_initial_layer": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" + ], + "supertack_plate_temp_initial_layer": [ + "45" + ], + "textured_plate_temp_initial_layer": [ + "55" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], + "temperature_vitrification": [ + "45" + ], "compatible_printers": [] } diff --git a/resources/profiles/Qidi/filament/fdm_filament_abs.json b/resources/profiles/Qidi/filament/fdm_filament_abs.json index e2b6ce84ce..31fb0134a0 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_abs.json +++ b/resources/profiles/Qidi/filament/fdm_filament_abs.json @@ -8,7 +8,7 @@ "0" ], "cool_plate_temp": [ - "90" + "80" ], "eng_plate_temp": [ "90" @@ -20,7 +20,7 @@ "90" ], "cool_plate_temp_initial_layer": [ - "90" + "80" ], "eng_plate_temp_initial_layer": [ "90" @@ -93,5 +93,17 @@ ], "slow_down_layer_time": [ "4" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/fdm_filament_asa.json b/resources/profiles/Qidi/filament/fdm_filament_asa.json index d1347a286b..9f98db937c 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_asa.json +++ b/resources/profiles/Qidi/filament/fdm_filament_asa.json @@ -8,7 +8,7 @@ "0" ], "cool_plate_temp": [ - "90" + "80" ], "eng_plate_temp": [ "90" @@ -20,7 +20,7 @@ "90" ], "cool_plate_temp_initial_layer": [ - "90" + "80" ], "eng_plate_temp_initial_layer": [ "90" @@ -93,5 +93,17 @@ ], "slow_down_layer_time": [ "3" + ], + "supertack_plate_temp": [ + "80" + ], + "textured_cool_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "textured_cool_plate_temp_initial_layer": [ + "80" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/fdm_filament_common.json b/resources/profiles/Qidi/filament/fdm_filament_common.json index 81e3df4e5b..53debceb12 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_common.json +++ b/resources/profiles/Qidi/filament/fdm_filament_common.json @@ -4,7 +4,7 @@ "from": "system", "instantiation": "false", "cool_plate_temp": [ - "60" + "45" ], "eng_plate_temp": [ "60" @@ -12,11 +12,17 @@ "hot_plate_temp": [ "60" ], + "supertack_plate_temp": [ + "45" + ], "textured_plate_temp": [ "60" ], + "textured_cool_plate_temp": [ + "45" + ], "cool_plate_temp_initial_layer": [ - "60" + "45" ], "eng_plate_temp_initial_layer": [ "60" @@ -24,9 +30,15 @@ "hot_plate_temp_initial_layer": [ "60" ], + "supertack_plate_temp_initial_layer": [ + "45" + ], "textured_plate_temp_initial_layer": [ "60" ], + "textured_cool_plate_temp_initial_layer": [ + "45" + ], "overhang_fan_threshold": [ "95%" ], @@ -61,7 +73,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Qidi/filament/fdm_filament_pet.json b/resources/profiles/Qidi/filament/fdm_filament_pet.json index fd0c28a046..4096649e98 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_pet.json +++ b/resources/profiles/Qidi/filament/fdm_filament_pet.json @@ -5,7 +5,7 @@ "from": "system", "instantiation": "false", "cool_plate_temp": [ - "80" + "60" ], "eng_plate_temp": [ "80" @@ -17,13 +17,13 @@ "80" ], "cool_plate_temp_initial_layer": [ - "80" + "60" ], "eng_plate_temp_initial_layer": [ "80" ], "hot_plate_temp_initial_layer": [ - "70" + "80" ], "textured_plate_temp_initial_layer": [ "80" @@ -75,5 +75,17 @@ ], "nozzle_temperature_range_high": [ "280" + ], + "supertack_plate_temp": [ + "60" + ], + "textured_cool_plate_temp": [ + "60" + ], + "supertack_plate_temp_initial_layer": [ + "60" + ], + "textured_cool_plate_temp_initial_layer": [ + "60" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/filament/fdm_filament_pla.json b/resources/profiles/Qidi/filament/fdm_filament_pla.json index 18d48bf015..44caef7fe4 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_pla.json +++ b/resources/profiles/Qidi/filament/fdm_filament_pla.json @@ -20,7 +20,7 @@ "20" ], "cool_plate_temp": [ - "60" + "45" ], "eng_plate_temp": [ "60" @@ -31,8 +31,11 @@ "textured_plate_temp": [ "60" ], + "supertack_plate_temp": [ + "45" + ], "cool_plate_temp_initial_layer": [ - "60" + "45" ], "eng_plate_temp_initial_layer": [ "60" @@ -43,6 +46,9 @@ "textured_plate_temp_initial_layer": [ "60" ], + "supertack_plate_temp_initial_layer": [ + "45" + ], "nozzle_temperature_initial_layer": [ "210" ], @@ -96,5 +102,11 @@ ], "enable_overhang_bridge_fan": [ "1" + ], + "textured_cool_plate_temp": [ + "45" + ], + "textured_cool_plate_temp_initial_layer": [ + "45" ] } diff --git a/resources/profiles/Qidi/filament/fdm_filament_tpu.json b/resources/profiles/Qidi/filament/fdm_filament_tpu.json index 4af0adef97..d072ae17e2 100644 --- a/resources/profiles/Qidi/filament/fdm_filament_tpu.json +++ b/resources/profiles/Qidi/filament/fdm_filament_tpu.json @@ -5,28 +5,28 @@ "from": "system", "instantiation": "false", "cool_plate_temp": [ - "50" + "30" ], "eng_plate_temp": [ - "50" + "35" ], "hot_plate_temp": [ - "50" + "35" ], "textured_plate_temp": [ - "50" + "35" ], "cool_plate_temp_initial_layer": [ - "05" + "30" ], "eng_plate_temp_initial_layer": [ - "50" + "35" ], "hot_plate_temp_initial_layer": [ - "60" + "35" ], "textured_plate_temp_initial_layer": [ - "50" + "35" ], "fan_cooling_layer_time": [ "60" @@ -84,5 +84,17 @@ ], "enable_overhang_bridge_fan": [ "1" + ], + "supertack_plate_temp": [ + "30" + ], + "textured_cool_plate_temp": [ + "30" + ], + "supertack_plate_temp_initial_layer": [ + "30" + ], + "textured_cool_plate_temp_initial_layer": [ + "30" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/fdm_process_common.json b/resources/profiles/Qidi/process/fdm_process_common.json index e082177120..134d389c22 100644 --- a/resources/profiles/Qidi/process/fdm_process_common.json +++ b/resources/profiles/Qidi/process/fdm_process_common.json @@ -50,6 +50,7 @@ "inner_wall_line_width": "0.45", "inner_wall_speed": "40", "print_settings_id": "", + "precise_outer_wall": "0", "raft_layers": "0", "seam_position": "nearest", "skirt_distance": "2", diff --git a/resources/profiles/RH3D.json b/resources/profiles/RH3D.json index d8af523447..bb36f17f39 100644 --- a/resources/profiles/RH3D.json +++ b/resources/profiles/RH3D.json @@ -1,6 +1,6 @@ { "name": "RH3D", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "RH3D - printer profiles", "machine_model_list": [ diff --git a/resources/profiles/Raise3D.json b/resources/profiles/Raise3D.json index 086b030a27..0dcae032af 100644 --- a/resources/profiles/Raise3D.json +++ b/resources/profiles/Raise3D.json @@ -1,7 +1,7 @@ { "name": "Raise3D", "url": "", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Raise3D configurations", "machine_model_list": [ diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index 9ecc22a2c1..4c124544cf 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -1,6 +1,6 @@ { "name": "RatRig", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "RatRig configurations", "machine_model_list": [ diff --git a/resources/profiles/Ratrig/filament/fdm_filament_common.json b/resources/profiles/Ratrig/filament/fdm_filament_common.json index 8d05a6f91a..ab5b8305a6 100644 --- a/resources/profiles/Ratrig/filament/fdm_filament_common.json +++ b/resources/profiles/Ratrig/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/RolohaunDesign.json b/resources/profiles/RolohaunDesign.json index 492cd391e1..facbdebda4 100644 --- a/resources/profiles/RolohaunDesign.json +++ b/resources/profiles/RolohaunDesign.json @@ -1,6 +1,6 @@ { "name": "RolohaunDesign", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "RolohaunDesign Printer Profiles", "machine_model_list": [ diff --git a/resources/profiles/SecKit.json b/resources/profiles/SecKit.json index 12b8252786..700b063359 100644 --- a/resources/profiles/SecKit.json +++ b/resources/profiles/SecKit.json @@ -1,6 +1,6 @@ { "name": "SecKit", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "SecKit configurations", "machine_model_list": [ diff --git a/resources/profiles/SecKit/filament/fdm_filament_common.json b/resources/profiles/SecKit/filament/fdm_filament_common.json index 8d05a6f91a..ab5b8305a6 100644 --- a/resources/profiles/SecKit/filament/fdm_filament_common.json +++ b/resources/profiles/SecKit/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Snapmaker.json b/resources/profiles/Snapmaker.json index f3a494da74..ce72bffc09 100644 --- a/resources/profiles/Snapmaker.json +++ b/resources/profiles/Snapmaker.json @@ -1,6 +1,6 @@ { "name": "Snapmaker", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Snapmaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Snapmaker/filament/fdm_filament_common.json b/resources/profiles/Snapmaker/filament/fdm_filament_common.json index 66296d8ded..04c0a64a6f 100644 --- a/resources/profiles/Snapmaker/filament/fdm_filament_common.json +++ b/resources/profiles/Snapmaker/filament/fdm_filament_common.json @@ -67,7 +67,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "0" diff --git a/resources/profiles/Sovol.json b/resources/profiles/Sovol.json index 393c7c7374..a12a336457 100644 --- a/resources/profiles/Sovol.json +++ b/resources/profiles/Sovol.json @@ -1,7 +1,7 @@ { "name": "Sovol", "url": "", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Sovol configurations", "machine_model_list": [ diff --git a/resources/profiles/Tiertime.json b/resources/profiles/Tiertime.json index 761efdb0e1..73f8575b98 100644 --- a/resources/profiles/Tiertime.json +++ b/resources/profiles/Tiertime.json @@ -1,6 +1,6 @@ { "name": "Tiertime", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Tiertime configurations", "machine_model_list": [ diff --git a/resources/profiles/Tiertime/filament/fdm_filament_common.json b/resources/profiles/Tiertime/filament/fdm_filament_common.json index dd89148ec9..94ed0997ee 100644 --- a/resources/profiles/Tiertime/filament/fdm_filament_common.json +++ b/resources/profiles/Tiertime/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Tronxy.json b/resources/profiles/Tronxy.json index 9f7f49d3a6..1d5bef89ce 100644 --- a/resources/profiles/Tronxy.json +++ b/resources/profiles/Tronxy.json @@ -1,6 +1,6 @@ { "name": "Tronxy", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Tronxy configurations", "machine_model_list": [ diff --git a/resources/profiles/TwoTrees.json b/resources/profiles/TwoTrees.json index 0092fd1711..5063bbce79 100644 --- a/resources/profiles/TwoTrees.json +++ b/resources/profiles/TwoTrees.json @@ -1,6 +1,6 @@ { "name": "TwoTrees", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "1", "description": "TwoTrees configurations", "machine_model_list": [ diff --git a/resources/profiles/UltiMaker.json b/resources/profiles/UltiMaker.json index 27a7909d3c..01e3c68ecc 100644 --- a/resources/profiles/UltiMaker.json +++ b/resources/profiles/UltiMaker.json @@ -1,7 +1,7 @@ { "name": "UltiMaker", "url": "", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "UltiMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/Vivedino.json b/resources/profiles/Vivedino.json index f2632bcb4c..5ccb1958d0 100644 --- a/resources/profiles/Vivedino.json +++ b/resources/profiles/Vivedino.json @@ -1,6 +1,6 @@ { "name": "Vivedino", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Vivedino configurations", "machine_model_list": [ diff --git a/resources/profiles/Volumic.json b/resources/profiles/Volumic.json index ccd0643457..9a6751c628 100644 --- a/resources/profiles/Volumic.json +++ b/resources/profiles/Volumic.json @@ -1,6 +1,6 @@ { "name": "Volumic", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "1", "description": "VOLUMIC configurations", "machine_model_list": [ diff --git a/resources/profiles/Voron.json b/resources/profiles/Voron.json index 10076e88b8..6078a0aecc 100644 --- a/resources/profiles/Voron.json +++ b/resources/profiles/Voron.json @@ -1,6 +1,6 @@ { "name": "Voron", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Voron configurations", "machine_model_list": [ diff --git a/resources/profiles/Voxelab.json b/resources/profiles/Voxelab.json index 0bf0ff33df..e2da594a74 100644 --- a/resources/profiles/Voxelab.json +++ b/resources/profiles/Voxelab.json @@ -1,7 +1,7 @@ { "name": "Voxelab", "url": "", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Voxelab configurations", "machine_model_list": [ diff --git a/resources/profiles/Vzbot.json b/resources/profiles/Vzbot.json index 2adb9808b0..e30720f737 100644 --- a/resources/profiles/Vzbot.json +++ b/resources/profiles/Vzbot.json @@ -1,6 +1,6 @@ { "name": "Vzbot", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Vzbot configurations", "machine_model_list": [ diff --git a/resources/profiles/Vzbot/filament/fdm_filament_common.json b/resources/profiles/Vzbot/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Vzbot/filament/fdm_filament_common.json +++ b/resources/profiles/Vzbot/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/WEMAKE3D.json b/resources/profiles/WEMAKE3D.json index a265934921..18a91722db 100644 --- a/resources/profiles/WEMAKE3D.json +++ b/resources/profiles/WEMAKE3D.json @@ -1,6 +1,6 @@ { "name": "WEMAKE3D", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "WEMAKE3D configurations", "machine_model_list": [ diff --git a/resources/profiles/Wanhao France.json b/resources/profiles/Wanhao France.json index c38a0ed597..3b957e5f83 100644 --- a/resources/profiles/Wanhao France.json +++ b/resources/profiles/Wanhao France.json @@ -1,6 +1,6 @@ { "name": "Wanhao France", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "Wanhao France D12 configurations", "machine_model_list": [ diff --git a/resources/profiles/Wanhao France/filament/fdm_filament_common.json b/resources/profiles/Wanhao France/filament/fdm_filament_common.json index 205c0d3075..9294e67f0f 100644 --- a/resources/profiles/Wanhao France/filament/fdm_filament_common.json +++ b/resources/profiles/Wanhao France/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "1.75" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Wanhao.json b/resources/profiles/Wanhao.json index 8babf55f20..fbd1b366ad 100644 --- a/resources/profiles/Wanhao.json +++ b/resources/profiles/Wanhao.json @@ -1,6 +1,6 @@ { "name": "Wanhao", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "0", "description": "Wanhao configurations", "machine_model_list": [ diff --git a/resources/profiles/WonderMaker.json b/resources/profiles/WonderMaker.json index d006923592..2ecb6d2323 100755 --- a/resources/profiles/WonderMaker.json +++ b/resources/profiles/WonderMaker.json @@ -1,7 +1,7 @@ { "name": "WonderMaker", "url": "", - "version": "02.03.02.60", + "version": "02.04.00.00", "force_update": "0", "description": "WonderMaker configurations", "machine_model_list": [ diff --git a/resources/profiles/WonderMaker/filament/fdm_filament_common.json b/resources/profiles/WonderMaker/filament/fdm_filament_common.json index 458f1a0113..fff218a7f5 100755 --- a/resources/profiles/WonderMaker/filament/fdm_filament_common.json +++ b/resources/profiles/WonderMaker/filament/fdm_filament_common.json @@ -61,7 +61,7 @@ "nil" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/profiles/Z-Bolt.json b/resources/profiles/Z-Bolt.json index b49dd51fed..c38063472e 100644 --- a/resources/profiles/Z-Bolt.json +++ b/resources/profiles/Z-Bolt.json @@ -1,7 +1,7 @@ { "name": "Z-Bolt", "url": "", - "version": "02.03.02.71", + "version": "02.04.00.00", "force_update": "0", "description": "Z-Bolt configurations", "machine_model_list": [ diff --git a/resources/profiles/iQ.json b/resources/profiles/iQ.json index c0b2570558..ff1ad6fbed 100644 --- a/resources/profiles/iQ.json +++ b/resources/profiles/iQ.json @@ -1,6 +1,6 @@ { "name": "innovatiQ", - "version": "02.03.02.70", + "version": "02.04.00.00", "force_update": "1", "description": "innovatiQ configuration", "machine_model_list": [ diff --git a/resources/profiles/re3D.json b/resources/profiles/re3D.json index 6cc1e1ae87..ef664c9ee2 100644 --- a/resources/profiles/re3D.json +++ b/resources/profiles/re3D.json @@ -1,6 +1,6 @@ { "name": "re3D", - "version": "02.01.01.10", + "version": "02.04.00.00", "force_update": "0", "description": "re3D configurations", "machine_model_list": [ diff --git a/resources/profiles/re3D/filament/fdm_filament_common.json b/resources/profiles/re3D/filament/fdm_filament_common.json index 3fbf7a0288..745f258139 100644 --- a/resources/profiles/re3D/filament/fdm_filament_common.json +++ b/resources/profiles/re3D/filament/fdm_filament_common.json @@ -64,7 +64,7 @@ "2.85" ], "filament_max_volumetric_speed": [ - "0" + "12" ], "filament_minimal_purge_on_wipe_tower": [ "15" diff --git a/resources/shaders/110/fxaa.fs b/resources/shaders/110/fxaa.fs new file mode 100644 index 0000000000..c4db1a36ad --- /dev/null +++ b/resources/shaders/110/fxaa.fs @@ -0,0 +1,50 @@ +#version 110 + +uniform sampler2D uniform_texture; +uniform vec2 inv_tex_size; + +varying vec2 tex_coord; + +void main() +{ + vec3 rgbNW = texture2D(uniform_texture, tex_coord + vec2(-1.0, -1.0) * inv_tex_size).rgb; + vec3 rgbNE = texture2D(uniform_texture, tex_coord + vec2(1.0, -1.0) * inv_tex_size).rgb; + vec3 rgbSW = texture2D(uniform_texture, tex_coord + vec2(-1.0, 1.0) * inv_tex_size).rgb; + vec3 rgbSE = texture2D(uniform_texture, tex_coord + vec2(1.0, 1.0) * inv_tex_size).rgb; + vec3 rgbM = texture2D(uniform_texture, tex_coord).rgb; + + vec3 luma_coeff = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma_coeff); + float lumaNE = dot(rgbNE, luma_coeff); + float lumaSW = dot(rgbSW, luma_coeff); + float lumaSE = dot(rgbSE, luma_coeff); + float lumaM = dot(rgbM, luma_coeff); + + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + + vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + + const float FXAA_REDUCE_MIN = 1.0 / 128.0; + const float FXAA_REDUCE_MUL = 1.0 / 8.0; + const float FXAA_SPAN_MAX = 8.0; + + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX), dir * rcpDirMin)) * inv_tex_size; + + vec3 rgbA = 0.5 * ( + texture2D(uniform_texture, tex_coord + dir * (1.0 / 3.0 - 0.5)).rgb + + texture2D(uniform_texture, tex_coord + dir * (2.0 / 3.0 - 0.5)).rgb + ); + + vec3 rgbB = rgbA * 0.5 + 0.25 * ( + texture2D(uniform_texture, tex_coord + dir * -0.5).rgb + + texture2D(uniform_texture, tex_coord + dir * 0.5).rgb + ); + + float lumaB = dot(rgbB, luma_coeff); + gl_FragColor = (lumaB < lumaMin || lumaB > lumaMax) ? vec4(rgbA, 1.0) : vec4(rgbB, 1.0); +} diff --git a/resources/shaders/110/fxaa.vs b/resources/shaders/110/fxaa.vs new file mode 100644 index 0000000000..f066b5dc5f --- /dev/null +++ b/resources/shaders/110/fxaa.vs @@ -0,0 +1,15 @@ +#version 110 + +uniform mat4 view_model_matrix; +uniform mat4 projection_matrix; + +attribute vec3 v_position; +attribute vec2 v_tex_coord; + +varying vec2 tex_coord; + +void main() +{ + tex_coord = v_tex_coord; + gl_Position = projection_matrix * view_model_matrix * vec4(v_position, 1.0); +} diff --git a/resources/shaders/140/fxaa.fs b/resources/shaders/140/fxaa.fs new file mode 100644 index 0000000000..5b2c034ea7 --- /dev/null +++ b/resources/shaders/140/fxaa.fs @@ -0,0 +1,52 @@ +#version 140 + +uniform sampler2D uniform_texture; +uniform vec2 inv_tex_size; + +in vec2 tex_coord; + +out vec4 out_color; + +void main() +{ + vec3 rgbNW = texture(uniform_texture, tex_coord + vec2(-1.0, -1.0) * inv_tex_size).rgb; + vec3 rgbNE = texture(uniform_texture, tex_coord + vec2(1.0, -1.0) * inv_tex_size).rgb; + vec3 rgbSW = texture(uniform_texture, tex_coord + vec2(-1.0, 1.0) * inv_tex_size).rgb; + vec3 rgbSE = texture(uniform_texture, tex_coord + vec2(1.0, 1.0) * inv_tex_size).rgb; + vec3 rgbM = texture(uniform_texture, tex_coord).rgb; + + vec3 luma_coeff = vec3(0.299, 0.587, 0.114); + float lumaNW = dot(rgbNW, luma_coeff); + float lumaNE = dot(rgbNE, luma_coeff); + float lumaSW = dot(rgbSW, luma_coeff); + float lumaSE = dot(rgbSE, luma_coeff); + float lumaM = dot(rgbM, luma_coeff); + + float lumaMin = min(lumaM, min(min(lumaNW, lumaNE), min(lumaSW, lumaSE))); + float lumaMax = max(lumaM, max(max(lumaNW, lumaNE), max(lumaSW, lumaSE))); + + vec2 dir; + dir.x = -((lumaNW + lumaNE) - (lumaSW + lumaSE)); + dir.y = ((lumaNW + lumaSW) - (lumaNE + lumaSE)); + + const float FXAA_REDUCE_MIN = 1.0 / 128.0; + const float FXAA_REDUCE_MUL = 1.0 / 8.0; + const float FXAA_SPAN_MAX = 8.0; + + float dirReduce = max((lumaNW + lumaNE + lumaSW + lumaSE) * (0.25 * FXAA_REDUCE_MUL), FXAA_REDUCE_MIN); + float rcpDirMin = 1.0 / (min(abs(dir.x), abs(dir.y)) + dirReduce); + dir = min(vec2(FXAA_SPAN_MAX), max(vec2(-FXAA_SPAN_MAX), dir * rcpDirMin)) * inv_tex_size; + + vec3 rgbA = 0.5 * ( + texture(uniform_texture, tex_coord + dir * (1.0 / 3.0 - 0.5)).rgb + + texture(uniform_texture, tex_coord + dir * (2.0 / 3.0 - 0.5)).rgb + ); + + vec3 rgbB = rgbA * 0.5 + 0.25 * ( + texture(uniform_texture, tex_coord + dir * -0.5).rgb + + texture(uniform_texture, tex_coord + dir * 0.5).rgb + ); + + float lumaB = dot(rgbB, luma_coeff); + out_color = (lumaB < lumaMin || lumaB > lumaMax) ? vec4(rgbA, 1.0) : vec4(rgbB, 1.0); +} diff --git a/resources/shaders/140/fxaa.vs b/resources/shaders/140/fxaa.vs new file mode 100644 index 0000000000..5ca1517db0 --- /dev/null +++ b/resources/shaders/140/fxaa.vs @@ -0,0 +1,15 @@ +#version 140 + +uniform mat4 view_model_matrix; +uniform mat4 projection_matrix; + +in vec3 v_position; +in vec2 v_tex_coord; + +out vec2 tex_coord; + +void main() +{ + tex_coord = v_tex_coord; + gl_Position = projection_matrix * view_model_matrix * vec4(v_position, 1.0); +} diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 285b5c1a31..4a1fd7ea51 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -1,1709 +1,1784 @@ -var LangText = { - en: { - t1: "Welcome to Orca Slicer", - t2: "Orca Slicer will be setup in several steps. Let's start!", - t3: "User Agreement", - t4: "Disagree", - t5: "Agree", - t6: "We kindly request your help to improve everyone's printing.
Come and Join our Customer Experience Improvement Program", - t7: "Join our Customer Experience Improvement Program", - t8: "Back", - t9: "Next", - t10: "Printer Selection", - t11: "All", - t12: "Clear all", - t13: "mm nozzle", - t14: "Filament Selection", - t15: "Printer", - t16: "Filament type", - t17: "Vendor", - t18: "Error", - t19: "At least one filament must be selected.", - t20: "Do you want to use default filament ?", - t21: "Yes", - t22: "No", - t23: "Release note", - t24: "Get Started", - t25: "Finish", - t26: "Login", - t27: "Register", - t28: "Recent", - t29: "Mall", - t30: "Manual", - t31: "New Project", - t32: "Create new project", - t33: "Open Project", - t34: "hotspot", - t35: "Recently opened", - t36: "OK", - t37: "At least one printer must be selected.", - t38: "Cancel", - t39: "Confirm", - t40: "Network disconnect, please check and try again later.", - t47: "Please select your login region", - t48: "Asia-Pacific", - t49: "China", - t50: "Log out", - t52: "Skip", - t53: "Join", - t54: "In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. Orca Slicer follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training Orca Slicer to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in ", - t55: "Privacy Policy", - t56: ". We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy.", - t57: "", - t58: "", - t59: ".", - t60: "Europe", - t61: "North America", - t62: "Others", - t63: "After changing the region, your account will be logged out. Please log in again later.", - t64: "Proprietary Plugins", - t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", - t66: "Full remote control", - t67: "Liveview streaming", - t68: "User data synchronization", - t69: "Install Bambu Network plug-in", - t70: "", - t71: "Downloading", - t72: "Downloading failed", - t73: "Installation successful.", - t74: "Restart", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "Bambu Network plug-in not detected. Click ", - t77: "here", - t78: " to install it.", - t79: "Failed to install plug-in. ", - t80: "Try the following steps:", - t81: "1, Click ", - t82: " to open the plug-in directory", - t83: "2, Close all open Orca Slicer", - t84: "3, Delete all files under the plug-in directory", - t85: "4, Reopen Orca Slicer and install the plug-in again", - t86: "Close", - t87: "User Manual", - t88: "Remove", - t89: "Open Containing Folder", - t90: "3D Model", - t91: "Download 3D models", - t92: "Create by", - t93: "Remixed by", - t94: "Shared by", - t95: "Model Information", - t96: "Accessories", - t97: "Profile Information", - t98: "Model name", - t100: "Model description", - t101: "BOM", - t102: "Assembly Guide", - t103: "Other", - t104: "Profile name", - t105: "Profile Author", - t106: "Profile description", - t107: "Online Models", - t108: "MORE", - t109: "System Filaments", - t110: "Custom Filaments", - t111: "Create New", - t112: "Join the Program", - t113: "You may change your choice in preference anytime.", - t126: "Loading……", - orca1: "Edit Project Info", - orca2: "No model information", - orca3: "Stealth Mode", - orca4: "This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function.", - orca5: "Enable Stealth Mode.", - orca6: "Bambu Cloud", - }, - ca_ES: { - t1: "Benvingut a Orca Slicer", - t2: "Orca Slicer es configurarà en diversos passos. Comencem!", - t3: "Acord de l'Usuari", - t4: "No accepto", - t5: "Accepto", - t6: "Sol·licitem la vostra ajuda per millorar la impressió de tothom.
Vine i uneix-te al nostre Programa de Millora de l'Experiència del Client", - t7: "Uneix-te al nostre Programa de Millora de l'Experiència del Client", - t8: "Enrere", - t9: "Següent", - t10: "Selecció d'Impressora", - t11: "Totes", - t12: "Netejar tot", - t13: "mm broquet", - t14: "Selecció de Filament", - t15: "Impressora", - t16: "Tipus de filament", - t17: "Proveïdor", - t18: "Error", - t19: "S'ha de seleccionar almenys un filament.", - t20: "Vols utilitzar el filament per defecte?", - t21: "sí", - t22: "no", - t23: "Nota de llançament", - t24: "Comença", - t25: "Finalitzar", - t26: "Iniciar sessió", - t27: "Registrar", - t28: "Recent", - t29: "Botiga", - t30: "Manual", - t31: "Nou Projecte", - t32: "Crear nou projecte", - t33: "Obrir Projecte", - t34: "hotspot", - t35: "Obert recentment", - t36: "D'acord", - t37: "S'ha de seleccionar almenys una impressora.", - t38: "Cancel·lar", - t39: "Confirmar", - t40: "Desconnexió de la xarxa, si us plau comprova i intenta-ho de nou més tard.", - t47: "Si us plau selecciona la teva regió d'inici de sessió", - t48: "Àsia-Pacífic", - t49: "Xina", - t50: "Tancar sessió", - t52: "Saltar", - t53: "Unir-se", - t54: "A la comunitat d'Impressió 3D, aprenem dels èxits i fracassos dels altres per ajustar els nostres propis paràmetres i configuracions de laminació. Orca Slicer segueix el mateix principi i utilitza l'aprenentatge automàtic per millorar el seu rendiment a partir dels èxits i fracassos d'un gran nombre d'impressions dels nostres usuaris. Estem entrenant Orca Slicer per ser més intel·ligent alimentant-lo amb dades del món real. Si estàs disposat, aquest servei accedirà a informació dels teus registres d'errors i registres d'ús, que poden incloure informació descrita a la ", - t55: "Política de Privacitat", - t56: ". No recopilarem cap dada personal que pugui identificar directament o indirectament a un individu, incloent-hi noms, adreces, informació de pagament o números de telèfon. En habilitar aquest servei, acceptes aquests termes i la declaració sobre la Política de Privacitat.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "Amèrica del Nord", - t62: "Altres", - t63: "Després de canviar la regió, el teu compte es tancarà la sessió. Si us plau inicia sessió de nou més tard.", - t64: "Connectors propietaris", - t65: "Tingues en compte que aquests connectors no són desenvolupats ni mantinguts per OrcaSlicer. S'han d'utilitzar a la teva discreció i risc.", - t66: "Control remot complet", - t67: "Transmissió en directe", - t68: "Sincronització de dades de l'usuari", - t69: "Instal·lar connector Bambu Network", - t70: "", - t71: "Descarregant", - t72: "Descàrrega fallida", - t73: "Instal·lació exitosa.", - t74: "Reiniciar", - t75: "Alguns proveïdors d'impressora requereixen connectors propietaris per comunicar-se amb les seves impressores. Si us plau selecciona el connector corresponent si utilitzes aquestes impressores.", - t76: "No s'ha detectat el connector Bambu Network. Fes clic ", - t77: "aquí", - t78: " per instal·lar-lo.", - t79: "No s'ha pogut instal·lar el connector.", - t80: "Prova els següents passos:", - t81: "1, Fes clic ", - t82: " per obrir el directori de connectors", - t83: "2, Tanca totes les Orca Slicer obertes", - t84: "3, Elimina tots els fitxers del directori de connectors", - t85: "4, Reobre Orca Slicer i instal·la el connector de nou", - t86: "Tancar", - t87: "Manual de l'Usuari", - t88: "Eliminar", - t89: "Obrir Carpeta Contenidora", - t90: "Model 3D", - t91: "Descarregar models 3D", - t92: "Creat per", - t93: "Remesclat per", - t94: "Compartit per", - t95: "Informació del Model", - t96: "Accessoris", - t97: "Informació del Perfil", - t98: "Nom del model", - t100: "Descripció del model", - t101: "BOM", - t102: "Guia d'Assemblea", - t103: "Altres", - t104: "Nom del perfil", - t105: "Autor del perfil", - t106: "Descripció del perfil", - t107: "Models en línia", - t108: "MÉS", - t109: "Filaments del Sistema", - t110: "Filaments Personalitzats", - t111: "Crear Nou", - t112: "Unir-se al Programa", - t113: "Pots canviar la teva elecció en les preferències en qualsevol moment.", - orca1: "Editar Informació del Projecte", - orca2: "No hi ha informació del model", - orca6: "Bambu Cloud", - }, - es_ES: { - t1: "Bienvenido a Orca Slicer", - t2: "Orca Slicer se configurará mediante varios pasos. ¡Comencemos!", - t3: "Términos de uso", - t4: "No acepto", - t5: "Acepto", - t6: "Le rogamos su ayuda para mejorar la experiencia de impresión de todos.
Únase a nuestro Programa de Mejora de la Experiencia del Cliente", - t7: "Permitir enviar datos anónimos", - t8: "Volver", - t9: "Siguiente", - t10: "Selección de impresora", - t11: "Todo", - t12: "Limpiar todo", - t13: "mm de boquilla", - t14: "Selección de filamento", - t15: "Impresora", - t16: "Tipo de filamento", - t17: "Fabricante", - t18: "Error", - t19: "Al menos se debe seleccionar un filamento.", - t20: "¿Desea usar el filamento por defecto?", - t21: "Sí", - t22: "No", - t23: "Notas de la versión", - t24: "Comenzar", - t25: "Finalizar", - t26: "Iniciar sesión", - t27: "Registrarse", - t28: "Reciente", - t29: "Tienda", - t30: "Manual", - t31: "Nuevo proyecto", - t32: "Crear nuevo proyecto", - t33: "Abrir proyecto", - t34: "punto de acceso", - t35: "Abiertos recientemente", - t36: "OK", - t37: "Al menos se debe seleccionar una impresora.", - t38: "Cancelar", - t39: "Confirmar", - t40: "Desconectado, por favor compruebe la conexión de red e inténtelo de nuevo.", - t47: "Por favor, seleccione su región:", - t48: "Asia-Pacífico", - t49: "China", - t50: "Cerrar sesión", - t52: "Omitir", - t53: "Unirse", - t54: "En la comunidad de impresión 3D aprendemos de los éxitos y fracasos de los demás para ajustar nuestros propios parámetros y configuraciones de corte. Orca Slicer sigue el mismo principio y utiliza el aprendizaje automático para mejorar su rendimiento a partir de los éxitos y fallos del gran número de impresiones realizadas por nuestros usuarios. Estamos entrenando a Orca Slicer para que sea más inteligente proporcionándole datos del mundo real. Si lo desea, este servicio accederá a la información de sus registros de errores y de uso, que pueden incluir la información descrita en nuestra ", - t55: "Política de privacidad", - t56: ". No recopilaremos ningún dato personal que pueda identificar directa o indirectamente a una persona, incluyendo, sin limitación, nombres, direcciones, información de pago o números de teléfono. Al habilitar este servicio, acepta estos términos y la declaración sobre la Política de privacidad.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "América del Norte", - t62: "Otras", - t63: "Después de cambiar la región, su cuenta se cerrará la sesión. Por favor, vuelva a iniciar sesión.", - t64: "Complementos propietarios", - t65: "Tenga en cuenta que estos complementos no están desarrollados ni mantenidos por OrcaSlicer. Deben usarse bajo su propia responsabilidad.", - t66: "Control remoto total", - t67: "Transmisión en vivo", - t68: "Sincronización de datos de usuario", - t69: "Instalar plug-in Bambu Network", - t70: "", - t71: "Descargando", - t72: "Descarga fallida", - t73: "Instalación exitosa.", - t74: "Reiniciar", - t75: "Algunos proveedores de impresoras requieren complementos propietarios para la comunicación con sus impresoras. Seleccione el complemento correspondiente si utiliza tales impresoras.", - t76: "Plug-in de Bambu Network no detectado. Haga clic ", - t77: "aquí", - t78: " para instalarlo.", - t79: "Fallo al instalar el complemento. ", - t80: "Intente los siguientes pasos:", - t81: "1. Haga clic ", - t82: " para abrir el directorio de complementos", - t83: "2. Cierre todas las instancias de Orca Slicer", - t84: "3. Elimine todos los archivos del directorio de complementos", - t85: "4. Vuelva a abrir Orca Slicer e instale el complemento de nuevo", - t86: "Cerrar", - t87: "Manual de usuario", - t88: "Eliminar", - t89: "Abrir carpeta contenedora", - t90: "Modelo 3D", - t91: "Descargar modelos 3D", - t92: "Creado por", - t93: "Remixado por", - t94: "Compartido por", - t95: "Información del modelo", - t96: "Accesorios", - t97: "Información del perfil", - t98: "Nombre del modelo", - t100: "Descripción del modelo", - t101: "Lista de materiales", - t102: "Guía de ensamblaje", - t103: "Otros", - t104: "Nombre del perfil", - t105: "Autor del perfil", - t106: "Descripción del perfil", - t107: "Modelos en línea", - t108: "Más", - t109: "Filamentos del sistema", - t110: "Filamentos personalizados", - t111: "Crear nuevo", - t112: "Unirse al programa", - t113: "Puede cambiar su elección en Preferencias en cualquier momento.", - t126: "Cargando……", - orca1: "Editar información del proyecto", - orca2: "No hay información sobre el modelo", - orca3: "Modo sigiloso", - orca4: "Esta función detiene la transmisión de datos a los servicios en la nube de Bambu. Los usuarios que no utilicen máquinas BBL o que solo usen el modo LAN pueden activar esta función con seguridad.", - orca5: "Activar modo sigiloso.", - orca6: "Bambu Cloud", - }, - it_IT: { - t1: "Benvenuti in OrcaSlicer", - t2: "OrcaSlicer verrà configurato seguendo diversi passaggi. Cominciamo!", - t3: "Condizioni d'uso", - t4: "Non accetto", - t5: "Accetto", - t6: "Chiediamo gentilmente il tuo aiuto per migliorare la qualità delle stampe.
Iscriviti al nostro programma di miglioramento dell'esperienza utente", - t7: "Iscriviti al nostro programma di miglioramento dell'esperienza utente", - t8: "Indietro", - t9: "Avanti", - t10: "Selezione della stampante", - t11: "Tutto", - t12: "Cancella tutto", - t13: "mm ugello", - t14: "Selezione del filamento", - t15: "Stampante", - t16: "Tipo di filamento", - t17: "Produttore", - t18: "Errore", - t19: "È necessario selezionare almeno un filamento.", - t20: "Vuoi utilizzare il filamento predefinito?", - t21: "Sì", - t22: "No", - t23: "Note di rilascio", - t24: "Inizia", - t25: "Fine", - t26: "Accedi", - t27: "Registrati", - t28: "Recente", - t29: "Negozio", - t30: "Manuale", - t31: "Nuovo progetto", - t32: "Crea un nuovo progetto", - t33: "Apri progetto", - t34: "hotspot", - t35: "Aperti di recente", - t36: "OK", - t37: "È necessario selezionare almeno una stampante.", - t38: "Annulla", - t39: "Conferma", - t40: "Disconnesso, controlla la connessione di rete e riprova.", - t47: "Seleziona la tua regione di accesso", - t48: "Asia-Pacifico", - t49: "Cina", - t50: "Disconnettiti", - t52: "Salta", - t53: "Iscriviti", - t54: "Nella comunità di stampa 3D, impariamo dai successi e dagli insuccessi di ognuno per adattare i nostri parametri e le nostre impostazioni di slicing. OrcaSlicer segue lo stesso principio, utilizzando l'apprendimento automatico per migliorare le sue prestazioni sfruttando i successi e gli insuccessi delle numerose stampe dei nostri utenti. Stiamo addestrando OrcaSlicer ad essere più intelligente, fornendogli dati del mondo reale. Se lo desideri, questo servizio accederà alle informazioni dei tuoi registri di errore e di utilizzo, i quali possono includere informazioni descritte in ", - t55: "Politica sulla riservatezza", - t56: ". Non raccoglieremo alcun Dato Personale tramite il quale un individuo possa essere identificato direttamente o indirettamente, inclusi (senza limitazioni) nomi, indirizzi, informazioni di pagamento o numeri di telefono. Abilitando questo servizio, accetti questi termini e la dichiarazione sulla Politica sulla riservatezza.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "Nord America", - t62: "Altri", - t63: "Dopo aver cambiato la regione, il tuo profilo verrà disconnesso. Sarà necessario accedere di nuovo.", - t64: "Moduli proprietari", - t65: "Si prega di notare che questi moduli non sono sviluppati o mantenuti da OrcaSlicer. Dovrebbero essere utilizzati a proprio rischio e discrezione.", - t66: "Controllo remoto completo", - t67: "Video in diretta", - t68: "Sincronizzazione dei dati utente", - t69: "Installa il modulo di rete Bambu", - t70: "", - t71: "Scaricamento", - t72: "Scaricamento non riuscito", - t73: "Installazione riuscita.", - t74: "Riavvia", - t75: "Le stampanti di alcuni produttori richiedono dei moduli proprietari per far in modo che la comunicazione abbia successo. Seleziona il modulo corrispondente se utilizzi tali stampanti.", - t76: "Modulo di rete Bambu non rilevato. Fai clic ", - t77: "qui", - t78: " per installarlo.", - t79: "Impossibile installare il modulo. ", - t80: "Prova i seguenti passaggi:", - t81: "1, Fare clic ", - t82: " per aprire la directory del modulo", - t83: "2, Chiudere tutte le istanze di OrcaSlicer", - t84: "3, Eliminare tutti i file all'interno della directory del modulo", - t85: "4, Riaprire OrcaSlicer e installare nuovamente il modulo", - t86: "Chiudi", - t87: "Manuale d'uso", - t88: "Rimuovi", - t89: "Apri cartella con contenuto", - t90: "Modello 3D", - t91: "Scarica modelli 3D", - t92: "Creato da", - t93: "Modificato da", - t94: "Condiviso da", - t95: "Informazioni sul modello", - t96: "Accessori", - t97: "Informazioni sul profilo", - t98: "Nome del modello", - t100: "Descrizione del modello", - t101: "Elenco dei materiali", - t102: "Istruzioni di montaggio ", - t103: "Altro", - t104: "Nome del profilo", - t105: "Autore del profilo", - t106: "Descrizione del profilo", - t107: "Modelli online", - t108: "ALTRO", - t109: "Filamenti di sistema", - t110: "Filamenti personalizzati", - t111: "Crea Nuovo", - t112: "Unisciti al programma", - t113: "Puoi modificare la tua scelta in 'Preferenze' in qualsiasi momento.", - orca1: "Modifica informazioni progetto", - orca2: "Nessuna informazione sul modello", - orca3: "Modalità invisibile", - orca4: "Con questa modalità, la trasmissione dei dati ai servizi cloud di Bambu sarà interrotta. Gli utenti che non utilizzano macchine BBL o che usano solo la modalità LAN possono attivare questa funzione in modo sicuro.", - orca5: "Abilita la modalità invisibile.", - orca6: "Bambu Cloud", - }, - de_DE: { - t1: "Willkommen im Orca Slicer", - t2: "Das Orca Slicer wird in mehreren Schritten eingerichtet. Lass uns anfangen!", - t3: "Nutzervereinbarung", - t4: "Ablehnen", - t5: "Zustimmen", - t6: "Wir bitten um deine Hilfe, um den Druck für alle zu verbessern", - t7: "Anonyme Daten senden erlauben", - t8: "Zurück", - t9: "Weiter", - t10: "Druckerauswahl", - t11: "Alle", - t12: "Keinen", - t13: "mm Düse", - t14: "Filamentauswahl", - t15: "Drucker", - t16: "Filamenttyp", - t17: "Hersteller", - t18: "Fehler", - t19: "Es muss mindestens ein Filament ausgewählt sein.", - t20: "Möchten Sie das Standard-Filament verwenden?", - t21: "Ja", - t22: "Nein", - t23: "Versionshinweise", - t24: "Loslegen", - t25: "Fertig", - t26: "Anmelden", - t27: "Registrieren", - t28: "Neueste", - t29: "Einkaufszentrum", - t30: "Handbuch", - t31: "Neues Projekt", - t32: "Neues Projekt erstellen", - t33: "Projekt öffnen", - t34: "Hotspot", - t35: "Zuletzt geöffnet", - t36: "OK", - t37: "Es muss mindestens ein Drucker ausgewählt sein.", - t38: "Abbrechen", - t39: "Bestätigen", - t40: "Netzwerkunterbrechung, bitte überprüfen und später erneut versuchen.", - t47: "Bitte wählen Sie Ihre Login-Region aus", - t48: "Asien-Pazifik", - t49: "China", - t50: "Abmelden", - t52: "Überspringen", - t53: "Beitreten", - t54: "In der 3D-Druck-Community lernen wir aus den Erfolgen und Misserfolgen der anderen Benutzer, um unsere eigenen Schneideparameter und Einstellungen anzupassen. Orca Slicer folgt demselben Prinzip und verbessert seine Leistung durch die Erfolge und Misserfolge der Vielzahl von Drucken unserer Benutzer mittels maschinellem Lernen. Wir trainieren Orca Slicer, indem wir ihnen die realen Daten zuführen. Wenn Sie bereit sind, greift dieser Dienst auf Informationen aus Ihren Fehler- und Nutzungsprotokollen zu, die Informationen enthalten können, die in der ", - t55: "Datenschutzrichtlinie", - t56: ". Wir werden keine personenbezogenen Daten sammeln, durch die eine Person direkt oder indirekt identifiziert werden kann, einschließlich, aber nicht beschränkt auf Namen, Adressen, Zahlungsinformationen oder Telefonnummern. Durch Aktivieren dieses Dienstes stimmen Sie diesen Bedingungen und der Erklärung zur Datenschutzrichtlinie zu.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "Nordamerika", - t62: "Andere", - t63: "Nach Ändern der Region wird Ihr Konto abgemeldet. Bitte melden Sie sich später erneut an.", - t64: "Bambu Network-Plug-in", - t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", - t66: "Vollständige Fernsteuerung", - t67: "Live-View-Streaming", - t68: "Synchronisierung von Benutzerdaten", - t69: "Bambu Network-Plug-in installieren", - t70: "", - t71: "Herunterladen", - t72: "Herunterladen fehlgeschlagen", - t73: "Installation erfolgreich.", - t74: "Neustart", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "Das Bambu Network-Plug-in wurde nicht erkannt. Klicken Sie ", - t77: "hier", - t78: ", um es zu installieren.", - t79: "Fehler beim Installieren des Plug-ins. ", - t80: "Versuchen Sie die folgenden Schritte:", - t81: "1, Klicken Sie auf ", - t82: ", um das Plug-in-Verzeichnis zu öffnen", - t83: "2, Schließen Sie alle geöffneten Orca Slicer", - t84: "3, Löschen Sie alle Dateien im Plug-in-Verzeichnis", - t85: "4, Öffnen Sie Orca Slicer erneut und installieren Sie das Plug-in erneut", - t86: "Schließen", - t87: "Benutzerhandbuch", - t88: "Entfernen", - t89: "Enthaltenden Ordner öffnen", - t90: "3D-Modell", - t91: "3D-Modelle herunterladen", - t92: "Erstellt von", - t93: "Remixed von", - t94: "Geteilt von", - t95: "Modellinformationen", - t96: "Zubehör", - t97: "Profilinformationen", - t98: "Modellname", - t100: "Modellbeschreibung", - t101: "Stückliste", - t102: "Montageanleitung", - t103: "Andere", - t104: "Profilname", - t105: "Profilautor", - t106: "Profilbeschreibung", - t126: "Laden……", - orca1: "Edit Project Info", - orca2: "No model information", - orca6: "Bambu Cloud", - }, - cs_CZ: { - t1: "Vítejte v Orca Slicer", - t2: "Orca Slicer bude nastaven v několika krocích. Začněme!", - t3: "Uživatelská smlouva", - t4: "Nesouhlasím", - t5: "Souhlasím", - t6: "Prosíme o vaši pomoc se zlepšením všech tisků", - t7: "Povolit odesílání anonymních dat", - t8: "Zpět", - t9: "Další", - t10: "Výběr tiskárny", - t11: "Všechny", - t12: "Vymazat vše", - t13: "Tryska mm", - t14: "Výběr Filamentu", - t15: "Tiskárna", - t16: "Typ Filamentu", - t17: "Dodavatel", - t18: "Chyba", - t19: "Musí být vybraný alespoň jeden Filament.", - t20: "Chcete použít výchozí Filament?", - t21: "Ano", - t22: "Ne", - t23: "Poznámka k vydání", - t24: "Začínáme", - t25: "Dokončit", - t26: "Přihlásit", - t27: "Registrovat", - t28: "Poslední", - t29: "Obchodní centrum", - t30: "Manuální", - t31: "Nový projekt", - t32: "Vytvořit nový projekt", - t33: "Otevřít projekt", - t34: "Hotspot", - t35: "Nedávno otevřeno", - t36: "OK", - t37: "Musí být vybrána alespoň jedna tiskárna.", - t38: "Zrušit", - t39: "Potvrdit", - t40: "Síť je odpojena, prosím zkontrolujte a zkuste to znovu později.", - t47: "Vyberte prosím svou oblast přihlášení", - t48: "Asie-Pacifik", - t49: "Čína", - t50: "Odhlásit se", - t52: "Přeskočit", - t53: "Připojit se", - t54: "V komunitě 3D tisku se ze vzájemných úspěchů a neúspěchů učíme upravovat vlastní parametry a nastavení krájení. Orca Slicer se řídí stejným principem a využívá strojové učení ke zlepšení svého výkonu na základě úspěchů a neúspěchů počet výtisků našimi uživateli. Orca Slicer školíme, aby byl chytřejší tím, že jim poskytuje data z reálného světa. Pokud budete chtít, bude tato služba přistupovat k informacím z vašich protokolů chyb a protokolů použití, které mohou zahrnovat informace popsané v ", - t55: "Zásady ochrany osobních údajů", - t56: ". Nebudeme shromažďovat žádné osobní údaje, pomocí kterých lze přímo nebo nepřímo identifikovat jednotlivce, včetně jmen, adres, platebních údajů nebo telefonních čísel. Povolením této služby souhlasíte s těmito podmínkami a prohlášení o zásadách ochrany osobních údajů.", - t57: "", - t58: "", - t59: ".", - t60: "Evropa", - t61: "Severní Amerika", - t62: "Ostatní", - t63: "Po změně regionu bude váš účet odhlášen. Přihlaste se prosím znovu později.", - t64: "Proprietary Plugins", - t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", - t66: "Plné dálkové ovládání", - t67: "Streamování v přímém přenosu", - t68: "Synchronizace uživatelských dat", - t69: "Instalovat Bambu Network plug-in", - t70: "", - t71: "Stahování", - t72: "Stahování se nezdařilo", - t73: "Instalace úspěšná.", - t74: "Restartovat", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "Síťový plug-in Bambu nebyl zjištěn. Klikněte na ", - t77: "zde", - t78: " k instalaci.", - t79: "Nepodařilo se nainstalovat plugin.", - t80: "Zkuste následující kroky:", - t81: "1, klikněte", - t82: "otevřete adresář plug-in", - t83: "2, Zavřete všechny otevřené Orca Slicer", - t84: "3, Smažte všechny soubory v adresáři plug-in", - t85: "4, znovu otevřete Orca Slicer a znovu nainstalujte zásuvný modul", - t86: "Zavřít", - t87: "Uživatelská příručka", - t88: "Odstranit", - t89: "Otevřít složku obsahující", - t90: "3D model", - t91: "Stáhnout 3D modely", - t92: "Vytvořil", - t93: "Přepracováno", - t94: "Sdíleno", - t95: "Informace o modelu", - t96: "Příslušenství", - t97: "Informace o profilu", - t98: "Název modelu", - t100: "Popis modelu", - t101: "Seznam součástek (BOM)", - t102: "Průvodce sestavením", - t103: "Jiné", - t104: "Název profilu", - t105: "Autor profilu", - t106: "Popis profilu", - t126: "Načtení probíhá……", - orca1: "Edit Project Info", - orca2: "No model information", - orca6: "Bambu Cloud", - }, - fr_FR: { - t1: "Bienvenue sur Orca Slicer", - t2: "Orca Slicer sera configuré en plusieurs étapes. Commençons !", - t3: "Accord d'utilisation", - t4: "Décliner", - t5: "Accepter", - t6: "Nous sollicitons votre aide pour améliorer
l'impression de chacun", - t7: "Autoriser l'envoi de données anonymes", - t8: "Retour", - t9: "Suivant", - t10: "Sélection de l'imprimante", - t11: "Tous", - t12: "Supprimer", - t13: "mm", - t14: "Sélection des filaments", - t15: "Imprimante", - t16: "Type de filament", - t17: "Fournisseur", - t18: "Erreur", - t19: "Au moins un filament doit être sélectionné.", - t20: "Voulez-vous utiliser le filament par défaut ?", - t21: "Oui", - t22: "Non", - t23: "Note de version", - t24: "Commencer", - t25: "Terminer", - t26: "Connexion", - t27: "Inscription", - t28: "Récent", - t29: "Mail", - t30: "Manuel", - t31: "Nouveau Projet", - t32: "Créer un nouveau projet", - t33: "Ouvrir un Projet", - t34: "hotspot", - t35: "Récemment ouvert", - t36: "OK", - t37: "Au moins une imprimante doit être sélectionnée.", - t38: "Annuler", - t39: "Confirmer", - t40: "Déconnexion du réseau, veuillez vérifier et réessayer plus tard.", - t47: "Veuillez sélectionner votre région de connexion", - t48: "Asie-Pacifique", - t49: "Chine", - t50: "Se déconnecter", - t52: "Passer", - t53: "Rejoindre", - t54: "Dans la communauté de l'impression 3D, nous apprenons des succès et des échecs des uns et des autres pour ajuster nos propres paramètres et paramètres de découpage. Orca Slicer suit le même principe et utilise l'apprentissage automatique pour améliorer ses performances à partir des succès et des échecs du grand nombre d'impressions de nos utilisateurs. Nous formons Orca Slicer à être plus intelligent en leur fournissant les données du monde réel. Si vous le souhaitez, ce service accédera aux informations de vos journaux d'erreurs et de vos journaux d'utilisation, qui peuvent inclure des informations décrites dans ", - t55: "Politique de confidentialité", - t56: ". Nous ne collecterons aucune donnée personnelle par laquelle un individu peut être identifié directement ou indirectement, y compris, sans s'y limiter, les noms, adresses, informations de paiement ou numéros de téléphone. En activant ce service, vous acceptez ces conditions et la déclaration sur la politique de confidentialité.", - t57: "", - t58: "", - t59: ".", - t60: "Europe", - t61: "Amérique du Nord", - t62: "Autres", - t63: "Après avoir changé de région, votre compte sera déconnecté. Veuillez vous reconnecter ensuite.", - t64: "Plug-in Bambu Network", - t65: "Veuillez noter que ces plugins ne sont pas développés ou maintenus par OrcaSlicer. Ils doivent être utilisés à votre propre discrétion et à vos propres risques.", - t66: "Commande à distance complète", - t67: "Diffusion en direct", - t68: "Synchronisation des données utilisateur", - t69: "Installer Bambu Network", - t70: "", - t71: "Téléchargement", - t72: "Échec du téléchargement", - t73: "Installation réussie.", - t74: "Redémarrer", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "Le plug-in Bambu Network n'est pas détecté. Cliquez ", - t77: "ici", - t78: " pour l'installer.", - t79: "Échec de l'installation du plug-in. ", - t80: "Essayez les étapes suivantes :", - t81: "1, Cliquez ", - t82: " pour ouvrir le répertoire des plug-ins", - t83: "2, Fermez toutes les fenêtres de Orca Slicer", - t84: "3, Supprimez tous les fichiers dans le répertoire du plug-in", - t85: "4, Relancez Orca Slicer et réinstallez le plug-in.", - t86: "Fermer", - t87: "Manuel d'utilisation", - t88: "Supprimer", - t89: "Ouvrir le dossier contenant", - t90: "Modèle 3D", - t91: "Télécharger des modèles 3D", - t92: "Créé par", - t93: "Remixé par", - t94: "Partagé par", - t95: "Informations sur le modèle", - t96: "Accessoires", - t97: "Informations de profil", - t98: "Nom du modèle", - t100: "Description du modèle", - t101: "BOM", - t102: "Guide d'assemblage", - t103: "Autre", - t104: "Nom du profil", - t105: "Auteur du profil", - t106: "Description du profil", - t109: "Filaments du système", - t110: "Filaments personnalisés", - t111: "Créer un nouveau filament", - t126: "Chargement en cours……", - orca1: "Modifier les informations du projet", - orca2: "Pas d'information sur le modèle", - wk1: "Démarrage rapide", - wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.", - wk3: "Workflow basé sur des projets", - wk4: "Orca Slicer met en avant un workflow de pointe pour véritablement réaliser un projet « tout en un ». Basé sur le format de projet 3MF grand public, il fournit une série de nouvelles fonctionnalités révolutionnaires, telles que la prise en charge de plusieurs plaques, un gestionnaire de ressources de projet et une vue d'assemblage/de pièce. Cela améliore considérablement l'efficacité des créateurs et des utilisateurs réguliers", - wk5: "Impression haute vitesse de qualité", - wk6: "Il est difficile d'imprimer à grande vitesse tout en maintenant une qualité élevée. Orca Slicer rend cela possible. « Arch Move » permet à la hotend de se déplacer en douceur et réduit les vibrations de la machine. Le refroidissement intelligent est basé sur des paramètres de refroidissement affinés pour chaque type de filament. Le « ralentissement automatique » pour les paroies en porte-à-faux permet d'éviter la déformation à grande vitesse.", - wk7: "Impression multi-couleur", - wk8: "Orca Slicer fournit des outils de colorisation polyvalents pour créer un modèle coloré. Vous pouvez librement ajouter/supprimer des filaments dans un projet et coloriser votre modèle avec différents pinceaux. Avant l'impression, chaque filament sera automatiquement mappé sur un emplacement AMS, sans avoir besoin de modifier manuellement le placement de la bobine dans l'AMS.", - wk9: "Guide de réglage des paramètres de découpage", - wk10: "Les fonctionnalités de gestion des paramètres de Orca Slicer offrent un contrôle très flexible et puissant sur le processus de découpage. Cet article présente l'organisation des paramètres et fournit quelques compétences pour tirer pleinement parti de ces fonctionnalités.", - wk11: "Contrôle et surveillance à distance", - wk12: "Orca Slicer prend en charge l'envoi du travail d'impression à votre imprimante via le réseau WAN/LAN, contrôlant et surveillant chaque aspect de votre imprimante 3D et des travaux d'impression. Si vous avez plusieurs imprimantes, vous pouvez facilement basculer entre elles dans la liste des périphériques.", - wk13: "Format STEP", - wk14: "Par rapport au format STL, le format STEP apporte des informations plus efficaces. Grâce à la grande précision de ce format, de nombreuses trajectoires d'extrusion peuvent être générées sous forme d'arcs. Il inclut également la relation d'assemblage de chaque pièce d'un modèle, qui peut être utilisée pour restaurer la vue d'assemblage après la coupe d'un modèle.", - wk15: "Texte 3D", - wk16: "Avec l'outil Texte 3D, les utilisateurs peuvent facilement créer diverses formes de texte 3D dans le projet, ce qui rend le modèle plus personnalisé. Orca Slicer fournit des dizaines de polices et prend en charge les styles gras et italique pour donner au texte une plus grande flexibilité.", - orca6: "Bambu Cloud", - }, - zh_CN: { - t1: "欢迎使用Orca Slicer", - t2: "Orca Slicer需要几步安装步骤,让我们开始吧!", - t3: "用户使用协议", - t4: "拒绝", - t5: "同意", - t6: "帮助提升Orca Slicer性能", - t7: "允许发送匿名数据", - t8: "上一步", - t9: "下一步", - t10: "选择打印机", - t11: "全部", - t12: "清空", - t13: "mm 喷嘴", - t14: "选择材料", - t15: "打印机", - t16: "材料类型", - t17: "供应商", - t18: "错误", - t19: "至少要选择一款材料。", - t20: "你希望使用默认的材料列表吗?", - t21: "是", - t22: "否", - t23: "发布说明", - t24: "开始", - t25: "结束", - t26: "登录", - t27: "注册", - t28: "近期", - t29: "商城", - t30: "使用手册", - t31: "新建项目", - t32: "创建一个新项目", - t33: "打开项目", - t34: "热点", - t35: "近期打开文件", - t36: "确定", - t37: "至少需要选择一款打印机。", - t38: "取消", - t39: "确定", - t40: "网络不通,请检查并稍后重试。", - t47: "请选择登录区域", - t48: "亚太", - t49: "中国", - t50: "退出登录", - t52: "忽略", - t53: "同意", - t54: "在3D打印社区,我们从彼此的成功和失败中学习调整自己的切片参数和设置。Orca Slicer遵循同样的原则,通过机器学习的方式从大量用户打印的成功和失败中获取经验,从而改善打印性能。我们正在通过向Orca Slicer提供真实世界的数据来训练他们变得更聪明。如果您愿意,此服务将访问您的错误日志和使用日志中的信息,其中可能包括", - t55: "隐私政策", - t56: "中描述的信息。我们不会收集任何可以直接或间接识别个人的个人数据,包括但不限于姓名、地址、支付信息或电话号码。启用此服务即表示您同意这些条款和有关隐私政策的声明。", - t57: "", - t58: "", - t59: "。", - t60: "欧洲", - t61: "北美", - t62: "其他", - t63: "切换区域后,你的账号会被登出。稍后请重新登录。", - t64: "Bambu网络插件", - t65: "注意:这些插件不是由OrcaSlicer开发或维护的。使用它们需自担风险", - t66: "强大的远程控制功能", - t67: "实时视频流", - t68: "用户数据同步", - t69: "安装Bambu网络插件", - t70: "", - t71: "正在下载", - t72: "下载失败", - t73: "安装成功。", - t74: "重启", - t75: "一些打印机厂商需要安装他们的专有插件才能与打印机通信。如果您使用这类打印机,请选择相应的插件", - t76: "没有发现Bambu网络插件,请", - t77: "下载", - t78: "并安装。", - t79: "安装插件失败。", - t80: "请尝试如下步骤:", - t81: "1, 点击", - t82: "打开插件所在目录", - t83: "2, 关闭所有Orca Slicer", - t84: "3, 删除插件所在目录下的所有文件", - t85: "4, 重新启动Orca Slicer并尝试安装插件", - t86: "关闭", - t87: "使用引导", - t88: "移除", - t89: "打开所在的文件夹", - t90: "3D 模型", - t91: "下载3D模型", - t92: "创作", - t93: "修改", - t94: "分享", - t95: "模型信息", - t96: "附件", - t97: "配置信息", - t98: "模型名称", - t100: "模型介绍", - t101: "物料清单", - t102: "装备指导", - t103: "其他", - t104: "配置名称", - t105: "配置作者", - t106: "配置介绍", - t107: "在线模型", - t108: "更多", - t109: "系统材料", - t110: "自建材料", - t111: "新建", - t112: "加入该计划", - t113: "您可以随时更改您的偏好。", - t126: "正在加载……", - wk1: "快速入门指南", - wk2: "本文介绍了Orca Slicer的最基本用法。它指导用户配置软件,创建项目,并逐步完成第一个打印任务。", - wk3: "基于项目的工作流", - wk4: "Orca Slicer提出了领先的工作流程,真正实现了“一体化”项目。基于主流的3MF项目格式,它提供了一系列革命性的新功能,如支持多盘、项目资源管理器和装配/零件视图。它可以大幅提高模型创作者及普通用户的使用效率。", - wk5: "质量卓越的高速打印", - wk6: "在保持高质量的前提下进行高速打印是非常具有挑战性的。Orca Slicer让这一切发生。支持“圆弧移动”特性使工具头移动更加顺滑,有效减少机器振动。基于不同材料类型的精细标定过的冷却控制参数,使得冷却过程可以自动开展。在悬垂区域进行“自动减速”,可防止高速打印时在此区域的外观瑕疵。", - wk7: "多色打印", - wk8: "Orca Slicer提供了多种着色工具来制作彩色模型。您可以在项目中自由添加/移除打印材料,并使用不同的笔刷为模型着色。开始打印时,打印任务中的各个材料将自动映射到匹配的AMS槽位,无需手动调整AMS中的料卷位置。", - wk9: "切片参数设置指南", - wk10: "Orca Slicer中的参数管理功能为切片过程提供了非常灵活和强大的控制。本文介绍了切片参数的组织分类和设置方法,并提供了一些使用技巧。", - wk11: "远程控制和监控", - wk12: "Orca Slicer支持通过WAN/LAN网络向打印机发送打印任务,控制和查看3D打印机和打印任务的各个方面。如果您有多台打印机,还可以在设备列表中轻松切换。", - wk13: "STEP格式", - wk14: "与STL相比,STEP带来了更多有效的信息。由于STEP的高精度,切片时可以生成更多的圆弧路径。STEP还包括模型每个零件的装配关系,可分割模型后恢复装配视图。", - wk15: "3D文本", - wk16: "使用3D文本工具,用户可以轻松地在项目中创建各种3D文本形状,使模型更加个性化。Orca Slicer提供了数十种字体,并支持粗体和斜体样式,使文本具有更大的灵活性。", - orca1: "编辑项目信息", - orca2: "该模型没有相关信息", - orca6: "Bambu Cloud", - }, - zh_TW: { - t1: "歡迎使用 Orca Slicer", - t2: "Orca Slicer 需要幾步安裝步驟,讓我們開始吧!", - t3: "使用者協議", - t4: "拒絕", - t5: "同意", - t6: "幫助提升 Orca Slicer 性能", - t7: "允許傳送匿名數據", - t8: "上一步", - t9: "下一步", - t10: "選擇3D列印機", - t11: "全部", - t12: "清空", - t13: "mm 噴嘴", - t14: "選擇線材", - t15: "3D列印機", - t16: "線材類型", - t17: "供應商", - t18: "錯誤", - t19: "至少要選擇一款線材。", - t20: "你希望使用預設的線材列表嗎?", - t21: "是", - t22: "否", - t23: "發布說明", - t24: "開始", - t25: "結束", - t26: "登入", - t27: "註冊", - t28: "最近", - t29: "商城", - t30: "使用手冊", - t31: "新建項目", - t32: "創建一個新項目", - t33: "打開項目", - t34: "熱點", - t35: "最近打開文件", - t36: "確定", - t37: "至少需要選擇一款3D列印機。", - t38: "取消", - t39: "確定", - t40: "網路不通,請檢查並稍後重試。", - t47: "請選擇登入區域", - t48: "亞太", - t49: "中國", - t50: "登出", - t52: "忽略", - t53: "同意", - t54: "在3D列印社區,我們從彼此的成功和失敗中學習調整自己的切片參數和設置。Orca Slicer 遵循同樣的原則,透過機器學習的方式從大量用戶列印的成功和失敗中獲取經驗,從而改善列印性能。我們正在通過向 Orca Slicer 提供真實世界的數據來訓練他們變得更聰明。如果您願意,此服務將訪問您的錯誤日誌和使用日誌中的資訊,其中可能包括", - t55: "隱私政策", - t56: "中描述的資訊。我們不會收集任何可以直接或間接識別個人的個人數據,包括但不限於姓名、地址、支付資訊或電話號碼。啟用此服務即表示您同意這些條款和有關隱私政策的聲明。", - t57: "", - t58: "", - t59: "。", - t60: "歐洲", - t61: "北美", - t62: "其他", - t63: "切換區域後,你的帳號會被登出。稍後請重新登入。", - t64: "Bambu網路插件", - t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", - t66: "強大的遠端控制功能", - t67: "即時影片串流", - t68: "使用者數據同步", - t69: "安裝 Bambu網路插件", - t70: "", - t71: "正在下載", - t72: "下載失敗", - t73: "安裝成功。", - t74: "重啟", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "沒有發現Bambu網路插件,請", - t77: "下載", - t78: "並安裝。", - t79: "安裝插件失敗。", - t80: "請嘗試如下步驟:", - t81: "1, 點擊", - t82: "打開插件所在目錄", - t83: "2, 關閉所有 Orca Slicer", - t84: "3, 刪除插件所在目錄下的所有文件", - t85: "4, 重新啟動 Orca Slicer 並嘗試安裝插件", - t86: "關閉", - t87: "使用引導", - t88: "移除", - t89: "打開所在的文件夾", - t90: "3D 模型", - t91: "下載3D模型", - t92: "Bambu聖誕小屋", - wk1: "快速入門指南", - wk2: "本文介紹了 Orca Slicer 的最基本用法。它指導用戶配置軟體,創建項目,並逐步完成第一個列印任務。", - wk3: "基於項目的工作流", - wk4: "Orca Slicer 提出了領先的工作流程,真正實現了“一體化”項目。基於主流的3MF項目格式,它提供了一系列革命性的新功能,如支持多盤、項目資源管理器和裝配/零件視圖。它可以大幅提高模型創作者及普通用戶的使用效率。", - wk5: "質量卓越的高速列印", - wk6: "在保持高品質的前提下進行高速列印是非常具有挑戰性的。Orca Slicer 讓這一切發生。支持“圓弧移動”特性使工具頭移動更加順滑,有效減少機器振動。基於不同線材類型的精細標定過的冷卻控制參數,使得冷卻過程可以自動開展。在懸垂區域進行“自動減速”,可防止高速列印時在此區域的外觀瑕疵。", - wk7: "多色列印", - wk8: "Orca Slicer 提供了多種著色工具來製作彩色模型。您可以在項目中自由添加/移除列印材料,並使用不同的筆刷為模型著色。開始列印時,列印任務中的各個線材將自動映射對應到 AMS 槽位,無需手動調整 AMS 中的線材位置。", - wk9: "切片參數設置指南", - wk10: "Orca Slicer 中的參數管理功能為切片過程提供了非常靈活和強大的控制。本文介紹了切片參數的組織分類和設置方法,並提供了一些使用技巧。", - wk11: "遠端控制和監控", - wk12: "Orca Slicer 支持透過無線網路/區域網路向3D列印機發送列印任務,控制和查看3D列印機和列印任務的各個方面。如果您有多台3D列印機,還可以在設備清單中輕鬆切換。", - wk13: "STEP格式", - wk14: "與 STL 相比,STEP 帶來了更多有效的資訊。由於 STEP 的高精度,切片時可以生成更多的圓弧路徑。STEP 還包括模型每個零件的組裝關係,可分割模型後恢復裝配視圖。", - wk15: "3D文本", - wk16: "使用3D文字工具,使用者可以輕鬆地在項目中建立各種3D文字形狀,使模型更加個性化。Orca Slicer 提供了數十種字體,並支援粗體和斜體樣式,使文字具有更大的靈活性。", - orca1: "編輯專案資訊", - orca2: "沒有模型相關資訊", - orca6: "Bambu Cloud", - }, - ru_RU: { - t1: "Приветствуем в Orca Slicer!", - t2: "Для настройки Orca Slicer необходимо пройти несколько этапов. Давайте начнём!", - t3: "Пользовательское соглашение", - t4: "Отказаться", - t5: "Принять", - t6: "Мы просим вашей помощи,
чтобы улучшить печать", - t7: "Разрешить отправку анонимных данных для совершенствования программы", - t8: "Назад", - t9: "Далее", - t10: "Выбор принтера", - t11: "Все", - t12: "Очистить", - t13: "мм сопло", - t14: "Выбор материала", - t15: "Принтер", - t16: "Тип материала", - t17: "Производитель", - t18: "Oшибка", - t19: "Должна быть выбрана хотя бы одна пластиковая нить.", - t20: "Выбрать пластиковые нити по умолчанию?", - t21: "Да", - t22: "Нет", - t23: "Информация о версии", - t24: "Начать", - t25: "Закончить", - t26: "Войти", - t27: "Регистрация", - t28: "Недавние", - t29: "Mall", - t30: "Инструкции", - t31: "Новый проект", - t32: "Создать новый проект", - t33: "Открыть проект", - t34: "точка доступа", - t35: "Недавно открытые", - t36: "OK", - t37: "Должен быть выбран хотя бы один принтер.", - t38: "Отмена", - t39: "Принять", - t40: "Сеть отключена. Проверьте подключение и попробуйте снова.", - t47: "Выбор региона", - t48: "Азиатско-Тихоокеанский регион", - t49: "Китай", - t50: "Выйти", - t52: "Пропустить", - t53: "Войти", - t54: "Для поиска наилучших параметров нарезки и улучшения печати участники сообщества 3D-печати учатся на успехах и неудачах друг друга. Orca Slicer следует тому же принципу и использует машинное обучение для улучшения своей работы на основе успешного и неудачного опыта печати наших пользователей. Мы обучаем Orca Slicer быть умнее на основе реальных данных. По вашему согласию эта служба получит доступ к вашим журналам ошибок и журналам использования, в которых содержатся сведения, описанные в ", - t55: "политике конфиденциальности", - t56: ". Мы не собираем никаких личных данных, которые могут прямо или косвенно идентифицировать отдельного человека, включая, помимо прочего, имена, адреса, платёжную информацию или номера телефонов. Разрешая отправку, вы соглашаетесь с этими условиями и заявлением о политике конфиденциальности.", - t57: "", - t58: "", - t59: ".", - t60: "Европа", - t61: "Северная Америка", - t62: "Другой", - t63: "После смены региона произойдёт выход из аккаунта и понадобится войти снова.", - t64: "Сетевой плагин Bambu", - t65: "Имейте в виду, что эти плагины не разрабатываются и не поддерживаются OrcaSlicer. Используйте их на свой страх и риск.", - t66: "Полное дистанционное управление", - t67: "Просмотр прямой трансляции с камеры", - t68: "Синхронизация данных пользователя", - t69: "Установить сетевой плагин Bambu", - t70: "", - t71: "Загрузка", - t72: "Загрузка не удалась", - t73: "Установка выполнена успешно.", - t74: "Перезагрузка", - t75: "Для связи с некоторыми моделями принтеров требуются проприетарные плагины. Выберите соответствующий плагин, если у вас такой принтер.", - t76: "Сетевой плагин Bambu не обнаружен. Нажмите ", - t77: "здесь", - t78: ", чтобы установить его.", - t79: "Ошибка установки плагина. ", - t80: "Попробуйте выполнить следующие действия:", - t81: "1, Нажмите ", - t82: " для открытия папки плагина", - t83: "2, Закройте все окна Orca Slicer", - t84: "3, Удалите все файлы в папке плагина", - t85: "4, Откройте Orca Slicer и снова установите плагин.", - t86: "Закрыть", - t87: "Инструкции", - t88: "Удалить", - t89: "Открыть папку с файлом", - t90: "3D-модель", - t91: "Скачать 3D-модели", - t92: "Автор", - t93: "Модифицировано", - t94: "Поделиться", - t95: "Информация о модели", - t96: "Прикреплённые файлы", - t97: "Информация о профиле", - t98: "Имя модели", - t100: "Описание модели", - t101: "Список материалов", - t102: "Памятка по сборке", - t103: "Прочее", - t104: "Имя профиля", - t105: "Профиль автора", - t106: "Описание профиля", - t107: "Модели в сети", - t108: "Больше", - t109: "Системные материалы", - t110: "Пользовательские материалы", - t111: "Создать новый", - t112: "Присоединяйтесь к программе", - t113: "Вы можете изменить свой выбор в любое время.", - t126: "Загрузка...", - orca1: "Изменить информацию", - orca2: "Информация отсутствует", - orca3: "Режим конфиденциальности", - orca4: "Это остановит передачу данных в облачные сервисы Bambu. Помешает только владельцам Bambu Lab, не использующим режим «Только LAN».", - orca5: "Включить режим конфиденциальности", - orca6: "Bambu Cloud", - }, - ko_KR: { - t1: "Orca Slicer에 오신 것을 환영합니다", - t2: "Orca Slicer는 여러 단계로 설정됩니다. 시작!", - t3: "사용자 약관", - t4: "거부", - t5: "동의", - t6: "모든 사람의 출력 품질 개선을 위해
여러분의 도움이 필요합니다.", - t7: "익명 데이터 전송 허용", - t8: "뒤로", - t9: "다음", - t10: "프린터 선택", - t11: "전체", - t12: "전체 해제", - t13: "mm 노즐", - t14: "필라멘트 선택", - t15: "프린터", - t16: "필라멘트 종류", - t17: "공급업체", - t18: "오류", - t19: "하나 이상의 필라멘트를 선택해야 합니다.", - t20: "기본 필라멘트를 사용하시겠습니까?", - t21: "예", - t22: "아니오", - t23: "릴리스 노트", - t24: "시작", - t25: "완료", - t26: "로그인", - t27: "등록", - t28: "최근", - t29: "상점", - t30: "메뉴얼", - t31: "새 프로젝트", - t32: "새 프로젝트 생성", - t33: "프로젝트 열기", - t34: "핫스팟", - t35: "최근 사용", - t36: "예", - t37: "하나 이상의 프린터를 선택해야 합니다.", - t38: "취소", - t39: "수락", - t40: "네트워크 연결이 끊겼습니다. 확인하고 나중에 다시 시도하세요.", - t47: "로그인 지역을 선택해주세요", - t48: "아시아 태평양", - t49: "중국", - t50: "로그 아웃", - t52: "건너뛰기", - t53: "가입", - t54: "3D 프린팅 커뮤니티에서 우리는 각자의 슬라이싱 매개변수와 설정을 조정하는 과정에서 서로의 성공과 실패를 통해 배웁니다. Orca Slicer는 동일한 원칙을 따르며 기계 학습을 사용하여 사용자의 방대한 출력물의 성공과 실패를 통해 성능을 향상시킵니다. 우리는 실제 데이터를 제공하여 Orca Slicer가 더욱 똑똑해지도록 교육하고 있습니다. 귀하가 원할 경우 이 서비스는 오류 로그 및 사용 로그의 정보에 액세스합니다. 여기에는 다음에 설명된 정보가 포함될 수 있습니다.", - t55: "개인 정보 정책", - t56: ". 당사는 이름, 주소, 결제 정보 또는 전화번호를 포함하되 이에 국한되지 않고 개인을 직간접적으로 식별할 수 있는 개인 데이터를 수집하지 않습니다. 이 서비스를 활성화함으로써 귀하는 본 약관과 개인정보 보호정책에 대한 설명에 동의하게 됩니다.", - t57: "", - t58: "", - t59: ".", - t60: "유럽", - t61: "북미", - t62: "다른 지역", - t63: "지역을 변경하면 계정이 로그아웃됩니다. 나중에 다시 로그인해 주세요.", - t64: "Bambu 네트워크 플러그인", - t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", - t66: "전체 원격 제어", - t67: "라이브뷰 스트리밍", - t68: "사용자 데이터 동기화", - t69: "Bambu 네트워크 플러그인 설치", - t70: "", - t71: "다운로드 중", - t72: "다운로드 실패", - t73: "설치 완료.", - t74: "재시작", - t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", - t76: "Bambu 네트워크 플러그인이 감지되지 않습니다. 여기를 ", - t77: "클릭", - t78: " 하여 설치하세요.", - t79: "플러그인을 설치하지 못했습니다. ", - t80: "다음 단계를 시도해 보세요:", - t81: "1, 클릭 ", - t82: " 하여 플러그인 디렉토리를 엽니다.", - t83: "2, 열려 있는 모든 Orca Slicer를 닫습니다.", - t84: "3, 플러그인 디렉터리 아래의 모든 파일 삭제합니다", - t85: "4, Orca Slicer를 다시 열고 플러그인을 다시 설치하세요.", - t86: "닫기", - t87: "사용자 메뉴얼", - t88: "제거", - t89: "포함된 폴더 열기", - t90: "3D 모델", - t91: "3D 모델 다운로드", - t92: "Bambu Christmas Cabin", - t93: "프린터 연결", - t94: "장치를 보려면 프린터 연결을 설정하세요.", - t126: "로딩 중……", - orca1: "Edit Project Info", - orca2: "No model information", - orca6: "Bambu Cloud", - }, - tr_TR: { - t1: "Orca Slicer'a hoş geldiniz", - t2: "Orca Dilimleyici birkaç adımda kurulacaktır. Hadi başlayalım!", - t3: "Kullanıcı Sözleşmesi", - t4: "Reddet", - t5: "Onayla", - t6: "Herkesin yazdırma işini iyileştirmek için
yardımınızı rica ediyoruz", - t7: "Anonim verilerin gönderilmesine izin ver", - t8: "Geri", - t9: "İleri", - t10: "Yazıcı Seçimi", - t11: "Hepsi", - t12: "Hepsini temizle", - t13: "mm nozul", - t14: "Filament Seçimi", - t15: "Yazıcı", - t16: "Filament türü", - t17: "Üretici", - t18: "Hata", - t19: "En az bir filament seçilmelidir.", - t20: "Varsayılan filamenti kullanmak ister misiniz ?", - t21: "Evet", - t22: "Hayır", - t23: "Sürüm notu", - t24: "Başla", - t25: "Bitir", - t26: "Giriş Yap", - t27: "Kayıt Ol", - t28: "Son", - t29: "Mağaza", - t30: "Manual", - t31: "Yeni proje", - t32: "Yeni proje oluştur", - t33: "Projeyi Aç", - t34: "Erişim noktası", - t35: "Yakın zamanda açıldı", - t36: "OK", - t37: "En az bir yazıcı seçilmelidir.", - t38: "İptal Et", - t39: "Onayla", - t40: "Ağ bağlantısı kesildi, lütfen kontrol edin ve daha sonra tekrar deneyin.", - t47: "Lütfen giriş bölgenizi seçin", - t48: "Asya-Pasifik", - t49: "Çin", - t50: "Çıkış Yap", - t52: "Atla", - t53: "Katıl", - t54: "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. Orca Slicer da aynı prensibi takip ediyor ve kullanıcılarımızın yaptığı çok sayıda baskının başarı ve başarısızlıklarından performansını artırmak için makine öğrenimini kullanıyor. Orca Slicer'ı gerçek dünya verileriyle besleyerek daha akıllı olması için eğitiyoruz. İsterseniz bu hizmet, hata günlüklerinizden ve kullanım günlüklerinizden, burada açıklanan bilgileri de içerebilecek bilgilere erişecektir. ", - t55: "Gizlilik Politikası", - t56: ". İsimler, adresler, ödeme bilgileri veya telefon numaraları dahil ancak bunlarla sınırlı olmamak üzere, bir bireyin doğrudan veya dolaylı olarak tanımlanmasını sağlayacak hiçbir Kişisel Veri toplamayacağız. Bu hizmeti etkinleştirerek bu şartları ve Gizlilik Politikasına ilişkin beyanı kabul etmiş olursunuz.", - t57: "", - t58: "", - t59: ".", - t60: "Avrupa", - t61: "Kuzey Amerika", - t62: "Diğerleri", - t63: "Bölgeyi değiştirdikten sonra hesabınızdan çıkış yapılacaktır. Lütfen daha sonra tekrar giriş yapın.", - t64: "Bambu Ağı eklentisi", - t65: "Lütfen bu eklentilerin OrcaSlicer tarafından geliştirilmediğini veya bakımının yapılmadığını unutmayın. Kendi takdirinize ve riskinize göre kullanılmalıdırlar.", - t66: "Tam uzaktan kontrol", - t67: "Canlı görüntü akışı", - t68: "Kullanıcı veri senkronizasyonu", - t69: "Bambu Ağı eklentisini yükleyin", - t70: "", - t71: "İndiriliyor", - t72: "İndirme başarısız oldu", - t73: "Kurulum başarılı oldu.", - t74: "Tekrar başlat", - t75: "Bazı yazıcı üreticileri, yazıcılarıyla iletişim için özel eklentilere ihtiyaç duyar. Bu tür yazıcılar kullanıyorsanız lütfen ilgili eklentiyi seçin.", - t76: "Bambu Ağı eklentisi algılanmadı. Yüklemek ", - t77: "için ", - t78: " burayı tıklayın.", - t79: "Eklenti yüklenemedi. ", - t80: "Aşağıdaki adımları deneyin:", - t81: "1, Eklenti ", - t82: " dizinini açmak için tıklayın", - t83: "2, Tüm açık Orca slicerı kapatın", - t84: "3, Eklenti dizini altındaki tüm dosyaları silin", - t85: "4, Orca Slicer'ı yeniden açın ve eklentiyi tekrar yükleyin", - t86: "Kapat", - t87: "Kullanım kılavuzu", - t88: "Kaldır", - t89: "Dosyayı içeren klasörü açınız", - t90: "3D Model", - t91: "3D modelleri indirin", - t92: "Oluşturan", - t93: "Değiştiren", - t94: "Paylaşan", - t95: "Model Bilgileri", - t96: "Aksesuarlar", - t97: "Profil Bilgisi", - t98: "Model adı", - t100: "Model açıklaması", - t101: "Malzeme Listesi", - t102: "Montaj Kılavuzu", - t103: "Diğer", - t104: "Profil ismi", - t105: "Profil Yazarı", - t106: "Profil açıklaması", - t107: "Çevrimiçi Modeller", - t108: "DAHA FAZLA", - t109: "Sistem Filamentleri", - t110: "Özel Filamentler", - t111: "Yeni Oluştur", - t112: "Programa Katılın", - t113: "Tercihinizi istediğiniz zaman değiştirebilirsiniz.", - t126: "Yükleme devam ediyor……", - orca1: "Proje Bilgilerini Düzenle", - orca2: "Model bilgisi yok", - orca3: "Gizli Mod", - orca4: "Bu, Bambu'nun bulut hizmetlerine veri iletimini durdurur. BBL makinelerini kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle açabilir.", - orca5: "Gizli Modu etkinleştirin.", - orca6: "Bambu Cloud", - }, - pl_PL: { - t1: "Witamy w Orca Slicer", - t2: "Orca Slicer zostanie skonfigurowany w kilku krokach. Zacznijmy!", - t3: "Umowa użytkownika", - t4: "Nie zgadzam się", - t5: "Zgadzam się", - t6: "Uprzejmie prosimy o pomoc w ulepszaniu
druku dla każdego", - t7: "Zezwól na wysyłanie anonimowych danych", - t8: "Wstecz", - t9: "Dalej", - t10: "Wybór drukarki", - t11: "Wszystkie", - t12: "Wyczyść wszystko", - t13: "mm dysza", - t14: "Wybór filamentu", - t15: "Drukarka", - t16: "Typ filamentu", - t17: "Dostawca", - t18: "Błąd", - t19: "Przynajmniej jeden filament musi być wybrany.", - t20: "Czy chcesz użyć domyślnego filamentu?", - t21: "Tak", - t22: "Nie", - t23: "Informacje o wydaniu", - t24: "Rozpocznij", - t25: "Zakończ", - t26: "Logowanie", - t27: "Rejestracja", - t28: "Ostatnie", - t29: "Centrum", - t30: "Instrukcja", - t31: "Nowy Projekt", - t32: "Utwórz nowy projekt", - t33: "Otwórz Projekt", - t34: "hotspot", - t35: "Ostatnio otwarte", - t36: "OK", - t37: "Przynajmniej jedna drukarka musi być wybrana.", - t38: "Anuluj", - t39: "Potwierdź", - t40: "Rozłączenie sieci, proszę sprawdzić i spróbować ponownie później.", - t47: "Proszę wybrać swój region logowania", - t48: "Azja-Pacyfik", - t49: "Chiny", - t50: "Wyloguj", - t52: "Pomiń", - t53: "Dołącz", - t54: "W społeczności druku 3D uczymy się od sukcesów i porażek innych, aby dostosować nasze własne parametry i ustawienia krojenia. Orca Slicer podąża tą samą zasadą i wykorzystuje uczenie maszynowe do poprawy swojej wydajności na podstawie sukcesów i porażek dużej liczby wydruków naszych użytkowników. Szkolimy Orca Slicer, aby był mądrzejszy, dostarczając mu danych z rzeczywistego świata. Jeśli chcesz, ta usługa uzyska dostęp do informacji z Twoich logów błędów i logów użytkowania, które mogą zawierać informacje opisane w ", - t55: "Polityka Prywatności", - t56: ". Nie będziemy zbierać żadnych Danych Osobowych, przez które można bezpośrednio lub pośrednio zidentyfikować osobę, w tym bez ograniczeń nazwisk, adresów, informacji o płatnościach lub numerów telefonów. Aktywując tę usługę, zgadzasz się na te warunki i oświadczenie dotyczące Polityki Prywatności.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "Ameryka Północna", - t62: "Inne", - t63: "Po zmianie regionu, zostaniesz wylogowany z konta. Proszę zaloguj się ponownie później.", - t64: "Wtyczka Bambu Network", - t65: "Proszę mieć świadomość, że te wtyczki nie są rozwijane ani utrzymywane przez OrcaSlicer. Powinny być używane na własne ryzyko i z rozwagą.", - t66: "Pełna kontrola zdalna", - t67: "Transmisja na żywo", - t68: "Synchronizacja danych użytkownika", - t69: "Zainstaluj wtyczkę Bambu Network", - t70: "", - t71: "Pobieranie", - t72: "Nieudane pobieranie", - t73: "Instalacja zakończona sukcesem.", - t74: "Uruchom ponownie", - t75: "Niektórzy dostawcy drukarek wymagają własnych wtyczek do komunikacji ze swoimi drukarkami. Proszę wybrać odpowiednią wtyczkę, jeśli korzystasz z takich drukarek.", - t76: "Wtyczka Bambu Network nie wykryta. Kliknij ", - t77: "tutaj", - t78: " aby zainstalować.", - t79: "Nie udało się zainstalować wtyczki. ", - t80: "Spróbuj następujących kroków:", - t81: "1, Kliknij ", - t82: " aby otworzyć katalog wtyczek", - t83: "2, Zamknij wszystkie otwarte Orca Slicer", - t84: "3, Usuń wszystkie pliki z katalogu wtyczek", - t85: "4, Ponownie otwórz Orca Slicer i zainstaluj wtyczkę ponownie", - t86: "Zamknij", - t87: "Instrukcja użytkownika", - t88: "Usuń", - t89: "Otwórz folder zawierający", - t90: "Model 3D", - t91: "Pobierz modele 3D", - t92: "Utworzone przez", - t93: "Połączenie z drukarką", - t94: "Proszę skonfigurować połączenie z drukarką, aby wyświetlić urządzenie.", - t95: "Informacje o modelu", - t96: "Akcesoria", - t97: "Informacje o profilu", - t98: "Nazwa modelu", - t100: "Opis modelu", - t101: "BOM", - t102: "Przewodnik montażu", - t103: "Inne", - t104: "Nazwa profilu", - t105: "Autor profilu", - t106: "Opis profilu", - t107: "Modele online", - t108: "WIĘCEJ", - t109: "Systemowe filamenty", - t110: "Niestandardowe filamenty", - t111: "Utwórz nowy", - t112: "Dołącz do programu", - t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.", - t126: "Ładowanie trwa……", - orca1: "Edytuj informacje o projekcie", - orca2: "Brak informacji o modelu", - orca3: "Tryb «Niewidzialny»", - orca4: "To wyłączy przesyłanie danych do usług chmurowych Bambu. Użytkownicy, którzy nie korzystają z maszyn BBL lub używają tylko trybu LAN, mogą bez obaw włączyć tę opcję.", - orca5: "Włącz tryb «Niewidzialny»", - orca6: "Bambu Cloud", - }, - pt_BR: { - t1: "Bem-vindo ao Orca Slicer", - t2: "Orca Slicer será configurado em várias etapas. Vamos começar!", - t3: "Termos de Uso", - t4: "Discordo", - t5: "Concordo", - t6: "Nós pedimos gentilmente sua ajuda para melhorar a impressão de todos.
Venha e junte-se ao nosso Programa de Melhoria de Experiência do Usuário", - t7: "Juntar-se ao nosso Programa de Melhoria de Experiência do Usuário", - t8: "Voltar", - t9: "Próximo", - t10: "Seleção de Impressora", - t11: "Tudo", - t12: "Limpar tudo", - t13: "mm nozzle", - t14: "Seleção de Filamento", - t15: "Impressora", - t16: "Tipo de Filamento", - t17: "Fabricante", - t18: "Erro", - t19: "Pelo menos um filamento deve ser selecionado.", - t20: "Você deseja usar o filamento padrão?", - t21: "Sim", - t22: "Não", - t23: "Notas de Atualização", - t24: "Vamos Começar", - t25: "Terminar", - t26: "Login", - t27: "Registrar", - t28: "Recente", - t29: "Loja", - t30: "Manual", - t31: "Novo Projeto", - t32: "Criar Novo Projeto", - t33: "Abrir Projeto", - t34: "hotspot", - t35: "Aberto Recentemente", - t36: "OK", - t37: "Pelo menos uma impressora deve ser selecionada.", - t38: "Cancelar", - t39: "Confirmar", - t40: "Conexão desconectada, por favor cheque e tente novamente.", - t47: "Por favor, selecione sua região de login", - t48: "Asia-Pacifico", - t49: "China", - t50: "Desconectar", - t52: "Pular", - t53: "Juntar", - t54: "Na comunidade de Impressão 3D, aprendemos com os sucessos e falhas uns dos outros para ajustar nossos próprios parâmetros e configurações de fatiamento. O Orca Slicer segue o mesmo princípio e utiliza aprendizado de máquina para melhorar seu desempenho com base nos sucessos e falhas de um grande número de impressões realizadas por nossos usuários. Estamos treinando o Orca Slicer para ser mais inteligente, alimentando-o com dados do mundo real. Se você concordar, este serviço acessará informações de seus registros de erros e registros de uso, que podem incluir informações descritas em…", - t55: "Política de Privacidade", - t56: ". Não coletaremos nenhum dado pessoal pelo qual um indivíduo possa ser identificado diretamente ou indiretamente, incluindo, sem limitação, nomes, endereços, informações de pagamento ou números de telefone. Ao habilitar este serviço, você concorda com estes termos e com a declaração sobre a Política de Privacidade.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "America do Norte", - t62: "Outras", - t63: "Após alterar sua região, sua conta será desconectada. Por favor faça login novamente mais tarde.", - t64: "Plugins Proprietários", - t65: "Por favor seja cuidadoso estes plugins não são desenvolvidos ou mantidos por OrcaSlicer. Eles devem ser usados por sua conta e risco.", - t66: "Controle remoto total", - t67: "Transmissão Ao Vivo", - t68: "Sincronização de Dados do Usuário", - t69: "Instalar Bambu Network plug-in", - t70: "", - t71: "Baixando", - t72: "Falha baixando", - t73: "Instalação concluída.", - t74: "Reiniciar", - t75: "Algumass fabricantes de impressoras exigem plugins proprietários para comunicação com suas impressoras. Se você utiliza tais impressoras, selecione o plug-in correspondente.", - t76: "Bambu Network plug-in não detectado. Clique ", - t77: "Aqui", - t78: " para instalar isto.", - t79: "Instalação do plug-in falhou. ", - t80: "Tente os seguintes passos:", - t81: "1, Clique ", - t82: " para abrir a pasta do plug-in", - t83: "2, Feche totalmente o Orca Slicer", - t84: "3, Delete todos os arquivos na pasta do plug-in", - t85: "4, Reabra o Orca Slicer e instale o plug-in novamente", - t86: "Fechar", - t87: "Manual de Usuário", - t88: "Remover", - t89: "Abrir pasta de Conteúdo", - t90: "Modelo 3D", - t91: "Baixar Modelos 3D", - t92: "Criado por", - t93: "Remixado por", - t94: "Compartilhado por", - t95: "Informações do Modelo", - t96: "Acessórios", - t97: "Informações do Perfil", - t98: "Nome do Modelo", - t100: "Descrição do Modelo", - t101: "BOM", - t102: "Guia de Montagem", - t103: "Outro", - t104: "Nome do Perfil", - t105: "Autor do Perfil", - t106: "Descrição do Perfil", - t107: "Modelos Online", - t108: "MAIS", - t109: "Filamentos do Sistema", - t110: "Filamentos Personalizados", - t111: "Criar Novo", - t112: "Junte-se ao Programa", - t113: "Você pode alterar sua escolha nas Preferências a qualquer momento", - t126: "Carregamento em andamento……", - orca1: "Editar Info do Projeto", - orca2: "Sem informação do modelo", - orca3: "Modo Furtivo", - orca4: "Isso interrompe a transmissão de dados para os serviços de nuvem da Bambu. Usuários que não usam máquinas BBL ou usam somente o modo LAN podem ativar essa função com segurança.", - orca5: "Habilita Modo Furtivo.", - orca6: "Bambu Cloud", - }, - lt_LT: { - t1: "Pasisveikinkite su Orca Slicer", - t2: "Orca Slicer bus nustatyta per kelis žingsnius. Pradėkime!", - t3: "Naudotojo sutartis", - t4: "Nesutinku", - t5: "Sutinku", - t6: "Maloniai prašome jūsų pagalbos, kad pagerintume visų spausdinimą.
Prisijunkite prie mūsų klientų patirties gerinimo programos", - t7: "Prisijunkite prie mūsų klientų patirties gerinimo programos", - t8: "Atgal", - t9: "Pirmyn", - t10: "Spausdintuvo pasirinkimas", - t11: "Visi", - t12: "Išvalyti visus", - t13: "mm purkštukas", - t14: "Gijos pasirinkimas", - t15: "Spausdintuvas", - t16: "Gijos tipas", - t17: "Gamintojas", - t18: "Klaida", - t19: "Turi būti pasirinkta bent viena gija.", - t20: "Ar norite naudoti numatytąją giją?", - t21: "Taip", - t22: "Ne", - t23: "Išleidimo pastabos", - t24: "Pradėti", - t25: "Pabaigti", - t26: "Prisijungti", - t27: "Prisiregistruoti", - t28: "Naujausi", - t29: "Pirkti", - t30: "Rankinis", - t31: "Naujas projektas", - t32: "Sukurti naują projektą", - t33: "Atverti projektą", - t34: "Prieigos taškas", - t35: "Neseniai atidaryti", - t36: "Gerai", - t37: "Turi būti pasirinktas bent vienas spausdintuvas.", - t38: "Atšaukti", - t39: "Patvirtinti", - t40: "Tinklas atjungtas, patikrinkite ir bandykite vėliau.", - t47: "Pasirinkite prisijungimo regioną", - t48: "Azija-Ramusis vandenynas", - t49: "Kinija", - t50: "Atsijungti", - t52: "Praleisti", - t53: "Prisijungti", - t54: "3D spausdinimo bendruomenėje mokomės vieni iš kitų sėkmių ir nesėkmių, kad galėtume pritaikyti savo pjaustymo parametrus ir nustatymus. Orca Slicer vadovaujasi tuo pačiu principu ir naudoja mašininį mokymąsi, kad pagerintų savo veikimą, remdamasi daugybės mūsų naudotojų atspaudų sėkmėmis ir nesėkmėmis. Maitindami Orca Slicer realaus pasaulio duomenimis, mokome ją būti protingesne. Jei pageidaujate, ši paslauga pasieks informaciją iš jūsų klaidų žurnalų ir naudojimo žurnalų, į kuriuos gali būti įtraukta informacija, aprašyta ", - t55: "privatumo politikoje", - t56: ". Nerinksime jokių asmens duomenų, pagal kuriuos galima tiesiogiai ar netiesiogiai nustatyti asmens tapatybę, įskaitant, bet neapsiribojant vardus, adresus, mokėjimo informaciją ar telefono numerius. Įjungdami šią paslaugą sutinkate su šiomis sąlygomis ir privatumo politikos nuostatomis.", - t57: "", - t58: "", - t59: ".", - t60: "Europa", - t61: "Šiaurės Amerika", - t62: "Kiti", - t63: "Pakeitus regioną, jūsų paskyra bus išregistruota. Vėliau vėl prisijunkite.", - t64: "Patentuoti papildiniai", - t65: "Atkreipkite dėmesį, kad OrcaSlicer šių papildinių nesukuria ir neprižiūri. Juos turėtumėte naudoti savo nuožiūra ir rizika.", - t66: "Pilnas nuotolinis valdymas", - t67: "Tiesioginė transliacija", - t68: "Naudotojo duomenų sinchronizavimas", - t69: "Įdiegti Bambu tinklo papildinį", - t70: "", - t71: "Atsisiunčiama", - t72: "Nepavyko atsisiųsti", - t73: "Diegimas sėkmingas.", - t74: "Paleisti iš naujo", - t75: "Kai kurie spausdintuvų gamintojai reikalauja patentuotų priedų, kad būtų galima bendrauti su jų spausdintuvais. Jei naudojate tokius spausdintuvus, pasirinkite atitinkamą įskiepį.", - t76: "Neaptiktas Bambu tinklo papildinys. Spustelėkite ", - t77: "čia", - t78: " jo diegimui.", - t79: "Nepavyko įdiegti papildinio. ", - t80: "Išbandykite šiuos žingsnius:", - t81: "1, Spustelkite ", - t82: " atidaryti papildinių katalogą", - t83: "2, Uždarykite visas veikiančias Orca Slicer programas", - t84: "3, Ištrinkite visus failus iš papildinių katalogo", - t85: "4, Iš naujo atverkite OrcaSlicer ir iš naujo įdiekite papildinį", - t86: "Užverti", - t87: "Naudotojo vadovas", - t88: "Pašalinti", - t89: "Atidaryti katalogą, kuriame yra", - t90: "3D modelis", - t91: "Atsisiųsti 3D modelius", - t92: "Sukurta", - t93: "Perkurta", - t94: "Pasidalinta", - t95: "Modelio informacija", - t96: "Priedai", - t97: "Profilio informacija", - t98: "Modelio pavadinimas", - t100: "Modelio aprašymas", - t101: "BOM", - t102: "Surinkimo vadovas", - t103: "Kita", - t104: "Profilio pavadinimas", - t105: "Profilio autorius", - t106: "Profilio aprašymas", - t107: "Modeliai internete", - t108: "DAUGIAU", - t109: "Sistemos gijos", - t110: "Pasirinktinės gijos", - t111: "Sukurti naują", - t112: "Prisijungti prie programos", - t113: "Savo pasirinkimą galite bet kada pakeisti.", - orca1: "Redaguoti projekto informaciją", - orca2: "Nėra informacijos apie modelį", - orca3: "Slaptas režimas", - orca4: "Tai sustabdo duomenų perdavimą į Bambu debesijos paslaugas. Vartotojai, kurie nenaudoja BBL mašinų arba naudoja tik LAN režimą, gali drąsiai įjungti šią funkciją.", - orca5: "Įjungti slaptą režimą.", - orca6: "Bambu Cloud", - }, -}; - -var LANG_COOKIE_NAME = "BambuWebLang"; -var LANG_COOKIE_EXPIRESECOND = 365 * 86400; - -function TranslatePage() { - let strLang = GetQueryString("lang"); - if (strLang != null) { - //setCookie(LANG_COOKIE_NAME,strLang,LANG_COOKIE_EXPIRESECOND,'/'); - localStorage.setItem(LANG_COOKIE_NAME, strLang); - } else { - //strLang=getCookie(LANG_COOKIE_NAME); - strLang = localStorage.getItem(LANG_COOKIE_NAME); - } - - //alert(strLang); - - if (!LangText.hasOwnProperty(strLang)) strLang = "en"; - - let AllNode = $(".trans"); - let nTotal = AllNode.length; - for (let n = 0; n < nTotal; n++) { - let OneNode = AllNode[n]; - - let tid = $(OneNode).attr("tid"); - if (LangText[strLang].hasOwnProperty(tid)) { - $(OneNode).html(LangText[strLang][tid]); - } - } -} - +var LangText = { + en: { + t1: "Welcome to Orca Slicer", + t2: "Orca Slicer will be setup in several steps. Let's start!", + t3: "User Agreement", + t4: "Disagree", + t5: "Agree", + t6: "We kindly request your help to improve everyone's printing.
Come and Join our Customer Experience Improvement Program", + t7: "Join our Customer Experience Improvement Program", + t8: "Back", + t9: "Next", + t10: "Printer Selection", + t11: "All", + t12: "Clear all", + t13: "mm nozzle", + t14: "Filament Selection", + t15: "Printer", + t16: "Filament type", + t17: "Vendor", + t18: "Error", + t19: "At least one filament must be selected.", + t20: "Do you want to use default filament ?", + t21: "Yes", + t22: "No", + t23: "Release note", + t24: "Get Started", + t25: "Finish", + t26: "Login", + t27: "Register", + t28: "Recent", + t29: "Mall", + t30: "Manual", + t31: "New Project", + t32: "Create new project", + t33: "Open Project", + t34: "hotspot", + t35: "Recently opened", + t36: "OK", + t37: "At least one printer must be selected.", + t38: "Cancel", + t39: "Confirm", + t40: "Network disconnect, please check and try again later.", + t47: "Please select your login region", + t48: "Asia-Pacific", + t49: "China", + t50: "Log out", + t52: "Skip", + t53: "Join", + t54: "In the 3D Printing community, we learn from each other's successes and failures to adjust our own slicing parameters and settings. Orca Slicer follows the same principle and uses machine learning to improve its performance from the successes and failures of the vast number of prints by our users. We are training Orca Slicer to be smarter by feeding them the real-world data. If you are willing, this service will access information from your error logs and usage logs, which may include information described in ", + t55: "Privacy Policy", + t56: ". We will not collect any Personal Data by which an individual can be identified directly or indirectly, including without limitation names, addresses, payment information, or phone numbers. By enabling this service, you agree to these terms and the statement about Privacy Policy.", + t57: "", + t58: "", + t59: ".", + t60: "Europe", + t61: "North America", + t62: "Others", + t63: "After changing the region, your account will be logged out. Please log in again later.", + t64: "Proprietary Plugins", + t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", + t66: "Full remote control", + t67: "Liveview streaming", + t68: "User data synchronization", + t69: "Install Bambu Network plug-in", + t70: "", + t71: "Downloading", + t72: "Downloading failed", + t73: "Installation successful.", + t74: "Restart", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "Bambu Network plug-in not detected. Click ", + t77: "here", + t78: " to install it.", + t79: "Failed to install plug-in. ", + t80: "Try the following steps:", + t81: "1, Click ", + t82: " to open the plug-in directory", + t83: "2, Close all open Orca Slicer", + t84: "3, Delete all files under the plug-in directory", + t85: "4, Reopen Orca Slicer and install the plug-in again", + t86: "Close", + t87: "User Manual", + t88: "Remove", + t89: "Open Containing Folder", + t90: "3D Model", + t91: "Download 3D models", + t92: "Create by", + t93: "Remixed by", + t94: "Shared by", + t95: "Model Information", + t96: "Accessories", + t97: "Profile Information", + t98: "Model name", + t100: "Model description", + t101: "BOM", + t102: "Assembly Guide", + t103: "Other", + t104: "Profile name", + t105: "Profile Author", + t106: "Profile description", + t107: "Online Models", + t108: "MORE", + t109: "System Filaments", + t110: "Custom Filaments", + t111: "Create New", + t112: "Join the Program", + t113: "You may change your choice in preference anytime.", + t126: "Loading……", + orca1: "Edit Project Info", + orca2: "No model information", + orca3: "Stealth Mode", + orca4: "This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function.", + orca5: "Enable Stealth Mode.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + ca_ES: { + t1: "Benvingut a Orca Slicer", + t2: "Orca Slicer es configurarà en diversos passos. Comencem!", + t3: "Acord de l'Usuari", + t4: "No accepto", + t5: "Accepto", + t6: "Sol·licitem la vostra ajuda per millorar la impressió de tothom.
Vine i uneix-te al nostre Programa de Millora de l'Experiència del Client", + t7: "Uneix-te al nostre Programa de Millora de l'Experiència del Client", + t8: "Enrere", + t9: "Següent", + t10: "Selecció d'Impressora", + t11: "Totes", + t12: "Netejar tot", + t13: "mm broquet", + t14: "Selecció de Filament", + t15: "Impressora", + t16: "Tipus de filament", + t17: "Proveïdor", + t18: "Error", + t19: "S'ha de seleccionar almenys un filament.", + t20: "Vols utilitzar el filament per defecte?", + t21: "sí", + t22: "no", + t23: "Nota de llançament", + t24: "Comença", + t25: "Finalitzar", + t26: "Iniciar sessió", + t27: "Registrar", + t28: "Recent", + t29: "Botiga", + t30: "Manual", + t31: "Nou Projecte", + t32: "Crear nou projecte", + t33: "Obrir Projecte", + t34: "hotspot", + t35: "Obert recentment", + t36: "D'acord", + t37: "S'ha de seleccionar almenys una impressora.", + t38: "Cancel·lar", + t39: "Confirmar", + t40: "Desconnexió de la xarxa, si us plau comprova i intenta-ho de nou més tard.", + t47: "Si us plau selecciona la teva regió d'inici de sessió", + t48: "Àsia-Pacífic", + t49: "Xina", + t50: "Tancar sessió", + t52: "Saltar", + t53: "Unir-se", + t54: "A la comunitat d'Impressió 3D, aprenem dels èxits i fracassos dels altres per ajustar els nostres propis paràmetres i configuracions de laminació. Orca Slicer segueix el mateix principi i utilitza l'aprenentatge automàtic per millorar el seu rendiment a partir dels èxits i fracassos d'un gran nombre d'impressions dels nostres usuaris. Estem entrenant Orca Slicer per ser més intel·ligent alimentant-lo amb dades del món real. Si estàs disposat, aquest servei accedirà a informació dels teus registres d'errors i registres d'ús, que poden incloure informació descrita a la ", + t55: "Política de Privacitat", + t56: ". No recopilarem cap dada personal que pugui identificar directament o indirectament a un individu, incloent-hi noms, adreces, informació de pagament o números de telèfon. En habilitar aquest servei, acceptes aquests termes i la declaració sobre la Política de Privacitat.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "Amèrica del Nord", + t62: "Altres", + t63: "Després de canviar la regió, el teu compte es tancarà la sessió. Si us plau inicia sessió de nou més tard.", + t64: "Connectors propietaris", + t65: "Tingues en compte que aquests connectors no són desenvolupats ni mantinguts per OrcaSlicer. S'han d'utilitzar a la teva discreció i risc.", + t66: "Control remot complet", + t67: "Transmissió en directe", + t68: "Sincronització de dades de l'usuari", + t69: "Instal·lar connector Bambu Network", + t70: "", + t71: "Descarregant", + t72: "Descàrrega fallida", + t73: "Instal·lació exitosa.", + t74: "Reiniciar", + t75: "Alguns proveïdors d'impressora requereixen connectors propietaris per comunicar-se amb les seves impressores. Si us plau selecciona el connector corresponent si utilitzes aquestes impressores.", + t76: "No s'ha detectat el connector Bambu Network. Fes clic ", + t77: "aquí", + t78: " per instal·lar-lo.", + t79: "No s'ha pogut instal·lar el connector.", + t80: "Prova els següents passos:", + t81: "1, Fes clic ", + t82: " per obrir el directori de connectors", + t83: "2, Tanca totes les Orca Slicer obertes", + t84: "3, Elimina tots els fitxers del directori de connectors", + t85: "4, Reobre Orca Slicer i instal·la el connector de nou", + t86: "Tancar", + t87: "Manual de l'Usuari", + t88: "Eliminar", + t89: "Obrir Carpeta Contenidora", + t90: "Model 3D", + t91: "Descarregar models 3D", + t92: "Creat per", + t93: "Remesclat per", + t94: "Compartit per", + t95: "Informació del Model", + t96: "Accessoris", + t97: "Informació del Perfil", + t98: "Nom del model", + t100: "Descripció del model", + t101: "BOM", + t102: "Guia d'Assemblea", + t103: "Altres", + t104: "Nom del perfil", + t105: "Autor del perfil", + t106: "Descripció del perfil", + t107: "Models en línia", + t108: "MÉS", + t109: "Filaments del Sistema", + t110: "Filaments Personalitzats", + t111: "Crear Nou", + t112: "Unir-se al Programa", + t113: "Pots canviar la teva elecció en les preferències en qualsevol moment.", + orca1: "Editar Informació del Projecte", + orca2: "No hi ha informació del model", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + es_ES: { + t1: "Bienvenido a Orca Slicer", + t2: "Orca Slicer se configurará mediante varios pasos. ¡Comencemos!", + t3: "Términos de uso", + t4: "No acepto", + t5: "Acepto", + t6: "Le rogamos su ayuda para mejorar la experiencia de impresión de todos.
Únase a nuestro Programa de Mejora de la Experiencia del Cliente", + t7: "Permitir enviar datos anónimos", + t8: "Volver", + t9: "Siguiente", + t10: "Selección de impresora", + t11: "Todo", + t12: "Limpiar todo", + t13: "mm de boquilla", + t14: "Selección de filamento", + t15: "Impresora", + t16: "Tipo de filamento", + t17: "Fabricante", + t18: "Error", + t19: "Al menos se debe seleccionar un filamento.", + t20: "¿Desea usar el filamento por defecto?", + t21: "Sí", + t22: "No", + t23: "Notas de la versión", + t24: "Comenzar", + t25: "Finalizar", + t26: "Iniciar sesión", + t27: "Registrarse", + t28: "Reciente", + t29: "Tienda", + t30: "Manual", + t31: "Nuevo proyecto", + t32: "Crear nuevo proyecto", + t33: "Abrir proyecto", + t34: "punto de acceso", + t35: "Abiertos recientemente", + t36: "OK", + t37: "Al menos se debe seleccionar una impresora.", + t38: "Cancelar", + t39: "Confirmar", + t40: "Desconectado, por favor compruebe la conexión de red e inténtelo de nuevo.", + t47: "Por favor, seleccione su región:", + t48: "Asia-Pacífico", + t49: "China", + t50: "Cerrar sesión", + t52: "Omitir", + t53: "Unirse", + t54: "En la comunidad de impresión 3D aprendemos de los éxitos y fracasos de los demás para ajustar nuestros propios parámetros y configuraciones de corte. Orca Slicer sigue el mismo principio y utiliza el aprendizaje automático para mejorar su rendimiento a partir de los éxitos y fallos del gran número de impresiones realizadas por nuestros usuarios. Estamos entrenando a Orca Slicer para que sea más inteligente proporcionándole datos del mundo real. Si lo desea, este servicio accederá a la información de sus registros de errores y de uso, que pueden incluir la información descrita en nuestra ", + t55: "Política de privacidad", + t56: ". No recopilaremos ningún dato personal que pueda identificar directa o indirectamente a una persona, incluyendo, sin limitación, nombres, direcciones, información de pago o números de teléfono. Al habilitar este servicio, acepta estos términos y la declaración sobre la Política de privacidad.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "América del Norte", + t62: "Otras", + t63: "Después de cambiar la región, su cuenta se cerrará la sesión. Por favor, vuelva a iniciar sesión.", + t64: "Complementos propietarios", + t65: "Tenga en cuenta que estos complementos no están desarrollados ni mantenidos por OrcaSlicer. Deben usarse bajo su propia responsabilidad.", + t66: "Control remoto total", + t67: "Transmisión en vivo", + t68: "Sincronización de datos de usuario", + t69: "Instalar plug-in Bambu Network", + t70: "", + t71: "Descargando", + t72: "Descarga fallida", + t73: "Instalación exitosa.", + t74: "Reiniciar", + t75: "Algunos proveedores de impresoras requieren complementos propietarios para la comunicación con sus impresoras. Seleccione el complemento correspondiente si utiliza tales impresoras.", + t76: "Plug-in de Bambu Network no detectado. Haga clic ", + t77: "aquí", + t78: " para instalarlo.", + t79: "Fallo al instalar el complemento. ", + t80: "Intente los siguientes pasos:", + t81: "1. Haga clic ", + t82: " para abrir el directorio de complementos", + t83: "2. Cierre todas las instancias de Orca Slicer", + t84: "3. Elimine todos los archivos del directorio de complementos", + t85: "4. Vuelva a abrir Orca Slicer e instale el complemento de nuevo", + t86: "Cerrar", + t87: "Manual de usuario", + t88: "Eliminar", + t89: "Abrir carpeta contenedora", + t90: "Modelo 3D", + t91: "Descargar modelos 3D", + t92: "Creado por", + t93: "Remixado por", + t94: "Compartido por", + t95: "Información del modelo", + t96: "Accesorios", + t97: "Información del perfil", + t98: "Nombre del modelo", + t100: "Descripción del modelo", + t101: "Lista de materiales", + t102: "Guía de ensamblaje", + t103: "Otros", + t104: "Nombre del perfil", + t105: "Autor del perfil", + t106: "Descripción del perfil", + t107: "Modelos en línea", + t108: "Más", + t109: "Filamentos del sistema", + t110: "Filamentos personalizados", + t111: "Crear nuevo", + t112: "Unirse al programa", + t113: "Puede cambiar su elección en Preferencias en cualquier momento.", + t126: "Cargando……", + orca1: "Editar información del proyecto", + orca2: "No hay información sobre el modelo", + orca3: "Modo sigiloso", + orca4: "Esta función detiene la transmisión de datos a los servicios en la nube de Bambu. Los usuarios que no utilicen máquinas BBL o que solo usen el modo LAN pueden activar esta función con seguridad.", + orca5: "Activar modo sigiloso.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + it_IT: { + t1: "Benvenuti in OrcaSlicer", + t2: "OrcaSlicer verrà configurato seguendo diversi passaggi. Cominciamo!", + t3: "Condizioni d'uso", + t4: "Non accetto", + t5: "Accetto", + t6: "Chiediamo gentilmente il tuo aiuto per migliorare la qualità delle stampe.
Iscriviti al nostro programma di miglioramento dell'esperienza utente", + t7: "Iscriviti al nostro programma di miglioramento dell'esperienza utente", + t8: "Indietro", + t9: "Avanti", + t10: "Selezione della stampante", + t11: "Tutto", + t12: "Cancella tutto", + t13: "mm ugello", + t14: "Selezione del filamento", + t15: "Stampante", + t16: "Tipo di filamento", + t17: "Produttore", + t18: "Errore", + t19: "È necessario selezionare almeno un filamento.", + t20: "Vuoi utilizzare il filamento predefinito?", + t21: "Sì", + t22: "No", + t23: "Note di rilascio", + t24: "Inizia", + t25: "Fine", + t26: "Accedi", + t27: "Registrati", + t28: "Recente", + t29: "Negozio", + t30: "Manuale", + t31: "Nuovo progetto", + t32: "Crea un nuovo progetto", + t33: "Apri progetto", + t34: "hotspot", + t35: "Aperti di recente", + t36: "OK", + t37: "È necessario selezionare almeno una stampante.", + t38: "Annulla", + t39: "Conferma", + t40: "Disconnesso, controlla la connessione di rete e riprova.", + t47: "Seleziona la tua regione di accesso", + t48: "Asia-Pacifico", + t49: "Cina", + t50: "Disconnettiti", + t52: "Salta", + t53: "Iscriviti", + t54: "Nella comunità di stampa 3D, impariamo dai successi e dagli insuccessi di ognuno per adattare i nostri parametri e le nostre impostazioni di slicing. OrcaSlicer segue lo stesso principio, utilizzando l'apprendimento automatico per migliorare le sue prestazioni sfruttando i successi e gli insuccessi delle numerose stampe dei nostri utenti. Stiamo addestrando OrcaSlicer ad essere più intelligente, fornendogli dati del mondo reale. Se lo desideri, questo servizio accederà alle informazioni dei tuoi registri di errore e di utilizzo, i quali possono includere informazioni descritte in ", + t55: "Politica sulla riservatezza", + t56: ". Non raccoglieremo alcun Dato Personale tramite il quale un individuo possa essere identificato direttamente o indirettamente, inclusi (senza limitazioni) nomi, indirizzi, informazioni di pagamento o numeri di telefono. Abilitando questo servizio, accetti questi termini e la dichiarazione sulla Politica sulla riservatezza.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "Nord America", + t62: "Altri", + t63: "Dopo aver cambiato la regione, il tuo profilo verrà disconnesso. Sarà necessario accedere di nuovo.", + t64: "Moduli proprietari", + t65: "Si prega di notare che questi moduli non sono sviluppati o mantenuti da OrcaSlicer. Dovrebbero essere utilizzati a proprio rischio e discrezione.", + t66: "Controllo remoto completo", + t67: "Video in diretta", + t68: "Sincronizzazione dei dati utente", + t69: "Installa il modulo di rete Bambu", + t70: "", + t71: "Scaricamento", + t72: "Scaricamento non riuscito", + t73: "Installazione riuscita.", + t74: "Riavvia", + t75: "Le stampanti di alcuni produttori richiedono dei moduli proprietari per far in modo che la comunicazione abbia successo. Seleziona il modulo corrispondente se utilizzi tali stampanti.", + t76: "Modulo di rete Bambu non rilevato. Fai clic ", + t77: "qui", + t78: " per installarlo.", + t79: "Impossibile installare il modulo. ", + t80: "Prova i seguenti passaggi:", + t81: "1, Fare clic ", + t82: " per aprire la directory del modulo", + t83: "2, Chiudere tutte le istanze di OrcaSlicer", + t84: "3, Eliminare tutti i file all'interno della directory del modulo", + t85: "4, Riaprire OrcaSlicer e installare nuovamente il modulo", + t86: "Chiudi", + t87: "Manuale d'uso", + t88: "Rimuovi", + t89: "Apri cartella con contenuto", + t90: "Modello 3D", + t91: "Scarica modelli 3D", + t92: "Creato da", + t93: "Modificato da", + t94: "Condiviso da", + t95: "Informazioni sul modello", + t96: "Accessori", + t97: "Informazioni sul profilo", + t98: "Nome del modello", + t100: "Descrizione del modello", + t101: "Elenco dei materiali", + t102: "Istruzioni di montaggio ", + t103: "Altro", + t104: "Nome del profilo", + t105: "Autore del profilo", + t106: "Descrizione del profilo", + t107: "Modelli online", + t108: "ALTRO", + t109: "Filamenti di sistema", + t110: "Filamenti personalizzati", + t111: "Crea Nuovo", + t112: "Unisciti al programma", + t113: "Puoi modificare la tua scelta in 'Preferenze' in qualsiasi momento.", + orca1: "Modifica informazioni progetto", + orca2: "Nessuna informazione sul modello", + orca3: "Modalità invisibile", + orca4: "Con questa modalità, la trasmissione dei dati ai servizi cloud di Bambu sarà interrotta. Gli utenti che non utilizzano macchine BBL o che usano solo la modalità LAN possono attivare questa funzione in modo sicuro.", + orca5: "Abilita la modalità invisibile.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + de_DE: { + t1: "Willkommen im Orca Slicer", + t2: "Das Orca Slicer wird in mehreren Schritten eingerichtet. Lass uns anfangen!", + t3: "Nutzervereinbarung", + t4: "Ablehnen", + t5: "Zustimmen", + t6: "Wir bitten um deine Hilfe, um den Druck für alle zu verbessern", + t7: "Anonyme Daten senden erlauben", + t8: "Zurück", + t9: "Weiter", + t10: "Druckerauswahl", + t11: "Alle", + t12: "Keinen", + t13: "mm Düse", + t14: "Filamentauswahl", + t15: "Drucker", + t16: "Filamenttyp", + t17: "Hersteller", + t18: "Fehler", + t19: "Es muss mindestens ein Filament ausgewählt sein.", + t20: "Möchten Sie das Standard-Filament verwenden?", + t21: "Ja", + t22: "Nein", + t23: "Versionshinweise", + t24: "Loslegen", + t25: "Fertig", + t26: "Anmelden", + t27: "Registrieren", + t28: "Neueste", + t29: "Einkaufszentrum", + t30: "Handbuch", + t31: "Neues Projekt", + t32: "Neues Projekt erstellen", + t33: "Projekt öffnen", + t34: "Hotspot", + t35: "Zuletzt geöffnet", + t36: "OK", + t37: "Es muss mindestens ein Drucker ausgewählt sein.", + t38: "Abbrechen", + t39: "Bestätigen", + t40: "Netzwerkunterbrechung, bitte überprüfen und später erneut versuchen.", + t47: "Bitte wählen Sie Ihre Login-Region aus", + t48: "Asien-Pazifik", + t49: "China", + t50: "Abmelden", + t52: "Überspringen", + t53: "Beitreten", + t54: "In der 3D-Druck-Community lernen wir aus den Erfolgen und Misserfolgen der anderen Benutzer, um unsere eigenen Schneideparameter und Einstellungen anzupassen. Orca Slicer folgt demselben Prinzip und verbessert seine Leistung durch die Erfolge und Misserfolge der Vielzahl von Drucken unserer Benutzer mittels maschinellem Lernen. Wir trainieren Orca Slicer, indem wir ihnen die realen Daten zuführen. Wenn Sie bereit sind, greift dieser Dienst auf Informationen aus Ihren Fehler- und Nutzungsprotokollen zu, die Informationen enthalten können, die in der ", + t55: "Datenschutzrichtlinie", + t56: ". Wir werden keine personenbezogenen Daten sammeln, durch die eine Person direkt oder indirekt identifiziert werden kann, einschließlich, aber nicht beschränkt auf Namen, Adressen, Zahlungsinformationen oder Telefonnummern. Durch Aktivieren dieses Dienstes stimmen Sie diesen Bedingungen und der Erklärung zur Datenschutzrichtlinie zu.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "Nordamerika", + t62: "Andere", + t63: "Nach Ändern der Region wird Ihr Konto abgemeldet. Bitte melden Sie sich später erneut an.", + t64: "Bambu Network-Plug-in", + t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", + t66: "Vollständige Fernsteuerung", + t67: "Live-View-Streaming", + t68: "Synchronisierung von Benutzerdaten", + t69: "Bambu Network-Plug-in installieren", + t70: "", + t71: "Herunterladen", + t72: "Herunterladen fehlgeschlagen", + t73: "Installation erfolgreich.", + t74: "Neustart", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "Das Bambu Network-Plug-in wurde nicht erkannt. Klicken Sie ", + t77: "hier", + t78: ", um es zu installieren.", + t79: "Fehler beim Installieren des Plug-ins. ", + t80: "Versuchen Sie die folgenden Schritte:", + t81: "1, Klicken Sie auf ", + t82: ", um das Plug-in-Verzeichnis zu öffnen", + t83: "2, Schließen Sie alle geöffneten Orca Slicer", + t84: "3, Löschen Sie alle Dateien im Plug-in-Verzeichnis", + t85: "4, Öffnen Sie Orca Slicer erneut und installieren Sie das Plug-in erneut", + t86: "Schließen", + t87: "Benutzerhandbuch", + t88: "Entfernen", + t89: "Enthaltenden Ordner öffnen", + t90: "3D-Modell", + t91: "3D-Modelle herunterladen", + t92: "Erstellt von", + t93: "Remixed von", + t94: "Geteilt von", + t95: "Modellinformationen", + t96: "Zubehör", + t97: "Profilinformationen", + t98: "Modellname", + t100: "Modellbeschreibung", + t101: "Stückliste", + t102: "Montageanleitung", + t103: "Andere", + t104: "Profilname", + t105: "Profilautor", + t106: "Profilbeschreibung", + t126: "Laden……", + orca1: "Edit Project Info", + orca2: "No model information", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + cs_CZ: { + t1: "Vítejte v Orca Slicer", + t2: "Orca Slicer bude nastaven v několika krocích. Začněme!", + t3: "Uživatelská smlouva", + t4: "Nesouhlasím", + t5: "Souhlasím", + t6: "Prosíme o vaši pomoc se zlepšením všech tisků", + t7: "Povolit odesílání anonymních dat", + t8: "Zpět", + t9: "Další", + t10: "Výběr tiskárny", + t11: "Všechny", + t12: "Vymazat vše", + t13: "Tryska mm", + t14: "Výběr Filamentu", + t15: "Tiskárna", + t16: "Typ Filamentu", + t17: "Dodavatel", + t18: "Chyba", + t19: "Musí být vybraný alespoň jeden Filament.", + t20: "Chcete použít výchozí Filament?", + t21: "Ano", + t22: "Ne", + t23: "Poznámka k vydání", + t24: "Začínáme", + t25: "Dokončit", + t26: "Přihlásit", + t27: "Registrovat", + t28: "Poslední", + t29: "Obchodní centrum", + t30: "Manuální", + t31: "Nový projekt", + t32: "Vytvořit nový projekt", + t33: "Otevřít projekt", + t34: "Hotspot", + t35: "Nedávno otevřeno", + t36: "OK", + t37: "Musí být vybrána alespoň jedna tiskárna.", + t38: "Zrušit", + t39: "Potvrdit", + t40: "Síť je odpojena, prosím zkontrolujte a zkuste to znovu později.", + t47: "Vyberte prosím svou oblast přihlášení", + t48: "Asie-Pacifik", + t49: "Čína", + t50: "Odhlásit se", + t52: "Přeskočit", + t53: "Připojit se", + t54: "V komunitě 3D tisku se ze vzájemných úspěchů a neúspěchů učíme upravovat vlastní parametry a nastavení krájení. Orca Slicer se řídí stejným principem a využívá strojové učení ke zlepšení svého výkonu na základě úspěchů a neúspěchů počet výtisků našimi uživateli. Orca Slicer školíme, aby byl chytřejší tím, že jim poskytuje data z reálného světa. Pokud budete chtít, bude tato služba přistupovat k informacím z vašich protokolů chyb a protokolů použití, které mohou zahrnovat informace popsané v ", + t55: "Zásady ochrany osobních údajů", + t56: ". Nebudeme shromažďovat žádné osobní údaje, pomocí kterých lze přímo nebo nepřímo identifikovat jednotlivce, včetně jmen, adres, platebních údajů nebo telefonních čísel. Povolením této služby souhlasíte s těmito podmínkami a prohlášení o zásadách ochrany osobních údajů.", + t57: "", + t58: "", + t59: ".", + t60: "Evropa", + t61: "Severní Amerika", + t62: "Ostatní", + t63: "Po změně regionu bude váš účet odhlášen. Přihlaste se prosím znovu později.", + t64: "Proprietary Plugins", + t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", + t66: "Plné dálkové ovládání", + t67: "Streamování v přímém přenosu", + t68: "Synchronizace uživatelských dat", + t69: "Instalovat Bambu Network plug-in", + t70: "", + t71: "Stahování", + t72: "Stahování se nezdařilo", + t73: "Instalace úspěšná.", + t74: "Restartovat", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "Síťový plug-in Bambu nebyl zjištěn. Klikněte na ", + t77: "zde", + t78: " k instalaci.", + t79: "Nepodařilo se nainstalovat plugin.", + t80: "Zkuste následující kroky:", + t81: "1, klikněte", + t82: "otevřete adresář plug-in", + t83: "2, Zavřete všechny otevřené Orca Slicer", + t84: "3, Smažte všechny soubory v adresáři plug-in", + t85: "4, znovu otevřete Orca Slicer a znovu nainstalujte zásuvný modul", + t86: "Zavřít", + t87: "Uživatelská příručka", + t88: "Odstranit", + t89: "Otevřít složku obsahující", + t90: "3D model", + t91: "Stáhnout 3D modely", + t92: "Vytvořil", + t93: "Přepracováno", + t94: "Sdíleno", + t95: "Informace o modelu", + t96: "Příslušenství", + t97: "Informace o profilu", + t98: "Název modelu", + t100: "Popis modelu", + t101: "Seznam součástek (BOM)", + t102: "Průvodce sestavením", + t103: "Jiné", + t104: "Název profilu", + t105: "Autor profilu", + t106: "Popis profilu", + t126: "Načtení probíhá……", + orca1: "Edit Project Info", + orca2: "No model information", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + fr_FR: { + t1: "Bienvenue sur Orca Slicer", + t2: "Orca Slicer sera configuré en plusieurs étapes. Commençons !", + t3: "Accord d'utilisation", + t4: "Décliner", + t5: "Accepter", + t6: "Nous sollicitons votre aide pour améliorer
l'impression de chacun", + t7: "Autoriser l'envoi de données anonymes", + t8: "Retour", + t9: "Suivant", + t10: "Sélection de l'imprimante", + t11: "Tous", + t12: "Supprimer", + t13: "mm", + t14: "Sélection des filaments", + t15: "Imprimante", + t16: "Type de filament", + t17: "Fournisseur", + t18: "Erreur", + t19: "Au moins un filament doit être sélectionné.", + t20: "Voulez-vous utiliser le filament par défaut ?", + t21: "Oui", + t22: "Non", + t23: "Note de version", + t24: "Commencer", + t25: "Terminer", + t26: "Connexion", + t27: "Inscription", + t28: "Récent", + t29: "Mail", + t30: "Manuel", + t31: "Nouveau Projet", + t32: "Créer un nouveau projet", + t33: "Ouvrir un Projet", + t34: "hotspot", + t35: "Récemment ouvert", + t36: "OK", + t37: "Au moins une imprimante doit être sélectionnée.", + t38: "Annuler", + t39: "Confirmer", + t40: "Déconnexion du réseau, veuillez vérifier et réessayer plus tard.", + t47: "Veuillez sélectionner votre région de connexion", + t48: "Asie-Pacifique", + t49: "Chine", + t50: "Se déconnecter", + t52: "Passer", + t53: "Rejoindre", + t54: "Dans la communauté de l'impression 3D, nous apprenons des succès et des échecs des uns et des autres pour ajuster nos propres paramètres et paramètres de découpage. Orca Slicer suit le même principe et utilise l'apprentissage automatique pour améliorer ses performances à partir des succès et des échecs du grand nombre d'impressions de nos utilisateurs. Nous formons Orca Slicer à être plus intelligent en leur fournissant les données du monde réel. Si vous le souhaitez, ce service accédera aux informations de vos journaux d'erreurs et de vos journaux d'utilisation, qui peuvent inclure des informations décrites dans ", + t55: "Politique de confidentialité", + t56: ". Nous ne collecterons aucune donnée personnelle par laquelle un individu peut être identifié directement ou indirectement, y compris, sans s'y limiter, les noms, adresses, informations de paiement ou numéros de téléphone. En activant ce service, vous acceptez ces conditions et la déclaration sur la politique de confidentialité.", + t57: "", + t58: "", + t59: ".", + t60: "Europe", + t61: "Amérique du Nord", + t62: "Autres", + t63: "Après avoir changé de région, votre compte sera déconnecté. Veuillez vous reconnecter ensuite.", + t64: "Plug-in Bambu Network", + t65: "Veuillez noter que ces plugins ne sont pas développés ou maintenus par OrcaSlicer. Ils doivent être utilisés à votre propre discrétion et à vos propres risques.", + t66: "Commande à distance complète", + t67: "Diffusion en direct", + t68: "Synchronisation des données utilisateur", + t69: "Installer Bambu Network", + t70: "", + t71: "Téléchargement", + t72: "Échec du téléchargement", + t73: "Installation réussie.", + t74: "Redémarrer", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "Le plug-in Bambu Network n'est pas détecté. Cliquez ", + t77: "ici", + t78: " pour l'installer.", + t79: "Échec de l'installation du plug-in. ", + t80: "Essayez les étapes suivantes :", + t81: "1, Cliquez ", + t82: " pour ouvrir le répertoire des plug-ins", + t83: "2, Fermez toutes les fenêtres de Orca Slicer", + t84: "3, Supprimez tous les fichiers dans le répertoire du plug-in", + t85: "4, Relancez Orca Slicer et réinstallez le plug-in.", + t86: "Fermer", + t87: "Manuel d'utilisation", + t88: "Supprimer", + t89: "Ouvrir le dossier contenant", + t90: "Modèle 3D", + t91: "Télécharger des modèles 3D", + t92: "Créé par", + t93: "Remixé par", + t94: "Partagé par", + t95: "Informations sur le modèle", + t96: "Accessoires", + t97: "Informations de profil", + t98: "Nom du modèle", + t100: "Description du modèle", + t101: "BOM", + t102: "Guide d'assemblage", + t103: "Autre", + t104: "Nom du profil", + t105: "Auteur du profil", + t106: "Description du profil", + t109: "Filaments du système", + t110: "Filaments personnalisés", + t111: "Créer un nouveau filament", + t126: "Chargement en cours……", + orca1: "Modifier les informations du projet", + orca2: "Pas d'information sur le modèle", + wk1: "Démarrage rapide", + wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.", + wk3: "Workflow basé sur des projets", + wk4: "Orca Slicer met en avant un workflow de pointe pour véritablement réaliser un projet « tout en un ». Basé sur le format de projet 3MF grand public, il fournit une série de nouvelles fonctionnalités révolutionnaires, telles que la prise en charge de plusieurs plaques, un gestionnaire de ressources de projet et une vue d'assemblage/de pièce. Cela améliore considérablement l'efficacité des créateurs et des utilisateurs réguliers", + wk5: "Impression haute vitesse de qualité", + wk6: "Il est difficile d'imprimer à grande vitesse tout en maintenant une qualité élevée. Orca Slicer rend cela possible. « Arch Move » permet à la hotend de se déplacer en douceur et réduit les vibrations de la machine. Le refroidissement intelligent est basé sur des paramètres de refroidissement affinés pour chaque type de filament. Le « ralentissement automatique » pour les paroies en porte-à-faux permet d'éviter la déformation à grande vitesse.", + wk7: "Impression multi-couleur", + wk8: "Orca Slicer fournit des outils de colorisation polyvalents pour créer un modèle coloré. Vous pouvez librement ajouter/supprimer des filaments dans un projet et coloriser votre modèle avec différents pinceaux. Avant l'impression, chaque filament sera automatiquement mappé sur un emplacement AMS, sans avoir besoin de modifier manuellement le placement de la bobine dans l'AMS.", + wk9: "Guide de réglage des paramètres de découpage", + wk10: "Les fonctionnalités de gestion des paramètres de Orca Slicer offrent un contrôle très flexible et puissant sur le processus de découpage. Cet article présente l'organisation des paramètres et fournit quelques compétences pour tirer pleinement parti de ces fonctionnalités.", + wk11: "Contrôle et surveillance à distance", + wk12: "Orca Slicer prend en charge l'envoi du travail d'impression à votre imprimante via le réseau WAN/LAN, contrôlant et surveillant chaque aspect de votre imprimante 3D et des travaux d'impression. Si vous avez plusieurs imprimantes, vous pouvez facilement basculer entre elles dans la liste des périphériques.", + wk13: "Format STEP", + wk14: "Par rapport au format STL, le format STEP apporte des informations plus efficaces. Grâce à la grande précision de ce format, de nombreuses trajectoires d'extrusion peuvent être générées sous forme d'arcs. Il inclut également la relation d'assemblage de chaque pièce d'un modèle, qui peut être utilisée pour restaurer la vue d'assemblage après la coupe d'un modèle.", + wk15: "Texte 3D", + wk16: "Avec l'outil Texte 3D, les utilisateurs peuvent facilement créer diverses formes de texte 3D dans le projet, ce qui rend le modèle plus personnalisé. Orca Slicer fournit des dizaines de polices et prend en charge les styles gras et italique pour donner au texte une plus grande flexibilité.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + zh_CN: { + t1: "欢迎使用Orca Slicer", + t2: "Orca Slicer需要几步安装步骤,让我们开始吧!", + t3: "用户使用协议", + t4: "拒绝", + t5: "同意", + t6: "帮助提升Orca Slicer性能", + t7: "允许发送匿名数据", + t8: "上一步", + t9: "下一步", + t10: "选择打印机", + t11: "全部", + t12: "清空", + t13: "mm 喷嘴", + t14: "选择材料", + t15: "打印机", + t16: "材料类型", + t17: "供应商", + t18: "错误", + t19: "至少要选择一款材料。", + t20: "你希望使用默认的材料列表吗?", + t21: "是", + t22: "否", + t23: "发布说明", + t24: "开始", + t25: "结束", + t26: "登录", + t27: "注册", + t28: "近期", + t29: "商城", + t30: "使用手册", + t31: "新建项目", + t32: "创建一个新项目", + t33: "打开项目", + t34: "热点", + t35: "近期打开文件", + t36: "确定", + t37: "至少需要选择一款打印机。", + t38: "取消", + t39: "确定", + t40: "网络不通,请检查并稍后重试。", + t47: "请选择登录区域", + t48: "亚太", + t49: "中国", + t50: "退出登录", + t52: "忽略", + t53: "同意", + t54: "在3D打印社区,我们从彼此的成功和失败中学习调整自己的切片参数和设置。Orca Slicer遵循同样的原则,通过机器学习的方式从大量用户打印的成功和失败中获取经验,从而改善打印性能。我们正在通过向Orca Slicer提供真实世界的数据来训练他们变得更聪明。如果您愿意,此服务将访问您的错误日志和使用日志中的信息,其中可能包括", + t55: "隐私政策", + t56: "中描述的信息。我们不会收集任何可以直接或间接识别个人的个人数据,包括但不限于姓名、地址、支付信息或电话号码。启用此服务即表示您同意这些条款和有关隐私政策的声明。", + t57: "", + t58: "", + t59: "。", + t60: "欧洲", + t61: "北美", + t62: "其他", + t63: "切换区域后,你的账号会被登出。稍后请重新登录。", + t64: "Bambu网络插件", + t65: "注意:这些插件不是由OrcaSlicer开发或维护的。使用它们需自担风险", + t66: "强大的远程控制功能", + t67: "实时视频流", + t68: "用户数据同步", + t69: "安装Bambu网络插件", + t70: "", + t71: "正在下载", + t72: "下载失败", + t73: "安装成功。", + t74: "重启", + t75: "一些打印机厂商需要安装他们的专有插件才能与打印机通信。如果您使用这类打印机,请选择相应的插件", + t76: "没有发现Bambu网络插件,请", + t77: "下载", + t78: "并安装。", + t79: "安装插件失败。", + t80: "请尝试如下步骤:", + t81: "1, 点击", + t82: "打开插件所在目录", + t83: "2, 关闭所有Orca Slicer", + t84: "3, 删除插件所在目录下的所有文件", + t85: "4, 重新启动Orca Slicer并尝试安装插件", + t86: "关闭", + t87: "使用引导", + t88: "移除", + t89: "打开所在的文件夹", + t90: "3D 模型", + t91: "下载3D模型", + t92: "创作", + t93: "修改", + t94: "分享", + t95: "模型信息", + t96: "附件", + t97: "配置信息", + t98: "模型名称", + t100: "模型介绍", + t101: "物料清单", + t102: "装备指导", + t103: "其他", + t104: "配置名称", + t105: "配置作者", + t106: "配置介绍", + t107: "在线模型", + t108: "更多", + t109: "系统材料", + t110: "自建材料", + t111: "新建", + t112: "加入该计划", + t113: "您可以随时更改您的偏好。", + t126: "正在加载……", + wk1: "快速入门指南", + wk2: "本文介绍了Orca Slicer的最基本用法。它指导用户配置软件,创建项目,并逐步完成第一个打印任务。", + wk3: "基于项目的工作流", + wk4: "Orca Slicer提出了领先的工作流程,真正实现了“一体化”项目。基于主流的3MF项目格式,它提供了一系列革命性的新功能,如支持多盘、项目资源管理器和装配/零件视图。它可以大幅提高模型创作者及普通用户的使用效率。", + wk5: "质量卓越的高速打印", + wk6: "在保持高质量的前提下进行高速打印是非常具有挑战性的。Orca Slicer让这一切发生。支持“圆弧移动”特性使工具头移动更加顺滑,有效减少机器振动。基于不同材料类型的精细标定过的冷却控制参数,使得冷却过程可以自动开展。在悬垂区域进行“自动减速”,可防止高速打印时在此区域的外观瑕疵。", + wk7: "多色打印", + wk8: "Orca Slicer提供了多种着色工具来制作彩色模型。您可以在项目中自由添加/移除打印材料,并使用不同的笔刷为模型着色。开始打印时,打印任务中的各个材料将自动映射到匹配的AMS槽位,无需手动调整AMS中的料卷位置。", + wk9: "切片参数设置指南", + wk10: "Orca Slicer中的参数管理功能为切片过程提供了非常灵活和强大的控制。本文介绍了切片参数的组织分类和设置方法,并提供了一些使用技巧。", + wk11: "远程控制和监控", + wk12: "Orca Slicer支持通过WAN/LAN网络向打印机发送打印任务,控制和查看3D打印机和打印任务的各个方面。如果您有多台打印机,还可以在设备列表中轻松切换。", + wk13: "STEP格式", + wk14: "与STL相比,STEP带来了更多有效的信息。由于STEP的高精度,切片时可以生成更多的圆弧路径。STEP还包括模型每个零件的装配关系,可分割模型后恢复装配视图。", + wk15: "3D文本", + wk16: "使用3D文本工具,用户可以轻松地在项目中创建各种3D文本形状,使模型更加个性化。Orca Slicer提供了数十种字体,并支持粗体和斜体样式,使文本具有更大的灵活性。", + orca1: "编辑项目信息", + orca2: "该模型没有相关信息", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + zh_TW: { + t1: "歡迎使用 Orca Slicer", + t2: "Orca Slicer 需要幾步安裝步驟,讓我們開始吧!", + t3: "使用者協議", + t4: "拒絕", + t5: "同意", + t6: "幫助提升 Orca Slicer 性能", + t7: "允許傳送匿名數據", + t8: "上一步", + t9: "下一步", + t10: "選擇3D列印機", + t11: "全部", + t12: "清空", + t13: "mm 噴嘴", + t14: "選擇線材", + t15: "3D列印機", + t16: "線材類型", + t17: "供應商", + t18: "錯誤", + t19: "至少要選擇一款線材。", + t20: "你希望使用預設的線材列表嗎?", + t21: "是", + t22: "否", + t23: "發布說明", + t24: "開始", + t25: "結束", + t26: "登入", + t27: "註冊", + t28: "最近", + t29: "商城", + t30: "使用手冊", + t31: "新建項目", + t32: "創建一個新項目", + t33: "打開項目", + t34: "熱點", + t35: "最近打開文件", + t36: "確定", + t37: "至少需要選擇一款3D列印機。", + t38: "取消", + t39: "確定", + t40: "網路不通,請檢查並稍後重試。", + t47: "請選擇登入區域", + t48: "亞太", + t49: "中國", + t50: "登出", + t52: "忽略", + t53: "同意", + t54: "在3D列印社區,我們從彼此的成功和失敗中學習調整自己的切片參數和設置。Orca Slicer 遵循同樣的原則,透過機器學習的方式從大量用戶列印的成功和失敗中獲取經驗,從而改善列印性能。我們正在通過向 Orca Slicer 提供真實世界的數據來訓練他們變得更聰明。如果您願意,此服務將訪問您的錯誤日誌和使用日誌中的資訊,其中可能包括", + t55: "隱私政策", + t56: "中描述的資訊。我們不會收集任何可以直接或間接識別個人的個人數據,包括但不限於姓名、地址、支付資訊或電話號碼。啟用此服務即表示您同意這些條款和有關隱私政策的聲明。", + t57: "", + t58: "", + t59: "。", + t60: "歐洲", + t61: "北美", + t62: "其他", + t63: "切換區域後,你的帳號會被登出。稍後請重新登入。", + t64: "Bambu網路插件", + t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", + t66: "強大的遠端控制功能", + t67: "即時影片串流", + t68: "使用者數據同步", + t69: "安裝 Bambu網路插件", + t70: "", + t71: "正在下載", + t72: "下載失敗", + t73: "安裝成功。", + t74: "重啟", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "沒有發現Bambu網路插件,請", + t77: "下載", + t78: "並安裝。", + t79: "安裝插件失敗。", + t80: "請嘗試如下步驟:", + t81: "1, 點擊", + t82: "打開插件所在目錄", + t83: "2, 關閉所有 Orca Slicer", + t84: "3, 刪除插件所在目錄下的所有文件", + t85: "4, 重新啟動 Orca Slicer 並嘗試安裝插件", + t86: "關閉", + t87: "使用引導", + t88: "移除", + t89: "打開所在的文件夾", + t90: "3D 模型", + t91: "下載3D模型", + t92: "Bambu聖誕小屋", + wk1: "快速入門指南", + wk2: "本文介紹了 Orca Slicer 的最基本用法。它指導用戶配置軟體,創建項目,並逐步完成第一個列印任務。", + wk3: "基於項目的工作流", + wk4: "Orca Slicer 提出了領先的工作流程,真正實現了“一體化”項目。基於主流的3MF項目格式,它提供了一系列革命性的新功能,如支持多盤、項目資源管理器和裝配/零件視圖。它可以大幅提高模型創作者及普通用戶的使用效率。", + wk5: "質量卓越的高速列印", + wk6: "在保持高品質的前提下進行高速列印是非常具有挑戰性的。Orca Slicer 讓這一切發生。支持“圓弧移動”特性使工具頭移動更加順滑,有效減少機器振動。基於不同線材類型的精細標定過的冷卻控制參數,使得冷卻過程可以自動開展。在懸垂區域進行“自動減速”,可防止高速列印時在此區域的外觀瑕疵。", + wk7: "多色列印", + wk8: "Orca Slicer 提供了多種著色工具來製作彩色模型。您可以在項目中自由添加/移除列印材料,並使用不同的筆刷為模型著色。開始列印時,列印任務中的各個線材將自動映射對應到 AMS 槽位,無需手動調整 AMS 中的線材位置。", + wk9: "切片參數設置指南", + wk10: "Orca Slicer 中的參數管理功能為切片過程提供了非常靈活和強大的控制。本文介紹了切片參數的組織分類和設置方法,並提供了一些使用技巧。", + wk11: "遠端控制和監控", + wk12: "Orca Slicer 支持透過無線網路/區域網路向3D列印機發送列印任務,控制和查看3D列印機和列印任務的各個方面。如果您有多台3D列印機,還可以在設備清單中輕鬆切換。", + wk13: "STEP格式", + wk14: "與 STL 相比,STEP 帶來了更多有效的資訊。由於 STEP 的高精度,切片時可以生成更多的圓弧路徑。STEP 還包括模型每個零件的組裝關係,可分割模型後恢復裝配視圖。", + wk15: "3D文本", + wk16: "使用3D文字工具,使用者可以輕鬆地在項目中建立各種3D文字形狀,使模型更加個性化。Orca Slicer 提供了數十種字體,並支援粗體和斜體樣式,使文字具有更大的靈活性。", + orca1: "編輯專案資訊", + orca2: "沒有模型相關資訊", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + ru_RU: { + t1: "Приветствуем в Orca Slicer!", + t2: "Для настройки Orca Slicer необходимо пройти несколько этапов. Давайте начнём!", + t3: "Пользовательское соглашение", + t4: "Отказаться", + t5: "Принять", + t6: "Мы просим вашей помощи,
чтобы улучшить печать", + t7: "Разрешить отправку анонимных данных для совершенствования программы", + t8: "Назад", + t9: "Далее", + t10: "Выбор принтера", + t11: "Все", + t12: "Очистить", + t13: "мм сопло", + t14: "Выбор материала", + t15: "Принтер", + t16: "Тип материала", + t17: "Производитель", + t18: "Oшибка", + t19: "Должна быть выбрана хотя бы одна пластиковая нить.", + t20: "Выбрать пластиковые нити по умолчанию?", + t21: "Да", + t22: "Нет", + t23: "Информация о версии", + t24: "Начать", + t25: "Закончить", + t26: "Войти", + t27: "Регистрация", + t28: "Недавние", + t29: "Mall", + t30: "Инструкции", + t31: "Новый проект", + t32: "Создать новый проект", + t33: "Открыть проект", + t34: "точка доступа", + t35: "Недавно открытые", + t36: "OK", + t37: "Должен быть выбран хотя бы один принтер.", + t38: "Отмена", + t39: "Принять", + t40: "Сеть отключена. Проверьте подключение и попробуйте снова.", + t47: "Выбор региона", + t48: "Азиатско-Тихоокеанский регион", + t49: "Китай", + t50: "Выйти", + t52: "Пропустить", + t53: "Войти", + t54: "Для поиска наилучших параметров нарезки и улучшения печати участники сообщества 3D-печати учатся на успехах и неудачах друг друга. Orca Slicer следует тому же принципу и использует машинное обучение для улучшения своей работы на основе успешного и неудачного опыта печати наших пользователей. Мы обучаем Orca Slicer быть умнее на основе реальных данных. По вашему согласию эта служба получит доступ к вашим журналам ошибок и журналам использования, в которых содержатся сведения, описанные в ", + t55: "политике конфиденциальности", + t56: ". Мы не собираем никаких личных данных, которые могут прямо или косвенно идентифицировать отдельного человека, включая, помимо прочего, имена, адреса, платёжную информацию или номера телефонов. Разрешая отправку, вы соглашаетесь с этими условиями и заявлением о политике конфиденциальности.", + t57: "", + t58: "", + t59: ".", + t60: "Европа", + t61: "Северная Америка", + t62: "Другой", + t63: "После смены региона произойдёт выход из аккаунта и понадобится войти снова.", + t64: "Сетевой плагин Bambu", + t65: "Имейте в виду, что эти плагины не разрабатываются и не поддерживаются OrcaSlicer. Используйте их на свой страх и риск.", + t66: "Полное дистанционное управление", + t67: "Просмотр прямой трансляции с камеры", + t68: "Синхронизация данных пользователя", + t69: "Установить сетевой плагин Bambu", + t70: "", + t71: "Загрузка", + t72: "Загрузка не удалась", + t73: "Установка выполнена успешно.", + t74: "Перезагрузка", + t75: "Для связи с некоторыми моделями принтеров требуются проприетарные плагины. Выберите соответствующий плагин, если у вас такой принтер.", + t76: "Сетевой плагин Bambu не обнаружен. Нажмите ", + t77: "здесь", + t78: ", чтобы установить его.", + t79: "Ошибка установки плагина. ", + t80: "Попробуйте выполнить следующие действия:", + t81: "1, Нажмите ", + t82: " для открытия папки плагина", + t83: "2, Закройте все окна Orca Slicer", + t84: "3, Удалите все файлы в папке плагина", + t85: "4, Откройте Orca Slicer и снова установите плагин.", + t86: "Закрыть", + t87: "Инструкции", + t88: "Удалить", + t89: "Открыть папку с файлом", + t90: "3D-модель", + t91: "Скачать 3D-модели", + t92: "Автор", + t93: "Модифицировано", + t94: "Поделиться", + t95: "Информация о модели", + t96: "Прикреплённые файлы", + t97: "Информация о профиле", + t98: "Имя модели", + t100: "Описание модели", + t101: "Список материалов", + t102: "Памятка по сборке", + t103: "Прочее", + t104: "Имя профиля", + t105: "Профиль автора", + t106: "Описание профиля", + t107: "Модели в сети", + t108: "Больше", + t109: "Системные материалы", + t110: "Пользовательские материалы", + t111: "Создать новый", + t112: "Присоединяйтесь к программе", + t113: "Вы можете изменить свой выбор в любое время.", + t126: "Загрузка...", + orca1: "Изменить информацию", + orca2: "Информация отсутствует", + orca3: "Режим конфиденциальности", + orca4: "Это остановит передачу данных в облачные сервисы Bambu. Помешает только владельцам Bambu Lab, не использующим режим «Только LAN».", + orca5: "Включить режим конфиденциальности", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + ko_KR: { + t1: "Orca Slicer에 오신 것을 환영합니다", + t2: "Orca Slicer는 여러 단계로 설정됩니다. 시작!", + t3: "사용자 약관", + t4: "거부", + t5: "동의", + t6: "모든 사람의 출력 품질 개선을 위해
여러분의 도움이 필요합니다.", + t7: "익명 데이터 전송 허용", + t8: "뒤로", + t9: "다음", + t10: "프린터 선택", + t11: "전체", + t12: "전체 해제", + t13: "mm 노즐", + t14: "필라멘트 선택", + t15: "프린터", + t16: "필라멘트 종류", + t17: "공급업체", + t18: "오류", + t19: "하나 이상의 필라멘트를 선택해야 합니다.", + t20: "기본 필라멘트를 사용하시겠습니까?", + t21: "예", + t22: "아니오", + t23: "릴리스 노트", + t24: "시작", + t25: "완료", + t26: "로그인", + t27: "등록", + t28: "최근", + t29: "상점", + t30: "메뉴얼", + t31: "새 프로젝트", + t32: "새 프로젝트 생성", + t33: "프로젝트 열기", + t34: "핫스팟", + t35: "최근 사용", + t36: "예", + t37: "하나 이상의 프린터를 선택해야 합니다.", + t38: "취소", + t39: "수락", + t40: "네트워크 연결이 끊겼습니다. 확인하고 나중에 다시 시도하세요.", + t47: "로그인 지역을 선택해주세요", + t48: "아시아 태평양", + t49: "중국", + t50: "로그 아웃", + t52: "건너뛰기", + t53: "가입", + t54: "3D 프린팅 커뮤니티에서 우리는 각자의 슬라이싱 매개변수와 설정을 조정하는 과정에서 서로의 성공과 실패를 통해 배웁니다. Orca Slicer는 동일한 원칙을 따르며 기계 학습을 사용하여 사용자의 방대한 출력물의 성공과 실패를 통해 성능을 향상시킵니다. 우리는 실제 데이터를 제공하여 Orca Slicer가 더욱 똑똑해지도록 교육하고 있습니다. 귀하가 원할 경우 이 서비스는 오류 로그 및 사용 로그의 정보에 액세스합니다. 여기에는 다음에 설명된 정보가 포함될 수 있습니다.", + t55: "개인 정보 정책", + t56: ". 당사는 이름, 주소, 결제 정보 또는 전화번호를 포함하되 이에 국한되지 않고 개인을 직간접적으로 식별할 수 있는 개인 데이터를 수집하지 않습니다. 이 서비스를 활성화함으로써 귀하는 본 약관과 개인정보 보호정책에 대한 설명에 동의하게 됩니다.", + t57: "", + t58: "", + t59: ".", + t60: "유럽", + t61: "북미", + t62: "다른 지역", + t63: "지역을 변경하면 계정이 로그아웃됩니다. 나중에 다시 로그인해 주세요.", + t64: "Bambu 네트워크 플러그인", + t65: "Please be aware that these plugins are not developed or maintained by OrcaSlicer. They should be used at your own discretion and risk.", + t66: "전체 원격 제어", + t67: "라이브뷰 스트리밍", + t68: "사용자 데이터 동기화", + t69: "Bambu 네트워크 플러그인 설치", + t70: "", + t71: "다운로드 중", + t72: "다운로드 실패", + t73: "설치 완료.", + t74: "재시작", + t75: "Some printer vendors require proprietary plugins for communication with their printers. Please select the corresponding plugin if you use such printers.", + t76: "Bambu 네트워크 플러그인이 감지되지 않습니다. 여기를 ", + t77: "클릭", + t78: " 하여 설치하세요.", + t79: "플러그인을 설치하지 못했습니다. ", + t80: "다음 단계를 시도해 보세요:", + t81: "1, 클릭 ", + t82: " 하여 플러그인 디렉토리를 엽니다.", + t83: "2, 열려 있는 모든 Orca Slicer를 닫습니다.", + t84: "3, 플러그인 디렉터리 아래의 모든 파일 삭제합니다", + t85: "4, Orca Slicer를 다시 열고 플러그인을 다시 설치하세요.", + t86: "닫기", + t87: "사용자 메뉴얼", + t88: "제거", + t89: "포함된 폴더 열기", + t90: "3D 모델", + t91: "3D 모델 다운로드", + t92: "Bambu Christmas Cabin", + t93: "프린터 연결", + t94: "장치를 보려면 프린터 연결을 설정하세요.", + t126: "로딩 중……", + orca1: "Edit Project Info", + orca2: "No model information", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + tr_TR: { + t1: "Orca Slicer'a hoş geldiniz", + t2: "Orca Dilimleyici birkaç adımda kurulacaktır. Hadi başlayalım!", + t3: "Kullanıcı Sözleşmesi", + t4: "Reddet", + t5: "Onayla", + t6: "Herkesin yazdırma işini iyileştirmek için
yardımınızı rica ediyoruz", + t7: "Anonim verilerin gönderilmesine izin ver", + t8: "Geri", + t9: "İleri", + t10: "Yazıcı Seçimi", + t11: "Hepsi", + t12: "Hepsini temizle", + t13: "mm nozul", + t14: "Filament Seçimi", + t15: "Yazıcı", + t16: "Filament türü", + t17: "Üretici", + t18: "Hata", + t19: "En az bir filament seçilmelidir.", + t20: "Varsayılan filamenti kullanmak ister misiniz ?", + t21: "Evet", + t22: "Hayır", + t23: "Sürüm notu", + t24: "Başla", + t25: "Bitir", + t26: "Giriş Yap", + t27: "Kayıt Ol", + t28: "Son", + t29: "Mağaza", + t30: "Manual", + t31: "Yeni proje", + t32: "Yeni proje oluştur", + t33: "Projeyi Aç", + t34: "Erişim noktası", + t35: "Yakın zamanda açıldı", + t36: "OK", + t37: "En az bir yazıcı seçilmelidir.", + t38: "İptal Et", + t39: "Onayla", + t40: "Ağ bağlantısı kesildi, lütfen kontrol edin ve daha sonra tekrar deneyin.", + t47: "Lütfen giriş bölgenizi seçin", + t48: "Asya-Pasifik", + t49: "Çin", + t50: "Çıkış Yap", + t52: "Atla", + t53: "Katıl", + t54: "3D Baskı topluluğunda, kendi dilimleme parametrelerimizi ve ayarlarımızı düzenlerken birbirimizin başarılarından ve başarısızlıklarından öğreniyoruz. Orca Slicer da aynı prensibi takip ediyor ve kullanıcılarımızın yaptığı çok sayıda baskının başarı ve başarısızlıklarından performansını artırmak için makine öğrenimini kullanıyor. Orca Slicer'ı gerçek dünya verileriyle besleyerek daha akıllı olması için eğitiyoruz. İsterseniz bu hizmet, hata günlüklerinizden ve kullanım günlüklerinizden, burada açıklanan bilgileri de içerebilecek bilgilere erişecektir. ", + t55: "Gizlilik Politikası", + t56: ". İsimler, adresler, ödeme bilgileri veya telefon numaraları dahil ancak bunlarla sınırlı olmamak üzere, bir bireyin doğrudan veya dolaylı olarak tanımlanmasını sağlayacak hiçbir Kişisel Veri toplamayacağız. Bu hizmeti etkinleştirerek bu şartları ve Gizlilik Politikasına ilişkin beyanı kabul etmiş olursunuz.", + t57: "", + t58: "", + t59: ".", + t60: "Avrupa", + t61: "Kuzey Amerika", + t62: "Diğerleri", + t63: "Bölgeyi değiştirdikten sonra hesabınızdan çıkış yapılacaktır. Lütfen daha sonra tekrar giriş yapın.", + t64: "Bambu Ağı eklentisi", + t65: "Lütfen bu eklentilerin OrcaSlicer tarafından geliştirilmediğini veya bakımının yapılmadığını unutmayın. Kendi takdirinize ve riskinize göre kullanılmalıdırlar.", + t66: "Tam uzaktan kontrol", + t67: "Canlı görüntü akışı", + t68: "Kullanıcı veri senkronizasyonu", + t69: "Bambu Ağı eklentisini yükleyin", + t70: "", + t71: "İndiriliyor", + t72: "İndirme başarısız oldu", + t73: "Kurulum başarılı oldu.", + t74: "Tekrar başlat", + t75: "Bazı yazıcı üreticileri, yazıcılarıyla iletişim için özel eklentilere ihtiyaç duyar. Bu tür yazıcılar kullanıyorsanız lütfen ilgili eklentiyi seçin.", + t76: "Bambu Ağı eklentisi algılanmadı. Yüklemek ", + t77: "için ", + t78: " burayı tıklayın.", + t79: "Eklenti yüklenemedi. ", + t80: "Aşağıdaki adımları deneyin:", + t81: "1, Eklenti ", + t82: " dizinini açmak için tıklayın", + t83: "2, Tüm açık Orca slicerı kapatın", + t84: "3, Eklenti dizini altındaki tüm dosyaları silin", + t85: "4, Orca Slicer'ı yeniden açın ve eklentiyi tekrar yükleyin", + t86: "Kapat", + t87: "Kullanım kılavuzu", + t88: "Kaldır", + t89: "Dosyayı içeren klasörü açınız", + t90: "3D Model", + t91: "3D modelleri indirin", + t92: "Oluşturan", + t93: "Değiştiren", + t94: "Paylaşan", + t95: "Model Bilgileri", + t96: "Aksesuarlar", + t97: "Profil Bilgisi", + t98: "Model adı", + t100: "Model açıklaması", + t101: "Malzeme Listesi", + t102: "Montaj Kılavuzu", + t103: "Diğer", + t104: "Profil ismi", + t105: "Profil Yazarı", + t106: "Profil açıklaması", + t107: "Çevrimiçi Modeller", + t108: "DAHA FAZLA", + t109: "Sistem Filamentleri", + t110: "Özel Filamentler", + t111: "Yeni Oluştur", + t112: "Programa Katılın", + t113: "Tercihinizi istediğiniz zaman değiştirebilirsiniz.", + t126: "Yükleme devam ediyor……", + orca1: "Proje Bilgilerini Düzenle", + orca2: "Model bilgisi yok", + orca3: "Gizli Mod", + orca4: "Bu, Bambu'nun bulut hizmetlerine veri iletimini durdurur. BBL makinelerini kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle açabilir.", + orca5: "Gizli Modu etkinleştirin.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + pl_PL: { + t1: "Witamy w Orca Slicer", + t2: "Orca Slicer zostanie skonfigurowany w kilku krokach. Zacznijmy!", + t3: "Umowa użytkownika", + t4: "Nie zgadzam się", + t5: "Zgadzam się", + t6: "Uprzejmie prosimy o pomoc w ulepszaniu
druku dla każdego", + t7: "Zezwól na wysyłanie anonimowych danych", + t8: "Wstecz", + t9: "Dalej", + t10: "Wybór drukarki", + t11: "Wszystkie", + t12: "Wyczyść wszystko", + t13: "mm dysza", + t14: "Wybór filamentu", + t15: "Drukarka", + t16: "Typ filamentu", + t17: "Dostawca", + t18: "Błąd", + t19: "Przynajmniej jeden filament musi być wybrany.", + t20: "Czy chcesz użyć domyślnego filamentu?", + t21: "Tak", + t22: "Nie", + t23: "Informacje o wydaniu", + t24: "Rozpocznij", + t25: "Zakończ", + t26: "Logowanie", + t27: "Rejestracja", + t28: "Ostatnie", + t29: "Centrum", + t30: "Instrukcja", + t31: "Nowy Projekt", + t32: "Utwórz nowy projekt", + t33: "Otwórz Projekt", + t34: "hotspot", + t35: "Ostatnio otwarte", + t36: "OK", + t37: "Przynajmniej jedna drukarka musi być wybrana.", + t38: "Anuluj", + t39: "Potwierdź", + t40: "Rozłączenie sieci, proszę sprawdzić i spróbować ponownie później.", + t47: "Proszę wybrać swój region logowania", + t48: "Azja-Pacyfik", + t49: "Chiny", + t50: "Wyloguj", + t52: "Pomiń", + t53: "Dołącz", + t54: "W społeczności druku 3D uczymy się od sukcesów i porażek innych, aby dostosować nasze własne parametry i ustawienia krojenia. Orca Slicer podąża tą samą zasadą i wykorzystuje uczenie maszynowe do poprawy swojej wydajności na podstawie sukcesów i porażek dużej liczby wydruków naszych użytkowników. Szkolimy Orca Slicer, aby był mądrzejszy, dostarczając mu danych z rzeczywistego świata. Jeśli chcesz, ta usługa uzyska dostęp do informacji z Twoich logów błędów i logów użytkowania, które mogą zawierać informacje opisane w ", + t55: "Polityka Prywatności", + t56: ". Nie będziemy zbierać żadnych Danych Osobowych, przez które można bezpośrednio lub pośrednio zidentyfikować osobę, w tym bez ograniczeń nazwisk, adresów, informacji o płatnościach lub numerów telefonów. Aktywując tę usługę, zgadzasz się na te warunki i oświadczenie dotyczące Polityki Prywatności.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "Ameryka Północna", + t62: "Inne", + t63: "Po zmianie regionu, zostaniesz wylogowany z konta. Proszę zaloguj się ponownie później.", + t64: "Wtyczka Bambu Network", + t65: "Proszę mieć świadomość, że te wtyczki nie są rozwijane ani utrzymywane przez OrcaSlicer. Powinny być używane na własne ryzyko i z rozwagą.", + t66: "Pełna kontrola zdalna", + t67: "Transmisja na żywo", + t68: "Synchronizacja danych użytkownika", + t69: "Zainstaluj wtyczkę Bambu Network", + t70: "", + t71: "Pobieranie", + t72: "Nieudane pobieranie", + t73: "Instalacja zakończona sukcesem.", + t74: "Uruchom ponownie", + t75: "Niektórzy dostawcy drukarek wymagają własnych wtyczek do komunikacji ze swoimi drukarkami. Proszę wybrać odpowiednią wtyczkę, jeśli korzystasz z takich drukarek.", + t76: "Wtyczka Bambu Network nie wykryta. Kliknij ", + t77: "tutaj", + t78: " aby zainstalować.", + t79: "Nie udało się zainstalować wtyczki. ", + t80: "Spróbuj następujących kroków:", + t81: "1, Kliknij ", + t82: " aby otworzyć katalog wtyczek", + t83: "2, Zamknij wszystkie otwarte Orca Slicer", + t84: "3, Usuń wszystkie pliki z katalogu wtyczek", + t85: "4, Ponownie otwórz Orca Slicer i zainstaluj wtyczkę ponownie", + t86: "Zamknij", + t87: "Instrukcja użytkownika", + t88: "Usuń", + t89: "Otwórz folder zawierający", + t90: "Model 3D", + t91: "Pobierz modele 3D", + t92: "Utworzone przez", + t93: "Połączenie z drukarką", + t94: "Proszę skonfigurować połączenie z drukarką, aby wyświetlić urządzenie.", + t95: "Informacje o modelu", + t96: "Akcesoria", + t97: "Informacje o profilu", + t98: "Nazwa modelu", + t100: "Opis modelu", + t101: "BOM", + t102: "Przewodnik montażu", + t103: "Inne", + t104: "Nazwa profilu", + t105: "Autor profilu", + t106: "Opis profilu", + t107: "Modele online", + t108: "WIĘCEJ", + t109: "Systemowe filamenty", + t110: "Niestandardowe filamenty", + t111: "Utwórz nowy", + t112: "Dołącz do programu", + t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.", + t126: "Ładowanie trwa……", + orca1: "Edytuj informacje o projekcie", + orca2: "Brak informacji o modelu", + orca3: "Tryb «Niewidzialny»", + orca4: "To wyłączy przesyłanie danych do usług chmurowych Bambu. Użytkownicy, którzy nie korzystają z maszyn BBL lub używają tylko trybu LAN, mogą bez obaw włączyć tę opcję.", + orca5: "Włącz tryb «Niewidzialny»", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + pt_BR: { + t1: "Bem-vindo ao Orca Slicer", + t2: "Orca Slicer será configurado em várias etapas. Vamos começar!", + t3: "Termos de Uso", + t4: "Discordo", + t5: "Concordo", + t6: "Nós pedimos gentilmente sua ajuda para melhorar a impressão de todos.
Venha e junte-se ao nosso Programa de Melhoria de Experiência do Usuário", + t7: "Juntar-se ao nosso Programa de Melhoria de Experiência do Usuário", + t8: "Voltar", + t9: "Próximo", + t10: "Seleção de Impressora", + t11: "Tudo", + t12: "Limpar tudo", + t13: "mm nozzle", + t14: "Seleção de Filamento", + t15: "Impressora", + t16: "Tipo de Filamento", + t17: "Fabricante", + t18: "Erro", + t19: "Pelo menos um filamento deve ser selecionado.", + t20: "Você deseja usar o filamento padrão?", + t21: "Sim", + t22: "Não", + t23: "Notas de Atualização", + t24: "Vamos Começar", + t25: "Terminar", + t26: "Login", + t27: "Registrar", + t28: "Recente", + t29: "Loja", + t30: "Manual", + t31: "Novo Projeto", + t32: "Criar Novo Projeto", + t33: "Abrir Projeto", + t34: "hotspot", + t35: "Aberto Recentemente", + t36: "OK", + t37: "Pelo menos uma impressora deve ser selecionada.", + t38: "Cancelar", + t39: "Confirmar", + t40: "Conexão desconectada, por favor cheque e tente novamente.", + t47: "Por favor, selecione sua região de login", + t48: "Asia-Pacifico", + t49: "China", + t50: "Desconectar", + t52: "Pular", + t53: "Juntar", + t54: "Na comunidade de Impressão 3D, aprendemos com os sucessos e falhas uns dos outros para ajustar nossos próprios parâmetros e configurações de fatiamento. O Orca Slicer segue o mesmo princípio e utiliza aprendizado de máquina para melhorar seu desempenho com base nos sucessos e falhas de um grande número de impressões realizadas por nossos usuários. Estamos treinando o Orca Slicer para ser mais inteligente, alimentando-o com dados do mundo real. Se você concordar, este serviço acessará informações de seus registros de erros e registros de uso, que podem incluir informações descritas em…", + t55: "Política de Privacidade", + t56: ". Não coletaremos nenhum dado pessoal pelo qual um indivíduo possa ser identificado diretamente ou indiretamente, incluindo, sem limitação, nomes, endereços, informações de pagamento ou números de telefone. Ao habilitar este serviço, você concorda com estes termos e com a declaração sobre a Política de Privacidade.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "America do Norte", + t62: "Outras", + t63: "Após alterar sua região, sua conta será desconectada. Por favor faça login novamente mais tarde.", + t64: "Plugins Proprietários", + t65: "Por favor seja cuidadoso estes plugins não são desenvolvidos ou mantidos por OrcaSlicer. Eles devem ser usados por sua conta e risco.", + t66: "Controle remoto total", + t67: "Transmissão Ao Vivo", + t68: "Sincronização de Dados do Usuário", + t69: "Instalar Bambu Network plug-in", + t70: "", + t71: "Baixando", + t72: "Falha baixando", + t73: "Instalação concluída.", + t74: "Reiniciar", + t75: "Algumass fabricantes de impressoras exigem plugins proprietários para comunicação com suas impressoras. Se você utiliza tais impressoras, selecione o plug-in correspondente.", + t76: "Bambu Network plug-in não detectado. Clique ", + t77: "Aqui", + t78: " para instalar isto.", + t79: "Instalação do plug-in falhou. ", + t80: "Tente os seguintes passos:", + t81: "1, Clique ", + t82: " para abrir a pasta do plug-in", + t83: "2, Feche totalmente o Orca Slicer", + t84: "3, Delete todos os arquivos na pasta do plug-in", + t85: "4, Reabra o Orca Slicer e instale o plug-in novamente", + t86: "Fechar", + t87: "Manual de Usuário", + t88: "Remover", + t89: "Abrir pasta de Conteúdo", + t90: "Modelo 3D", + t91: "Baixar Modelos 3D", + t92: "Criado por", + t93: "Remixado por", + t94: "Compartilhado por", + t95: "Informações do Modelo", + t96: "Acessórios", + t97: "Informações do Perfil", + t98: "Nome do Modelo", + t100: "Descrição do Modelo", + t101: "BOM", + t102: "Guia de Montagem", + t103: "Outro", + t104: "Nome do Perfil", + t105: "Autor do Perfil", + t106: "Descrição do Perfil", + t107: "Modelos Online", + t108: "MAIS", + t109: "Filamentos do Sistema", + t110: "Filamentos Personalizados", + t111: "Criar Novo", + t112: "Junte-se ao Programa", + t113: "Você pode alterar sua escolha nas Preferências a qualquer momento", + t126: "Carregamento em andamento……", + orca1: "Editar Info do Projeto", + orca2: "Sem informação do modelo", + orca3: "Modo Furtivo", + orca4: "Isso interrompe a transmissão de dados para os serviços de nuvem da Bambu. Usuários que não usam máquinas BBL ou usam somente o modo LAN podem ativar essa função com segurança.", + orca5: "Habilita Modo Furtivo.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, + lt_LT: { + t1: "Pasisveikinkite su Orca Slicer", + t2: "Orca Slicer bus nustatyta per kelis žingsnius. Pradėkime!", + t3: "Naudotojo sutartis", + t4: "Nesutinku", + t5: "Sutinku", + t6: "Maloniai prašome jūsų pagalbos, kad pagerintume visų spausdinimą.
Prisijunkite prie mūsų klientų patirties gerinimo programos", + t7: "Prisijunkite prie mūsų klientų patirties gerinimo programos", + t8: "Atgal", + t9: "Pirmyn", + t10: "Spausdintuvo pasirinkimas", + t11: "Visi", + t12: "Išvalyti visus", + t13: "mm purkštukas", + t14: "Gijos pasirinkimas", + t15: "Spausdintuvas", + t16: "Gijos tipas", + t17: "Gamintojas", + t18: "Klaida", + t19: "Turi būti pasirinkta bent viena gija.", + t20: "Ar norite naudoti numatytąją giją?", + t21: "Taip", + t22: "Ne", + t23: "Išleidimo pastabos", + t24: "Pradėti", + t25: "Pabaigti", + t26: "Prisijungti", + t27: "Prisiregistruoti", + t28: "Naujausi", + t29: "Pirkti", + t30: "Rankinis", + t31: "Naujas projektas", + t32: "Sukurti naują projektą", + t33: "Atverti projektą", + t34: "Prieigos taškas", + t35: "Neseniai atidaryti", + t36: "Gerai", + t37: "Turi būti pasirinktas bent vienas spausdintuvas.", + t38: "Atšaukti", + t39: "Patvirtinti", + t40: "Tinklas atjungtas, patikrinkite ir bandykite vėliau.", + t47: "Pasirinkite prisijungimo regioną", + t48: "Azija-Ramusis vandenynas", + t49: "Kinija", + t50: "Atsijungti", + t52: "Praleisti", + t53: "Prisijungti", + t54: "3D spausdinimo bendruomenėje mokomės vieni iš kitų sėkmių ir nesėkmių, kad galėtume pritaikyti savo pjaustymo parametrus ir nustatymus. Orca Slicer vadovaujasi tuo pačiu principu ir naudoja mašininį mokymąsi, kad pagerintų savo veikimą, remdamasi daugybės mūsų naudotojų atspaudų sėkmėmis ir nesėkmėmis. Maitindami Orca Slicer realaus pasaulio duomenimis, mokome ją būti protingesne. Jei pageidaujate, ši paslauga pasieks informaciją iš jūsų klaidų žurnalų ir naudojimo žurnalų, į kuriuos gali būti įtraukta informacija, aprašyta ", + t55: "privatumo politikoje", + t56: ". Nerinksime jokių asmens duomenų, pagal kuriuos galima tiesiogiai ar netiesiogiai nustatyti asmens tapatybę, įskaitant, bet neapsiribojant vardus, adresus, mokėjimo informaciją ar telefono numerius. Įjungdami šią paslaugą sutinkate su šiomis sąlygomis ir privatumo politikos nuostatomis.", + t57: "", + t58: "", + t59: ".", + t60: "Europa", + t61: "Šiaurės Amerika", + t62: "Kiti", + t63: "Pakeitus regioną, jūsų paskyra bus išregistruota. Vėliau vėl prisijunkite.", + t64: "Patentuoti papildiniai", + t65: "Atkreipkite dėmesį, kad OrcaSlicer šių papildinių nesukuria ir neprižiūri. Juos turėtumėte naudoti savo nuožiūra ir rizika.", + t66: "Pilnas nuotolinis valdymas", + t67: "Tiesioginė transliacija", + t68: "Naudotojo duomenų sinchronizavimas", + t69: "Įdiegti Bambu tinklo papildinį", + t70: "", + t71: "Atsisiunčiama", + t72: "Nepavyko atsisiųsti", + t73: "Diegimas sėkmingas.", + t74: "Paleisti iš naujo", + t75: "Kai kurie spausdintuvų gamintojai reikalauja patentuotų priedų, kad būtų galima bendrauti su jų spausdintuvais. Jei naudojate tokius spausdintuvus, pasirinkite atitinkamą įskiepį.", + t76: "Neaptiktas Bambu tinklo papildinys. Spustelėkite ", + t77: "čia", + t78: " jo diegimui.", + t79: "Nepavyko įdiegti papildinio. ", + t80: "Išbandykite šiuos žingsnius:", + t81: "1, Spustelkite ", + t82: " atidaryti papildinių katalogą", + t83: "2, Uždarykite visas veikiančias Orca Slicer programas", + t84: "3, Ištrinkite visus failus iš papildinių katalogo", + t85: "4, Iš naujo atverkite OrcaSlicer ir iš naujo įdiekite papildinį", + t86: "Užverti", + t87: "Naudotojo vadovas", + t88: "Pašalinti", + t89: "Atidaryti katalogą, kuriame yra", + t90: "3D modelis", + t91: "Atsisiųsti 3D modelius", + t92: "Sukurta", + t93: "Perkurta", + t94: "Pasidalinta", + t95: "Modelio informacija", + t96: "Priedai", + t97: "Profilio informacija", + t98: "Modelio pavadinimas", + t100: "Modelio aprašymas", + t101: "BOM", + t102: "Surinkimo vadovas", + t103: "Kita", + t104: "Profilio pavadinimas", + t105: "Profilio autorius", + t106: "Profilio aprašymas", + t107: "Modeliai internete", + t108: "DAUGIAU", + t109: "Sistemos gijos", + t110: "Pasirinktinės gijos", + t111: "Sukurti naują", + t112: "Prisijungti prie programos", + t113: "Savo pasirinkimą galite bet kada pakeisti.", + orca1: "Redaguoti projekto informaciją", + orca2: "Nėra informacijos apie modelį", + orca3: "Slaptas režimas", + orca4: "Tai sustabdo duomenų perdavimą į Bambu debesijos paslaugas. Vartotojai, kurie nenaudoja BBL mašinų arba naudoja tik LAN režimą, gali drąsiai įjungti šią funkciją.", + orca5: "Įjungti slaptą režimą.", + orca6: "Bambu Cloud", + orca7: "Orca Cloud Account", + orca8: "Not signed in", + orca9: "Bambu Cloud Account", + orca10: "Not connected", + orca11: "Connected", + }, +}; + +var LANG_COOKIE_NAME = "BambuWebLang"; +var LANG_COOKIE_EXPIRESECOND = 365 * 86400; + +function TranslatePage() { + let strLang = GetQueryString("lang"); + if (strLang != null) { + //setCookie(LANG_COOKIE_NAME,strLang,LANG_COOKIE_EXPIRESECOND,'/'); + localStorage.setItem(LANG_COOKIE_NAME, strLang); + } else { + //strLang=getCookie(LANG_COOKIE_NAME); + strLang = localStorage.getItem(LANG_COOKIE_NAME); + } + + //alert(strLang); + + if (!LangText.hasOwnProperty(strLang)) strLang = "en"; + + let AllNode = $(".trans"); + let nTotal = AllNode.length; + for (let n = 0; n < nTotal; n++) { + let OneNode = AllNode[n]; + + let tid = $(OneNode).attr("tid"); + if (LangText[strLang].hasOwnProperty(tid)) { + $(OneNode).html(LangText[strLang][tid]); + } + } +} + diff --git a/resources/web/flush/WipingDialog.html b/resources/web/flush/WipingDialog.html index 1e0e9e1eea..85750866ab 100644 --- a/resources/web/flush/WipingDialog.html +++ b/resources/web/flush/WipingDialog.html @@ -6,6 +6,7 @@ * { user-select: none; -webkit-user-select: none; + box-sizing: border-box; } html, body { @@ -16,19 +17,24 @@ font-family: sans-serif; overscroll-behavior: none; } - + body { position: fixed; inset: 0; } .container { + display: flex; + flex-direction: column; + height: 100%; background: #fff; padding: 20px; padding-bottom: 10px; border: 1px solid #ccc; - max-width:fit-content(1000px); + max-width: fit-content(1000px); margin: 0 auto; + overflow: hidden; + box-sizing: border-box; } .tip-panel { @@ -36,9 +42,19 @@ padding: 10px; margin-bottom: 10px; font-size: 12px; + flex-shrink: 0; + } + + .scroll-wrapper { + flex: 1 1 0%; + min-height: 0; + display: flex; + flex-direction: column; } .scroll-container { + flex: 1 1 0%; + min-height: 80px; max-width: 100%; max-height: 500px; overflow: auto; @@ -47,6 +63,10 @@ margin: 0px; } + .description-section { + flex-shrink: 0; + } + table { border-collapse: collapse; width: 100%; @@ -152,7 +172,8 @@ display: flex; justify-content: center; gap: 0px; - margin: 10px; + margin-top: 10px; + flex-shrink: 0; } /* 暗色模式样式 */ @@ -245,7 +266,7 @@ in Orca Slicer > Preferences. -
+
-
- - - - - - - -
+
+
+ + + + + + + +
+
+ +
+
+ Flushing volume (mm³) for each filament pair. +
+
+ Suggestion: Flushing Volume in range [50, 999] +
+
+ + +
+
+ The multiplier should be in range [0.50, 3.00]. +
+
-
-
- Flushing volume (mm³) for each filament pair. -
-
- Suggestion: Flushing Volume in range [50, 999] -
-
- - -
-
- The multiplier should be in range [0.50, 3.00]. -
-
Save diff --git a/resources/web/homepage/css/dark.css b/resources/web/homepage/css/dark.css index ef94e20ce8..d4950c9c80 100644 --- a/resources/web/homepage/css/dark.css +++ b/resources/web/homepage/css/dark.css @@ -129,7 +129,12 @@ body border: 1px solid rgba(129, 129, 131, 0.64); } +/*--- Account Sections ---*/ +.AccountSectionLabel { color: #818183; } +.OrcaAccountText { color: #efeff0; } +.AccountStatusText { color: #818183; } + /*--- Bambu Cloud Section ---*/ #BambuCloudHeader { color: #818183; } #BambuCloudHeader:hover { color: #efeff0; } -.bambu-chevron svg path { stroke: currentColor; } \ No newline at end of file +.bambu-chevron svg path { stroke: currentColor; } diff --git a/resources/web/homepage/css/home.css b/resources/web/homepage/css/home.css index 2bcc18451f..e99d22ec64 100644 --- a/resources/web/homepage/css/home.css +++ b/resources/web/homepage/css/home.css @@ -80,7 +80,6 @@ body #LoginArea { - min-height: 180px; display: flex; flex-direction: column; align-items: center; @@ -89,6 +88,38 @@ body width:262px; } +.AccountSectionLabel +{ + display: flex; + align-items: center; + gap: 8px; + font-size: 13px; + font-weight: 600; + color: var(--fg-color-text); + padding: 16px 20px 6px; + width: 262px; + box-sizing: border-box; +} + +.AccountSectionIcon +{ + width: 18px; + height: 18px; + flex: 0 0 auto; +} + +.AccountStatusText +{ + font-size: 12px; + color: #A8A8A8; + margin-top: 8px; +} + +.OrcaAccountText +{ + font-weight: bold; +} + #OrcaLoginSection { display: flex; diff --git a/resources/web/homepage/index.html b/resources/web/homepage/index.html index e768c6b953..24eb8285a7 100644 --- a/resources/web/homepage/index.html +++ b/resources/web/homepage/index.html @@ -24,11 +24,17 @@
-
-
-
-
login / register
-
+
+ + Orca Cloud +
+ +
+
+
+
login / register
+
Not signed in
+
@@ -261,4 +267,3 @@ - diff --git a/resources/web/homepage/js/home.js b/resources/web/homepage/js/home.js index 72789cc088..f522c44bed 100644 --- a/resources/web/homepage/js/home.js +++ b/resources/web/homepage/js/home.js @@ -173,6 +173,7 @@ function GotoMenu( strMenu ) function SetOrcaLoginInfo( strAvatar, strName ) { $("#OrcaLogin1").hide(); + $("#OrcaStatusText").hide(); $("#UserName").text(strName); @@ -196,6 +197,7 @@ function SetOrcaUserOffline() $("#OrcaLogin1").show(); $("#OrcaLogin1").css("display","flex"); + $("#OrcaStatusText").show(); } function SetMallUrl( strUrl ) @@ -437,6 +439,8 @@ function SetBambuLoginInfo(strAvatar, strName) { $("#BambuLogin2").show(); $("#BambuLogin2").css("display", "flex"); $(".bambu-status-dot").addClass("online"); + $("#BambuStatusText").text("Connected"); + $("#BambuStatusText").attr("tid", "orca11"); } function SetBambuUserOffline() { @@ -448,6 +452,8 @@ function SetBambuUserOffline() { $("#BambuLogin1").css("display", "flex"); } $(".bambu-status-dot").removeClass("online"); + $("#BambuStatusText").text("Not connected"); + $("#BambuStatusText").attr("tid", "orca10"); } function OnBambuLoginOrRegister() { SendSimpleCommand("homepage_bambu_login_or_register"); } diff --git a/scripts/build_flatpak_with_docker.sh b/scripts/build_flatpak_with_docker.sh index 898ec2c56a..9e8805af2f 100755 --- a/scripts/build_flatpak_with_docker.sh +++ b/scripts/build_flatpak_with_docker.sh @@ -22,7 +22,7 @@ ARCH="$(uname -m)" NO_DEBUG_INFO=false FORCE_PULL=false FORCE_CLEAN=true -CONTAINER_IMAGE="ghcr.io/flathub-infra/flatpak-github-actions:gnome-49" +CONTAINER_IMAGE="ghcr.io/flathub-infra/flatpak-github-actions:gnome-50" normalize_arch() { case "$1" in @@ -142,6 +142,16 @@ fi DOCKER_RUN_ARGS=(run --rm -i --privileged) +# When building from a git worktree, $PROJECT_ROOT/.git is a file pointing to the +# main repo's git dir (outside $PROJECT_ROOT). The git commands and flatpak-builder +# inside the container need that path to resolve, so bind-mount the common git dir +# read-only at its original absolute path. No-op for a normal clone. +GIT_COMMON_DIR="$(git -C "$PROJECT_ROOT" rev-parse --path-format=absolute --git-common-dir 2>/dev/null || true)" +if [ -n "$GIT_COMMON_DIR" ] && [ "$GIT_COMMON_DIR" != "$PROJECT_ROOT/.git" ]; then + echo " Git worktree detected; mounting common git dir read-only: $GIT_COMMON_DIR" + DOCKER_RUN_ARGS+=(-v "$GIT_COMMON_DIR":"$GIT_COMMON_DIR":ro) +fi + # Pass build parameters as env vars so the inner script doesn't need # variable expansion from the outer shell (avoids quoting issues). echo "=== Starting Flatpak build inside container ===" @@ -167,16 +177,16 @@ format_duration() { overall_start=$(date +%s) install_start=$overall_start -# The workspace and .flatpak-builder cache are bind-mounted from the host. -# Git inside the container may reject cached source repos as unsafe due to -# ownership mismatch, which breaks flatpak-builder when it reuses git sources. -git config --global --add safe.directory /src -git config --global --add safe.directory '/src/.flatpak-builder/git/*' +# This container runs as root, but the bind-mounted workspace and .flatpak-builder +# cache are host-user-owned, so git's dubious-ownership check rejects them and +# breaks flatpak-builder's git checkouts (e.g. wxWidgets). Trust every repo: safe +# in this ephemeral build container, and covers the workspace, mirrors and builds. +git config --global --add safe.directory '*' # Install required SDK extensions (not pre-installed in the container image) flatpak install -y --noninteractive --arch="$BUILD_ARCH" flathub \ - org.gnome.Platform//49 \ - org.gnome.Sdk//49 \ + org.gnome.Platform//50 \ + org.gnome.Sdk//50 \ org.freedesktop.Sdk.Extension.llvm21//25.08 || true install_end=$(date +%s) diff --git a/scripts/flatpak/com.orcaslicer.OrcaSlicer.metainfo.xml b/scripts/flatpak/com.orcaslicer.OrcaSlicer.metainfo.xml index 8436a478cc..9ec11fa930 100644 --- a/scripts/flatpak/com.orcaslicer.OrcaSlicer.metainfo.xml +++ b/scripts/flatpak/com.orcaslicer.OrcaSlicer.metainfo.xml @@ -45,6 +45,12 @@ #00695C + + https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds + +

See the release page for detailed changelog.

+
+
https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/v2.3.2 diff --git a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml index bb42b48607..8c1f734e1c 100644 --- a/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/com.orcaslicer.OrcaSlicer.yml @@ -1,6 +1,6 @@ app-id: com.orcaslicer.OrcaSlicer runtime: org.gnome.Platform -runtime-version: "49" +runtime-version: "50" sdk: org.gnome.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.llvm21 @@ -24,6 +24,11 @@ finish-args: - --filesystem=xdg-run/gvfs - --filesystem=/run/media - --filesystem=/media + # Network shares (CIFS/NFS) are commonly mounted under /mnt, which the default + # finish-args don't grant; without it, opening a model from such a share fails + # with "The file does not contain any geometry data." + # https://github.com/flathub/com.orcaslicer.OrcaSlicer/issues/2 + - --filesystem=/mnt - --filesystem=/run/spnav.sock:ro # Allow read-only access to OrcaSlicer's legacy config and cache directories (if they exist) for migration purposes. - --filesystem=~/.var/app/io.github.orcaslicer.OrcaSlicer:ro @@ -115,7 +120,12 @@ modules: - -DwxUSE_ZLIB=sys - -DwxUSE_LIBJPEG=sys - -DwxUSE_LIBTIFF=OFF + # sys, not builtin (unlike the static deps build): wxWidgets installs the + # builtin libwxwebp*.so only for static builds, so a shared build leaves + # them missing at runtime. The GNOME runtime provides libwebp. + - -DwxUSE_LIBWEBP=sys - -DwxUSE_EXPAT=sys + - -DwxUSE_NANOSVG=OFF - -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld - -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld - -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld diff --git a/scripts/flatpak/setup_env_ubuntu24.04.sh b/scripts/flatpak/setup_env_ubuntu24.04.sh index 68bf325497..a0ccbb9b32 100755 --- a/scripts/flatpak/setup_env_ubuntu24.04.sh +++ b/scripts/flatpak/setup_env_ubuntu24.04.sh @@ -3,7 +3,7 @@ sudo apt update sudo apt install build-essential flatpak flatpak-builder gnome-software-plugin-flatpak -y flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo -flatpak install flathub org.gnome.Platform//48 org.gnome.Sdk//48 +flatpak install flathub org.gnome.Platform//50 org.gnome.Sdk//50 org.freedesktop.Sdk.Extension.llvm21//25.08 ## diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 0a1ee7a214..7107e1ba1e 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #if defined(__linux__) || defined(__LINUX__) #include @@ -4456,7 +4457,7 @@ int CLI::run(int argc, char **argv) size_t num_objects = model.objects.size(); for (size_t i = 0; i < num_objects; ++ i) { ModelObjectPtrs new_objects; - model.objects.front()->split(&new_objects); + model.objects.front()->split(&new_objects, false); // TODO: add cli option to enable this? model.delete_object(size_t(0)); } } @@ -6435,6 +6436,7 @@ int CLI::run(int argc, char **argv) glfwGetVersion(&gl_major, &gl_minor, &gl_verbos); BOOST_LOG_TRIVIAL(info) << boost::format("opengl version %1%.%2%.%3%")%gl_major %gl_minor %gl_verbos; + bool thumbnail_opengl_ready = false; glfwSetErrorCallback(glfw_callback); int ret = glfwInit(); if (ret == GLFW_FALSE) { @@ -6463,13 +6465,22 @@ int CLI::run(int argc, char **argv) GLFWwindow* window = glfwCreateWindow(640, 480, "base_window", NULL, NULL); if (window == NULL) { - BOOST_LOG_TRIVIAL(error) << "Failed to create GLFW window" << std::endl; + BOOST_LOG_TRIVIAL(error) << "Failed to create GLFW window; skipping thumbnail rendering for CLI export" << std::endl; } - else + else { glfwMakeContextCurrent(window); + thumbnail_opengl_ready = true; + } } //opengl manager related logic + if (!thumbnail_opengl_ready) { + BOOST_LOG_TRIVIAL(error) << "OpenGL context unavailable; skip thumbnail generating" << std::endl; + need_create_thumbnail_group = false; + need_create_no_light_group = false; + need_create_top_group = false; + } + else { GUI::OpenGLManager opengl_mgr; bool opengl_valid = opengl_mgr.init_gl(false); @@ -7449,6 +7460,13 @@ extern "C" { #else /* _MSC_VER */ int main(int argc, char **argv) { +#ifndef _WIN32 + // Ignore SIGPIPE so a write to a closed socket (e.g. a dropped printer + // network connection) returns EPIPE to the caller instead of terminating + // the whole process. Without this, losing the printer link kills + // OrcaSlicer with SIGPIPE (exit 141) and produces no crash report. + std::signal(SIGPIPE, SIG_IGN); +#endif return CLI().run(argc, argv); } #endif /* _MSC_VER */ diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 55918e86c2..b35a754c2b 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -212,8 +212,14 @@ void AppConfig::set_defaults() if (get("camera_navigation_style").empty()) set("camera_navigation_style", "0"); - if (get("swap_mouse_buttons").empty()) - set_bool("swap_mouse_buttons", false); + if (get("left_mouse_drag_action").empty()) + set("left_mouse_drag_action", "2"); + + if (get("middle_mouse_drag_action").empty()) + set("middle_mouse_drag_action", "1"); + + if (get("right_mouse_drag_action").empty()) + set("right_mouse_drag_action", "1"); if (get("reverse_mouse_wheel_zoom").empty()) set_bool("reverse_mouse_wheel_zoom", false); @@ -230,6 +236,29 @@ void AppConfig::set_defaults() if (get("camera_orbit_mult").empty()) set("camera_orbit_mult", "1.0"); + if (get(SETTING_OPENGL_AA_SAMPLES).empty()) + set(SETTING_OPENGL_AA_SAMPLES, "4"); + + if (get(SETTING_OPENGL_FXAA_ENABLED).empty()) + set_bool(SETTING_OPENGL_FXAA_ENABLED, false); + + if (get(SETTING_OPENGL_FPS_CAP).empty()) + set(SETTING_OPENGL_FPS_CAP, "0"); + else { + int fps_cap = 0; + try { + fps_cap = std::stoi(get(SETTING_OPENGL_FPS_CAP)); + } + catch (...) { + fps_cap = 0; + } + fps_cap = std::max(0, std::min(fps_cap, 240)); + set(SETTING_OPENGL_FPS_CAP, std::to_string(fps_cap)); + } + + if (get(SETTING_OPENGL_SHOW_FPS_OVERLAY).empty()) + set_bool(SETTING_OPENGL_SHOW_FPS_OVERLAY, false); + if (get("export_sources_full_pathnames").empty()) set_bool("export_sources_full_pathnames", false); diff --git a/src/libslic3r/AppConfig.hpp b/src/libslic3r/AppConfig.hpp index 06b919484f..33f243905a 100644 --- a/src/libslic3r/AppConfig.hpp +++ b/src/libslic3r/AppConfig.hpp @@ -30,6 +30,10 @@ using namespace nlohmann; #define SETTING_NETWORK_PLUGIN_REMIND_LATER "network_plugin_remind_later" #define SETTING_USE_ENCRYPTED_TOKEN_FILE "use_encrypted_token_file" #define SETTING_CLOUD_PROVIDERS "cloud_providers" +#define SETTING_OPENGL_AA_SAMPLES "opengl_antialiasing_samples" +#define SETTING_OPENGL_FXAA_ENABLED "opengl_fxaa_enabled" +#define SETTING_OPENGL_FPS_CAP "opengl_fps_cap" +#define SETTING_OPENGL_SHOW_FPS_OVERLAY "opengl_show_fps_overlay" #if defined(_WIN32) || defined(_WIN64) #define BAMBU_NETWORK_AGENT_VERSION_LEGACY "01.10.01.09" diff --git a/src/libslic3r/CutUtils.cpp b/src/libslic3r/CutUtils.cpp index 8611ec302d..f8b1483773 100644 --- a/src/libslic3r/CutUtils.cpp +++ b/src/libslic3r/CutUtils.cpp @@ -63,7 +63,7 @@ static void add_cut_volume(TriangleMesh& mesh, ModelObject* object, const ModelV vol->cut_info = src_volume->cut_info; } -static void process_volume_cut( ModelVolume* volume, const Transform3d& instance_matrix, const Transform3d& cut_matrix, +static void process_volume_cut( const ModelVolume* volume, const Transform3d& instance_matrix, const Transform3d& cut_matrix, ModelObjectCutAttributes attributes, TriangleMesh& upper_mesh, TriangleMesh& lower_mesh) { const auto volume_matrix = volume->get_matrix(); @@ -178,7 +178,7 @@ static void process_modifier_cut(ModelVolume* volume, const Transform3d& instanc lower->add_volume(*volume); } -static void process_solid_part_cut(ModelVolume* volume, const Transform3d& instance_matrix, const Transform3d& cut_matrix, +static void process_solid_part_cut(const ModelVolume* volume, const Transform3d& instance_matrix, const Transform3d& cut_matrix, ModelObjectCutAttributes attributes, ModelObject* upper, ModelObject* lower) { // Perform cut @@ -279,9 +279,22 @@ void Cut::post_process(ModelObject* upper, ModelObject* lower, ModelObjectPtrs& } -void Cut::finalize(const ModelObjectPtrs& objects) +void Cut::finalize(const ModelObjectPtrs& objects, const std::vector>& saved_paintings) { - //clear model from temporarry objects + // Paint volumes + for (const auto& saved_painting : saved_paintings) { + if (saved_painting) { + for (const auto object : objects) { + for (const auto volume : object->volumes) { + if (volume->is_model_part() && !volume->is_cut_connector()) { + volume->restore_painting(saved_painting, true); + } + } + } + } + } + + //clear model from temporary objects m_model.clear_objects(); // add to model result objects @@ -320,7 +333,17 @@ const ModelObjectPtrs& Cut::perform_with_plane() const Transformation cut_transformation = Transformation(m_cut_matrix); const Transform3d inverse_cut_matrix = cut_transformation.get_rotation_matrix().inverse() * translation_transform(-1. * cut_transformation.get_offset()); + std::vector> saved_paintings; for (ModelVolume* volume : mo->volumes) { + // Save painting data before reset_extra_facets() discards it. + if (m_attributes.has(ModelObjectCutAttribute::KeepPaint)) { + saved_paintings.emplace_back(volume->save_painting()); + if (saved_paintings.back()) { + // Transform mesh to cut space (same transform as process_volume_cut applies) + saved_paintings.back()->mesh.transform(instance_matrix * volume->get_matrix(), true); + } + } + volume->reset_extra_facets(); if (!volume->is_model_part()) { @@ -376,9 +399,9 @@ const ModelObjectPtrs& Cut::perform_with_plane() } } - BOOST_LOG_TRIVIAL(trace) << "ModelObject::cut - end"; + finalize(cut_object_ptrs, saved_paintings); - finalize(cut_object_ptrs); + BOOST_LOG_TRIVIAL(trace) << "ModelObject::cut - end"; return m_model.objects; } @@ -431,7 +454,7 @@ static void merge_solid_parts_inside_object(ModelObjectPtrs& objects) } -const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowels_count) +const ModelObjectPtrs& Cut::perform_by_contour(const ModelObject* src_object, std::vector parts, int dowels_count) { ModelObject* cut_mo = m_model.objects.front(); @@ -446,6 +469,19 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe lower->name = lower->name + "_B"; } + // Save painting data so we later can remap it. + std::vector> saved_paintings; + if (m_attributes.has(ModelObjectCutAttribute::KeepPaint)) { + const auto instance_matrix = src_object->instances[m_instance]->get_transformation().get_matrix_no_offset(); + for (const auto volume : src_object->volumes) { + saved_paintings.emplace_back(volume->save_painting()); + if (saved_paintings.back()) { + // Transform mesh to cut space (same transform as process_volume_cut applies) + saved_paintings.back()->mesh.transform(instance_matrix * volume->get_matrix(), true); + } + } + } + const size_t cut_parts_cnt = parts.size(); bool has_modifiers = false; @@ -475,7 +511,7 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe merge_solid_parts_inside_object(cut_object_ptrs); // replace initial objects in model with cut object - finalize(cut_object_ptrs); + finalize(cut_object_ptrs, saved_paintings); } else if (volumes.size() > cut_parts_cnt) { // Means that object is cut with connectors @@ -506,7 +542,7 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe merge_solid_parts_inside_object(cut_object_ptrs); // replace initial objects in model with cut object - finalize(cut_object_ptrs); + finalize(cut_object_ptrs, saved_paintings); // Add Dowel-connectors as separate objects to model if (cut_connectors_obj.size() >= 3) @@ -518,7 +554,12 @@ const ModelObjectPtrs& Cut::perform_by_contour(std::vector parts, int dowe } -const ModelObjectPtrs& Cut::perform_with_groove(const Groove& groove, const Transform3d& rotation_m, bool keep_as_parts/* = false*/) +const ModelObjectPtrs& Cut::perform_with_groove(const Groove& groove, + const Transform3d& rotation_m, + const int groove_count, + const float groove_gap, + const float m_radius, + bool keep_as_parts /* = false*/) { ModelObject* cut_mo = m_model.objects.front(); @@ -532,6 +573,20 @@ const ModelObjectPtrs& Cut::perform_with_groove(const Groove& groove, const Tran upper->name = upper->name + "_A"; lower->name = lower->name + "_B"; } + + // Save painting data so we later can remap it. + std::vector> saved_paintings; + if (m_attributes.has(ModelObjectCutAttribute::KeepPaint)) { + const auto instance_matrix = cut_mo->instances[m_instance]->get_transformation().get_matrix_no_offset(); + for (const auto volume : cut_mo->volumes) { + saved_paintings.emplace_back(volume->save_painting()); + if (saved_paintings.back()) { + // Transform mesh to cut space (same transform as process_volume_cut applies) + saved_paintings.back()->mesh.transform(instance_matrix * volume->get_matrix(), true); + } + } + } + const double groove_half_depth = 0.5 * double(groove.depth); Model tmp_model_for_cut = Model(); @@ -565,61 +620,108 @@ const ModelObjectPtrs& Cut::perform_with_groove(const Groove& groove, const Tran reset_instance_transformation(object, m_instance); }; - // cut by upper plane - - const Transform3d cut_matrix_upper = translation_transform(rotation_m * (groove_half_depth * Vec3d::UnitZ())) * m_cut_matrix; + // cut by upper plane (+Z) { + const Transform3d cut_matrix_upper = translation_transform(rotation_m * (groove_half_depth * Vec3d::UnitZ())) * m_cut_matrix; + cut(tmp_object, cut_matrix_upper, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); add_volumes_from_cut(upper, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); } - // cut by lower plane - - const Transform3d cut_matrix_lower = translation_transform(rotation_m * (-groove_half_depth * Vec3d::UnitZ())) * m_cut_matrix; + // cut by lower plane (-Z) { + const Transform3d cut_matrix_lower = translation_transform(rotation_m * (-groove_half_depth * Vec3d::UnitZ())) * m_cut_matrix; + cut(tmp_object, cut_matrix_lower, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); add_volumes_from_cut(lower, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); } - // cut middle part with 2 angles and add parts to related upper/lower objects + // Compute same slot outer width used in preview plane + const float groove_width = calculate_groove_width(groove, m_radius); - const double h_side_shift = 0.5 * double(groove.width + groove.depth / tan(groove.flaps_angle)); + ModelObject* groove_object{nullptr}; - // cut by angle1 plane - { - const Transform3d cut_matrix_angle1 = translation_transform(rotation_m * (-h_side_shift * Vec3d::UnitX())) * m_cut_matrix * rotation_transform(Vec3d(0, -groove.flaps_angle, -groove.angle)); + // multiple cuts + for (int i = 0; i < groove_count; i++) { + bool is_first_groove = i == 0; + bool is_last_groove = i == groove_count - 1; - cut(tmp_object, cut_matrix_angle1, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); - add_volumes_from_cut(lower, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + // Calculate the x-axis offset for this dovetail + float groove_offset_factor_start = -.5 * ((groove_count - 1)); + float groove_offset_factor = groove_offset_factor_start + i; + + float offset_x = groove_offset_factor * (groove_gap + groove_width); + + + tmp_object->clone_for_cut(&groove_object); + for (ModelVolume* volume : tmp_object->volumes) { + ModelVolume* new_vol = groove_object->add_volume(*volume); + new_vol->reset_from_upper(); + } + + // isolate area of current groove + if (!is_first_groove) { + float left_cut_position = (-groove_gap / 2.f) - (groove_width / 2.f) + offset_x; + + const Transform3d cut_matrix_left = translation_transform(rotation_m * (left_cut_position * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, M_PI / 2.0, 0)); + + cut(groove_object, cut_matrix_left, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + } + if (!is_last_groove) { + float right_cut_position = (groove_gap / 2.f) + (groove_width / 2.f) + offset_x; + + const Transform3d cut_matrix_right = translation_transform(rotation_m * (right_cut_position * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, M_PI / 2.0, 0)); + cut(groove_object, cut_matrix_right, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); + } + + const Transform3d groove_translation = translation_transform(rotation_m * (offset_x * Vec3d::UnitX())); + // cut middle part with 2 angles and add parts to related upper/lower objects + const double h_side_shift = 0.5 * double(groove.width + groove.depth / tan(groove.flaps_angle)); + + // cut by angle1 plane + { + const Transform3d cut_matrix_angle1 = groove_translation * translation_transform(rotation_m * (-h_side_shift * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, -groove.flaps_angle, -groove.angle)); + + cut(groove_object, cut_matrix_angle1, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); + add_volumes_from_cut(lower, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + } + + // cut by angle2 plane + { + const Transform3d cut_matrix_angle2 = groove_translation * translation_transform(rotation_m * (h_side_shift * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, groove.flaps_angle, groove.angle)); + + cut(groove_object, cut_matrix_angle2, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); + add_volumes_from_cut(lower, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + } + + // apply tolerance to the middle part + { + const double h_groove_shift_tolerance = groove_half_depth - (double)groove.depth_tolerance; + + const Transform3d cut_matrix_lower_tolerance = groove_translation * translation_transform(rotation_m * (-h_groove_shift_tolerance * Vec3d::UnitZ())) * + m_cut_matrix; + cut(groove_object, cut_matrix_lower_tolerance, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + + const double h_side_shift_tolerance = h_side_shift - 0.5 * double(groove.width_tolerance); + + const Transform3d cut_matrix_angle1_tolerance = groove_translation * translation_transform(rotation_m * (-h_side_shift_tolerance * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, -groove.flaps_angle, -groove.angle)); + cut(groove_object, cut_matrix_angle1_tolerance, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); + + const Transform3d cut_matrix_angle2_tolerance = groove_translation * translation_transform(rotation_m * (h_side_shift_tolerance * Vec3d::UnitX())) * + m_cut_matrix * rotation_transform(Vec3d(0, groove.flaps_angle, groove.angle)); + cut(groove_object, cut_matrix_angle2_tolerance, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); + } + + add_volumes_from_cut(upper, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); + + groove_object->clear_volumes(); } - // cut by angle2 plane - { - const Transform3d cut_matrix_angle2 = translation_transform(rotation_m * (h_side_shift * Vec3d::UnitX())) * m_cut_matrix * rotation_transform(Vec3d(0, groove.flaps_angle, groove.angle)); - - cut(tmp_object, cut_matrix_angle2, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); - add_volumes_from_cut(lower, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); - } - - // apply tolerance to the middle part - { - const double h_groove_shift_tolerance = groove_half_depth - (double)groove.depth_tolerance; - - const Transform3d cut_matrix_lower_tolerance = translation_transform(rotation_m * (-h_groove_shift_tolerance * Vec3d::UnitZ())) * m_cut_matrix; - cut(tmp_object, cut_matrix_lower_tolerance, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); - - const double h_side_shift_tolerance = h_side_shift - 0.5 * double(groove.width_tolerance); - - const Transform3d cut_matrix_angle1_tolerance = translation_transform(rotation_m * (-h_side_shift_tolerance * Vec3d::UnitX())) * m_cut_matrix * rotation_transform(Vec3d(0, -groove.flaps_angle, -groove.angle)); - cut(tmp_object, cut_matrix_angle1_tolerance, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); - - const Transform3d cut_matrix_angle2_tolerance = translation_transform(rotation_m * (h_side_shift_tolerance * Vec3d::UnitX())) * m_cut_matrix * rotation_transform(Vec3d(0, groove.flaps_angle, groove.angle)); - cut(tmp_object, cut_matrix_angle2_tolerance, ModelObjectCutAttribute::KeepUpper, tmp_model_for_cut); - } - - // this part can be added to the upper object now - add_volumes_from_cut(upper, ModelObjectCutAttribute::KeepLower, tmp_model_for_cut); - ModelObjectPtrs cut_object_ptrs; if (keep_as_parts) { @@ -658,10 +760,24 @@ const ModelObjectPtrs& Cut::perform_with_groove(const Groove& groove, const Tran merge_solid_parts_inside_object(cut_object_ptrs); } - finalize(cut_object_ptrs); + finalize(cut_object_ptrs, saved_paintings); return m_model.objects; } +float Cut::calculate_groove_width (const Cut::Groove& groove, const float m_radius) +{ + // Compute same slot outer width used in preview plane + const double flap_width = is_approx(groove.flaps_angle, 0.f) ? groove.depth : groove.depth / sin(groove.flaps_angle); + const double total_flap_width = 2.0 * flap_width * cos(groove.flaps_angle); + const double slot_neck_half_width = 0.5f * (groove.width); + const double slot_mouth_half_width = 0.5 * (groove.width + total_flap_width); + const double plane_half_height = 0.5f* (1.5f * (1.5f *m_radius)); + const double flap_taper_offset = plane_half_height * tan(groove.angle); + const double slot_outer_x_max = std::max(slot_mouth_half_width + flap_taper_offset, slot_neck_half_width + flap_taper_offset); + + return float(2.0 * slot_outer_x_max); +} + } // namespace Slic3r diff --git a/src/libslic3r/CutUtils.hpp b/src/libslic3r/CutUtils.hpp index 2c477a3e2b..b7f31d7b9a 100644 --- a/src/libslic3r/CutUtils.hpp +++ b/src/libslic3r/CutUtils.hpp @@ -11,7 +11,7 @@ namespace Slic3r { using ModelObjectPtrs = std::vector; -enum class ModelObjectCutAttribute : int { KeepUpper, KeepLower, KeepAsParts, FlipUpper, FlipLower, PlaceOnCutUpper, PlaceOnCutLower, CreateDowels, InvalidateCutInfo }; +enum class ModelObjectCutAttribute : int { KeepUpper, KeepLower, KeepAsParts, FlipUpper, FlipLower, PlaceOnCutUpper, PlaceOnCutLower, CreateDowels, InvalidateCutInfo, KeepPaint }; using ModelObjectCutAttributes = enum_bitmask; ENABLE_ENUM_BITMASK_OPERATORS(ModelObjectCutAttribute); @@ -25,7 +25,7 @@ class Cut { void post_process(ModelObject* object, ModelObjectPtrs& objects, bool keep, bool place_on_cut, bool flip); void post_process(ModelObject* upper_object, ModelObject* lower_object, ModelObjectPtrs& objects); - void finalize(const ModelObjectPtrs& objects); + void finalize(const ModelObjectPtrs& objects, const std::vector>& saved_paintings); public: @@ -56,10 +56,16 @@ public: }; const ModelObjectPtrs& perform_with_plane(); - const ModelObjectPtrs& perform_by_contour(std::vector parts, int dowels_count); - const ModelObjectPtrs& perform_with_groove(const Groove& groove, const Transform3d& rotation_m, bool keep_as_parts = false); + const ModelObjectPtrs& perform_by_contour(const ModelObject* src_object, std::vector parts, int dowels_count); + const ModelObjectPtrs& perform_with_groove(const Groove& groove, + const Transform3d& rotation_m, + const int groove_count, + const float groove_gap, + const float m_radius, + bool keep_as_parts = false); -}; // namespace Cut + static float calculate_groove_width(const Cut::Groove& groove, const float m_radius); + }; // namespace Cut } // namespace Slic3r diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 74e6d14d14..d47518bbca 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -271,6 +271,9 @@ struct SurfaceFillParams // Params for Lateral honeycomb float infill_overhang_angle = 60.f; + // For Gyroid: when true, use the parameterized "optimized" wave. + bool gyroid_optimized = false; + bool operator<(const SurfaceFillParams &rhs) const { #define RETURN_COMPARE_NON_EQUAL(KEY) if (this->KEY < rhs.KEY) return true; if (this->KEY > rhs.KEY) return false; #define RETURN_COMPARE_NON_EQUAL_TYPED(TYPE, KEY) if (TYPE(this->KEY) < TYPE(rhs.KEY)) return true; if (TYPE(this->KEY) > TYPE(rhs.KEY)) return false; @@ -303,6 +306,7 @@ struct SurfaceFillParams RETURN_COMPARE_NON_EQUAL(symmetric_infill_y_axis); RETURN_COMPARE_NON_EQUAL(infill_lock_depth); RETURN_COMPARE_NON_EQUAL(skin_infill_depth); RETURN_COMPARE_NON_EQUAL(infill_overhang_angle); + RETURN_COMPARE_NON_EQUAL(gyroid_optimized); return false; } @@ -330,7 +334,8 @@ struct SurfaceFillParams this->lateral_lattice_angle_2 == rhs.lateral_lattice_angle_2 && this->infill_lock_depth == rhs.infill_lock_depth && this->skin_infill_depth == rhs.skin_infill_depth && - this->infill_overhang_angle == rhs.infill_overhang_angle; + this->infill_overhang_angle == rhs.infill_overhang_angle && + this->gyroid_optimized == rhs.gyroid_optimized; } }; @@ -920,6 +925,12 @@ std::vector group_fills(const Layer &layer, LockRegionParam &lock_p // Orca: apply fill multiline only for sparse infill params.multiline = params.extrusion_role == erInternalInfill ? int(region_config.fill_multiline) : 1; + // Pass through gyroid_optimized only when the effective pattern is Gyroid, + // so non-Gyroid fills do not differ in SurfaceFillParams by an irrelevant flag + // (which would unnecessarily split fill batching). + // Stored on SurfaceFillParams; copied to FillParams during conversion. + params.gyroid_optimized = (params.pattern == ipGyroid) && region_config.gyroid_optimized; + if (params.extrusion_role == erInternalInfill) { params.angle = calculate_infill_rotation_angle(layer.object(), layer.id(), region_config.infill_direction.value, region_config.sparse_infill_rotate_template.value); @@ -1273,6 +1284,7 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive: params.lateral_lattice_angle_1 = surface_fill.params.lateral_lattice_angle_1; params.lateral_lattice_angle_2 = surface_fill.params.lateral_lattice_angle_2; params.infill_overhang_angle = surface_fill.params.infill_overhang_angle; + params.gyroid_optimized = surface_fill.params.gyroid_optimized; // BBS params.flow = surface_fill.params.flow; @@ -1468,6 +1480,7 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc params.lateral_lattice_angle_2 = surface_fill.params.lateral_lattice_angle_2; params.infill_overhang_angle = surface_fill.params.infill_overhang_angle; params.multiline = surface_fill.params.multiline; + params.gyroid_optimized = surface_fill.params.gyroid_optimized; for (ExPolygon &expoly : surface_fill.expolygons) { // Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon. diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp index 47195c850d..ef6a6bc804 100644 --- a/src/libslic3r/Fill/FillBase.hpp +++ b/src/libslic3r/Fill/FillBase.hpp @@ -79,6 +79,9 @@ struct FillParams // Layer height for Concentric infill with Arachne. coordf_t layer_height { 0.f }; + // For Gyroid: when true, use the parameterized "optimized" variant. + bool gyroid_optimized { false }; + // For Lateral lattice coordf_t lateral_lattice_angle_1 { 0.f }; coordf_t lateral_lattice_angle_2 { 0.f }; diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp index 8700c1746e..c740dd2b4b 100644 --- a/src/libslic3r/Fill/FillGyroid.cpp +++ b/src/libslic3r/Fill/FillGyroid.cpp @@ -1,4 +1,5 @@ #include "../ClipperUtils.hpp" +#include "../MarchingSquares.hpp" #include "../ShortestPath.hpp" #include "../Surface.hpp" #include @@ -7,6 +8,99 @@ #include "FillBase.hpp" #include "FillGyroid.hpp" +// --------------------------------------------------------------------------- +// Marching-squares scalar field for the optimized gyroid branch. +// Modeled after FillTpmsFK.cpp's ScalarField. +// +// The gyroid scalar field is the standard implicit equation +// F(x,y,z) = sin(fx*x)cos(fy*y) + sin(fy*y)cos(fz*z) + sin(fz*z)cos(fx*x) +// Marching squares extracts the iso-zero contour, which gives smoother +// transitions between vertical and horizontal regimes than the analytical +// asin-based wave generator. Setting fz = omega * baseline anisotropically +// tightens the wave along the layer-stacking axis, shortening the effective +// vertical strand length and improving column-buckling resistance under +// Z-axis compression. +// --------------------------------------------------------------------------- +namespace marchsq { +using namespace Slic3r; + +using coordr_t = long; +using Pointf = Vec2d; + +struct GyroidField +{ + static constexpr float gsizef = 0.40f; + static constexpr float rsizef = 0.004f; + const coord_t rsize = scaled(rsizef); + const coordr_t gsize = std::round(gsizef / rsizef); + Point size; + Point offs; + coordf_t z; + float fx; + float fy; + float fz; + float isoval = 0.0f; + + explicit GyroidField(const BoundingBox bb, const coordf_t z, const float period, const float omega = 1.0f) + : size{bb.size()}, offs{bb.min}, z{z} + { + const float baseline = float(2.0 * PI) / std::max(period, 1e-3f); + fx = baseline; + fy = baseline; + fz = omega * baseline; + } + + float get_scalar(coordf_t x, coordf_t y, coordf_t z_arg) const + { + const float a = fx * float(x); + const float b = fy * float(y); + const float c = fz * float(z_arg); + return std::sin(a) * std::cos(b) + std::sin(b) * std::cos(c) + std::sin(c) * std::cos(a); + } + + float get_scalar(Coord p) const + { + Pointf pf = to_Pointf(p); + return get_scalar(pf.x(), pf.y(), z); + } + + inline coord_t to_coord (const coordr_t& x) const { return x * rsize; } + inline coordr_t to_coordr(const coord_t& x) const { return x / rsize; } + inline Point to_Point (const Coord& p) const { return Point(to_coord(p.c) + offs.x(), to_coord(p.r) + offs.y()); } + inline Coord to_Coord (const Point& p) const { return Coord(to_coordr(p.y() - offs.y()), to_coordr(p.x() - offs.x())); } + inline Pointf to_Pointf(const Point& p) const { return Pointf(unscaled(p.x()), unscaled(p.y())); } + inline Pointf to_Pointf(const Coord& p) const { return to_Pointf(to_Point(p)); } +}; + +template<> struct _RasterTraits +{ + using ValueType = float; + static float get (const GyroidField& sf, size_t row, size_t col) { return sf.get_scalar(Coord(row, col)); } + static size_t rows(const GyroidField& sf) { return sf.to_coordr(sf.size.y()); } + static size_t cols(const GyroidField& sf) { return sf.to_coordr(sf.size.x()); } +}; + +inline Polylines get_gyroid_polylines(const GyroidField& sf, const double tolerance = SCALED_EPSILON) +{ + std::vector rings = execute_with_policy(ex_tbb, sf, sf.isoval, {sf.gsize, sf.gsize}); + Polylines polys; + polys.reserve(rings.size()); + for (const Ring& ring : rings) { + Polyline poly; + Points& pts = poly.points; + pts.reserve(ring.size() + 1); + for (const Coord& crd : ring) + pts.emplace_back(sf.to_Point(crd)); + pts.push_back(pts.front()); + if (tolerance >= 0.0) + poly.simplify(tolerance); + polys.emplace_back(poly); + } + return polys; +} + +} // namespace marchsq + namespace Slic3r { static inline double f(double x, double z_sin, double z_cos, bool vertical, bool flip) @@ -102,6 +196,49 @@ static std::vector make_one_period(double width, double scaleFactor, doub return points; } +// --------------------------------------------------------------------------- +// "Optimized" gyroid wave: marching-squares variant gated on +// params.gyroid_optimized. The wave shape is extracted from the gyroid +// implicit scalar field (see marchsq::GyroidField above) at iso=0, with +// the Z dimension's spatial frequency multiplied by an Euler-Bernoulli +// buckling-derived factor so the vertical strands become shorter columns, +// raising the critical buckling load against Z-axis compression. +// +// The formula is INVERTED from a naive "scale with density" derivation: +// at LOW density the gyroid strands are long and slender (prime buckling +// targets), so they need the most shortening; at high density the strands +// are already short and need little extra help. omega is therefore the +// inverse-square-root of density_adjusted: +// +// omega = sqrt(1 / density_adj) / sqrt(1 + layer_h/spacing), +// clamped [1.0, 2.0] +// +// fx and fy are left at the baseline frequency, so the per-XY-slice line +// length per unit area is preserved -> mass at the same `sparse_infill_density` +// setting matches the standard gyroid path. Strength gain comes purely from +// the shorter vertical column length (P_cr proportional to 1/L^2). +// +// Empirical Python sim (sim_gyroid_compare.py) at layer_h=0.20, spacing=0.45: +// +// density omega line/std strength/std strength_per_mass +// 10% 2.00 1.00 2.84 2.84 +// 15% 1.38 1.00 1.89 1.89 +// 20% 1.19 1.00 1.42 1.42 +// 30% 1.00 1.00 1.00 1.00 +// 50%+ 1.00 1.00 1.00 1.00 +// +// When gyroid_optimized is false, behavior is byte-identical to the +// standard parametric gyroid path below. +// --------------------------------------------------------------------------- + +static inline double compute_omega_factor(double density_adjusted, double line_spacing, double layer_height) +{ + double lh_ratio = (line_spacing > 0.) ? layer_height / line_spacing : 0.5; + double correction = 1.0 / std::sqrt(1.0 + lh_ratio); + double raw = std::sqrt(1.0 / std::max(density_adjusted, 0.1)) * correction; + return std::clamp(raw, 1.0, 2.0); +} + static Polylines make_gyroid_waves(double gridZ, double density_adjusted, double line_spacing, double width, double height) { const double scaleFactor = scale_(line_spacing) / density_adjusted; @@ -173,16 +310,41 @@ void FillGyroid::_fill_surface_single( bb.offset(expand); // generate pattern - Polylines polylines = make_gyroid_waves( - scale_(this->z), - density_adjusted, - this->spacing, - ceil(bb.size()(0) / distance) + 1., - ceil(bb.size()(1) / distance) + 1.); + Polylines polylines; + if (params.gyroid_optimized) { + // Marching-squares path on the gyroid implicit field. Base period matches + // the standard parametric path's wavelength: 2*pi * spacing / density_adj. + // omega >= 1 always, so fz >= baseline -> shorter vertical wavelength -> + // shorter effective column length -> higher buckling resistance. + // + // Mass: fx and fy are left at baseline (same as standard), so the + // per-XY-slice line length per unit area is approximately preserved. + // Empirically (sim_gyroid_compare.py) the optimized line/std ratio is + // ~1.000 across densities, so no period compensation is needed. + const double lh = (params.layer_height > 0.) ? double(params.layer_height) : double(this->spacing); + const double omega = compute_omega_factor(density_adjusted, this->spacing * params.multiline, lh); - // shift the polyline to the grid origin - for (Polyline &pl : polylines) - pl.translate(bb.min); + const float density_factor = std::max(0.001f, float(params.density * DensityAdjust / params.multiline)); + const float period = float(2.0 * M_PI) * float(this->spacing) / density_factor; + + // bb is already expanded above by 10 * scale_(spacing) for edge artifacts; + // skip a second offset here to avoid raster-area bloat in the marching squares pass. + marchsq::GyroidField sf(bb, this->z, period, float(omega)); + polylines = marchsq::get_gyroid_polylines(sf, SCALED_SPARSE_INFILL_RESOLUTION); + } else { + polylines = make_gyroid_waves( + scale_(this->z), + density_adjusted, + this->spacing, + ceil(bb.size()(0) / distance) + 1., + ceil(bb.size()(1) / distance) + 1.); + + // The parametric generator produces wave coords relative to the grid origin; + // shift them into absolute layer coords. The marching-squares branch above + // already emits absolute coords via GyroidField::to_Point, so it skips this. + for (Polyline &pl : polylines) + pl.translate(bb.min); + } // Apply multiline offset if needed multiline_fill(polylines, params, spacing); diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 34495abd4c..542600556b 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1163,10 +1163,15 @@ static std::vector get_path_of_change_filament(const Print& print) const bool is_ramming = (gcodegen.config().single_extruder_multi_material) || (!gcodegen.config().single_extruder_multi_material && gcodegen.config().filament_multitool_ramming.get_at(tcr.initial_tool)); + // Orca: user-facing override (Printer Settings > Wipe tower > "Tool change on wipe tower"). + // Forces the toolhead to travel over the wipe tower before issuing Tx even on multi-toolhead + // printers without ramming, where Orca would otherwise emit Tx in place (potentially over the part). + const bool tool_change_on_wipe_tower = gcodegen.config().tool_change_on_wipe_tower.value; const bool should_travel_to_tower = !tcr.priming && (tcr.force_travel // wipe tower says so || !needs_toolchange // this is just finishing the tower with no toolchange || will_go_down // Make sure to move to prime tower before moving down - || is_ramming); + || is_ramming + || tool_change_on_wipe_tower); if (should_travel_to_tower || gcodegen.m_need_change_layer_lift_z) { // FIXME: It would be better if the wipe tower set the force_travel flag for all toolchanges, @@ -5887,6 +5892,9 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref, // if polyline was shorter than the clipping distance we'd get a null polyline, so // we discard it in that case const double seam_gap = scale_(m_config.seam_gap.get_abs_value(nozzle_diameter)); + const bool seam_gap_applied = enable_seam_slope || m_enable_loop_clipping; + const double seam_gap_distance_mm = seam_gap_applied ? unscale_(seam_gap) : 0.0; + double seam_scarf_distance_mm = 0.0; const double clip_length = m_enable_loop_clipping && !enable_seam_slope ? seam_gap : 0; // get paths @@ -6035,6 +6043,7 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref, const double slope_min_length = slope_entire_loop ? loop_length : std::min(m_config.seam_slope_min_length.value, loop_length); const int slope_steps = m_config.seam_slope_steps; const double slope_max_segment_length = scale_(slope_min_length / slope_steps); + seam_scarf_distance_mm = slope_min_length; // Calculate the sloped loop ExtrusionLoopSloped new_loop(paths, seam_gap, slope_min_length, slope_max_segment_length, start_slope_ratio, loop.loop_role()); @@ -6059,6 +6068,11 @@ std::string GCode::extrude_loop(const ExtrusionLoop& loop_ref, } } + if (description == "perimeter") { + m_processor.result().print_statistics.total_seam_gap_distance += static_cast(seam_gap_distance_mm); + m_processor.result().print_statistics.total_seam_scarf_distance += static_cast(seam_scarf_distance_mm); + } + // BBS if (m_wipe.enable && FILAMENT_CONFIG(wipe)) { m_wipe.path = Polyline(); diff --git a/src/libslic3r/GCode/CoolingBuffer.cpp b/src/libslic3r/GCode/CoolingBuffer.cpp index 41e612fdab..8cfb99a46b 100644 --- a/src/libslic3r/GCode/CoolingBuffer.cpp +++ b/src/libslic3r/GCode/CoolingBuffer.cpp @@ -719,6 +719,9 @@ std::string CoolingBuffer::apply_layer_cooldown( // Second generate the adjusted G-code. std::string new_gcode; new_gcode.reserve(gcode.size() * 2); + // ORCA: per-printer minimum non-zero fan PWM. Applied at every part-cooling fan emission below so any + // non-zero command is raised to at least this percent (0 disables the clamp). + const unsigned int part_cooling_fan_min_pwm = static_cast(std::max(0, m_config.part_cooling_fan_min_pwm.value)); bool overhang_fan_control= false; int overhang_fan_speed = 0; bool internal_bridge_fan_control= false; // ORCA: Add support for separate internal bridge fan speed control @@ -727,7 +730,7 @@ std::string CoolingBuffer::apply_layer_cooldown( int supp_interface_fan_speed = 0; bool ironing_fan_control= false; // ORCA: Add support for ironing fan speed control int ironing_fan_speed = 0; // ORCA: Add support for ironing fan speed control - auto change_extruder_set_fan = [ this, layer_id, layer_time, &new_gcode, + auto change_extruder_set_fan = [ this, layer_id, layer_time, &new_gcode, part_cooling_fan_min_pwm, &overhang_fan_control, &overhang_fan_speed, &internal_bridge_fan_control, &internal_bridge_fan_speed, &supp_interface_fan_control, &supp_interface_fan_speed, @@ -743,11 +746,11 @@ std::string CoolingBuffer::apply_layer_cooldown( int full_fan_speed_layer = EXTRUDER_CONFIG(full_fan_speed_layer); supp_interface_fan_speed = EXTRUDER_CONFIG(support_material_interface_fan_speed); - if (close_fan_the_first_x_layers <= 0 && full_fan_speed_layer > 0) { - // When ramping up fan speed from close_fan_the_first_x_layers to full_fan_speed_layer, force close_fan_the_first_x_layers above zero, - // so there will be a zero fan speed at least at the 1st layer. - close_fan_the_first_x_layers = 1; - } + // ORCA: previously a silent override forced `close_fan_the_first_x_layers` from 0 up to 1 whenever a ramp + // was configured (`full_fan_speed_layer > 0`), so the first printed layer always had the fan disabled. + // That hid the user's literal "no cooling for the first 0 layers" setting and produced a non-zero starting + // factor on the ramp denominator. The override has been removed: with N=0 and M>0 the ramp now genuinely + // starts on layer 0 at a factor of 1/M and reaches 100% at layer M-1, matching the intent of the option. if (int(layer_id) >= close_fan_the_first_x_layers) { float fan_max_speed = EXTRUDER_CONFIG(fan_max_speed); float slow_down_layer_time = float(EXTRUDER_CONFIG(slow_down_layer_time)); @@ -806,7 +809,7 @@ std::string CoolingBuffer::apply_layer_cooldown( m_fan_speed = fan_speed_new; m_current_fan_speed = fan_speed_new; if (immediately_apply) - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_fan_speed, part_cooling_fan_min_pwm); } //BBS if (additional_fan_speed_new != m_additional_fan_speed) { @@ -980,26 +983,26 @@ std::string CoolingBuffer::apply_layer_cooldown( if (need_set_fan) { if (fan_speed_change_requests[CoolingLine::TYPE_OVERHANG_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, overhang_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, overhang_fan_speed, part_cooling_fan_min_pwm); m_current_fan_speed = overhang_fan_speed; } else if (fan_speed_change_requests[CoolingLine::TYPE_INTERNAL_BRIDGE_FAN_START]){ // ORCA: Add support for separate internal bridge fan speed control - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, internal_bridge_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, internal_bridge_fan_speed, part_cooling_fan_min_pwm); m_current_fan_speed = internal_bridge_fan_speed; } else if (fan_speed_change_requests[CoolingLine::TYPE_SUPPORT_INTERFACE_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, supp_interface_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, supp_interface_fan_speed, part_cooling_fan_min_pwm); m_current_fan_speed = supp_interface_fan_speed; } else if (fan_speed_change_requests[CoolingLine::TYPE_IRONING_FAN_START]){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, ironing_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, ironing_fan_speed, part_cooling_fan_min_pwm); m_current_fan_speed = ironing_fan_speed; } else if(fan_speed_change_requests[CoolingLine::TYPE_FORCE_RESUME_FAN] && m_current_fan_speed != -1){ - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_current_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_current_fan_speed, part_cooling_fan_min_pwm); fan_speed_change_requests[CoolingLine::TYPE_FORCE_RESUME_FAN] = false; } else - new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_fan_speed); + new_gcode += GCodeWriter::set_fan(m_config.gcode_flavor, m_fan_speed, part_cooling_fan_min_pwm); need_set_fan = false; } pos = line_end; diff --git a/src/libslic3r/GCode/FanMover.cpp b/src/libslic3r/GCode/FanMover.cpp index 63e47f3f73..112066bb85 100644 --- a/src/libslic3r/GCode/FanMover.cpp +++ b/src/libslic3r/GCode/FanMover.cpp @@ -230,7 +230,10 @@ void FanMover::_remove_slow_fan(int16_t min_speed, float past_sec) { std::string FanMover::_set_fan(int16_t speed) { //const Tool* tool = m_writer.get_tool(m_currrent_extruder < 20 ? m_currrent_extruder : 0); - return GCodeWriter::set_fan(m_writer.config.gcode_flavor.value, speed); + // ORCA: apply the per-printer non-zero fan PWM floor so reposted fan commands respect the clamp too. + const int floor_pct = m_writer.config.part_cooling_fan_min_pwm.value; + const unsigned int part_cooling_fan_min_pwm = floor_pct > 0 ? static_cast(floor_pct) : 0u; + return GCodeWriter::set_fan(m_writer.config.gcode_flavor.value, speed, part_cooling_fan_min_pwm); } diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 1ca9c3ffc4..0ab32a6780 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -1230,8 +1230,15 @@ void GCodeProcessor::run_post_process() } }; + // Orca: track the current layer during the post-processing pass so that preheat M104s emitted + // for tool changes on the first layer use the correct first-layer temperature. The member + // m_layer_id is populated during the analysis pass and ends at the total layer count, so it + // cannot be used here — it would always select the "other layers" temperature for multi-layer + // prints. + unsigned int current_layer_id = 0; + // add lines M104 to exported gcode - auto process_line_T = [this, &export_line](const std::string& gcode_line, const size_t g1_lines_counter, const ExportLines::Backtrace& backtrace) { + auto process_line_T = [this, &export_line, ¤t_layer_id](const std::string& gcode_line, const size_t g1_lines_counter, const ExportLines::Backtrace& backtrace) { const std::string cmd = GCodeReader::GCodeLine::extract_cmd(gcode_line); int tool_number = -1; @@ -1257,8 +1264,13 @@ void GCodeProcessor::run_post_process() export_line.insert_lines( backtrace, cmd, // line inserter - [tool_number, this](unsigned int id, const std::vector& time_diffs) { - const int temperature = int(m_layer_id != 1 ? m_filament_nozzle_temp[tool_number] : + [tool_number, this, ¤t_layer_id](unsigned int id, const std::vector& time_diffs) { + // Orca: use the locally-tracked layer index (current_layer_id) rather than + // the stale m_layer_id from the analysis pass. current_layer_id == 0 means + // we haven't reached the first ;LAYER_CHANGE marker yet (e.g. tool change + // inside start gcode); == 1 means we are inside the first printed layer. + // Both cases should use the first-layer nozzle temperature. + const int temperature = int(current_layer_id > 1 ? m_filament_nozzle_temp[tool_number] : m_filament_nozzle_temp_first_layer[tool_number]); // Orca: M104.1 for XL printers, I can't find the documentation for this so I copied the C++ comments from // Prusa-Firmware-Buddy here @@ -1351,6 +1363,19 @@ void GCodeProcessor::run_post_process() if (eol) { ++line_id; const unsigned int internal_g1_lines_counter = export_line.update(gcode_line, line_id, g1_lines_counter); + // Orca: track the current layer for preheat temperature selection. + // The line is ";" + reserved_tag(Layer_Change) + EOL; match it independent of + // BBL vs. compatible flavor (which differ in the tag text). + if (gcode_line.size() > 1 && gcode_line.front() == ';') { + std::string_view tag_line(gcode_line); + // strip trailing CR/LF + while (!tag_line.empty() && (tag_line.back() == '\n' || tag_line.back() == '\r')) + tag_line.remove_suffix(1); + // strip leading ';' + tag_line.remove_prefix(1); + if (tag_line == reserved_tag(ETags::Layer_Change)) + ++current_layer_id; + } // replace placeholder lines bool processed = process_placeholders(gcode_line); if (processed) @@ -3796,9 +3821,10 @@ void GCodeProcessor::process_G1(const std::array, 4>& axes return; EMoveType type = move_type(delta_pos); + const float delta_xyz = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z])); + m_travel_dist = delta_xyz; + if (type == EMoveType::Extrude) { - const float delta_xyz = std::sqrt(sqr(delta_pos[X]) + sqr(delta_pos[Y]) + sqr(delta_pos[Z])); - m_travel_dist = delta_xyz; float volume_extruded_filament = area_filament_cross_section * delta_pos[E]; float area_toolpath_cross_section = volume_extruded_filament / delta_xyz; @@ -5420,6 +5446,11 @@ void GCodeProcessor::process_filament_change(int id) int next_extruder_id = m_filament_maps[id]; int next_filament_id = id; float extra_time = 0; + unsigned int filament_changes_delta = 0; + unsigned int extruder_changes_delta = 0; + float filament_load_time_delta = 0.0f; + float filament_unload_time_delta = 0.0f; + float tool_change_time_delta = 0.0f; if (prev_filament_id == next_filament_id) return; @@ -5432,12 +5463,14 @@ void GCodeProcessor::process_filament_change(int id) assert(prev_extruder_id != -1); process_filaments(CustomGCode::ToolChange); m_filament_id[next_extruder_id] = next_filament_id; - m_result.lock(); - m_result.print_statistics.total_filament_changes += 1; - m_result.unlock(); - extra_time += get_filament_unload_time(static_cast(prev_filament_id)); + filament_changes_delta += 1; + const float filament_unload_time = get_filament_unload_time(static_cast(prev_filament_id)); + extra_time += filament_unload_time; + filament_unload_time_delta += filament_unload_time; m_time_processor.extruder_unloaded = false; - extra_time += get_filament_load_time(static_cast(next_filament_id)); + const float filament_load_time = get_filament_load_time(static_cast(next_filament_id)); + extra_time += filament_load_time; + filament_load_time_delta += filament_load_time; } else { if (prev_extruder_id == -1) { @@ -5445,7 +5478,9 @@ void GCodeProcessor::process_filament_change(int id) m_extruder_id = next_extruder_id; m_filament_id[next_extruder_id] = next_filament_id; m_time_processor.extruder_unloaded = false; - extra_time += get_filament_load_time(static_cast(next_filament_id)); + const float filament_load_time = get_filament_load_time(static_cast(next_filament_id)); + extra_time += filament_load_time; + filament_load_time_delta += filament_load_time; } else { //first process cache generated by last extruder @@ -5456,24 +5491,39 @@ void GCodeProcessor::process_filament_change(int id) //no filament in current extruder m_filament_id[next_extruder_id] = next_filament_id; m_time_processor.extruder_unloaded = false; - extra_time += get_filament_load_time(static_cast(next_filament_id)); + const float filament_load_time = get_filament_load_time(static_cast(next_filament_id)); + extra_time += filament_load_time; + filament_load_time_delta += filament_load_time; } else if (m_last_filament_id[next_extruder_id] != next_filament_id) { //need to change filament m_filament_id[next_extruder_id] = next_filament_id; - m_result.lock(); - m_result.print_statistics.total_filament_changes += 1; - m_result.unlock(); - extra_time += get_filament_unload_time(static_cast(prev_filament_id)); + filament_changes_delta += 1; + const float filament_unload_time = get_filament_unload_time(static_cast(prev_filament_id)); + extra_time += filament_unload_time; + filament_unload_time_delta += filament_unload_time; m_time_processor.extruder_unloaded = false; - extra_time += get_filament_load_time(static_cast(next_filament_id)); + const float filament_load_time = get_filament_load_time(static_cast(next_filament_id)); + extra_time += filament_load_time; + filament_load_time_delta += filament_load_time; } - m_result.lock(); - m_result.print_statistics.total_extruder_changes++; - m_result.unlock(); - extra_time += get_extruder_change_time(next_extruder_id); + extruder_changes_delta += 1; + const float tool_change_time = get_extruder_change_time(next_extruder_id); + extra_time += tool_change_time; + tool_change_time_delta += tool_change_time; } } + + if (filament_changes_delta > 0 || extruder_changes_delta > 0 || filament_load_time_delta > 0.0f || filament_unload_time_delta > 0.0f || tool_change_time_delta > 0.0f) { + m_result.lock(); + m_result.print_statistics.total_filament_changes += filament_changes_delta; + m_result.print_statistics.total_extruder_changes += extruder_changes_delta; + m_result.print_statistics.total_filament_load_time += filament_load_time_delta; + m_result.print_statistics.total_filament_unload_time += filament_unload_time_delta; + m_result.print_statistics.total_tool_change_time += tool_change_time_delta; + m_result.unlock(); + } + m_cp_color.current = m_extruder_colors[next_filament_id]; simulate_st_synchronize(extra_time); // store tool change move @@ -5518,6 +5568,11 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type, m_line_id + 1 : ((type == EMoveType::Seam) ? m_last_line_id : m_line_id); + if (type == EMoveType::Travel) { + m_result.print_statistics.total_travel_moves++; + m_result.print_statistics.total_travel_distance += m_travel_dist; + } + m_result.moves.push_back({ m_last_line_id, type, diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 867c8561b1..546df6fbb2 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -78,6 +78,13 @@ class Print; std::array(ETimeMode::Count)> modes; unsigned int total_filament_changes; unsigned int total_extruder_changes; + float total_filament_load_time; + float total_filament_unload_time; + float total_tool_change_time; + float total_travel_distance; + unsigned int total_travel_moves; + float total_seam_gap_distance; + float total_seam_scarf_distance; PrintEstimatedStatistics() { reset(); } @@ -95,6 +102,13 @@ class Print; used_filaments_per_role.clear(); total_filament_changes = 0; total_extruder_changes = 0; + total_filament_load_time = 0.0f; + total_filament_unload_time = 0.0f; + total_tool_change_time = 0.0f; + total_travel_distance = 0.0f; + total_travel_moves = 0; + total_seam_gap_distance = 0.0f; + total_seam_scarf_distance = 0.0f; } }; diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index 238de9a5cf..307e099f2c 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -881,10 +881,10 @@ std::string GCodeWriter::_spiral_travel_to_z(double z, const Vec2d &ij_offset, c // Determine number of segments based on Resolution // -------------------------------------------------------------------- const double ref_resolution = 0.01; // reference resolution in mm - const double ref_segments = 16.0; // reference number of segments at reference resolution + const double ref_segments = 8.0; // reference number of segments at reference resolution - // number of linear segments to use for approximating the arc, clamp between 4 and 24 - const int segments = std::clamp(int(std::round(ref_segments * (ref_resolution / m_resolution))), 4, 24); + // number of linear segments to use for approximating the arc, clamp between 4 and 16 + const int segments = std::clamp(int(std::round(ref_segments * (ref_resolution / m_resolution))), 4, 16); // -------------------------------------------------------------------- const double px = m_pos(0) - m_x_offset; // take plate offset into consideration @@ -1109,9 +1109,13 @@ std::string GCodeWriter::unlift() return gcode; } -std::string GCodeWriter::set_fan(const GCodeFlavor gcode_flavor, unsigned int speed) +std::string GCodeWriter::set_fan(const GCodeFlavor gcode_flavor, unsigned int speed, unsigned int part_cooling_fan_min_pwm) { std::ostringstream gcode; + // ORCA: clamp non-zero fan commands up to the configured PWM floor so fans that can't spool at low duty + // cycles still start reliably. Zero (fan off) is preserved exactly so disable-fan commands are never altered. + if (speed > 0 && part_cooling_fan_min_pwm > 0 && speed < part_cooling_fan_min_pwm) + speed = part_cooling_fan_min_pwm; if (speed == 0) { switch (gcode_flavor) { case gcfTeacup: @@ -1146,7 +1150,9 @@ std::string GCodeWriter::set_fan(const GCodeFlavor gcode_flavor, unsigned int sp std::string GCodeWriter::set_fan(unsigned int speed) const { //BBS - return GCodeWriter::set_fan(this->config.gcode_flavor, speed); + // ORCA: pick up the per-printer PWM floor from the active config. + return GCodeWriter::set_fan(this->config.gcode_flavor, speed, + static_cast(std::max(0, this->config.part_cooling_fan_min_pwm.value))); } //BBS: set additional fan speed for BBS machine only diff --git a/src/libslic3r/GCodeWriter.hpp b/src/libslic3r/GCodeWriter.hpp index 1c8da2c42f..7f21eb9d79 100644 --- a/src/libslic3r/GCodeWriter.hpp +++ b/src/libslic3r/GCodeWriter.hpp @@ -98,7 +98,9 @@ public: void set_xy_offset(double x, double y) { m_x_offset = x; m_y_offset = y; } Vec2f get_xy_offset() { return Vec2f{m_x_offset, m_y_offset}; }; // To be called by the CoolingBuffer from another thread. - static std::string set_fan(const GCodeFlavor gcode_flavor, unsigned int speed); + // ORCA: `part_cooling_fan_min_pwm` (0-100, default 0) is a floor applied only when `speed` is non-zero, used to overcome + // PWM start-up thresholds on fans that won't spool below a certain duty cycle. A `speed` of 0 is always honoured. + static std::string set_fan(const GCodeFlavor gcode_flavor, unsigned int speed, unsigned int part_cooling_fan_min_pwm = 0); // To be called by the main thread. It always emits the G-code, it does not remember the previous state. // Keeping the state is left to the CoolingBuffer, which runs asynchronously on another thread. std::string set_fan(unsigned int speed) const; diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 0ae7524fa0..e610a9ed4f 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -298,7 +298,11 @@ bool directions_perpendicular(double angle1, double angle2, double max_diff = 0) template bool contains(const std::vector &vector, const Point &point); template T rad2deg(T angle) { return T(180.0) * angle / T(PI); } double rad2deg_dir(double angle); -template constexpr T deg2rad(const T angle) { return T(PI) * angle / T(180.0); } +template constexpr T deg2rad(const T angle) +{ + static_assert(std::is_floating_point::value, "Why do you want to calculate angle in integer?"); + return T(PI) * angle / T(180.0); +} template T angle_to_0_2PI(T angle) { static const T TWO_PI = T(2) * T(PI); diff --git a/src/libslic3r/Layer.cpp b/src/libslic3r/Layer.cpp index 67959a508a..0a80c019ae 100644 --- a/src/libslic3r/Layer.cpp +++ b/src/libslic3r/Layer.cpp @@ -159,6 +159,12 @@ bool Layer::is_perimeter_compatible(const PrintRegion& a, const PrintRegion& b) && config.detect_thin_wall == other_config.detect_thin_wall && config.infill_wall_overlap == other_config.infill_wall_overlap && config.top_bottom_infill_wall_overlap == other_config.top_bottom_infill_wall_overlap + // Orca: these flags directly change the effective wall count produced by the perimeter + // generator. If two regions disagree on any of them, merging their slices into one shared make_perimeters + // call would silently use the first region's flag for both. + && config.only_one_wall_first_layer == other_config.only_one_wall_first_layer + && config.only_one_wall_top == other_config.only_one_wall_top + && config.min_width_top_surface == other_config.min_width_top_surface && config.seam_slope_type == other_config.seam_slope_type && config.seam_slope_conditional == other_config.seam_slope_conditional && config.scarf_angle_threshold == other_config.scarf_angle_threshold diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index e3b2ada837..0067684f15 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -1980,6 +1980,49 @@ void ModelVolume::reset_extra_facets() this->fuzzy_skin_facets.reset(); } +std::optional ModelVolume::save_painting() const +{ + if (is_any_painted() && is_model_part() && !mesh().empty()) { + TriangleSelector::SavedPainting sp; + sp.mesh = mesh(); + sp.supported = supported_facets.get_data(); + sp.seam = seam_facets.get_data(); + sp.mmu = mmu_segmentation_facets.get_data(); + sp.fuzzy = fuzzy_skin_facets.get_data(); + return sp; + } + + return {}; +} + +void ModelVolume::restore_painting(const std::optional& saved, const bool keep_existing_paint) +{ + if (!keep_existing_paint) { + reset_extra_facets(); + } + + if (!saved) { + return; + } + + auto remap_one = [&](const TriangleSelector::TriangleSplittingData& src_data, + FacetsAnnotation& target_facets) { + if (src_data.bitstream.empty()) + return; + auto result = + TriangleSelector::remap_painting(saved->mesh.its, src_data, mesh().its, Geometry::translation_transform(mesh().get_init_shift()), + keep_existing_paint ? + std::optional>{std::ref(target_facets.get_data())} : + std::optional>{}); + if (!result.bitstream.empty()) + target_facets.set_data(std::move(result)); + }; + remap_one(saved->supported, supported_facets); + remap_one(saved->seam, seam_facets); + remap_one(saved->mmu, mmu_segmentation_facets); + remap_one(saved->fuzzy, fuzzy_skin_facets); +} + static void invalidate_translations(ModelObject* object, const ModelInstance* src_instance) { if (!object->origin_translation.isApprox(Vec3d::Zero()) && src_instance->get_offset().isApprox(Vec3d::Zero())) { @@ -1993,13 +2036,14 @@ static void invalidate_translations(ModelObject* object, const ModelInstance* sr } } -void ModelObject::split(ModelObjectPtrs* new_objects) +void ModelObject::split(ModelObjectPtrs* new_objects, const bool remap_paint) { std::vector all_meshes; std::vector all_transfos; std::vector> volume_mesh_counts; all_meshes.reserve(this->volumes.size() * 5); bool is_multi_volume_object = (this->volumes.size() > 1); + std::optional saved_painting; for (int volume_idx = 0; volume_idx < this->volumes.size(); volume_idx++) { ModelVolume* volume = this->volumes[volume_idx]; @@ -2011,6 +2055,10 @@ void ModelObject::split(ModelObjectPtrs* new_objects) volume->text_configuration.reset(); if (!is_multi_volume_object) { + if (remap_paint) { + // Save painting so we could restore them after the mesh split + saved_painting = volume->save_painting(); + } //BBS: not multi volume object, then split mesh. std::vector volume_meshes = volume->mesh().split(); int mesh_count = 0; @@ -2078,10 +2126,19 @@ void ModelObject::split(ModelObjectPtrs* new_objects) ModelVolume* new_vol = new_object->add_volume(*volume, std::move(mesh)); if (is_multi_volume_object) { - // BBS: volume geometry not changed, so we can keep the color paint facets - if (new_vol->mmu_segmentation_facets.timestamp() == volume->mmu_segmentation_facets.timestamp()) - new_vol->mmu_segmentation_facets.reset(); // BBS: let next assign take effect - new_vol->mmu_segmentation_facets.assign(volume->mmu_segmentation_facets); + // BBS: volume geometry not changed, so we can keep the paint facets +#define COPY_FACETS(f) \ + if (new_vol->f.timestamp() == volume->f.timestamp()) \ + new_vol->f.reset(); /* BBS: let next assign take effect */ \ + new_vol->f.assign(volume->f) + + COPY_FACETS(supported_facets); + COPY_FACETS(seam_facets); + COPY_FACETS(mmu_segmentation_facets); + COPY_FACETS(fuzzy_skin_facets); + } else if (saved_painting) { + // Geometry changed, attempt to remap them to the new mesh + new_vol->restore_painting(saved_painting); } // BBS: clear volume's config, as we already set them into object @@ -2682,7 +2739,7 @@ std::string ModelVolume::type_to_string(const ModelVolumeType t) // Split this volume, append the result to the object owning this volume. // Return the number of volumes created from this one. // This is useful to assign different materials to different volumes of an object. -size_t ModelVolume::split(unsigned int max_extruders) +size_t ModelVolume::split(unsigned int max_extruders, bool remap_paint) { std::vector meshes = this->mesh().split(); if (meshes.size() <= 1) @@ -2692,6 +2749,9 @@ size_t ModelVolume::split(unsigned int max_extruders) if (text_configuration.has_value()) text_configuration.reset(); + std::optional saved_painting = remap_paint ? save_painting() : + std::optional{}; + size_t idx = 0; size_t ivolume = std::find(this->object->volumes.begin(), this->object->volumes.end(), this) - this->object->volumes.begin(); const std::string name = this->name; @@ -2714,11 +2774,7 @@ size_t ModelVolume::split(unsigned int max_extruders) this->source = ModelVolume::Source(); // BBS: reset facet annotations - this->mmu_segmentation_facets.reset(); - this->exterior_facets.reset(); - this->supported_facets.reset(); - this->seam_facets.reset(); - this->fuzzy_skin_facets.reset(); + this->reset_extra_facets(); } else this->object->volumes.insert(this->object->volumes.begin() + (++ivolume), new ModelVolume(object, *this, std::move(mesh))); @@ -2731,6 +2787,8 @@ size_t ModelVolume::split(unsigned int max_extruders) this->object->volumes[ivolume]->config.set("extruder", this->extruder_id()); //this->object->volumes[ivolume]->config.set("extruder", auto_extruder_id(max_extruders, extruder_counter)); this->object->volumes[ivolume]->m_is_splittable = 0; + this->object->volumes[ivolume]->restore_painting(saved_painting); + ++ idx; } diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 5974ca4cd6..d8697adb41 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -516,7 +516,7 @@ public: void delete_connectors(); void clone_for_cut(ModelObject **obj); - void split(ModelObjectPtrs*new_objects); + void split(ModelObjectPtrs*new_objects, bool remap_paint); void merge(); // BBS: Boolean opts - Musang King @@ -731,6 +731,7 @@ public: void assign(const FacetsAnnotation &rhs) { if (! this->timestamp_matches(rhs)) { m_data = rhs.m_data; this->copy_timestamp(rhs); } } void assign(FacetsAnnotation &&rhs) { if (! this->timestamp_matches(rhs)) { m_data = std::move(rhs.m_data); this->copy_timestamp(rhs); } } const TriangleSelector::TriangleSplittingData &get_data() const noexcept { return m_data; } + void set_data(TriangleSelector::TriangleSplittingData &&data) { m_data = std::move(data); this->touch(); } bool set(const TriangleSelector& selector); indexed_triangle_set get_facets(const ModelVolume& mv, EnforcerBlockerType type) const; // BBS @@ -877,13 +878,18 @@ public: // List of mesh facets painted for fuzzy skin. FacetsAnnotation fuzzy_skin_facets; + // Save painting data before reset_extra_facets() discards it. + // Used for replacing mesh without losing painting data. + // Only for model parts (not modifiers/connectors). + std::optional save_painting() const; + + // Remap painting data from previous saved source to this mesh + void restore_painting(const std::optional& saved, bool keep_existing_paint = false); + // BBS: quick access for volume extruders, 1 based mutable std::vector mmuseg_extruders; mutable Timestamp mmuseg_ts; - // List of exterior faces - FacetsAnnotation exterior_facets; - // Is set only when volume is Embossed Text type // Contain information how to re-create volume std::optional text_configuration; @@ -924,7 +930,7 @@ public: // Split this volume, append the result to the object owning this volume. // Return the number of volumes created from this one. // This is useful to assign different materials to different volumes of an object. - size_t split(unsigned int max_extruders); + size_t split(unsigned int max_extruders, bool remap_paint); void translate(double x, double y, double z) { translate(Vec3d(x, y, z)); } void translate(const Vec3d& displacement); void scale(const Vec3d& scaling_factors); @@ -1007,6 +1013,7 @@ public: bool is_seam_painted() const { return !this->seam_facets.empty(); } bool is_mm_painted() const { return !this->mmu_segmentation_facets.empty(); } bool is_fuzzy_skin_painted() const { return !this->fuzzy_skin_facets.empty(); } + bool is_any_painted() const { return is_fdm_support_painted() || is_seam_painted() || is_mm_painted() || is_fuzzy_skin_painted(); } // Orca: Implement prusa's filament shrink compensation approach // Returns 0-based indices of extruders painted by multi-material painting gizmo. diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 7b238ea893..f6e6ee14dd 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -581,14 +581,6 @@ void Preset::load_info(const std::string& file) catch (...) { return; } - - //TODO: workaround for current info file convert, will remove it later - if (this->updated_time == 0) { - this->updated_time = (long long)Slic3r::Utils::get_current_time_utc(); - //this->sync_info = "update"; - BOOST_LOG_TRIVIAL(info) << boost::format("old info file, updated time to %1%") % this->updated_time; - save_info(); - } } void Preset::save_info(std::string file) @@ -1014,6 +1006,7 @@ static std::vector s_Preset_print_options{ "is_infill_first", "sparse_infill_density", "fill_multiline", + "gyroid_optimized", "sparse_infill_pattern", "lateral_lattice_angle_1", "lateral_lattice_angle_2", @@ -1335,7 +1328,7 @@ static std::vector s_Preset_machine_limits_options { static std::vector s_Preset_printer_options { "printer_technology", "printable_area", "extruder_printable_area", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor", - "fan_kickstart", "fan_speedup_time", "fan_speedup_overhangs", + "fan_kickstart", "part_cooling_fan_min_pwm", "fan_speedup_time", "fan_speedup_overhangs", "single_extruder_multi_material", "manual_filament_change", "file_start_gcode", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "printing_by_object_gcode", "layer_change_gcode", "time_lapse_gcode", "wrapping_detection_gcode", "change_filament_gcode", "change_extrusion_role_gcode", "printer_model", "printer_variant", "printer_extruder_id", "printer_extruder_variant", "extruder_variant_list", "default_nozzle_volume_type", "printable_height", "extruder_printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", @@ -1352,7 +1345,7 @@ static std::vector s_Preset_printer_options { "use_relative_e_distances", "extruder_type", "use_firmware_retraction", "printer_notes", "grab_length", "support_object_skip_flush", "physical_extruder_map", "cooling_tube_retraction", - "cooling_tube_length", "high_current_on_filament_swap", "parking_pos_retraction", "extra_loading_move", "wipe_tower_type", "purge_in_prime_tower", "enable_filament_ramming", + "cooling_tube_length", "high_current_on_filament_swap", "parking_pos_retraction", "extra_loading_move", "wipe_tower_type", "purge_in_prime_tower", "enable_filament_ramming", "tool_change_on_wipe_tower", "z_offset", "disable_m73", "preferred_orientation", "emit_machine_limits_to_gcode", "pellet_modded_printer", "support_multi_bed_types", "default_bed_type", "bed_mesh_min","bed_mesh_max","bed_mesh_probe_distance", "adaptive_bed_mesh_margin", "enable_long_retraction_when_cut","long_retractions_when_cut","retraction_distances_when_cut", "bed_temperature_formula", "nozzle_flush_dataset", @@ -2205,19 +2198,29 @@ bool PresetCollection::load_user_preset(std::string name, std::mapsecond; + } else { + const auto inherits_iter = preset_values.find(BBL_JSON_KEY_INHERITS); + const bool preset_inherits_from_parent = inherits_iter != preset_values.end() && !inherits_iter->second.empty(); + if (preset_inherits_from_parent) { + // This indicates that there is inherits exists but there is no base_id + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ + << boost::format("can not find base_id, not loading for user preset %1%") % canonical_name; + unlock(); + return false; + } } - std::string cloud_base_id = preset_values[BBL_JSON_KEY_BASE_ID]; //filament_id std::string cloud_filament_id; if ((m_type == Preset::TYPE_FILAMENT) && preset_values.find(BBL_JSON_KEY_FILAMENT_ID) != preset_values.end()) { cloud_filament_id = preset_values[BBL_JSON_KEY_FILAMENT_ID]; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << canonical_name << " filament_id: " << cloud_filament_id << " base_id: " << cloud_base_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << canonical_name << " filament_id: " << cloud_filament_id << " base_id: " << based_id; } DynamicPrintConfig new_config, cloud_config; @@ -2279,6 +2282,10 @@ bool PresetCollection::load_user_preset(std::string name, std::mapname == m_edited_preset.name && iter->is_dirty) { // Keep modifies when update from remote new_config.apply_only(m_edited_preset.config, m_edited_preset.config.diff(iter->config)); + } else if (iter->name == m_edited_preset.name) { + // Preset is not dirty (no local unsaved changes) — also update the edited preset + // to prevent a false "dirty" indication (orange highlight) after a silent cloud sync + m_edited_preset.config = new_config; } iter->config = new_config; iter->updated_time = cloud_update_time; @@ -2286,7 +2293,7 @@ bool PresetCollection::load_user_preset(std::string name, std::mapversion = cloud_version.value(); iter->user_id = cloud_user_id; iter->setting_id = cloud_setting_id; - iter->base_id = cloud_base_id; + iter->base_id = based_id; iter->filament_id = cloud_filament_id; update_alias(*iter); //presets_loaded.emplace_back(*it->second); @@ -2305,7 +2312,7 @@ bool PresetCollection::load_user_preset(std::string name, std::map(BBL_JSON_KEY_INHERITS)->value.empty()) { - if (alias_name.empty()) { - size_t end_pos = preset_name.find_first_of("@"); - if (end_pos != std::string::npos) { - alias_name = preset_name.substr(0, end_pos); - boost::trim_right(alias_name); - } + std::string bare_preset_name = get_preset_bare_name(preset.name); + std::string alias_name = bare_preset_name; + + const bool is_root_filament_preset = + m_type == Preset::Type::TYPE_FILAMENT && + preset.config.has(BBL_JSON_KEY_INHERITS) && + preset.config.option(BBL_JSON_KEY_INHERITS)->value.empty(); + if (is_root_filament_preset) { + const size_t suffix_separator_pos = bare_preset_name.find_first_of("@"); + if (suffix_separator_pos != std::string::npos) { + alias_name = bare_preset_name.substr(0, suffix_separator_pos); + boost::trim_right(alias_name); + if (alias_name.empty()) + alias_name = bare_preset_name; } } - else { - alias_name = preset_name; - } preset.alias = std::move(alias_name); m_map_alias_to_profile_name[preset.alias].push_back(preset.name); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 1bbf1747e6..3af0b3c1ba 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -614,13 +614,24 @@ VendorType PresetBundle::get_current_vendor_type() { auto t = VendorType::Unknown; auto config = &printers.get_edited_preset().config; + const auto* printer_model = config->opt("printer_model"); + if (printer_model == nullptr) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": printer_model is " + << (config->has("printer_model") ? "not a string" : "missing") + << ", vendor type is Unknown"; + return t; + } + std::string vendor_name; - for (auto vendor_profile : vendors) { - for (auto vendor_model : vendor_profile.second.models) - if (vendor_model.name == config->opt_string("printer_model")) { + for (const auto& vendor_profile : vendors) { + for (const auto& vendor_model : vendor_profile.second.models) { + if (vendor_model.name == printer_model->value) { vendor_name = vendor_profile.first; break; } + } + if (!vendor_name.empty()) + break; } if (!vendor_name.empty()) { @@ -2622,6 +2633,9 @@ void PresetBundle::update_selections(AppConfig &config) break; this->filament_presets.emplace_back(remove_ini_suffix(f_name)); } + + update_filament_count(); + std::vector filament_colors; auto f_colors = config.get_printer_setting(initial_printer_profile_name, "filament_colors"); if (!f_colors.empty()) { @@ -2763,6 +2777,8 @@ void PresetBundle::load_selections(AppConfig &config, const PresetPreferences& p this->filament_presets.emplace_back(remove_ini_suffix(f_name)); } + update_filament_count(); + // Load data from AppConfig to ProjectConfig when Studio is initialized. std::vector filament_colors; auto f_colors = config.get_printer_setting(initial_printer_profile_name, "filament_colors"); @@ -3782,11 +3798,33 @@ int PresetBundle::get_printer_extruder_count() const { const Preset& printer_preset = this->printers.get_edited_preset(); - int count = printer_preset.config.option("nozzle_diameter")->values.size(); + const auto* nozzle_diameter = printer_preset.config.option("nozzle_diameter"); + if (nozzle_diameter == nullptr) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": nozzle_diameter is missing, using 1 extruder"; + return 1; + } + if (nozzle_diameter->values.empty()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": nozzle_diameter is empty, using 1 extruder"; + return 1; + } + + int count = int(nozzle_diameter->values.size()); return count; } +void PresetBundle::update_filament_count() +{ + if (printers.get_edited_preset().printer_technology() != ptFFF) + return; + const size_t num_extruders = static_cast(get_printer_extruder_count()); + if (filament_presets.size() >= num_extruders) + return; + filament_presets.resize(num_extruders, filament_presets.empty() + ? filaments.first_visible().name + : filament_presets.back()); +} + bool PresetBundle::support_different_extruders() { Preset& printer_preset = this->printers.get_edited_preset(); diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 2351084ade..220de95b78 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -372,6 +372,12 @@ public: int get_printer_extruder_count() const; bool support_different_extruders(); + // Orca: Ensure filament_presets has at least one slot per nozzle on FFF printers. + // Called from (load|update)_selections before the parallel project_config arrays + // (filament_colour/colour_type/map) are sized off filament_presets.size(), so a + // short saved filament list doesn't truncate the loaded colors. + void update_filament_count(); + // Load user configuration and store it into the user profiles. // This method is called by the configuration wizard. void load_config_from_wizard(const std::string &name, DynamicPrintConfig config, Semver file_version) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index 6b4ae47457..8cfd4ca7a2 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -134,6 +134,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "fan_cooling_layer_time", "full_fan_speed_layer", "fan_kickstart", + "part_cooling_fan_min_pwm", "fan_speedup_overhangs", "fan_speedup_time", "filament_colour", @@ -360,6 +361,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "wipe_tower_filament" || opt_key == "wiping_volumes_extruders" || opt_key == "enable_filament_ramming" + || opt_key == "tool_change_on_wipe_tower" || opt_key == "purge_in_prime_tower" || opt_key == "z_offset" || opt_key == "support_multi_bed_types" @@ -1785,46 +1787,47 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* }; std::string warning_key; + const auto max_junction_deviation = m_config.machine_max_junction_deviation.values[0]; + const bool ignore_jerk_validation = m_config.gcode_flavor == gcfMarlinFirmware && max_junction_deviation > 0; + // check jerk - if (m_default_object_config.default_jerk == 1 || m_default_object_config.outer_wall_jerk == 1 || - m_default_object_config.inner_wall_jerk == 1) { - warning->string = L("Setting the jerk speed too low could lead to artifacts on curved surfaces"); - if (m_default_object_config.outer_wall_jerk == 1) - warning_key = "outer_wall_jerk"; - else if (m_default_object_config.inner_wall_jerk == 1) - warning_key = "inner_wall_jerk"; - else - warning_key = "default_jerk"; + if (!ignore_jerk_validation) { + if (m_default_object_config.default_jerk == 1 || m_default_object_config.outer_wall_jerk == 1 || + m_default_object_config.inner_wall_jerk == 1) { + warning->string = L("Setting the jerk speed too low could lead to artifacts on curved surfaces"); + if (m_default_object_config.outer_wall_jerk == 1) + warning_key = "outer_wall_jerk"; + else if (m_default_object_config.inner_wall_jerk == 1) + warning_key = "inner_wall_jerk"; + else + warning_key = "default_jerk"; - warning->opt_key = warning_key; - } + warning->opt_key = warning_key; + } - if (warning_key.empty() && m_default_object_config.default_jerk > 0) { - std::vector jerk_to_check = {"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", - "top_surface_jerk", "initial_layer_jerk", "travel_jerk"}; - const auto max_jerk = std::min(m_config.machine_max_jerk_x.values[0], m_config.machine_max_jerk_y.values[0]); - warning_key.clear(); - if (m_default_object_config.default_jerk > 0) - warning_key = check_motion_ability_object_setting(jerk_to_check, max_jerk); - if (!warning_key.empty()) { - warning->string = L( - "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\nOrca will " - "automatically cap the jerk speed to ensure it doesn't surpass the printer's capabilities.\nYou can adjust the " - "maximum jerk setting in your printer's configuration to get higher speeds."); - warning->opt_key = warning_key; - } + if (warning_key.empty() && m_default_object_config.default_jerk > 0) { + std::vector jerk_to_check = {"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "infill_jerk", + "top_surface_jerk", "initial_layer_jerk", "travel_jerk"}; + const auto max_jerk = std::min(m_config.machine_max_jerk_x.values[0], m_config.machine_max_jerk_y.values[0]); + warning_key.clear(); + warning_key = check_motion_ability_object_setting(jerk_to_check, max_jerk); + if (!warning_key.empty()) { + warning->string = L( + "The jerk setting exceeds the printer's maximum jerk (machine_max_jerk_x/machine_max_jerk_y).\n" + "Orca will automatically cap the jerk speed to ensure it doesn't surpass the printer's capabilities.\n" + "You can adjust the maximum jerk setting in your printer's configuration to get higher speeds."); + warning->opt_key = warning_key; + } + } } // Check junction deviation - const auto max_junction_deviation = m_config.machine_max_junction_deviation.values[0]; // Orca: Only marlin FW supports max junction deviation. Dont display warning if firmware is not supporting it. const bool support_max_junction_deviation = ( m_config.gcode_flavor == gcfMarlinFirmware); if (warning_key.empty() && m_default_object_config.default_junction_deviation.value > max_junction_deviation && support_max_junction_deviation) { - warning->string = L( "Junction deviation setting exceeds the printer's maximum value " - "(machine_max_junction_deviation).\nOrca will " - "automatically cap the junction deviation to ensure it doesn't surpass the printer's " - "capabilities.\nYou can adjust the " - "machine_max_junction_deviation value in your printer's configuration to get higher limits."); + warning->string = L( "Junction deviation setting exceeds the printer's maximum value (machine_max_junction_deviation).\n" + "Orca will automatically cap the junction deviation to ensure it doesn't surpass the printer's capabilities.\n" + "You can adjust the machine_max_junction_deviation value in your printer's configuration to get higher limits."); warning->opt_key = warning_key; } diff --git a/src/libslic3r/PrintApply.cpp b/src/libslic3r/PrintApply.cpp index 789076a43e..213a20ac55 100644 --- a/src/libslic3r/PrintApply.cpp +++ b/src/libslic3r/PrintApply.cpp @@ -1187,8 +1187,6 @@ Print::ApplyStatus Print::apply(const Model &model, DynamicPrintConfig new_full_ pem->values = effective_physical_extruder_map(pem, pei).values; } - m_ori_full_print_config = new_full_config; - new_full_config.update_values_to_printer_extruders_for_multiple_filaments(new_full_config, filament_options_with_variant, "filament_self_index", "filament_extruder_variant"); auto opt_filament_map = new_full_config.option("filament_map"); std::vector filament_maps = opt_filament_map ? opt_filament_map->values : std::vector(); diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 5f2e58c9f7..6a1586f025 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2931,6 +2931,19 @@ void PrintConfigDef::init_fff_params() def->max = 10; // Maximum number of lines for infill pattern def->set_default_value(new ConfigOptionInt(1)); + // Z-buckling bias optimization (experimental). Tightens the gyroid wave along the Z + // (vertical) axis at low infill density to shorten the effective column length under + // Z-axis compression. Filament use at the same `sparse_infill_density` setting is + // preserved. No effect above ~30% density (formula clamps to no-op). + def = this->add("gyroid_optimized", coBool); + def->label = L("Z-buckling bias optimization (experimental)"); + def->category = L("Strength"); + def->tooltip = L("Tightens the gyroid wave along the Z (vertical) axis at low infill density " + "to shorten the effective vertical column length and improve Z-axis compression " + "buckling resistance. Filament use is preserved. No effect at ~30% sparse infill " + "density and above. Only applies when Sparse infill pattern is set to Gyroid."); + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("sparse_infill_pattern", coEnum); def->label = L("Sparse infill pattern"); def->category = L("Strength"); @@ -3743,6 +3756,28 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(0)); + // ORCA: minimum non-zero part cooling fan speed. + def = this->add("part_cooling_fan_min_pwm", coInt); + def->label = L("Minimum non-zero part cooling fan speed"); + def->tooltip = L("Some part-cooling fans cannot start spinning when commanded below a certain PWM duty cycle. " + "When set above 0, any non-zero part-cooling fan command will be raised to at least this percentage " + "so the fan reliably starts. A fan command of 0 (fan off) is always honoured exactly. " + "This clamp is applied after every other fan calculation (first-layer ramp, layer-time interpolation, " + "overhang/bridge/support-interface/ironing overrides), so scaling still operates within the range " + "[this value, 100%]." + "\nIf your firmware already disables the fan below a threshold (for example Klipper's " + "[fan] off_below: 0.10 shuts the fan off whenever the commanded duty cycle is below 10%), " + "this option and the firmware threshold should ideally be set to the same value. Matching them " + "(e.g. off_below: 0.10 in Klipper and 10% here) guarantees the slicer never emits a non-zero " + "value that the firmware would silently drop, and the fan never receives a value below the one " + "you know it can actually spool at." + "\nSet to 0 to deactivate."); + def->sidetext = L("%"); + def->min = 0; + def->max = 100; + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionInt(0)); + def = this->add("time_cost", coFloat); def->label = L("Time cost"); @@ -4256,7 +4291,7 @@ void PrintConfigDef::init_fff_params() def->min = 0; def->max = 90; def->mode = comExpert; - def->set_default_value(new ConfigOptionFloat(0)); + def->set_default_value(new ConfigOptionFloat(35)); def = this->add("zaa_dont_alternate_fill_direction", coBool); def->label = L("Don't alternate fill direction"); @@ -5953,6 +5988,16 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); + def = this->add("tool_change_on_wipe_tower", coBool); + def->label = L("Tool change on wipe tower"); + def->tooltip = L("Force the toolhead to travel to the wipe tower before issuing the tool change command (Tx). " + "Only relevant for multi-extruder (multi-toolhead) printers using a Type 2 wipe tower. " + "By default Orca skips the travel on multi-toolhead machines because the firmware handles the head swap, " + "which can result in the Tx command being issued above the printed part. " + "Enable this option if you want the tool change to always be issued above the wipe tower instead."); + def->mode = comAdvanced; + def->set_default_value(new ConfigOptionBool(false)); + def = this->add("wipe_tower_no_sparse_layers", coBool); def->label = L("No sparse layers (beta)"); @@ -6872,7 +6917,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.emplace_back(L("Cone")); def->enum_labels.emplace_back(L("Rib")); def->mode = comAdvanced; - def->set_default_value(new ConfigOptionEnum(wtwRectangle)); + def->set_default_value(new ConfigOptionEnum(wtwRib)); def = this->add("wipe_tower_extra_rib_length", coFloat); def->label = L("Extra rib length"); @@ -9736,11 +9781,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coStrings: { ConfigOptionStrings * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9749,11 +9802,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coInts: { ConfigOptionInts * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9762,11 +9823,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coFloats: { ConfigOptionFloats * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9775,11 +9844,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coPercents: { ConfigOptionPercents * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9788,11 +9865,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coFloatsOrPercents: { ConfigOptionFloatsOrPercents * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9801,11 +9886,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coBools: { ConfigOptionBools * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; @@ -9814,11 +9907,19 @@ void DynamicPrintConfig::update_values_to_printer_extruders_for_multiple_filamen case coEnums: { ConfigOptionEnumsGeneric * opt = this->option(key); + if (!opt) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% not found, skipping")%__LINE__%key; + break; + } std::vector new_values; new_values.resize(filament_count); for (int f_index = 0; f_index < filament_count; f_index++) { + if (variant_index[f_index] < 0 || static_cast(variant_index[f_index]) >= opt->size()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(", Line %1%: option %2% variant index %3% out of range, skipping")%__LINE__%key%variant_index[f_index]; + continue; + } new_values[f_index] = opt->get_at(variant_index[f_index]); } opt->values = new_values; diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index b21897b6f6..56cd47f31d 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -1160,6 +1160,7 @@ PRINT_CONFIG_CLASS_DEFINE( // Orca: ((ConfigOptionFloatOrPercent, infill_combination_max_layer_height)) ((ConfigOptionInt, fill_multiline)) + ((ConfigOptionBool, gyroid_optimized)) // Ironing options ((ConfigOptionEnum, ironing_type)) ((ConfigOptionEnum, ironing_pattern)) @@ -1336,6 +1337,10 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionFloat, fan_kickstart)) ((ConfigOptionBool, fan_speedup_overhangs)) ((ConfigOptionFloat, fan_speedup_time)) + // ORCA: minimum PWM (as a percent 0-100) emitted when the part-cooling fan is asked for a non-zero speed. + // Used to overcome the PWM start-up threshold on fans that cannot spool below a certain duty cycle. + // A value of 0 (the default) leaves behaviour unchanged. A fan command of 0 (off) is always honoured. + ((ConfigOptionInt, part_cooling_fan_min_pwm)) ((ConfigOptionFloats, filament_diameter)) ((ConfigOptionBoolsNullable, filament_adaptive_volumetric_speed)) ((ConfigOptionStrings, volumetric_speed_coefficients)) @@ -1489,6 +1494,7 @@ PRINT_CONFIG_CLASS_DEFINE( ((ConfigOptionEnum, wipe_tower_type)) ((ConfigOptionBool, purge_in_prime_tower)) ((ConfigOptionBool, enable_filament_ramming)) + ((ConfigOptionBool, tool_change_on_wipe_tower)) ((ConfigOptionBool, support_multi_bed_types)) // Small Area Infill Flow Compensation diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index f572d3bbb1..aee470bab5 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -1703,30 +1703,46 @@ void PrintObject::detect_surfaces_type() // Only iterate to the second-to-last layer, since we look at layer i+1. if( (this->config().enable_extra_bridge_layer.value == eblApplyToAll) || (this->config().enable_extra_bridge_layer.value == eblExternalBridgeOnly)){ const size_t last = (m_layers.empty() ? 0 : m_layers.size() - 1); - tbb::parallel_for( tbb::blocked_range(0, last), [this, region_id](const tbb::blocked_range &range) { + + // ORCA: Two-phase split (collect-then-apply) to eliminate a data race in the + // original single-phase parallel_for, where iteration `i` rewrote + // m_layers[i+1]->slices.surfaces via std::move while iteration `i+1` (running + // on an adjacent TBB block on another worker thread) was iterating that same + // Surfaces vector as its bot_surfs. Splitting into a read-only collect pass + // followed by a write-only apply pass removes the cross-iteration aliasing. + // + // Phase 1: read-only pass — collect each layer's stBottomBridge polygons into a + // per-layer cache. No surfaces are mutated, so concurrent reads are safe. + std::vector bridge_polys_per_layer(last); + tbb::parallel_for(tbb::blocked_range(0, last), [this, region_id, &bridge_polys_per_layer](const tbb::blocked_range &range) { for (size_t i = range.begin(); i < range.end(); ++i) { m_print->throw_if_canceled(); - - // Step 1: Find bridge polygons - // Current layer (i): Search for stBottomBridge polygons. const Surfaces &bot_surfs = m_layers[i]->m_regions[region_id]->slices.surfaces; - // Next layer (i+1): The layer where stInternal polygons may be re-classified. - Surfaces &top_surfs = m_layers[i + 1]->m_regions[region_id]->slices.surfaces; - - // Step 2: Collect the bridge polygons in the current layer region - Polygons polygons_bridge; for (const Surface &sbot : bot_surfs) { if (sbot.surface_type == stBottomBridge) { - polygons_append(polygons_bridge, to_polygons(sbot)); + polygons_append(bridge_polys_per_layer[i], to_polygons(sbot)); } } - + } + }); + + // Phase 2: write pass — each iteration mutates only m_layers[i+1]->slices.surfaces + // and reads its bridge polygons from the precomputed cache. Different iterations + // never share a write target, so there is no aliasing between worker threads. + tbb::parallel_for( tbb::blocked_range(0, last), [this, region_id, &bridge_polys_per_layer](const tbb::blocked_range &range) { + for (size_t i = range.begin(); i < range.end(); ++i) { + m_print->throw_if_canceled(); + + // Step 1 + 2: pull the precomputed bridge polygons for the current source layer. + const Polygons &polygons_bridge = bridge_polys_per_layer[i]; + // Step 3: Early termination of loop if no meaningfull bridge found // No bridge polygons found, continue to the next layer if (polygons_bridge.empty()) continue; // Step 4: Bottom bridge polygons found - scan and create layer+1 bridge polygon + Surfaces &top_surfs = m_layers[i + 1]->m_regions[region_id]->slices.surfaces; Surfaces new_surfaces; new_surfaces.reserve(top_surfs.size()); @@ -1740,7 +1756,50 @@ void PrintObject::detect_surfaces_type() // This would also skip generation of very short dual bridge layers (that are shorter than N perimeters), but these are unecessary as the bridge distance is // We could reduce this slightly to account for innacurcies in the clipping operation. // TODO: Monitor GitHub issues to check whether second bridge layers are ommited where they should be generated. If yes, reduce the filtering distance - + + // ORCA: Same-layer-top guard. + // + // Collect every stTop polygon present at layer i+1 (this region) and + // expand it by the same `offset_distance` used by the bridge filter + // above. Note that `offset_distance` here is the full wall-band + // distance for the region (external wall width + all configured + // internal wall widths, i.e. external + (wall_loops - 1) × internal), + // not a single perimeter width. Any candidate second-bridge area that + // falls under this expanded mask will be subtracted out below. + // + // Why this exists: detect_surfaces_type() classifies a layer's "top" + // surfaces as the geometry that is not covered by the layer above. Those + // stTop regions often have small stInternal islands embedded in them. + // The pre-existing wall-band filter (shrink_ex/offset_ex by + // offset_distance) is supposed to throw those tiny islands away, but + // its result is sensitive to Clipper's floating-point order of + // operations: on macOS ARM the filter eats them, on Windows/Intel it + // doesn't. Visible bridges then show up scattered across the printed + // top surface. + // + // Expanding stTop by offset_distance and subtracting it from the + // overlap makes the decision platform-independent: an island fully + // surrounded by stTop disappears regardless of which Clipper happens + // to be doing the math, while large stInternal regions away from the + // top survive intact (the expansion only nibbles the wall-band depth + // inward). + // + // Keep ExPolygons throughout so that any holes inside an stTop surface + // are offset with the correct sign (positive offset shrinks holes / + // grows the solid region). Using Polygons + expand() would treat the + // contour and each hole as independent polygons and could distort the + // mask. + ExPolygons same_layer_top_expanded; + { + ExPolygons same_layer_top; + for (const Surface &s : top_surfs) { + if (s.surface_type == stTop) + same_layer_top.push_back(s.expolygon); + } + if (! same_layer_top.empty()) + same_layer_top_expanded = offset_ex(same_layer_top, offset_distance); + } + // For each surface in the layer above for (Surface &s_up : top_surfs) { // Only reclassify stInternal polygons (i.e. what will become later solid and sparse infill) @@ -1755,7 +1814,13 @@ void PrintObject::detect_surfaces_type() // Filter out the resulting candidate bridges based on size. First perform a shrink operation... // ...followed by an expand operation to bring them back to the original size (positive offset) overlap = offset_ex(shrink_ex(overlap, offset_distance), offset_distance); - + + // ORCA: subtract the expanded same-layer stTop mask (see comment above + // the mask construction). Drops stInternal islands fully surrounded by + // stTop at i+1 without affecting bridges that lie away from the top. + if (! same_layer_top_expanded.empty() && ! overlap.empty()) + overlap = diff_ex(overlap, same_layer_top_expanded, ApplySafetyOffset::Yes); + // Now subtract the filtered new bridge layer from the remaining internal surfaces to create the new internal surface ExPolygons remainder = diff_ex(p_up, overlap, ApplySafetyOffset::Yes); @@ -2500,29 +2565,76 @@ void PrintObject::bridge_over_infill() backup_surfaces[lidx] = {}; } - tbb::parallel_for(tbb::blocked_range(0, this->layers().size()), [po = this, &backup_surfaces, - &surfaces_by_layer](tbb::blocked_range r) { + // ORCA: Two-phase split (collect-then-apply) to eliminate a data race in + // the original single-phase parallel_for, where iteration `lidx` read + // m_layers[lidx-1]->regions()->fill_surfaces (its lower_layer) to compute + // `lightning_fill`, while iteration `lidx-1`, on an adjacent TBB block, + // was concurrently std::move-ing / emplace_back-ing into that same + // SurfaceCollection. + // + // Semantic choice — read ORIGINAL surfaces in Phase 1: + // The lower_layer that iteration `lidx` looks at is the *current* layer + // for iteration `lidx-1`, which Phase 2 will modify. We therefore have to + // pick whether Phase 1 sees that layer's pre-modification or + // post-modification state. We deliberately use the original (pre-modification) + // state, for two reasons: + // 1. The gate is asking "does the layer below use lightning sparse + // infill?" — that's a property of the layer's configuration plus its + // original sparse-infill classification. Phase 2's edits only carve + // a small overhang-aligned slice of sparse into solid; they do not + // change whether the layer is using lightning. The realistic gate + // answer is the same either way. + // 2. Each layer's solid expansion is meant to give its OWN lower_layer + // something to anchor lightning lines onto. Cascading the gate + // across layers ("skip mine because the layer below already did + // some") would invert that intent and force a serial Phase 2. + // The original racy code didn't actually implement either choice + // consistently — it returned whichever bytes happened to be in the + // vector when the thread arrived. This split makes the behaviour + // defined, deterministic across runs and platforms, and equivalent to + // a clean sequential implementation that gathered all gates first and + // then applied modifications. + // + // Phase 1: read-only — for each layer, determine whether its lower_layer + // has any stInternal area inside a lightning-infill region. That's the + // sole purpose of `lightning_fill` in the original code: a gate. Capture + // it once into a per-layer bool, derived from the original (unmodified) + // surfaces, so the gate is platform-independent and order-independent. + std::vector needs_lightning_expansion(this->layers().size(), 0); + tbb::parallel_for(tbb::blocked_range(0, this->layers().size()), [po = this, &surfaces_by_layer, + &needs_lightning_expansion](tbb::blocked_range r) { PRINT_OBJECT_TIME_LIMIT_MILLIS(PRINT_OBJECT_TIME_LIMIT_DEFAULT); for (size_t lidx = r.begin(); lidx < r.end(); lidx++) { if (surfaces_by_layer.find(lidx) == surfaces_by_layer.end()) continue; - - Layer *layer = po->get_layer(lidx); + const Layer *layer = po->get_layer(lidx); const Layer *lower_layer = layer->lower_layer; if (lower_layer == nullptr) continue; - - Polygons lightning_fill; for (const LayerRegion *region : lower_layer->regions()) { - if (region->region().config().sparse_infill_pattern == ipLightning) { - Polygons lf = to_polygons(region->fill_surfaces.filter_by_type(stInternal)); - lightning_fill.insert(lightning_fill.end(), lf.begin(), lf.end()); + if (region->region().config().sparse_infill_pattern == ipLightning + && ! region->fill_surfaces.filter_by_type(stInternal).empty()) { + needs_lightning_expansion[lidx] = 1; + break; } } + } + }); - if (lightning_fill.empty()) + // Phase 2: write-only — each iteration mutates only m_layers[lidx]'s + // fill_surfaces and never reads any other layer's surfaces. Different + // iterations write to disjoint LayerRegion::fill_surfaces vectors, so + // there is no aliasing between worker threads. + tbb::parallel_for(tbb::blocked_range(0, this->layers().size()), [po = this, &backup_surfaces, + &surfaces_by_layer, + &needs_lightning_expansion](tbb::blocked_range r) { + PRINT_OBJECT_TIME_LIMIT_MILLIS(PRINT_OBJECT_TIME_LIMIT_DEFAULT); + for (size_t lidx = r.begin(); lidx < r.end(); lidx++) { + if (! needs_lightning_expansion[lidx]) continue; + Layer *layer = po->get_layer(lidx); + for (LayerRegion *region : layer->regions()) { backup_surfaces[lidx][region] = std::move( region->fill_surfaces); // Make backup copy by move!! so that pointers in candidate surfaces stay valid @@ -3232,53 +3344,75 @@ void PrintObject::bridge_over_infill() // === ORCA: Create a second internal bridge layer above the first bridge layer. ======================================================== // ====================================================================================================================================== if ( this->m_config.enable_extra_bridge_layer == eblApplyToAll || this->m_config.enable_extra_bridge_layer == eblInternalBridgeOnly) { - // Process layers in parallel up to second-to-last - tbb::parallel_for( tbb::blocked_range(0, this->layers().size() - 1), [this](const tbb::blocked_range& r) { - for (size_t lidx = r.begin(); lidx < r.end(); ++lidx) - { + // ORCA: Two-phase to eliminate the same data race as the external-bridge + // pass in detect_surfaces_type(). + // + // Phase 1: read-only — for each layer, collect its stInternalBridge polygons and + // the matching bridge angle into a per-layer cache. + struct LayerBridgeCache { + ExPolygons polys; + double angle = 0.0; + float offset_distance = 0.0f; + bool has_bridge = false; + }; + // Guard against size_t underflow when the object has 0 or 1 layers — there is + // no "layer above" to receive an extra bridge, so the whole pass is a no-op. + const size_t last = (this->layers().size() < 2) ? 0 : this->layers().size() - 1; + std::vector caches(this->layers().size()); + + tbb::parallel_for( tbb::blocked_range(0, last), [this, &caches](const tbb::blocked_range& r) { + for (size_t lidx = r.begin(); lidx < r.end(); ++lidx) { Layer* layer = this->get_layer(lidx); - - // (A) Gather internal bridging surfaces in the current layer - ExPolygons bridging_current_layer; - double bridging_angle_current = 0.0; - - bool found_any_bridge = false; - float offset_distance = 0.0f; - - // Pick a region from which to retrieve the flow width + LayerBridgeCache &cache = caches[lidx]; + if (!layer->regions().empty()) - offset_distance = layer->regions().front()->flow(frSolidInfill).scaled_width(); + cache.offset_distance = layer->regions().front()->flow(frSolidInfill).scaled_width(); for (LayerRegion *region : layer->regions()) { for (const Surface &surf : region->fill_surfaces.surfaces) { if (surf.surface_type == stInternalBridge) { - bridging_current_layer.push_back(surf.expolygon); - bridging_angle_current = surf.bridge_angle; // Store the last bridging angle of the current print object - found_any_bridge = true; + cache.polys.push_back(surf.expolygon); + cache.angle = surf.bridge_angle; // last bridge angle on this layer wins, matching prior behaviour + cache.has_bridge = true; } } } - - // If no bridging in this layer, continue with the next - if (!found_any_bridge || bridging_current_layer.empty()) + + if (!cache.has_bridge || cache.polys.empty()) { + cache.has_bridge = false; continue; - - // (B) Shrink-expand to remove trivial bridging areas - bridging_current_layer = offset_ex( shrink_ex(bridging_current_layer, offset_distance), offset_distance ); - - if (bridging_current_layer.empty()) - continue; // all bridging was trivial, continue with the next layer - + } + + // Shrink-expand to remove trivial bridging areas + cache.polys = offset_ex(shrink_ex(cache.polys, cache.offset_distance), cache.offset_distance); + if (cache.polys.empty()) + cache.has_bridge = false; + } + }); + + // Phase 2: write — each iteration mutates only m_layers[lidx+1]->fill_surfaces and + // pulls its bridge polygons from the precomputed cache. Different iterations never + // touch the same fill_surfaces vector, so there is no aliasing between workers. + tbb::parallel_for( tbb::blocked_range(0, last), [this, &caches](const tbb::blocked_range& r) { + for (size_t lidx = r.begin(); lidx < r.end(); ++lidx) + { + const LayerBridgeCache &cache = caches[lidx]; + + // If no bridging in this layer, continue with the next + if (!cache.has_bridge || cache.polys.empty()) + continue; + // (C) If there is a next layer, identify overlapping stInternal & stInternalSolid areas and convert the overlap to stSecondInternalBridge if (lidx + 1 < this->layers().size()) { Layer* next_layer = this->get_layer(lidx + 1); // second bridging angle is 90 degrees offset - double bridging_angle_second = bridging_angle_current + M_PI / 2.0; + double bridging_angle_second = cache.angle + M_PI / 2.0; // Union the bridging polygons - ExPolygons bridging_union = union_safety_offset_ex(bridging_current_layer); - + ExPolygons bridging_union = union_safety_offset_ex(cache.polys); + const float offset_distance = cache.offset_distance; + for (LayerRegion *next_region : next_layer->regions()) { Surfaces next_new_surfaces; Surfaces keep_surfaces; diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 1e59b44e30..ee37acb91e 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -21,6 +21,32 @@ namespace Slic3r { bool PrintObject::clip_multipart_objects = true; bool PrintObject::infill_only_where_needed = false; +static coordf_t compute_slice_z(PrintObject* print_object, size_t i_layer, coordf_t lo, coordf_t hi) +{ + bool zaa_active = false; + coordf_t z_offset = 0.0; + + size_t num_regions = print_object->num_printing_regions(); + for (size_t rid = 0; rid < num_regions; ++rid) { + const auto& rcfg = print_object->printing_region(rid).config(); + if (rcfg.zaa_enabled) { + if (!zaa_active || rcfg.zaa_min_z < z_offset) + z_offset = rcfg.zaa_min_z; + zaa_active = true; + } + } + + if (!zaa_active || i_layer == 0) { + return 0.5 * (lo + hi); + } + + coordf_t slice_z = lo + z_offset; + if ((slice_z < lo && !is_approx(slice_z, lo)) || (slice_z > hi && !is_approx(slice_z, hi))) { + throw RuntimeError("Bad min Z value"); + } + return slice_z; +} + LayerPtrs new_layers( PrintObject *print_object, // Object layers (pairs of bottom/top Z coordinate), without the raft. @@ -34,24 +60,8 @@ LayerPtrs new_layers( for (size_t i_layer = 0; i_layer < object_layers.size(); i_layer += 2) { coordf_t lo = object_layers[i_layer]; coordf_t hi = object_layers[i_layer + 1]; - coordf_t slice_z = 0.5 * (lo + hi); - bool zaa_active = false; - coordf_t z_offset = 0.0; - size_t num_regions = print_object->num_printing_regions(); - for (size_t rid = 0; rid < num_regions; ++rid) { - const auto &rcfg = print_object->printing_region(rid).config(); - if (rcfg.zaa_enabled) { - if (!zaa_active || rcfg.zaa_min_z < z_offset) - z_offset = rcfg.zaa_min_z; - zaa_active = true; - } - } - if (zaa_active) { - slice_z = lo + z_offset; - if ((slice_z < lo && !is_approx(slice_z, lo)) || (slice_z > hi && !is_approx(slice_z, hi))) { - throw RuntimeError("Bad min Z value"); - } - } + coordf_t slice_z = compute_slice_z(print_object, i_layer, lo, hi); + Layer *layer = new Layer(id ++, print_object, hi - lo, hi + zmin, slice_z); out.emplace_back(layer); if (prev != nullptr) { diff --git a/src/libslic3r/Thread.hpp b/src/libslic3r/Thread.hpp index f9dc07456c..c407159072 100644 --- a/src/libslic3r/Thread.hpp +++ b/src/libslic3r/Thread.hpp @@ -46,11 +46,23 @@ void name_tbb_thread_pool_threads_set_locale(); template inline boost::thread create_thread(boost::thread::attributes &attrs, Fn &&fn) { - // Duplicating the stack allocation size of Thread Building Block worker - // threads of the thread pool: allocate 4MB on a 64bit system, allocate 2MB - // on a 32bit system by default. - - attrs.set_stack_size((sizeof(void*) == 4) ? (2048 * 1024) : (4096 * 1024)); + // Stack size for our worker threads. Originally duplicated TBB's pool + // default (4 MB), but the Emboss text-cut path calls into CGAL's + // Polygon_mesh_processing::corefine, which falls back from filtered + // interval arithmetic to exact rational arithmetic (mpq_class) on + // near-degenerate input, and the constrained 2D triangulation walker + // (Triangulation_2::march_locate_2D) can recurse deeply enough to + // exceed 4 MB on real models -- producing a SIGBUS at the next thread's + // stack guard page on macOS / Linux. + // + // 16 MB chosen as 4x defensive headroom over the observed crash + // threshold (n=1 reproducer at exactly 4 MB on macOS arm64). All three + // platforms defer-commit reserved stack pages: macOS / Linux mmap the + // stack and only fault in pages on touch; Boost.Thread on Win32 passes + // STACK_SIZE_PARAM_IS_A_RESERVATION to _beginthreadex, so the value is + // a reserve, not the initial commit. Resident memory therefore stays + // proportional to actual stack depth on every target. + attrs.set_stack_size(16 * 1024 * 1024); return boost::thread{attrs, std::forward(fn)}; } diff --git a/src/libslic3r/TriangleMeshSlicer.cpp b/src/libslic3r/TriangleMeshSlicer.cpp index 150c456b8b..2c1c0da23f 100644 --- a/src/libslic3r/TriangleMeshSlicer.cpp +++ b/src/libslic3r/TriangleMeshSlicer.cpp @@ -2348,7 +2348,7 @@ void cut_mesh(const indexed_triangle_set& mesh, float z, indexed_triangle_set* u IntersectionLines upper_lines, lower_lines; std::vector upper_slice_vertices, lower_slice_vertices; std::vector facets_edge_ids = its_face_edge_ids(mesh); - std::map section_vertices_map; + std::map section_vertices_map; // vertices on the cut plane for (int facet_idx = 0; facet_idx < int(mesh.indices.size()); ++ facet_idx) { const stl_triangle_vertex_indices &facet = mesh.indices[facet_idx]; diff --git a/src/libslic3r/TriangleSelector.cpp b/src/libslic3r/TriangleSelector.cpp index a6d19f505c..3b032cc57e 100644 --- a/src/libslic3r/TriangleSelector.cpp +++ b/src/libslic3r/TriangleSelector.cpp @@ -1,9 +1,11 @@ #include "TriangleSelector.hpp" #include "Model.hpp" +#include "AABBTreeIndirect.hpp" #include #include #include +#include #include #ifndef NDEBUG @@ -168,24 +170,69 @@ void TriangleSelector::Triangle::set_division(int sides_to_split, int special_si this->special_side_idx = char(special_side_idx); } -inline bool is_point_inside_triangle(const Vec3f &pt, const Vec3f &p1, const Vec3f &p2, const Vec3f &p3) +// Pre-computed barycentric resolver +// Real-time collision detection, Ericson, Chapter 3.4 +// Cache inspired by Don Hatch at https://gamedev.stackexchange.com/questions/23743/whats-the-most-efficient-way-to-find-barycentric-coordinates/23745#comment390123_23745 +struct Barycentric { - // Real-time collision detection, Ericson, Chapter 3.4 - auto barycentric = [&pt, &p1, &p2, &p3]() -> Vec3f { - std::array v = {p2 - p1, p3 - p1, pt - p1}; - float d00 = v[0].dot(v[0]); - float d01 = v[0].dot(v[1]); - float d11 = v[1].dot(v[1]); - float d20 = v[2].dot(v[0]); - float d21 = v[2].dot(v[1]); - float denom = d00 * d11 - d01 * d01; +public: + Barycentric(const Vec3f& a, const Vec3f& b, const Vec3f& c) + :a_(a) + { + // Pre-compute denominator + const Vec3f v0 = b - a; + const Vec3f v1 = c - a; + const float d00 = v0.dot(v0); + const float d01 = v0.dot(v1); + const float d11 = v1.dot(v1); + const float inv_denom_ = 1.0f / (d00 * d11 - d01 * d01); + + x1_ = (d11 * v0 - d01 * v1) * inv_denom_; + x2_ = (d00 * v1 - d01 * v0) * inv_denom_; + } - Vec3f barycentric_cords(1.f, (d11 * d20 - d01 * d21) / denom, (d00 * d21 - d01 * d20) / denom); - barycentric_cords.x() = barycentric_cords.x() - barycentric_cords.y() - barycentric_cords.z(); - return barycentric_cords; - }; + Vec3f calc(const Vec3f& p) const + { + const Vec3f v2 = p - a_; + const float v = v2.dot(x1_); + const float w = v2.dot(x2_); + const float u = 1.f - v - w; - Vec3f barycentric_cords = barycentric(); + return {u, v, w}; + } + + bool is_point_inside_triangle(const Vec3f& p) const + { + const Vec3f barycentric_cords = calc(p); + return std::all_of(begin(barycentric_cords), end(barycentric_cords), [](float cord) { return 0.f <= cord && cord <= 1.0; }); + } + + static Vec3f calc(const Vec3f& pt, const Vec3f& p1, const Vec3f& p2, const Vec3f& p3) + { + const std::array vec = {p2 - p1, p3 - p1, pt - p1}; + const float d00 = vec[0].dot(vec[0]); + const float d01 = vec[0].dot(vec[1]); + const float d11 = vec[1].dot(vec[1]); + const float d20 = vec[2].dot(vec[0]); + const float d21 = vec[2].dot(vec[1]); + const float denom = d00 * d11 - d01 * d01; + + const float v = (d11 * d20 - d01 * d21) / denom; + const float w = (d00 * d21 - d01 * d20) / denom; + const float u = 1.f - v - w; + + return {u, v, w}; + } + +private: + Vec3f a_; + Vec3f x1_; + Vec3f x2_; +}; + +static bool is_point_inside_triangle(const Vec3f &pt, const Vec3f &p1, const Vec3f &p2, const Vec3f &p3) +{ + Vec3f barycentric_cords = Barycentric::calc(pt, p1, p2, p3); return std::all_of(begin(barycentric_cords), end(barycentric_cords), [](float cord) { return 0.f <= cord && cord <= 1.0; }); } @@ -233,7 +280,7 @@ int TriangleSelector::select_unsplit_triangle(const Vec3f &hit, int facet_idx) c return this->select_unsplit_triangle(hit, facet_idx, neighbors); } -void TriangleSelector::select_patch(int facet_start, std::unique_ptr &&cursor, EnforcerBlockerType new_state, const Transform3d& trafo_no_translate, bool triangle_splitting, float highlight_by_angle_deg) +void TriangleSelector::select_patch(int facet_start, std::unique_ptr &&cursor, EnforcerBlockerType new_state, const Transform3d& trafo_no_translate, bool triangle_splitting, float highlight_by_angle_deg, const bool select_partially) { assert(facet_start < m_orig_size_indices); @@ -296,7 +343,7 @@ void TriangleSelector::select_patch(int facet_start, std::unique_ptr &&c Matrix3f normal_matrix = static_cast(trafo_no_translate.matrix().block(0, 0, 3, 3).inverse().transpose().cast()); float world_normal_z = (normal_matrix* facet_normal).normalized().z(); if (!visited[facet] && (highlight_by_angle_deg == 0.f || world_normal_z < highlight_angle_limit)) { - if (select_triangle(facet, new_state, triangle_splitting)) { + if (select_triangle(facet, new_state, triangle_splitting, select_partially)) { // add neighboring facets to list to be processed later for (int neighbor_idx : m_neighbors[facet]) if (neighbor_idx >= 0 && m_cursor->is_facet_visible(neighbor_idx, m_face_normals)) @@ -552,7 +599,7 @@ void TriangleSelector::bucket_fill_select_triangles(const Vec3f& hit, int facet_ // This is done by an actual recursive call. Returns false if the triangle is // outside the cursor. // Called by select_patch() and by itself. -bool TriangleSelector::select_triangle(int facet_idx, EnforcerBlockerType type, bool triangle_splitting) +bool TriangleSelector::select_triangle(int facet_idx, EnforcerBlockerType type, bool triangle_splitting, bool select_partially) { assert(facet_idx < int(m_triangles.size())); @@ -562,7 +609,7 @@ bool TriangleSelector::select_triangle(int facet_idx, EnforcerBlockerType type, Vec3i32 neighbors = m_neighbors[facet_idx]; assert(this->verify_triangle_neighbors(m_triangles[facet_idx], neighbors)); - if (! select_triangle_recursive(facet_idx, neighbors, type, triangle_splitting)) + if (! select_triangle_recursive(facet_idx, neighbors, type, triangle_splitting, select_partially)) return false; // In case that all children are leafs and have the same state now, @@ -902,7 +949,7 @@ Vec3i32 TriangleSelector::child_neighbors_propagated(const Triangle &tr, const V return out; } -bool TriangleSelector::select_triangle_recursive(int facet_idx, const Vec3i32 &neighbors, EnforcerBlockerType type, bool triangle_splitting) +bool TriangleSelector::select_triangle_recursive(int facet_idx, const Vec3i32 &neighbors, EnforcerBlockerType type, bool triangle_splitting, bool select_partially) { assert(facet_idx < int(m_triangles.size())); @@ -935,8 +982,10 @@ bool TriangleSelector::select_triangle_recursive(int facet_idx, const Vec3i32 &n if (triangle_splitting) split_triangle(facet_idx, neighbors); - else if (!m_triangles[facet_idx].is_split()) + if ((!triangle_splitting || select_partially) && !m_triangles[facet_idx].is_split()) { m_triangles[facet_idx].set_state(type); + return true; + } tr = &m_triangles[facet_idx]; // might have been invalidated by split_triangle(). int num_of_children = tr->number_of_split_sides() + 1; @@ -946,7 +995,7 @@ bool TriangleSelector::select_triangle_recursive(int facet_idx, const Vec3i32 &n assert(tr->children[i] < int(m_triangles.size())); // Recursion, deep first search over the children of this triangle. // All children of this triangle were created by splitting a single source triangle of the original mesh. - select_triangle_recursive(tr->children[i], this->child_neighbors(*tr, neighbors, i), type, triangle_splitting); + select_triangle_recursive(tr->children[i], this->child_neighbors(*tr, neighbors, i), type, triangle_splitting, select_partially); tr = &m_triangles[facet_idx]; // might have been invalidated } } @@ -2208,4 +2257,271 @@ std::vector TriangleSelector::extract_used_facet_states(con return out; } +static bool segments_intersect_proj(const Vec3f& p1, const Vec3f& p2, const Vec3f& p3, const Vec3f& p4, const std::pair& proj) +{ + auto cross2d = [](float ax, float ay, float bx, float by) -> float { return ax * by - ay * bx; }; + const auto [u_axis, v_axis] = proj; + const auto u1 = p1(u_axis), v1 = p1(v_axis); + const auto u2 = p2(u_axis), v2 = p2(v_axis); + const auto u3 = p3(u_axis), v3 = p3(v_axis); + const auto u4 = p4(u_axis), v4 = p4(v_axis); + const float ru = u2 - u1, rv = v2 - v1; + const float su = u4 - u3, sv = v4 - v3; + const float denom = cross2d(ru, rv, su, sv); + if (std::abs(denom) < 1e-10f) + return false; + const float dpu = u3 - u1, dpv = v3 - v1; + const float t1 = cross2d(dpu, dpv, su, sv) / denom; + const float t2 = cross2d(dpu, dpv, ru, rv) / denom; + return 0.f <= t1 && t1 <= 1.0f && 0.f <= t2 && t2 <= 1.f; +}; + +class TriangleCursor : public TriangleSelector::SinglePointCursor +{ +public: + TriangleCursor() = delete; + explicit TriangleCursor(const Vec3f& center_, + const Vec3f& source_, + float radius_world, + const Transform3d& trafo_, + const TriangleSelector::ClippingPlane& clipping_plane_, + const std::array& vertices) + : TriangleSelector::SinglePointCursor(center_, source_, radius_world, trafo_, clipping_plane_) + , barycentric_(vertices[0], vertices[1], vertices[2]) + {} + ~TriangleCursor() override = default; + + static std::unique_ptr build_cursor(const TriangleSelector& source_selector, const TriangleSelector::Triangle& tri) + { + const Vec3f& pv0 = source_selector.m_vertices[tri.verts_idxs[0]].v; + const Vec3f& pv1 = source_selector.m_vertices[tri.verts_idxs[1]].v; + const Vec3f& pv2 = source_selector.m_vertices[tri.verts_idxs[2]].v; + + // Calculate the centroid of the triangle + const Vec3f center = (pv0 + pv1 + pv2) / 3.f; + + // Calculate the norm of the plane + const Vec3f& norm = source_selector.m_face_normals[tri.source_triangle]; + + // Calculate the min distance from the centroid to every edges + const float radius = std::max(std::min(std::min(point_to_line_dist(center, pv0, pv1), point_to_line_dist(center, pv0, pv2)), + point_to_line_dist(center, pv1, pv2)), 0.1f); + + return std::make_unique(center, center + norm, radius, Transform3d::Identity(), TriangleSelector::ClippingPlane(), + std::array{pv0, pv1, pv2}); + } + + bool is_mesh_point_inside(const Vec3f& point) const override + { + return barycentric_.is_point_inside_triangle(point); + } + + bool is_edge_inside_cursor(const TriangleSelector::Triangle& tr, const std::vector& vertices) const override + { + std::array pts_proj; // Projected point onto the plane + std::array pts_dist; // Distance to the plane, positive means above, negative means below the plane + for (int i = 0; i < 3; ++i) { + Vec3f p = vertices[tr.verts_idxs[i]].v; + if (!this->uniform_scaling) + p = this->trafo * p; + + const Vec3f diff = p - center; + pts_dist[i] = diff.dot(dir); + pts_proj[i] = p - pts_dist[i] * dir; + } + + for (int side = 0; side < 3; ++side) { + const int idx_a = side; + const int idx_b = side < 2 ? side + 1 : 0; + + // If both ends at the same side and farther than tolerance, skip + const float dist_a = pts_dist[idx_a]; + const float dist_b = pts_dist[idx_b]; + if ((dist_a > tolerance && dist_b > tolerance) || (dist_a < -tolerance && dist_b < -tolerance)) { + continue; + } + + // Find the projected line segment which has distance to the plane within the tolerance + Vec3f pt_a = pts_proj[idx_a]; + Vec3f pt_b = pts_proj[idx_b]; + if (std::abs(dist_a) > tolerance) { + pt_a = (tolerance - dist_b) / (dist_a - dist_b) * (pts_proj[idx_a] - pts_proj[idx_b]) + pts_proj[idx_b]; + } + if (std::abs(dist_b) > tolerance) { + pt_b = (tolerance - dist_a) / (dist_b - dist_a) * (pts_proj[idx_b] - pts_proj[idx_a]) + pts_proj[idx_a]; + } + + // If any projected end is inside the triangle, then is in + if (barycentric_.is_point_inside_triangle(pt_a) || + barycentric_.is_point_inside_triangle(pt_b)) { + return true; + } + + // Otherwise see if the segment (pt_a, pt_b) intersects the triangle + { + const Vec3f uvw_a = barycentric_.calc(pt_a); + const Vec3f uvw_b = barycentric_.calc(pt_b); + const Vec3f uvw_0 {1.f,0.f,0.f}; + const Vec3f uvw_1 {0.f,1.f,0.f}; + const Vec3f uvw_2 {0.f,0.f,1.f}; + constexpr std::pair proj{0, 1}; + + if (segments_intersect_proj(uvw_a, uvw_b, uvw_0, uvw_1, proj)|| + segments_intersect_proj(uvw_a, uvw_b, uvw_0, uvw_2, proj)|| + segments_intersect_proj(uvw_a, uvw_b, uvw_1, uvw_2, proj)) { + return true; + } + } + } + return false; + } + + bool is_facet_visible(int facet_idx, const std::vector& face_normals) const override + { + const Vec3f& n = face_normals[facet_idx]; + + return check_normal(n, this->dir); + } + + static bool check_normal(const Vec3f& facet_norm, const Vec3f& camera_dir) + { + const float a = -(facet_norm.dot(camera_dir)); + return std::clamp(a, 0.f, 1.f) >= facet_angle_limit; + } + + static constexpr float tolerance = 0.01f; + +private: + const Barycentric barycentric_; + static const double facet_angle_limit; + + static float point_to_line_dist(const Vec3f& p, const Vec3f& a, const Vec3f& b) + { + const Eigen::ParametrizedLine line = Eigen::ParametrizedLine::Through(a, b); + return line.distance(p); + } +}; +const double TriangleCursor::facet_angle_limit = cos(Geometry::deg2rad(5.0)); + + +// Remap painting data from source mesh to target mesh using spatial mapping. +TriangleSelector::TriangleSplittingData TriangleSelector::remap_painting( + const indexed_triangle_set& source_its, + const TriangleSplittingData& source_painting, + const indexed_triangle_set& target_its, + const Transform3d& target_transform, + const std::optional>& existing_painting) +{ + TriangleSelector::TriangleSplittingData result; + if (source_painting.bitstream.empty()) + return result; + + // 1. Deserialize source painting + TriangleMesh source_mesh(source_its); + TriangleSelector source_selector(source_mesh); + source_selector.deserialize(source_painting, false); + + // 2. Extract painted geometry + std::vector> painted_triangles; + painted_triangles.reserve(source_selector.m_triangles.size()); + for (const Triangle& tr : source_selector.m_triangles) { + if (tr.valid() && !tr.is_split() && tr.get_state() != EnforcerBlockerType::NONE) { + painted_triangles.push_back(std::ref(tr)); + } + } + + if (painted_triangles.empty()) + return result; + + // 3. Build AABB tree of target mesh so we could find nearest face quickly + TriangleMesh target_mesh(target_its); + target_mesh.transform(target_transform); + AABBTreeIndirect::Tree3f target_tree = AABBTreeIndirect::build_aabb_tree_over_indexed_triangle_set(target_mesh.its.vertices, target_mesh.its.indices); + + // Helper: check overlap between a paint triangle and a target triangle. + // Uses 3D barycentric point-in-triangle tests and dominant-axis 2D projection + // for edge-edge intersection to handle all triangle orientations correctly. + auto check_overlap = [&](const Vec3f& pa, const Vec3f& pb, const Vec3f& pc, + const Vec3f& ta, const Vec3f& tb, const Vec3f& tc) -> bool { + // Check if any target vertex is inside the paint triangle + if (is_point_inside_triangle(ta, pa, pb, pc)) return true; + if (is_point_inside_triangle(tb, pa, pb, pc)) return true; + if (is_point_inside_triangle(tc, pa, pb, pc)) return true; + + // Check if any paint vertex is inside the target triangle + if (is_point_inside_triangle(pa, ta, tb, tc)) return true; + if (is_point_inside_triangle(pb, ta, tb, tc)) return true; + if (is_point_inside_triangle(pc, ta, tb, tc)) return true; + + // Check edge-edge intersections using dominant-axis 2D projection. + // Project onto the plane (XY, XZ, or YZ) where the triangles have the + // most area, avoiding degenerate projections for vertical/angled surfaces. + Vec3f n1 = (pb - pa).cross(pc - pa); + Vec3f n2 = (tb - ta).cross(tc - ta); + Vec3f n_abs = (n1.cwiseAbs() + n2.cwiseAbs()); + int axis = (n_abs.x() >= n_abs.y() && n_abs.x() >= n_abs.z()) ? 0 + : (n_abs.y() >= n_abs.z()) ? 1 : 2; + const int u_axis = (axis + 1) % 3; + const int v_axis = (axis + 2) % 3; + const std::pair proj{u_axis, v_axis}; + + if (segments_intersect_proj(pa, pb, ta, tb, proj)) return true; + if (segments_intersect_proj(pa, pb, tb, tc, proj)) return true; + if (segments_intersect_proj(pa, pb, tc, ta, proj)) return true; + if (segments_intersect_proj(pb, pc, ta, tb, proj)) return true; + if (segments_intersect_proj(pb, pc, tb, tc, proj)) return true; + if (segments_intersect_proj(pb, pc, tc, ta, proj)) return true; + if (segments_intersect_proj(pc, pa, ta, tb, proj)) return true; + if (segments_intersect_proj(pc, pa, tb, tc, proj)) return true; + if (segments_intersect_proj(pc, pa, tc, ta, proj)) return true; + + return false; + }; + + // 4. For each painted face, we find the nearest target face, and apply the TriangleCursor to paint it + TriangleSelector target_selector(target_mesh); + if (existing_painting) { + // Restore existing painting first, if given + target_selector.deserialize(existing_painting->get(), false); + } + for (auto tri_ref : painted_triangles) { + const Triangle& tri = tri_ref.get(); + const Vec3f& pv0 = source_selector.m_vertices[tri.verts_idxs[0]].v; + const Vec3f& pv1 = source_selector.m_vertices[tri.verts_idxs[1]].v; + const Vec3f& pv2 = source_selector.m_vertices[tri.verts_idxs[2]].v; + + // Find ALL target faces whose bounding boxes overlap with the paint + // triangle's bounding box, not just the nearest one. + Eigen::AlignedBox3f pt_bbox; + pt_bbox.extend(pv0); + pt_bbox.extend(pv1); + pt_bbox.extend(pv2); + pt_bbox.min() -= Eigen::Vector3f::Constant(TriangleCursor::tolerance); + pt_bbox.max() += Eigen::Vector3f::Constant(TriangleCursor::tolerance); + + AABBTreeIndirect::traverse(target_tree, AABBTreeIndirect::intersecting(pt_bbox), [&](const AABBTreeIndirect::Tree3f::Node& node) -> bool { + size_t face_idx = node.idx; + if (face_idx >= target_mesh.its.indices.size()) + return true; + + const Vec3f& norm_a = source_selector.m_face_normals[tri.source_triangle]; + const Vec3f& norm_b = target_selector.m_face_normals[face_idx]; + + const Vec3i32& face = target_mesh.its.indices[face_idx]; + const Vec3f& ta = target_mesh.its.vertices[face(0)]; + const Vec3f& tb = target_mesh.its.vertices[face(1)]; + const Vec3f& tc = target_mesh.its.vertices[face(2)]; + + if (TriangleCursor::check_normal(norm_b, -norm_a) && check_overlap(pv0, pv1, pv2, ta, tb, tc)) { + // Paint this face + target_selector.select_patch(face_idx, TriangleCursor::build_cursor(source_selector, tri), tri.get_state(), + Transform3d::Identity(), true, 0.f, true); + } + return true; // continue traversal + }); + } + + return target_selector.serialize(); +} + } // namespace Slic3r diff --git a/src/libslic3r/TriangleSelector.hpp b/src/libslic3r/TriangleSelector.hpp index 50bbdd4ed0..11517f5c6c 100644 --- a/src/libslic3r/TriangleSelector.hpp +++ b/src/libslic3r/TriangleSelector.hpp @@ -308,7 +308,8 @@ public: EnforcerBlockerType new_state, // enforcer or blocker? const Transform3d &trafo_no_translate, // matrix to get from mesh to world without translation bool triangle_splitting, // If triangles will be split base on the cursor or not - float highlight_by_angle_deg = 0.f); // The maximal angle of overhang. If it is set to a non-zero value, it is possible to paint only the triangles of overhang defined by this angle in degrees. + float highlight_by_angle_deg = 0.f, // The maximal angle of overhang. If it is set to a non-zero value, it is possible to paint only the triangles of overhang defined by this angle in degrees. + bool select_partially = false); // Select a triangle if it's partially in the cursor but too small to be subdivided void seed_fill_select_triangles(const Vec3f &hit, // point where to start int facet_start, // facet of the original mesh (unsplit) that the hit point belongs to @@ -372,6 +373,25 @@ public: // The operation may merge split triangles if they are being assigned the same color. void seed_fill_apply_on_triangles(EnforcerBlockerType new_state); + // Saved painting data for remapping after mesh change. + struct SavedPainting { + TriangleMesh mesh; // Original mesh + TriangleSplittingData supported; + TriangleSplittingData seam; + TriangleSplittingData mmu; + TriangleSplittingData fuzzy; + }; + + // Remap painting data from source mesh to target mesh using spatial mapping. + // `target_transform` should transform the target mesh into source's coordinate space. + // If `existing_painting` is present, the result will be a combine of `existing_painting` and remapped `source_painting`. + static TriangleSplittingData remap_painting( + const indexed_triangle_set& source_its, + const TriangleSplittingData& source_painting, + const indexed_triangle_set& target_its, + const Transform3d& target_transform, + const std::optional>& existing_painting); + protected: // Triangle and info about how it's split. class Triangle { @@ -477,8 +497,8 @@ protected: // Private functions: private: - bool select_triangle(int facet_idx, EnforcerBlockerType type, bool triangle_splitting); - bool select_triangle_recursive(int facet_idx, const Vec3i32 &neighbors, EnforcerBlockerType type, bool triangle_splitting); + bool select_triangle(int facet_idx, EnforcerBlockerType type, bool triangle_splitting, bool select_partially); + bool select_triangle_recursive(int facet_idx, const Vec3i32 &neighbors, EnforcerBlockerType type, bool triangle_splitting, bool select_partially); void undivide_triangle(int facet_idx); void split_triangle(int facet_idx, const Vec3i32 &neighbors); void remove_useless_children(int facet_idx); // No hidden meaning. Triangles are meant. @@ -521,11 +541,10 @@ private: int m_free_triangles_head { -1 }; int m_free_vertices_head { -1 }; + + friend class TriangleCursor; }; - - - } // namespace Slic3r #endif // libslic3r_TriangleSelector_hpp_ diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index d40cf40518..c7afa29d95 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -331,6 +331,8 @@ set(SLIC3R_GUI_SOURCES GUI/Mouse3DController.hpp GUI/MsgDialog.cpp GUI/MsgDialog.hpp + GUI/MultiChoiceDialog.hpp + GUI/MultiChoiceDialog.cpp GUI/MultiMachine.cpp GUI/MultiMachine.hpp GUI/MultiMachineManagerPage.cpp @@ -498,6 +500,8 @@ set(SLIC3R_GUI_SOURCES GUI/Widgets/Button.hpp GUI/Widgets/CheckBox.cpp GUI/Widgets/CheckBox.hpp + GUI/Widgets/CheckList.cpp + GUI/Widgets/CheckList.hpp GUI/Widgets/ComboBox.cpp GUI/Widgets/ComboBox.hpp GUI/Widgets/DialogButtons.cpp @@ -685,6 +689,8 @@ if (APPLE) GUI/Mouse3DHandlerMac.mm GUI/InstanceCheckMac.mm GUI/InstanceCheckMac.h + GUI/DeepLinkHandlerMac.mm + GUI/DeepLinkHandlerMac.h GUI/GUI_UtilsMac.mm GUI/wxMediaCtrl2.mm GUI/wxMediaCtrl2.h diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index fd3569e2ca..50d4cfcfa6 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -978,12 +978,51 @@ GLVolumeWithIdAndZList volumes_to_render(const GLVolumePtrs& volumes, GLVolumeCo return list; } -int GLVolumeCollection::get_selection_support_threshold_angle(bool &enable_support) const +// ORCA: Compute slope.normal_z for 3D overhang highlight directly from support settings. +// If support_threshold_angle is 0, use tree fallback angle (30 deg) for tree supports, +// and derive an equivalent angle from threshold overlap for normal supports. +float GLVolumeCollection::get_selection_support_normal_z() const { - const DynamicPrintConfig& glb_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; - enable_support = glb_cfg.opt_bool("enable_support"); - int support_threshold_angle = glb_cfg.opt_int("support_threshold_angle"); - return support_threshold_angle ; + const DynamicPrintConfig& glb_cfg = GUI::wxGetApp().preset_bundle->prints.get_edited_preset().config; + const auto& full_cfg = GUI::wxGetApp().preset_bundle->full_config(); + const auto support_type = glb_cfg.opt_enum("support_type"); + const int support_threshold_angle = glb_cfg.opt_int("support_threshold_angle"); + double angle_rad; + + if (support_threshold_angle > 0) { + // Match support generation: explicit threshold angles are treated as inclusive. + const int effective_support_threshold_angle = std::min(support_threshold_angle + 1, 89); + angle_rad = Geometry::deg2rad(static_cast(effective_support_threshold_angle)); + } else if (is_tree(support_type)) { + angle_rad = Geometry::deg2rad(30.0); // fallback value for tree supports + } else { // For normal supports, if the angle is set to 0, calculate normal_z from overlap. + const double layer_height = full_cfg.opt_float("layer_height"); + const auto* nozzle_diameter_opt = full_cfg.option("nozzle_diameter"); + const int wall_filament = full_cfg.opt_int("wall_filament"); + const size_t nozzle_count = nozzle_diameter_opt->values.size(); + const size_t wall_extruder_idx = (wall_filament > 0 && wall_filament <= static_cast(nozzle_count)) + ? static_cast(wall_filament - 1) + : 0; // Invalid extruder index falls back to extruder 1. + + // Use wall extruder's nozzle diameter for better estimation of external perimeter width, + // which is more relevant to overhang printing than the default nozzle diameter. + const double nozzle_diameter = nozzle_diameter_opt->values[wall_extruder_idx]; + + double external_perimeter_width = full_cfg.get_abs_value("outer_wall_line_width", nozzle_diameter); + if (external_perimeter_width <= 0.0) { + external_perimeter_width = full_cfg.get_abs_value("line_width", nozzle_diameter); + + if (external_perimeter_width <= 0.0) + external_perimeter_width = nozzle_diameter; + } + + const double overlap_width = full_cfg.get_abs_value("support_threshold_overlap", external_perimeter_width); + const double lower_layer_offset = std::max(0.0, external_perimeter_width - overlap_width); + + angle_rad = lower_layer_offset <= EPSILON ? Geometry::deg2rad(89.0) : std::atan(layer_height / lower_layer_offset); + } + + return static_cast(-std::cos(std::clamp(angle_rad, 0.0, Geometry::deg2rad(89.0)))); } //BBS: add outline drawing logic @@ -1019,6 +1058,8 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, if (disable_cullface) glsafe(::glDisable(GL_CULL_FACE)); + const float support_normal_z = get_selection_support_normal_z(); + for (GLVolumeWithIdAndZ& volume : to_render) { #if ENABLE_MODIFIERS_ALWAYS_TRANSPARENT if (type == ERenderType::Transparent) { @@ -1075,16 +1116,11 @@ void GLVolumeCollection::render(GLVolumeCollection::ERenderType type, //use -1 ad a invalid type shader->set_uniform("print_volume.type", -1); } - - bool enable_support; - int support_threshold_angle = get_selection_support_threshold_angle(enable_support); - - float normal_z = -::cos(Geometry::deg2rad((float) support_threshold_angle)); shader->set_uniform("volume_world_matrix", volume.first->world_matrix()); shader->set_uniform("slope.actived", m_slope.isGlobalActive && !volume.first->is_modifier && !volume.first->is_wipe_tower); shader->set_uniform("slope.volume_world_normal_matrix", static_cast(volume.first->world_matrix().matrix().block(0, 0, 3, 3).inverse().transpose().cast())); - shader->set_uniform("slope.normal_z", normal_z); + shader->set_uniform("slope.normal_z", support_normal_z); #if ENABLE_ENVIRONMENT_MAP unsigned int environment_texture_id = GUI::wxGetApp().plater()->get_environment_texture_id(); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index b12d048aa9..76d10620d9 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -488,7 +488,7 @@ public: GLVolume* new_toolpath_volume(const ColorRGBA& rgba); GLVolume* new_nontoolpath_volume(const ColorRGBA& rgba); - int get_selection_support_threshold_angle(bool&) const; + float get_selection_support_normal_z() const; // Render the volumes by OpenGL. //BBS: add outline drawing logic void render(ERenderType type, diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 19a32c2d21..4a429a4a5a 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -863,7 +863,15 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi std::set filament_id_set; PresetBundle * preset_bundle = wxGetApp().preset_bundle; std::ostringstream stream; - stream << std::fixed << std::setprecision(1) << obj->GetExtderSystem()->GetNozzleDiameter(0); + // Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires + // only during the brief BBL startup window before firmware reports nozzle info. Without this, + // the "0.0" lookup string returns an empty set and the filament dropdown goes blank. + float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0); + if (machine_diameter == 0.0f && preset_bundle) { + const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter"); + if (opt) machine_diameter = static_cast(opt)->values[0]; + } + stream << std::fixed << std::setprecision(1) << machine_diameter; std::string nozzle_diameter_str = stream.str(); std::set printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str); @@ -1101,8 +1109,17 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt) PresetBundle* preset_bundle = wxGetApp().preset_bundle; if (preset_bundle) { std::ostringstream stream; - if (obj) - stream << std::fixed << std::setprecision(1) << obj->GetExtderSystem()->GetNozzleDiameter(0); + if (obj) { + // Defensive: this dialog is opened only from StatusPanel (BBL-only) today, so the fallback fires + // only during the brief BBL startup window before firmware reports nozzle info. Without this, + // the "0.0" lookup string returns an empty set and filament lookup yields no results. + float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0); + if (machine_diameter == 0.0f) { + const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter"); + if (opt) machine_diameter = static_cast(opt)->values[0]; + } + stream << std::fixed << std::setprecision(1) << machine_diameter; + } std::string nozzle_diameter_str = stream.str(); std::set printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(DevPrinterConfigUtil::get_printer_display_name(obj->printer_type), nozzle_diameter_str); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index 9b1c6ab97d..7a5bece0af 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -58,7 +58,7 @@ CenteredTitle::CenteredTitle(wxWindow* parent) wxRect rect = GetClientRect(); wxString ellipsized = wxControl::Ellipsize(m_title, dc, wxELLIPSIZE_END, wxMax(0, rect.GetWidth() - FromDIP(8))); - int y = rect.y + (rect.height - textHeight) / 2; + int y = rect.y + (rect.height - textHeight) / 2 + 1; int x = rect.x + ((ellipsized != m_title) // is ellipsized ? FromDIP(4) // align to left when clipped : (rect.width - dc.GetTextExtent(m_title).GetWidth()) / 2); // centered when has available space @@ -115,15 +115,14 @@ void BBLTopbarArt::DrawBackground(wxDC& dc, wxWindow* wnd, const wxRect& rect) void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& item, const wxRect& rect) { int textWidth = 0, textHeight = 0; + wxFontMetrics fm; if (m_flags & wxAUI_TB_TEXT) { dc.SetFont(m_font); - int tx, ty; - - dc.GetTextExtent(wxT("ABCDHgj"), &tx, &textHeight); - textWidth = 0; - dc.GetTextExtent(item.GetLabel(), &textWidth, &ty); + fm = dc.GetFontMetrics(); + textHeight = fm.ascent + fm.descent; + dc.GetTextExtent(item.GetLabel(), &textWidth, nullptr); } int bmpX = 0, bmpY = 0; @@ -158,9 +157,7 @@ void BBLTopbarArt::DrawButton(wxDC& dc, wxWindow* wnd, const wxAuiToolBarItem& i (bmpSize.y / 2); textX = bmpX + wnd->FromDIP(3) + bmpSize.x; - textY = rect.y + - (rect.height / 2) - - (textHeight / 2); + textY = bmpY + bmpSize.y / 2 - textHeight / 2 - fm.externalLeading + 1; } @@ -228,7 +225,9 @@ BBLTopbar::BBLTopbar(wxWindow* pwin, wxFrame* parent) void BBLTopbar::Init(wxFrame* parent) { - SetArtProvider(new BBLTopbarArt()); + auto* art = new BBLTopbarArt(); + art->SetFont(Label::Body_12); + SetArtProvider(art); m_frame = parent; m_skip_popup_file_menu = false; m_skip_popup_dropdown_menu = false; @@ -321,6 +320,7 @@ void BBLTopbar::Init(wxFrame* parent) //this->AddStretchSpacer(1); m_title_ctrl = new CenteredTitle(this); + m_title_ctrl->SetFont(Label::Body_12); wxAuiToolBarItem* title_item = this->AddControl(m_title_ctrl, ""); title_item->SetProportion(1); diff --git a/src/slic3r/GUI/CaliHistoryDialog.cpp b/src/slic3r/GUI/CaliHistoryDialog.cpp index 1dee391ae1..a485aaeb52 100644 --- a/src/slic3r/GUI/CaliHistoryDialog.cpp +++ b/src/slic3r/GUI/CaliHistoryDialog.cpp @@ -644,7 +644,14 @@ wxArrayString NewCalibrationHistoryDialog::get_all_filaments(const MachineObject std::set filament_id_set; std::set printer_names; std::ostringstream stream; - stream << std::fixed << std::setprecision(1) << obj->GetExtderSystem()->GetNozzleDiameter(0); + // If the machine didn't report a nozzle diameter (0.0 = unknown), fall back to the currently + // selected printer preset so the filament list isn't empty. + float machine_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0); + if (machine_diameter == 0.0f && preset_bundle) { + const ConfigOption *opt = preset_bundle->printers.get_selected_preset().config.option("nozzle_diameter"); + if (opt) machine_diameter = static_cast(opt)->values[0]; + } + stream << std::fixed << std::setprecision(1) << machine_diameter; std::string nozzle_diameter_str = stream.str(); for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) { diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index c61beb3304..ab5b920fb6 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -761,6 +761,7 @@ void PressureAdvanceWizard::on_cali_start() calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); + calib_info.nozzle_diameter = preset_page->get_nozzle_diameter(calib_info.extruder_id); calib_info.select_ams = std::to_string(selected_tray_id); Preset *preset = selected_filaments.begin()->second; Preset * temp_filament_preset = new Preset(preset->type, preset->name + "_temp"); @@ -1293,6 +1294,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); + calib_info.nozzle_diameter = preset_page->get_nozzle_diameter(calib_info.extruder_id); Preset* preset = selected_filaments.begin()->second; temp_filament_preset = new Preset(preset->type, preset->name + "_temp"); temp_filament_preset->config = preset->config; @@ -1708,6 +1710,7 @@ void MaxVolumetricSpeedWizard::on_cali_start() calib_info.extruder_id = preset_page->get_extruder_id(calib_info.ams_id); calib_info.extruder_type = preset_page->get_extruder_type(calib_info.extruder_id); calib_info.nozzle_volume_type = preset_page->get_nozzle_volume_type(calib_info.extruder_id); + calib_info.nozzle_diameter = preset_page->get_nozzle_diameter(calib_info.extruder_id); calib_info.filament_prest = selected_filaments.begin()->second; std::map filament_list = preset_page->get_filament_ams_list(); calib_info.filament_color = filament_list[selected_filaments.begin()->first].opt_string("filament_colour", 0u); diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index dbb0e8d525..1df4dba9c2 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -605,6 +605,10 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co bool have_multiline_infill_pattern = pattern == ipGyroid || pattern == ipGrid || pattern == ipRectilinear || pattern == ipTpmsD || pattern == ipTpmsFK || pattern == ipCrossHatch || pattern == ipHoneycomb || pattern == ipLateralLattice || pattern == ipLateralHoneycomb || pattern == ipConcentric || pattern == ipCubic || pattern == ipStars || pattern == ipAlignedRectilinear || pattern == ipLightning || pattern == ip3DHoneycomb || pattern == ipAdaptiveCubic || pattern == ipSupportCubic|| pattern == ipTriangles || pattern == ipQuarterCubic|| pattern == ipArchimedeanChords || pattern == ipHilbertCurve || pattern == ipOctagramSpiral; + // gyroid_optimized only applies when the sparse infill pattern is gyroid; + // hide the whole line otherwise. + toggle_line("gyroid_optimized", have_infill && pattern == ipGyroid); + // If there is infill, enable/disable fill_multiline according to whether the pattern supports multiline infill. if (have_infill) { toggle_field("fill_multiline", have_multiline_infill_pattern); diff --git a/src/slic3r/GUI/DeepLinkHandlerMac.h b/src/slic3r/GUI/DeepLinkHandlerMac.h new file mode 100644 index 0000000000..e9877e3868 --- /dev/null +++ b/src/slic3r/GUI/DeepLinkHandlerMac.h @@ -0,0 +1,16 @@ +#ifndef slic3r_GUI_DeepLinkHandlerMac_h_ +#define slic3r_GUI_DeepLinkHandlerMac_h_ + +namespace Slic3r { +namespace GUI { + +// Re-registers a Cocoa Apple Event handler for kInternetEventClass/kAEGetURL. +// Works around a regression observed after upgrading to wxWidgets 3.3.2 on +// macOS Tahoe (#13119) where wxWidgets' built-in handler is registered but +// never fires for orcaslicer:// deep links. +void register_mac_deep_link_handler(); + +} // namespace GUI +} // namespace Slic3r + +#endif diff --git a/src/slic3r/GUI/DeepLinkHandlerMac.mm b/src/slic3r/GUI/DeepLinkHandlerMac.mm new file mode 100644 index 0000000000..fd3d8272ff --- /dev/null +++ b/src/slic3r/GUI/DeepLinkHandlerMac.mm @@ -0,0 +1,41 @@ +#import +#import + +#include + +#include "DeepLinkHandlerMac.h" +#include "GUI_App.hpp" + +@interface OrcaDeepLinkHandler : NSObject +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)reply; +@end + +@implementation OrcaDeepLinkHandler +- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)reply +{ + NSString *url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; + if (url == nil || url.length == 0) + return; + BOOST_LOG_TRIVIAL(info) << "Deep link received: " << [url UTF8String]; + Slic3r::GUI::wxGetApp().MacOpenURL(wxString::FromUTF8([url UTF8String])); +} +@end + +namespace Slic3r { +namespace GUI { + +void register_mac_deep_link_handler() +{ + static OrcaDeepLinkHandler *handler = nil; + if (handler == nil) + handler = [[OrcaDeepLinkHandler alloc] init]; + + [[NSAppleEventManager sharedAppleEventManager] + setEventHandler:handler + andSelector:@selector(handleGetURLEvent:withReplyEvent:) + forEventClass:kInternetEventClass + andEventID:kAEGetURL]; +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/DeviceCore/DevManager.cpp b/src/slic3r/GUI/DeviceCore/DevManager.cpp index 0e197a236b..63311b99af 100644 --- a/src/slic3r/GUI/DeviceCore/DevManager.cpp +++ b/src/slic3r/GUI/DeviceCore/DevManager.cpp @@ -1,4 +1,7 @@ #include + +#include + #include "DevManager.h" #include "DevUtil.h" @@ -151,11 +154,15 @@ namespace Slic3r { keep_alive(); MachineObject* obj = this->get_selected_machine(); + if (!obj) { + BOOST_LOG_TRIVIAL(warning) << "DeviceManager::check_pushing selected machine not found"; + return; + } std::chrono::system_clock::time_point start = std::chrono::system_clock::now(); auto internal = std::chrono::duration_cast(start - obj->last_update_time); - if (obj && !obj->is_support_mqtt_alive) + if (!obj->is_support_mqtt_alive) { if (internal.count() > TIMEOUT_FOR_STRAT && internal.count() < 1000 * 60 * 60 * 300) { @@ -916,18 +923,33 @@ namespace Slic3r const auto cloud_provider = Slic3r::GUI::wxGetApp().get_printer_cloud_provider(); if (Slic3r::GUI::wxGetApp().is_user_login(cloud_provider)) { - m_manager->check_pushing(); - try - { - agent->refresh_connection(cloud_provider); + try { + m_manager->check_pushing(); + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer check_pushing exception=" + << e.what(); + } catch (...) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer check_pushing unknown exception"; } - catch (...) - { - ; + + try { + agent->refresh_connection(cloud_provider); + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer refresh_connection exception=" + << e.what(); + } catch (...) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer refresh_connection unknown exception"; } } // certificate - agent->install_device_cert(obj->get_dev_id(), obj->is_lan_mode_printer()); + try { + agent->install_device_cert(obj->get_dev_id(), obj->is_lan_mode_printer()); + } catch (const std::exception& e) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer install_device_cert exception=" + << e.what(); + } catch (...) { + BOOST_LOG_TRIVIAL(error) << "DeviceManagerRefresher::on_timer install_device_cert unknown exception"; + } } } diff --git a/src/slic3r/GUI/DeviceErrorDialog.cpp b/src/slic3r/GUI/DeviceErrorDialog.cpp index 008c99474d..aadc39abd9 100644 --- a/src/slic3r/GUI/DeviceErrorDialog.cpp +++ b/src/slic3r/GUI/DeviceErrorDialog.cpp @@ -175,7 +175,7 @@ void DeviceErrorDialog::init_button_list() init_button(PROBLEM_SOLVED_RESUME, _L("Problem Solved and Resume")); init_button(TURN_OFF_FIRE_ALARM, _L("Got it, Turn off the Fire Alarm.")); init_button(RETRY_PROBLEM_SOLVED, _L("Retry (problem solved)")); - init_button(CANCLE, _L("Cancel")); + init_button(CANCEL, _L("Cancel")); init_button(STOP_DRYING, _L("Stop Drying")); init_button(PROCEED, _L("Proceed")); init_button(DBL_CHECK_CANCEL, _L("Cancel")); @@ -445,7 +445,7 @@ void DeviceErrorDialog::on_button_click(ActionButton btn_id) m_obj->command_ams_control("resume"); break; } - case DeviceErrorDialog::CANCLE: { + case DeviceErrorDialog::CANCEL: { break; } case DeviceErrorDialog::STOP_DRYING: { diff --git a/src/slic3r/GUI/DeviceErrorDialog.hpp b/src/slic3r/GUI/DeviceErrorDialog.hpp index cca8af14c1..af0b850e4b 100644 --- a/src/slic3r/GUI/DeviceErrorDialog.hpp +++ b/src/slic3r/GUI/DeviceErrorDialog.hpp @@ -43,7 +43,7 @@ public: RETRY_PROBLEM_SOLVED = 34, STOP_DRYING = 35, - CANCLE = 37, + CANCEL = 37, REMOVE_CLOSE_BTN = 39, // special case, do not show close button PROCEED = 41, diff --git a/src/slic3r/GUI/ExtraRenderers.cpp b/src/slic3r/GUI/ExtraRenderers.cpp index 4c16ce8deb..18811ef241 100644 --- a/src/slic3r/GUI/ExtraRenderers.cpp +++ b/src/slic3r/GUI/ExtraRenderers.cpp @@ -324,9 +324,18 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR else c_editor->SetSelection(atoi(data.GetText().c_str()) - 1); - // Open the dropdown immediately when the editor is focused. c_editor->Bind(wxEVT_SET_FOCUS, [c_editor](wxFocusEvent& evt) { +#ifdef __WXGTK__ + // On wxGTK the data-view editor may receive focus before its native + // window is mapped. Opening the popup one event later avoids creating + // the GTK popup without a valid toplevel parent. + c_editor->CallAfter([c_editor]() { + if (c_editor->IsShownOnScreen()) + c_editor->ForceDropdownOpen(); + }); +#else c_editor->ForceDropdownOpen(); +#endif evt.Skip(); }); @@ -343,7 +352,10 @@ wxWindow* BitmapChoiceRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelR bool BitmapChoiceRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value) { - ::ComboBox*c = static_cast<::ComboBox *>(ctrl); + auto* c = dynamic_cast<::ComboBox*>(ctrl); + if (!c) + return false; + int selection = c->GetSelection(); if (selection < 0) return false; @@ -389,4 +401,3 @@ wxSize TextRenderer::GetSize() const return GetTextExtent(m_value); } - diff --git a/src/slic3r/GUI/ExtraRenderers.hpp b/src/slic3r/GUI/ExtraRenderers.hpp index 18f1f49182..59a1f040ee 100644 --- a/src/slic3r/GUI/ExtraRenderers.hpp +++ b/src/slic3r/GUI/ExtraRenderers.hpp @@ -28,6 +28,15 @@ public: m_bmp(other.m_bmp) { } + DataViewBitmapText& operator=(const DataViewBitmapText &other) + { + if (this != &other) { + m_text = other.m_text; + m_bmp = other.m_bmp; + } + return *this; + } + void SetText(const wxString &text) { m_text = text; } wxString GetText() const { return m_text; } void SetBitmap(const wxBitmap &bmp) { m_bmp = bmp; } diff --git a/src/slic3r/GUI/FilamentGroupPopup.cpp b/src/slic3r/GUI/FilamentGroupPopup.cpp index 2cff9c3c82..a29e4537fb 100644 --- a/src/slic3r/GUI/FilamentGroupPopup.cpp +++ b/src/slic3r/GUI/FilamentGroupPopup.cpp @@ -338,7 +338,21 @@ void FilamentGroupPopup::OnRadioBtn(int idx) } } -void FilamentGroupPopup::OnTimer(wxTimerEvent &event) { Dismiss(); } +void FilamentGroupPopup::OnTimer(wxTimerEvent &event) +{ +#if __APPLE__ + // On macOS, when moving cursor from slice button to this popup window, + // the popup window entering event is triggered first, then the slice button + // leaving event got triggered. So the timer is stopped first, then started + // again, causing the popup being dismissed immediately. + // To fix this, we check if cursor is still inside the popup window before + // dismissing. + wxPoint pos = this->ScreenToClient(wxGetMousePosition()); + if (this->GetClientRect().Contains(pos)) return; +#endif + + Dismiss(); +} void FilamentGroupPopup::Dismiss() { m_active = false; diff --git a/src/slic3r/GUI/FilamentMapDialog.cpp b/src/slic3r/GUI/FilamentMapDialog.cpp index 73f8041a28..a514494af1 100644 --- a/src/slic3r/GUI/FilamentMapDialog.cpp +++ b/src/slic3r/GUI/FilamentMapDialog.cpp @@ -215,7 +215,7 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent, main_sizer->Add(bottom_panel, 0, wxEXPAND); m_ok_btn->Bind(wxEVT_BUTTON, &FilamentMapDialog::on_ok, this); - m_cancel_btn->Bind(wxEVT_BUTTON, &FilamentMapDialog::on_cancle, this); + m_cancel_btn->Bind(wxEVT_BUTTON, &FilamentMapDialog::on_cancel, this); SetEscapeId(wxID_CANCEL); Bind(wxEVT_CHAR_HOOK, [this](wxKeyEvent& e) { if (e.GetKeyCode() == WXK_ESCAPE) { @@ -286,7 +286,7 @@ void FilamentMapDialog::on_ok(wxCommandEvent &event) EndModal(wxID_OK); } -void FilamentMapDialog::on_cancle(wxCommandEvent &event) { EndModal(wxID_CANCEL); } +void FilamentMapDialog::on_cancel(wxCommandEvent &event) { EndModal(wxID_CANCEL); } void FilamentMapDialog::update_panel_status(PageType page) { diff --git a/src/slic3r/GUI/FilamentMapDialog.hpp b/src/slic3r/GUI/FilamentMapDialog.hpp index bafc6ab3f2..3272f203b3 100644 --- a/src/slic3r/GUI/FilamentMapDialog.hpp +++ b/src/slic3r/GUI/FilamentMapDialog.hpp @@ -60,7 +60,7 @@ public: void set_modal_btn_labels(const wxString& left_label, const wxString& right_label); private: void on_ok(wxCommandEvent &event); - void on_cancle(wxCommandEvent &event); + void on_cancel(wxCommandEvent &event); void on_switch_mode(wxCommandEvent &event); void on_checkbox(wxCommandEvent &event); diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 9a7c5946aa..2df840e5fe 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include @@ -97,7 +98,7 @@ static std::string get_view_type_string(libvgcode::EViewType view_type) return _u8L("Filament"); else if (view_type == libvgcode::EViewType::LayerTimeLinear) return _u8L("Layer Time"); -else if (view_type == libvgcode::EViewType::LayerTimeLogarithmic) + else if (view_type == libvgcode::EViewType::LayerTimeLogarithmic) return _u8L("Layer Time (log)"); // ORCA: Add Pressure Advance visualization support else if (view_type == libvgcode::EViewType::PressureAdvance) @@ -127,6 +128,29 @@ static int find_close_layer_idx(const std::vector &zs, double &z, double return -1; } +static std::string format_compact_weight(double value_in_grams, bool imperial_units) +{ + char buffer[64]; + if (imperial_units) { + ::sprintf(buffer, "%.2f oz", value_in_grams / GizmoObjectManipulation::oz_to_g); + return buffer; + } + + const double abs_value = value_in_grams < 0.0 ? -value_in_grams : value_in_grams; + const char* unit = "g"; + double scaled_value = abs_value; + if (scaled_value >= 1000000.0) { + scaled_value /= 1000000.0; + unit = "t"; + } else if (scaled_value >= 1000.0) { + scaled_value /= 1000.0; + unit = "kg"; + } + + ::sprintf(buffer, "%s%.2f%s", value_in_grams < 0.0 ? "-" : "", scaled_value, unit); + return buffer; +} + #if ENABLE_ACTUAL_SPEED_DEBUG int GCodeViewer::SequentialView::ActualSpeedImguiWidget::plot(const char* label, const std::array& frame_size) { @@ -1294,6 +1318,25 @@ void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const //BBS: move the id to the end of reset m_last_result_id = gcode_result.id; m_gcode_result = &gcode_result; + m_move_type_counts.fill(0); + for (auto& move_type_times : m_move_type_times) + move_type_times.fill(0.0f); + m_move_type_distances.fill(0.0f); + for (const GCodeProcessorResult::MoveVertex& move : gcode_result.moves) { + if (move.internal_only) + continue; + + const size_t move_type = static_cast(move.type); + if (move_type < m_move_type_counts.size()) { + ++m_move_type_counts[move_type]; + for (size_t mode = 0; mode < move.time.size(); ++mode) + m_move_type_times[move_type][mode] += move.time[mode]; + if (move.type == EMoveType::Retract || move.type == EMoveType::Unretract) + m_move_type_distances[move_type] += std::fabs(move.delta_extruder); + else + m_move_type_distances[move_type] += move.travel_dist; + } + } m_only_gcode_in_preview = only_gcode; m_sequential_view.gcode_window.load_gcode(gcode_result.filename, gcode_result.lines_ends); @@ -1456,6 +1499,29 @@ void GCodeViewer::load_as_preview(libvgcode::GCodeInputData&& data) { m_loaded_as_preview = true; + m_move_type_counts.fill(0); + for (auto& move_type_times : m_move_type_times) + move_type_times.fill(0.0f); + m_move_type_distances.fill(0.0f); + const size_t normal_time_mode_idx = static_cast(PrintEstimatedStatistics::ETimeMode::Normal); + for (size_t i = 0; i < data.vertices.size(); ++i) { + const libvgcode::PathVertex& vertex = data.vertices[i]; + const size_t move_type = static_cast(vertex.type); + if (move_type < m_move_type_counts.size()) { + ++m_move_type_counts[move_type]; + for (size_t mode = 0; mode < vertex.times.size(); ++mode) + m_move_type_times[move_type][mode] += vertex.times[mode]; + if (vertex.type == libvgcode::EMoveType::Retract || vertex.type == libvgcode::EMoveType::Unretract) { + m_move_type_distances[move_type] += std::fabs(vertex.feedrate) * vertex.times[normal_time_mode_idx]; + } else if (i > 0) { + const float dx = vertex.position[0] - data.vertices[i - 1].position[0]; + const float dy = vertex.position[1] - data.vertices[i - 1].position[1]; + const float dz = vertex.position[2] - data.vertices[i - 1].position[2]; + m_move_type_distances[move_type] += std::sqrt(dx * dx + dy * dy + dz * dz); + } + } + } + m_viewer.set_extrusion_role_color(libvgcode::EGCodeExtrusionRole::Skirt, { 127, 255, 127 }); m_viewer.set_extrusion_role_color(libvgcode::EGCodeExtrusionRole::ExternalPerimeter, { 255, 255, 0 }); m_viewer.set_extrusion_role_color(libvgcode::EGCodeExtrusionRole::SupportMaterial, { 127, 255, 127 }); @@ -1503,6 +1569,10 @@ void GCodeViewer::reset() m_extruders_count = 0; m_filament_diameters = std::vector(); m_filament_densities = std::vector(); + m_move_type_counts.fill(0); + for (auto& move_type_times : m_move_type_times) + move_type_times.fill(0.0f); + m_move_type_distances.fill(0.0f); m_print_statistics.reset(); m_custom_gcode_per_print_z = std::vector(); m_left_extruder_filament.clear(); @@ -2979,39 +3049,42 @@ void GCodeViewer::render_all_plates_stats(const std::vectorfirst + 1), offsets[_u8L("Filament")]}); char buf[64]; - double unit_conver = imperial_units ? GizmoObjectManipulation::oz_to_g : 1.0; - float column_sum_m = 0.0f; float column_sum_g = 0.0f; if (displayed_columns & ColumnData::Model) { + const std::string weight_text = format_compact_weight(model_used_filaments_g_all_plates[i], imperial_units); if ((displayed_columns & ~ColumnData::Model) > 0) - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", model_used_filaments_m_all_plates[i], model_used_filaments_g_all_plates[i] / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", model_used_filaments_m_all_plates[i], weight_text.c_str()); else - ::sprintf(buf, imperial_units ? "%.2f in %.2f oz" : "%.2f m %.2f g", model_used_filaments_m_all_plates[i], model_used_filaments_g_all_plates[i] / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in %s" : "%.2f m %s", model_used_filaments_m_all_plates[i], weight_text.c_str()); columns_offsets.push_back({ buf, offsets[_u8L("Model")] }); column_sum_m += model_used_filaments_m_all_plates[i]; column_sum_g += model_used_filaments_g_all_plates[i]; } if (displayed_columns & ColumnData::Support) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", support_used_filaments_m_all_plates[i], support_used_filaments_g_all_plates[i] / unit_conver); + const std::string weight_text = format_compact_weight(support_used_filaments_g_all_plates[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", support_used_filaments_m_all_plates[i], weight_text.c_str()); columns_offsets.push_back({ buf, offsets[_u8L("Support")] }); column_sum_m += support_used_filaments_m_all_plates[i]; column_sum_g += support_used_filaments_g_all_plates[i]; } if (displayed_columns & ColumnData::Flushed) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", flushed_filaments_m_all_plates[i], flushed_filaments_g_all_plates[i] / unit_conver); + const std::string weight_text = format_compact_weight(flushed_filaments_g_all_plates[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", flushed_filaments_m_all_plates[i], weight_text.c_str()); columns_offsets.push_back({ buf, offsets[_u8L("Flushed")] }); column_sum_m += flushed_filaments_m_all_plates[i]; column_sum_g += flushed_filaments_g_all_plates[i]; } if (displayed_columns & ColumnData::WipeTower) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", wipe_tower_used_filaments_m_all_plates[i], wipe_tower_used_filaments_g_all_plates[i] / unit_conver); + const std::string weight_text = format_compact_weight(wipe_tower_used_filaments_g_all_plates[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", wipe_tower_used_filaments_m_all_plates[i], weight_text.c_str()); columns_offsets.push_back({ buf, offsets[_u8L("Tower")] }); column_sum_m += wipe_tower_used_filaments_m_all_plates[i]; column_sum_g += wipe_tower_used_filaments_g_all_plates[i]; } if ((displayed_columns & ~ColumnData::Model) > 0) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", column_sum_m, column_sum_g / unit_conver); + const std::string weight_text = format_compact_weight(column_sum_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", column_sum_m, weight_text.c_str()); columns_offsets.push_back({ buf, offsets[_u8L("Total")] }); } @@ -3376,7 +3449,9 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const PrintEstimatedStatistics::Mode& time_mode = m_print_statistics.modes[static_cast(m_viewer.get_time_mode())]; const libvgcode::EViewType curr_view_type = m_viewer.get_view_type(); const int curr_view_type_i = static_cast(curr_view_type); - bool show_estimated_time = time_mode.time > 0.0f && (curr_view_type == libvgcode::EViewType::FeatureType || + const size_t current_time_mode = static_cast(m_viewer.get_time_mode()); + const float total_estimated_time = time_mode.time > 0.0f ? time_mode.time : m_viewer.get_estimated_time(); + bool show_estimated_time = total_estimated_time > 0.0f && (curr_view_type == libvgcode::EViewType::FeatureType || curr_view_type == libvgcode::EViewType::LayerTimeLinear || curr_view_type == libvgcode::EViewType::LayerTimeLogarithmic || (curr_view_type == libvgcode::EViewType::ColorPrint && !time_mode.custom_gcode_times.empty())); @@ -3390,6 +3465,39 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImVec2 pos_rect = ImGui::GetCursorScreenPos(); float window_padding = 4.0f * m_scale; + auto format_compact_count = [](unsigned long long value) { + static constexpr const char* suffixes[] = { "", "K", "M", "B", "T", "P", "E" }; + constexpr size_t suffix_count = sizeof(suffixes) / sizeof(suffixes[0]); + + if (value < 1000) + return std::to_string(value); + + size_t suffix_index = 0; + unsigned long long divisor = 1; + while (suffix_index + 1 < suffix_count && value / divisor >= 1000) { + divisor *= 1000; + ++suffix_index; + } + + const unsigned long long whole = value / divisor; + const unsigned long long tenths = (value % divisor) * 10 / divisor; + + std::string ret = std::to_string(whole); + if (tenths != 0) + ret += "." + std::to_string(tenths); + ret += suffixes[suffix_index]; + return ret; + }; + + auto format_percent = [](float percent) { + if (percent == 0.0f) + return std::string("0"); + + char buffer[64]; + percent > 0.001f ? ::sprintf(buffer, "%.1f", percent * 100.0f) : ::sprintf(buffer, "<0.1"); + return std::string(buffer); + }; + // ORCA dont use background on top bar to give modern look //draw_list->AddRectFilled(ImVec2(pos_rect.x,pos_rect.y - ImGui::GetStyle().WindowPadding.y), //ImVec2(pos_rect.x + ImGui::GetWindowWidth() + ImGui::GetFrameHeight(),pos_rect.y + ImGui::GetFrameHeight() + window_padding * 2.5), @@ -3426,10 +3534,10 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv case EItemType::Line: { draw_list->AddLine({ pos.x + 1, pos.y + icon_size + 2 }, { pos.x + icon_size - 1, pos.y + 4 }, ImGuiWrapper::to_ImU32(color), 3.0f); break; + } case EItemType::None: break; } - } ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(20.0 * m_scale, 6.0 * m_scale)); @@ -3601,14 +3709,26 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv return _u8L("from") + " " + std::string(buf1) + " " + _u8L("to") + " " + std::string(buf2) + " " + _u8L("mm"); }; - auto role_time_and_percent = [this, time_mode](libvgcode::EGCodeExtrusionRole role) { + auto role_time_and_percent = [this, total_estimated_time](libvgcode::EGCodeExtrusionRole role) { const float time = m_viewer.get_extrusion_role_estimated_time(role); - return std::make_pair(time, time / time_mode.time); + return std::make_pair(time, total_estimated_time > 0.0f ? time / total_estimated_time : 0.0f); }; - auto travel_time_and_percent = [this, time_mode]() { + auto travel_time_and_percent = [this, total_estimated_time]() { const float time = m_viewer.get_travels_estimated_time(); - return std::make_pair(time, time / time_mode.time); + return std::make_pair(time, total_estimated_time > 0.0f ? time / total_estimated_time : 0.0f); + }; + + auto format_distance = [imperial_units](float distance_mm) { + char buffer[64]; + if (imperial_units) { + ::sprintf(buffer, "%.2fin", distance_mm / GizmoObjectManipulation::in_to_mm); + } else if (std::fabs(distance_mm) < 1000.0f) { + ::sprintf(buffer, "%.0fmm", distance_mm); + } else { + ::sprintf(buffer, "%.2fm", distance_mm / 1000.0f); + } + return std::string(buffer); }; auto used_filament_per_role = [this, imperial_units](ExtrusionRole role) { @@ -3713,6 +3833,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv std::vector used_filaments_length; std::vector used_filaments_weight; std::string travel_percent; + std::string travel_distance; + std::string travel_moves; std::vector model_used_filaments_m; std::vector model_used_filaments_g; double total_model_used_filament_m = 0, total_model_used_filament_g = 0; @@ -3832,8 +3954,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv auto [model_used_filament_m, model_used_filament_g] = used_filament_per_role(convert(role)); ::sprintf(buffer, imperial_units ? "%.2fin" : "%.2fm", model_used_filament_m); // ORCA dont use spacing between value and unit used_filaments_length.push_back(buffer); - ::sprintf(buffer, imperial_units ? "%.2foz" : "%.2fg", model_used_filament_g); // ORCA dont use spacing between value and unit - used_filaments_weight.push_back(buffer); + used_filaments_weight.push_back(format_compact_weight(model_used_filament_g, imperial_units)); } } @@ -3846,10 +3967,19 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv else percent > 0.001 ? ::sprintf(buffer, "%.1f", percent * 100) : ::sprintf(buffer, "<0.1"); travel_percent = buffer; + percents.push_back(travel_percent); + + // Set travel distance and moves for the Travel row Usage columns + travel_distance = format_distance(m_print_statistics.total_travel_distance); + used_filaments_length.push_back(travel_distance); + + travel_moves = format_compact_count(m_print_statistics.total_travel_moves); + used_filaments_weight.push_back(travel_moves); } // ORCA use % symbol for percentage and use "Usage" for "Used filaments" offsets = calculate_offsets({ {_u8L("Line Type"), labels}, {_u8L("Time"), times}, {"%", percents}, {"", used_filaments_length}, {"", used_filaments_weight}, {_u8L("Display"), {""}}}, icon_size); + percents.pop_back(); append_headers({{_u8L("Line Type"), offsets[0]}, {_u8L("Time"), offsets[1]}, {"%", offsets[2]}, {_u8L("Usage"), offsets[3]}, {_u8L("Display"), offsets[5]}}); break; } @@ -3913,7 +4043,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv { std::vector total_filaments; char buffer[64]; - ::sprintf(buffer, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", ps.total_used_filament / /*1000*/koef, ps.total_weight / unit_conver); + const std::string total_weight_text = format_compact_weight(ps.total_weight, imperial_units); + ::sprintf(buffer, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", ps.total_used_filament / /*1000*/koef, total_weight_text.c_str()); total_filaments.push_back(buffer); @@ -3948,9 +4079,54 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv default: { break; } } - auto append_option_item = [this, append_item](libvgcode::EOptionType type, std::vector offsets) { - auto append_option_item_with_type = [this, offsets, append_item](libvgcode::EOptionType type, const ColorRGBA& color, const std::string& label, bool visible) { - append_item(EItemType::Rect, color, {{ label , offsets[0] }}, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, type, visible]() { + auto append_option_item = [this, append_item, current_time_mode, total_estimated_time, &format_compact_count, &format_percent, &format_distance](libvgcode::EOptionType type, std::vector offsets) { + const bool full_layout = offsets.size() > 4; + auto option_stats = [this, current_time_mode, total_estimated_time, &format_compact_count, &format_percent, &format_distance, full_layout](libvgcode::EOptionType option_type) -> std::array { + libvgcode::EMoveType move_type; + bool has_move_type = true; + switch (option_type) { + case libvgcode::EOptionType::Wipes: { move_type = libvgcode::EMoveType::Wipe; break; } + case libvgcode::EOptionType::Retractions: { move_type = libvgcode::EMoveType::Retract; break; } + case libvgcode::EOptionType::Unretractions: { move_type = libvgcode::EMoveType::Unretract; break; } + case libvgcode::EOptionType::Seams: { move_type = libvgcode::EMoveType::Seam; break; } + case libvgcode::EOptionType::ToolChanges: { move_type = libvgcode::EMoveType::ToolChange; break; } + default: { has_move_type = false; break; } + } + + if (!has_move_type) + return { "", "", "", "" }; + + const size_t move_type_idx = static_cast(move_type); + float time = m_move_type_times[move_type_idx][current_time_mode]; + if (option_type == libvgcode::EOptionType::ToolChanges) { + // Toolchange delays are injected via synchronize() and are not attributed to ToolChange move vertices. + time = m_print_statistics.total_filament_load_time + m_print_statistics.total_filament_unload_time + m_print_statistics.total_tool_change_time; + } + const std::string time_text = full_layout && time > 0.0f ? short_time(get_time_dhms(time)) : ""; + const std::string percent_text = full_layout && total_estimated_time > 0.0f ? format_percent(time / total_estimated_time) : ""; + const float seam_distance = m_print_statistics.total_seam_gap_distance + m_print_statistics.total_seam_scarf_distance; + const float distance = (option_type == libvgcode::EOptionType::Seams && seam_distance > 0.0f) ? seam_distance : m_move_type_distances[move_type_idx]; + const std::string distance_text = full_layout && (option_type == libvgcode::EOptionType::Wipes || option_type == libvgcode::EOptionType::Retractions || option_type == libvgcode::EOptionType::Unretractions || option_type == libvgcode::EOptionType::Seams) + ? format_distance(distance) + : ""; + const std::string count_text = full_layout ? format_compact_count(m_move_type_counts[move_type_idx]) : ""; + + return { time_text, percent_text, distance_text, count_text }; + }; + + auto append_option_item_with_type = [this, offsets, append_item, full_layout](libvgcode::EOptionType type, const ColorRGBA& color, const std::string& label, bool visible, + const std::string& time_text, const std::string& percent_text, const std::string& distance_text, const std::string& count_text) { + std::vector> columns_offsets; + columns_offsets.push_back({ label , offsets[0] }); + if (full_layout && !time_text.empty()) + columns_offsets.push_back({ time_text, offsets[1] }); + if (full_layout && !percent_text.empty()) + columns_offsets.push_back({ percent_text, offsets[2] }); + if (full_layout && !distance_text.empty()) + columns_offsets.push_back({ distance_text, offsets[3] }); + if (full_layout && !count_text.empty()) + columns_offsets.push_back({ count_text, distance_text.empty() ? offsets[3] : offsets[4] }); + append_item(EItemType::Rect, color, columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, type, visible]() { m_viewer.toggle_option_visibility(type); update_moves_slider(); }); @@ -3958,18 +4134,33 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv const bool visible = m_viewer.is_option_visible(type); if (type == libvgcode::EOptionType::Travels) { //BBS: only display travel time in FeatureType view - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), _u8L("Travel"), visible); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), _u8L("Travel"), visible, "", "", "", ""); + } + else if (type == libvgcode::EOptionType::Seams) { + const auto option_values = option_stats(type); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Seams)), _u8L("Seams"), visible, + option_values[0], option_values[1], option_values[2], option_values[3]); + } + else if (type == libvgcode::EOptionType::Retractions) { + const auto option_values = option_stats(type); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Retractions)), _u8L("Retract"), visible, + option_values[0], option_values[1], option_values[2], option_values[3]); + } + else if (type == libvgcode::EOptionType::Unretractions) { + const auto option_values = option_stats(type); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Unretractions)), _u8L("Unretract"), visible, + option_values[0], option_values[1], option_values[2], option_values[3]); + } + else if (type == libvgcode::EOptionType::ToolChanges) { + const auto option_values = option_stats(type); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::ToolChanges)), _u8L("Filament Changes"), visible, + option_values[0], option_values[1], option_values[2], option_values[3]); + } + else if (type == libvgcode::EOptionType::Wipes) { + const auto option_values = option_stats(type); + append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Wipes)), _u8L("Wipe"), visible, + option_values[0], option_values[1], option_values[2], option_values[3]); } - else if (type == libvgcode::EOptionType::Seams) - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Seams)), _u8L("Seams"), visible); - else if (type == libvgcode::EOptionType::Retractions) - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Retractions)), _u8L("Retract"), visible); - else if (type == libvgcode::EOptionType::Unretractions) - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Unretractions)), _u8L("Unretract"), visible); - else if (type == libvgcode::EOptionType::ToolChanges) - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::ToolChanges)), _u8L("Filament Changes"), visible); - else if (type == libvgcode::EOptionType::Wipes) - append_option_item_with_type(type, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Wipes)), _u8L("Wipe"), visible); }; const libvgcode::EViewType new_view_type = curr_view_type; @@ -4009,6 +4200,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv columns_offsets.push_back({ _u8L("Travel"), offsets[0] }); columns_offsets.push_back({ travel_time, offsets[1] }); columns_offsets.push_back({ travel_percent, offsets[2] }); + columns_offsets.push_back({ travel_distance, offsets[3] }); // Usage column + columns_offsets.push_back({ travel_moves, offsets[4] }); // Usage column append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_option_color(libvgcode::EOptionType::Travels)), columns_offsets, true, offsets.back()/*ORCA checkbox_pos*/, visible, [this, item, visible]() { m_viewer.toggle_option_visibility(item); update_moves_slider(); @@ -4100,7 +4293,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv size_t i = 0; const std::vector& used_extruders_ids = m_viewer.get_used_extruders_ids(); for (uint8_t extruder_id : used_extruders_ids) { - ::sprintf(buf, imperial_units ? "%.2f in %.2f g" : "%.2f m %.2f g", model_used_filaments_m[i], model_used_filaments_g[i]); + const std::string weight_text = format_compact_weight(model_used_filaments_g[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in %s" : "%.2f m %s", model_used_filaments_m[i], weight_text.c_str()); append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_tool_colors()[extruder_id]), { { _u8L("Extruder") + " " + std::to_string(extruder_id + 1), offsets[0]}, {buf, offsets[1]} }); // append_item(EItemType::Rect, libvgcode::convert(m_viewer.get_tool_colors()[extruder_id]), _u8L("Extruder") + " " + std::to_string(extruder_id + 1), // true, "", 0.0f, 0.0f, offsets, used_filaments_m[extruder_id], used_filaments_g[extruder_id]); @@ -4113,7 +4307,8 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv char buf[64]; imgui.text(_u8L("Total") + ":"); ImGui::SameLine(); - ::sprintf(buf, imperial_units ? "%.2f in / %.2f oz" : "%.2f m / %.2f g", ps.total_used_filament / koef, ps.total_weight / unit_conver); + const std::string total_weight_text = format_compact_weight(ps.total_weight, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in / %s" : "%.2f m / %s", ps.total_used_filament / koef, total_weight_text.c_str()); imgui.text(buf); ImGui::Dummy({window_padding, window_padding}); @@ -4159,34 +4354,39 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv float column_sum_m = 0.0f; float column_sum_g = 0.0f; if (displayed_columns & ColumnData::Model) { + const std::string weight_text = format_compact_weight(model_used_filaments_g[i], imperial_units); if ((displayed_columns & ~ColumnData::Model) > 0) - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", model_used_filaments_m[i], model_used_filaments_g[i] / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", model_used_filaments_m[i], weight_text.c_str()); else - ::sprintf(buf, imperial_units ? "%.2f in %.2f oz" : "%.2f m %.2f g", model_used_filaments_m[i], model_used_filaments_g[i] / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in %s" : "%.2f m %s", model_used_filaments_m[i], weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Model")] }); column_sum_m += model_used_filaments_m[i]; column_sum_g += model_used_filaments_g[i]; } if (displayed_columns & ColumnData::Support) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", support_used_filaments_m[i], support_used_filaments_g[i] / unit_conver); + const std::string weight_text = format_compact_weight(support_used_filaments_g[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", support_used_filaments_m[i], weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Support")] }); column_sum_m += support_used_filaments_m[i]; column_sum_g += support_used_filaments_g[i]; } if (displayed_columns & ColumnData::Flushed) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", flushed_filaments_m[i], flushed_filaments_g[i] / unit_conver); + const std::string weight_text = format_compact_weight(flushed_filaments_g[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", flushed_filaments_m[i], weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Flushed")]}); column_sum_m += flushed_filaments_m[i]; column_sum_g += flushed_filaments_g[i]; } if (displayed_columns & ColumnData::WipeTower) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", wipe_tower_used_filaments_m[i], wipe_tower_used_filaments_g[i] / unit_conver); + const std::string weight_text = format_compact_weight(wipe_tower_used_filaments_g[i], imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", wipe_tower_used_filaments_m[i], weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Tower")] }); column_sum_m += wipe_tower_used_filaments_m[i]; column_sum_g += wipe_tower_used_filaments_g[i]; } if ((displayed_columns & ~ColumnData::Model) > 0) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", column_sum_m, column_sum_g / unit_conver); + const std::string weight_text = format_compact_weight(column_sum_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", column_sum_m, weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Total")] }); } @@ -4212,27 +4412,32 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv std::vector> columns_offsets; columns_offsets.push_back({ _u8L("Total"), color_print_offsets[_u8L("Filament")]}); if (displayed_columns & ColumnData::Model) { + const std::string weight_text = format_compact_weight(total_model_used_filament_g, imperial_units); if ((displayed_columns & ~ColumnData::Model) > 0) - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", total_model_used_filament_m, total_model_used_filament_g / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", total_model_used_filament_m, weight_text.c_str()); else - ::sprintf(buf, imperial_units ? "%.2f in %.2f oz" : "%.2f m %.2f g", total_model_used_filament_m, total_model_used_filament_g / unit_conver); + ::sprintf(buf, imperial_units ? "%.2f in %s" : "%.2f m %s", total_model_used_filament_m, weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Model")] }); } if (displayed_columns & ColumnData::Support) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", total_support_used_filament_m, total_support_used_filament_g / unit_conver); + const std::string weight_text = format_compact_weight(total_support_used_filament_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", total_support_used_filament_m, weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Support")] }); } if (displayed_columns & ColumnData::Flushed) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", total_flushed_filament_m, total_flushed_filament_g / unit_conver); + const std::string weight_text = format_compact_weight(total_flushed_filament_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", total_flushed_filament_m, weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Flushed")] }); } if (displayed_columns & ColumnData::WipeTower) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", total_wipe_tower_used_filament_m, total_wipe_tower_used_filament_g / unit_conver); + const std::string weight_text = format_compact_weight(total_wipe_tower_used_filament_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", total_wipe_tower_used_filament_m, weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Tower")] }); } if ((displayed_columns & ~ColumnData::Model) > 0) { - ::sprintf(buf, imperial_units ? "%.2f in\n%.2f oz" : "%.2f m\n%.2f g", total_model_used_filament_m + total_support_used_filament_m + total_flushed_filament_m + total_wipe_tower_used_filament_m, - (total_model_used_filament_g + total_support_used_filament_g + total_flushed_filament_g + total_wipe_tower_used_filament_g) / unit_conver); + const std::string weight_text = format_compact_weight(total_model_used_filament_g + total_support_used_filament_g + total_flushed_filament_g + total_wipe_tower_used_filament_g, imperial_units); + ::sprintf(buf, imperial_units ? "%.2f in\n%s" : "%.2f m\n%s", total_model_used_filament_m + total_support_used_filament_m + total_flushed_filament_m + total_wipe_tower_used_filament_m, + weight_text.c_str()); columns_offsets.push_back({ buf, color_print_offsets[_u8L("Total")] }); } append_item(EItemType::None, libvgcode::convert(tool_colors[0]), columns_offsets); @@ -4243,16 +4448,14 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ImGui::SameLine(); imgui.text(_u8L("Filament change times") + ":"); ImGui::SameLine(); - ::sprintf(buf, "%d", m_print_statistics.total_filament_changes); - imgui.text(buf); + imgui.text(format_compact_count(m_print_statistics.total_filament_changes)); //display tool change times ImGui::Dummy({window_padding, window_padding}); ImGui::SameLine(); imgui.text(_u8L("Tool changes") + ":"); ImGui::SameLine(); - ::sprintf(buf, "%d", m_print_statistics.total_extruder_changes); - imgui.text(buf); + imgui.text(format_compact_count(m_print_statistics.total_extruder_changes)); //BBS display cost ImGui::Dummy({ window_padding, window_padding }); @@ -4379,8 +4582,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv imgui.text(buffer); ImGui::SameLine(offsets[3]); - ::sprintf(buffer, "%.2f g", used_filament.second); - imgui.text(buffer); + imgui.text(format_compact_weight(used_filament.second, imperial_units)); } }; @@ -4705,8 +4907,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buf, imperial_units ? "%.2f in" : "%.2f m", ps.total_used_filament / koef); imgui.text(buf); ImGui::SameLine(); - ::sprintf(buf, imperial_units ? " %.2f oz" : " %.2f g", ps.total_weight / unit_conver); - imgui.text(buf); + imgui.text(" " + format_compact_weight(ps.total_weight, imperial_units)); ImGui::Dummy({ window_padding, window_padding }); ImGui::SameLine(); imgui.text(model_filament_str + ":"); @@ -4716,8 +4917,7 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv ::sprintf(buf, imperial_units ? "%.2f in" : "%.2f m", ps.total_used_filament / koef - exlude_m); imgui.text(buf); ImGui::SameLine(); - ::sprintf(buf, imperial_units ? " %.2f oz" : " %.2f g", (ps.total_weight - exlude_g) / unit_conver); - imgui.text(buf); + imgui.text(" " + format_compact_weight(ps.total_weight - exlude_g, imperial_units)); //BBS: display cost of filaments ImGui::Dummy({ window_padding, window_padding }); ImGui::SameLine(); diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 3300d33e0d..a73a30525d 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -14,6 +14,7 @@ // needed for tech VGCODE_ENABLE_COG_AND_TOOL_MARKERS #include +#include #include #include #include @@ -186,6 +187,9 @@ private: unsigned int m_last_result_id{ 0 }; //BBS: save m_gcode_result as well const GCodeProcessorResult* m_gcode_result; + std::array(EMoveType::Count)> m_move_type_counts{}; + std::array(PrintEstimatedStatistics::ETimeMode::Count)>, static_cast(EMoveType::Count)> m_move_type_times{}; + std::array(EMoveType::Count)> m_move_type_distances{}; //BBS: add only gcode mode bool m_only_gcode_in_preview {false}; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 0a18cdeb09..e3b2daf282 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -14,6 +14,7 @@ #include "libslic3r/Technologies.hpp" #include "libslic3r/Tesselate.hpp" #include "libslic3r/PresetBundle.hpp" +#include "libslic3r/AppConfig.hpp" #include "3DScene.hpp" #include "BackgroundSlicingProcess.hpp" #include "GLShader.hpp" @@ -225,7 +226,7 @@ bool GLCanvas3D::LayersEditing::is_allowed() const float GLCanvas3D::LayersEditing::s_overlay_window_width; -void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(const GLCanvas3D& canvas) { +void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(GLCanvas3D& canvas) { if (!m_enabled) return; @@ -335,8 +336,23 @@ void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(const GLCanv GLGizmoUtils::render_tooltip_button(&imgui, canvas, shortcuts, x, y); ImGui::SameLine(); - if (imgui.button(_L("Reset"))) - wxPostEvent((wxEvtHandler*)canvas.get_wxglcanvas(), SimpleEvent(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE)); + imgui.disabled_begin(check_object_layers_fixed(*m_slicing_parameters, m_layer_height_profile)); + if (imgui.button(_L("Reset"))) { + wxPostEvent((wxEvtHandler*) canvas.get_wxglcanvas(), SimpleEvent(EVT_GLCANVAS_RESET_LAYER_HEIGHT_PROFILE)); + } + imgui.disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (imgui.button(_L("Done"))) { + m_enabled = false; + + GLToolbarItem* item = canvas.m_main_toolbar.get_item("layersediting"); + item->set_state(GLToolbarItem::Normal); + + canvas.set_as_dirty(); + canvas.request_extra_frame(); + } GLCanvas3D::LayersEditing::s_overlay_window_width = ImGui::GetWindowSize().x; imgui.end(); @@ -344,7 +360,7 @@ void GLCanvas3D::LayersEditing::render_variable_layer_height_dialog(const GLCanv imgui.pop_toolbar_style(); } -void GLCanvas3D::LayersEditing::render_overlay(const GLCanvas3D& canvas) +void GLCanvas3D::LayersEditing::render_overlay(GLCanvas3D& canvas) { render_variable_layer_height_dialog(canvas); render_active_object_annotations(canvas); @@ -1202,6 +1218,11 @@ GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, Bed3D &bed) GLCanvas3D::~GLCanvas3D() { + if (m_fxaa_texture_id != 0 && _set_current()) { + glsafe(::glDeleteTextures(1, &m_fxaa_texture_id)); + m_fxaa_texture_id = 0; + } + reset_volumes(); m_sel_plate_toolbar.del_all_item(); @@ -2082,9 +2103,16 @@ void GLCanvas3D::render(bool only_init) if (m_picking_enabled && m_rectangle_selection.is_dragging()) m_rectangle_selection.render(*this); + if (_is_fxaa_enabled()) + _render_fxaa_pass(static_cast(cnv_size.get_width()), static_cast(cnv_size.get_height())); + // draw overlays _render_overlays(); + const int current_fps = m_render_stats.get_fps_and_reset_if_needed(); + if (_is_fps_overlay_enabled()) + _render_fps_overlay(current_fps); + if (wxGetApp().plater()->is_render_statistic_dialog_visible()) { ImGui::ShowMetricsWindow(); @@ -2092,7 +2120,7 @@ void GLCanvas3D::render(bool only_init) imgui.begin(std::string("Render statistics"), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse); imgui.text("FPS (SwapBuffers() calls per second):"); ImGui::SameLine(); - imgui.text(std::to_string(m_render_stats.get_fps_and_reset_if_needed())); + imgui.text(std::to_string(current_fps)); ImGui::Separator(); imgui.text("Compressed textures:"); ImGui::SameLine(); @@ -3202,6 +3230,22 @@ void GLCanvas3D::on_idle(wxIdleEvent& evt) wxGetApp().imgui()->reset_requires_extra_frame(); #endif // ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT + const int fps_cap = _get_effective_fps_cap(); + if (fps_cap > 0) { + const auto now = std::chrono::steady_clock::now(); + const auto min_frame_time = std::chrono::duration(1.0 / static_cast(fps_cap)); + const auto elapsed = now - m_last_frame_start_time; + if (elapsed < min_frame_time) { + const int wait_ms = std::max(1, static_cast(std::ceil(std::chrono::duration(min_frame_time - elapsed).count()))); + schedule_extra_frame(wait_ms); + evt.RequestMore(); + return; + } + + // Pace by frame-start interval so rendering time is part of the target budget. + m_last_frame_start_time = now; + } + _refresh_if_shown_on_screen(); #if ENABLE_ENHANCED_IMGUI_SLIDER_FLOAT @@ -4251,7 +4295,11 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } bool any_gizmo_active = m_gizmos.get_current() != nullptr; - bool swap_mouse_buttons = wxGetApp().app_config->get_bool("swap_mouse_buttons"); + + std::map button_mappings; + button_mappings[MouseButton::Left] = static_cast(std::atoi(wxGetApp().app_config->get("left_mouse_drag_action").c_str())); + button_mappings[MouseButton::Middle] = static_cast(std::atoi(wxGetApp().app_config->get("middle_mouse_drag_action").c_str())); + button_mappings[MouseButton::Right] = static_cast(std::atoi(wxGetApp().app_config->get("right_mouse_drag_action").c_str())); if (m_mouse.drag.move_requires_threshold && m_mouse.is_move_start_threshold_position_2D_defined() && m_mouse.is_move_threshold_met(pos)) { m_mouse.drag.move_requires_threshold = false; @@ -4466,7 +4514,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_dirty = true; } } - else if (evt.Dragging() || is_camera_rotate(evt, swap_mouse_buttons) || is_camera_pan(evt, swap_mouse_buttons)) { + else if (evt.Dragging() || is_camera_rotate(evt, button_mappings) || is_camera_pan(evt, button_mappings)) { m_mouse.dragging = true; if (m_layers_editing.state != LayersEditing::Unknown && layer_editing_object_idx != -1) { @@ -4476,10 +4524,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } } // do not process the dragging if the left mouse was set down in another canvas - else if (is_camera_rotate(evt, swap_mouse_buttons)) { + else if (is_camera_rotate(evt, button_mappings)) { // Orca: Sphere rotation for painting view - // if dragging over blank area with left button or button functions swapped then rotate - if ((any_gizmo_active || swap_mouse_buttons || m_hover_volume_idxs.empty()) && m_mouse.is_start_position_3D_defined()) { + // if dragging over blank area with left button or other button mapped to rotate, then rotate + bool middle_or_right_button_used_as_rotate = (evt.MiddleIsDown() && button_mappings[MouseButton::Middle] == MouseAction::Rotation) || + (evt.RightIsDown() && button_mappings[MouseButton::Right] == MouseAction::Rotation); + if ((any_gizmo_active || middle_or_right_button_used_as_rotate || m_hover_volume_idxs.empty()) && + m_mouse.is_start_position_3D_defined()) { Camera& camera = wxGetApp().plater()->get_camera(); auto mult_pref = wxGetApp().app_config->get("camera_orbit_mult"); const double mult = mult_pref.empty() ? 1.0 : std::stod(mult_pref); @@ -4552,7 +4603,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_camera_movement = true; m_mouse.drag.start_position_3D = Vec3d((double)pos(0), (double)pos(1), 0.0); } - else if (is_camera_pan(evt, swap_mouse_buttons)) { + else if (is_camera_pan(evt, button_mappings)) { // if dragging with right button or if button functions swapped and dragging with left button over blank area then pan if (m_mouse.is_start_position_2D_defined()) { // get point in model space at Z = 0 @@ -4580,10 +4631,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) } } else if ((evt.LeftUp() || evt.MiddleUp() || evt.RightUp()) || - (m_camera_movement && !is_camera_rotate(evt, swap_mouse_buttons) && !is_camera_pan(evt, swap_mouse_buttons))) { + (m_camera_movement && !is_camera_rotate(evt, button_mappings) && !is_camera_pan(evt, button_mappings))) { m_mouse.position = pos.cast(); - if (swap_mouse_buttons ? evt.RightUp() : evt.LeftUp()) { + // Check if the button that was released is mapped to rotation + if ((evt.LeftUp() && button_mappings[MouseButton::Left] == MouseAction::Rotation) || + (evt.MiddleUp() && button_mappings[MouseButton::Middle] == MouseAction::Rotation) || + (evt.RightUp() && button_mappings[MouseButton::Right] == MouseAction::Rotation)) { m_rotation_center(0) = m_rotation_center(1) = m_rotation_center(2) = 0.f; } @@ -4784,21 +4838,42 @@ void GLCanvas3D::on_set_focus(wxFocusEvent& evt) m_is_touchpad_navigation = wxGetApp().app_config->get_bool("camera_navigation_style"); } -bool GLCanvas3D::is_camera_rotate(const wxMouseEvent& evt, const bool buttonsSwapped) const +bool GLCanvas3D::clicked_button_matches_action(const wxMouseEvent& evt, const MouseAction action, const std::map& mappings) const +{ + MouseButton clicked = MouseButton::None; + if (evt.LeftIsDown()) { + clicked = MouseButton::Left; + } + if (evt.MiddleIsDown()) { + clicked = MouseButton::Middle; + } + if (evt.RightIsDown()) { + clicked = MouseButton::Right; + } + + auto it = mappings.find(clicked); + if (it == mappings.end()) { + return false; + } + return it->second == action; +} + +bool GLCanvas3D::is_camera_rotate(const wxMouseEvent& evt, const std::map& mappings) const { if (m_is_touchpad_navigation) { return evt.Moving() && evt.AltDown() && !evt.ShiftDown(); } else { - return evt.Dragging() && (buttonsSwapped ? evt.RightIsDown() : evt.LeftIsDown()); + return evt.Dragging() && clicked_button_matches_action(evt, MouseAction::Rotation, mappings); } } -bool GLCanvas3D::is_camera_pan(const wxMouseEvent& evt, const bool buttonsSwapped) const +bool GLCanvas3D::is_camera_pan(const wxMouseEvent& evt, const std::map& mappings) const { if (m_is_touchpad_navigation) { return evt.Moving() && evt.ShiftDown() && !evt.AltDown(); } else { - return evt.Dragging() && (evt.MiddleIsDown() || (buttonsSwapped ? evt.LeftIsDown() : evt.RightIsDown())); + return evt.Dragging() && clicked_button_matches_action(evt, MouseAction::Pan, mappings); + ; } } @@ -7621,6 +7696,105 @@ void GLCanvas3D::_rectangular_selection_picking_pass() _update_volumes_hover_state(); } +bool GLCanvas3D::_is_fxaa_enabled() const +{ + return wxGetApp().app_config != nullptr && wxGetApp().app_config->get_bool(SETTING_OPENGL_FXAA_ENABLED); +} + +int GLCanvas3D::_get_effective_fps_cap() const +{ + if (wxGetApp().app_config == nullptr) + return 0; + + int fps_cap = 0; + try { + fps_cap = std::stoi(wxGetApp().app_config->get(SETTING_OPENGL_FPS_CAP)); + } + catch (...) { + fps_cap = 0; + } + + fps_cap = std::max(0, std::min(fps_cap, 240)); + + return fps_cap; +} + +bool GLCanvas3D::_is_fps_overlay_enabled() const +{ + return wxGetApp().app_config != nullptr && wxGetApp().app_config->get_bool(SETTING_OPENGL_SHOW_FPS_OVERLAY); +} + +void GLCanvas3D::_render_fps_overlay(int fps) const +{ + if (fps < 0) + return; + + ImGuiWrapper& imgui = *wxGetApp().imgui(); + const float margin = 10.0f * get_scale(); + const ImVec2 display_size = ImGui::GetIO().DisplaySize; + ImGui::SetNextWindowPos(ImVec2(display_size.x - margin, margin), ImGuiCond_Always, ImVec2(1.0f, 0.0f)); + ImGui::SetNextWindowBgAlpha(0.35f); + imgui.begin( + std::string("###fps_overlay"), + ImGuiWindowFlags_AlwaysAutoResize | + ImGuiWindowFlags_NoResize | + ImGuiWindowFlags_NoCollapse | + ImGuiWindowFlags_NoTitleBar | + ImGuiWindowFlags_NoMove | + ImGuiWindowFlags_NoSavedSettings | + ImGuiWindowFlags_NoInputs); + imgui.text(std::string("FPS: ") + std::to_string(fps)); + imgui.end(); +} + +void GLCanvas3D::_render_fxaa_pass(unsigned int width, unsigned int height) +{ + if (width == 0 || height == 0) + return; + + GLShaderProgram* shader = wxGetApp().get_shader("fxaa"); + if (shader == nullptr) + return; + + if (m_fxaa_texture_id == 0) { + glsafe(::glGenTextures(1, &m_fxaa_texture_id)); + glsafe(::glBindTexture(GL_TEXTURE_2D, m_fxaa_texture_id)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); + glsafe(::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); + glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); + } + + glsafe(::glBindTexture(GL_TEXTURE_2D, m_fxaa_texture_id)); + if (m_fxaa_texture_size[0] != width || m_fxaa_texture_size[1] != height) { + glsafe(::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr)); + m_fxaa_texture_size = { width, height }; + } + + glsafe(::glCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, width, height)); + + glsafe(::glDisable(GL_DEPTH_TEST)); + glsafe(::glDisable(GL_BLEND)); + glsafe(::glClear(GL_COLOR_BUFFER_BIT)); + + shader->start_using(); + shader->set_uniform("view_model_matrix", Transform3d::Identity()); + shader->set_uniform("projection_matrix", Transform3d::Identity()); + shader->set_uniform("uniform_texture", 0); + shader->set_uniform("inv_tex_size", Vec2f(1.0f / static_cast(width), 1.0f / static_cast(height))); + + glsafe(::glActiveTexture(GL_TEXTURE0)); + glsafe(::glBindTexture(GL_TEXTURE_2D, m_fxaa_texture_id)); + m_background.render(); + glsafe(::glBindTexture(GL_TEXTURE_2D, 0)); + shader->stop_using(); + + glsafe(::glEnable(GL_DEPTH_TEST)); + glsafe(::glEnable(GL_BLEND)); + glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); +} + void GLCanvas3D::_render_background() { bool use_error_color = false; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 2224c3a8aa..12d8024fc5 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -290,8 +290,8 @@ class GLCanvas3D bool is_enabled() const { return m_enabled; } void set_enabled(bool enabled) { m_enabled = is_allowed() && enabled; } - void render_variable_layer_height_dialog(const GLCanvas3D& canvas); - void render_overlay(const GLCanvas3D& canvas); + void render_variable_layer_height_dialog(GLCanvas3D& canvas); + void render_overlay(GLCanvas3D& canvas); void render_volumes(const GLCanvas3D& canvas, const GLVolumeCollection& volumes); void adjust_layer_height_profile(); @@ -610,6 +610,7 @@ private: bool m_reload_delayed; RenderStats m_render_stats; + std::chrono::time_point m_last_frame_start_time{ std::chrono::steady_clock::now() }; int m_imgui_undo_redo_hovered_pos{ -1 }; int m_mouse_wheel{ 0 }; @@ -727,6 +728,8 @@ public: CameraTarget m_camera_target; #endif // ENABLE_SHOW_CAMERA_TARGET GLModel m_background; + unsigned int m_fxaa_texture_id{ 0 }; + std::array m_fxaa_texture_size{ 0, 0 }; public: explicit GLCanvas3D(wxGLCanvas* canvas, Bed3D &bed); ~GLCanvas3D(); @@ -1038,8 +1041,11 @@ public: void on_set_focus(wxFocusEvent& evt); void force_set_focus(); - bool is_camera_rotate(const wxMouseEvent& evt, const bool buttonsSwapped) const; - bool is_camera_pan(const wxMouseEvent& evt, const bool buttonsSwapped) const; + enum class MouseButton { None, Left, Middle, Right }; + enum class MouseAction { None, Pan, Rotation }; + bool clicked_button_matches_action(const wxMouseEvent& evt, MouseAction action, const std::map& mappings) const; + bool is_camera_rotate(const wxMouseEvent& evt, const std::map& mappings) const; + bool is_camera_pan(const wxMouseEvent& evt, const std::map& mappings) const; Size get_canvas_size() const; Vec2d get_local_mouse_position() const; @@ -1238,6 +1244,11 @@ private: void _rectangular_selection_picking_pass(); // IMEX ghost picking (ray vs. ghost bbox). Runs at the end of _picking_pass. void _picking_pass_imex_ghosts(); + bool _is_fxaa_enabled() const; + int _get_effective_fps_cap() const; + bool _is_fps_overlay_enabled() const; + void _render_fps_overlay(int fps) const; + void _render_fxaa_pass(unsigned int width, unsigned int height); void _render_background(); void _render_bed(const Transform3d& view_matrix, const Transform3d& projection_matrix, bool bottom, bool show_axes); //BBS: add part plate related logic diff --git a/src/slic3r/GUI/GLShadersManager.cpp b/src/slic3r/GUI/GLShadersManager.cpp index 7f28d8f777..620fc2e773 100644 --- a/src/slic3r/GUI/GLShadersManager.cpp +++ b/src/slic3r/GUI/GLShadersManager.cpp @@ -48,6 +48,8 @@ std::pair GLShadersManager::init() valid &= append_shader("flat_clip", { prefix + "flat_clip.vs", prefix + "flat_clip.fs" }); // basic shader for textures, used to render textures valid &= append_shader("flat_texture", { prefix + "flat_texture.vs", prefix + "flat_texture.fs" }); + // used to apply post-processing antialiasing in screen space + valid &= append_shader("fxaa", { prefix + "fxaa.vs", prefix + "fxaa.fs" }); // used to render 3D scene background valid &= append_shader("background", { prefix + "background.vs", prefix + "background.fs" }); #if SLIC3R_OPENGL_ES diff --git a/src/slic3r/GUI/GLTexture.cpp b/src/slic3r/GUI/GLTexture.cpp index 7bf4d008d4..d670181b1b 100644 --- a/src/slic3r/GUI/GLTexture.cpp +++ b/src/slic3r/GUI/GLTexture.cpp @@ -663,7 +663,9 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo void GLTexture::render_sub_texture(unsigned int tex_id, float left, float right, float bottom, float top, const GLTexture::Quad_UVs& uvs) { glsafe(::glEnable(GL_BLEND)); - glsafe(::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)); + // Orca: fix washed-out toolbar icons on Wayland: keep destination alpha at 1.0 so the compositor + // does not treat anti-aliased icon edges as window transparency. + glsafe(::glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA)); glsafe(::glEnable(GL_TEXTURE_2D)); glsafe(::glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE)); diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index c12fa964f8..a84565786c 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -11,6 +11,7 @@ #include "Downloader.hpp" #include #include +#include #include // Localization headers: include libslic3r version first so everything in this file @@ -100,6 +101,9 @@ #include "Mouse3DController.hpp" #include "RemovableDriveManager.hpp" #include "InstanceCheck.hpp" +#ifdef __APPLE__ +#include "DeepLinkHandlerMac.h" +#endif #include "NotificationManager.hpp" #include "UnsavedChangesDialog.hpp" #include "SavePresetDialog.hpp" @@ -783,9 +787,20 @@ void GUI_App::post_init() mainframe->select_tab(size_t(MainFrame::tp3DEditor)); plater_->select_view_3D("3D"); //BBS init the opengl resource here -//#ifdef __linux__ - if (plater_->canvas3D()->get_wxglcanvas()->IsShownOnScreen()&&plater_->canvas3D()->make_current_for_postinit()) { -//#endif + if (!plater_->canvas3D()->get_wxglcanvas()->IsShownOnScreen() || + !plater_->canvas3D()->make_current_for_postinit()) { + BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": glcontext not ready, postpone init"; + plater_->canvas3D()->enable_render(true); + plater_->canvas3D()->set_as_dirty(); +#ifdef __linux__ + // Wayland/EGL may not have committed the GL surface yet; ask the + // idle loop to retry post_init when the canvas is actually mapped. + // Without this, GL function pointers stay null and the first + // Preview focus crashes in Camera::apply_viewport. + m_post_initialized = false; + return; +#endif + } else { Size canvas_size = plater_->canvas3D()->get_canvas_size(); wxGetApp().imgui()->set_display_size(static_cast(canvas_size.get_width()), static_cast(canvas_size.get_height())); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", start to init opengl"; @@ -805,14 +820,7 @@ void GUI_App::post_init() plater_->canvas3D()->render(false); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ", finished rendering a first frame for test"; } -//#ifdef __linux__ } - else { - BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << "Found glcontext not ready, postpone the init"; - plater_->canvas3D()->enable_render(true); - plater_->canvas3D()->set_as_dirty(); - } -//#endif if (is_editor()) mainframe->select_tab(size_t(0)); if (app_config->get("default_page") == "1") @@ -1900,6 +1908,7 @@ void GUI_App::init_networking_callbacks() } if (return_code == 5) { GUI::wxGetApp().CallAfter([this, provider = event.provider] { + BOOST_LOG_TRIVIAL(info) << "logout: login expired"; this->request_user_logout(provider); MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); if (msg_dlg.ShowModal() == wxOK) { @@ -2546,6 +2555,12 @@ std::string get_system_info() bool GUI_App::on_init_inner() { wxLog::SetActiveTarget(new wxBoostLog()); + +#ifdef __APPLE__ + // Override wxWidgets' kAEGetURL handler so orcaslicer:// deep links keep + // working after the wxWidgets 3.3.2 upgrade on macOS (#13119). + register_mac_deep_link_handler(); +#endif #if BBL_RELEASE_TO_PUBLIC wxLog::SetLogLevel(wxLOG_Message); #endif @@ -4359,12 +4374,12 @@ void GUI_App::get_login_info(const std::string& provider/* = ORCA_CLOUD_PROVIDER if (m_agent) { if (m_agent->is_user_login(provider)) { std::string login_cmd = m_agent->build_login_cmd(provider); - wxString strJS = wxString::Format("window.postMessage(%s)", login_cmd); + wxString strJS = wxString::Format("window.postMessage(%s)", from_u8(login_cmd)); GUI::wxGetApp().run_script(strJS); } else { m_agent->user_logout(false, provider); std::string logout_cmd = m_agent->build_logout_cmd(provider); - wxString strJS = wxString::Format("window.postMessage(%s)", logout_cmd); + wxString strJS = wxString::Format("window.postMessage(%s)", from_u8(logout_cmd)); GUI::wxGetApp().run_script(strJS); } mainframe->m_webview->SetLoginPanelVisibility(true); @@ -4526,7 +4541,8 @@ std::string GUI_App::handle_web_request(std::string cmd) } else if (command_str.compare("homepage_logout") == 0) { CallAfter([this] { - wxGetApp().request_user_logout(); + BOOST_LOG_TRIVIAL(info) << "logout: homepage_logout"; + request_user_logout(); }); } else if (command_str.compare("get_orca_login_info") == 0) { @@ -4539,18 +4555,22 @@ std::string GUI_App::handle_web_request(std::string cmd) CallAfter([this] { request_login(true, BBL_CLOUD_PROVIDER); }); } else if (command_str.compare("homepage_bambu_logout") == 0) { - CallAfter([this] { request_user_logout(BBL_CLOUD_PROVIDER); }); + CallAfter([this] { + BOOST_LOG_TRIVIAL(info) << "logout: homepage_bambu_logout"; + request_user_logout(BBL_CLOUD_PROVIDER); + }); } else if (command_str.compare("homepage_orca_login_or_register") == 0) { CallAfter([this] { request_login(true, ORCA_CLOUD_PROVIDER); }); } else if (command_str.compare("homepage_orca_logout") == 0) { - CallAfter([this] { request_user_logout(ORCA_CLOUD_PROVIDER); }); + CallAfter([this] { + BOOST_LOG_TRIVIAL(info) << "logout: homepage_orca_logout"; + request_user_logout(ORCA_CLOUD_PROVIDER); + }); } else if (command_str.compare("homepage_modeldepot") == 0) { - CallAfter([this] { - wxGetApp().open_mall_page_dialog(); - }); + CallAfter([this] { open_mall_page_dialog(); }); } else if (command_str.compare("homepage_newproject") == 0) { this->request_open_project(""); @@ -4783,7 +4803,7 @@ void GUI_App::handle_http_error(unsigned int status, std::string body, const std void GUI_App::on_http_error(wxCommandEvent &evt) { int status = evt.GetInt(); - std::string provider = ORCA_CLOUD_PROVIDER; + std::string provider = ""; std::string body_str; // Extract provider and body from event data @@ -4825,22 +4845,63 @@ void GUI_App::on_http_error(wxCommandEvent &evt) // request login if (status == 401) { if (m_agent) { - if (m_agent->is_user_login(provider)) { - this->request_user_logout(provider); + if (!provider.empty() && m_agent->is_user_login(provider)) { + if (std::chrono::steady_clock::now() - m_last_401_error_time > 30s) { + BOOST_LOG_TRIVIAL(warning) << "logout: http error 401."; + this->request_user_logout(provider); - if (!m_show_http_errpr_msgdlg) { - MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); - m_show_http_errpr_msgdlg = true; - auto modal_result = msg_dlg.ShowModal(); - if (modal_result == wxOK || modal_result == wxCLOSE) { - m_show_http_errpr_msgdlg = false; - return; + if (!m_show_http_error_msgdlg) { + MessageDialog msg_dlg(nullptr, _L("Login information expired. Please login again."), "", wxAPPLY | wxOK); + m_show_http_error_msgdlg = true; + auto modal_result = msg_dlg.ShowModal(); + if (modal_result == wxOK || modal_result == wxCLOSE) { + m_show_http_error_msgdlg = false; + return; + } } + + m_last_401_error_time = std::chrono::steady_clock::now(); + } else { + BOOST_LOG_TRIVIAL(warning) << "401 encountered within grace period, suppressing logout"; } } } return; } + + // No need to show dialog for 410: 410 means resource has been deleted from the server. + if (status == 410) { + BOOST_LOG_TRIVIAL(info) << "Http error 410."; + return; + } + + static bool m_is_error_shown = false; + // Show general error notification for Orca Cloud API failures (not Bambu) + if (provider == ORCA_CLOUD_PROVIDER && status >= 400 && code != HttpErrorVersionLimited) { + wxString msg; + if (!error.empty()) { + msg = wxString::Format(_L("Failed to connect to OrcaCloud.\nPlease check your network connectivity\n(HTTP %u): %s"), status, wxString::FromUTF8(error)); + } else { + msg = wxString::Format(_L("Failed to connect to OrcaCloud.\nPlease check your network connectivity\n(HTTP %u)"), status); + } + + if (app_config->get_bool("developer_mode")) { + // Use notification manager if ImGui is ready; fall back to wxMessageBox on Linux + // where ImGui may not be initialized until the user switches to the Prepare tab. + if (wxGetApp().plater() != nullptr && wxGetApp().imgui()->display_initialized()) { + wxGetApp() + .plater() + ->get_notification_manager() + ->push_notification(NotificationType::PlaterError, NotificationManager::NotificationLevel::WarningNotificationLevel, + msg.ToUTF8().data()); + } + } + + if (!m_is_error_shown) { + m_is_error_shown = true; + wxMessageBox(msg, _L("Cloud Error"), wxOK | wxICON_ERROR, wxGetApp().mainframe); + } + } } void GUI_App::enable_user_preset_folder(bool enable) @@ -4876,6 +4937,10 @@ void GUI_App::on_user_login_handle(wxCommandEvent &evt) std::string provider = evt.GetString().ToStdString(); if (provider.empty()) provider = ORCA_CLOUD_PROVIDER; + // Reset 401 grace period so transient token-propagation 401s + // during login warmup don't trigger immediate logout. + m_last_401_error_time = std::chrono::steady_clock::now(); + m_agent->connect_server(); // get machine list DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); @@ -5599,6 +5664,7 @@ void GUI_App::show_check_privacy_dlg(wxCommandEvent& evt) privacy_dlg.Bind(EVT_PRIVACY_UPDATE_CANCEL, [this, provider](wxCommandEvent &e) { app_config->set_bool("privacy_update_checked", false); if (m_agent) { + BOOST_LOG_TRIVIAL(info) << "logout: Privacy update dialog cancelled."; m_agent->user_logout(false, provider); post_logout_to_webview(provider); } @@ -5785,18 +5851,32 @@ void GUI_App::reload_settings() return; } BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " cloud user preset number is: " << user_presets.size(); - // Check the user presets for any system vendors that need to be installed - for (auto data : user_presets) { - if (!check_preset_parent_available(data)) - add_pending_vendor_preset(data); - } - load_pending_vendors(); - preset_bundle->load_user_presets(*app_config, user_presets, ForwardCompatibilitySubstitutionRule::Enable); - preset_bundle->save_user_presets(*app_config, get_delete_cache_presets()); - if (is_main_thread_active()) + auto refresh_synced_ui = [this, user_presets = std::move(user_presets)]() mutable { + if (is_closing() || !preset_bundle || !app_config || !mainframe) + return; + + // Check the user presets for any system vendors that need to be installed + for (auto data : user_presets) { + if (!check_preset_parent_available(data)) + add_pending_vendor_preset(data); + } + load_pending_vendors(); + preset_bundle->load_user_presets(*app_config, user_presets, ForwardCompatibilitySubstitutionRule::Enable); + preset_bundle->save_user_presets(*app_config, get_delete_cache_presets()); + + // Orca: settings changed, refresh ui to reflect the new preset values mainframe->update_side_preset_ui(); + for (auto tab : tabs_list) { + tab->reload_config(); + tab->update_changed_ui(); + } + if (plater_) + plater_->sidebar().update_all_preset_comboboxes(); + }; + if (is_main_thread_active()) + refresh_synced_ui(); else - CallAfter([this] { mainframe->update_side_preset_ui(); }); + CallAfter(refresh_synced_ui); } } @@ -6521,8 +6601,8 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) dlg->Update(percent, _L("Loading user preset")); }); }; - cancelFn = [this, dlg]() { - return is_closing() || dlg->WasCanceled(); + cancelFn = [this, dlg, t = std::weak_ptr(m_user_sync_token)]() { + return is_closing() || dlg->WasCanceled() || t.expired(); }; finishFn = [this, dlg](bool) { CallAfter([=]{ dlg->Destroy(); }); @@ -6530,8 +6610,8 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) } else { finishFn = [](bool) {}; // reload_settings() is now triggered from the background thread - cancelFn = [this]() { - return is_closing(); + cancelFn = [this, t = std::weak_ptr(m_user_sync_token)]() { + return is_closing() || t.expired(); }; } @@ -6763,9 +6843,41 @@ void GUI_App::stop_sync_user_preset() } } +void GUI_App::restart_sync_user_preset() +{ + if (!m_user_sync_token) { + // No sync running. If a restart helper is already in flight it will + // start the new sync once the old thread is joined — don't race it. + if (!m_restart_sync_pending) + start_sync_user_preset(true); + return; + } + + // Resetting the token signals the old thread to stop (cancelFn checks + // t.expired(), so it exits after its current HTTP request completes). + // A helper thread joins the old thread off the UI thread — no freeze — + // then starts the new sync via CallAfter once the old one is fully done. + m_user_sync_token.reset(); + m_restart_sync_pending = true; + + auto old_thread = std::move(m_sync_update_thread); + + std::thread([this, old_thread = std::move(old_thread)]() mutable { + if (old_thread.joinable()) + old_thread.join(); + m_restart_sync_pending = false; + if (!is_closing()) + CallAfter([this]() { + if (!is_closing()) + start_sync_user_preset(true); + }); + }).detach(); +} + void GUI_App::on_stealth_mode_enter() { stop_sync_user_preset(); + BOOST_LOG_TRIVIAL(info) << "logout: on_stealth_mode_enter"; request_user_logout(ORCA_CLOUD_PROVIDER); request_user_logout(BBL_CLOUD_PROVIDER); if (mainframe && mainframe->m_webview) { @@ -7553,6 +7665,13 @@ void GUI_App::open_exportpresetbundledialog(size_t open_on_tab, const std::strin void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) { + static constexpr const char* opengl_fxaa_setting_key = "opengl_fxaa_enabled"; + static constexpr const char* opengl_fps_cap_setting_key = "opengl_fps_cap"; + static constexpr const char* opengl_show_fps_overlay_setting_key = "opengl_show_fps_overlay"; + const std::string previous_opengl_fxaa = app_config->get(opengl_fxaa_setting_key); + const std::string previous_opengl_fps_cap = app_config->get(opengl_fps_cap_setting_key); + const std::string previous_opengl_show_fps_overlay = app_config->get(opengl_show_fps_overlay_setting_key); + bool need_recreate_gui = false; std::string pending_language; { @@ -7591,6 +7710,14 @@ void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_ } } + const bool opengl_fxaa_changed = app_config->get(opengl_fxaa_setting_key) != previous_opengl_fxaa; + const bool opengl_fps_cap_changed = app_config->get(opengl_fps_cap_setting_key) != previous_opengl_fps_cap; + const bool opengl_show_fps_overlay_changed = app_config->get(opengl_show_fps_overlay_setting_key) != previous_opengl_show_fps_overlay; + if ((opengl_fxaa_changed || opengl_fps_cap_changed || opengl_show_fps_overlay_changed) && !need_recreate_gui && this->plater_ != nullptr) { + this->plater_->set_current_canvas_as_dirty(); + this->plater_->get_current_canvas3D()->force_set_focus(); + } + if (!pending_language.empty()) { const std::string previous_language = app_config->get("language"); app_config->set("language", pending_language); diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index fac853e65c..5b6bcc6581 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -321,10 +321,12 @@ private: boost::thread m_sync_update_thread; std::shared_ptr m_user_sync_token; + std::atomic m_restart_sync_pending {false}; bool m_is_dark_mode{ false }; bool m_adding_script_handler { false }; bool m_side_popup_status{false}; - bool m_show_http_errpr_msgdlg{false}; + bool m_show_http_error_msgdlg{false}; + std::chrono::steady_clock::time_point m_last_401_error_time; bool m_show_error_msgdlg{false}; wxString m_info_dialog_content; HttpServer m_http_server; @@ -492,7 +494,7 @@ public: void request_open_project(std::string project_id); void request_remove_project(std::string project_id); - void handle_http_error(unsigned int status, std::string body, const std::string& provider = ORCA_CLOUD_PROVIDER); + void handle_http_error(unsigned int status, std::string body, const std::string& provider = ""); void on_http_error(wxCommandEvent &evt); void on_update_machine_list(wxCommandEvent& evt); void on_user_login(wxCommandEvent &evt); @@ -530,6 +532,7 @@ public: void sync_preset(Preset* preset); void start_sync_user_preset(bool with_progress_dlg = false); void stop_sync_user_preset(); + void restart_sync_user_preset(); void on_stealth_mode_enter(); // Bundle subscription sync diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 8aa227ebdc..2b128eb85a 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -121,6 +121,7 @@ std::map> SettingsFactory::PART_CATE {"bottom_shell_thickness", L("Bottom Minimum Shell Thickness"), 1}, {"bottom_surface_density", L("Bottom Surface Density"), 1}, {"sparse_infill_density", "", 1}, + {"fill_multiline", "", 1}, {"sparse_infill_pattern", "", 1}, {"lateral_lattice_angle_1", "", 1}, {"lateral_lattice_angle_2", "", 1}, @@ -572,35 +573,51 @@ wxMenu* MenuFactory::append_submenu_add_generic(wxMenu* menu, ModelVolumeType ty wxMenu* MenuFactory::append_submenu_add_handy_model(wxMenu* menu, ModelVolumeType type) { auto sub_menu = new wxMenu; - for (auto &item : {L("Orca Cube"), L("Orca Tolerance Test"), L("3DBenchy"), L("Cali Cat"), L("Autodesk FDM Test"), + for (auto &item : {L("Orca Cube"), L("OrcaSliced Combo"), L("Orca Tolerance Test"), L("3DBenchy"), L("Cali Cat"), L("Autodesk FDM Test"), L("Voron Cube"), L("Stanford Bunny"), L("Orca String Hell") }) { append_menu_item( sub_menu, wxID_ANY, _(item), "", [type, item](wxCommandEvent&) { std::vector input_files; bool is_stringhell = false; - std::string file_name = item; - if (file_name == L("Orca Cube")) - file_name = "OrcaCube_v2.3mf"; - else if (file_name == L("Orca Tolerance Test")) - file_name = "OrcaToleranceTest.drc"; - else if (file_name == L("3DBenchy")) - file_name = "3DBenchy.drc"; - else if (file_name == L("Cali Cat")) - file_name = "calicat.drc"; - else if (file_name == L("Autodesk FDM Test")) - file_name = "ksr_fdmtest_v4.drc"; - else if (file_name == L("Voron Cube")) - file_name = "Voron_Design_Cube_v7.drc"; - else if (file_name == L("Stanford Bunny")) - file_name = "Stanford_Bunny.drc"; - else if (file_name == L("Orca String Hell")) { - file_name = "Orca_stringhell.drc"; + std::vector file_names; + bool arrange_after_import = false; + if (item == L("Orca Cube")){ + file_names = { "OrcaCube_v2.drc", "OrcaPlug_v2.drc"}; + arrange_after_import = true; + } + else if (item == L("OrcaSliced Combo")) + { + file_names = { "OrcaSliced.3mf", "OrcaCube_v2.drc", "OrcaPlug_v2.drc" }; + arrange_after_import = true; + } + else if (item == L("Orca Tolerance Test")) + file_names = { "OrcaToleranceTest.drc" }; + else if (item == L("3DBenchy")) + file_names = { "3DBenchy.drc" }; + else if (item == L("Cali Cat")) + file_names = { "calicat.drc" }; + else if (item == L("Autodesk FDM Test")) + file_names = { "ksr_fdmtest_v4.drc" }; + else if (item == L("Voron Cube")) + file_names = { "Voron_Design_Cube_v7.drc" }; + else if (item == L("Stanford Bunny")) + file_names = { "Stanford_Bunny.drc" }; + else if (item == L("Orca String Hell")) { + file_names = { "Orca_stringhell.drc" }; is_stringhell = true; } else return; - input_files.push_back((boost::filesystem::path(Slic3r::resources_dir()) / "handy_models" / file_name)); + + input_files.reserve(file_names.size()); + for (const auto& file_name : file_names) + input_files.push_back((boost::filesystem::path(Slic3r::resources_dir()) / "handy_models" / file_name)); + plater()->load_files(input_files, LoadStrategy::LoadModel); + if (arrange_after_import) { + plater()->set_prepare_state(Job::PREPARE_STATE_MENU); + plater()->arrange(); + } // Suggest to change settings for stringhell // This serves as mini tutorial for new users @@ -1644,17 +1661,6 @@ void MenuFactory::create_filament_action_menu(bool init, int active_filament_men []() { return true; }, m_parent); } - if (init) { - append_menu_item( - menu, wxID_ANY, _L("Delete"), _L("Delete this filament"), [](wxCommandEvent&) { - plater()->sidebar().delete_filament(-2); }, "", nullptr, - []() { - return plater()->sidebar().combos_filament().size() > 1 - // Orca: only show delete filament option for SEMM machines unless is BBL - && Sidebar::should_show_SEMM_buttons(); - }, m_parent); - } - const int item_id = menu->FindItem(_L("Merge with")); if (item_id != wxNOT_FOUND) menu->Destroy(item_id); @@ -1675,6 +1681,20 @@ void MenuFactory::create_filament_action_menu(bool init, int active_filament_men } append_submenu(menu, sub_menu, wxID_ANY, _L("Merge with"), "", "", [filaments_cnt]() { return filaments_cnt > 1; }, m_parent); + + // ORCA use delete item on end of menu to prevent accidental clicks. clicking to submenus(merge) already not allowed by OS + const int delete_id = menu->FindItem(_L("Delete")); + if (delete_id != wxNOT_FOUND) + menu->Destroy(delete_id); + + append_menu_item( + menu, wxID_ANY, _L("Delete"), _L("Delete this filament"), [](wxCommandEvent&) { + plater()->sidebar().delete_filament(-2); }, "", nullptr, + []() { + return plater()->sidebar().combos_filament().size() > 1 + // Orca: only show delete filament option for SEMM machines unless is BBL + && Sidebar::should_show_SEMM_buttons(); + }, m_parent); } //BBS: add part plate related logic diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 726ea1aca3..d0afd8e295 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -435,15 +435,25 @@ void ObjectList::create_objects_ctrl() // column Extruder of the view control: BitmapChoiceRenderer* bmp_choice_renderer = new BitmapChoiceRenderer(); - bmp_choice_renderer->set_can_create_editor_ctrl_function([this]() { - return m_objects_model->GetItemType(GetSelection()) & (itVolume | itLayer | itObject); + const auto get_filament_context_item = [this]() { +#ifdef __WXOSX__ + return m_filament_editor_item.IsOk() ? m_filament_editor_item : GetSelection(); +#else + return GetSelection(); +#endif + }; + bmp_choice_renderer->set_can_create_editor_ctrl_function([this, get_filament_context_item]() { + const wxDataViewItem item = get_filament_context_item(); + return m_objects_model->GetItemType(item) & (itVolume | itLayer | itObject); }); - bmp_choice_renderer->set_default_extruder_idx([this]() { - return m_objects_model->GetDefaultExtruderIdx(GetSelection()); + bmp_choice_renderer->set_default_extruder_idx([this, get_filament_context_item]() { + const wxDataViewItem item = get_filament_context_item(); + return m_objects_model->GetDefaultExtruderIdx(item); }); - bmp_choice_renderer->set_has_default_extruder([this]() { - return m_objects_model->GetVolumeType(GetSelection()) == ModelVolumeType::PARAMETER_MODIFIER || - m_objects_model->GetItemType(GetSelection()) == itLayer; + bmp_choice_renderer->set_has_default_extruder([this, get_filament_context_item]() { + const wxDataViewItem item = get_filament_context_item(); + return m_objects_model->GetVolumeType(item) == ModelVolumeType::PARAMETER_MODIFIER || + m_objects_model->GetItemType(item) == itLayer; }); AppendColumn(new wxDataViewColumn(_L("Fila."), bmp_choice_renderer, colFilament, m_columns_width[colFilament] * em, wxALIGN_CENTER_HORIZONTAL, 0)); @@ -461,11 +471,16 @@ void ObjectList::create_objects_ctrl() wxALIGN_CENTER_HORIZONTAL, 0); - // Open filament editor faster + // On macOS, bypass wxDataViewCtrl::EditItem() for this custom renderer to avoid + // native text editing of wxCustomRendererObject. this->Bind(wxEVT_DATAVIEW_ITEM_ACTIVATED, [this](wxDataViewEvent& event) { if (event.GetColumn() == colFilament) { +#ifdef __WXOSX__ + start_filament_editor(event.GetItem()); +#else // Trigger the editor opening manually this->EditItem(event.GetItem(), GetColumn(colFilament)); +#endif } }); @@ -1082,10 +1097,11 @@ void ObjectList::update_filament_in_config(const wxDataViewItem& item) if (m_prevent_update_filament_in_config) return; + ModelConfig* config = nullptr; const ItemType item_type = m_objects_model->GetItemType(item); if (item_type & itObject) { const int obj_idx = m_objects_model->GetIdByItem(item); - m_config = &(*m_objects)[obj_idx]->config; + config = &(*m_objects)[obj_idx]->config; } else { const int obj_idx = m_objects_model->GetIdByItem(m_objects_model->GetObject(item)); @@ -1094,15 +1110,17 @@ void ObjectList::update_filament_in_config(const wxDataViewItem& item) if (obj_idx < 0 || ui_volume_idx < 0) return; int volume_in3d_idx = m_objects_model->get_real_volume_index_in_3d(obj_idx,ui_volume_idx); - m_config = &(*m_objects)[obj_idx]->volumes[volume_in3d_idx]->config; + config = &(*m_objects)[obj_idx]->volumes[volume_in3d_idx]->config; } else if (item_type & itLayer) - m_config = &get_item_config(item); + config = &get_item_config(item); } - if (!m_config) + if (!config) return; + m_config = config; + take_snapshot("Change Filament"); const int extruder = m_objects_model->GetExtruderNumber(item); @@ -2849,7 +2867,7 @@ void ObjectList::split() take_snapshot("Split to parts"); - volume->split(filament_cnt); + volume->split(filament_cnt, wxGetApp().app_config->get_bool("keep_painting")); wxBusyCursor wait; @@ -3041,7 +3059,6 @@ void ObjectList::merge(bool to_multipart_object) auto opt = object->config.option("extruder"); if (opt) { new_volume->config.set_key_value("extruder", new ConfigOptionInt(opt->getInt())); } } - new_volume->mmu_segmentation_facets.assign(std::move(volume->mmu_segmentation_facets)); } new_object->sort_volumes(true); @@ -3226,6 +3243,22 @@ void ObjectList::boolean() Plater::TakeSnapshot snapshot(wxGetApp().plater(), "boolean"); ModelObject* object = (*m_objects)[obj_idxs.front()]; + + const bool keep_painting = wxGetApp().app_config->get_bool("keep_painting"); + std::vector> saved_paintings; + if (keep_painting) { + // Save painting of all the positive parts + saved_paintings.reserve(object->volumes.size()); + for (const ModelVolume* vol : object->volumes) { + if (vol && vol->mesh_ptr() && vol->is_model_part() && vol->is_any_painted()) { + saved_paintings.emplace_back(vol->save_painting()); + if (saved_paintings.back()) { + saved_paintings.back()->mesh.transform(vol->get_matrix(), true); + } + } + } + } + TriangleMesh mesh = Plater::combine_mesh_fff(*object, -1, [this](const std::string& msg) {return wxGetApp().notification_manager()->push_plater_error_notification(msg); }); // add mesh to model as a new object, keep the original object's name and config @@ -3237,6 +3270,29 @@ void ObjectList::boolean() new_object->add_instance(); ModelVolume* new_volume = new_object->add_volume(mesh); + // Remap paint + if (keep_painting) { + for (auto& saved_painting : saved_paintings) { + if (saved_painting) { + // For each original painted volume, we need to apply to each instance + // because we merged all instances into one in `combine_mesh_fff` + + // First we save the non-instance-translated mesh + TriangleMesh vols_mesh(std::move(saved_painting->mesh)); + + for (const ModelInstance* i : object->instances) { + // Then for each instance, we apply the paint at the given instance place + saved_painting->mesh = vols_mesh; + saved_painting->mesh.transform(i->get_matrix()); + + // Then paint it + new_volume->restore_painting(saved_painting, true); + } + + } + } + } + // BBS: ensure on bed but no need to ensure locate in the center around origin new_object->ensure_on_bed(); new_object->center_around_origin(); @@ -6048,10 +6104,13 @@ void ObjectList::fix_through_cgal() msg += "\n"; } - plater->clear_before_change_mesh(obj_idx); + const bool keep_painting = GUI::wxGetApp().app_config->get_bool("keep_painting"); + if (!keep_painting) { + plater->clear_before_change_mesh(obj_idx); + } const size_t volumes_before = object(obj_idx)->volumes.size(); std::string res; - if (!fix_model_with_cgal_gui(*(object(obj_idx)), vol_idx, progress_dlg, msg, res)) + if (!fix_model_with_cgal_gui(*(object(obj_idx)), vol_idx, progress_dlg, msg, res, keep_painting)) return false; //wxGetApp().plater()->changed_mesh(obj_idx); object(obj_idx)->ensure_on_bed(); @@ -6169,6 +6228,7 @@ void GUI::ObjectList::smooth_mesh() WarningDialog dlg(static_cast(wxGetApp().mainframe), content, wxEmptyString, wxOK); dlg.ShowModal(); }; + const bool keep_painting = GUI::wxGetApp().app_config->get_bool("keep_painting"); bool has_show_smooth_mesh_error_dlg = false; if (vol_idxs.empty()) { obj = object(object_idx); @@ -6180,8 +6240,11 @@ void GUI::ObjectList::smooth_mesh() bool ok; auto result_mesh = TriangleMeshDeal::smooth_triangle_mesh(mv->mesh(), ok); if (ok) { + const std::optional saved_painting = keep_painting ? + mv->save_painting() : + std::optional{}; mv->set_mesh(result_mesh); - mv->reset_extra_facets(); // reset paint color + mv->restore_painting(saved_painting); mv->calculate_convex_hull(); mv->invalidate_convex_hull_2d(); mv->set_new_unique_id(); @@ -6206,8 +6269,11 @@ void GUI::ObjectList::smooth_mesh() bool ok; auto result_mesh = TriangleMeshDeal::smooth_triangle_mesh(mv->mesh(),ok); if (ok) { + const std::optional saved_painting = keep_painting ? + mv->save_painting() : + std::optional{}; mv->set_mesh(result_mesh); - mv->reset_extra_facets(); // reset paint color + mv->restore_painting(saved_painting); mv->calculate_convex_hull(); mv->invalidate_convex_hull_2d(); mv->set_new_unique_id(); @@ -6279,10 +6345,71 @@ void ObjectList::ItemValueChanged(wxDataViewEvent &event) } } +#ifdef __WXOSX__ +bool ObjectList::is_live_model_item(wxDataViewItem item) const +{ + if (!item.IsOk() || !m_objects_model) + return false; + + wxDataViewItemArray all_items; + m_objects_model->GetAllChildren(wxDataViewItem(nullptr), all_items); + for (const wxDataViewItem& live_item : all_items) + if (live_item.GetID() == item.GetID()) + return true; + + return false; +} + +void ObjectList::start_filament_editor(wxDataViewItem item) +{ + if (m_starting_filament_editor || !is_live_model_item(item)) + return; + + const ItemType type = m_objects_model->GetItemType(item); + if (!(type & (itVolume | itLayer | itObject))) + return; + + auto* column = GetColumn(colFilament); + if (!column) + return; + + auto* custom_renderer = dynamic_cast(column->GetRenderer()); + if (!custom_renderer || custom_renderer->GetEditorCtrl()) + return; + + m_starting_filament_editor = true; + m_filament_editor_item = item; + const bool started = custom_renderer->StartEditing(item, GetItemRect(item, column)); + m_filament_editor_item = wxDataViewItem(nullptr); + m_starting_filament_editor = false; + + if (!started) + return; + + SetCustomRendererPtr(custom_renderer); + SetCustomRendererItem(item); +} +#endif // __WXOSX__ + void GUI::ObjectList::OnStartEditing(wxDataViewEvent &event) { auto col = event.GetColumn(); auto item = event.GetItem(); +#ifdef __WXOSX__ + if (col == colFilament) { + if (m_starting_filament_editor) + return; + + event.Veto(); + CallAfter([this, item] { + if (!is_live_model_item(item)) + return; + start_filament_editor(item); + }); + return; + } +#endif // __WXOSX__ + if (col == colName) { ObjectDataViewModelNode* node = (ObjectDataViewModelNode*)item.GetID(); if (node->GetType() & itPlate) { @@ -6350,6 +6477,12 @@ void ObjectList::OnEditingStarted(wxDataViewEvent &event) dynamic_cast(wxGetApp().get_model_tab(vol_idx >= 0))->reset_model_config(); return; } +#ifdef __WXOSX__ + if (col == colFilament) { + start_filament_editor(item); + return; + } +#endif // __WXOSX__ if (col != colFilament && col != colName) return; auto column = GetColumn(col); diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index b97eff05ae..cab78b6adc 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -192,6 +192,13 @@ private: int m_last_selected_column = -1; #endif /* __MSW__ */ +#ifdef __WXOSX__ + bool m_starting_filament_editor = false; + wxDataViewItem m_filament_editor_item { nullptr }; + bool is_live_model_item(wxDataViewItem item) const; + void start_filament_editor(wxDataViewItem item); +#endif // __WXOSX__ + #if 0 SettingsFactory::Bundle m_freq_settings_fff; SettingsFactory::Bundle m_freq_settings_sla; diff --git a/src/slic3r/GUI/GUI_ObjectTable.cpp b/src/slic3r/GUI/GUI_ObjectTable.cpp index 71174665e1..aa3408ba29 100644 --- a/src/slic3r/GUI/GUI_ObjectTable.cpp +++ b/src/slic3r/GUI/GUI_ObjectTable.cpp @@ -561,14 +561,23 @@ wxString GridCellSupportEditor::ms_stringValues[2] = { wxT(""), wxT("") }; void GridCellSupportEditor::DoActivate(int row, int col, wxGrid* grid) { - ObjectGrid* local_table = dynamic_cast(grid); wxGridBlocks cell_array = grid->GetSelectedBlocks(); - - auto left_col = cell_array.begin()->GetLeftCol(); - auto right_col = cell_array.begin()->GetRightCol(); - auto top_row = cell_array.begin()->GetTopRow(); - auto bottom_row = cell_array.begin()->GetBottomRow(); - + auto iter = cell_array.begin(); + + int left_col, right_col, top_row, bottom_row; + if (iter == cell_array.end()) { + // wxWidgets 3.3.x returns an empty range when nothing is selected; + // fall back to the cell that triggered activation so the single-cell + // branch below handles it. + left_col = right_col = col; + top_row = bottom_row = row; + } else { + left_col = iter->GetLeftCol(); + right_col = iter->GetRightCol(); + top_row = iter->GetTopRow(); + bottom_row = iter->GetBottomRow(); + } + if ((left_col == right_col) && (top_row == bottom_row)) { wxGridCellBoolEditor::DoActivate(row, col, grid); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp index f6ce2533f3..2413ddc38d 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp @@ -104,20 +104,24 @@ void GLGizmoAssembly::on_render_input_window(float x, float y, float bottom_limi } show_selection_ui(); show_face_face_assembly_common(); + ImGui::Separator(); show_face_face_assembly_senior(); show_distance_xyz_ui(); - render_input_window_warning(m_same_model_object); + ImGui::Separator(); - - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); - - GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); - float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::PopStyleVar(2); + GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + render_input_window_warning(m_same_model_object); if (last_feature != m_curr_feature || last_mode != m_mode || last_selected_features != m_selected_features) { // the dialog may have changed its size, ask for an extra frame to render it properly @@ -127,21 +131,40 @@ void GLGizmoAssembly::on_render_input_window(float x, float y, float bottom_limi m_imgui->set_requires_extra_frame(); } m_last_active_item_imgui = m_current_active_imgui_id; + GizmoImguiEnd(); // Orca + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding ImGuiWrapper::pop_toolbar_style(); } void GLGizmoAssembly::render_input_window_warning(bool same_model_object) { - if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D) { - if (m_hit_different_volumes.size() == 2) { - if (same_model_object == false) { - m_imgui->warning_text(_L("Warning") + ": " + - _L("It is recommended to assemble the objects first,\nbecause the objects is restriced to bed \nand only parts can be lifted.")); - } + const bool same_mesh_warning = m_hit_different_volumes.size() == 1; + const bool wrong_feature_warning = m_selected_wrong_feature_waring_tip; + const bool not_assembled_warning = m_hit_different_volumes.size() == 2 && same_model_object == false && + wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D; + + if (same_mesh_warning || not_assembled_warning || wrong_feature_warning) { + ImGui::Separator(); + } + + if (same_mesh_warning) { + m_imgui->warning_text(_L("Warning: please select two different meshes.")); + } + if (wrong_feature_warning) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + m_imgui->warning_text(_L("Warning: please select Plane's feature.")); + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + m_imgui->warning_text(_L("Warning: please select Point's or Circle's feature.")); } } + if (not_assembled_warning) { + m_imgui->warning_text( + _L("Warning") + ": " + + _L("It is recommended to assemble the objects first,\nbecause the objects is restriced to bed \nand only parts can be lifted.") + ); + } } bool GLGizmoAssembly::render_assembly_mode_combo(double label_width, float item_width) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 682be933ad..45aaf37a86 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -48,19 +48,22 @@ bool GLGizmoBrimEars::on_init() const wxString ctrl = GUI::shortkey_ctrl_prefix(); const wxString alt = GUI::shortkey_alt_prefix(); - m_desc["head_diameter"] = _L("Head diameter"); - m_desc["max_angle"] = _L("Max angle"); - m_desc["detection_radius"] = _L("Detection radius"); - m_desc["remove_selected"] = _L("Remove selected points"); - m_desc["remove_all"] = _L("Remove all"); - m_desc["auto_generate"] = _L("Auto-generate points"); - m_desc["section_view"] = _L("Section view"); + m_desc["head_diameter"] = _L("Head diameter"); + m_desc["max_angle"] = _L("Max angle"); + m_desc["detection_radius"] = _L("Detection radius"); + m_desc["remove"] = _L("Remove"); + m_desc["remove_selected"] = _L("Selected"); + m_desc["remove_all"] = _L("All"); + m_desc["create"] = _L("Create"); + m_desc["auto_generate"] = _L("Auto-generate"); + m_desc["auto-generate-tooltip"] = _L("Generate brim ears using Max angle and Detection radius"); + m_desc["section_view"] = _L("Section view"); m_shortcuts = { - {_L("Left mouse button"), _L("Add a brim ear")}, - {_L("Right mouse button"), _L("Delete a brim ear")}, - {ctrl + _L("Mouse wheel"), _L("Adjust head diameter")}, - {alt + _L("Mouse wheel"), _L("Adjust section view")}, + {_L("Left mouse button"), _L("Add or Select")}, + {_L("Right mouse button"), _L("Remove")}, + {ctrl + _L("Mouse wheel"), m_desc["head_diameter"]}, + {alt + _L("Mouse wheel"), m_desc["section_view"]}, }; return true; @@ -545,6 +548,15 @@ void GLGizmoBrimEars::delete_selected_points() update_model_object(); } +bool GLGizmoBrimEars::has_selected_points() const +{ + for (const auto& entry : m_editing_cache) { + if (entry.selected) + return true; + } + return false; +} + void GLGizmoBrimEars::on_dragging(const UpdateData& data) { if (m_hover_id != -1) { @@ -634,21 +646,21 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi y = std::min(y, bottom_limit - win_h); GizmoImguiSetNextWIndowPos(x, y, ImGuiCond_Always, 0.0f, 0.0f); - const float currt_scale = m_parent.get_scale(); - ImGuiWrapper::push_toolbar_style(currt_scale); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(4.0 * currt_scale, 5.0 * currt_scale)); - ImGui::PushStyleVar(ImGuiStyleVar_ScrollbarSize, 4.0f * currt_scale); + const float f_scale = m_parent.get_scale(); + ImGuiWrapper::push_toolbar_style(f_scale); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GizmoImguiBegin(get_name(), ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); float space_size = m_imgui->get_style_scaling() * 8; - std::vector text_list = {m_desc["head_diameter"], m_desc["max_angle"], m_desc["detection_radius"], m_desc["clipping_of_view"]}; + std::vector text_list = {m_desc["head_diameter"], m_desc["max_angle"], m_desc["detection_radius"], m_desc["clipping_of_view"], + m_desc["create"], m_desc["remove"]}; float widest_text = m_imgui->find_widest_text(text_list); float caption_size = widest_text + space_size + ImGui::GetStyle().WindowPadding.x; float input_text_size = m_imgui->scaled(10.0f); float button_size = ImGui::GetFrameHeight(); - float list_width = input_text_size + ImGui::GetStyle().ScrollbarSize + 2 * currt_scale; + float list_width = input_text_size + ImGui::GetStyle().ScrollbarSize + 2 * f_scale; const float slider_icon_width = m_imgui->get_slider_icon_size().x; const float slider_width = list_width - space_size; @@ -662,12 +674,12 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi if (last_y != y) last_y = y; } - ImGui::AlignTextToFramePadding(); // Following is a nasty way to: // - save the initial value of the slider before one starts messing with it // - keep updating the head radius during sliding so it is continuosly refreshed in 3D scene // - take correct undo/redo snapshot after the user is done with moving the slider + ImGui::AlignTextToFramePadding(); float initial_value = m_new_point_head_diameter; m_imgui->text(m_desc["head_diameter"]); ImGui::SameLine(caption_size); @@ -684,8 +696,10 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##head_diameter_input", &m_new_point_head_diameter, 0.05f, 0.0f, 0.0f, "%.1f"); - ImGui::AlignTextToFramePadding(); + ImGui::Separator(); + + ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["max_angle"]); ImGui::SameLine(caption_size); ImGui::PushItemWidth(slider_width); @@ -693,8 +707,8 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##max_angle_input", &m_max_angle, 0.05f, 0.0f, 180.0f, "%.1f"); - ImGui::AlignTextToFramePadding(); + ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["detection_radius"]); ImGui::SameLine(caption_size); ImGui::PushItemWidth(slider_width); @@ -702,8 +716,37 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##detection_radius_input", &m_detection_radius, 0.05f, 0.0f, static_cast(m_detection_radius_max), "%.1f"); + ImGui::Separator(); + ImGui::AlignTextToFramePadding(); + m_imgui->text(m_desc["create"]); + ImGui::SameLine(caption_size); + if (m_imgui->button(m_desc["auto_generate"], m_desc["auto-generate-tooltip"])) { + auto_generate(); + } + + ImGui::AlignTextToFramePadding(); + m_imgui->text(m_desc["remove"]); + ImGui::SameLine(caption_size); + m_imgui->disabled_begin(has_selected_points() == false); + if (m_imgui->button(m_desc["remove_selected"])) { + delete_selected_points(); + } + m_imgui->disabled_end(); + ImGui::SameLine(); + m_imgui->disabled_begin(m_editing_cache.empty()); + if (m_imgui->button(m_desc["remove_all"])) { + if (m_editing_cache.size() > 0) { + select_point(AllPoints); + delete_selected_points(); + } + } + m_imgui->disabled_end(); + + ImGui::Separator(); + + ImGui::AlignTextToFramePadding(); float clp_dist = float(m_c->object_clipper()->get_position()); m_imgui->text(m_desc["section_view"]); ImGui::SameLine(caption_size); @@ -712,79 +755,72 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi ImGui::SameLine(drag_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); bool b_clp_dist_input = ImGui::BBLDragFloat("##section_view_input", &clp_dist, 0.05f, 0.0f, 0.0f, "%.2f"); - if (slider_clp_dist || b_clp_dist_input) { m_c->object_clipper()->set_position_by_ratio(clp_dist, false, true); } - ImGui::Separator(); - - // ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); - - float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - if (m_imgui->button(m_desc["auto_generate"])) { auto_generate(); } - - if (m_imgui->button(m_desc["remove_selected"])) { delete_selected_points(); } - float font_size = ImGui::GetFontSize(); - //ImGui::Dummy(ImVec2(font_size * 1, font_size * 1.3)); - ImGui::SameLine(); - if (m_imgui->button(m_desc["remove_all"])) { - if (m_editing_cache.size() > 0) { - select_point(AllPoints); - delete_selected_points(); - } + if (slider_clp_dist || b_clp_dist_input) { + m_c->object_clipper()->set_position_by_ratio(clp_dist, false, true); } - ImGui::PopStyleVar(1); - float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; + ImGui::Separator(); GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); - if (glb_cfg.opt_enum("brim_type") != btPainted) { - ImGui::SameLine(); - auto link_text = [&]() { - ImColor HyperColor = ImGuiWrapper::COL_ORCA; - ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING())); - float parent_width = ImGui::GetContentRegionAvail().x; + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + bool brim_not_painted = (obj_cfg.option("brim_type")) ? (obj_cfg.opt_enum("brim_type") != btPainted) : + (glb_cfg.opt_enum("brim_type") != btPainted); + bool has_invalid_ears = !m_single_brim.empty(); + + if (brim_not_painted || has_invalid_ears) { + ImGui::Separator(); + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::COL_WARNING); + + float parent_width = ImGui::GetContentRegionAvail().x; + float font_size = ImGui::GetFontSize(); + + if (brim_not_painted) { m_imgui->text_wrapped(_L("Warning: The brim type is not set to \"painted\", the brim ears will not take effect!"), parent_width); - ImGui::PopStyleColor(); + + ImColor HyperColor = ImGuiWrapper::COL_ORCA; ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); - ImGui::Dummy(ImVec2(font_size * 1.8, font_size * 1.3)); + + ImGui::Dummy(ImVec2(font_size * 1.8f, 0.0f)); // Horizontal indent ImGui::SameLine(); m_imgui->bold_text(_u8L("Set the brim type of this object to \"painted\"")); - ImGui::PopStyleColor(); - // underline - ImVec2 lineEnd = ImGui::GetItemRectMax(); - lineEnd.y -= 2.0f; - ImVec2 lineStart = lineEnd; - lineStart.x = ImGui::GetItemRectMin().x; - ImGui::GetWindowDrawList()->AddLine(lineStart, lineEnd, HyperColor); - if (ImGui::IsMouseHoveringRect(ImGui::GetItemRectMin(), ImGui::GetItemRectMax(), true)) { + + ImVec2 min = ImGui::GetItemRectMin(); + ImVec2 max = ImGui::GetItemRectMax(); + ImGui::GetWindowDrawList()->AddLine(ImVec2(min.x, max.y - 2.0f), ImVec2(max.x, max.y - 2.0f), HyperColor); + + if (ImGui::IsMouseHoveringRect(min, max)) { m_link_text_hover = true; + ImGui::SetMouseCursor(ImGuiMouseCursor_Hand); if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { DynamicPrintConfig new_conf = obj_cfg; new_conf.set_key_value("brim_type", new ConfigOptionEnum(btPainted)); mo->config.assign_config(new_conf); } - }else { + } else { m_link_text_hover = false; } - }; - - if (obj_cfg.option("brim_type")) { - if (obj_cfg.opt_enum("brim_type") != btPainted) { - link_text(); - } - }else { - link_text(); + ImGui::PopStyleColor(1); // Pop HyperColor } - } + if (has_invalid_ears) { + wxString out = _L("Warning") + ": " + std::to_string(m_single_brim.size()) + " " + _L("invalid brim ears"); + m_imgui->text_wrapped(out, parent_width); + } - if (!m_single_brim.empty()) { - wxString out = _L("Warning") + ": " + std::to_string(m_single_brim.size()) + _L(" invalid brim ears"); - m_imgui->warning_text(out); + ImGui::PopStyleColor(1); // Pop Warning Color + } else { + // Reset hover state if no warnings are active + m_link_text_hover = false; } GizmoImguiEnd(); - ImGui::PopStyleVar(2); + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding ImGuiWrapper::pop_toolbar_style(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp index 8f50859130..deb6525bfa 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp @@ -80,6 +80,7 @@ public: bool on_mouse(const wxMouseEvent& mouse_event) override; bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position, bool shift_down, bool alt_down, bool control_down); void delete_selected_points(); + bool has_selected_points() const; void update_model_object(); //ClippingPlane get_sla_clipping_plane() const; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 2483f7bd1b..ea8d3c374f 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -227,6 +227,10 @@ GLGizmoCut3D::GLGizmoCut3D(GLCanvas3D& parent, const std::string& icon_filename, {"Groove Angle" , _u8L("Groove Angle")}, {"Cut position" , _u8L("Cut position")}, // ORCA {"Build Volume" , _u8L("Build Volume")}, // ORCA + {"Multiple" , _u8L("Multiple")}, // ORCA + {"Count" , _u8L("Count")}, // ORCA + {"Gap" , _u8L("Gap")}, // ORCA + {"Spacing" , _u8L("Spacing")} // ORCA }; // update_connector_shape(); @@ -543,7 +547,7 @@ bool GLGizmoCut3D::render_double_input(const std::string& label, double& value_i return !is_approx(old_val, value); } -bool GLGizmoCut3D::render_slider_double_input(const std::string& label, float& value_in, float& tolerance_in, float min_val/* = -0.1f*/, float max_tolerance/* = -0.1f*/) +bool GLGizmoCut3D::render_slider_two_input(const std::string& label, float& value_in, float& tolerance_in, float min_val/* = -0.1f*/, float max_tolerance/* = -0.1f*/) { // -------- [ ] -------- [ ] // slider_with + item_in_gap + first_input_width + item_out_gap + slider_with + item_in_gap + second_input_width @@ -613,6 +617,55 @@ bool GLGizmoCut3D::render_slider_double_input(const std::string& label, float& v return !is_approx(old_val, value) || !is_approx(old_tolerance, tolerance); } +bool GLGizmoCut3D::render_slider_input(const std::string& label, float& value_in, float min_val /* = -0.1f*/, float max_val /* = 100.f*/) +{ + // -------- [ ] + // slider_with + input_width + slider_with + item_in_gap + double slider_with = 0.42 * m_editing_window_width; // m_control_width * 0.35; + double item_in_gap = 0.01 * m_editing_window_width; + double input_width = 0.29 * m_editing_window_width; + + constexpr float UndefMinVal = -0.1f; + const float f_mm_to_in = static_cast(GizmoObjectManipulation::mm_to_in); + + ImGui::AlignTextToFramePadding(); + m_imgui->text(label); + ImGui::SameLine(m_label_width); + ImGui::PushItemWidth(slider_with); + + double left_width = m_label_width + slider_with + item_in_gap; + + bool m_imperial_units = false; + + float value = value_in; + float max_value = max_val; + if (m_imperial_units) { + value *= f_mm_to_in; + max_value *= f_mm_to_in; + } + float old_val = value; + + const BoundingBoxf3 bbox = m_bounding_box; + //const float mean_size = float((bbox.size().x() + bbox.size().y() + bbox.size().z())) * (m_imperial_units ? f_mm_to_in : 1.f); + const float min_v = min_val > 0.f ? /*std::min(max_val, mean_size)*/ min_val : 1.f; + + float min_size = value_in < 0.f ? UndefMinVal : min_v; + if (m_imperial_units) { + min_size *= f_mm_to_in; + } + std::string format = value_in < 0.f ? " " : m_imperial_units ? "%.4f " + _u8L("in") : "%.2f " + _u8L("mm"); + + m_imgui->bbl_slider_float_style(("##" + label).c_str(), &value, min_size, max_value, format.c_str()); + + ImGui::SameLine(left_width); + ImGui::PushItemWidth(input_width); + ImGui::BBLDragFloat(("##input_" + label).c_str(), &value, 0.05f, min_size, max_value, format.c_str()); + + value_in = value * float(m_imperial_units ? GizmoObjectManipulation::in_to_mm : 1.0); + + return !is_approx(old_val, value); +} + void GLGizmoCut3D::render_move_center_input(int axis) { m_imgui->text(m_axis_names[axis]+":"); @@ -691,223 +744,299 @@ static double get_grabber_mean_size(const BoundingBoxf3& bb) #endif } +std::vector GLGizmoCut3D::offset_indices(const std::vector& base_indices, size_t vo) +{ + std::vector offset; + int vo_int = static_cast(vo); + for (const auto& tri : base_indices) { + offset.push_back({tri[0] + vo_int, tri[1] + vo_int, tri[2] + vo_int}); + } + return offset; +} + indexed_triangle_set GLGizmoCut3D::its_make_groove_plane() { - // values for calculation + // This function generates a dovetail slot in a wall, viewed from above (top-down). + // The slot has a wide "mouth" (closest to the wall surface) and a narrow "neck" (deepest into the wall). + // The flaps are the tapered sides connecting the mouth to the neck. - const float side_width = is_approx(m_groove.flaps_angle, 0.f) ? m_groove.depth : (m_groove.depth / sin(m_groove.flaps_angle)); - const float flaps_width = 2.f * side_width * cos(m_groove.flaps_angle); + const float flap_taper_width = is_approx(m_groove.flaps_angle, 0.f) ? m_groove.depth : (m_groove.depth / sin(m_groove.flaps_angle)); + const float total_flap_taper_width = 2.f * flap_taper_width * cos(m_groove.flaps_angle); - const float groove_half_width_upper = 0.5f * (m_groove.width); - const float groove_half_width_lower = 0.5f * (m_groove.width + flaps_width); + const float slot_neck_half_width = 0.5f * (m_groove.width); + const float slot_mouth_half_width = 0.5f * (m_groove.width + total_flap_taper_width); const float cut_plane_radius = 1.5f * float(m_radius); const float cut_plane_length = 1.5f * cut_plane_radius; - const float groove_half_depth = 0.5f * m_groove.depth; + const float plane_half_width = 0.5f * cut_plane_radius; // x + const float plane_half_height = 0.5f * cut_plane_length; // y - const float x = 0.5f * cut_plane_radius; - const float y = 0.5f * cut_plane_length; - float z_upper = groove_half_depth; - float z_lower = -groove_half_depth; + const float slot_half_depth = 0.5f * m_groove.depth; // z + float slot_front_z = slot_half_depth; + float slot_back_z = -slot_half_depth; - const float proj = y * tan(m_groove.angle); + const float flap_taper_offset = plane_half_height * tan(m_groove.angle); - float ext_upper_x = groove_half_width_upper + proj; // upper_x extension - float ext_lower_x = groove_half_width_lower + proj; // lower_x extension + float slot_mouth_outer_x = slot_neck_half_width + flap_taper_offset; // upper_x extension + float slot_neck_outer_x = slot_mouth_half_width + flap_taper_offset; // lower_x extension + float slot_outer_x_max = Max(slot_neck_outer_x, slot_mouth_outer_x); // max x extension - float nar_upper_x = groove_half_width_upper - proj; // upper_x narrowing - float nar_lower_x = groove_half_width_lower - proj; // lower_x narrowing + float slot_neck_inner_x = slot_neck_half_width - flap_taper_offset; // upper_x narrowing + float slot_mouth_inner_x = slot_mouth_half_width - flap_taper_offset; // lower_x narrowing - const float cut_plane_thiknes = 0.02f;// 0.02f * (float)get_grabber_mean_size(m_bounding_box); // cut_plane_thiknes + const float wall_thickness = 0.02f; // 0.02f * (float)get_grabber_mean_size(m_bounding_box); // cut_plane_thiknes - // Vertices of the groove used to detection if groove is valid - // They are written as: - // {left_ext_lower, left_nar_lower, left_ext_upper, left_nar_upper, - // right_ext_lower, right_nar_lower, right_ext_upper, right_nar_upper } - { - m_groove_vertices.clear(); - m_groove_vertices.reserve(8); - - m_groove_vertices.emplace_back(Vec3f(-ext_lower_x, -y, z_lower).cast()); - m_groove_vertices.emplace_back(Vec3f(-nar_lower_x, y, z_lower).cast()); - m_groove_vertices.emplace_back(Vec3f(-ext_upper_x, -y, z_upper).cast()); - m_groove_vertices.emplace_back(Vec3f(-nar_upper_x, y, z_upper).cast()); - m_groove_vertices.emplace_back(Vec3f( ext_lower_x, -y, z_lower).cast()); - m_groove_vertices.emplace_back(Vec3f( nar_lower_x, y, z_lower).cast()); - m_groove_vertices.emplace_back(Vec3f( ext_upper_x, -y, z_upper).cast()); - m_groove_vertices.emplace_back(Vec3f( nar_upper_x, y, z_upper).cast()); - } - - // Different cases of groove plane: - - // groove is open - - if (groove_half_width_upper > proj && groove_half_width_lower > proj) { - indexed_triangle_set mesh; - - auto get_vertices = [x, y](float z_upper, float z_lower, float nar_upper_x, float nar_lower_x, float ext_upper_x, float ext_lower_x) { - return std::vector({ - // upper left part vertices - {-x, -y, z_upper}, {-x, y, z_upper}, {-nar_upper_x, y, z_upper}, {-ext_upper_x, -y, z_upper}, - // lower part vertices - {-ext_lower_x, -y, z_lower}, {-nar_lower_x, y, z_lower}, {nar_lower_x, y, z_lower}, {ext_lower_x, -y, z_lower}, - // upper right part vertices - {ext_upper_x, -y, z_upper}, {nar_upper_x, y, z_upper}, {x, y, z_upper}, {x, -y, z_upper} - }); - }; - - mesh.vertices = get_vertices(z_upper, z_lower, nar_upper_x, nar_lower_x, ext_upper_x, ext_lower_x); - mesh.vertices.reserve(2 * mesh.vertices.size()); - - z_upper -= cut_plane_thiknes; - z_lower -= cut_plane_thiknes; - - const float under_x_shift = cut_plane_thiknes / tan(0.5f * m_groove.flaps_angle); - - nar_upper_x += under_x_shift; - nar_lower_x += under_x_shift; - ext_upper_x += under_x_shift; - ext_lower_x += under_x_shift; - - std::vector vertices = get_vertices(z_upper, z_lower, nar_upper_x, nar_lower_x, ext_upper_x, ext_lower_x); - mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); - - mesh.indices = { - // above view - {5,4,7}, {5,7,6}, // lower part - {3,4,5}, {3,5,2}, // left side - {9,6,8}, {8,6,7}, // right side - {1,0,2}, {2,0,3}, // upper left part - {9,8,10}, {10,8,11}, // upper right part - // under view - {20,21,22}, {20,22,23}, // upper right part - {12,13,14}, {12,14,15}, // upper left part - {18,21,20}, {18,20,19}, // right side - {16,15,14}, {16,14,17}, // left side - {16,17,18}, {16,18,19}, // lower part - // left edge - {1,13,0}, {0,13,12}, - // front edge - {0,12,3}, {3,12,15}, {3,15,4}, {4,15,16}, {4,16,7}, {7,16,19}, {7,19,20}, {7,20,8}, {8,20,11}, {11,20,23}, - // right edge - {11,23,10}, {10,23,22}, - // back edge - {1,13,2}, {2,13,14}, {2,14,17}, {2,17,5}, {5,17,6}, {6,17,18}, {6,18,9}, {9,18,21}, {9,21,10}, {10,21,22} - }; - return mesh; - } - - float cross_pt_upper_y = groove_half_width_upper / tan(m_groove.angle); - - // groove is closed - - if (groove_half_width_upper < proj && groove_half_width_lower < proj) { - float cross_pt_lower_y = groove_half_width_lower / tan(m_groove.angle); - - indexed_triangle_set mesh; - - auto get_vertices = [x, y](float z_upper, float z_lower, float cross_pt_upper_y, float cross_pt_lower_y, float ext_upper_x, float ext_lower_x) { - return std::vector({ - // upper part vertices - {-x, -y, z_upper}, {-x, y, z_upper}, {x, y, z_upper}, {x, -y, z_upper}, - {ext_upper_x, -y, z_upper}, {0.f, cross_pt_upper_y, z_upper}, {-ext_upper_x, -y, z_upper}, - // lower part vertices - {-ext_lower_x, -y, z_lower}, {0.f, cross_pt_lower_y, z_lower}, {ext_lower_x, -y, z_lower} - }); - }; - - mesh.vertices = get_vertices(z_upper, z_lower, cross_pt_upper_y, cross_pt_lower_y, ext_upper_x, ext_lower_x); - mesh.vertices.reserve(2 * mesh.vertices.size()); - - z_upper -= cut_plane_thiknes; - z_lower -= cut_plane_thiknes; - - const float under_x_shift = cut_plane_thiknes / tan(0.5f * m_groove.flaps_angle); - - cross_pt_upper_y += cut_plane_thiknes; - cross_pt_lower_y += cut_plane_thiknes; - ext_upper_x += under_x_shift; - ext_lower_x += under_x_shift; - - std::vector vertices = get_vertices(z_upper, z_lower, cross_pt_upper_y, cross_pt_lower_y, ext_upper_x, ext_lower_x); - mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); - - mesh.indices = { - // above view - {8,7,9}, // lower part - {5,8,6}, {6,8,7}, // left side - {4,9,8}, {4,8,5}, // right side - {1,0,6}, {1,6,5},{1,5,2}, {2,5,4}, {2,4,3}, // upper part - // under view - {10,11,16}, {16,11,15}, {15,11,12}, {15,12,14}, {14,12,13}, // upper part - {18,15,14}, {14,18,19}, // right side - {17,16,15}, {17,15,18}, // left side - {17,18,19}, // lower part - // left edge - {1,11,0}, {0,11,10}, - // front edge - {0,10,6}, {6,10,16}, {6,17,16}, {6,7,17}, {7,17,19}, {7,19,9}, {4,14,19}, {4,19,9}, {4,14,13}, {4,13,3}, - // right edge - {3,13,12}, {3,12,2}, - // back edge - {2,12,11}, {2,11,1} - }; - - return mesh; - } - - // groove is closed from the roof + int groove_count = this->m_groove_count; + float groove_gap = this->m_groove_gap; indexed_triangle_set mesh; - mesh.vertices = { - // upper part vertices - {-x, -y, z_upper}, {-x, y, z_upper}, {x, y, z_upper}, {x, -y, z_upper}, - {ext_upper_x, -y, z_upper}, {0.f, cross_pt_upper_y, z_upper}, {-ext_upper_x, -y, z_upper}, - // lower part vertices - {-ext_lower_x, -y, z_lower}, {-nar_lower_x, y, z_lower}, {nar_lower_x, y, z_lower}, {ext_lower_x, -y, z_lower} - }; - mesh.vertices.reserve(2 * mesh.vertices.size() + 1); + // handle multiple dovetails/grooves + for (int i = 0; i < groove_count; ++i) { + bool is_first_groove = i == 0; // when a groove is not the last groove, then limit the extent of the right plane so that it doesnt overlap the next groove + bool is_last_groove = i == groove_count - 1; // do the same in reverse if a groove is not the first groove + size_t vertex_index_offset = mesh.vertices.size(); - z_upper -= cut_plane_thiknes; - z_lower -= cut_plane_thiknes; + // Calculate the x-axis offset for this dovetail + float groove_offset_factor_start = -.5 * ((groove_count - 1)); + float groove_offset_factor = groove_offset_factor_start + i; + // Recalculate x with offset (only X-axis offset) + float offset_x = groove_offset_factor * (groove_gap + (2 * slot_outer_x_max)); - const float under_x_shift = cut_plane_thiknes / tan(0.5f * m_groove.flaps_angle); + // Vertices of the groove used to detection if groove is valid (not used in mesh) + { + m_groove_vertices.clear(); + m_groove_vertices.reserve(8); - nar_lower_x += under_x_shift; - ext_upper_x += under_x_shift; - ext_lower_x += under_x_shift; + m_groove_vertices.emplace_back(Vec3f(-slot_neck_outer_x, -plane_half_height, slot_front_z).cast()); + m_groove_vertices.emplace_back(Vec3f(-slot_mouth_inner_x, plane_half_height, slot_front_z).cast()); + m_groove_vertices.emplace_back(Vec3f(-slot_mouth_outer_x, -plane_half_height, slot_back_z).cast()); + m_groove_vertices.emplace_back(Vec3f(-slot_neck_outer_x, plane_half_height, slot_back_z).cast()); + m_groove_vertices.emplace_back(Vec3f(slot_neck_outer_x, -plane_half_height, slot_front_z).cast()); + m_groove_vertices.emplace_back(Vec3f(slot_mouth_inner_x, plane_half_height, slot_front_z).cast()); + m_groove_vertices.emplace_back(Vec3f(slot_mouth_outer_x, -plane_half_height, slot_back_z).cast()); + m_groove_vertices.emplace_back(Vec3f(slot_neck_outer_x, plane_half_height, slot_back_z).cast()); + } - std::vector vertices = { - // upper part vertices - {-x, -y, z_upper}, {-x, y, z_upper}, {x, y, z_upper}, {x, -y, z_upper}, - {ext_upper_x, -y, z_upper}, {under_x_shift, cross_pt_upper_y, z_upper}, {-under_x_shift, cross_pt_upper_y, z_upper}, {-ext_upper_x, -y, z_upper}, - // lower part vertices - {-ext_lower_x, -y, z_lower}, {-nar_lower_x, y, z_lower}, {nar_lower_x, y, z_lower}, {ext_lower_x, -y, z_lower} - }; - mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + // ___ + // Case: Groove is open (Top&bottom: __\ /__ ) + if (slot_neck_half_width > flap_taper_offset && slot_mouth_half_width > flap_taper_offset) { + auto get_vertices = [plane_half_width, plane_half_height] + (float slot_front_z, float slot_back_z, float slot_neck_inner_x, float slot_mouth_inner_x, float slot_mouth_outer_x, float slot_neck_outer_x, + float slot_outer_x_max, bool is_first_groove, bool is_last_groove, float groove_gap, float offset_x) + { - mesh.indices = { - // above view - {8,7,10}, {8,10,9}, // lower part - {5,8,7}, {5,7,6}, // left side - {4,10,9}, {4,9,5}, // right side - {1,0,6}, {1,6,5},{1,5,2}, {2,5,4}, {2,4,3}, // upper part - // under view - {11,12,18}, {18,12,17}, {17,12,16}, {16,12,13}, {16,13,15}, {15,13,14}, // upper part - {21,16,15}, {21,15,22}, // right side - {19,18,17}, {19,17,20}, // left side - {19,20,21}, {19,21,22}, // lower part - // left edge - {1,12,11}, {1,11,0}, - // front edge - {0,11,18}, {0,18,6}, {7,19,18}, {7,18,6}, {7,19,22}, {7,22,10}, {10,22,15}, {10,15,4}, {4,15,14}, {4,14,3}, - // right edge - {3,14,13}, {3,14,2}, - // back edge - {2,13,12}, {2,12,1}, {5,16,21}, {5,21,9}, {9,21,20}, {9,20,8}, {5,17,20}, {5,20,8} - }; + return std::vector({ + // front left part vertices + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, // *__/ \__ + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, // *__/ \__ + {-slot_neck_inner_x + offset_x, plane_half_height, slot_front_z}, // __*/ \__ + {-slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, // __/* \__ + // back part vertices + {-slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}, // __*/ \__ + {-slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, // __/* \__ + {slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, // __/ *\__ + {slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}, // __/ \*__ + // front right part vertices + {slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, // __/ \*__ + {slot_neck_inner_x + offset_x, plane_half_height, slot_front_z}, // __/ *\__ + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, // __/ \__* + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}}); // __/ \__* + }; + + std::vector vertices = get_vertices(slot_front_z, slot_back_z, slot_neck_inner_x, slot_mouth_inner_x, slot_mouth_outer_x, slot_neck_outer_x, slot_outer_x_max, + is_first_groove, is_last_groove, groove_gap, offset_x); + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + // Back face + slot_front_z -= wall_thickness; + slot_back_z -= wall_thickness; + + const float slot_back_face_x_offset = wall_thickness / tan(0.5f * m_groove.flaps_angle); + slot_neck_inner_x += slot_back_face_x_offset; + slot_mouth_inner_x += slot_back_face_x_offset; + slot_mouth_outer_x += slot_back_face_x_offset; + slot_neck_outer_x += slot_back_face_x_offset; + + vertices = get_vertices(slot_front_z, slot_back_z, slot_neck_inner_x, slot_mouth_inner_x, slot_mouth_outer_x, slot_neck_outer_x, + slot_outer_x_max, is_first_groove, + is_last_groove, groove_gap, offset_x); + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + std::vector base_indices; + + base_indices = { + // above view + {5,4,7}, {5,7,6}, // lower part + {3,4,5}, {3,5,2}, // left side + {9,6,8}, {8,6,7}, // right side + {1,0,2}, {2,0,3}, // upper left part + {9,8,10}, {10,8,11}, // upper right part + // under view + {20,21,22}, {20,22,23}, // upper right part + {12,13,14}, {12,14,15}, // upper left part + {18,21,20}, {18,20,19}, // right side + {16,15,14}, {16,14,17}, // left side + {16,17,18}, {16,18,19}, // lower part + // left edge + {1,13,0}, {0,13,12}, + // front edge + {0,12,3}, {3,12,15}, {3,15,4}, {4,15,16}, {4,16,7}, {7,16,19}, {7,19,20}, {7,20,8}, {8,20,11}, {11,20,23}, + // right edge + {11,23,10}, {10,23,22}, + // back edge + {1,13,2}, {2,13,14}, {2,14,17}, {2,17,5}, {5,17,6}, {6,17,18}, {6,18,9}, {9,18,21}, {9,21,10}, {10,21,22} + }; + + std::vector indices = offset_indices(base_indices, vertex_index_offset); + mesh.indices.insert(mesh.indices.end(), indices.begin(), indices.end()); + } + + // __ + // CASE: Groove is closed (Top&Bottom: ___/ \___) + else if (slot_neck_half_width < flap_taper_offset && slot_mouth_half_width < flap_taper_offset) { + float slot_neck_apex_y = slot_neck_half_width / tan(m_groove.angle); + float slot_mouth_apex_y = slot_mouth_half_width / tan(m_groove.angle); + + auto get_vertices = [plane_half_width, plane_half_height] + (float slot_front_z, float slot_back_z, float slot_neck_apex_y, float slot_mouth_apex_y, float slot_mouth_outer_x, float slot_neck_outer_x, + float slot_outer_x_max, bool is_first_groove, bool is_last_groove, float groove_gap, float offset_x) + { + return std::vector({ + // front part vertices + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, // *__/\__ + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, // *__/\__ + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, // __/\__* + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, // __/\__* + {slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, // __*/\__ + {offset_x, slot_neck_apex_y, slot_front_z}, // __/*\__ + {-slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, // __/\*__ + // back part vertices + {-slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}, // __*/\__ + {offset_x, slot_mouth_apex_y, slot_back_z}, // __/*\__ + {slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}}); // __/\*__ + }; + + std::vector vertices = get_vertices(slot_front_z, slot_back_z, slot_neck_apex_y, slot_mouth_apex_y, + slot_mouth_outer_x, slot_neck_outer_x, slot_outer_x_max, + is_first_groove, is_last_groove, groove_gap, offset_x); + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + // Back face + slot_front_z -= wall_thickness; + slot_back_z -= wall_thickness; + slot_neck_apex_y += wall_thickness; + slot_mouth_apex_y += wall_thickness; + + const float slot_back_face_x_offset = wall_thickness / tan(0.5f * m_groove.flaps_angle); + slot_mouth_outer_x += slot_back_face_x_offset; + slot_neck_outer_x += slot_back_face_x_offset; + + vertices = get_vertices(slot_front_z, slot_back_z, slot_neck_apex_y, slot_mouth_apex_y, slot_mouth_outer_x, slot_neck_outer_x, + slot_outer_x_max, is_first_groove, + is_last_groove, groove_gap, offset_x); + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + std::vector base_indices = { + // above view + {8,7,9}, // lower part + {5,8,6}, {6,8,7}, // left side + {4,9,8}, {4,8,5}, // right side + {1,0,6}, {1,6,5},{1,5,2}, + {2,5,4}, {2,4,3}, // upper part + // under view + {10,11,16}, {16,11,15}, + {15,11,12}, {15,12,14}, {14,12,13}, // upper part + {18,15,14}, {14,18,19}, // right side + {17,16,15}, {17,15,18}, // left side + {17,18,19}, // lower part + // left edge + {1,11,0}, {0,11,10}, + // front edge + {0,10,6}, {6,10,16}, {6,17,16}, {6,7,17}, {7,17,19}, {7,19,9}, {4,14,19}, {4,19,9}, {4,14,13}, {4,13,3}, + // right edge + {3,13,12}, {3,12,2}, + // back edge + {2,12,11}, {2,11,1} + }; + std::vector indices = offset_indices(base_indices, vertex_index_offset); + + mesh.indices.insert(mesh.indices.end(), indices.begin(), indices.end()); + } + + // Case: Groove is closed from the roof (TOP&Bottom: __/\__ ) + else { + float slot_neck_apex_y = slot_neck_half_width / tan(m_groove.angle); + + std::vector vertices = { + // front part vertices + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, + {slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, + {offset_x, slot_neck_apex_y, slot_front_z}, + {-slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, + // back part vertices + {-slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}, + {-slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, + {slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, + {slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}}; + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + // Back face + slot_front_z -= wall_thickness; + slot_back_z -= wall_thickness; + + const float slot_back_face_x_offset = wall_thickness / tan(0.5f * m_groove.flaps_angle); + slot_mouth_inner_x += slot_back_face_x_offset; + slot_mouth_outer_x += slot_back_face_x_offset; + slot_neck_outer_x += slot_back_face_x_offset; + + vertices = { + // upper part vertices + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, + {is_first_groove ? -plane_half_width + offset_x : -(groove_gap / 2.f) - slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, plane_half_height, slot_front_z}, + {is_last_groove ? plane_half_width + offset_x : (groove_gap / 2.f) + slot_outer_x_max + offset_x, -plane_half_height, slot_front_z}, + {slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, + {slot_back_face_x_offset + offset_x, slot_neck_apex_y, slot_front_z}, + {-slot_back_face_x_offset + offset_x, slot_neck_apex_y, slot_front_z}, + {-slot_mouth_outer_x + offset_x, -plane_half_height, slot_front_z}, + // lower part vertices + {-slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}, + {-slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, + {slot_mouth_inner_x + offset_x, plane_half_height, slot_back_z}, + {slot_neck_outer_x + offset_x, -plane_half_height, slot_back_z}}; + mesh.vertices.insert(mesh.vertices.end(), vertices.begin(), vertices.end()); + + // Indices for this dovetail + std::vector base_indices = { + // above view + {8,7,10}, {8,10,9}, // lower part + {5,8,7}, {5,7,6}, // left side + {4,10,9}, {4,9,5}, // right side + {1,0,6}, {1,6,5},{1,5,2}, {2,5,4}, {2,4,3}, // upper part + // under view + {11,12,18}, {18,12,17}, {17,12,16}, {16,12,13}, {16,13,15}, {15,13,14}, // upper part + {21,16,15}, {21,15,22}, // right side + {19,18,17}, {19,17,20}, // left side + {19,20,21}, {19,21,22}, // lower part + // left edge + {1,12,11}, {1,11,0}, + // front edge + {0,11,18}, {0,18,6}, {7,19,18}, {7,18,6}, {7,19,22}, {7,22,10}, {10,22,15}, {10,15,4}, {4,15,14}, {4,14,3}, + // right edge + {3,14,13}, {3,14,2}, + // back edge + {2,13,12}, {2,12,1}, {5,16,21}, {5,21,9}, {9,21,20}, {9,20,8}, {5,17,20}, {5,20,8} + }; + std::vector indices = offset_indices(base_indices, vertex_index_offset); + + mesh.indices.insert(mesh.indices.end(), indices.begin(), indices.end()); + } + } return mesh; } @@ -1908,7 +2037,7 @@ GLGizmoCut3D::PartSelection::PartSelection(const ModelObject* mo, const Transfor // split to parts for (int id = int(volumes.size())-1; id >= 0; id--) if (volumes[id]->is_splittable()) - volumes[id]->split(1); + volumes[id]->split(1, false); // No need to remap paint here, we do it later in perform_by_contour m_parts.clear(); for (const ModelVolume* volume : volumes) { @@ -2240,7 +2369,10 @@ void GLGizmoCut3D::apply_selected_connectors(std::function app void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, float x, float y, float bottom_limit) { // Connectors section - + + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + ImGui::Separator(); // WIP : Auto : Need to implement @@ -2290,7 +2422,7 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo m_imgui->disabled_end(); const float depth_min_value = m_connector_type == CutConnectorType::Snap ? m_connector_size : -0.1f; - if (render_slider_double_input(m_labels_map["Depth"], m_connector_depth_ratio, m_connector_depth_ratio_tolerance, depth_min_value)) + if (render_slider_two_input(m_labels_map["Depth"], m_connector_depth_ratio, m_connector_depth_ratio_tolerance, depth_min_value)) apply_selected_connectors([this, &connectors](size_t idx) { if (m_connector_depth_ratio > 0) connectors[idx].height = m_connector_depth_ratio; @@ -2298,7 +2430,7 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo connectors[idx].height_tolerance = m_connector_depth_ratio_tolerance; }); - if (render_slider_double_input(m_labels_map["Size"], m_connector_size, m_connector_size_tolerance)) + if (render_slider_two_input(m_labels_map["Size"], m_connector_size, m_connector_size_tolerance)) apply_selected_connectors([this, &connectors](size_t idx) { if (m_connector_size > 0) connectors[idx].radius = 0.5f * m_connector_size; @@ -2318,26 +2450,24 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo ImGui::Separator(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); render_tooltip_button(x, y); - float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Confirm connectors"), _L("Cancel")}); + GLGizmoUtils::push_orca_button_style(); if (m_imgui->button(_L("Confirm connectors"))) { unselect_all_connectors(); set_connectors_editing(false); } + GLGizmoUtils::pop_orca_button_style(); - ImGui::SameLine(m_label_width + m_editing_window_width - m_imgui->calc_text_size(_L("Cancel")).x - m_imgui->get_style_scaling() * 8); - + ImGui::SameLine(); if (m_imgui->button(_L("Cancel"))) { reset_connectors(); set_connectors_editing(false); } - ImGui::PopStyleVar(2); + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding } void GLGizmoCut3D::render_build_size() @@ -2430,7 +2560,7 @@ void GLGizmoCut3D::process_contours() if (CutMode(m_mode) == CutMode::cutTongueAndGroove) { if (has_valid_groove()) { Cut cut(model_objects[object_idx], instance_idx, get_cut_matrix(selection)); - const ModelObjectPtrs& new_objects = cut.perform_with_groove(m_groove, m_rotation_m, true); + const ModelObjectPtrs& new_objects = cut.perform_with_groove(m_groove, m_rotation_m, m_groove_count, m_groove_gap, m_radius, true); if (!new_objects.empty()) m_part_selection = PartSelection(new_objects.front(), instance_idx); } @@ -2485,13 +2615,13 @@ void GLGizmoCut3D::render_color_marker(float size, const ImU32& color) ImGui::SameLine(); } -void GLGizmoCut3D::render_groove_float_input(const std::string& label, float& in_val, const float& init_val, float& in_tolerance) +void GLGizmoCut3D::render_groove_two_float_input(const std::string& label, float& in_val, const float& init_val, float& in_tolerance) { bool is_changed{false}; float val = in_val; float tolerance = in_tolerance; - if (render_slider_double_input(label, val, tolerance, -0.1f, std::min(0.3f*in_val, 1.5f))) { + if (render_slider_two_input(label, val, tolerance, -0.1f, std::min(0.3f*in_val, 1.5f))) { if (m_imgui->get_last_slider_status().can_take_snapshot) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", _u8L("Groove change"), label), UndoRedo::SnapshotType::GizmoAction); m_imgui->get_last_slider_status().invalidate_snapshot(); @@ -2525,6 +2655,82 @@ void GLGizmoCut3D::render_groove_float_input(const std::string& label, float& in } } +void GLGizmoCut3D::render_groove_float_input(const std::string& label, float& in_val, const float& init_val, const bool disabled) +{ + if (disabled) + m_imgui->disabled_begin(true); + + bool is_changed{false}; + Vec2d plate_size = wxGetApp().plater()->get_partplate_list().get_plate(0)->get_size(); + float max_val = std::max(plate_size.x(), plate_size.y()) / (std::max(m_groove_count - 1, 1)); + + float val = in_val; + if (render_slider_input(label, val, -0.1f, max_val)) { + if (m_imgui->get_last_slider_status().can_take_snapshot) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", _u8L("Groove change"), label), + UndoRedo::SnapshotType::GizmoAction); + m_imgui->get_last_slider_status().invalidate_snapshot(); + m_groove_editing = true; + } + in_val = val; + is_changed = true; + } + + ImGui::SameLine(); + + if (!disabled) m_imgui->disabled_begin(is_approx(in_val, init_val) ); + const std::string act_name = _u8L("Reset"); + if (render_reset_button("##groove_" + label + act_name, act_name)) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", act_name, label), UndoRedo::SnapshotType::GizmoAction); + in_val = init_val; + is_changed = true; + } + if (!disabled) m_imgui->disabled_end(); + + if (is_changed) { + update_plane_model(); + reset_cut_by_contours(); + } + + if (m_is_slider_editing_done) { + m_groove_editing = false; + reset_cut_by_contours(); + } + + if (disabled) + m_imgui->disabled_end(); +} + +void GLGizmoCut3D::render_groove_int_input(const std::string& label, int& in_val, const int& init_val, int min_val, int max_val) +{ + bool is_changed{false}; + + m_imgui->text(label); + ImGui::AlignTextToFramePadding(); + ImGui::SameLine(m_label_width); + ImGui::PushItemWidth(m_control_width); + if (ImGui::InputInt("##int_input", &in_val, 1, 5)) { + in_val = std::clamp(in_val, min_val, max_val); + + is_changed = true; + } + + ImGui::SameLine(); + m_imgui->disabled_begin(in_val == init_val); + const std::string act_name = _u8L("Reset"); + if (render_reset_button("##int_" + label + act_name, act_name)) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), GUI::format("%1%: %2%", act_name, label), UndoRedo::SnapshotType::GizmoAction); + in_val = init_val; + is_changed = true; + } + m_imgui->disabled_end(); + + if (is_changed) { + update_plane_model(); + reset_cut_by_contours(); + } +} + bool GLGizmoCut3D::render_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val) { // -------- [ ] @@ -2641,10 +2847,14 @@ void GLGizmoCut3D::render_snap_specific_input(const std::string& label, const wx void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, float x, float y, float bottom_limit) { -// if (m_mode == size_t(CutMode::cutPlanar)) { + const bool has_connectors = !connectors.empty(); + const bool is_cut_plane_init = m_rotation_m.isApprox(Transform3d::Identity()) && m_bb_center.isApprox(m_plane_center); + + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + CutMode mode = CutMode(m_mode); if (mode == CutMode::cutPlanar || mode == CutMode::cutTongueAndGroove) { - const bool has_connectors = !connectors.empty(); m_imgui->disabled_begin(has_connectors); if (render_cut_mode_combo()) @@ -2659,7 +2869,6 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa render_move_center_input(Z); ImGui::SameLine(); - const bool is_cut_plane_init = m_rotation_m.isApprox(Transform3d::Identity()) && m_bb_center.isApprox(m_plane_center); m_imgui->disabled_begin(is_cut_plane_init); std::string act_name = _u8L("Reset cutting plane"); if (render_reset_button("cut_plane", act_name)) { @@ -2668,35 +2877,36 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa } m_imgui->disabled_end(); -// render_flip_plane_button(); - if (mode == CutMode::cutPlanar) { - add_vertical_scaled_interval(0.75f); + ImGui::Separator(); m_imgui->disabled_begin(!m_keep_upper || !m_keep_lower || m_keep_as_parts || (m_part_selection.valid() && m_part_selection.is_one_object())); if (m_imgui->button(has_connectors ? _L("Edit connectors") : _L("Add connectors"))) set_connectors_editing(true); m_imgui->disabled_end(); - - ImGui::SameLine(1.5f * m_control_width); - - m_imgui->disabled_begin(is_cut_plane_init && !has_connectors); - act_name = _u8L("Reset cut"); - if (m_imgui->button(wxString::FromUTF8(act_name), _L("Reset cutting plane and remove connectors"))) { - Plater::TakeSnapshot snapshot(wxGetApp().plater(), act_name, UndoRedo::SnapshotType::GizmoAction); - reset_cut_plane(); - reset_connectors(); - } - m_imgui->disabled_end(); } else if (mode == CutMode::cutTongueAndGroove) { m_is_slider_editing_done = false; ImGui::Separator(); m_imgui->text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, m_labels_map["Groove"] + ": "); - render_groove_float_input(m_labels_map["Depth"], m_groove.depth, m_groove.depth_init, m_groove.depth_tolerance); - render_groove_float_input(m_labels_map["Width"], m_groove.width, m_groove.width_init, m_groove.width_tolerance); + render_groove_two_float_input(m_labels_map["Depth"], m_groove.depth, m_groove.depth_init, m_groove.depth_tolerance); + render_groove_two_float_input(m_labels_map["Width"], m_groove.width, m_groove.width_init, m_groove.width_tolerance); render_groove_angle_input(m_labels_map["Flap Angle"], m_groove.flaps_angle, m_groove.flaps_angle_init, 30.f, 120.f); render_groove_angle_input(m_labels_map["Groove Angle"], m_groove.angle, m_groove.angle_init, 0.f, 15.f); + + ImGui::Spacing(); + m_imgui->text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, m_labels_map["Multiple"] + ": "); + render_groove_int_input(m_labels_map["Count"], m_groove_count, m_groove_count_init , 1, 100); + render_groove_float_input(m_labels_map["Gap"], m_groove_gap, m_groove_gap_init, m_groove_count == 1); + + m_imgui->disabled_begin(true); + const float groove_width = Cut::calculate_groove_width(m_groove, m_radius); + m_imgui->text(m_labels_map["Spacing"]); + ImGui::SameLine(m_label_width); + std::ostringstream oss; + oss << std::fixed << std::setprecision(2) << (m_groove_gap + groove_width); + m_imgui->text(oss.str() + "mm"); + m_imgui->disabled_end(); } ImGui::Separator(); @@ -2759,21 +2969,35 @@ void GLGizmoCut3D::render_cut_plane_input_window(CutConnectors &connectors, floa } ImGui::Separator(); + + render_tooltip_button(x, y); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); - float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; - render_tooltip_button(x, get_cur_y); - - float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + if (mode == CutMode::cutPlanar) { + ImGui::SameLine(); + m_imgui->disabled_begin(is_cut_plane_init && !has_connectors); + if (m_imgui->button(_L("Reset"), _L("Reset cutting plane and remove connectors"))) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset Cut", UndoRedo::SnapshotType::GizmoAction); + reset_cut_plane(); + reset_connectors(); + } + m_imgui->disabled_end(); + } ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Perform cut"), _L("Cancel")}); m_imgui->disabled_begin(!can_perform_cut()); - if(m_imgui->button(_L("Perform cut"))) - perform_cut(m_parent.get_selection()); + GLGizmoUtils::push_orca_button_style(); + if(m_imgui->button(_L("Perform cut"))) + perform_cut(m_parent.get_selection()); + GLGizmoUtils::pop_orca_button_style(); m_imgui->disabled_end(); - ImGui::PopStyleVar(2); + ImGui::SameLine(); + if (m_imgui->button(_L("Cancel"))) { + m_parent.reset_all_gizmos(); + } + + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding } void GLGizmoCut3D::validate_connector_settings() @@ -2876,7 +3100,16 @@ void GLGizmoCut3D::init_input_window_data(CutConnectors &connectors) void GLGizmoCut3D::render_input_window_warning() const { - if (! m_invalid_connectors_idxs.empty()) { + const bool invalid_connector_warning = !m_invalid_connectors_idxs.empty(); + const bool keep_after_cut_warning = !m_keep_upper && !m_keep_lower; + const bool invalid_contour_warning = !has_valid_contour(); + const bool invalid_groove_warning = !has_valid_groove(); + + if (invalid_connector_warning || keep_after_cut_warning || invalid_contour_warning || invalid_groove_warning) { + ImGui::Separator(); + } + + if (invalid_connector_warning) { wxString out = /*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Invalid connectors detected") + ":"; if (m_info_stats.outside_cut_contour > size_t(0)) out += "\n - " + format_wxstr(_L_PLURAL("%1$d connector is out of cut contour", "%1$d connectors are out of cut contour", m_info_stats.outside_cut_contour), @@ -2886,14 +3119,14 @@ void GLGizmoCut3D::render_input_window_warning() const m_info_stats.outside_bb); if (m_info_stats.is_overlap) out += "\n - " + _L("Some connectors are overlapped"); - m_imgui->text(out); + m_imgui->warning_text(out); } - if (!m_keep_upper && !m_keep_lower) - m_imgui->text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Select at least one object to keep after cutting.")); - if (!has_valid_contour()) - m_imgui->text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Cut plane is placed out of object")); - else if (!has_valid_groove()) - m_imgui->text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Cut plane with groove is invalid")); + if (keep_after_cut_warning) + m_imgui->warning_text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Select at least one object to keep after cutting.")); + if (invalid_contour_warning) + m_imgui->warning_text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Cut plane is placed out of object")); + else if (invalid_groove_warning) + m_imgui->warning_text(/*wxString(ImGui::WarningMarkerSmall)*/ _L("Warning") + ": " + _L("Cut plane with groove is invalid")); } void GLGizmoCut3D::on_render_input_window(float x, float y, float bottom_limit) @@ -3321,6 +3554,7 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) wxBusyCursor wait; + const bool keep_painting = GUI::wxGetApp().app_config->get_bool("keep_painting"); ModelObjectCutAttributes attributes = only_if(has_connectors ? true : m_keep_upper, ModelObjectCutAttribute::KeepUpper) | only_if(has_connectors ? true : m_keep_lower, ModelObjectCutAttribute::KeepLower) | only_if(has_connectors ? false : m_keep_as_parts, ModelObjectCutAttribute::KeepAsParts) | @@ -3329,14 +3563,15 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) only_if(m_rotate_upper, ModelObjectCutAttribute::FlipUpper) | only_if(m_rotate_lower, ModelObjectCutAttribute::FlipLower) | only_if(dowels_count > 0, ModelObjectCutAttribute::CreateDowels) | - only_if(!has_connectors && !cut_with_groove && cut_mo->cut_id.id().invalid(), ModelObjectCutAttribute::InvalidateCutInfo); + only_if(!has_connectors && !cut_with_groove && cut_mo->cut_id.id().invalid(), ModelObjectCutAttribute::InvalidateCutInfo) | + only_if(keep_painting, ModelObjectCutAttribute::KeepPaint); // update cut_id for the cut object in respect to the attributes update_object_cut_id(cut_mo->cut_id, attributes, dowels_count); Cut cut(cut_mo, instance_idx, get_cut_matrix(selection), attributes); - const ModelObjectPtrs& new_objects = cut_by_contour ? cut.perform_by_contour(m_part_selection.get_cut_parts(), dowels_count): - cut_with_groove ? cut.perform_with_groove(m_groove, m_rotation_m) : + const ModelObjectPtrs& new_objects = cut_by_contour ? cut.perform_by_contour(mo, m_part_selection.get_cut_parts(), dowels_count): + cut_with_groove ? cut.perform_with_groove(m_groove, m_rotation_m, m_groove_count, m_groove_gap, m_radius) : cut.perform_with_plane(); // fix_non_manifold_edges @@ -3362,12 +3597,12 @@ void GLGizmoCut3D::perform_cut(const Selection& selection) // model_name failing reason std::vector> failed_models; auto plater = wxGetApp().plater(); - auto fix_and_update_progress = [this, plater](ModelObject *model_object, const int vol_idx, const string &model_name, ProgressDialog &progress_dlg, + auto fix_and_update_progress = [this, plater, keep_painting](ModelObject *model_object, const int vol_idx, const string &model_name, ProgressDialog &progress_dlg, std::vector &succes_models, std::vector> &failed_models) { wxString msg = _L("Repairing model object"); msg += ": " + from_u8(model_name) + "\n"; std::string res; - if (!fix_model_with_cgal_gui(*model_object, vol_idx, progress_dlg, msg, res)) return false; + if (!fix_model_with_cgal_gui(*model_object, vol_idx, progress_dlg, msg, res, keep_painting)) return false; return true; }; ProgressDialog progress_dlg(_L("Repairing model object"), "", 100, find_toplevel_parent(plater), wxPD_AUTO_HIDE | wxPD_APP_MODAL | wxPD_CAN_ABORT, true); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index 73838f43c3..e6cbb7d0ef 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -124,6 +124,12 @@ class GLGizmoCut3D : public GLGizmoBase bool m_is_slider_editing_done { false }; + // Multiple Dovetail cuts + int m_groove_count_init { 1 }; + int m_groove_count { 1 }; + float m_groove_gap { 10.f }; // distance between multiple dovetail cuts + float m_groove_gap_init { 10.f }; + // Input params for cut with snaps float m_snap_bulge_proportion{ 0.15f }; float m_snap_space_proportion{ 0.3f }; @@ -301,8 +307,10 @@ protected: void add_horizontal_scaled_interval(float interval); void add_horizontal_shift(float shift); void render_color_marker(float size, const ImU32& color); - void render_groove_float_input(const std::string &label, float &in_val, const float &init_val, float &in_tolerance); + void render_groove_two_float_input(const std::string &label, float &in_val, const float &init_val, float &in_tolerance); + void render_groove_float_input(const std::string &label, float &in_val, const float &init_val, const bool disabled); void render_groove_angle_input(const std::string &label, float &in_val, const float &init_val, float min_val, float max_val); + void render_groove_int_input(const std::string& label, int& in_val, const int& init_val, int min_val, int max_val); bool render_angle_input(const std::string& label, float& in_val, const float& init_val, float min_val, float max_val); void render_snap_specific_input(const std::string& label, const wxString& tooltip, float& in_val, const float& init_val, const float min_val, const float max_val); void render_cut_plane_input_window(CutConnectors &connectors, float x, float y, float bottom_limit); @@ -338,7 +346,8 @@ private: void switch_to_mode(size_t new_mode); bool render_cut_mode_combo(); bool render_double_input(const std::string& label, double& value_in); - bool render_slider_double_input(const std::string& label, float& value_in, float& tolerance_in, float min_val = -0.1f, float max_tolerance = -0.1f); + bool render_slider_two_input(const std::string& label, float& value_in, float& tolerance_in, float min_val = -0.1f, float max_tolerance = -0.1f); + bool render_slider_input(const std::string& label, float& value_in, float min_val = -0.1f, float max_val = 100.f); void render_move_center_input(int axis); void render_connect_mode_radio_button(CutConnectorMode mode); bool render_reset_button(const std::string& label_id, const std::string& tooltip) const; @@ -378,6 +387,7 @@ private: void toggle_model_objects_visibility(); + std::vector offset_indices(const std::vector& base_indices, size_t vo); indexed_triangle_set its_make_groove_plane(); indexed_triangle_set get_connector_mesh(CutConnectorAttributes connector_attributes); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp index 8766ad7b13..b7c963cc63 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.cpp @@ -1267,6 +1267,59 @@ void GLGizmoEmboss::reset_volume() remove_notification_not_valid_font(); } +namespace { +// FIX IT: It should not change volume position before successfull change volume by process +void fix_transformation(const StyleManager::Style& from, const StyleManager::Style& to, GLCanvas3D& canvas) +{ + // fix Z rotation when exists difference in styles + const std::optional& f_angle_opt = from.angle; + const std::optional& t_angle_opt = to.angle; + if (!is_approx(f_angle_opt, t_angle_opt)) { + // fix rotation + float f_angle = f_angle_opt.value_or(.0f); + float t_angle = t_angle_opt.value_or(.0f); + do_local_z_rotate(canvas.get_selection(), t_angle - f_angle); + std::string no_snapshot; + canvas.do_rotate(no_snapshot); + } + + // fix distance (Z move) when exists difference in styles + const std::optional& f_move_opt = from.distance; + const std::optional& t_move_opt = to.distance; + if (!is_approx(f_move_opt, t_move_opt)) { + float f_move = f_move_opt.value_or(.0f); + float t_move = t_move_opt.value_or(.0f); + do_local_z_move(canvas.get_selection(), t_move - f_move); + std::string no_snapshot; + canvas.do_move(no_snapshot); + } +} +} // namespace + +bool GLGizmoEmboss::is_changed_from_default_style() +{ + int default_index = 0; + const StyleManager::Style& default_style = m_style_manager.get_styles()[default_index]; + const StyleManager::Style& current_style = m_style_manager.get_style(); + + return default_style == current_style; +} + +void GLGizmoEmboss::reset_to_default_style() +{ + int default_index = 0; + const StyleManager::Style& current_style = m_style_manager.get_style(); + const StyleManager::Style& default_style = m_style_manager.get_styles()[default_index]; + + StyleManager::Style cur_s = current_style; // copy + StyleManager::Style new_s = default_style; // copy + + if (m_style_manager.load_style(default_index)) { + ::fix_transformation(cur_s, new_s, m_parent); + process(); + } +} + void GLGizmoEmboss::calculate_scale() { Transform3d to_world = m_parent.get_selection().get_first_volume()->world_matrix(); auto to_world_linear = to_world.linear(); @@ -1406,9 +1459,29 @@ void GLGizmoEmboss::draw_window(float x, float y) draw_model_type(); } + ImGui::Spacing(); ImGui::Separator(); + ImGui::Spacing(); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); + + ImGui::SameLine(); + m_imgui->disabled_begin(is_changed_from_default_style()); + if (m_imgui->button(_L("Reset"), _L("Reset all options except the text and operation"))) { + reset_to_default_style(); + } + m_imgui->disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding #ifdef SHOW_WX_FONT_DESCRIPTOR if (is_selected_style) @@ -2155,34 +2228,6 @@ void GLGizmoEmboss::draw_delete_style_button() { } } -namespace { -// FIX IT: It should not change volume position before successfull change volume by process -void fix_transformation(const StyleManager::Style &from, const StyleManager::Style &to, GLCanvas3D &canvas) { - // fix Z rotation when exists difference in styles - const std::optional &f_angle_opt = from.angle; - const std::optional &t_angle_opt = to.angle; - if (!is_approx(f_angle_opt, t_angle_opt)) { - // fix rotation - float f_angle = f_angle_opt.value_or(.0f); - float t_angle = t_angle_opt.value_or(.0f); - do_local_z_rotate(canvas.get_selection(), t_angle - f_angle); - std::string no_snapshot; - canvas.do_rotate(no_snapshot); - } - - // fix distance (Z move) when exists difference in styles - const std::optional &f_move_opt = from.distance; - const std::optional &t_move_opt = to.distance; - if (!is_approx(f_move_opt, t_move_opt)) { - float f_move = f_move_opt.value_or(.0f); - float t_move = t_move_opt.value_or(.0f); - do_local_z_move(canvas.get_selection(), t_move - f_move); - std::string no_snapshot; - canvas.do_move(no_snapshot); - } -} -} // namesapce - void GLGizmoEmboss::draw_style_list() { if (!m_style_manager.is_active_font()) return; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp index f5916620f8..4ad41483ac 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoEmboss.hpp @@ -109,6 +109,9 @@ private: void set_volume_by_selection(); void reset_volume(); + bool is_changed_from_default_style(); + void reset_to_default_style(); + // create volume from text - main functionality bool process(bool make_snapshot = true); void close(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp index 7af55915d5..2f69ed64fa 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp @@ -82,7 +82,7 @@ bool GLGizmoFdmSupports::on_init() m_desc["perform"] = _L("Perform"); m_desc["on_overhangs_only"] = _L("On highlighted overhangs only"); - m_desc["remove_all"] = _L("Erase all painting"); + m_desc["remove_all"] = _L("Erase all"); m_desc["highlight_by_angle"] = _L("Highlight overhang areas"); m_desc["tool_type"] = _L("Tool type"); m_desc["gap_fill"] = _L("Gap fill"); @@ -215,6 +215,9 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l //BBS ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: @@ -225,11 +228,10 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l const float highlight_slider_left = m_imgui->calc_text_size(m_desc.at("highlight_by_angle")).x + m_imgui->scaled(1.5f); const float reset_button_slider_left = m_imgui->calc_text_size(m_desc.at("reset_direction")).x + m_imgui->scaled(1.5f) + ImGui::GetStyle().FramePadding.x * 2; const float on_overhangs_only_width = m_imgui->calc_text_size(m_desc["on_overhangs_only"]).x + m_imgui->scaled(1.5f); - const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.5f); const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.5f); const float gap_area_txt_width = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f); const float smart_fill_angle_txt_width = m_imgui->calc_text_size(m_desc.at("smart_fill_angle")).x + m_imgui->scaled(1.5f); - const float buttons_width = remove_btn_width + filter_btn_width + m_imgui->scaled(1.5f); + const float buttons_width = filter_btn_width + m_imgui->scaled(1.5f); const float empty_button_width = m_imgui->calc_button_size("").x; const float tips_width = m_imgui->calc_text_size(_L("Auto support threshold angle: ") + " 90 ").x + m_imgui->scaled(1.5f); @@ -358,12 +360,27 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l ImGui::SameLine(drag_left_width + sliders_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##gap_area_input", &TriangleSelectorPatch::gap_area, 0.05f, 0.0f, 0.0f, "%.2f"); + + // Apply gap fill button + if (m_imgui->button(m_desc.at("perform"))) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset selection", UndoRedo::SnapshotType::GizmoAction); + + for (int i = 0; i < m_triangle_selectors.size(); i++) { + TriangleSelectorPatch* ts_mm = dynamic_cast(m_triangle_selectors[i].get()); + ts_mm->update_selector_triangles(); + ts_mm->request_update_render_data(true); + } + update_model_object(); + m_parent.set_as_dirty(); + } } - m_imgui->bbl_checkbox(m_desc["on_overhangs_only"], m_paint_on_overhangs_only); - if (ImGui::IsItemHovered()) - m_imgui->tooltip(format_wxstr(_L("Allows painting only on facets selected by: \"%1%\""), m_desc["highlight_by_angle"]), - max_tooltip_width); + if (m_current_tool != ImGui::GapFillIcon) { + m_imgui->bbl_checkbox(m_desc["on_overhangs_only"], m_paint_on_overhangs_only); + if (ImGui::IsItemHovered()) + m_imgui->tooltip(format_wxstr(_L("Allows painting only on facets selected by: \"%1%\""), m_desc["highlight_by_angle"]), + max_tooltip_width); + } ImGui::Separator(); @@ -427,33 +444,12 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l if (b_bbl_slider_float || b_drag_input) m_c->object_clipper()->set_position_by_ratio(clp_dist, true); - ImGui::Separator(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); + render_tooltip_button(x, y); - float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::SameLine(); - - // Perform button is for gap fill - if (m_current_tool == ImGui::GapFillIcon) { - if (m_imgui->button(m_desc.at("perform"))) { - Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset selection", UndoRedo::SnapshotType::GizmoAction); - - for (int i = 0; i < m_triangle_selectors.size(); i++) { - TriangleSelectorPatch* ts_mm = dynamic_cast(m_triangle_selectors[i].get()); - ts_mm->update_selector_triangles(); - ts_mm->request_update_render_data(true); - } - update_model_object(); - m_parent.set_as_dirty(); - } - } - - ImGui::SameLine(); - + m_imgui->disabled_begin(m_c->selection_info()->model_object()->is_fdm_support_painted() == false); if (m_imgui->button(m_desc.at("remove_all"))) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset selection", UndoRedo::SnapshotType::GizmoAction); ModelObject * mo = m_c->selection_info()->model_object(); @@ -468,11 +464,18 @@ void GLGizmoFdmSupports::on_render_input_window(float x, float y, float bottom_l update_model_object(); m_parent.set_as_dirty(); } - ImGui::PopStyleVar(2); + m_imgui->disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } GizmoImguiEnd(); // BBS + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding ImGuiWrapper::pop_toolbar_style(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp index d80687544e..6689fcdcea 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoFuzzySkin.cpp @@ -37,7 +37,7 @@ bool GLGizmoFuzzySkin::on_init() const wxString shift = GUI::shortkey_shift_prefix(); m_desc["reset_direction"] = _L("Reset direction"); - m_desc["remove_all"] = _L("Erase all painting"); + m_desc["remove_all"] = _L("Erase all"); m_desc["circle"] = _L("Circle"); m_desc["sphere"] = _L("Sphere"); m_desc["pointer"] = _L("Triangles"); @@ -137,6 +137,8 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim // BBS ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); @@ -151,7 +153,6 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim const float cursor_type_radio_sphere = m_imgui->calc_text_size(m_desc["sphere"]).x + m_imgui->scaled(2.5f); const float cursor_type_radio_pointer = m_imgui->calc_text_size(m_desc["pointer"]).x + m_imgui->scaled(2.5f); - const float button_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.f); const float buttons_width = m_imgui->scaled(0.5f); const float minimal_slider_width = m_imgui->scaled(4.f); @@ -176,7 +177,6 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim const float empty_button_width = m_imgui->calc_button_size("").x; window_width = std::max(window_width, total_text_max); - window_width = std::max(window_width, button_width); window_width = std::max(window_width, cursor_type_radio_circle + cursor_type_radio_sphere + cursor_type_radio_pointer); window_width = std::max(window_width, tool_type_radio_left + tool_type_radio_brush + tool_type_radio_smart_fill); window_width = std::max(window_width, 2.f * buttons_width + m_imgui->scaled(1.f)); @@ -299,14 +299,10 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim ImGui::Separator(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); render_tooltip_button(x, y); - float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::SameLine(); - + m_imgui->disabled_begin(mo->is_fuzzy_skin_painted() == false); if (m_imgui->button(m_desc.at("remove_all"))) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), _u8L("Reset selection"), UndoRedo::SnapshotType::GizmoAction); int idx = -1; @@ -320,6 +316,13 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim update_model_object(); m_parent.set_as_dirty(); } + m_imgui->disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } const DynamicPrintConfig &glb_cfg = wxGetApp().preset_bundle->prints.get_edited_preset().config; const bool has_object_fuzzy_override = obj_cfg.option("fuzzy_skin"); @@ -329,7 +332,7 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim float font_size = ImGui::GetFontSize(); auto link_text = [&]() { ImColor HyperColor = ImGuiWrapper::COL_ORCA; - ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING())); + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::COL_WARNING); float parent_width = ImGui::GetContentRegionAvail().x; m_imgui->text_wrapped(_L("Warning: Fuzzy skin is disabled, painted fuzzy skin will not take effect!"), parent_width); ImGui::PopStyleColor(); @@ -350,10 +353,11 @@ void GLGizmoFuzzySkin::on_render_input_window(float x, float y, float bottom_lim mo->config.assign_config(new_conf); } }; + ImGui::Separator(); link_text(); } - ImGui::PopStyleVar(2); + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding GizmoImguiEnd(); // BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index efc7b82fae..6c6f913276 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -1917,18 +1917,6 @@ void GLGizmoMeasure::show_selection_ui() if (m_show_reset_first_tip) { m_imgui->text(_L("Feature 1 has been reset, \nfeature 2 has been feature 1")); } - if (m_selected_wrong_feature_waring_tip) { - if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { - if (m_assembly_mode == AssemblyMode::FACE_FACE) { - m_imgui->warning_text(_L("Warning: please select Plane's feature.")); - } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { - m_imgui->warning_text(_L("Warning: please select Point's or Circle's feature.")); - } - } - } - if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_hit_different_volumes.size() == 1) { - m_imgui->warning_text(_L("Warning: please select two different meshes.")); - } } void GLGizmoMeasure::show_distance_xyz_ui() @@ -2175,10 +2163,21 @@ void GLGizmoMeasure::on_render_input_window(float x, float y, float bottom_limit ImGui::Separator(); show_distance_xyz_ui(); + ImGui::Separator(); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding + if (last_feature != m_curr_feature || last_mode != m_mode || last_selected_features != m_selected_features) { // the dialog may have changed its size, ask for an extra frame to render it properly last_feature = m_curr_feature; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index bfff70d315..c7186e5d80 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -188,6 +188,19 @@ CommonGizmosDataID GLGizmoMeshBoolean::on_get_requirements() const | int(CommonGizmosDataID::ObjectClipper)); } +std::optional VolumeInfo::save_painting() const +{ + if (wxGetApp().app_config->get_bool("keep_painting")) { + std::optional saved_painting = mv->save_painting(); + if (saved_painting) { + saved_painting->mesh.transform(trafo); + } + return saved_painting; + } + + return {}; +} + void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_limit) { y = std::min(y, bottom_limit - ImGui::GetWindowHeight()); @@ -346,7 +359,9 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l std::vector temp_mesh_resuls; Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "UNION"); if (temp_mesh_resuls.size() != 0) { - generate_new_volume(true, *temp_mesh_resuls.begin()); + // For union, we want to keep paint from both meshes + std::vector> saved_paintings{m_src.save_painting(), m_tool.save_painting()}; + generate_new_volume(true, *temp_mesh_resuls.begin(), saved_paintings); wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); } else { @@ -364,7 +379,9 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l std::vector temp_mesh_resuls; Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "A_NOT_B"); if (temp_mesh_resuls.size() != 0) { - generate_new_volume(m_diff_delete_input, *temp_mesh_resuls.begin()); + // For diff, we only need paint from src + std::vector> saved_paintings{m_src.save_painting()}; + generate_new_volume(m_diff_delete_input, *temp_mesh_resuls.begin(), saved_paintings); wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); } else { @@ -382,7 +399,9 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l std::vector temp_mesh_resuls; Slic3r::MeshBoolean::mcut::make_boolean(temp_src_mesh, temp_tool_mesh, temp_mesh_resuls, "INTERSECTION"); if (temp_mesh_resuls.size() != 0) { - generate_new_volume(m_inter_delete_input, *temp_mesh_resuls.begin()); + // For intersection, we want to keep paint from both meshes + std::vector> saved_paintings{m_src.save_painting(), m_tool.save_painting()}; + generate_new_volume(m_inter_delete_input, *temp_mesh_resuls.begin(), saved_paintings); wxGetApp().notification_manager()->close_plater_warning_notification(warning_text); } else { @@ -420,7 +439,7 @@ void GLGizmoMeshBoolean::on_save(cereal::BinaryOutputArchive &ar) const ar(m_enable, m_operation_mode, m_selecting_state, m_diff_delete_input, m_inter_delete_input, m_src, m_tool); } -void GLGizmoMeshBoolean::generate_new_volume(bool delete_input, const TriangleMesh& mesh_result) { +void GLGizmoMeshBoolean::generate_new_volume(const bool delete_input, TriangleMesh& mesh_result, const std::vector>& saved_paintings) { wxGetApp().plater()->take_snapshot("Mesh Boolean"); @@ -429,6 +448,11 @@ void GLGizmoMeshBoolean::generate_new_volume(bool delete_input, const TriangleMe // generate new volume ModelVolume* new_volume = curr_model_object->add_volume(std::move(mesh_result)); + // Remap paintings + for (const auto& saved_painting : saved_paintings) { + new_volume->restore_painting(saved_painting, true); + } + // assign to new_volume from old_volume ModelVolume* old_volume = m_src.mv; std::string suffix; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.hpp index c012a68dca..9c36be5cd9 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.hpp @@ -34,6 +34,8 @@ struct VolumeInfo { void serialize(Archive& ar) { ar(volume_idx, trafo); } + + std::optional save_painting() const; }; class GLGizmoMeshBoolean : public GLGizmoBase { @@ -87,7 +89,7 @@ private: VolumeInfo m_src; VolumeInfo m_tool; - void generate_new_volume(bool delete_input, const TriangleMesh& mesh_result); + void generate_new_volume(bool delete_input, TriangleMesh& mesh_result, const std::vector>& saved_paintings); }; } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 72e880f85d..213e5db9a4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -103,7 +103,7 @@ bool GLGizmoMmuSegmentation::on_init() m_desc["edge_detection"] = _L("Edge detection"); m_desc["gap_area"] = _L("Gap area"); m_desc["perform"] = _L("Perform"); - m_desc["remove_all"] = _L("Erase all painting"); + m_desc["remove_all"] = _L("Erase all"); m_desc["circle"] = _L("Circle"); m_desc["sphere"] = _L("Sphere"); m_desc["pointer"] = _L("Triangles"); @@ -362,6 +362,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott // BBS ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); // First calculate width of all the texts that are could possibly be shown. We will decide set the dialog width based on that: @@ -374,10 +377,9 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott const float gap_area_slider_left = m_imgui->calc_text_size(m_desc.at("gap_area")).x + m_imgui->scaled(1.5f) + space_size; const float height_range_slider_left = m_imgui->calc_text_size(m_desc.at("height_range")).x + m_imgui->scaled(2.f); - const float remove_btn_width = m_imgui->calc_text_size(m_desc.at("remove_all")).x + m_imgui->scaled(1.f); const float filter_btn_width = m_imgui->calc_text_size(m_desc.at("perform")).x + m_imgui->scaled(1.f); const float remap_btn_width = m_imgui->calc_text_size(m_desc.at("perform_remap")).x + m_imgui->scaled(1.f); - const float buttons_width = remove_btn_width + filter_btn_width + remap_btn_width + m_imgui->scaled(2.f); + const float buttons_width = filter_btn_width + remap_btn_width + m_imgui->scaled(2.f); const float minimal_slider_width = m_imgui->scaled(4.f); const float color_button_width = m_imgui->calc_text_size(std::string_view{""}).x + m_imgui->scaled(1.75f); @@ -566,8 +568,6 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott m_cursor_type = TriangleSelector::CursorType::POINTER; m_tool_type = ToolType::BUCKET_FILL; - m_imgui->bbl_checkbox(m_desc["edge_detection"], m_detect_geometry_edge); - if (m_detect_geometry_edge) { ImGui::AlignTextToFramePadding(); m_imgui->text(m_desc["smart_fill_angle"]); @@ -587,6 +587,8 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott // set to negative value to disable edge detection m_smart_fill_angle = -1.f; } + + m_imgui->bbl_checkbox(m_desc["edge_detection"], m_detect_geometry_edge); } else if (m_current_tool == ImGui::HeightRangeIcon) { m_tool_type = ToolType::BRUSH; @@ -613,6 +615,19 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::SameLine(drag_left_width + sliders_left_width); ImGui::PushItemWidth(1.5 * slider_icon_width); ImGui::BBLDragFloat("##gap_area_input", &TriangleSelectorPatch::gap_area, 0.05f, 0.0f, 0.0f, "%.2f"); + + // Apply Gap fill button + if (m_imgui->button(m_desc.at("perform"))) { + Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Gap fill", UndoRedo::SnapshotType::GizmoAction); + + for (int i = 0; i < m_triangle_selectors.size(); i++) { + TriangleSelectorPatch* ts_mm = dynamic_cast(m_triangle_selectors[i].get()); + ts_mm->update_selector_triangles(); + ts_mm->request_update_render_data(true); + } + update_model_object(); + m_parent.set_as_dirty(); + } } ImGui::Separator(); @@ -639,30 +654,10 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott ImGui::Separator(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); render_tooltip_button(x, y); - float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::SameLine(); - - if (m_current_tool == ImGui::GapFillIcon) { - if (m_imgui->button(m_desc.at("perform"))) { - Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Gap fill", UndoRedo::SnapshotType::GizmoAction); - - for (int i = 0; i < m_triangle_selectors.size(); i++) { - TriangleSelectorPatch* ts_mm = dynamic_cast(m_triangle_selectors[i].get()); - ts_mm->update_selector_triangles(); - ts_mm->request_update_render_data(true); - } - update_model_object(); - m_parent.set_as_dirty(); - } - - ImGui::SameLine(); - } - + m_imgui->disabled_begin(m_c->selection_info()->model_object()->is_mm_painted() == false); if (m_imgui->button(m_desc.at("remove_all"))) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset selection", UndoRedo::SnapshotType::GizmoAction); ModelObject * mo = m_c->selection_info()->model_object(); @@ -677,7 +672,15 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott update_model_object(); m_parent.set_as_dirty(); } - ImGui::PopStyleVar(2); + m_imgui->disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding GizmoImguiEnd(); // BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp index 1051c5ab3c..b211a18fb2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSeam.cpp @@ -41,7 +41,7 @@ bool GLGizmoSeam::on_init() m_desc["enforce"] = _L("Enforce seam"); m_desc["block"] = _L("Block seam"); m_desc["remove"] = _L("Erase"); - m_desc["remove_all"] = _L("Erase all painting"); + m_desc["remove_all"] = _L("Erase all"); m_desc["circle"] = _L("Circle"); m_desc["sphere"] = _L("Sphere"); @@ -140,6 +140,8 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) wchar_t old_tool = m_current_tool; //BBS ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + float f_scale = m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); @@ -256,14 +258,10 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) ImGui::Separator(); - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); GLGizmoUtils::render_tooltip_button(m_imgui, m_parent, m_shortcuts, x, y); - float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - ImGui::SameLine(); - + m_imgui->disabled_begin(m_c->selection_info()->model_object()->is_seam_painted() == false); if (m_imgui->button(m_desc.at("remove_all"))) { Plater::TakeSnapshot snapshot(wxGetApp().plater(), "Reset selection", UndoRedo::SnapshotType::GizmoAction); ModelObject *mo = m_c->selection_info()->model_object(); @@ -278,7 +276,15 @@ void GLGizmoSeam::on_render_input_window(float x, float y, float bottom_limit) update_model_object(); m_parent.set_as_dirty(); } - ImGui::PopStyleVar(2); + m_imgui->disabled_end(); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({_L("Done")}); + if (m_imgui->button(_L("Done"))) { + m_parent.reset_all_gizmos(); + } + + ImGui::PopStyleVar(1); // ImGuiStyleVar_FramePadding GizmoImguiEnd(); //BBS diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp index 1f8af3bf09..95936556d4 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSimplify.cpp @@ -535,12 +535,20 @@ void GLGizmoSimplify::apply_simplify() { auto plater = wxGetApp().plater(); plater->take_snapshot(GUI::format("Simplify %1%", m_volume->name)); - plater->clear_before_change_mesh(object_idx); + const bool keep_painting = GUI::wxGetApp().app_config->get_bool("keep_painting"); + if (!keep_painting) { + plater->clear_before_change_mesh(object_idx); + } ModelVolume* mv = get_model_volume(selection, wxGetApp().model()); assert(mv == m_volume); + // Save paint + std::optional saved_painting = keep_painting ? mv->save_painting() : + std::optional{}; mv->set_mesh(std::move(*m_state.result)); + // Remap paint + mv->restore_painting(saved_painting); m_state.result.reset(); mv->calculate_convex_hull(); mv->invalidate_convex_hull_2d(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp b/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp index 3566bccf12..00d608b80a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoUtils.cpp @@ -26,6 +26,7 @@ - [Confirm], [Cancel], [Done], ... are buttons that close the Tool Dialog - [Reset], [Button1], ... are buttons that do not! - Non-consequential buttons like [Cancel] and [Done] are always the right-most buttons + - [Confirm] buttons should use the orca_button_style to differentiate them from other buttons - Multiple warnings can show, but should only have one ImGui::Separator above - If no warnings is shown, dont render the ImGui::Separator @@ -33,43 +34,101 @@ namespace Slic3r::GUI::GLGizmoUtils { -void render_tooltip_button( - ImGuiWrapper* imgui_wrapper, const GLCanvas3D& canvas, const std::vector>& shortcuts, float x, float y) -{ - float caption_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; - float caption_x_max = 0.f; - for (const auto& item : shortcuts) { - caption_x_max = std::max(caption_x_max, imgui_wrapper->calc_text_size(item.first).x); - } - caption_x_max += imgui_wrapper->calc_text_size(": "sv).x + 35.f; + void render_tooltip_button( + ImGuiWrapper* imgui_wrapper, const GLCanvas3D& canvas, const std::vector>& shortcuts, float x, float y) + { + float caption_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; + float caption_x_max = 0.f; + for (const auto& item : shortcuts) { + caption_x_max = std::max(caption_x_max, imgui_wrapper->calc_text_size(item.first).x); + } + caption_x_max += imgui_wrapper->calc_text_size(": "sv).x + 35.f; - auto& gizmos_manager = canvas.get_gizmos_manager(); - ImTextureID normal_id = gizmos_manager.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP); - ImTextureID hover_id = gizmos_manager.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP_HOVER); + auto& gizmos_manager = canvas.get_gizmos_manager(); + ImTextureID normal_id = gizmos_manager.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP); + ImTextureID hover_id = gizmos_manager.get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP_HOVER); - float scale = canvas.get_scale(); + float scale = canvas.get_scale(); #ifdef WIN32 - int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); - scale *= (float) dpi / (float) DPI_DEFAULT; + int dpi = get_dpi_for_window(wxGetApp().GetTopWindow()); + scale *= (float)dpi / (float)DPI_DEFAULT; #endif - ImVec2 button_size = ImVec2(25 * scale, 25 * scale); + ImVec2 button_size = ImVec2(25 * scale, 25 * scale); - ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, {0, 0}); + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, { 0, 0 }); - ImGui::ImageButton3(normal_id, hover_id, button_size); + ImGui::ImageButton3(normal_id, hover_id, button_size); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip2(ImVec2(x, caption_y)); - for (const auto& item : shortcuts) { - imgui_wrapper->text_colored(ImGuiWrapper::COL_ACTIVE, item.first + ": "); - ImGui::SameLine(caption_x_max); - imgui_wrapper->text_colored(ImGuiWrapper::COL_WINDOW_BG, item.second); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip2(ImVec2(x, caption_y)); + for (const auto& item : shortcuts) { + imgui_wrapper->text_colored(ImGuiWrapper::COL_ACTIVE, item.first + ": "); + ImGui::SameLine(caption_x_max); + imgui_wrapper->text_colored(ImGuiWrapper::COL_WINDOW_BG, item.second); + } + ImGui::EndTooltip(); } - ImGui::EndTooltip(); + ImGui::PopStyleVar(2); + } + + void begin_right_aligned_buttons(const std::vector& labels) + { + float total_width = 0.0f; + ImGuiStyle& style = ImGui::GetStyle(); + float spacing = style.ItemSpacing.x; + float padding = style.FramePadding.x * 2.0f; + + // Calculate width + for (size_t i = 0; i < labels.size(); ++i) { + total_width += ImGuiWrapper::calc_text_size(labels[i]).x + padding; + if (i < labels.size() - 1) + total_width += spacing; + } + + float avail = ImGui::GetContentRegionAvail().x; + + // Handle Overlap: If the total width of the buttons exceeds available space, move to a new line + if (total_width > avail) { + ImGui::NewLine(); + avail = ImGui::GetContentRegionAvail().x; // Reset to full window width + } + + float posX = ImGui::GetCursorPosX() + std::max(0.0f, avail - total_width); + ImGui::SetCursorPosX(posX); + } + + void push_orca_button_style() + { + ImVec4 base_orca = ImGuiWrapper::COL_ORCA; + + float h, s, v; + ImGui::ColorConvertRGBtoHSV(base_orca.x, base_orca.y, base_orca.z, h, s, v); + + ImVec4 hover, active; + + // Lighter variant for Hover (Increase Value by ~12%) + ImGui::ColorConvertHSVtoRGB(h, s, std::min(v + 0.12f, 1.0f), hover.x, hover.y, hover.z); + hover.w = base_orca.w; + + // Darker variant for Active (Decrease Value by ~12%) + ImGui::ColorConvertHSVtoRGB(h, s, std::max(v - 0.12f, 0.0f), active.x, active.y, active.z); + active.w = base_orca.w; + + ImGui::PushStyleColor(ImGuiCol_Button, base_orca); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, hover); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, active); + + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::COL_WINDOW_BG); + + ImGui::PushStyleVar(ImGuiStyleVar_FrameBorderSize, 0.0f); + } + + void pop_orca_button_style() + { + ImGui::PopStyleVar(1); + ImGui::PopStyleColor(4); } - ImGui::PopStyleVar(2); -} } // namespace Slic3r::GUI::GLGizmoUtils \ No newline at end of file diff --git a/src/slic3r/GUI/Gizmos/GLGizmoUtils.hpp b/src/slic3r/GUI/Gizmos/GLGizmoUtils.hpp index acdff4ddfe..1eed68b2cd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoUtils.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoUtils.hpp @@ -15,9 +15,16 @@ class GLCanvas3D; namespace GLGizmoUtils { -// Renders a tooltip button using the provided shortcuts -void render_tooltip_button( - ImGuiWrapper* imgui_wrapper, const GLCanvas3D& canvas, const std::vector>& shortcuts, float x, float y); + // Renders a tooltip button using the provided shortcuts + void render_tooltip_button( + ImGuiWrapper* imgui_wrapper, const GLCanvas3D& canvas, const std::vector>& shortcuts, float x, float y); + + // Sets up ImGui to render buttons that are right-aligned within the current window, using the provided labels to calculate spacing. + void begin_right_aligned_buttons(const std::vector& labels); + + void push_orca_button_style(); + + void pop_orca_button_style(); } // namespace GLGizmoUtils } // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp index c40bc7d0ad..5eb4f44280 100644 --- a/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp +++ b/src/slic3r/GUI/Gizmos/GizmoObjectManipulation.cpp @@ -62,16 +62,21 @@ GizmoObjectManipulation::GizmoObjectManipulation(GLCanvas3D& glcanvas) m_shortcuts_move = { {alt + _L("Left mouse button"), _L("Part selection")}, - {shift + _L("Left mouse button"), _L("Fixed step drag")} + {shift + _L("Left mouse button"), _L("Fixed step drag")}, + {_L("Context Menu"), _L("Toggle Auto-Drop")} }; m_shortcuts_rotate = { - {alt + _L("Left mouse button"), _L("Part selection")}}; + {alt + _L("Left mouse button"), _L("Part selection")}, + {_L("Context Menu"), _L("Toggle Auto-Drop")} + }; m_shortcuts_scale = { {alt + _L("Left mouse button"), _L("Part selection")}, {shift + _L("Left mouse button"), _L("Fixed step drag")}, - {ctrl + _L("Left mouse button"), _L("Single sided scaling")}}; + {ctrl + _L("Left mouse button"), _L("Single sided scaling")}, + {_L("Context Menu"), _L("Toggle Auto-Drop")} + }; } void GizmoObjectManipulation::UpdateAndShow(const bool show) @@ -860,13 +865,25 @@ void GizmoObjectManipulation::do_render_move_window(ImGuiWrapper *imgui_wrapper, } } if (!focued_on_text) m_glcanvas.handle_sidebar_focus_event("", false); - + + ImGui::Spacing(); + ImGui::Separator(); + ImGui::Spacing(); + float f_scale = m_glcanvas.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + GLGizmoUtils::render_tooltip_button(imgui_wrapper, m_glcanvas, m_shortcuts_move, x, y); + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); + if (imgui_wrapper->button(_L("Done"))) { + m_glcanvas.reset_all_gizmos(); + } + m_last_active_item = current_active_id; last_move_input_window_width = ImGui::GetWindowWidth(); imgui_wrapper->end(); - ImGui::PopStyleVar(1); + ImGui::PopStyleVar(2); ImGuiWrapper::pop_toolbar_style(); } @@ -1052,14 +1069,26 @@ void GizmoObjectManipulation::do_render_rotate_window(ImGuiWrapper *imgui_wrappe if (!focued_on_text && !absolute_focued_on_text) m_glcanvas.handle_sidebar_focus_event("", false); + ImGui::Spacing(); // needed after Text + ImGui::Separator(); + ImGui::Spacing(); + float f_scale = m_glcanvas.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + GLGizmoUtils::render_tooltip_button(imgui_wrapper, m_glcanvas, m_shortcuts_rotate, x, y); + + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); + if (imgui_wrapper->button(_L("Done"))) { + m_glcanvas.reset_all_gizmos(); + } m_last_active_item = current_active_id; last_rotate_input_window_width = ImGui::GetWindowWidth(); imgui_wrapper->end(); // BBS - ImGui::PopStyleVar(1); + ImGui::PopStyleVar(2); ImGuiWrapper::pop_toolbar_style(); } @@ -1214,7 +1243,7 @@ void GizmoObjectManipulation::do_render_scale_input_window(ImGuiWrapper* imgui_w if (display_size.x() > 0 && display_size.y() > 0 && display_size.z() > 0) { m_buffered_size = display_size; } - ImGui::Separator(); + ImGui::AlignTextToFramePadding(); bool is_avoid_one_update{false}; if (combox_changed) { @@ -1286,15 +1315,26 @@ void GizmoObjectManipulation::do_render_scale_input_window(ImGuiWrapper* imgui_w } if (!focued_on_text) m_glcanvas.handle_sidebar_focus_event("", false); + + ImGui::Separator(); + float f_scale = m_glcanvas.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); GLGizmoUtils::render_tooltip_button(imgui_wrapper, m_glcanvas, m_shortcuts_scale, x, y); + ImGui::SameLine(); + GLGizmoUtils::begin_right_aligned_buttons({ _L("Done") }); + if (imgui_wrapper->button(_L("Done"))) { + m_glcanvas.reset_all_gizmos(); + } + m_last_active_item = current_active_id; last_scale_input_window_width = ImGui::GetWindowWidth(); imgui_wrapper->end(); //BBS + ImGui::PopStyleVar(1); ImGuiWrapper::pop_toolbar_style(); } diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 85f59d31e5..7743ff8e00 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -185,6 +185,7 @@ const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG = { 250 / 255.f, 250 / 255.f, 2 const ImVec4 ImGuiWrapper::COL_TOOLBAR_BG_DARK = { 57 / 255.f, 60 / 255.f, 66 / 255.f, 1.f }; // ORCA color matches with toolbar_background_dark.png const ImVec4 ImGuiWrapper::COL_ORCA = to_ImVec4(ColorRGBA::ORCA()); const ImVec4 ImGuiWrapper::COL_MODIFIED = { 253.f / 255.f, 111.f / 255.f, 40.f / 255.f, 1}; // ORCA same color with m_color_label_modified +const ImVec4 ImGuiWrapper::COL_WARNING = to_ImVec4(ColorRGB::WARNING()); int ImGuiWrapper::TOOLBAR_WINDOW_FLAGS = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoMove @@ -871,8 +872,8 @@ bool ImGuiWrapper::button(const wxString &label, const wxString& tooltip) const bool ret = ImGui::Button(label_utf8.c_str()); if (!tooltip.IsEmpty() && ImGui::IsItemHovered()) { - auto tooltip_utf8 = into_u8(tooltip); - ImGui::SetTooltip(tooltip_utf8.c_str(), nullptr); + const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; + this->tooltip(tooltip, max_tooltip_width); } return ret; @@ -884,8 +885,8 @@ bool ImGuiWrapper::bbl_button(const wxString &label, const wxString& tooltip) const bool ret = ImGui::BBLButton(label_utf8.c_str()); if (!tooltip.IsEmpty() && ImGui::IsItemHovered()) { - auto tooltip_utf8 = into_u8(tooltip); - ImGui::SetTooltip(tooltip_utf8.c_str(), nullptr); + const float max_tooltip_width = ImGui::GetFontSize() * 20.0f; + this->tooltip(tooltip, max_tooltip_width); } return ret; @@ -1055,7 +1056,7 @@ void ImGuiWrapper::text(const wxString &label) void ImGuiWrapper::warning_text(const char *label) { - ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING())); + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::COL_WARNING); this->text(label); ImGui::PopStyleColor(); } diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index a2b8476c71..af92140379 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -349,6 +349,7 @@ public: static const ImVec4 COL_SEPARATOR_DARK; static const ImVec4 COL_ORCA; static const ImVec4 COL_MODIFIED; + static const ImVec4 COL_WARNING; //BBS static void on_change_color_mode(bool is_dark); @@ -372,12 +373,13 @@ public: //BBS static int TOOLBAR_WINDOW_FLAGS; + bool display_initialized() const; + private: void init_font(bool compress); void init_input(); void init_style(); void render_draw_data(ImDrawData *draw_data); - bool display_initialized() const; void destroy_font(); std::vector load_svg(const std::string& bitmap_name, unsigned target_width, unsigned target_height, unsigned *outwidth, unsigned *outheight); diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp index 2b845385e7..3e0ef64e55 100644 --- a/src/slic3r/GUI/KBShortcutsDialog.cpp +++ b/src/slic3r/GUI/KBShortcutsDialog.cpp @@ -207,13 +207,19 @@ void KBShortcutsDialog::fill_shortcuts() { "?", L("Show keyboard shortcuts list") } }; m_full_shortcuts.push_back({{_L("Global shortcuts"), ""}, global_shortcuts}); + - bool swap_mouse_buttons = wxGetApp().app_config->get_bool("swap_mouse_buttons"); + // Retrieve mouse actions from config and map to MouseAction + std::map mouse_actions; + mouse_actions["0"] = L("None"); + mouse_actions["1"] = L("Pan View"); + mouse_actions["2"] = L("Rotate View"); Shortcuts plater_shortcuts = { - { L("Left mouse button"), swap_mouse_buttons ? L("Pan view") : L("Rotate view") }, - { L("Right mouse button"), swap_mouse_buttons ? L("Rotate view") : L("Pan view") }, - { L("Mouse wheel"), L("Zoom view") }, + { L("Left mouse button"), mouse_actions[wxGetApp().app_config->get("left_mouse_drag_action").c_str()]}, + { L("Middle mouse button"), mouse_actions[wxGetApp().app_config->get("middle_mouse_drag_action").c_str()]}, + { L("Right mouse button"), mouse_actions[wxGetApp().app_config->get("right_mouse_drag_action").c_str()]}, + { L("Mouse wheel"), L("Zoom View") }, { "A", L("Arrange all objects") }, { shift + "A", L("Arrange objects on selected plates") }, diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 617b63fa34..fce7c29896 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2780,6 +2780,21 @@ void MainFrame::init_menubar_as_editor() append_submenu(fileMenu, export_menu, wxID_ANY, _L("Export"), ""); fileMenu->AppendSeparator(); + append_menu_item(fileMenu, wxID_ANY, _L("Sync Presets"), _L("Pull and apply the latest presets from OrcaCloud"), + [this](wxCommandEvent&) { + if (!wxGetApp().is_user_login()) { + MessageDialog info_dlg(this, _L("You must be logged in to sync presets from cloud."), + _L("Sync Presets"), wxOK | wxICON_INFORMATION); + info_dlg.ShowModal(); + return; + } + wxGetApp().restart_sync_user_preset(); + }, "", nullptr, + [this]() { + return wxGetApp().is_user_login() && !wxGetApp().app_config->get_stealth_mode(); + }, this); + + fileMenu->AppendSeparator(); #ifndef __APPLE__ append_menu_item(fileMenu, wxID_EXIT, _L("Quit"), wxString::Format(_L("Quit")), @@ -3277,6 +3292,25 @@ void MainFrame::init_menubar_as_editor() plater()->get_current_canvas3D()->force_set_focus(); }, "", nullptr, []() { return true; }, this); + + append_menu_item( + m_topbar->GetTopMenu(), wxID_ANY, _L("Sync Presets"), _L("Pull and apply the latest presets from OrcaCloud"), + [this](wxCommandEvent&) { + if (!wxGetApp().is_user_login()) { + MessageDialog info_dlg(this, _L("You must be logged in to sync presets from cloud."), + _L("Sync Presets"), wxOK | wxICON_INFORMATION); + info_dlg.ShowModal(); + return; + } + if (m_plater) + m_plater->get_notification_manager()->push_notification( + into_u8(_L("Syncing presets from cloud\u2026"))); + wxGetApp().restart_sync_user_preset(); + }, "", nullptr, + [this]() { + return wxGetApp().is_user_login() && !wxGetApp().app_config->get_stealth_mode(); + }, this); + //m_topbar->AddDropDownMenuItem(preference_item); //m_topbar->AddDropDownMenuItem(printer_item); //m_topbar->AddDropDownMenuItem(language_item); diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 0a6902e11d..3478c91fa6 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -184,7 +184,7 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj) && m_last_user_play + wxTimeSpan::Seconds(3) < wxDateTime::Now()) { // resend ttcode to printer if (auto agent = wxGetApp().getAgent()) - agent->get_camera_url(machine, [](auto) {}); + agent->get_camera_url(machine, [](auto) {}, wxGetApp().get_printer_cloud_provider()); m_last_user_play = wxDateTime::Now(); } return; @@ -252,7 +252,7 @@ void refresh_agora_url(char const* device, char const* dev_ver, char const* chan device2 += channel; wxGetApp().getAgent()->get_camera_url(device2, [context, callback](std::string url) { callback(context, url.c_str()); - }); + }, wxGetApp().get_printer_cloud_provider()); } void MediaPlayCtrl::Play() @@ -378,7 +378,7 @@ void MediaPlayCtrl::Play() BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl drop late ttcode for state: " << m_last_state; } }); - }); + }, wxGetApp().get_printer_cloud_provider()); } } @@ -580,7 +580,7 @@ void MediaPlayCtrl::ToggleStream() file.close(); m_streaming = true; }); - }); + }, wxGetApp().get_printer_cloud_provider()); } void MediaPlayCtrl::msw_rescale() { diff --git a/src/slic3r/GUI/MultiChoiceDialog.cpp b/src/slic3r/GUI/MultiChoiceDialog.cpp new file mode 100644 index 0000000000..6bd5412737 --- /dev/null +++ b/src/slic3r/GUI/MultiChoiceDialog.cpp @@ -0,0 +1,58 @@ +#include "MultiChoiceDialog.hpp" + +#include "GUI_App.hpp" +#include "MainFrame.hpp" + +namespace Slic3r { namespace GUI { + +MultiChoiceDialog::MultiChoiceDialog( + wxWindow* parent, + const wxString& message, + const wxString& caption, + const wxArrayString& choices +) + : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, caption, wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) +{ + SetBackgroundColour(*wxWHITE); + + wxBoxSizer* w_sizer = new wxBoxSizer(wxVERTICAL); + + if(!message.IsEmpty()){ + wxStaticText *msg = new wxStaticText(this, wxID_ANY, message); + msg->SetFont(Label::Body_13); + msg->Wrap(-1); + w_sizer->Add(msg, 0, wxRIGHT | wxLEFT | wxTOP, FromDIP(10)); + } + + m_check_list = new CheckList(this, choices); + + w_sizer->Add(m_check_list, 1, wxRIGHT | wxLEFT | wxTOP | wxEXPAND, FromDIP(10)); + + auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); + + dlg_btns->GetOK()->Bind( wxEVT_BUTTON, [this](wxCommandEvent &e) {EndModal(wxID_OK);}); + dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {EndModal(wxID_CANCEL);}); + + w_sizer->Add(dlg_btns, 0, wxEXPAND); + + SetSizer(w_sizer); + Layout(); + w_sizer->Fit(this); + wxGetApp().UpdateDlgDarkUI(this); +} + +wxArrayInt MultiChoiceDialog::GetSelections() const +{ + return m_check_list->GetSelections(); +} + +void MultiChoiceDialog::SetSelections(wxArrayInt sel_array) +{ + m_check_list->SetSelections(sel_array); +} + +MultiChoiceDialog::~MultiChoiceDialog() {} + +void MultiChoiceDialog::on_dpi_changed(const wxRect &suggested_rect) {} + +}} // namespace Slic3r::GUI \ No newline at end of file diff --git a/src/slic3r/GUI/MultiChoiceDialog.hpp b/src/slic3r/GUI/MultiChoiceDialog.hpp new file mode 100644 index 0000000000..f636bebd3b --- /dev/null +++ b/src/slic3r/GUI/MultiChoiceDialog.hpp @@ -0,0 +1,37 @@ +#ifndef slic3r_GUI_MultiChoiceDialog_hpp_ +#define slic3r_GUI_MultiChoiceDialog_hpp_ + +#include "Widgets/CheckList.hpp" +#include "Widgets/DialogButtons.hpp" + +#include +#include +#include + + +namespace Slic3r { namespace GUI { + +class MultiChoiceDialog : public DPIDialog +{ +public: + MultiChoiceDialog( + wxWindow* parent = nullptr, + const wxString& message = wxEmptyString, + const wxString& caption = wxEmptyString, + const wxArrayString& choices = wxArrayString() + ); + ~MultiChoiceDialog(); + + wxArrayInt GetSelections() const; + + void SetSelections(wxArrayInt sel_array); + +protected: + CheckList* m_check_list; + wxArrayInt m_selected_indices; + void on_dpi_changed(const wxRect &suggested_rect) override; +}; + +}} // namespace Slic3r::GUI + +#endif \ No newline at end of file diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index ed4ad60f55..7944718e59 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -332,12 +332,16 @@ bool ObjectDataViewModelNode::SetValue(const wxVariant& variant, unsigned col) m_variable_height_icon << variant; return true; case colName: { + if (variant.GetType() != wxT("DataViewBitmapText")) + return false; DataViewBitmapText data; data << variant; m_bmp = data.GetBitmap(); m_name = data.GetText(); return true; } case colFilament: { + if (variant.GetType() != wxT("DataViewBitmapText")) + return false; DataViewBitmapText data; data << variant; m_extruder_bmp = data.GetBitmap(); diff --git a/src/slic3r/GUI/OpenGLManager.cpp b/src/slic3r/GUI/OpenGLManager.cpp index 638b8b01f5..2b5ebcd086 100644 --- a/src/slic3r/GUI/OpenGLManager.cpp +++ b/src/slic3r/GUI/OpenGLManager.cpp @@ -5,6 +5,7 @@ #include "I18N.hpp" #include "3DScene.hpp" +#include "libslic3r/AppConfig.hpp" #include "libslic3r/Platform.hpp" #include @@ -408,6 +409,13 @@ wxGLContext* OpenGLManager::init_glcontext(wxGLCanvas& canvas, const std::pairget(SETTING_OPENGL_AA_SAMPLES); + if (value == "0" || value == "2" || value == "4" || value == "8" || value == "16") + antialiasing_samples = ::atoi(value.c_str()); + } + int attribList[] = { WX_GL_RGBA, WX_GL_DOUBLEBUFFER, @@ -421,19 +429,26 @@ wxGLCanvas* OpenGLManager::create_wxglcanvas(wxWindow& parent) WX_GL_DEPTH_SIZE, 24, //BBS: turn on stencil buffer for outline WX_GL_STENCIL_SIZE, 8, - WX_GL_SAMPLE_BUFFERS, GL_TRUE, - WX_GL_SAMPLES, 4, + WX_GL_SAMPLE_BUFFERS, antialiasing_samples > 0 ? GL_TRUE : GL_FALSE, + WX_GL_SAMPLES, antialiasing_samples, 0 }; - if (s_multisample == EMultisampleState::Unknown) { + constexpr int sample_buffers_value_idx = 15; + constexpr int samples_value_idx = 17; + + if (antialiasing_samples <= 0) + s_multisample = EMultisampleState::Disabled; + else if (s_multisample == EMultisampleState::Unknown) { detect_multisample(attribList); // // debug output // std::cout << "Multisample " << (can_multisample() ? "enabled" : "disabled") << std::endl; } - if (! can_multisample()) - attribList[12] = 0; + if (! can_multisample()) { + attribList[sample_buffers_value_idx] = GL_FALSE; + attribList[samples_value_idx] = 0; + } wxGLCanvas* canvas = new wxGLCanvas(&parent, wxID_ANY, attribList, wxDefaultPosition, wxDefaultSize, wxWANTS_CHARS); // The GL canvas paints its entire surface, so background erasing is unnecessary. diff --git a/src/slic3r/GUI/ParamsPanel.cpp b/src/slic3r/GUI/ParamsPanel.cpp index 2c18edfaeb..d612b56298 100644 --- a/src/slic3r/GUI/ParamsPanel.cpp +++ b/src/slic3r/GUI/ParamsPanel.cpp @@ -279,9 +279,12 @@ ParamsPanel::ParamsPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, c }); m_mode_icon->SetToolTip(_L("Cycle settings visibility")); m_mode_view = new ModeSwitchButton(m_top_panel); - m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); - if (wxGetApp().get_mode() == comDevelop) + if (wxGetApp().get_mode() == comDevelop) { + m_mode_view->SetSelection(mode_to_selection(comExpert)); m_mode_view->Enable(false); + } else { + m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); + } // BBS: new layout //m_search_btn = new ScalableButton(m_top_panel, wxID_ANY, "search", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true); @@ -648,18 +651,27 @@ void ParamsPanel::update_mode() if (mode_view == nullptr) return; - mode_view->SetSelection(mode_to_selection(Slic3r::GUI::wxGetApp().get_saved_mode())); if (app_mode == comDevelop) { + mode_view->SetSelection(mode_to_selection(comExpert)); mode_view->Enable(false); return; } + mode_view->SetSelection(mode_to_selection(Slic3r::GUI::wxGetApp().get_saved_mode())); if (!mode_view->IsEnabled()) mode_view->Enable(); }; sync_mode_view(m_mode_view); sync_mode_view(m_current_tab ? dynamic_cast(m_current_tab)->m_mode_view : nullptr); + + auto sync_mode_icon = [&](ScalableButton* mode_icon) { + if (mode_icon == nullptr) + return; + mode_icon->Show(app_mode != comDevelop); + }; + sync_mode_icon(m_mode_icon); + sync_mode_icon(m_current_tab ? dynamic_cast(m_current_tab)->m_mode_icon : nullptr); } void ParamsPanel::msw_rescale() diff --git a/src/slic3r/GUI/PartSkipDialog.cpp b/src/slic3r/GUI/PartSkipDialog.cpp index 12a794cfe2..87d8b714b6 100644 --- a/src/slic3r/GUI/PartSkipDialog.cpp +++ b/src/slic3r/GUI/PartSkipDialog.cpp @@ -824,7 +824,7 @@ bool PartSkipDialog::IsAllChecked() return true; } -bool PartSkipDialog::IsAllCancled() +bool PartSkipDialog::IsAllCanceled() { for (auto &[part_id, part_state] : m_parts_state) { if (part_state == PartState::psChecked) return false; @@ -851,7 +851,7 @@ void PartSkipDialog::OnAllCheckbox(wxCommandEvent &event) void PartSkipDialog::UpdateApplyButtonStatus() { - if (IsAllCancled()) { + if (IsAllCanceled()) { m_apply_btn->SetStyle(ButtonStyle::Regular, ButtonType::Choice); m_apply_btn->SetToolTip(_L("Nothing selected")); m_enable_apply_btn = false; diff --git a/src/slic3r/GUI/PartSkipDialog.hpp b/src/slic3r/GUI/PartSkipDialog.hpp index 4f0b5bf07f..95eba9f24d 100644 --- a/src/slic3r/GUI/PartSkipDialog.hpp +++ b/src/slic3r/GUI/PartSkipDialog.hpp @@ -153,7 +153,7 @@ private: void UpdateDialogUI(); void UpdateApplyButtonStatus(); bool IsAllChecked(); - bool IsAllCancled(); + bool IsAllCanceled(); void OnRetryButton(wxCommandEvent &event); void OnAllCheckbox(wxCommandEvent &event); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d3e2d97f08..19a9c44a9b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2406,13 +2406,23 @@ void Sidebar::init_filament_combo(PlaterPresetComboBox **combo, const int filame edit_btn->SetToolTip(_L("Click to edit preset")); PlaterPresetComboBox* combobox = (*combo); - edit_btn->Bind(wxEVT_BUTTON, [this, edit_btn, filament_idx](wxCommandEvent) { - auto menu = p->plater->filament_action_menu(filament_idx); - wxPoint pt { 0, edit_btn->GetSize().GetHeight() + 10 }; - pt = edit_btn->ClientToScreen(pt); - pt = wxGetApp().mainframe->ScreenToClient(pt); - p->m_menu_filament_id = filament_idx; - p->plater->PopupMenu(menu, (int) pt.x, pt.y); + edit_btn->Bind(wxEVT_BUTTON, [this, edit_btn, combobox, filament_idx](wxCommandEvent) { + bool single_or_bbl = should_show_SEMM_buttons(); + bool is_multi_material = p->combos_filament.size() > 1; + if(single_or_bbl && is_multi_material) { + // MULTI MATERIAL Show menu + auto menu = p->plater->filament_action_menu(filament_idx); + wxPoint pt { 0, edit_btn->GetSize().GetHeight() + FromDIP(2) }; + pt = edit_btn->ClientToScreen(pt); + pt = wxGetApp().mainframe->ScreenToClient(pt); + p->m_menu_filament_id = filament_idx; + p->plater->PopupMenu(menu, (int) pt.x, pt.y); + } + else { + // SINGLE MATERIAL / MULTI EXTRUDER / TOOLCHANGER / IDEX Opens Dialog directly + p->editing_filament = filament_idx; + combobox->switch_to_tab(); + } }); combobox->edit_btn = edit_btn; @@ -2513,7 +2523,7 @@ void Sidebar::update_all_preset_comboboxes() p->m_filament_icon->SetBitmap_("filament"); } - show_SEMM_buttons(should_show_SEMM_buttons()); + show_SEMM_buttons(); //p->m_staticText_filament_settings->Update(); @@ -3115,16 +3125,7 @@ void Sidebar::on_filament_count_change(size_t num_filaments) // remove unused choices if any remove_unused_filament_combos(num_filaments); - auto sizer = p->m_panel_filament_title->GetSizer(); - if (p->m_flushing_volume_btn != nullptr && sizer != nullptr) { - if (num_filaments > 1) { - sizer->Show(p->m_flushing_volume_btn); - sizer->Show(p->m_bpButton_del_filament); // ORCA: Show delete filament button if multiple filaments - } else { - sizer->Hide(p->m_flushing_volume_btn); - sizer->Hide(p->m_bpButton_del_filament); // ORCA: Hide delete filament button if there is only one filament - } - } + show_SEMM_buttons(); // ORCA update_filaments_area_height(); // ORCA @@ -3171,16 +3172,7 @@ void Sidebar::on_filaments_delete(size_t filament_id) } } - auto sizer = p->m_panel_filament_title->GetSizer(); - if (p->m_flushing_volume_btn != nullptr && sizer != nullptr) { - if (p->combos_filament.size() > 1) { - sizer->Show(p->m_flushing_volume_btn); - sizer->Show(p->m_bpButton_del_filament); // ORCA: Show delete filament button if multiple filaments - } else { - sizer->Hide(p->m_flushing_volume_btn); - sizer->Hide(p->m_bpButton_del_filament); // ORCA: Hide delete filament button if there is only one filament - } - } + show_SEMM_buttons(); // ORCA for (size_t idx = filament_id ; idx < p->combos_filament.size(); ++idx) { p->combos_filament[idx]->update(); @@ -3739,14 +3731,31 @@ bool Sidebar::should_show_SEMM_buttons() return cfg.opt_bool("single_extruder_multi_material") || is_bbl_vendor; } -void Sidebar::show_SEMM_buttons(bool bshow) +void Sidebar::show_SEMM_buttons() { - if(p->m_bpButton_add_filament) - p->m_bpButton_add_filament->Show(bshow); - if (p->m_bpButton_del_filament && p->combos_filament.size() > 1) // ORCA add filament count as condition to prevent showing Flushing volumes and Del Filament icon visible while only 1 filament exist - p->m_bpButton_del_filament->Show(bshow); - if (p->m_flushing_volume_btn && p->combos_filament.size() > 1) // ORCA add filament count as condition to prevent showing Flushing volumes and Del Filament icon visible while only 1 filament exist - p->m_flushing_volume_btn->Show(bshow); + // ORCA + if (!p || p->combos_filament.empty() || !p->m_bpButton_add_filament || !p->m_bpButton_del_filament || !p->m_flushing_volume_btn) + return; + + bool is_multi_material = p->combos_filament.size() > 1; + bool single_or_bbl = should_show_SEMM_buttons(); + bool is_single = single_or_bbl && !is_multi_material; // SINGLE EXTRUDER / BBL WITH 1 MATERIAL + bool is_multi = single_or_bbl && is_multi_material; // MULTI MATERIAL WITH SINGLE EXTRUDER + bool is_fixed = !is_single && !is_multi; // MULTI EXTRUDER / TOOLCHANGER / IDEX WITH FIXED MATERIAL + + p->m_bpButton_add_filament->Show(single_or_bbl); + p->m_bpButton_del_filament->Show(is_multi); + p->m_flushing_volume_btn->Show( is_multi); + + if (is_multi) { + for (auto &c : p->combos_filament) + c->edit_btn->SetBitmap_("menu_filament"); + } + else if (is_single || is_fixed) { + for (auto &c : p->combos_filament) + c->edit_btn->SetBitmap_("edit"); + } + Layout(); } @@ -6845,12 +6854,12 @@ std::vector Plater::priv::load_files(const std::vector& input_ double preset_nozzle_diameter = 0.4; const ConfigOption *opt = printer_preset.config.option("nozzle_diameter"); if (opt) preset_nozzle_diameter = static_cast(opt)->values[0]; - float machine_nozzle_diameter = obj->GetExtderSystem()->GetNozzleDiameter(0); std::string machine_type = obj->printer_type; if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit) machine_type = "C12"; - if (printer_preset.get_current_printer_type(preset_bundle) != machine_type || !is_approx((float) preset_nozzle_diameter, machine_nozzle_diameter)) { + bool nozzle_mismatch = !obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(0, (float) preset_nozzle_diameter); + if (printer_preset.get_current_printer_type(preset_bundle) != machine_type || nozzle_mismatch) { Preset *machine_preset = get_printer_preset(obj); if (machine_preset != nullptr) { std::string printer_model = machine_preset->config.option("printer_model")->value; @@ -7631,7 +7640,7 @@ void Plater::priv::split_object(int obj_idx, bool auto_drop /* = true */) wxBusyCursor wait; ModelObjectPtrs new_objects; - current_model_object->split(&new_objects); + current_model_object->split(&new_objects, wxGetApp().app_config->get_bool("keep_painting")); if (new_objects.size() == 1) // #ysFIXME use notification Slic3r::GUI::warning_catcher(q, _L("The selected object couldn't be split.")); @@ -8395,10 +8404,20 @@ bool Plater::priv::replace_volume_with_stl(int object_idx, int volume_idx, const new_volume->convert_from_imperial_units(); else if (old_volume->source.is_converted_from_meters) new_volume->convert_from_meters(); - new_volume->supported_facets.assign(old_volume->supported_facets); - new_volume->seam_facets.assign(old_volume->seam_facets); - new_volume->mmu_segmentation_facets.assign(old_volume->mmu_segmentation_facets); - new_volume->fuzzy_skin_facets.assign(old_volume->fuzzy_skin_facets); + if (wxGetApp().app_config->get_bool("keep_painting")) { + // Proper paint remapping + auto saved_painting = old_volume->save_painting(); + if (saved_painting) { + saved_painting->mesh.transform(Geometry::translation_transform(new_volume->mesh().get_init_shift())); + new_volume->restore_painting(saved_painting); + } + } else { + // Won't work well if mesh changed, but kept for old behavior + new_volume->supported_facets.assign(old_volume->supported_facets); + new_volume->seam_facets.assign(old_volume->seam_facets); + new_volume->mmu_segmentation_facets.assign(old_volume->mmu_segmentation_facets); + new_volume->fuzzy_skin_facets.assign(old_volume->fuzzy_skin_facets); + } std::swap(old_model_object->volumes[volume_idx], old_model_object->volumes.back()); old_model_object->delete_volume(old_model_object->volumes.size() - 1); if (!sinking) @@ -8924,6 +8943,16 @@ void Plater::priv::reload_from_disk() new_volume->convert_from_imperial_units(); else if (old_volume->source.is_converted_from_meters) new_volume->convert_from_meters(); + + // Remap paint + if (wxGetApp().app_config->get_bool("keep_painting")) { + auto saved_painting = old_volume->save_painting(); + if (saved_painting) { + saved_painting->mesh.transform(Geometry::translation_transform(new_volume->mesh().get_init_shift())); + new_volume->restore_painting(saved_painting); + } + } + std::swap(old_model_object->volumes[vol_idx], old_model_object->volumes.back()); old_model_object->delete_volume(old_model_object->volumes.size() - 1); if (!sinking) old_model_object->ensure_on_bed(); @@ -9557,7 +9586,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) const auto& extruders = obj->GetExtderSystem()->GetExtruders(); for (const DevExtder &extruder : extruders) { - if (!is_approx(extruder.GetNozzleDiameter(), float(preset_nozzle_diameter))) { + if (!obj->GetExtderSystem()->NozzleDiameterMatchesOrUnknown(extruder.GetExtId(), float(preset_nozzle_diameter))) { same_nozzle_diameter = false; } } @@ -15026,7 +15055,8 @@ void Plater::export_gcode(bool prefer_removable) unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(""); + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); } catch (const Slic3r::PlaceholderParserError &ex) { // Show the error with monospaced font. show_error(this, ex.what(), true); @@ -15129,7 +15159,8 @@ void Plater::export_gcode_3mf(bool export_all) unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(""); + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); } catch (const Slic3r::PlaceholderParserError& ex) { // Show the error with monospaced font. @@ -15327,7 +15358,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st } if (instance_id == -1) { - TriangleMesh vols_mesh(mesh); + TriangleMesh vols_mesh(std::move(mesh)); mesh = TriangleMesh(); for (const ModelInstance* i : mo.instances) { TriangleMesh m = vols_mesh; @@ -16276,7 +16307,8 @@ void Plater::send_gcode_legacy(int plate_idx, Export3mfProgressFn proFn, bool us unsigned int state = this->p->update_restart_background_process(false, false); if (state & priv::UPDATE_BACKGROUND_PROCESS_INVALID) return; - default_output_file = this->p->background_process.output_filepath_for_project(""); + default_output_file = this->p->background_process.output_filepath_for_project( + into_path(this->p->get_project_filename(".3mf"))); } catch (const Slic3r::PlaceholderParserError& ex) { // Show the error with monospaced font. show_error(this, ex.what(), true); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index d35a68dc7f..ecb30d24ff 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -203,7 +203,7 @@ public: void get_small_btn_sync_pos_size(wxPoint &pt, wxSize &size); // Orca static bool should_show_SEMM_buttons(); - void show_SEMM_buttons(bool bshow); + void show_SEMM_buttons(); void update_dynamic_filament_list(); PlaterPresetComboBox * printer_combox(); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index bf1c69a7c0..206549cf17 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -114,7 +114,8 @@ wxBoxSizer *PreferencesDialog::create_item_combobox(wxString title, wxString too if (!current_setting.empty()) { auto compare = [current_setting](string possible_setting) { return current_setting == possible_setting; }; auto iterator = find_if(config_name_index.begin(), config_name_index.end(), compare); - current_index = iterator - config_name_index.begin(); + if (iterator != config_name_index.end()) + current_index = static_cast(iterator - config_name_index.begin()); } auto [sizer, combobox] = create_item_combobox_base(title, tooltip, param, vlist, current_index); @@ -968,7 +969,7 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxString too if (m_bambu_cloud_checkbox) m_bambu_cloud_checkbox->Enable(!enabled); } - #ifdef __WXMSW__ +#ifdef __WXMSW__ if (param == "associate_3mf") { bool pbool = app_config->get("associate_3mf") == "true" ? true : false; if (pbool) { @@ -1499,12 +1500,17 @@ void PreferencesDialog::create_items() auto item_use_free_camera = create_item_checkbox(_L("Use free camera"), _L("If enabled, use free camera. If not enabled, use constrained camera."), "use_free_camera"); g_sizer->Add(item_use_free_camera); - auto swap_pan_rotate = create_item_checkbox(_L("Swap pan and rotate mouse buttons"), _L("If enabled, swaps the left and right mouse buttons pan and rotate functions."), "swap_mouse_buttons"); - g_sizer->Add(swap_pan_rotate); - auto reverse_mouse_zoom = create_item_checkbox(_L("Reverse mouse zoom"), _L("If enabled, reverses the direction of zoom with mouse wheel."), "reverse_mouse_wheel_zoom"); g_sizer->Add(reverse_mouse_zoom); + std::vector ButtonDragActions = {_L("None"), _L("Pan"), _L("Rotate")}; + auto item_left_mouse_drag = create_item_combobox(_L("Left Mouse Drag"), _L("Set the action that dragging the left mouse button should perform."), "left_mouse_drag_action", ButtonDragActions); + g_sizer->Add(item_left_mouse_drag); + auto item_middle_mouse_drag = create_item_combobox(_L("Middle Mouse Drag"), _L("Set the action that dragging the middle mouse button should perform."), "middle_mouse_drag_action", ButtonDragActions); + g_sizer->Add(item_middle_mouse_drag); + auto item_right_mouse_drag = create_item_combobox(_L("Right Mouse Drag"), _L("Set the action that dragging the right mouse button should perform."), "right_mouse_drag_action", ButtonDragActions); + g_sizer->Add(item_right_mouse_drag); + //// CONTROL > Clear my choice on ... g_sizer->Add(create_item_title(_L("Clear my choice on...")), 1, wxEXPAND); @@ -1526,6 +1532,64 @@ void PreferencesDialog::create_items() g_sizer->AddSpacer(FromDIP(10)); sizer_page->Add(g_sizer, 0, wxEXPAND); + ////////////////////////// + //// GRAPHICS TAB + ///////////////////////////////////// + m_pref_tabs->AppendItem(_L("Graphics")); + f_sizers.push_back(new wxFlexGridSizer(1, 1, v_gap, 0)); + g_sizer = f_sizers.back(); + g_sizer->AddGrowableCol(0, 1); + + //// GRAPHICS > Anti-aliasing + g_sizer->Add(create_item_title(_L("Anti-aliasing")), 1, wxEXPAND); + + auto item_antialiasing = create_item_combobox( + _L("MSAA Multiplier"), + _L("Set the Multi-Sample Anti-Aliasing level.\n" + "Higher values result in smoother edges, but the impact on performance is exponential.\n" + "Lower values improve performance, at the cost of jagged edges.\n" + "If disabled, its recommended to enable FXAA to reduce jagged edges with minimal performance impact.\n\n" + "Requires application restart."), + SETTING_OPENGL_AA_SAMPLES, + {_L("Disabled"), "2x", "4x", "8x", "16x"}, + {"0", "2", "4", "8", "16"} + ); + g_sizer->Add(item_antialiasing); + + auto item_fxaa = create_item_checkbox( + _L("FXAA post-processing"), + _L("Applies Fast Approximate Anti-Aliasing as a screen-space pass.\n" + "Useful for disabling or reducing the MSAA setting to improve performance.\n\n" + "Takes effect immediately."), + SETTING_OPENGL_FXAA_ENABLED + ); + g_sizer->Add(item_fxaa); + + //// GRAPHICS > FPS + g_sizer->Add(create_item_title(_L("FPS")), 1, wxEXPAND); + + auto item_fps_cap = create_item_spinctrl( + _L("FPS cap"), + _L("(0 = unlimited)"), + _L("FPS"), + _L("Limits viewport frame rate to reduce GPU load and power usage.\n" + "Set to 0 for unlimited frame rate."), + SETTING_OPENGL_FPS_CAP, + 0, + 240 + ); + g_sizer->Add(item_fps_cap); + + auto item_fps_overlay = create_item_checkbox( + _L("Show FPS overlay"), + _L("Displays current viewport FPS in the top-right corner."), + SETTING_OPENGL_SHOW_FPS_OVERLAY + ); + g_sizer->Add(item_fps_overlay); + + g_sizer->AddSpacer(FromDIP(10)); + sizer_page->Add(g_sizer, 0, wxEXPAND); + ////////////////////////// //// ONLINE TAB ///////////////////////////////////// @@ -1794,6 +1858,9 @@ void PreferencesDialog::create_items() auto item_ams_blacklist = create_item_checkbox(_L("Skip AMS blacklist check"), "", "skip_ams_blacklist_check"); g_sizer->Add(item_ams_blacklist); + auto item_keep_painting = create_item_checkbox(_L("(Experimental) Keep painted feature after mesh change"), _L("Attempt to keep painted features (color/seam/support/fuzzy etc.) after changing the object mesh (such as cut/reload from disk/simplify/fix etc.)\nHighly experimental! Slow and may create artifact."), "keep_painting"); + g_sizer->Add(item_keep_painting); + g_sizer->Add(create_item_title(_L("Storage")), 1, wxEXPAND); auto item_allow_abnormal_storage = create_item_checkbox(_L("Allow Abnormal Storage"), _L("This allows the use of Storage that is marked as abnormal by the Printer.\nUse at your own risk, can cause issues!"), "allow_abnormal_storage"); g_sizer->Add(item_allow_abnormal_storage); diff --git a/src/slic3r/GUI/PrinterWebView.cpp b/src/slic3r/GUI/PrinterWebView.cpp index 1dccfab66f..6c20e98ce6 100644 --- a/src/slic3r/GUI/PrinterWebView.cpp +++ b/src/slic3r/GUI/PrinterWebView.cpp @@ -23,6 +23,81 @@ namespace Slic3r { namespace GUI { +#ifdef __linux__ +// Workaround for #7210: WebKitGTK crashes on vue-resize's hidden probe used by +// older Fluidd/Mainsail pages. Swap that for a
shim at appendChild time +// and bridge resize events through a fake contentDocument.defaultView so vue-resize keeps +// working. Workaround proposed by @VittC. +static void inject_vue_resize_workaround(wxWebView *webView) +{ + webView->AddUserScript( + "(function() {" + " 'use strict';" + " function isVueResizeObject(el) {" + " return el && el.tagName === 'OBJECT'" + " && el.type === 'text/html'" + " && el.getAttribute('aria-hidden') === 'true'" + " && el.getAttribute('tabindex') === '-1';" + " }" + " function isResizeObserverParent(p) {" + " return p && p.classList && p.classList.contains('resize-observer');" + " }" + " function makeShim(orig, parentForRO) {" + " var shim = document.createElement('div');" + " shim.setAttribute('aria-hidden', 'true');" + " shim.setAttribute('tabindex', '-1');" + " shim.style.display = 'none';" + " var fakeWin = document.createElement('div');" + " var ro = null;" + " var origRemoveEL = fakeWin.removeEventListener.bind(fakeWin);" + " fakeWin.removeEventListener = function(type, fn, opts) {" + " origRemoveEL(type, fn, opts);" + " if (type === 'resize' && ro) { ro.disconnect(); ro = null; }" + " };" + " Object.defineProperty(shim, 'contentDocument', {" + " configurable: true," + " get: function() { return { defaultView: fakeWin }; }" + " });" + " Object.defineProperty(shim, 'contentWindow', {" + " configurable: true," + " get: function() { return fakeWin; }" + " });" + " if (typeof orig.onload === 'function') { shim.onload = orig.onload; }" + " queueMicrotask(function() {" + " if (parentForRO && typeof ResizeObserver !== 'undefined') {" + " ro = new ResizeObserver(function() {" + " fakeWin.dispatchEvent(new Event('resize'));" + " });" + " ro.observe(parentForRO);" + " }" + " if (typeof shim.onload === 'function') {" + " try { shim.onload(new Event('load')); } catch (e) {}" + " }" + " shim.dispatchEvent(new Event('load'));" + " });" + " return shim;" + " }" + " var origAppend = Node.prototype.appendChild;" + " Node.prototype.appendChild = function(child) {" + " if (isResizeObserverParent(this) && isVueResizeObject(child)) {" + " return origAppend.call(this, makeShim(child, this));" + " }" + " return origAppend.call(this, child);" + " };" + " var origInsertBefore = Node.prototype.insertBefore;" + " Node.prototype.insertBefore = function(child, ref) {" + " if (isResizeObserverParent(this) && isVueResizeObject(child)) {" + " return origInsertBefore.call(this, makeShim(child, this), ref);" + " }" + " return origInsertBefore.call(this, child, ref);" + " };" + " console.log('[vr-fix] vue-resize WebKitGTK patch active');" + "})();", + wxWEBVIEW_INJECT_AT_DOCUMENT_START + ); +} +#endif + PrinterWebView::PrinterWebView(wxWindow *parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize) , m_browser(nullptr) @@ -43,6 +118,8 @@ PrinterWebView::PrinterWebView(wxWindow *parent) } #ifdef __linux__ + inject_vue_resize_workaround(m_browser); + auto cookiesPath = boost::filesystem::path(data_dir() + "/cache/cookies.db"); auto wv = static_cast(m_browser->GetNativeBackend()); auto wv_ctx = webkit_web_view_get_context(wv); @@ -165,6 +242,10 @@ void PrinterWebView::SendAPIKey() )", m_apikey); m_browser->RemoveAllUserScripts(); +#ifdef __linux__ + // Re-inject the vue-resize/WebKitGTK workaround that RemoveAllUserScripts just cleared. + inject_vue_resize_workaround(m_browser); +#endif m_browser->AddUserScript(script); m_browser->Reload(); diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.cpp b/src/slic3r/GUI/SyncAmsInfoDialog.cpp index ca373d4e16..582c220c2f 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.cpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.cpp @@ -1912,58 +1912,6 @@ bool SyncAmsInfoDialog::is_blocking_printing(MachineObject *obj_) return false; } -bool SyncAmsInfoDialog::is_same_nozzle_diameters(NozzleType &tag_nozzle_type, float &nozzle_diameter) -{ - bool is_same_nozzle_diameters = true; - - float preset_nozzle_diameters; - std::string preset_nozzle_type; - - DeviceManager *dev = Slic3r::GUI::wxGetApp().getDeviceManager(); - if (!dev) return true; - - MachineObject *obj_ = dev->get_selected_machine(); - if (obj_ == nullptr) return true; - - try { - PresetBundle *preset_bundle = wxGetApp().preset_bundle; - auto opt_nozzle_diameters = preset_bundle->printers.get_edited_preset().config.option("nozzle_diameter"); - - const ConfigOptionEnumsGenericNullable *nozzle_type = preset_bundle->printers.get_edited_preset().config.option("nozzle_type"); - std::vector preset_nozzle_types(nozzle_type->size()); - for (size_t idx = 0; idx < nozzle_type->size(); ++idx) preset_nozzle_types[idx] = NozzleTypeEumnToStr[NozzleType(nozzle_type->values[idx])]; - - std::vector machine_nozzle_types(obj_->GetExtderSystem()->GetTotalExtderCount()); - for (size_t idx = 0; idx < obj_->GetExtderSystem()->GetTotalExtderCount(); ++idx) machine_nozzle_types[idx] = obj_->GetExtderSystem()->GetNozzleType(idx); - - auto used_filaments = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_used_filaments(); // 1 based - auto filament_maps = wxGetApp().plater()->get_partplate_list().get_curr_plate()->get_real_filament_maps(preset_bundle->project_config); // 1 based - - std::vector used_extruders; // 0 based - for (auto f : used_filaments) { - int filament_extruder = filament_maps[f - 1] - 1; - if (std::find(used_extruders.begin(), used_extruders.end(), filament_extruder) == used_extruders.end()) used_extruders.emplace_back(filament_extruder); - } - std::sort(used_extruders.begin(), used_extruders.end()); - - // TODO [tao wang] : add idx mapping - tag_nozzle_type = obj_->GetExtderSystem()->GetNozzleType(0); - - if (opt_nozzle_diameters != nullptr) { - for (auto i = 0; i < used_extruders.size(); i++) { - auto extruder = used_extruders[i]; - preset_nozzle_diameters = float(opt_nozzle_diameters->get_at(extruder)); - if (preset_nozzle_diameters != obj_->GetExtderSystem()->GetNozzleDiameter(0)) { is_same_nozzle_diameters = false; } - } - } - - } catch (...) {} - - nozzle_diameter = preset_nozzle_diameters; - - return is_same_nozzle_diameters; -} - bool SyncAmsInfoDialog::is_same_nozzle_type(std::string &filament_type, NozzleType &tag_nozzle_type) { bool is_same_nozzle_type = true; diff --git a/src/slic3r/GUI/SyncAmsInfoDialog.hpp b/src/slic3r/GUI/SyncAmsInfoDialog.hpp index 061e0e777f..6cacff0af1 100644 --- a/src/slic3r/GUI/SyncAmsInfoDialog.hpp +++ b/src/slic3r/GUI/SyncAmsInfoDialog.hpp @@ -203,7 +203,6 @@ public: void update_timelapse_enable_status(); bool is_same_printer_model(); bool is_blocking_printing(MachineObject *obj_); - bool is_same_nozzle_diameters(NozzleType &tag_nozzle_type, float &nozzle_diameter); bool is_same_nozzle_type(std::string &filament_type, NozzleType &tag_nozzle_type); bool is_timeout(); int update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 22170c389b..18c2bcfc96 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -41,7 +41,7 @@ #include "UnsavedChangesDialog.hpp" #include "SavePresetDialog.hpp" #include "EditGCodeDialog.hpp" - +#include "MultiChoiceDialog.hpp" #include "MsgDialog.hpp" #include "Notebook.hpp" @@ -426,9 +426,12 @@ void Tab::create_preset_tab() }); m_top_sizer->Add(m_mode_icon, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::WideSpacing())); m_mode_view = new ModeSwitchButton(m_top_panel); - m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); - if (wxGetApp().get_mode() == comDevelop) + if (wxGetApp().get_mode() == comDevelop) { + m_mode_view->SetSelection(mode_to_selection(comExpert)); m_mode_view->Enable(false); + } else { + m_mode_view->SetSelection(mode_to_selection(wxGetApp().get_saved_mode())); + } m_top_sizer->AddSpacer(FromDIP(SidebarProps::ElementSpacing())); m_top_sizer->Add( m_mode_view, 0, wxALIGN_CENTER_VERTICAL); } @@ -1556,8 +1559,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) if (opt_key == "single_extruder_multi_material" ){ - const auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); - wxGetApp().sidebar().show_SEMM_buttons(bSEMM); + wxGetApp().sidebar().show_SEMM_buttons(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); } @@ -1608,8 +1610,7 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) if (opt_key == "single_extruder_multi_material" ){ - const auto bSEMM = m_config->opt_bool("single_extruder_multi_material"); - wxGetApp().sidebar().show_SEMM_buttons(bSEMM); + wxGetApp().sidebar().show_SEMM_buttons(); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); } @@ -2449,6 +2450,7 @@ void TabPrint::build() optgroup->append_single_option_line("sparse_infill_density", "strength_settings_infill#sparse-infill-density"); optgroup->append_single_option_line("fill_multiline", "strength_settings_infill#fill-multiline"); optgroup->append_single_option_line("sparse_infill_pattern", "strength_settings_infill#sparse-infill-pattern"); + optgroup->append_single_option_line("gyroid_optimized", "strength_settings_patterns#gyroid-optimized"); optgroup->append_single_option_line("infill_direction", "strength_settings_infill#direction"); optgroup->append_single_option_line("sparse_infill_rotate_template", "strength_settings_infill_rotation_template_metalanguage"); optgroup->append_single_option_line("skin_infill_density", "strength_settings_patterns#locked-zag"); @@ -5094,6 +5096,8 @@ void TabPrinter::build_fff() line.append_option(optgroup->get_option("fan_speedup_overhangs")); optgroup->append_line(line); optgroup->append_single_option_line("fan_kickstart", "printer_basic_information_cooling_fan#fan-kick-start-time"); + // ORCA: PWM floor for fans that won't spool at low duty cycles. + optgroup->append_single_option_line("part_cooling_fan_min_pwm", "printer_basic_information_cooling_fan#minimum-non-zero-part-cooling-fan-speed"); optgroup = page->new_optgroup(L("Extruder Clearance"), "param_extruder_clearance"); optgroup->append_single_option_line("extruder_clearance_radius", "printer_basic_information_extruder_clearance#radius"); @@ -5590,6 +5594,7 @@ if (is_marlin_flavor) optgroup->append_single_option_line("wipe_tower_type", "printer_multimaterial_wipe_tower"); optgroup->append_single_option_line("purge_in_prime_tower", "printer_multimaterial_wipe_tower#purge-in-prime-tower"); optgroup->append_single_option_line("enable_filament_ramming", "printer_multimaterial_wipe_tower#enable-filament-ramming"); + optgroup->append_single_option_line("tool_change_on_wipe_tower", "printer_multimaterial_wipe_tower#tool-change-on-wipe-tower"); optgroup = page->new_optgroup(L("Single extruder multi-material parameters"), "param_settings"); @@ -6184,6 +6189,12 @@ void TabPrinter::toggle_options() } } } + + // Orca: "Tool change on wipe tower" only makes sense for multi-extruder (multi-toolhead) printers + // using a Type 2 wipe tower. SEMM already always travels to the tower as part of the purge, + // so the option is irrelevant there. + const size_t extruders_count = m_config->option("nozzle_diameter")->size(); + toggle_option("tool_change_on_wipe_tower", !bSEMM && supports_wipe_tower_2 && extruders_count > 1); } wxString extruder_number; long val = 1; @@ -7752,7 +7763,15 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep presets.Add(from_u8(preset.name)); } - wxMultiChoiceDialog dlg(parent, deps.dialog_title, deps.dialog_label, presets); + if(deps.type == Preset::TYPE_PRINTER){ + deps.dialog_title = "Compatible printers"; + deps.dialog_label = "Select printers"; + }else{ + deps.dialog_title = "Compatible process profiles"; + deps.dialog_label = "Select profiles"; + } + + MultiChoiceDialog dlg(parent, deps.dialog_label, deps.dialog_title, presets); wxGetApp().UpdateDlgDarkUI(&dlg); // Collect and set indices of depending_presets marked as compatible. wxArrayInt selections; @@ -7765,13 +7784,16 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep break; } dlg.SetSelections(selections); + dlg.SetSize(FromDIP(wxSize(360, 480))); std::vector value; // Show the dialog. if (dlg.ShowModal() == wxID_OK) { selections.Clear(); selections = dlg.GetSelections(); - for (auto idx : selections) - value.push_back(presets[idx].ToUTF8().data()); + // leave list empty if all items checked. this will check "All" checkbox automatically. also fixes unnecessary config change + if(selections.GetCount() != presets.GetCount()) + for (auto idx : selections) + value.push_back(presets[idx].ToUTF8().data()); if (value.empty()) { deps.checkbox->SetValue(1); deps.btn->Disable(); diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp index e257db60b7..6066d489b4 100644 --- a/src/slic3r/GUI/Tab.hpp +++ b/src/slic3r/GUI/Tab.hpp @@ -147,7 +147,6 @@ protected: //BBS: GUI refactor wxPanel* m_top_panel; - ScalableButton* m_mode_icon; // ORCA m_static_title replacement wxBoxSizer* m_main_sizer; wxBoxSizer* m_top_sizer; wxBoxSizer* m_top_left_sizer; @@ -308,6 +307,7 @@ public: int m_update_cnt = 0; ModeSwitchButton *m_mode_view = nullptr; + ScalableButton* m_mode_icon = nullptr; // ORCA m_static_title replacement SwitchButton *m_extruder_switch = nullptr; MultiSwitchButton *m_variant_combo = nullptr; diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 575748fce0..f68c00ff40 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" @@ -516,7 +517,9 @@ void GuideFrame::OnScriptMessage(wxWebViewEvent &evt) if (agent) { agent->set_country_code(country_code); if (wxGetApp().is_user_login()) { - agent->user_logout(); + BOOST_LOG_TRIVIAL(info) << "logout: user_logout on user_guide_finish"; + // agent->user_logout(); + wxGetApp().request_user_logout(); } } } diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index b6d5f055fa..2a9b4cb984 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -5,6 +5,7 @@ #include "libslic3r/AppConfig.hpp" #include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/Utils/NetworkAgent.hpp" #include "libslic3r_version.h" #include @@ -371,7 +372,97 @@ void ZUserLogin::OnScriptMessage(wxWebViewEvent &evt) { m_AutotestToken = j["data"]["token"]; } - if (strCmd == "user_login") { + if (strCmd == "user_ticket_login") { + auto* agent = wxGetApp().getAgent(); + if (!agent || !m_cloud_agent || !j.contains("data") || !j["data"].is_object() || !j["data"].contains("ticket")) { + wxMessageBox(_L("Login failed. Please try again."), _L("Login"), wxICON_WARNING); + return; + } + + const auto provider = m_cloud_agent->get_id(); + std::string ticket = j["data"]["ticket"].get(); + + unsigned int token_http_code = 0; + std::string token_body; + int token_result = agent->get_my_token(ticket, &token_http_code, &token_body, provider); + if (token_result != 0) { + BOOST_LOG_TRIVIAL(warning) << "embedded_login: get_my_token failed, http_code=" << token_http_code; + wxMessageBox(_L("Login failed. Please try again."), _L("Login"), wxICON_WARNING); + return; + } + + std::string access_token; + std::string refresh_token; + std::string expires_in_str; + std::string refresh_expires_in_str; + try { + json token_j = json::parse(token_body); + if (token_j.contains("accessToken")) + access_token = token_j["accessToken"].get(); + if (token_j.contains("refreshToken")) + refresh_token = token_j["refreshToken"].get(); + if (token_j.contains("expiresIn")) + expires_in_str = std::to_string(token_j["expiresIn"].get()); + if (token_j.contains("refreshExpiresIn")) + refresh_expires_in_str = std::to_string(token_j["refreshExpiresIn"].get()); + } catch (...) { + wxMessageBox(_L("Login failed. Please try again."), _L("Login"), wxICON_WARNING); + return; + } + + if (access_token.empty()) { + wxMessageBox(_L("Login failed. Please try again."), _L("Login"), wxICON_WARNING); + return; + } + + unsigned int profile_http_code = 0; + std::string profile_body; + int profile_result = agent->get_my_profile(access_token, &profile_http_code, &profile_body, provider); + if (profile_result != 0) { + BOOST_LOG_TRIVIAL(warning) << "embedded_login: get_my_profile failed, http_code=" << profile_http_code; + wxMessageBox(_L("Login failed. Please try again."), _L("Login"), wxICON_WARNING); + return; + } + + std::string user_id; + std::string user_name; + std::string user_account; + std::string user_avatar; + try { + json user_j = json::parse(profile_body); + if (user_j.contains("uidStr")) + user_id = user_j["uidStr"].get(); + if (user_j.contains("name")) + user_name = user_j["name"].get(); + if (user_j.contains("avatar")) + user_avatar = user_j["avatar"].get(); + if (user_j.contains("account")) + user_account = user_j["account"].get(); + } catch (...) { + BOOST_LOG_TRIVIAL(warning) << "embedded_login: profile JSON parse failed"; + } + + json login_j; + login_j["command"] = "user_login"; + login_j["data"]["autotest_token"] = m_AutotestToken; + login_j["data"]["refresh_token"] = refresh_token; + login_j["data"]["token"] = access_token; + login_j["data"]["expires_in"] = expires_in_str; + login_j["data"]["refresh_expires_in"] = refresh_expires_in_str; + login_j["data"]["user"]["uid"] = user_id; + login_j["data"]["user"]["name"] = user_name; + login_j["data"]["user"]["account"] = user_account; + login_j["data"]["user"]["avatar"] = user_avatar; + std::string message_json = login_j.dump(); + + // End modal dialog first to unblock event loop before processing callbacks + EndModal(wxID_OK); + + // Handle message after modal dialog ends to avoid deadlock + // Use wxTheApp->CallAfter to ensure it runs after modal loop exits + wxTheApp->CallAfter([message_json, provider]() { wxGetApp().handle_script_message(message_json, provider); }); + } + else if (strCmd == "user_login") { j["data"]["autotest_token"] = m_AutotestToken; std::string message_json = j.dump(); diff --git a/src/slic3r/GUI/Widgets/CheckList.cpp b/src/slic3r/GUI/Widgets/CheckList.cpp new file mode 100644 index 0000000000..cd0dcebff3 --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckList.cpp @@ -0,0 +1,225 @@ +#include "CheckList.hpp" + +#include "slic3r/GUI/GUI_App.hpp" + +CheckList::CheckList( + wxWindow* parent, + const wxArrayString& choices, + long scroll_style +) + : wxWindow(parent, wxID_ANY) + , m_search(this, "search", 16) + , m_menu(this, "filter", 16) + , m_first_load(true) +{ + Freeze(); + w_sizer = new wxBoxSizer(wxVERTICAL); + + f_sizer = new wxBoxSizer(wxHORIZONTAL); + f_bar = new wxPanel(this, wxID_ANY); + f_bar->SetBackgroundColour(parent->GetBackgroundColour()); + m_filter_box = new TextInput(f_bar, "", "", "", wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER); + m_filter_box->SetIcon(m_search.bmp()); + m_filter_box->SetMinSize(FromDIP(wxSize(200,24))); + m_filter_box->SetSize(FromDIP(wxSize(-1,24))); + m_filter_box->SetFocus(); + m_filter_ctrl = m_filter_box->GetTextCtrl(); + m_filter_ctrl->SetFont(Label::Body_13); + m_filter_ctrl->SetSize(wxSize(-1, FromDIP(16))); // Centers text vertically + m_filter_ctrl->SetHint(_L("Type to filter...")); + m_filter_ctrl->Bind(wxEVT_TEXT, [this](auto &e) {Filter(m_filter_ctrl->GetValue());}); + m_filter_ctrl->Bind(wxEVT_TEXT_ENTER, [this](auto &e) {Filter(m_filter_ctrl->GetValue());}); + m_filter_ctrl->Bind(wxEVT_SET_FOCUS, [this](auto &e) {Filter(m_filter_ctrl->GetValue());e.Skip();}); + m_filter_ctrl->Bind(wxEVT_KILL_FOCUS, [this](auto &e) {Filter(m_filter_ctrl->GetValue());e.Skip();}); + f_sizer->Add(m_filter_box, 1, wxEXPAND); + Bind(wxEVT_SET_FOCUS, [this](auto &e) {m_filter_box->SetFocus();}); + + fb_sizer = new wxBoxSizer(wxHORIZONTAL); + auto create_btn = [this] (wxString title, bool select){ + auto btn = new wxStaticText(f_bar, wxID_ANY, title); + btn->SetForegroundColour("#009687"); + btn->SetCursor(wxCURSOR_HAND); + btn->SetFont(Label::Body_13); + btn->Bind(wxEVT_LEFT_DOWN, [this, select](wxMouseEvent &e) {SelectAll(select);}); + fb_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + }; + f_sizer->Add(fb_sizer,0 ,wxALIGN_CENTER_VERTICAL); + create_btn(_L("All") , true); + create_btn(_L("None"), false); + + m_menu_button = new wxStaticBitmap(f_bar, wxID_ANY, m_menu.bmp()); + m_menu_button->SetCursor(wxCURSOR_HAND); + m_menu_button->Bind(wxEVT_LEFT_DOWN, &CheckList::ShowMenu, this); + f_sizer->Add(m_menu_button,0 ,wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10)); + + f_bar->SetSizerAndFit(f_sizer); + w_sizer->Add(f_bar, 0, wxEXPAND); + + auto spacer = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(3))); + spacer->SetBackgroundColour(parent->GetBackgroundColour()); + w_sizer->Add(spacer, 0, wxEXPAND); + + s_sizer = new wxBoxSizer(wxVERTICAL); + m_scroll_area = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, scroll_style); + m_scroll_area->SetScrollRate(0, 10); + m_scroll_area->SetSizer(s_sizer); + m_scroll_area->SetBackgroundColour(parent->GetBackgroundColour()); + m_scroll_area->Bind(wxEVT_RIGHT_DOWN, &CheckList::ShowMenu, this); + m_scroll_area->DisableFocusFromKeyboard(); + + m_info = new wxStaticText(m_scroll_area, wxID_ANY, ""); + m_info->SetFont(Label::Body_13); + s_sizer->Add(m_info, 1, wxALIGN_CENTER_HORIZONTAL | wxALL, FromDIP(10)); + m_info->Hide(); + + m_info_nonsel = _L("No selected items..."); + m_info_allsel = _L("All items selected..."); + m_info_empty = _L("No matching items..."); + + SetBackgroundColour(StateColor::darkModeColorFor("#DBDBDB")); // draws border on wxScrolledWindow + + w_sizer->Add(m_scroll_area, 1, wxEXPAND | wxALL, FromDIP(1)); // 1 for border + s_sizer->Layout(); + + m_list_size = choices.size(); + + m_checks.reserve(m_list_size); + + auto margin = FromDIP(2); + wxCheckBox* cb; + + for (size_t i = 0; i < m_list_size; ++i){ + cb = new wxCheckBox(m_scroll_area, wxID_ANY, choices[i]); + m_checks.emplace_back(cb); + s_sizer->Add(cb, 0, wxALL, margin); + } + + m_scroll_area->FitInside(); + s_sizer->Layout(); + + SetSizer(w_sizer); + Layout(); + Thaw(); +} + +void CheckList::SetSelections(wxArrayInt sel_array){ + if(!m_first_load){ + for (size_t i = 0; i < m_list_size; ++i) + Check(i, false); + m_first_load = false; + } + + for (int i : sel_array) + Check(i, true); +} + +wxArrayInt CheckList::GetSelections() +{ + wxArrayInt checks; + for (size_t i = 0; i < m_list_size; ++i) + if (m_checks[i]->GetValue()) + checks.push_back(i); + return checks; +} + +void CheckList::Check(int i, bool checked) +{ + if (i > -1 && i < m_list_size) + m_checks[i]->SetValue(checked); +} + +void CheckList::SelectAll(bool value) +{ + for (size_t i = 0; i < m_list_size; ++i) + Check(i, value); +} + +void CheckList::SelectVisible(bool value) +{ + auto filter = m_filter_ctrl->GetValue().Lower(); + if((!value && filter == "::unsel") || (value && filter == "::sel")) + m_filter_ctrl->SetValue(""); + for (size_t i = 0; i < m_list_size; ++i) + if(m_checks[i]->IsShown()) + Check(i, value); +} + +bool CheckList::IsChecked(int i) +{ + if (i > -1 && i < m_list_size) + return false; + return m_checks[i]->GetValue(); +} + +void CheckList::Filter(const wxString& filterText) +{ + Freeze(); + auto filter = filterText.Lower(); + auto c_text = m_filter_ctrl->GetValue().Lower(); + + if(filter == "::sel" || filter == "::nonsel"){ + if(c_text != filter){ // not text input + m_filter_ctrl->SetValue(filter); + m_filter_ctrl->SetSelection(0,-1); + } + fb_sizer->Show(false); + if (filter == "::sel") + for (auto& cb : m_checks) cb->Show(cb->GetValue()); + else + for (auto& cb : m_checks) cb->Show(!cb->GetValue()); + } + else{ + bool clear = filterText.IsEmpty(); + fb_sizer->Show(clear); + for (auto& cb : m_checks) + cb->Show(clear || cb->GetLabel().Lower().Contains(filter)); + } + + m_info->Show(); + for (size_t i = 0; i < m_list_size; ++i) { + if (m_checks[i]->IsShown()){ + m_info->Hide(); + break; + } + } + if (m_info->IsShown()) + m_info->SetLabel(filter == "::sel" ? m_info_nonsel : filter == "::nonsel" ? m_info_allsel : m_info_empty); + + m_scroll_area->FitInside(); + f_sizer->Layout(); + Thaw(); +} + +void CheckList::ShowMenu(wxMouseEvent &evt) +{ + bool filtering = !m_filter_ctrl->GetValue().IsEmpty(); + bool list_empty = m_info->IsShown(); + + wxMenu m; + m.Append(wxID_FILE1, _L("Select All" ))->Enable(!filtering); + m.Append(wxID_FILE2, _L("Deselect All"))->Enable(!filtering); + m.AppendSeparator(); + m.Append(wxID_FILE3, _L("Select visible" ))->Enable(!list_empty && filtering); + m.Append(wxID_FILE4, _L("Deselect visible"))->Enable(!list_empty && filtering); + m.AppendSeparator(); + m.Append(wxID_FILE5, _L("Filter selected" )); + m.Append(wxID_FILE6, _L("Filter nonSelected")); + + m.Bind(wxEVT_MENU, [this](wxCommandEvent& e) { + switch (e.GetId()){ + case wxID_FILE1: SelectAll(true) ; break; + case wxID_FILE2: SelectAll(false) ; break; + case wxID_FILE3: SelectVisible(true) ; break; + case wxID_FILE4: SelectVisible(false); break; + case wxID_FILE5: Filter("::sel") ; break; + case wxID_FILE6: Filter("::nonsel") ; break; + default: break; + } + },wxID_FILE1, wxID_FILE6); + + wxWindow* src = dynamic_cast(evt.GetEventObject()); + if (!src) return; + wxPoint screen_pos = src->ClientToScreen(evt.GetPosition()); + wxPoint local_pos = ScreenToClient(screen_pos); + PopupMenu(&m, local_pos); +} \ No newline at end of file diff --git a/src/slic3r/GUI/Widgets/CheckList.hpp b/src/slic3r/GUI/Widgets/CheckList.hpp new file mode 100644 index 0000000000..bd40e1ad84 --- /dev/null +++ b/src/slic3r/GUI/Widgets/CheckList.hpp @@ -0,0 +1,59 @@ +#ifndef slic3r_GUI_CHECKLIST_hpp_ +#define slic3r_GUI_CHECKLIST_hpp_ + +#include "../wxExtensions.hpp" + +#include "Label.hpp" +#include "TextInput.hpp" + +#include +#include +#include +#include + +class CheckList : public wxWindow +{ +public: + CheckList( + wxWindow* parent, + const wxArrayString& choices = wxArrayString(), + long scroll_style = wxVSCROLL + ); + + wxArrayInt GetSelections(); + void SetSelections(wxArrayInt sel_array); + void Check(int i, bool checked); + bool IsChecked(int i); + + void Filter(const wxString& filterText); + void SelectAll(bool value); + void SelectVisible(bool value); + +private: + void ShowMenu(wxMouseEvent &e); + + std::vector m_checks; + int m_list_size; + bool m_first_load; + wxBoxSizer* w_sizer; + + wxPanel* f_bar; + wxBoxSizer* f_sizer; + TextInput* m_filter_box; + wxTextCtrl* m_filter_ctrl; + wxBoxSizer* fb_sizer; + wxStaticBitmap* m_menu_button; + + wxScrolledWindow* m_scroll_area; + wxBoxSizer* s_sizer; + + wxStaticText* m_info; + wxString m_info_nonsel; + wxString m_info_allsel; + wxString m_info_empty; + + ScalableBitmap m_search; + ScalableBitmap m_menu; +}; + +#endif // !slic3r_GUI_CheckList_hpp_ diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index d698f9f7dc..973113d0ac 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -167,6 +167,30 @@ bool DropDown::HasDismissLongTime() (now - dismissTime).total_milliseconds() >= 20; } +void DropDown::Popup(wxWindow *focus) +{ +#ifdef __WXGTK__ + if (!mainDropDown && m_widget) { + // Data-view cell editors can receive focus before wxGTK infers a + // native popup parent, so provide the current toplevel explicitly. + GtkWindow *transient_parent = nullptr; + for (wxWindow *win = GetParent(); win; win = win->GetParent()) { + GtkWidget *widget = static_cast(win->GetHandle()); + if (!widget) + continue; + GtkWidget *top = gtk_widget_get_toplevel(widget); + if (GTK_IS_WINDOW(top)) { + transient_parent = GTK_WINDOW(top); + break; + } + } + if (transient_parent) + gtk_window_set_transient_for(GTK_WINDOW(m_widget), transient_parent); + } +#endif + PopupWindow::Popup(focus); +} + void DropDown::paintEvent(wxPaintEvent& evt) { // depending on your system you may need to look at double-buffered dcs @@ -554,7 +578,8 @@ void DropDown::messureSize() wxWindow::SetSize(szContent); #ifdef __WXGTK__ // Gtk has a wrapper window for popup widget - gtk_window_resize (GTK_WINDOW (m_widget), szContent.x, szContent.y); + if (szContent.x > 0 && szContent.y > 0) + gtk_window_resize (GTK_WINDOW (m_widget), szContent.x, szContent.y); #endif if (!groups.empty() && subDropDown == nullptr) { subDropDown = new DropDown(items); @@ -564,11 +589,6 @@ void DropDown::messureSize() subDropDown->use_content_width = true; subDropDown->Create(GetParent()); #ifdef __WXGTK__ - // Orca: Keep the wx parent as the combobox so wxPopupTransientWindow installs - // its capture handlers on the main dropdown, but make the native GTK - // popup transient for the currently open popup to satisfy Wayland's - // xdg-shell rule that a popup's parent must be the topmost mapped popup. - gtk_window_set_transient_for(GTK_WINDOW(subDropDown->GetHandle()), GTK_WINDOW(GetHandle())); // Orca: On Wayland, while the sub holds an xdg_popup grab, motion events for // the cursor over main may not be delivered (Mutter drops motion // outside the grabbing surface). Poll on idle and synthesize a @@ -636,8 +656,11 @@ void DropDown::autoPosition() // may exceed auto drect = wxDisplay(GetParent()).GetGeometry(); if (GetPosition().y + size.y + 10 > drect.GetBottom()) { + int available_height = drect.GetBottom() - GetPosition().y - 10; + if (available_height < rowSize.y * 2) + return; if (use_content_width && count <= 15) size.x += 6; - size.y = drect.GetBottom() - GetPosition().y - 10; + size.y = available_height; wxWindow::SetSize(size); if (selection >= 0) { if (offset.y + rowSize.y * (selection + 1) > size.y) @@ -727,6 +750,13 @@ void DropDown::mouseMove(wxMouseEvent &event) drop.group = items[-index - 2].group_key; drop.need_sync = true; drop.messureSize(); +#ifdef __WXGTK__ + // wxGTK wraps popup contents in a native GtkWindow. Make the submenu + // transient for the currently mapped parent popup window before + // positioning/showing it, so wlroots/Hyprland sees the topmost parent. + if (m_widget && drop.m_widget) + gtk_window_set_transient_for(GTK_WINDOW(drop.m_widget), GTK_WINDOW(m_widget)); +#endif drop.autoPosition(); drop.paintNow(); if (!drop.IsShown()) diff --git a/src/slic3r/GUI/Widgets/DropDown.hpp b/src/slic3r/GUI/Widgets/DropDown.hpp index 639a13e526..09041e3dc0 100644 --- a/src/slic3r/GUI/Widgets/DropDown.hpp +++ b/src/slic3r/GUI/Widgets/DropDown.hpp @@ -105,6 +105,8 @@ public: bool HasDismissLongTime(); + void Popup(wxWindow *focus = nullptr) override; + protected: void Dismiss() override; diff --git a/src/slic3r/GUI/Widgets/StateColor.cpp b/src/slic3r/GUI/Widgets/StateColor.cpp index d400f53de6..2a9d91f59a 100644 --- a/src/slic3r/GUI/Widgets/StateColor.cpp +++ b/src/slic3r/GUI/Widgets/StateColor.cpp @@ -42,7 +42,8 @@ static std::map gDarkColors{ {"#D7E8DE", "#1F2B27"}, // rgb(215, 232, 222) Not Used anymore // Leftover from BBS {"#2B3436", "#808080"}, // rgb(43, 52, 54) Not Used anymore // Leftover from BBS. Was used as main fill color of icons {"#ABABAB", "#ABABAB"}, - {"#D9D9D9", "#2D2D32"}, // rgb(217, 217, 217) Sidebar > Toggle button track color + {"#D9D9D9", "#27272A"}, // rgb(217, 217, 217) Sidebar > Toggle button track color + {"#FFFEFE", "#D9D9D9"}, // rgb(255, 254, 254) Sidebar > Toggle button thumb color {"#EBF9F0", "#293F34"}, //{"#F0F0F0", "#4C4C54"}, // ORCA diff --git a/src/slic3r/GUI/Widgets/StaticBox.cpp b/src/slic3r/GUI/Widgets/StaticBox.cpp index 753cb10289..6391c1a8c4 100644 --- a/src/slic3r/GUI/Widgets/StaticBox.cpp +++ b/src/slic3r/GUI/Widgets/StaticBox.cpp @@ -193,20 +193,18 @@ void StaticBox::doRender(wxDC& dc) if ((border_width && border_color.count() > 0) || background_color.count() > 0) { wxRect rc(0, 0, size.x, size.y); if (border_width && border_color.count() > 0) { - if (dc.GetContentScaleFactor() == 1.0) { - int d = floor(border_width / 2.0); - int d2 = floor(border_width - 1); - rc.x += d; - rc.width -= d2; - rc.y += d; - rc.height -= d2; - } else { - int d = 1; - rc.x += d; - rc.width -= d; - rc.y += d; - rc.height -= d; - } + const double scale = dc.GetContentScaleFactor(); + + // Snap rect edges to physical pixel boundaries so the 1px pen doesn't straddle a pixel boundary + auto snap = [&](int logical) -> int { + return (int)(ceil(logical * scale) / scale); + }; + + int deflate = snap(border_width / 2.0); // at 175%: snap(0.5) = snap→1/1.75 ≈ 1 + rc.x += deflate; + rc.y += deflate; + rc.width -= deflate * 2; + rc.height -= deflate * 2; dc.SetPen(wxPen(border_color.colorForStates(states), border_width, border_style)); } else { dc.SetPen(wxPen(background_color.colorForStates(states))); diff --git a/src/slic3r/GUI/Widgets/SwitchButton.cpp b/src/slic3r/GUI/Widgets/SwitchButton.cpp index 0ff70d4a77..60c9344077 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.cpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.cpp @@ -220,14 +220,40 @@ void SwitchButton::update() ModeSwitchButton::ModeSwitchButton(wxWindow* parent, wxWindowID id) { background_color = StateColor( - std::make_pair(wxColour(0xF1, 0xF1, 0xF1), (int) StateColor::Disabled), - std::make_pair(wxColour(0xE3, 0xE3, 0xE3), (int) StateColor::Pressed), - std::make_pair(wxColour(0xD9, 0xD9, 0xD9), (int) StateColor::Normal)); + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Disabled), + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Normal) + ); border_color = StateColor( - std::make_pair(wxColour(0xEA, 0xEA, 0xEA), (int) StateColor::Disabled), - std::make_pair(wxColour(0xBC, 0xBC, 0xBC), (int) StateColor::Hovered), - std::make_pair(wxColour(0xC8, 0xC8, 0xC8), (int) StateColor::Focused), - std::make_pair(wxColour(0xCE, 0xCE, 0xCE), (int) StateColor::Normal)); + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Disabled), + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Hovered | ~StateColor::Focused), + std::make_pair(wxColour("#26A69A"), (int) StateColor::Focused), + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Normal) + ); + track_background = StateColor( + std::make_pair(wxColour("#009688"), (int) StateColor::Disabled), + std::make_pair(wxColour("#009688"), (int) StateColor::Normal) + ); + track_border = StateColor( + std::make_pair(wxColour("#D9D9D9"), (int) StateColor::Disabled), + std::make_pair(wxColour("#009688"), (int) StateColor::Hovered | ~StateColor::Focused), + std::make_pair(wxColour("#26A69A"), (int) StateColor::Focused), + std::make_pair(wxColour("#009688"), (int) StateColor::Normal) + ); + dot_active = StateColor( + std::make_pair(wxColour("#FFFEFE"), (int) StateColor::Disabled), + std::make_pair(wxColour("#FFFEFE"), (int) StateColor::Normal) + ); + dot_dimmed = StateColor( + std::make_pair(wxColour("#EEEEEE"), (int) StateColor::Disabled), + std::make_pair(wxColour("#EEEEEE"), (int) StateColor::Normal) + ); + text_color = StateColor( + std::make_pair(wxColour("#6B6B6B"), (int) StateColor::Disabled), + std::make_pair(wxColour("#6B6B6B"), (int) StateColor::Normal) + ); + + state_handler.attach(std::vector{&dot_active, &dot_dimmed, &text_color}); + state_handler.update_binds(); StaticBox::Create(parent, id, wxDefaultPosition, wxDefaultSize, 0); SetBackgroundColour(StaticBox::GetParentBackgroundColor(parent)); @@ -263,7 +289,7 @@ void ModeSwitchButton::SelectAndNotify(int selection) void ModeSwitchButton::Rescale() { - const wxSize button_size = FromDIP(wxSize(48, 20)); + const wxSize button_size = FromDIP(wxSize(48, 18)); SetMinSize(button_size); SetMaxSize(button_size); SetSize(button_size); @@ -274,63 +300,70 @@ void ModeSwitchButton::Rescale() bool ModeSwitchButton::Enable(bool enable /* = true */) { const bool changed = StaticBox::Enable(enable); - if (changed) + if (changed){ + wxCommandEvent e(EVT_ENABLE_CHANGED); + e.SetEventObject(this); + GetEventHandler()->ProcessEvent(e); + m_enabled = enable; // IsEnabled() not works because variable changes after paint event Refresh(); + } return changed; } void ModeSwitchButton::doRender(wxDC& dc) { - dc.SetPen(*wxTRANSPARENT_PEN); - dc.SetBrush(wxBrush(GetBackgroundColour())); - dc.DrawRectangle(GetClientRect()); - - const wxRect bounds = GetClientRect().Deflate(1); + const wxRect bounds = GetClientRect(); if (bounds.width <= 0 || bounds.height <= 0) return; - const int states = state_handler.states(); - const bool hovered = (states & StateHandler::Hovered) != 0; - const bool focused = (states & StateHandler::Focused) != 0; - const bool disabled = !IsEnabled(); - - const wxColour track_fill = disabled ? wxColour(0xD0, 0xD0, 0xD4) : - m_pressed ? wxColour(0x5A, 0x5D, 0x64) : wxColour(0x66, 0x69, 0x70); - const wxColour track_border = disabled ? wxColour(0xDD, 0xDD, 0xE0) : - focused ? wxColour("#009688") : - hovered ? wxColour(0x7A, 0x7D, 0x84) : wxColour(0x75, 0x78, 0x7F); - const wxColour active_fill = disabled ? wxColour(0x9E, 0xBE, 0xB9) : - m_pressed ? wxColour(0x00877B) : wxColour("#009688"); - const wxColour active_dot = disabled ? wxColour(0xEC, 0xF4, 0xF2) : wxColour(0xB7, 0xEB, 0xE3); - const wxColour inactive_dot = disabled ? wxColour(0xF2, 0xF2, 0xF4) : wxColour(0xB5, 0xB7, 0xBD); - const wxColour thumb_fill = disabled ? wxColour(0xFA, 0xFA, 0xFA) : *wxWHITE; - const wxColour thumb_border = disabled ? wxColour(0xE7, 0xE7, 0xEA) : wxColour(0xDD, 0xDF, 0xE3); - - dc.SetPen(wxPen(track_border, 1)); - dc.SetBrush(wxBrush(track_fill)); - dc.DrawRoundedRectangle(bounds, bounds.height / 2.0); - - const wxRect thumb = thumb_rect_for(m_selection); - const int fill_right = std::min(bounds.GetRight(), thumb.GetX() + thumb.GetWidth() / 2 + FromDIP(2)); - wxRect active(bounds.x, bounds.y, fill_right - bounds.x + 1, bounds.height); dc.SetPen(*wxTRANSPARENT_PEN); - dc.SetBrush(wxBrush(active_fill)); - dc.DrawRoundedRectangle(active, bounds.height / 2.0); + dc.SetBrush(wxBrush(GetBackgroundColour())); + dc.DrawRectangle(bounds); - const int dot_radius = std::max(FromDIP(1), thumb.height / 7); - for (int idx = 0; idx < 3; ++idx) { - if (idx == m_selection) - continue; + int states = state_handler.states(); + double v_center = bounds.height / 2.0; - const wxRect slot = thumb_rect_for(idx); - const wxPoint center(slot.GetX() + slot.GetWidth() / 2, slot.GetY() + slot.GetHeight() / 2); - dc.SetBrush(wxBrush(idx < m_selection ? active_dot : inactive_dot)); - dc.DrawCircle(center, dot_radius); + // Background + dc.SetPen(wxPen(border_color.colorForStates(states), 1)); + dc.SetBrush(wxBrush(background_color.colorForStates(states))); + dc.DrawRoundedRectangle(bounds, v_center); + + if (m_enabled) { + double dot_dist = (bounds.width - bounds.height) * 0.50; + + // Track + dc.SetPen(wxPen(track_border.colorForStates(states), 1)); + dc.SetBrush(wxBrush(track_background.colorForStates(states))); + wxRect track_rc = bounds; + track_rc.width = int(v_center * 2.0 + dot_dist * m_selection); + dc.DrawRoundedRectangle(track_rc, v_center); + + // Dots + dc.SetPen(*wxTRANSPARENT_PEN); + for (int idx = 0; idx < 3; ++idx) { + dc.SetBrush(wxBrush((idx <= m_selection ? dot_active : dot_dimmed).colorForStates(states))); + dc.DrawCircle(wxPoint(v_center + dot_dist * idx, v_center), track_rc.height * (double)(idx == m_selection ? 0.32 : 0.16)); + } } + else { // Developer mode + wxString str = "DEV"; + int kerning = 3; // pixels between chars + dc.SetTextForeground(text_color.colorForStates(states)); - dc.SetPen(wxPen(thumb_border, 1)); - dc.SetBrush(wxBrush(thumb_fill)); - dc.DrawRoundedRectangle(thumb, thumb.height / 2.0); + wxCoord totalWidth = 0; + for (char c : str) + totalWidth += dc.GetTextExtent(wxString(c)).x + kerning; + totalWidth -= kerning; + + wxCoord x = bounds.x + (bounds.width - totalWidth) / 2; + wxCoord y = bounds.y + (bounds.height - dc.GetTextExtent(str).y) / 2 - 1; + + for (char c : str) { + wxString ch(c); + dc.DrawText(ch, x, y); + x += dc.GetTextExtent(ch).x + kerning; + } + } } void ModeSwitchButton::mouseDown(wxMouseEvent& event) diff --git a/src/slic3r/GUI/Widgets/SwitchButton.hpp b/src/slic3r/GUI/Widgets/SwitchButton.hpp index 301287460a..0884fa64aa 100644 --- a/src/slic3r/GUI/Widgets/SwitchButton.hpp +++ b/src/slic3r/GUI/Widgets/SwitchButton.hpp @@ -78,7 +78,13 @@ private: private: int m_selection { 0 }; bool m_pressed { false }; + bool m_enabled { true }; wxString m_tooltips[3]; + StateColor dot_active; + StateColor dot_dimmed; + StateColor text_color; + StateColor track_background; + StateColor track_border; }; class MultiSwitchButton : public StaticBox diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index f7d679051a..abf8baf086 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -372,27 +372,31 @@ WipingDialog::WipingDialog(wxWindow* parent, const int max_flush_volume) : wxBoxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); this->SetSizer(main_sizer); this->SetBackgroundColour(*wxWHITE); - auto filament_count= wxGetApp().preset_bundle->project_config.option("filament_colour")->values.size(); - wxSize extra_size = { FromDIP(100),FromDIP(235) }; - if (filament_count <= 2) - extra_size.y += FromDIP(16) * 3 + FromDIP(32); - else if (filament_count == 3) - extra_size.y += FromDIP(16) * 3; - else if (4 <= filament_count && filament_count <= 8) - extra_size.y += FromDIP(16) * 2; - else - extra_size.y += FromDIP(16); + auto filament_count = wxGetApp().preset_bundle->project_config.option("filament_colour")->values.size(); - wxSize max_scroll_size = { FromDIP(1000),FromDIP(500) }; - wxSize estimate_size = { (int)(filament_count + 1) * FromDIP(60),(int)(filament_count + 1) * FromDIP(30)+FromDIP(2)}; - wxSize scroll_size ={ std::min(max_scroll_size.x,estimate_size.x),std::min(max_scroll_size.y,estimate_size.y) }; - wxSize applied_size = scroll_size + extra_size; + // Estimate table scroll area size based on filament count + // Each table cell is ~60x25 DIP, plus headers and borders + wxSize max_scroll_size = { FromDIP(1000), FromDIP(500) }; + wxSize table_size = { (int)(filament_count + 1) * FromDIP(60), (int)(filament_count + 1) * FromDIP(25) + FromDIP(2) }; + wxSize scroll_size = { std::min(max_scroll_size.x, table_size.x), std::min(max_scroll_size.y, table_size.y) }; + // Fixed overhead: padding (~30), tip panel (~70), controls row (~50), + // description/multiplier section (~130), button row (~45) = ~325 DIP + wxSize fixed_overhead = { FromDIP(100), FromDIP(325) }; + wxSize applied_size = scroll_size + fixed_overhead; + + // Clamp to screen size (leave some margin for window decorations) wxSize scaled_screen_size = wxGetDisplaySize(); double scale_factor = wxDisplay().GetScaleFactor(); - scaled_screen_size = { (int)(scaled_screen_size.x / scale_factor),(int)(scaled_screen_size.y / scale_factor) }; + scaled_screen_size = { (int)(scaled_screen_size.x / scale_factor), (int)(scaled_screen_size.y / scale_factor) }; + wxSize screen_margin = { FromDIP(40), FromDIP(60) }; + scaled_screen_size -= screen_margin; - applied_size = { std::min(applied_size.x,scaled_screen_size.x),std::min(applied_size.y,scaled_screen_size.y) }; + applied_size = { std::min(applied_size.x, scaled_screen_size.x), std::min(applied_size.y, scaled_screen_size.y) }; + + // Ensure a reasonable minimum size so the dialog is usable even when clamped + applied_size.x = std::max(applied_size.x, FromDIP(350)); + applied_size.y = std::max(applied_size.y, FromDIP(450)); m_webview = wxWebView::New(this, wxID_ANY, wxEmptyString, wxDefaultPosition, diff --git a/src/slic3r/Utils/BBLCloudServiceAgent.cpp b/src/slic3r/Utils/BBLCloudServiceAgent.cpp index e538991064..2c17d117fc 100644 --- a/src/slic3r/Utils/BBLCloudServiceAgent.cpp +++ b/src/slic3r/Utils/BBLCloudServiceAgent.cpp @@ -50,7 +50,10 @@ std::map BBLCloudServiceAgent::get_extra_header() { std::map extra_headers; extra_headers.emplace("X-BBL-Client-Type", "slicer"); - extra_headers.emplace("X-BBL-Client-Name", SLIC3R_APP_NAME); + + // Unable to get camera live view when the printer is connected to cloud for H2D + extra_headers.emplace("X-BBL-Client-Name", "BambuStudio"); + extra_headers.emplace("X-BBL-Client-Version", GUI::wxGetApp().get_bbl_client_version()); #if defined(__WINDOWS__) #ifdef _M_X64 diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index e59bbf68ec..b9375b7286 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -20,7 +20,7 @@ public: int extruder_id = 0; int ams_id = 0; int slot_id = 0; - float nozzle_diameter; + float nozzle_diameter = 0.0f; ExtruderType extruder_type{ExtruderType::etDirectDrive}; NozzleVolumeType nozzle_volume_type; Calib_Params params; diff --git a/src/slic3r/Utils/FixModelByCgal.cpp b/src/slic3r/Utils/FixModelByCgal.cpp index c014ceaf04..9e2e014d93 100644 --- a/src/slic3r/Utils/FixModelByCgal.cpp +++ b/src/slic3r/Utils/FixModelByCgal.cpp @@ -13,6 +13,7 @@ #include "libslic3r/MeshBoolean.hpp" #include "libslic3r/Model.hpp" #include "libslic3r/format.hpp" +#include "libslic3r/Thread.hpp" #include "../GUI/I18N.hpp" // Orca: This file provides utilities for repairing 3D model meshes using the CGAL library, handling mesh splitting, merging, and boolean operations. @@ -66,7 +67,7 @@ public: // Orca: Main function to repair model objects using CGAL, with progress dialog and cancellation support. // Returns false if fixing was canceled. fix_result contains error message if failed. -bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::ProgressDialog &progress_dialog, const wxString &msg_header, std::string &fix_result) +bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::ProgressDialog &progress_dialog, const wxString &msg_header, std::string &fix_result, bool keep_painting) { // Orca: Synchronization primitives for progress updates between worker thread and GUI. std::mutex mtx; @@ -94,8 +95,10 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro }; // Orca: Worker thread that performs the actual model repair operations. - auto worker_thread = std::thread([&model_object, volume_idx, &ivolume, on_progress, &success, &canceled, &finished, &fix_result]() { + auto worker_thread = std::thread([&model_object, volume_idx, &ivolume, on_progress, &success, &canceled, &finished, &fix_result, keep_painting]() { try { + set_current_thread_name("cgal_fix_model"); + size_t start_volume = volume_idx == -1 ? 0 : size_t(volume_idx); size_t end_volume = volume_idx == -1 ? std::numeric_limits::max() : size_t(volume_idx); @@ -112,7 +115,7 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro // Orca: Split splittable volumes into parts for individual processing. size_t parts_count = 1; if (volume->is_splittable()) { - parts_count = volume->split(1); + parts_count = volume->split(1, keep_painting); if (parts_count > 1) { const std::string msg = Slic3r::format(L("Split into %1% parts"), parts_count); on_progress(msg.c_str(), 10); @@ -150,6 +153,12 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro ModelVolume *part_volume = model_object.volumes[part_idx]; TriangleMesh mesh = part_volume->mesh(); if (its_num_open_edges(mesh.its) != 0) { + + // Save painting for later remap + const std::optional saved_painting = keep_painting ? + part_volume->save_painting() : + std::optional{}; + std::string error; if (!MeshBoolean::cgal::repair(mesh, nullptr, &error)) throw Slic3r::RuntimeError(error.empty() ? L("Repair failed") : error.c_str()); @@ -158,6 +167,9 @@ bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::Pro part_volume->calculate_convex_hull(); part_volume->invalidate_convex_hull_2d(); part_volume->set_new_unique_id(); + + // Remap paint back + part_volume->restore_painting(saved_painting); } } diff --git a/src/slic3r/Utils/FixModelByCgal.hpp b/src/slic3r/Utils/FixModelByCgal.hpp index 3caa6d7fb9..61c8c91087 100644 --- a/src/slic3r/Utils/FixModelByCgal.hpp +++ b/src/slic3r/Utils/FixModelByCgal.hpp @@ -11,7 +11,7 @@ class ModelObject; class Print; // Return false if fixing was canceled. fix_result is empty on success. -extern bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::ProgressDialog &progress_dlg, const wxString &msg_header, std::string &fix_result); +extern bool fix_model_with_cgal_gui(ModelObject &model_object, int volume_idx, GUI::ProgressDialog &progress_dlg, const wxString &msg_header, std::string &fix_result, bool keep_painting); } // namespace Slic3r diff --git a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp index 4298f9616c..0e1027cd46 100644 --- a/src/slic3r/Utils/OrcaCloudServiceAgent.cpp +++ b/src/slic3r/Utils/OrcaCloudServiceAgent.cpp @@ -1465,6 +1465,7 @@ bool OrcaCloudServiceAgent::load_refresh_token(std::string& out_token) if (payload.rfind("v2:", 0) == 0) { auto delim = payload.find(':', 3); if (delim == std::string::npos) { + BOOST_LOG_TRIVIAL(warning) << "payload missing delim ':'."; integrity_ok = false; } else { std::string stored_hmac = payload.substr(3, delim - 3); @@ -1783,7 +1784,8 @@ int OrcaCloudServiceAgent::http_get(const std::string& path, std::string* respon std::string url = api_base_url + path; BOOST_LOG_TRIVIAL(trace) << "OrcaCloudServiceAgent: GET " << url; - ensure_token_fresh("http_get_" + path); + if (!ensure_token_fresh("http_get_" + path)) + BOOST_LOG_TRIVIAL(warning) << "ensure_token_fresh returned false"; struct HttpResult { bool success{false}; @@ -1815,8 +1817,9 @@ int OrcaCloudServiceAgent::http_get(const std::string& path, std::string* respon }) .on_error([&](std::string body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -1884,8 +1887,9 @@ int OrcaCloudServiceAgent::http_post(const std::string& path, const std::string& }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -1953,8 +1957,9 @@ int OrcaCloudServiceAgent::http_put(const std::string& path, const std::string& }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -2019,8 +2024,9 @@ int OrcaCloudServiceAgent::http_delete(const std::string& path, std::string* res }) .on_error([&](std::string resp_body, std::string error, unsigned resp_status) { result.success = false; - result.status = resp_status; - result.body = resp_body; + result.status = resp_status == 0 ? 404 : resp_status; + result.body = resp_body; + BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) .timeout_max(30) .perform_sync(); @@ -2101,7 +2107,7 @@ bool OrcaCloudServiceAgent::http_post_token(const std::string& body, std::string }) .on_error([&](std::string body, std::string error, unsigned resp_status) { success = false; - status = resp_status; + status = resp_status == 0 ? 404 : resp_status; resp_body = body; BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP error - " << error; }) @@ -2171,7 +2177,7 @@ bool OrcaCloudServiceAgent::http_post_auth(const std::string& path, const std::s }) .on_error([&](std::string body, std::string error, unsigned resp_status) { success = false; - status = resp_status; + status = resp_status == 0 ? 404 : resp_status; resp_body = body; BOOST_LOG_TRIVIAL(error) << "OrcaCloudServiceAgent: HTTP (auth) error - " << error; }) diff --git a/tests/libslic3r/test_preset_bundle_loading.cpp b/tests/libslic3r/test_preset_bundle_loading.cpp index a00e8f9a63..e2bf930767 100644 --- a/tests/libslic3r/test_preset_bundle_loading.cpp +++ b/tests/libslic3r/test_preset_bundle_loading.cpp @@ -100,3 +100,33 @@ TEST_CASE("Legacy bundle import without bundle metadata stays in the user preset CHECK(fs::equivalent(fs::path(imported->file).parent_path().parent_path(), user_root / PRESET_PRINT_NAME)); } +TEST_CASE("Current vendor type tolerates missing printer model", "[Preset][Bundle]") +{ + PresetBundle bundle; + + VendorProfile orca_vendor("ORCA"); + VendorProfile::PrinterModel model; + model.name = "Orca Test"; + orca_vendor.models.emplace_back(model); + bundle.vendors.emplace("ORCA", std::move(orca_vendor)); + + bundle.printers.get_edited_preset().config.erase("printer_model"); + + CHECK(bundle.get_current_vendor_type() == VendorType::Unknown); +} + +TEST_CASE("Printer extruder count tolerates missing nozzle diameter", "[Preset][Bundle]") +{ + PresetBundle bundle; + DynamicPrintConfig& config = bundle.printers.get_edited_preset().config; + + config.erase("nozzle_diameter"); + CHECK(bundle.get_printer_extruder_count() == 1); + + config.set_key_value("nozzle_diameter", new ConfigOptionFloats()); + CHECK(bundle.get_printer_extruder_count() == 1); + + config.set_key_value("nozzle_diameter", new ConfigOptionFloats({ 0.4, 0.6 })); + CHECK(bundle.get_printer_extruder_count() == 2); +} +