diff --git a/bbl/i18n/BambuStudio.pot b/bbl/i18n/BambuStudio.pot index 07f29fd855..e837141893 100644 --- a/bbl/i18n/BambuStudio.pot +++ b/bbl/i18n/BambuStudio.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -821,6 +821,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "" @@ -839,7 +842,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -862,7 +865,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -1993,9 +1996,6 @@ msgstr "" msgid "Jump to Layer" msgstr "" -msgid "Jump to layer" -msgstr "" - msgid "Please enter the layer number" msgstr "" @@ -3638,6 +3638,10 @@ msgid "" "confirming that the height is within the build volume." msgstr "" +#, possible-c-format, possible-boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "" @@ -4746,6 +4750,9 @@ msgstr "" msgid "0" msgstr "" +msgid "Don't show again" +msgstr "" + msgid "Calculating, please wait..." msgstr "" @@ -4755,9 +4762,6 @@ msgstr "" msgid "Update" msgstr "" -msgid "Don't show again" -msgstr "" - #, possible-c-format, possible-boost-format msgid "%s error" msgstr "" @@ -4942,6 +4946,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "" @@ -5017,13 +5024,13 @@ msgstr "" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "" -msgid "Nozzle Type" +msgid "Hardened Steel" msgstr "" msgid "Stainless Steel" msgstr "" -msgid "Hardened Steel" +msgid "Nozzle Type" msgstr "" #, possible-c-format, possible-boost-format @@ -5731,6 +5738,13 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -5823,6 +5837,9 @@ msgstr "" msgid "Show online staff-picked models on the home page" msgstr "" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "" @@ -6210,15 +6227,9 @@ msgstr "" msgid "Busy" msgstr "" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "" -msgid "PLA Plate" -msgstr "" - msgid "Bamabu Engineering Plate" msgstr "" @@ -6231,6 +6242,9 @@ msgstr "" msgid "Bamabu Textured PEI Plate" msgstr "" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "" @@ -6372,9 +6386,8 @@ msgid "" "change settings." msgstr "" -#, possible-c-format, possible-boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" @@ -6772,7 +6785,7 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" +msgid "Cool Plate" msgstr "" msgid "" @@ -7556,21 +7569,26 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" + msgid "Access Code" msgstr "" -msgid "Where to find your printer's IP and Access Code?" +msgid "Printer model" msgstr "" -msgid "Step 3: Ping the IP address to check for packet loss and latency." +msgid "Where to find your printer's IP and Access Code?" msgstr "" msgid "Connect" @@ -7585,9 +7603,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -7749,7 +7764,18 @@ msgid "" "\n" msgstr "" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" #, possible-boost-format @@ -8631,9 +8657,12 @@ msgid "" "object printing." msgstr "" +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" msgid "Nozzle height" @@ -9708,7 +9737,7 @@ msgid "" "value for this parameter is 15" msgstr "" -msgid "Conditional scarf joint" +msgid "Smart scarf seam application" msgstr "" msgid "" @@ -9716,7 +9745,7 @@ msgid "" "conceal the seams at sharp corners effectively." msgstr "" -msgid "Conditional angle threshold" +msgid "Scarf application angle threshold" msgstr "" msgid "" @@ -9755,7 +9784,7 @@ msgid "" "this parameter is 80%" msgstr "" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -10463,16 +10492,16 @@ msgid "" "XY Size compensation can not be combined with color-painting." msgstr "" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" - msgid "Loading of a model file failed." msgstr "" msgid "The supplied file couldn't be read because it's empty" msgstr "" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" @@ -10873,6 +10902,20 @@ msgstr "" msgid "Method" msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, possible-c-format, possible-boost-format msgid "%s is not compatible with %s" msgstr "" @@ -10880,6 +10923,22 @@ msgstr "" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "" +#, possible-c-format, possible-boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, possible-c-format, possible-boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "" diff --git a/bbl/i18n/cs/BambuStudio_cs.po b/bbl/i18n/cs/BambuStudio_cs.po index 87571be390..ded2a21635 100644 --- a/bbl/i18n/cs/BambuStudio_cs.po +++ b/bbl/i18n/cs/BambuStudio_cs.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: 2023-10-18 10:45+0800\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -827,6 +827,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Povrch" @@ -845,7 +848,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -868,7 +871,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2022,9 +2025,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Přejít na vrstvu" -msgid "Jump to layer" -msgstr "Přeskočit do vrstvy" - msgid "Please enter the layer number" msgstr "Zadejte prosím číslo vrstvy" @@ -3794,6 +3794,10 @@ msgstr "" "Prosím, vyřešte problém tím, že jej úplně přesunete na podložku nebo mimo ní " "a potvrďte, že výška je v rámci objemu stavby." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Výběr kroku kalibrace" @@ -4930,6 +4934,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Znovu Nezobrazovat" + msgid "Calculating, please wait..." msgstr "" @@ -4939,9 +4946,6 @@ msgstr "Stav" msgid "Update" msgstr "Aktualizovat" -msgid "Don't show again" -msgstr "Znovu Nezobrazovat" - #, c-format, boost-format msgid "%s error" msgstr "%s chyba" @@ -5129,6 +5133,9 @@ msgstr "Váš model potřebuje podpěry ! Povolte prosím podpůrný materiál." msgid "Gcode path overlap" msgstr "Překrytí cesty G-kódu" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Malování podpěr" @@ -5209,13 +5216,13 @@ msgstr "" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "" -msgid "Nozzle Type" +msgid "Hardened Steel" msgstr "" msgid "Stainless Steel" msgstr "" -msgid "Hardened Steel" +msgid "Nozzle Type" msgstr "" #, c-format, boost-format @@ -5962,6 +5969,13 @@ msgid "" "same time and manage multiple devices." msgstr "" +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6055,6 +6069,9 @@ msgstr "Online modely" msgid "Show online staff-picked models on the home page" msgstr "Zobrazit online modely vybrané týmem na úvodní stránce" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximální počet nedávných projektů" @@ -6444,15 +6461,9 @@ msgstr "Offline" msgid "Busy" msgstr "Zaneprázdněn" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Podložka" -msgid "PLA Plate" -msgstr "PLA Podložka" - msgid "Bamabu Engineering Plate" msgstr "Bamabu Engineering Podložka" @@ -6465,6 +6476,9 @@ msgstr "" msgid "Bamabu Textured PEI Plate" msgstr "" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Odeslat tiskovou úlohu na" @@ -6626,9 +6640,8 @@ msgid "" "change settings." msgstr "" -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" @@ -7066,8 +7079,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Podložka / PLA Podložka" +msgid "Cool Plate" +msgstr "" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -7880,26 +7893,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Krok 1, potvrďte, že Bambu Studio a vaše tiskárna jsou ve stejné síti LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Krok 2, pokud se IP a přístupový kód níže liší od skutečných hodnot na " -"tiskárně, opravte je." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Přístupový kód" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Kde najít IP a přístupový kód vaší tiskárny?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" - msgid "Connect" msgstr "" @@ -7912,9 +7927,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8088,8 +8100,19 @@ msgstr "" "Nepodařilo se vygenerovat G-kód pro neplatný vlastní G-kód.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Zkontrolujte prosím vlastní G-kód nebo použijte výchozí vlastní G-kód." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9063,12 +9086,13 @@ msgstr "" "Vzdálenost hrotu trysky k víčku. Používá se pro zamezení kolizi při tisku " "vedlejších objektů." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Poloměr vůle kolem extruderu. Používá se pro zamezení kolizi při tisku " -"vedlejších objektů." msgid "Nozzle height" msgstr "" @@ -10245,7 +10269,7 @@ msgstr "" "Tato hodnota je vyjádřena jako procento průměru aktuální trysky. Výchozí " "hodnota tohoto parametru je 15" -msgid "Conditional scarf joint" +msgid "Smart scarf seam application" msgstr "" msgid "" @@ -10253,7 +10277,7 @@ msgid "" "conceal the seams at sharp corners effectively." msgstr "" -msgid "Conditional angle threshold" +msgid "Scarf application angle threshold" msgstr "" msgid "" @@ -10296,7 +10320,7 @@ msgstr "" "vypočítána na základě výše nastavené rychlosti jízdy. Výchozí hodnota pro " "tento parametr je 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11123,18 +11147,18 @@ msgstr "" "natřený.\n" "Korekci velikosti XY nelze kombinovat s barevnou malbou." -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)" - msgid "Loading of a model file failed." msgstr "Nahrávání souboru modelu selhalo." msgid "The supplied file couldn't be read because it's empty" msgstr "Nahraný soubor nemohl být načten, 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)" + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Neznámý formát souboru. Vstupní soubor musí mít příponu .3mf nebo .zip.amf." @@ -11591,6 +11615,20 @@ msgstr "" msgid "Method" msgstr "Metoda" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s není kompatibilní s %s" @@ -11598,6 +11636,22 @@ msgstr "%s není kompatibilní s %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU není podporováno pro automatickou kalibraci dynamiky průtoku." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Připojování k tiskárně" @@ -13217,6 +13271,38 @@ msgid "" "probability of warping." msgstr "" +#~ msgid "Jump to layer" +#~ msgstr "Přeskočit do vrstvy" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Podložka" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Podložka / PLA Podložka" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Krok 1, potvrďte, že Bambu Studio a vaše tiskárna jsou ve stejné síti LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Krok 2, pokud se IP a přístupový kód níže liší od skutečných hodnot na " +#~ "tiskárně, opravte je." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Zkontrolujte prosím vlastní G-kód nebo použijte výchozí vlastní G-kód." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Poloměr vůle kolem extruderu. Používá se pro zamezení kolizi při tisku " +#~ "vedlejších objektů." + #~ msgid "Tree support branch angle" #~ msgstr "Úhel větve podpěr stromu" diff --git a/bbl/i18n/de/BambuStudio_de.po b/bbl/i18n/de/BambuStudio_de.po index 28084f8040..fdc1e279d8 100644 --- a/bbl/i18n/de/BambuStudio_de.po +++ b/bbl/i18n/de/BambuStudio_de.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -840,6 +840,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Oberfläche" @@ -858,7 +861,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -881,7 +884,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2073,9 +2076,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Zur Schicht springen" -msgid "Jump to layer" -msgstr "Zur Schicht springen" - msgid "Please enter the layer number" msgstr "Bitte geben Sie die Schichtnummer ein." @@ -3936,6 +3936,10 @@ msgstr "" "oder von der Druckplatte wegbewegen und stellen Sie sicher, dass die Höhe " "innerhalb des Bauvolumens liegt." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Auswahl des Kalibrierungsschritts" @@ -5118,6 +5122,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Nicht erneut anzeigen" + msgid "Calculating, please wait..." msgstr "" @@ -5127,9 +5134,6 @@ msgstr "Status" msgid "Update" msgstr "Update" -msgid "Don't show again" -msgstr "Nicht erneut anzeigen" - #, c-format, boost-format msgid "%s error" msgstr "%s Fehler" @@ -5319,6 +5323,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "G-Code Pfadüberlappung" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Stützen malen" @@ -5400,14 +5407,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Gehärteter Stahl" msgid "Stainless Steel" msgstr "Edelstahl" -msgid "Hardened Steel" -msgstr "Gehärteter Stahl" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6205,6 +6212,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6302,6 +6316,9 @@ msgstr "Online-Modelle" msgid "Show online staff-picked models on the home page" msgstr "Von Mitarbeitern ausgewählte Online-Models auf der Startseite anzeigen" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximale Anzahl aktueller Projekte" @@ -6696,15 +6713,9 @@ msgstr "Offline" msgid "Busy" msgstr "Beschäftigt" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA-Platte" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6717,6 +6728,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Druckauftrag senden an" @@ -6898,13 +6912,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7380,8 +7391,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate/PLA Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8237,29 +8248,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Schritt 1: Vergewissern Sie sich, dass Bambu Studio und Ihr Drucker sich im " -"selben LAN befinden." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Schritt 2: Wenn die IP und der Zugriffscode unten von den tatsächlichen " -"Werten Ihres Druckers abweichen, korrigieren Sie diese bitte." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Zugangscode" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Wo finde ich die IP und den Zugangscode meines Druckers?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Schritt 3: Pingen Sie die IP-Adresse an, um den Paketverlust und die " -"Latenzzeit zu überprüfen." - msgid "Connect" msgstr "" @@ -8272,9 +8282,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8464,10 +8471,19 @@ msgstr "" "werden.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Bitte überprüfen Sie den benutzerdefinierten G-Code oder verwenden Sie den " -"standardmäßigen benutzerdefinierten G-Code." #, boost-format msgid "Generating G-code: layer %1%" @@ -9522,12 +9538,13 @@ msgstr "" "Abstand von der Düsenspitze zum Deckel. Dient zur Kollisionsvermeidung beim " "objektweisen Drucken." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Sicherheitsradius um den Extruder: Dient zur Kollisionsvermeidung beim " -"objektweisen Drucken." msgid "Nozzle height" msgstr "Düsenhöhe" @@ -10796,8 +10813,8 @@ msgstr "" "Dieser Betrag wird als Prozentsatz des aktuellen Extruderdurchmessers " "ausgedrückt. Der Standardwert für diesen Parameter ist 15." -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10806,8 +10823,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10855,7 +10872,7 @@ msgstr "" "Fahrgeschwindigkeit berechnet. Der Standardwert für diesen Parameter beträgt " "80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11748,18 +11765,18 @@ msgstr "" "farbig bemalt ist.\n" "Die XY-Größenkompensation kann nicht mit der Farbmalerei kombiniert werden." -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." - msgid "Loading of a model file failed." msgstr "Das Laden der Modelldatei ist fehlgeschlagen." msgid "The supplied file couldn't be read because it's empty" 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." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Unbekanntes Dateiformat: Die Eingabedatei muss die Endung .3mf oder .zip.amf " @@ -12251,6 +12268,20 @@ msgstr "Muster" msgid "Method" msgstr "Methode" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s ist nicht kompatibel mit %s" @@ -12260,6 +12291,22 @@ msgstr "" "TPU wird von der automatischen Kalibrierung der Flussdynamik nicht " "unterstützt." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Verbindung zum Drucker herstellen" @@ -14096,6 +14143,59 @@ msgstr "" "wie z. B. ABS, die Wahrscheinlichkeit von Verformungen durch eine " "entsprechende Erhöhung der Heizbetttemperatur verringert werden kann?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Zur Schicht springen" + +#~ msgid "PLA Plate" +#~ msgstr "PLA-Platte" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Schritt 1: Vergewissern Sie sich, dass Bambu Studio und Ihr Drucker sich " +#~ "im selben LAN befinden." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Schritt 2: Wenn die IP und der Zugriffscode unten von den tatsächlichen " +#~ "Werten Ihres Druckers abweichen, korrigieren Sie diese bitte." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Schritt 3: Pingen Sie die IP-Adresse an, um den Paketverlust und die " +#~ "Latenzzeit zu überprüfen." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Bitte überprüfen Sie den benutzerdefinierten G-Code oder verwenden Sie " +#~ "den standardmäßigen benutzerdefinierten G-Code." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Sicherheitsradius um den Extruder: Dient zur Kollisionsvermeidung beim " +#~ "objektweisen Drucken." + #~ msgid "Tree support branch angle" #~ msgstr "Baumstütze Astwinkel" @@ -14740,9 +14840,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Einheiten des Modells umrechnen" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate/PLA Plate" - #~ msgid "Cool plate" #~ msgstr "Cool plate" diff --git a/bbl/i18n/en/BambuStudio_en.po b/bbl/i18n/en/BambuStudio_en.po index 0b8113a03e..24b30ce639 100644 --- a/bbl/i18n/en/BambuStudio_en.po +++ b/bbl/i18n/en/BambuStudio_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -831,6 +831,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Surface" @@ -849,7 +852,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -872,7 +875,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2033,9 +2036,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Jump to Layer" -msgid "Jump to layer" -msgstr "Jump to layer" - msgid "Please enter the layer number" msgstr "Please enter the layer number" @@ -3853,6 +3853,10 @@ msgstr "" "Please solve the problem by moving it totally on or off the plate, and " "confirming that the height is within the build volume." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Calibration step selection" @@ -5012,6 +5016,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Don't show again" + msgid "Calculating, please wait..." msgstr "" @@ -5021,9 +5028,6 @@ msgstr "Status" msgid "Update" msgstr "Update" -msgid "Don't show again" -msgstr "Don't show again" - #, c-format, boost-format msgid "%s error" msgstr "%s error" @@ -5211,6 +5215,9 @@ msgstr "Your model needs support! Please enable support material." msgid "Gcode path overlap" msgstr "Gcode path overlap" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Support Painting" @@ -5292,14 +5299,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Hardened Steel" msgid "Stainless Steel" msgstr "Stainless Steel" -msgid "Hardened Steel" -msgstr "Hardened Steel" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6070,6 +6077,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6167,6 +6181,9 @@ msgstr "Online Models" msgid "Show online staff-picked models on the home page" msgstr "Show online staff-picked models on the home page" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximum recent projects" @@ -6556,15 +6573,9 @@ msgstr "Offline" msgid "Busy" msgstr "Busy" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA Plate" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6577,6 +6588,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Send print job to" @@ -6749,13 +6763,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7208,8 +7219,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8045,26 +8056,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Step 2, if the IP and Access Code below are different from the actual values " -"on your printer, please correct them." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Access Code" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Where to find your printer's IP and Access Code?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Step 3: Ping the IP address to check for packet loss and latency." - msgid "Connect" msgstr "" @@ -8077,9 +8090,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8257,8 +8267,19 @@ msgstr "" "Failed to generate G-code for invalid custom G-code.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9284,12 +9305,13 @@ msgstr "" "Distance of the nozzle tip to the lid. Used for collision avoidance in by-" "object printing." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." msgid "Nozzle height" msgstr "Nozzle height" @@ -10512,8 +10534,8 @@ msgstr "" "This amount as a percentage of the current extruder diameter. The default " "value for this parameter is 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10522,8 +10544,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10570,7 +10592,7 @@ msgstr "" "be calculated based on the travel speed setting above.The default value for " "this parameter is 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11420,17 +11442,17 @@ msgstr "" "painted.\n" "XY Size compensation can not be combined with color-painting." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." - msgid "Loading of a model file failed." msgstr "Loading of a model file failed." msgid "The supplied file couldn't be read because it's empty" msgstr "The supplied file couldn't be read because it's empty" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "Unknown file format: input file must have .3mf or .zip.amf extension." @@ -11900,6 +11922,20 @@ msgstr "Pattern" msgid "Method" msgstr "Method" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s is not compatible with %s" @@ -11907,6 +11943,22 @@ msgstr "%s is not compatible with %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU is not supported for Flow Dynamics Auto-Calibration." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Connecting to printer" @@ -13711,6 +13763,54 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Jump to layer" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plate" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "Step 3: Ping the IP address to check for packet loss and latency." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "Please check the custom G-code or use the default custom G-code." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." + #~ msgid "Tree support branch angle" #~ msgstr "Tree support branch angle" @@ -14335,9 +14435,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Convert the units of model" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate/PLA Plate" - #~ msgid "Cool plate" #~ msgstr "Cool plate" diff --git a/bbl/i18n/es/BambuStudio_es.po b/bbl/i18n/es/BambuStudio_es.po index 5cfe66b205..ea3b843f91 100644 --- a/bbl/i18n/es/BambuStudio_es.po +++ b/bbl/i18n/es/BambuStudio_es.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -839,6 +839,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Superficie" @@ -857,7 +860,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -880,7 +883,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2060,9 +2063,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Saltar a la capa" -msgid "Jump to layer" -msgstr "Saltar a la capa" - msgid "Please enter the layer number" msgstr "Por favor, introduzca el número de capa." @@ -3923,6 +3923,10 @@ msgstr "" "Resuelva el problema colocándolo totalmente dentro de la placa y confirmando " "que la altura esté dentro del limite de altura." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Selección del paso de calibración" @@ -5092,6 +5096,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "No mostrar de nuevo" + msgid "Calculating, please wait..." msgstr "" @@ -5101,9 +5108,6 @@ msgstr "Estado" msgid "Update" msgstr "Actualizar" -msgid "Don't show again" -msgstr "No mostrar de nuevo" - #, c-format, boost-format msgid "%s error" msgstr "%s error" @@ -5296,6 +5300,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "Superposición de la ruta del Gcode" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Soporte pintado" @@ -5377,14 +5384,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Acero reforzado" msgid "Stainless Steel" msgstr "Acero inoxidable" -msgid "Hardened Steel" -msgstr "Acero reforzado" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6179,6 +6186,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6280,6 +6294,9 @@ msgstr "" "Mostrar en línea los modelos seleccionados por el personal en la página de " "inicio" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Número máximo de proyectos recientes" @@ -6676,15 +6693,9 @@ msgstr "Fuera de línea" msgid "Busy" msgstr "Ocupado" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Placa frío Bambu" -msgid "PLA Plate" -msgstr "Placa PLA" - msgid "Bamabu Engineering Plate" msgstr "Placa de Ingenieria Bambu" @@ -6697,6 +6708,9 @@ msgstr "Placa de alta temperatura" msgid "Bamabu Textured PEI Plate" msgstr "Placa PEI texturizada Bambu" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Enviar el trabajo de impresión a" @@ -6874,13 +6888,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7349,8 +7360,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Placa fria/placa PLA" +msgid "Cool Plate" +msgstr "Placa fría" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8203,28 +8214,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Paso 1: confirme que Bambu Studio y su impresora estén en la misma LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Paso 2: Si la IP y el código de acceso que aparecen a continuación son " -"diferentes de los valores reales de la impresora, corríjalos." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Código de acceso" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "¿Dónde puedo encontrar la IP y el código de acceso de la impresora?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Paso 3: Haga ping a la dirección IP para comprobar la pérdida de paquetes y " -"la latencia." - msgid "Connect" msgstr "" @@ -8237,9 +8248,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8422,10 +8430,19 @@ msgstr "" "válido.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Por favor, compruebe el código G personalizado o utilice el código G " -"personalizado por defecto." #, boost-format msgid "Generating G-code: layer %1%" @@ -9485,12 +9502,13 @@ msgstr "" "Distancia desde la punta de la boquilla hasta la tapa. Se utiliza para " "evitar colisiones en la impresión por objetos." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Radio de separación alrededor del extrusor. Se utiliza para evitar " -"colisiones en la impresión por objetos." msgid "Nozzle height" msgstr "Altura de la boquilla" @@ -10768,8 +10786,8 @@ msgstr "" "Esta cantidad se expresa como un porcentaje del diámetro actual del " "extrusor. El valor por defecto de este parámetro es 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10778,8 +10796,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10827,7 +10845,7 @@ msgstr "" "velocidad de viaje indicado anteriormente. El valor predeterminado de este " "parámetro es el 80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11706,18 +11724,18 @@ msgstr "" "está pintado de color.\n" "La compensación de tamaño XY no se puede combinar con la pintura en color." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Formato de archivo desconocido: el archivo de entrada debe tener la " -"extensión.stl, .obj o .amf (.xml)." - msgid "Loading of a model file failed." msgstr "No se pudo cargar el archivo del modelo." msgid "The supplied file couldn't be read because it's empty" msgstr "No se pudo leer el archivo suministrado porque 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 la " +"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 la " @@ -12205,6 +12223,20 @@ msgstr "Patrón" msgid "Method" msgstr "Método" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s no es compatible con %s" @@ -12212,6 +12244,22 @@ msgstr "%s no es compatible con %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "La calibración automática de Flow Dynamics no admite el TPU." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Conexión a la impresora" @@ -14050,6 +14098,58 @@ msgstr "" "aumentar adecuadamente la temperatura del lecho térmico puede reducir la " "probabilidad de alabeo?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Saltar a la capa" + +#~ msgid "PLA Plate" +#~ msgstr "Placa PLA" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Placa fria/placa PLA" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Paso 1: confirme que Bambu Studio y su impresora estén en la misma LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Paso 2: Si la IP y el código de acceso que aparecen a continuación son " +#~ "diferentes de los valores reales de la impresora, corríjalos." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Paso 3: Haga ping a la dirección IP para comprobar la pérdida de paquetes " +#~ "y la latencia." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Por favor, compruebe el código G personalizado o utilice el código G " +#~ "personalizado por defecto." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Radio de separación alrededor del extrusor. Se utiliza para evitar " +#~ "colisiones en la impresión por objetos." + #~ msgid "Tree support branch angle" #~ msgstr "Ángulo de la rama de soporte del árbol" @@ -14694,9 +14794,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Convertir las unidades del modelo" -#~ msgid "Cool Plate" -#~ msgstr "Placa fría" - #~ msgid "Cool plate" #~ msgstr "Placa fría" diff --git a/bbl/i18n/fr/BambuStudio_fr.po b/bbl/i18n/fr/BambuStudio_fr.po index 692026a3bf..28dbe8ffe8 100644 --- a/bbl/i18n/fr/BambuStudio_fr.po +++ b/bbl/i18n/fr/BambuStudio_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -839,6 +839,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Surface" @@ -857,7 +860,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -880,7 +883,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2063,9 +2066,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Aller à la couche" -msgid "Jump to layer" -msgstr "Aller à la couche" - msgid "Please enter the layer number" msgstr "Veuillez entrer le numéro de couche." @@ -3924,6 +3924,10 @@ msgstr "" "hors de la plaque et en confirmant que la hauteur est comprise dans le " "volume de construction." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Sélection de l'étape de calibration" @@ -5098,6 +5102,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Ne plus afficher" + msgid "Calculating, please wait..." msgstr "" @@ -5107,9 +5114,6 @@ msgstr "État" msgid "Update" msgstr "Mise à jour" -msgid "Don't show again" -msgstr "Ne plus afficher" - #, c-format, boost-format msgid "%s error" msgstr "Erreur %s" @@ -5303,6 +5307,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "Chevauchement dans le tracé du Gcode" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Soutenir la peinture" @@ -5382,14 +5389,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Acier Trempé" msgid "Stainless Steel" msgstr "Acier Inoxydable" -msgid "Hardened Steel" -msgstr "Acier Trempé" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6185,6 +6192,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6285,6 +6299,9 @@ msgid "Show online staff-picked models on the home page" msgstr "" "Afficher les modèles en ligne sélectionnés par le staff sur la page d'accueil" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Projets récents maximum" @@ -6681,15 +6698,9 @@ msgstr "Hors ligne" msgid "Busy" msgstr "Occupé" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Plaque Bambu Cool Plate" -msgid "PLA Plate" -msgstr "Plaque PLA" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6702,6 +6713,9 @@ msgstr "High Temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Envoyer le travail d'impression à" @@ -6885,13 +6899,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7371,7 +7382,7 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" +msgid "Cool Plate" msgstr "Cool Plate / PLA Plate" msgid "" @@ -8231,27 +8242,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Étape 1, confirmez que Bambu Studio et votre imprimante se trouvent sur le " -"même réseau local." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Étape 2, si l'adresse IP et le code d'accès ci-dessous sont différents des " -"valeurs actuelles de votre imprimante, corrigez-les." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Code d'Accès" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Où trouver l'adresse IP et le code d'accès de votre imprimante ?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Étape 3 : ping l'IP pour vérifier la perte de paquets et la latence." - msgid "Connect" msgstr "" @@ -8264,9 +8276,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8451,10 +8460,19 @@ msgid "" msgstr "" "Échec de la génération du gcode pour un G-code personnalisé non valide.\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Veuillez vérifier le G-code personnalisé ou utiliser le G-code personnalisé " -"par défaut." #, boost-format msgid "Generating G-code: layer %1%" @@ -9523,12 +9541,13 @@ msgstr "" "Distance entre la pointe de la buse et le capot. Utilisé pour éviter les " "collisions lors de l'impression \"par objets\"." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Rayon de dégagement autour de l'extrudeuse : utilisé pour éviter les " -"collisions lors de l'impression par objets." msgid "Nozzle height" msgstr "Hauteur de buse" @@ -10801,8 +10820,8 @@ msgstr "" "Cette quantité est exprimée en pourcentage du diamètre de la buse actuelle. " "La valeur par défaut de ce paramètre est 15." -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10811,8 +10830,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10859,7 +10878,7 @@ msgstr "" "80%), elle sera calculée sur la base du réglage de la vitesse de déplacement " "ci-dessus. La valeur par défaut de ce paramètre est 80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11746,18 +11765,18 @@ msgstr "" "La compensation de la taille XY ne peut pas être combinée avec la peinture " "couleur." -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)." - msgid "Loading of a model file failed." msgstr "Le chargement du fichier modèle a échoué." msgid "The supplied file couldn't be read because it's empty" 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)." + 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 " @@ -12248,6 +12267,20 @@ msgstr "Motif" msgid "Method" msgstr "Méthode" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s n'est pas compatible avec %s" @@ -12257,6 +12290,22 @@ msgstr "" "Le TPU n'est pas compatible avec la Calibration automatique de Flux " "Dynamique." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Connexion à l'imprimante" @@ -14105,6 +14154,58 @@ msgstr "" "que l'ABS, une augmentation appropriée de la température du plateau peut " "réduire le risque de déformation ?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Aller à la couche" + +#~ msgid "PLA Plate" +#~ msgstr "Plaque PLA" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Étape 1, confirmez que Bambu Studio et votre imprimante se trouvent sur " +#~ "le même réseau local." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Étape 2, si l'adresse IP et le code d'accès ci-dessous sont différents " +#~ "des valeurs actuelles de votre imprimante, corrigez-les." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Étape 3 : ping l'IP pour vérifier la perte de paquets et la latence." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Veuillez vérifier le G-code personnalisé ou utiliser le G-code " +#~ "personnalisé par défaut." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Rayon de dégagement autour de l'extrudeuse : utilisé pour éviter les " +#~ "collisions lors de l'impression par objets." + #~ msgid "Tree support branch angle" #~ msgstr "Angle de branche support arborescent" @@ -14753,9 +14854,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Convertir les unités du modèle" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate / PLA Plate" - #~ msgid "Cool plate" #~ msgstr "Cool Plate" diff --git a/bbl/i18n/hu/BambuStudio_hu.po b/bbl/i18n/hu/BambuStudio_hu.po index 7f002fb005..b860334c23 100644 --- a/bbl/i18n/hu/BambuStudio_hu.po +++ b/bbl/i18n/hu/BambuStudio_hu.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -836,6 +836,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Felszín" @@ -854,7 +857,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -877,7 +880,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2058,9 +2061,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Ugrás a rétegre" -msgid "Jump to layer" -msgstr "Ugrás a rétegre" - msgid "Please enter the layer number" msgstr "Kérjük, add meg a réteg számát" @@ -3899,6 +3899,10 @@ msgstr "" "Kérjük, helyezd az objektumot teljesen a tálcára és győződj meg, hogy a " "magassága belefér a nyomtatótérbe." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Kalibrálási lépés kiválasztása" @@ -5061,6 +5065,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Ne mutasd újra" + msgid "Calculating, please wait..." msgstr "" @@ -5070,9 +5077,6 @@ msgstr "Állapot" msgid "Update" msgstr "Frissítés" -msgid "Don't show again" -msgstr "Ne mutasd újra" - #, c-format, boost-format msgid "%s error" msgstr "%s hiba" @@ -5261,6 +5265,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "G-kód útvonal átfedés" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Támasz festése" @@ -5342,14 +5349,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Edzett acél" msgid "Stainless Steel" msgstr "Rozsdamentes acél" -msgid "Hardened Steel" -msgstr "Edzett acél" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6131,6 +6138,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6229,6 +6243,9 @@ msgid "Show online staff-picked models on the home page" msgstr "" "Mutassa a munkatársaink által kiválasztott online modelleket a kezdőlapon" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Legutóbbi projektek maximális száma" @@ -6618,15 +6635,9 @@ msgstr "Offline" msgid "Busy" msgstr "Elfoglalt" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA-tálca" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6639,6 +6650,9 @@ msgstr "High Temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Nyomtatási feladat küldése" @@ -6816,13 +6830,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7287,8 +7298,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8135,29 +8146,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"1. lépés: Ellenőrizd, hogy a Bambu Studio és a nyomtató ugyanazon a helyi " -"hálózaton van." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"2. lépés: Ha az alábbi IP és hozzáférési kód eltér a nyomtatón láthatótól, " -"kérjük, javítsd ki őket." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Hozzáférési kód" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Hol találom a nyomtató IP címét és a hozzáférési kódot?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"3. lépés: Pingeld meg az IP-címet a csomagveszteség és késleltetés " -"ellenőrzéséhez." - msgid "Connect" msgstr "" @@ -8170,9 +8180,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8355,10 +8362,19 @@ msgstr "" "Nem sikerült a G-kód generálása érvénytelen egyedi G-kód miatt.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Kérjük, ellenőrizd az egyedi G-kódot vagy használd az alapértelmezett egyedi " -"G-kódot." #, boost-format msgid "Generating G-code: layer %1%" @@ -9411,12 +9427,13 @@ msgstr "" "A fúvóka hegye és a nyomtató teteje közötti távolság. Tárgyanként történő " "nyomtatás során az ütközések elkerülésére szolgál." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Az extruder körüli szabadon hagyott terület sugara. Tárgyanként történő " -"nyomtatás során az ütközések elkerülésére szolgál." msgid "Nozzle height" msgstr "Fúvóka magassága" @@ -10670,8 +10687,8 @@ msgstr "" "Ezt a mennyiséget az extruder aktuális átmérőjének százalékában fejezzük ki. " "Ennek a paraméternek az alapértelmezett értéke 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10680,8 +10697,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10728,7 +10745,7 @@ msgstr "" "sebességbeállítás alapján számítja ki. Ennek a paraméternek az " "alapértelmezett értéke 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11600,18 +11617,18 @@ msgstr "" "tartalmaz.\n" "Az XY méretkompenzáció nem kombinálható színfestéssel." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Ismeretlen fájlformátum. A bemeneti fájlnak .stl, .obj vagy .amf (.xml) " -"kiterjesztésűnek kell lennie." - msgid "Loading of a model file failed." msgstr "A modellfájl betöltése sikertelen." msgid "The supplied file couldn't be read because it's empty" msgstr "A megadott fájlt nem lehet beolvasni, mert üres" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Ismeretlen fájlformátum. A bemeneti fájlnak .stl, .obj vagy .amf (.xml) " +"kiterjesztésűnek kell lennie." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Ismeretlen fájlformátum: a bemeneti fájlnak .3mf vagy .zip .amf " @@ -12092,6 +12109,20 @@ msgstr "Mintázat" msgid "Method" msgstr "Módszer" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s nem kompatibilis ezzel: %s" @@ -12099,6 +12130,22 @@ msgstr "%s nem kompatibilis ezzel: %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "Nem használhatsz TPU-t az áramlásdinamika kalibrálásához." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Csatlakozás a nyomtatóhoz" @@ -13905,6 +13952,59 @@ msgstr "" "Tudtad, hogy a vetemedésre hajlamos anyagok (például ABS) nyomtatásakor a " "tárgyasztal hőmérsékletének növelése csökkentheti a vetemedés valószínűségét?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Ugrás a rétegre" + +#~ msgid "PLA Plate" +#~ msgstr "PLA-tálca" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "1. lépés: Ellenőrizd, hogy a Bambu Studio és a nyomtató ugyanazon a helyi " +#~ "hálózaton van." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "2. lépés: Ha az alábbi IP és hozzáférési kód eltér a nyomtatón " +#~ "láthatótól, kérjük, javítsd ki őket." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "3. lépés: Pingeld meg az IP-címet a csomagveszteség és késleltetés " +#~ "ellenőrzéséhez." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Kérjük, ellenőrizd az egyedi G-kódot vagy használd az alapértelmezett " +#~ "egyedi G-kódot." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Az extruder körüli szabadon hagyott terület sugara. Tárgyanként történő " +#~ "nyomtatás során az ütközések elkerülésére szolgál." + #~ msgid "Tree support branch angle" #~ msgstr "Fa típusú támasz ágainak szöge" @@ -14538,9 +14638,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Modell mértékegységének átváltása" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate" - #~ msgid "Cool plate" #~ msgstr "Cool plate" diff --git a/bbl/i18n/it/BambuStudio_it.po b/bbl/i18n/it/BambuStudio_it.po index d58b5a2c68..39df12d1bf 100644 --- a/bbl/i18n/it/BambuStudio_it.po +++ b/bbl/i18n/it/BambuStudio_it.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -839,6 +839,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Superficie" @@ -857,7 +860,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -880,7 +883,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2056,9 +2059,6 @@ msgstr "Ok" msgid "Jump to Layer" msgstr "Vai al layer" -msgid "Jump to layer" -msgstr "Vai al layer" - msgid "Please enter the layer number" msgstr "Inserisci numero del layer" @@ -3912,6 +3912,10 @@ msgstr "" "altezza. Risolvi il problema spostandolo completamente sopra o fuori dalla " "piastra e verificando che l altezza rientri nel volume di costruzione." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Seleziona calibrazione" @@ -5072,6 +5076,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Non mostrare più" + msgid "Calculating, please wait..." msgstr "" @@ -5081,9 +5088,6 @@ msgstr "Stato" msgid "Update" msgstr "Aggiorna" -msgid "Don't show again" -msgstr "Non mostrare più" - #, c-format, boost-format msgid "%s error" msgstr "errore %s" @@ -5273,6 +5277,9 @@ msgstr "Il modello necessita di supporti! Abilita i materiali di supporto." msgid "Gcode path overlap" msgstr "Sovrapposizione percorso G-code" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Pittura Supporti" @@ -5354,14 +5361,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Acciaio temprato" msgid "Stainless Steel" msgstr "Acciaio inox" -msgid "Hardened Steel" -msgstr "Acciaio temprato" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6146,6 +6153,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6244,6 +6258,9 @@ msgstr "Modelli Online" msgid "Show online staff-picked models on the home page" msgstr "Mostra i modelli online selezionati dallo staff nella home page" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Numero massimo di progetti recenti" @@ -6634,15 +6651,9 @@ msgstr "Off-line" msgid "Busy" msgstr "Occupato" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA Plate" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6655,6 +6666,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Invia stampa a" @@ -6831,13 +6845,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7305,8 +7316,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8159,28 +8170,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Step 1, conferma che Bambu Studio e la tua stampante siano nella stessa LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Step 2, se l'IP e il codice di accesso riportati di seguito sono diversi dai " -"valori effettivi sulla stampante, correggili." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Codice di accesso" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Dove trovo l'IP e il codice accesso della stampante?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Step 3: eseguire il ping dell'indirizzo IP per verificare la perdita di " -"pacchetti e latenza." - msgid "Connect" msgstr "" @@ -8193,9 +8204,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8377,10 +8385,19 @@ msgstr "" "Impossibile generare il G-code per G-code personalizzato non valido.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Controlla il G-code personalizzato o utilizza il G-code personalizzato " -"predefinito." #, boost-format msgid "Generating G-code: layer %1%" @@ -9436,12 +9453,13 @@ msgstr "" "Distanza dalla punta del nozzle al coperchio. Utilizzato per evitare le " "collisioni nella stampa oggetto per oggetto." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Raggio di sicurezza attorno all'estrusore: utilizzato per evitare collisioni " -"nella stampa per oggetto." msgid "Nozzle height" msgstr "Altezza nozzle" @@ -10707,8 +10725,8 @@ msgstr "" "Questa quantità è espressa in percentuale del diametro attuale " "dell'estrusore. Il valore predefinito per questo parametro è 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10717,8 +10735,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10765,7 +10783,7 @@ msgstr "" "(ad es. 80%), sarà calcolato in base all'impostazione di spostamento di cui " "sopra. Il valore predefinito per questo parametro è 80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11649,18 +11667,18 @@ msgstr "" "La compensazione delle dimensioni XY non può essere combinata con la " "colorazione." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Formato file sconosciuto. Il file di input deve avere estensione .stl, ." -"obj, .amf(.xml)." - msgid "Loading of a model file failed." msgstr "Caricamento file del modello non riuscito." msgid "The supplied file couldn't be read because it's empty" 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 estensione .stl, ." +"obj, .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 estensione .3mf o .zip." @@ -12146,6 +12164,20 @@ msgstr "Trama" msgid "Method" msgstr "Metodo" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s non è compatibile con %s" @@ -12153,6 +12185,22 @@ msgstr "%s non è compatibile con %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "La calibrazione automatica del Flusso Dinamico non supporta il TPU." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Connessione alla stampante" @@ -13976,6 +14024,59 @@ msgstr "" "aumentare adeguatamente la temperatura del piano può ridurre la probabilità " "di deformazione." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Vai al layer" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plate" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Step 1, conferma che Bambu Studio e la tua stampante siano nella stessa " +#~ "LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Step 2, se l'IP e il codice di accesso riportati di seguito sono diversi " +#~ "dai valori effettivi sulla stampante, correggili." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Step 3: eseguire il ping dell'indirizzo IP per verificare la perdita di " +#~ "pacchetti e latenza." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Controlla il G-code personalizzato o utilizza il G-code personalizzato " +#~ "predefinito." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Raggio di sicurezza attorno all'estrusore: utilizzato per evitare " +#~ "collisioni nella stampa per oggetto." + #~ msgid "Tree support branch angle" #~ msgstr "Angolo ramo supporti ad albero" @@ -14618,9 +14719,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Converti le unità del modello" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate" - #~ msgid "Cool plate" #~ msgstr "Cool Plate" diff --git a/bbl/i18n/ja/BambuStudio_ja.po b/bbl/i18n/ja/BambuStudio_ja.po index 12c2e5ecbe..a2aa68f6b6 100644 --- a/bbl/i18n/ja/BambuStudio_ja.po +++ b/bbl/i18n/ja/BambuStudio_ja.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -830,6 +830,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "表面に沿う" @@ -848,7 +851,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -871,7 +874,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2021,9 +2024,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "積層に移動" -msgid "Jump to layer" -msgstr "積層に移動" - msgid "Please enter the layer number" msgstr "層の番号をご入力ください" @@ -3797,6 +3797,10 @@ msgstr "" "プレートの境界を越えるか、高さ制限を超えるオブジェクトがあります、ご確認くだ" "さい" +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "キャリブレーション項目を選択" @@ -4947,6 +4951,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "次回から表示しない" + msgid "Calculating, please wait..." msgstr "" @@ -4956,9 +4963,6 @@ msgstr "デバイス状態" msgid "Update" msgstr "更新" -msgid "Don't show again" -msgstr "次回から表示しない" - #, c-format, boost-format msgid "%s error" msgstr "%s エラー" @@ -5144,6 +5148,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "G-codeにパスのオーバーラップがあります" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "サポートペイント" @@ -5221,14 +5228,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "ノズルタイプ" +msgid "Hardened Steel" +msgstr "焼入れスチール" msgid "Stainless Steel" msgstr "ステンレススチール" -msgid "Hardened Steel" -msgstr "焼入れスチール" +msgid "Nozzle Type" +msgstr "ノズルタイプ" #, c-format, boost-format msgid "%.1f" @@ -5994,6 +6001,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6091,6 +6105,9 @@ msgstr "Online Models" msgid "Show online staff-picked models on the home page" msgstr "Show online staff-picked models on the home page" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximum recent projects" @@ -6480,15 +6497,9 @@ msgstr "オフライン" msgid "Busy" msgstr "ビジー状態" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu 常温プレート" -msgid "PLA Plate" -msgstr "PLA Plate" - msgid "Bamabu Engineering Plate" msgstr "Bambu エンジニアリングプレート" @@ -6501,6 +6512,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "造形タスクを送信" @@ -6655,13 +6669,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7107,8 +7118,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "常温プレート" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -7933,25 +7944,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Step 1: Bambu Studioとプリンターが同一のLANに繋いでいること確認してください。" msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Step 2: 下記IPアドレスやアクセスコードが一致していない場合修正してください。" + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "アクセスコード" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "どこでプリンターのIPアドレスとアクセスコードを確認できますか?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Step 3: IPアドレスにpingを送信し、パケットロスや遅延を確認します。" - msgid "Connect" msgstr "" @@ -7964,9 +7978,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8139,8 +8150,19 @@ msgid "" "\n" msgstr "G-codeを生成できませんでした\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "カスタムG-codeを確認するか、デフォルトを使用してください。" +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9129,12 +9151,13 @@ msgid "" msgstr "" "ノズル先端から蓋までの距離。オブジェクト順で造形する時に衝突防止用です。" +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"押出機のクリアランス(半径):オブジェクト順で造形する時にこのパラメータでオ" -"ブジェクトの間隔を計算します。" msgid "Nozzle height" msgstr "Nozzle height" @@ -10332,8 +10355,8 @@ msgstr "" "This amount is expressed as a percentage of the current extruder diameter. " "The default value for this parameter is 15." -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10342,8 +10365,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10390,7 +10413,7 @@ msgstr "" "be calculated based on the travel speed setting above. The default value for " "this parameter is 80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11205,18 +11228,18 @@ msgstr "" "painted.\n" "XY Size compensation can not be combined with color-painting." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Unknown file format: input file must have .stl, .obj, or .amf(.xml) " -"extension." - msgid "Loading of a model file failed." msgstr "Loading of model file failed." msgid "The supplied file couldn't be read because it's empty" msgstr "The supplied file couldn't be read because it's empty." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Unknown file format: input file must have .stl, .obj, or .amf(.xml) " +"extension." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "Unknown file format: input file must have .3mf or .zip.amf extension." @@ -11689,6 +11712,20 @@ msgstr "Pattern" msgid "Method" msgstr "Method" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s is not compatible with %s" @@ -11696,6 +11733,22 @@ msgstr "%s is not compatible with %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU is not supported by Flow Dynamics Auto-Calibration." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Connecting to printer" @@ -13472,6 +13525,55 @@ msgstr "" "ABS, appropriately increasing the heatbed temperature can reduce the " "probability of warping?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "積層に移動" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plate" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Step 1: Bambu Studioとプリンターが同一のLANに繋いでいること確認してくださ" +#~ "い。" + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Step 2: 下記IPアドレスやアクセスコードが一致していない場合修正してくださ" +#~ "い。" + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "Step 3: IPアドレスにpingを送信し、パケットロスや遅延を確認します。" + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "カスタムG-codeを確認するか、デフォルトを使用してください。" + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "押出機のクリアランス(半径):オブジェクト順で造形する時にこのパラメータで" +#~ "オブジェクトの間隔を計算します。" + #~ msgid "Tree support branch angle" #~ msgstr "ツリーサポート枝アングル" @@ -14077,9 +14179,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "モデルの単位を変換" -#~ msgid "Cool Plate" -#~ msgstr "常温プレート" - #~ msgid "Cool plate" #~ msgstr "常温プレート" diff --git a/bbl/i18n/ko/BambuStudio_ko.po b/bbl/i18n/ko/BambuStudio_ko.po index f4b59bf714..7e0b230c6a 100644 --- a/bbl/i18n/ko/BambuStudio_ko.po +++ b/bbl/i18n/ko/BambuStudio_ko.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -836,6 +836,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "표면" @@ -854,7 +857,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -877,7 +880,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2025,9 +2028,6 @@ msgstr "확인" msgid "Jump to Layer" msgstr "레이어로 이동" -msgid "Jump to layer" -msgstr "레이어로 이동" - msgid "Please enter the layer number" msgstr "레이어 번호를 입력하세요." @@ -3808,6 +3808,10 @@ msgstr "" "플레이트 안 또는 밖으로 완전히 옮기고 높이가 빌드 볼륨 내에 있는지 확인하여 " "문제를 해결하십시오." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "캘리브레이션 단계 선택" @@ -4962,6 +4966,9 @@ msgstr "" msgid "0" msgstr "" +msgid "Don't show again" +msgstr "다시 표시하지 않음" + msgid "Calculating, please wait..." msgstr "" @@ -4971,9 +4978,6 @@ msgstr "출력상황" msgid "Update" msgstr "업데이트" -msgid "Don't show again" -msgstr "다시 표시하지 않음" - #, c-format, boost-format msgid "%s error" msgstr "%s 오류" @@ -5157,6 +5161,9 @@ msgstr "출력모델에 서포트가 필요합니다. 서포트를 활성화하 msgid "Gcode path overlap" msgstr "G 코드 경로 겹침" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "서포트 페인팅" @@ -5237,14 +5244,14 @@ msgstr "노즐 응집 감지" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "노즐에 필라멘트나 기타 이물질이 뭉쳐져 있는지 확인하세요." -msgid "Nozzle Type" -msgstr "노즐 유형" +msgid "Hardened Steel" +msgstr "경화강" msgid "Stainless Steel" msgstr "스테인레스 스틸" -msgid "Hardened Steel" -msgstr "경화강" +msgid "Nozzle Type" +msgstr "노즐 유형" #, c-format, boost-format msgid "%.1f" @@ -6015,6 +6022,13 @@ msgstr "" "이 옵션을 활성화하면 동시에 여러 장치에 작업을 보내고 여러 장치를 관리할 수 " "있습니다." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6113,6 +6127,9 @@ msgstr "온라인 모델" msgid "Show online staff-picked models on the home page" msgstr "홈페이지에서 추천 온라인 모델 보기" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "최대 최근 프로젝트 수" @@ -6503,15 +6520,9 @@ msgstr "오프라인" msgid "Busy" msgstr "바쁜" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "뱀부 쿨 플레이트" -msgid "PLA Plate" -msgstr "PLA 플레이트" - msgid "Bamabu Engineering Plate" msgstr "뱀부 엔지니어링 플레이트" @@ -6524,6 +6535,9 @@ msgstr "고온 플레이트" msgid "Bamabu Textured PEI Plate" msgstr "뱀부 질감 PEI 플레이트" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "출력 작업 보내기" @@ -6688,11 +6702,10 @@ msgstr "" "슬라이스 파일의 노즐 직경이 저장된 노즐과 일치하지 않습니다. 최근에 노즐을 변" "경한 경우 장치 > 프린터 부품으로 이동하여 설정을 변경하세요." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" -msgstr "고온 재료(%s 재료)를 %s로 인쇄하면 노즐이 손상될 수 있습니다." +msgstr "" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "위의 오류를 수정하십시오. 그렇지 않으면 인쇄를 계속할 수 없습니다." @@ -7133,8 +7146,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "쿨 플레이트 / PLA 플레이트" +msgid "Cool Plate" +msgstr "" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -7966,26 +7979,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"1단계, Bambu Studio와 프린터가 동일한 인터넷 망에 연결되어 있는지 확인하십시" -"오." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"2단계. 아래의 IP 및 액세스 코드가 프린터의 실제 값과 다른 경우 수정하십시오." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "액세스 코드" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "프린터의 IP 및 액세스 코드는 어디서 찾을 수 있습니까?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "3단계: IP 주소를 ping하여 패킷 손실 및 대기 시간을 확인합니다." - msgid "Connect" msgstr "" @@ -7998,9 +8013,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8175,8 +8187,19 @@ msgstr "" "잘못된 커스텀 G 코드로 인해 G 코드생성에 실패했습니다. \n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "커스텀 G 코드를 확인하거나 기본 커스텀 G 코드를 사용하십시오." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9178,10 +9201,13 @@ msgid "" msgstr "" "노즐 끝에서 뚜껑까지의 거리. 객체별 출력에서 충돌을 피하는 데 사용됩니다." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "압출기 주변 안전 반경: 객체별 출력에서 충돌 방지를 위해 사용됩니다." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." +msgstr "" msgid "Nozzle height" msgstr "노즐 높이" @@ -10395,8 +10421,8 @@ msgstr "" "This amount as a percentage of the current extruder diameter. The default " "value for this parameter is 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10405,8 +10431,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10453,7 +10479,7 @@ msgstr "" "be calculated based on the travel speed setting above.The default value for " "this parameter is 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11280,18 +11306,18 @@ msgstr "" "개체의 XY 크기 보정은 색상으로 칠해져 있기 때문에 사용되지 않습니다.\n" "XY 크기 보정은 컬러 페인팅과 함께 사용할 수 없습니다." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"알 수 없는 파일 형식: 입력 파일의 확장자는 .stl, .obj 또는 .amf(.xml)여야 합" -"니다." - msgid "Loading of a model file failed." msgstr "모델 파일 로드에 실패했습니다." msgid "The supplied file couldn't be read because it's empty" msgstr "제공된 파일이 비어 있어 읽을 수 없습니다." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"알 수 없는 파일 형식: 입력 파일의 확장자는 .stl, .obj 또는 .amf(.xml)여야 합" +"니다." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "알 수 없는 파일 형식: 입력 파일의 확장자는.3mf 또는.zip.amf여야 합니다." @@ -11761,6 +11787,20 @@ msgstr "Pattern" msgid "Method" msgstr "Method" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s 와 호환되지 않습니다. %s" @@ -11768,6 +11808,22 @@ msgstr "%s 와 호환되지 않습니다. %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU is not supported for Flow Dynamics Auto-Calibration." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Connecting to printer" @@ -13562,6 +13618,51 @@ msgstr "" "ABS 등 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이" "면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "고온 재료(%s 재료)를 %s로 인쇄하면 노즐이 손상될 수 있습니다." + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "레이어로 이동" + +#~ msgid "PLA Plate" +#~ msgstr "PLA 플레이트" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "쿨 플레이트 / PLA 플레이트" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "1단계, Bambu Studio와 프린터가 동일한 인터넷 망에 연결되어 있는지 확인하십" +#~ "시오." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "2단계. 아래의 IP 및 액세스 코드가 프린터의 실제 값과 다른 경우 수정하십시" +#~ "오." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "3단계: IP 주소를 ping하여 패킷 손실 및 대기 시간을 확인합니다." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "커스텀 G 코드를 확인하거나 기본 커스텀 G 코드를 사용하십시오." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "압출기 주변 안전 반경: 객체별 출력에서 충돌 방지를 위해 사용됩니다." + #~ msgid "Tree support branch angle" #~ msgstr "트리서포트 가지 각도" diff --git a/bbl/i18n/nl/BambuStudio_nl.po b/bbl/i18n/nl/BambuStudio_nl.po index 274ae911fb..7aaf920cf0 100644 --- a/bbl/i18n/nl/BambuStudio_nl.po +++ b/bbl/i18n/nl/BambuStudio_nl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -838,6 +838,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Oppervlak" @@ -856,7 +859,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -879,7 +882,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2068,9 +2071,6 @@ msgstr "Bevestigen" msgid "Jump to Layer" msgstr "Ga naar laag" -msgid "Jump to layer" -msgstr "Spring naar laag" - msgid "Please enter the layer number" msgstr "Voer het laagnummer in" @@ -3925,6 +3925,10 @@ msgstr "" "Los het probleem op door het object volledig op of van de plaat te " "verplaatsen en controleer of de hoogte binnen het bouwvolume valt." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Kalibratiestap selectie" @@ -5092,6 +5096,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Niet nogmaals tonen" + msgid "Calculating, please wait..." msgstr "" @@ -5101,9 +5108,6 @@ msgstr "Status" msgid "Update" msgstr "Updaten" -msgid "Don't show again" -msgstr "Niet nogmaals tonen" - #, c-format, boost-format msgid "%s error" msgstr "%s fout" @@ -5298,6 +5302,9 @@ msgstr "Er zijn delen van het model die support nodig hebben. Zet support aan." msgid "Gcode path overlap" msgstr "Gcode-paden overlappen elkaar" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Support intekenen" @@ -5380,14 +5387,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Gehard staal" msgid "Stainless Steel" msgstr "Roestvrij staal" -msgid "Hardened Steel" -msgstr "Gehard staal" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6183,6 +6190,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6282,6 +6296,9 @@ msgstr "Online modellen" msgid "Show online staff-picked models on the home page" msgstr "Toon door medewerkers geselecteerde online modellen op de homepage" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximale recente projecten" @@ -6679,15 +6696,9 @@ msgstr "Offline" msgid "Busy" msgstr "Bezet" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool (koude) Plate" -msgid "PLA Plate" -msgstr "PLA Plaat" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering (technische) plate" @@ -6700,6 +6711,9 @@ msgstr "Plaat op hoge temperatuur" msgid "Bamabu Textured PEI Plate" msgstr "Bambu getextureerde PEI-plaat" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Stuur de printtaak naar" @@ -6877,13 +6891,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7352,8 +7363,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Koelplaat/PLA-plaat" +msgid "Cool Plate" +msgstr "Cool (koud) printbed" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8207,28 +8218,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Stap 1, controleer of Bambu Studio en uw printer zich in hetzelfde LAN " -"bevinden." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de " -"werkelijke waarden op uw printer, corrigeer ze dan." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Toegangscode" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Waar vind je het IP-adres en de toegangscode van je printer?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." - msgid "Connect" msgstr "" @@ -8241,9 +8252,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8423,8 +8431,19 @@ msgstr "" "Kan gcode niet genereren voor ongeldige handmatige G-code.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Controleer de aangepaste G-code of gebruik de standaard G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9479,12 +9498,13 @@ msgstr "" "Afstand van de punt van het mondstuk tot het deksel. Wordt gebruikt om " "botsingen te voorkomen bij het afdrukken van bijobjecten." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Radius rond de extruder. Wordt gebruikt om botsingen te vermijden bij het " -"printen per object." msgid "Nozzle height" msgstr "Hoogte van het mondstuk" @@ -10744,8 +10764,8 @@ msgstr "" "Deze hoeveelheid als een percentage van de huidige extruderdiameter. De " "standaardwaarde voor deze parameter is 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10754,8 +10774,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10802,7 +10822,7 @@ msgstr "" "(bijv. 80%), wordt deze berekend op basis van de bovenstaande instelling van " "de rijsnelheid.De standaardwaarde voor deze parameter is 80%." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11679,18 +11699,18 @@ msgstr "" "kleur is geverfd.\n" "XY-formaatcompensatie kan niet worden gecombineerd met verven in kleur." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Onbekend bestandsformaat. Invoerbestand moet .stl, .obj, .amf(.xml) extensie " -"hebben." - msgid "Loading of a model file failed." msgstr "Het laden van een modelbestand is mislukt." msgid "The supplied file couldn't be read because it's empty" msgstr "Het geleverde bestand kon niet worden gelezen omdat het leeg is" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Onbekend bestandsformaat. Invoerbestand moet .stl, .obj, .amf(.xml) extensie " +"hebben." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Onbekend bestandsformaat: het invoerbestand moet de extensie.3mf of .zip.amf " @@ -12176,6 +12196,20 @@ msgstr "Patroon" msgid "Method" msgstr "Methode" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s is niet compatibel met %s" @@ -12183,6 +12217,22 @@ msgstr "%s is niet compatibel met %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU wordt niet ondersteund voor automatische Flow Dynamics-kalibratie." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Verbinding maken met printer" @@ -13999,6 +14049,56 @@ msgstr "" "kromtrekken, zoals ABS, een juiste verhoging van de temperatuur van het " "warmtebed de kans op kromtrekken kan verkleinen?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Spring naar laag" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plaat" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Koelplaat/PLA-plaat" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Stap 1, controleer of Bambu Studio en uw printer zich in hetzelfde LAN " +#~ "bevinden." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Stap 2, als het IP-adres en de toegangscode hieronder afwijken van de " +#~ "werkelijke waarden op uw printer, corrigeer ze dan." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Stap 3: Ping het IP-adres om te controleren op pakketverlies en latentie." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "Controleer de aangepaste G-code of gebruik de standaard G-code." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Radius rond de extruder. Wordt gebruikt om botsingen te vermijden bij het " +#~ "printen per object." + #~ msgid "Tree support branch angle" #~ msgstr "Tree support vertakkingshoek" @@ -14634,9 +14734,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Converteer de eenheden van het model" -#~ msgid "Cool Plate" -#~ msgstr "Cool (koud) printbed" - #~ msgid "Cool plate" #~ msgstr "Cool (koud) printbed" diff --git a/bbl/i18n/pl/BambuStudio_pl.po b/bbl/i18n/pl/BambuStudio_pl.po index 1aaaf44af4..f7a18a7c0c 100644 --- a/bbl/i18n/pl/BambuStudio_pl.po +++ b/bbl/i18n/pl/BambuStudio_pl.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -842,6 +842,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Powierzchnia" @@ -860,7 +863,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -883,7 +886,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2059,9 +2062,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Przejdź do warstwy" -msgid "Jump to layer" -msgstr "Przejdź do warstwy" - msgid "Please enter the layer number" msgstr "Proszę podać numer warstwy" @@ -3906,6 +3906,10 @@ msgstr "" "Rozwiąż problem, przesuwając go całkowicie na lub poza płytę i " "potwierdzając, że wysokość mieści się w przestrzeni roboczej." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Wybór kroku kalibracji" @@ -5080,6 +5084,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Nie pokazuj ponownie" + msgid "Calculating, please wait..." msgstr "" @@ -5089,9 +5096,6 @@ msgstr "Status" msgid "Update" msgstr "Aktualizuj" -msgid "Don't show again" -msgstr "Nie pokazuj ponownie" - #, c-format, boost-format msgid "%s error" msgstr "%s błąd" @@ -5283,6 +5287,9 @@ msgstr "Twój model wymaga podpór! Włącz generowanie podpór." msgid "Gcode path overlap" msgstr "Nakładanie się ścieżek Gcode" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Malowanie podpór" @@ -5366,14 +5373,14 @@ msgstr "" "Sprawdź, czy dysza nie została zatkana filamentem lub innym obcym " "przedmiotem." -msgid "Nozzle Type" -msgstr "Typ dyszy" +msgid "Hardened Steel" +msgstr "Stal Hartowana" msgid "Stainless Steel" msgstr "Stal nierdzewna" -msgid "Hardened Steel" -msgstr "Stal Hartowana" +msgid "Nozzle Type" +msgstr "Typ dyszy" #, c-format, boost-format msgid "%.1f" @@ -6162,6 +6169,13 @@ msgstr "" "Dzięki tej opcji możesz wysyłać zadania do wielu urządzeń jednocześnie i " "zarządzać nimi." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6263,6 +6277,9 @@ msgstr "Modele online" msgid "Show online staff-picked models on the home page" msgstr "Pokaż modele online wybrane przez personel na stronie głównej" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maksymalna liczba ostatnich projektów" @@ -6653,15 +6670,9 @@ msgstr "Offline" msgid "Busy" msgstr "Zajęte" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "Płyta PLA" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6674,6 +6685,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Wyślij zadanie druku do" @@ -6845,13 +6859,10 @@ msgstr "" "ustawieniach. Jeśli ostatnio zmieniłeś dyszę, przejdź do opcji Urządzenie > " "Części drukarki, aby zmienić to ustawienie." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Drukowanie materiału o wysokiej temperaturze (%s materiał) z %s może " -"spowodować uszkodzenie dyszy" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "" @@ -7314,8 +7325,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate/PLA Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8160,27 +8171,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Krok 1, proszę potwierdzić, że Bambu Studio i drukarka są w tej samej sieci " -"LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Krok 2, jeśli poniższe wartości IP i kod dostępu różnią się od rzeczywistych " -"wartości na twojej drukarce, popraw je." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Kod dostępu" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Gdzie znaleźć IP i kod dostępu do twojej drukarki?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Krok 3: Pinguj adres IP, aby sprawdzić utratę pakietów i opóźnienia." - msgid "Connect" msgstr "" @@ -8193,9 +8205,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8376,8 +8385,19 @@ msgstr "" "code.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Sprawdź niestandardowy G-code lub użyj domyślnego G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9422,12 +9442,13 @@ msgstr "" "Odległość od końcówki dyszy do pokrywy. Używane do unikania kolizji w druku " "według obiektu." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Promień prześwitu wokół ekstrudera. Używane do unikania kolizji w drukowaniu " -"obiektu." msgid "Nozzle height" msgstr "Wysokość dyszy" @@ -10692,8 +10713,8 @@ msgstr "" "Wartość ta wyrażona jest jako procent aktualnej średnicy ekstrudera. " "Domyślna wartość tego parametru to 15" -msgid "Conditional scarf joint" -msgstr "Warunkowe szwy Scarf" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10702,8 +10723,8 @@ msgstr "" "Szwy typu Scarf należy stosować wyłącznie na gładkich krawędziach, gdzie " "tradycyjne szwy nie są w stanie skutecznie ukryć szwów w ostrych narożnikach." -msgid "Conditional angle threshold" -msgstr "Warunkowy próg kąta" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10749,7 +10770,7 @@ msgstr "" "jest na podstawie ustawienia powyżej prędkości jałowej. Domyślna wartość " "tego parametru to 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11625,18 +11646,18 @@ msgstr "" "również malowany kolorami.\n" "Kompensacja rozmiaru XY nie może być łączona z malowaniem kolorów." -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 lub ." -"amf(.xml)." - msgid "Loading of a model file failed." msgstr "Wczytywanie pliku modelu nie powiodło się." msgid "The supplied file couldn't be read because it's empty" msgstr "Nie można odczytać dostarczonego pliku, 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 lub ." +"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." @@ -12119,6 +12140,20 @@ msgstr "Wzór" msgid "Method" msgstr "Metoda" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s nie jest kompatybilne z %s" @@ -12127,6 +12162,22 @@ msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "" "TPU nie jest obsługiwane przez automatyczną kalibrację Dynamiki Przepływu." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Łączenie z drukarką" @@ -13972,6 +14023,56 @@ msgstr "" "jak ABS, odpowiednie zwiększenie temperatury stołu grzejnego może zmniejszyć " "prawdopodobieństwo wypaczania." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Drukowanie materiału o wysokiej temperaturze (%s materiał) z %s może " +#~ "spowodować uszkodzenie dyszy" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Warunkowe szwy Scarf" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Warunkowy próg kąta" + +#~ msgid "Jump to layer" +#~ msgstr "Przejdź do warstwy" + +#~ msgid "PLA Plate" +#~ msgstr "Płyta PLA" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Krok 1, proszę potwierdzić, że Bambu Studio i drukarka są w tej samej " +#~ "sieci LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Krok 2, jeśli poniższe wartości IP i kod dostępu różnią się od " +#~ "rzeczywistych wartości na twojej drukarce, popraw je." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Krok 3: Pinguj adres IP, aby sprawdzić utratę pakietów i opóźnienia." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "Sprawdź niestandardowy G-code lub użyj domyślnego G-code." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Promień prześwitu wokół ekstrudera. Używane do unikania kolizji w " +#~ "drukowaniu obiektu." + #~ msgid "Tree support branch angle" #~ msgstr "Kąt gałęzi podpory drzewa" @@ -14498,9 +14599,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Konwersja jednostek modelu" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate/PLA Plate" - #~ msgid "Cool plate" #~ msgstr "Cool plate" diff --git a/bbl/i18n/pt-BR/BambuStudio_pt-BR.po b/bbl/i18n/pt-BR/BambuStudio_pt-BR.po index 1700ea52ff..434241ec70 100644 --- a/bbl/i18n/pt-BR/BambuStudio_pt-BR.po +++ b/bbl/i18n/pt-BR/BambuStudio_pt-BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -838,6 +838,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Superfície" @@ -856,7 +859,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -879,7 +882,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2054,9 +2057,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Ir para a camada" -msgid "Jump to layer" -msgstr "Ir para a camada" - msgid "Please enter the layer number" msgstr "Por favor, insira o número da camada" @@ -3899,6 +3899,10 @@ msgstr "" "Resolva o problema movendo-o totalmente para dentro ou para fora da placa e " "confirmando que a altura está dentro do volume de construção." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Seleção da etapa de calibração" @@ -5058,6 +5062,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Não mostrar novamente" + msgid "Calculating, please wait..." msgstr "" @@ -5067,9 +5074,6 @@ msgstr "Estado" msgid "Update" msgstr "Atualização" -msgid "Don't show again" -msgstr "Não mostrar novamente" - #, c-format, boost-format msgid "%s error" msgstr "%s erro" @@ -5259,6 +5263,9 @@ msgstr "Seu modelo precisa de suporte! Ative o material de suporte." msgid "Gcode path overlap" msgstr "Sobreposição de caminhos do Gcode" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Pintura de suporte" @@ -5340,14 +5347,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Aço endurecido" msgid "Stainless Steel" msgstr "Aço inoxidável" -msgid "Hardened Steel" -msgstr "Aço endurecido" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6130,6 +6137,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6229,6 +6243,9 @@ msgstr "Modelos online" msgid "Show online staff-picked models on the home page" msgstr "Mostre modelos on-line escolhidos pela equipe na página inicial" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Máximo de projetos recentes" @@ -6620,15 +6637,9 @@ msgstr "Off-line" msgid "Busy" msgstr "Ocupado" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Prato Bambu Cool" -msgid "PLA Plate" -msgstr "Placa PLA" - msgid "Bamabu Engineering Plate" msgstr "Placa de Engenharia Bambu" @@ -6641,6 +6652,9 @@ msgstr "Placa de alta temperatura" msgid "Bamabu Textured PEI Plate" msgstr "Placa PEI texturizada Bamabu" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Enviar trabalho de impressão para" @@ -6817,13 +6831,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7293,8 +7304,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Placa fria / Placa PLA" +msgid "Cool Plate" +msgstr "Placa fria/Placa PLA" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8138,28 +8149,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Etapa 1, confirme se o Bambu Studio e sua impressora estão na mesma LAN." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Etapa 2, se o IP e o código de acesso abaixo forem diferentes dos valores " -"reais em sua impressora, corrija-os." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Código de acesso" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Onde encontrar o IP e o código de acesso da sua impressora?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Etapa 3: Faça ping no endereço IP para verificar a perda e a latência do " -"pacote." - msgid "Connect" msgstr "" @@ -8172,9 +8183,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8352,8 +8360,19 @@ msgid "" "\n" msgstr "Falha ao gerar g-code para g-code customizado.\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Verifique o g-code personalizado ou use o g-code personalizado padrão." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9403,12 +9422,13 @@ msgstr "" "Distância da ponta do bico até a tampa. Usado para evitar colisões na " "impressão de subobjetos." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Raio de folga ao redor da extrusora. Usado para evitar colisões na impressão " -"de subobjetos." msgid "Nozzle height" msgstr "Altura do bocal" @@ -10670,8 +10690,8 @@ msgstr "" "uma porcentagem do diâmetro atual da extrusora. O valor padrão para este " "parâmetro é 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10680,8 +10700,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10728,7 +10748,7 @@ msgstr "" "(por exemplo, 80%), ele será calculado com base na configuração de " "velocidade de viagem acima.O valor padrão para esse parâmetro é 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11611,18 +11631,18 @@ msgstr "" "pintado em cores.\n" "A compensação de tamanho XY não pode ser combinada com pintura colorida." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Formato de arquivo desconhecido. O arquivo de entrada deve ter a extensão." -"stl, .obj, .amf (.xml)." - msgid "Loading of a model file failed." msgstr "Falha no carregamento de um arquivo de modelo." msgid "The supplied file couldn't be read because it's empty" 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 a extensão." +"stl, .obj, .amf (.xml)." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Formato de arquivo desconhecido: o arquivo de entrada deve ter a " @@ -12101,6 +12121,20 @@ msgstr "Padrão" msgid "Method" msgstr "Método" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s não é compatível com %s" @@ -12109,6 +12143,22 @@ msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "" "A TPU não é compatível com a calibração automática da dinâmica de fluxo." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Conectando à impressora" @@ -13941,6 +13991,57 @@ msgstr "" "aumentar adequadamente a temperatura do leito térmico pode reduzir a " "probabilidade de deformação." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Ir para a camada" + +#~ msgid "PLA Plate" +#~ msgstr "Placa PLA" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Placa fria / Placa PLA" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Etapa 1, confirme se o Bambu Studio e sua impressora estão na mesma LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Etapa 2, se o IP e o código de acesso abaixo forem diferentes dos valores " +#~ "reais em sua impressora, corrija-os." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Etapa 3: Faça ping no endereço IP para verificar a perda e a latência do " +#~ "pacote." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Verifique o g-code personalizado ou use o g-code personalizado padrão." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Raio de folga ao redor da extrusora. Usado para evitar colisões na " +#~ "impressão de subobjetos." + #~ msgid "Tree support branch angle" #~ msgstr "Ângulo do ramo de suporte da árvore" @@ -14574,9 +14675,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Converta as unidades do modelo" -#~ msgid "Cool Plate" -#~ msgstr "Placa fria/Placa PLA" - #~ msgid "Cool plate" #~ msgstr "Placa fria" diff --git a/bbl/i18n/ru/BambuStudio_ru.po b/bbl/i18n/ru/BambuStudio_ru.po index f9e402f6c6..c3b0a76a50 100644 --- a/bbl/i18n/ru/BambuStudio_ru.po +++ b/bbl/i18n/ru/BambuStudio_ru.po @@ -2,12 +2,12 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. -# +# msgid "" msgstr "" "Project-Id-Version: 1.9.7.52 Public Official\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: 2024-09-27 23:58+0700\n" "Last-Translator: \n" "Language-Team: Andylg \n" @@ -863,6 +863,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "На поверхности" @@ -881,7 +884,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -904,7 +907,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2086,9 +2089,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Перейти к слою" -msgid "Jump to layer" -msgstr "Перейти к слою" - msgid "Please enter the layer number" msgstr "Пожалуйста, введите номер слоя" @@ -3979,6 +3979,10 @@ msgstr "" "пределы стола) и убедитесь, что высота модели находится в пределах область " "построения." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Выбор шага калибровки" @@ -5178,6 +5182,9 @@ msgstr "" msgid "0" msgstr "" +msgid "Don't show again" +msgstr "Больше не показывать" + msgid "Calculating, please wait..." msgstr "" @@ -5187,9 +5194,6 @@ msgstr "Статус" msgid "Update" msgstr "Обновление" -msgid "Don't show again" -msgstr "Больше не показывать" - #, c-format, boost-format msgid "%s error" msgstr "Ошибка %s" @@ -5381,6 +5385,9 @@ msgstr "Вашей модели необходима поддержка, вкл msgid "Gcode path overlap" msgstr "Перекрытие пути G-кода" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Рисование поддержек" @@ -5464,14 +5471,14 @@ msgstr "" "Обнаружение накапливания на сопле материала в результате засорения/протечки " "сопла или других причин." -msgid "Nozzle Type" -msgstr "Тип сопла" +msgid "Hardened Steel" +msgstr "Закалённая сталь" msgid "Stainless Steel" msgstr "Нержавеющая сталь" -msgid "Hardened Steel" -msgstr "Закалённая сталь" +msgid "Nozzle Type" +msgstr "Тип сопла" #, c-format, boost-format msgid "%.1f" @@ -6277,6 +6284,13 @@ msgstr "" "Если включено, вы сможете управлять несколькими устройствами и отправлять " "задания на печать на несколько устройств одновременно." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6379,6 +6393,9 @@ msgstr "" "Показывать на главной странице модели из сети отобранные\n" "сотрудниками компании" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Максимальное количество недавних проектов" @@ -6783,15 +6800,9 @@ msgstr "Не в сети" msgid "Busy" msgstr "Занят" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Не нагреваемая пластина Bambu" -msgid "PLA Plate" -msgstr "PLA пластина" - msgid "Bamabu Engineering Plate" msgstr "Инженерная пластина Bambu" @@ -6804,6 +6815,9 @@ msgstr "Высокотемпературная пластина" msgid "Bamabu Textured PEI Plate" msgstr "Текстурированная PEI пластина Bambu" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Отправка задания на печать" @@ -6985,13 +6999,10 @@ msgstr "" "недавно меняли сопло, перейдите в раздел Принтер > Части принтера, чтобы " "изменить настройки." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Печать высокотемпературным материалом (%s) с %s может привести к повреждению " -"сопла" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "" @@ -7462,8 +7473,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Не нагреваемая/PLA пластина" +msgid "Cool Plate" +msgstr "" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8327,28 +8338,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в " -"одной локальной сети." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от " -"фактических значений на вашем принтере, пожалуйста, исправьте их." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Код доступа" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Где найти IP-адрес и код доступа к вашему принтеру?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Шаг 3. Пропингуйте IP-адрес, чтобы проверить потерю пакетов и задержку." - msgid "Connect" msgstr "" @@ -8361,9 +8372,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8543,10 +8551,19 @@ msgstr "" "Не удалось сгенерировать G-код из-за недопустимого пользовательского G-" "кода.\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Пожалуйста, проверьте пользовательский G-код или используйте " -"пользовательский G-код по умолчанию." #, boost-format msgid "Generating G-code: layer %1%" @@ -9619,12 +9636,13 @@ msgstr "" "Расстояние от кончика сопла до крышки. Значение важно при печати моделей «По " "очереди» для предотвращения столкновений." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Безопасное расстояние вокруг экструдера. Используется для предотвращения " -"столкновений при печати отдельно стоящих моделей." msgid "Nozzle height" msgstr "Высота сопла" @@ -10937,8 +10955,8 @@ msgstr "" "Это величина задаётся в процентах от текущего диаметра сопла. Значение по " "умолчанию - 15%." -msgid "Conditional scarf joint" -msgstr "Условие для клиновидного шва" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10947,8 +10965,8 @@ msgstr "" "Использовать клиновидный шов только на гладких периметрах, где традиционные " "швы не могут быть эффективно скрыты." -msgid "Conditional angle threshold" -msgstr "Пороговый угол для клиновидного шва" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10994,7 +11012,7 @@ msgstr "" "то она вычисляться относительно скорости перемещения. 80% - значение по " "умолчанию." -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11907,18 +11925,18 @@ msgstr "" "Коррекция горизонтальных размеров модели не может использоваться в сочетании " "с функцией раскрашивания." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, " -"*.amf(.xml)." - msgid "Loading of a model file failed." msgstr "Не удалось загрузить файл модели." msgid "The supplied file couldn't be read because it's empty" msgstr "Предоставленный файл не может быть прочитан, так как он пуст." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Неизвестный формат файла. Входной файл должен иметь расширение *.stl, *.obj, " +"*.amf(.xml)." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Неизвестный формат файла. Входной файл должен иметь расширение *.3mf или *." @@ -12429,6 +12447,20 @@ msgstr "Шаблон" msgid "Method" msgstr "Метод" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s не совместима с %s" @@ -12436,6 +12468,22 @@ msgstr "%s не совместима с %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "Автоматическая калибровка динамики потока для TPU не поддерживается." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Подключением к принтеру" @@ -14279,6 +14327,58 @@ msgstr "" "ABS, повышение температуры подогреваемого стола может снизить эту " "вероятность?" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Печать высокотемпературным материалом (%s) с %s может привести к " +#~ "повреждению сопла" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Условие для клиновидного шва" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Пороговый угол для клиновидного шва" + +#~ msgid "Jump to layer" +#~ msgstr "Перейти к слою" + +#~ msgid "PLA Plate" +#~ msgstr "PLA пластина" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Не нагреваемая/PLA пластина" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Шаг 1. Пожалуйста, убедитесь, что Bambu Studio и ваш принтер находятся в " +#~ "одной локальной сети." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Шаг 2. Если приведенный ниже IP-адрес и код доступа отличаются от " +#~ "фактических значений на вашем принтере, пожалуйста, исправьте их." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Шаг 3. Пропингуйте IP-адрес, чтобы проверить потерю пакетов и задержку." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Пожалуйста, проверьте пользовательский G-код или используйте " +#~ "пользовательский G-код по умолчанию." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Безопасное расстояние вокруг экструдера. Используется для предотвращения " +#~ "столкновений при печати отдельно стоящих моделей." + #~ msgid "Tree support branch angle" #~ msgstr "Угол нависания ветвей древовидной поддержки" diff --git a/bbl/i18n/sv/BambuStudio_sv.po b/bbl/i18n/sv/BambuStudio_sv.po index 24a38298cb..a05cc99a68 100644 --- a/bbl/i18n/sv/BambuStudio_sv.po +++ b/bbl/i18n/sv/BambuStudio_sv.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -832,6 +832,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Yta" @@ -850,7 +853,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -873,7 +876,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2038,9 +2041,6 @@ msgstr "OK" msgid "Jump to Layer" msgstr "Hoppa till lager" -msgid "Jump to layer" -msgstr "Hoppa till lager" - msgid "Please enter the layer number" msgstr "Ange lager nummer." @@ -3868,6 +3868,10 @@ msgstr "" "Lös problemet genom att flytta det helt på eller av plattan och bekräfta att " "höjden är inom byggvolymen." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Val av kalibreringssteg" @@ -5028,6 +5032,9 @@ msgstr "" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Visa inte igen" + msgid "Calculating, please wait..." msgstr "" @@ -5037,9 +5044,6 @@ msgstr "Status" msgid "Update" msgstr "Uppdatera" -msgid "Don't show again" -msgstr "Visa inte igen" - #, c-format, boost-format msgid "%s error" msgstr "%s fel" @@ -5227,6 +5231,9 @@ msgstr "Modellen behöver support ! Aktivera support inställningarna." msgid "Gcode path overlap" msgstr "Överlappning av G-kods banor" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Support färgläggning" @@ -5308,14 +5315,14 @@ msgstr "Nozzle Clumping Detection" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "Check if the nozzle is clumping by filament or other foreign objects." -msgid "Nozzle Type" -msgstr "Nozzle Type" +msgid "Hardened Steel" +msgstr "Härdat stål" msgid "Stainless Steel" msgstr "Rostfritt stål" -msgid "Hardened Steel" -msgstr "Härdat stål" +msgid "Nozzle Type" +msgstr "Nozzle Type" #, c-format, boost-format msgid "%.1f" @@ -6089,6 +6096,13 @@ msgstr "" "With this option enabled, you can send a task to multiple devices at the " "same time and manage multiple devices." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6188,6 +6202,9 @@ msgstr "Online modeller" msgid "Show online staff-picked models on the home page" msgstr "Visa personalens utvalda modeller online på startsidan" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maximalt antal nyligen genomförda projekt" @@ -6579,15 +6596,9 @@ msgstr "Offline" msgid "Busy" msgstr "Upptagen" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA platta" - msgid "Bamabu Engineering Plate" msgstr "Bambu Engineering Plate" @@ -6600,6 +6611,9 @@ msgstr "Högtemperatur platta" msgid "Bamabu Textured PEI Plate" msgstr "Bambu Lab texturerad PEI-platta" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Skicka utskriftsjobb till" @@ -6775,13 +6789,10 @@ msgstr "" "If you changed your nozzle lately, please go to Device > Printer Parts to " "change settings." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Printing high temperature material(%s material) with %s may cause nozzle " -"damage" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Please fix the error above, otherwise printing cannot continue." @@ -7242,8 +7253,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Platta" +msgid "Cool Plate" +msgstr "Cool Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8087,25 +8098,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "Steg 1, bekräfta att Bambu Studio och din skrivare finns på samma LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." +msgstr "" msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Steg 2, om IP- och åtkomst koden nedan skiljer sig från de faktiska värdena " -"på skrivaren, korrigera dem." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Behörighetskod: " +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Var hittar du skrivarens IP- och åtkomstkod?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Steg 3: Pinga IP-adressen för att kontrollera paketförlust och latens." - msgid "Connect" msgstr "" @@ -8118,9 +8132,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8298,8 +8309,19 @@ msgstr "" "Misslyckades att skapa G-kod för ogiltlig custom G-kod.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "Kontrollera custom G-kod elleranvänd standard custom G-kod." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "" #, boost-format msgid "Generating G-code: layer %1%" @@ -9320,12 +9342,13 @@ msgstr "" "Avstånd från nozzel spetsen till locket. Används för att undvika kollisioner " "vid utskrift av flera objekt." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Fri radie runt extrudern. Används för att undvika kollision vid utskrift per " -"objekt." msgid "Nozzle height" msgstr "Nozzel höjd" @@ -10571,8 +10594,8 @@ msgstr "" "Detta belopp anges som en procentandel av den aktuella extruder diametern. " "Standardvärdet för denna parameter är 15" -msgid "Conditional scarf joint" -msgstr "Conditional scarf joint" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10581,8 +10604,8 @@ msgstr "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." -msgid "Conditional angle threshold" -msgstr "Conditional angle threshold" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10629,7 +10652,7 @@ msgstr "" "beräknas baserat på inställningen för förflyttnings hastigheten ovan. " "Standardvärdet för denna parameter är 80%" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11491,17 +11514,17 @@ msgstr "" "är också färglagd.\n" "XY-storlekskompensation kan inte kombineras med färgläggning." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Okänt filformat. Indata filen måste ha tillägget .stl, .obj eller .amf(.xml)." - msgid "Loading of a model file failed." msgstr "Laddning av modell filen misslyckades." msgid "The supplied file couldn't be read because it's empty" msgstr "Den medföljande filen kunde inte läsas eftersom den är tom." +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Okänt filformat. Indata filen måste ha tillägget .stl, .obj eller .amf(.xml)." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Okänt filformat: indata filen måste ha fil ändelsen .3mf eller .zip.amf." @@ -11981,6 +12004,20 @@ msgstr "Mönster" msgid "Method" msgstr "Metod" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s är inte kompatibel med %s" @@ -11988,6 +12025,22 @@ msgstr "%s är inte kompatibel med %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU stöds inte för automatisk kalibrering av flödesdynamik." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Ansluter till skrivaren" @@ -13798,6 +13851,55 @@ msgstr "" "ABS, kan en lämplig ökning av värmebäddens temperatur minska sannolikheten " "för vridning." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Conditional scarf joint" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Conditional angle threshold" + +#~ msgid "Jump to layer" +#~ msgstr "Hoppa till lager" + +#~ msgid "PLA Plate" +#~ msgstr "PLA platta" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Platta" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Steg 1, bekräfta att Bambu Studio och din skrivare finns på samma LAN." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Steg 2, om IP- och åtkomst koden nedan skiljer sig från de faktiska " +#~ "värdena på skrivaren, korrigera dem." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Steg 3: Pinga IP-adressen för att kontrollera paketförlust och latens." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "Kontrollera custom G-kod elleranvänd standard custom G-kod." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Fri radie runt extrudern. Används för att undvika kollision vid utskrift " +#~ "per objekt." + #~ msgid "Tree support branch angle" #~ msgstr "Tree support grenarnas vinkel" @@ -14425,9 +14527,6 @@ msgstr "" #~ msgid "Convert the units of model" #~ msgstr "Konvertera modellens enheter" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate" - #~ msgid "Cool plate" #~ msgstr "Kall platta" diff --git a/bbl/i18n/tr/BambuStudio_tr.po b/bbl/i18n/tr/BambuStudio_tr.po index 09cc47d2fe..d697424e45 100644 --- a/bbl/i18n/tr/BambuStudio_tr.po +++ b/bbl/i18n/tr/BambuStudio_tr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: 2024-09-29 02:13+0300\n" "Last-Translator: Fatih AYDIN \n" "Language-Team: \n" @@ -841,6 +841,9 @@ msgstr "" msgid "Warning:create text fail." msgstr "" +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Yüzey" @@ -859,7 +862,7 @@ msgstr "" msgid "Remove selected points" msgstr "" -msgid "Remove all points" +msgid "Remove all" msgstr "" msgid "Auto-generate points" @@ -882,7 +885,7 @@ msgid "" "effect !" msgstr "" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "" msgid " invalid brim ears" @@ -2041,9 +2044,6 @@ msgstr "TAMAM" msgid "Jump to Layer" msgstr "Katmana Atla" -msgid "Jump to layer" -msgstr "Katmana atla" - msgid "Please enter the layer number" msgstr "Lütfen katman numarasını girin" @@ -3873,6 +3873,10 @@ msgstr "" "Lütfen sorunu tamamen plakanın üzerine veya dışına hareket ettirerek ve " "yüksekliğin yapım hacmi dahilinde olduğunu doğrulayarak çözün." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Kalibrasyon adımı seçimi" @@ -5049,6 +5053,9 @@ msgstr "" msgid "0" msgstr "" +msgid "Don't show again" +msgstr "Bir daha gösterme" + msgid "Calculating, please wait..." msgstr "" @@ -5058,9 +5065,6 @@ msgstr "Durum" msgid "Update" msgstr "Güncelle" -msgid "Don't show again" -msgstr "Bir daha gösterme" - #, c-format, boost-format msgid "%s error" msgstr "%s hata" @@ -5250,6 +5254,9 @@ msgstr "" msgid "Gcode path overlap" msgstr "Gcode yolu çakışması" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Destek boyama" @@ -5332,14 +5339,14 @@ msgstr "" "Nozulun filament veya diğer yabancı cisimler tarafından tıkanıp " "tıkanmadığını kontrol edin." -msgid "Nozzle Type" -msgstr "Nozul tipi" +msgid "Hardened Steel" +msgstr "Güçlendirilmiş çelik" msgid "Stainless Steel" msgstr "Paslanmaz çelik" -msgid "Hardened Steel" -msgstr "Güçlendirilmiş çelik" +msgid "Nozzle Type" +msgstr "Nozul tipi" #, c-format, boost-format msgid "%.1f" @@ -6131,6 +6138,13 @@ msgstr "" "Bu seçenek etkinleştirildiğinde, aynı anda birden fazla cihaza görev " "gönderebilir ve birden fazla cihazı yönetebilirsiniz." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "" @@ -6231,6 +6245,9 @@ msgstr "Çevrimiçi Modeller" msgid "Show online staff-picked models on the home page" msgstr "Personel tarafından seçilen çevrimiçi modelleri ana sayfada gösterin" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Maksimum yeni proje" @@ -6623,15 +6640,9 @@ msgstr "Çevrimdışı" msgid "Busy" msgstr "Meşgul" -msgid "Bambu Cool Plate SuperTack" -msgstr "" - msgid "Bambu Cool Plate" msgstr "Bambu Soğuk Plaka" -msgid "PLA Plate" -msgstr "PLA Plaka" - msgid "Bamabu Engineering Plate" msgstr "Bamabu Mühendislik Plakası" @@ -6644,6 +6655,9 @@ msgstr "Yüksek Sıcaklık Plakası" msgid "Bamabu Textured PEI Plate" msgstr "Bamabu Dokulu PEI Tabak" +msgid "Bambu Cool Plate SuperTack" +msgstr "" + msgid "Send print job to" msgstr "Yazdırma işini şuraya gönder" @@ -6818,13 +6832,10 @@ msgstr "" "Nozulunuzu yakın zamanda değiştirdiyseniz, ayarları değiştirmek için lütfen " "Cihaz > Yazıcı Parçaları bölümüne gidin." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Yüksek sıcaklıktaki malzemenin (%s malzeme) %s ile basılması nozul hasarına " -"neden olabilir" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "" @@ -7284,8 +7295,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "" -msgid "Cool Plate / PLA Plate" -msgstr "Soğuk Plaka / PLA Plaka" +msgid "Cool Plate" +msgstr "" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8122,27 +8133,28 @@ msgid "Connect the printer using IP and access code" msgstr "" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Adım 1, lütfen Bambu Studio ve yazıcınızın aynı LAN'da olduğunu onaylayın." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " -"farklıysa lütfen bunları düzeltin." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Giriş kodu" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Yazıcınızın IP'sini ve Erişim Kodunu nerede bulabilirsiniz?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping atın." - msgid "Connect" msgstr "" @@ -8155,9 +8167,6 @@ msgstr "" msgid "Failed to publish login request." msgstr "" -msgid "The device does not support using IP and Access Code for connection." -msgstr "" - msgid "The printer has already been bound." msgstr "" @@ -8339,9 +8348,19 @@ msgstr "" "Geçersiz özel G kodu için gcode oluşturulamadı.\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Lütfen özel G kodunu kontrol edin veya varsayılan özel G kodunu kullanın." #, boost-format msgid "Generating G-code: layer %1%" @@ -9374,12 +9393,13 @@ msgstr "" "Nozul ucunun kapağa olan mesafesi. Nesneye göre yazdırmada çarpışmayı " "önlemek için kullanılır." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Ekstruder etrafındaki boşluk yarıçapı. Nesneye göre yazdırmada çarpışmayı " -"önlemek için kullanılır." msgid "Nozzle height" msgstr "Nozul yüksekliği" @@ -10625,8 +10645,8 @@ msgstr "" "Bu miktar, mevcut ekstrüder çapının bir yüzdesi olarak belirlenir. Bu " "parametre için varsayılan değer 15'tir" -msgid "Conditional scarf joint" -msgstr "Koşullu atkı birleşimi" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10635,8 +10655,8 @@ msgstr "" "Atkı bağlantılarını yalnızca geleneksel dikişlerin keskin köşelerdeki " "dikişleri etkili bir şekilde gizleyemediği düzgün kenarlara uygulayın." -msgid "Conditional angle threshold" -msgstr "Koşullu açı eşiği" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10681,7 +10701,7 @@ msgstr "" "Değer yüzde olarak ifade edilirse (örn. %80), yukarıdaki ilerleme hızı " "ayarına göre hesaplanır. Bu parametrenin varsayılan değeri %80'dir" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "" msgid "" @@ -11543,18 +11563,18 @@ msgstr "" "kullanılmayacaktır.\n" "XY Boyut telafisi renkli boyamayla birleştirilemez." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı " -"olmalıdır." - msgid "Loading of a model file failed." msgstr "Model dosyasının yüklenmesi başarısız oldu." msgid "The supplied file couldn't be read because it's empty" msgstr "Sağlanan dosya boş olduğundan okunamadı" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Bilinmeyen dosya formatı. Giriş dosyası .stl, .obj, .amf(.xml) uzantılı " +"olmalıdır." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Bilinmeyen dosya formatı. Giriş dosyası .3mf veya .zip.amf uzantılı " @@ -12052,6 +12072,20 @@ msgstr "Desen" msgid "Method" msgstr "Yöntem" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s, %s ile uyumlu değil" @@ -12059,6 +12093,22 @@ msgstr "%s, %s ile uyumlu değil" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "Flow Dynamics Otomatik Kalibrasyonunda TPU desteklenmiyor." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Yazıcıya bağlanılıyor" @@ -13887,6 +13937,57 @@ msgstr "" "sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını " "azaltabileceğini biliyor muydunuz." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Yüksek sıcaklıktaki malzemenin (%s malzeme) %s ile basılması nozul " +#~ "hasarına neden olabilir" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Koşullu atkı birleşimi" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Koşullu açı eşiği" + +#~ msgid "Jump to layer" +#~ msgstr "Katmana atla" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plaka" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Soğuk Plaka / PLA Plaka" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Adım 1, lütfen Bambu Studio ve yazıcınızın aynı LAN'da olduğunu onaylayın." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Adım 2, aşağıdaki IP ve Erişim Kodu yazıcınızdaki gerçek değerlerden " +#~ "farklıysa lütfen bunları düzeltin." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Adım 3: Paket kaybını ve gecikmeyi kontrol etmek için IP adresine ping " +#~ "atın." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Lütfen özel G kodunu kontrol edin veya varsayılan özel G kodunu kullanın." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Ekstruder etrafındaki boşluk yarıçapı. Nesneye göre yazdırmada çarpışmayı " +#~ "önlemek için kullanılır." + #~ msgid "Tree support branch angle" #~ msgstr "Ağaç desteği dal açısı" diff --git a/bbl/i18n/uk/BambuStudio_uk.po b/bbl/i18n/uk/BambuStudio_uk.po index fbb390470a..60b863069f 100644 --- a/bbl/i18n/uk/BambuStudio_uk.po +++ b/bbl/i18n/uk/BambuStudio_uk.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Bambu Studio\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: BambuLab Україна\n" @@ -843,6 +843,9 @@ msgstr "Попередження: Поле введення не може бут msgid "Warning:create text fail." msgstr "Попередження: не вдалося створити текст." +msgid "Warning:text normal is error." +msgstr "" + msgid "Surface" msgstr "Поверхня" @@ -861,8 +864,8 @@ msgstr "Радіус виявлення" msgid "Remove selected points" msgstr "Видалити вибрані точки" -msgid "Remove all points" -msgstr "Видалити всі точки" +msgid "Remove all" +msgstr "" msgid "Auto-generate points" msgstr "Автоматично згенерувати точки" @@ -886,8 +889,8 @@ msgstr "" "Попередження: Тип краєчка не встановлено на “пофарбований”, краєчки не " "матимуть ефекту!" -msgid "(Set the brim type to \"painted\")" -msgstr "(Встановіть тип краєчка на “пофарбований”)" +msgid "Set the brim type to \"painted\"" +msgstr "" msgid " invalid brim ears" msgstr " Неправильні краєчки" @@ -2060,9 +2063,6 @@ msgstr "ОК" msgid "Jump to Layer" msgstr "Перейти до шару" -msgid "Jump to layer" -msgstr "Перейти до шару" - msgid "Please enter the layer number" msgstr "Будь ласка, введіть номер шару" @@ -2652,8 +2652,8 @@ msgstr "Будь ласка, введіть допустиме значення #, c-format, boost-format msgid "Please input a valid value (K in %.1f~%.1f, N in %.1f~%.1f)" msgstr "" -"Будь ласка, введіть допустиме значення (K у межах %.1f~%.1f, N у межах " -"%.1f~%.1f)" +"Будь ласка, введіть допустиме значення (K у межах %.1f~%.1f, N у межах %.1f~" +"%.1f)" msgid "Other Color" msgstr "Інший колір" @@ -3906,6 +3906,10 @@ msgstr "" "Будь ласка, вирішіть проблему, перемістивши її повністю на тарілку або з неї," "і підтвердження того, що висота знаходиться в межах обсягу збирання." +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "" + msgid "Calibration step selection" msgstr "Вибір етапу калібрування" @@ -5088,6 +5092,9 @@ msgstr "Кількість трикутних граней" msgid "0" msgstr "0" +msgid "Don't show again" +msgstr "Більше не показувати" + msgid "Calculating, please wait..." msgstr "Розрахунок, будь ласка, зачекайте…" @@ -5097,9 +5104,6 @@ msgstr "Статус" msgid "Update" msgstr "Оновлення" -msgid "Don't show again" -msgstr "Більше не показувати" - #, c-format, boost-format msgid "%s error" msgstr "%s помилка" @@ -5291,6 +5295,9 @@ msgstr "Вашій моделі потрібна підтримка! Увімк msgid "Gcode path overlap" msgstr "Перекриття шляху Gcode" +msgid "Click Wiki for help." +msgstr "" + msgid "Support painting" msgstr "Підтримка малювання" @@ -5373,14 +5380,14 @@ msgstr "" "Перевірте, чи сопло не затверділо від філаменту або інших чужорідних " "предметів." -msgid "Nozzle Type" -msgstr "Тип насадки" +msgid "Hardened Steel" +msgstr "Закалена сталь" msgid "Stainless Steel" msgstr "Нержавіюча сталь" -msgid "Hardened Steel" -msgstr "Закалена сталь" +msgid "Nozzle Type" +msgstr "Тип насадки" #, c-format, boost-format msgid "%.1f" @@ -6183,6 +6190,13 @@ msgstr "" "З цією опцією ввімкненою, ви можете відправляти завдання на кілька пристроїв " "одночасно та керувати декількома пристроями." +msgid "Show the step mesh parameter setting dialog." +msgstr "" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "" + msgid "Support beta version update." msgstr "Оновлення бета-версії підтримки." @@ -6293,6 +6307,9 @@ msgstr "Онлайн Моделі" msgid "Show online staff-picked models on the home page" msgstr "Показувати моделі, вибрані співробітниками, на домашній сторінці" +msgid "Show history on the home page" +msgstr "" + msgid "Maximum recent projects" msgstr "Максимум останніх проектів" @@ -6685,15 +6702,9 @@ msgstr "Не в мережі" msgid "Busy" msgstr "Зайнятий" -msgid "Bambu Cool Plate SuperTack" -msgstr "Bambu Cool Plate SuperTack" - msgid "Bambu Cool Plate" msgstr "Bambu Cool Plate" -msgid "PLA Plate" -msgstr "PLA Plate" - msgid "Bamabu Engineering Plate" msgstr "Bamabu Engineering Plate" @@ -6706,6 +6717,9 @@ msgstr "High temperature Plate" msgid "Bamabu Textured PEI Plate" msgstr "Bamabu Textured PEI Plate" +msgid "Bambu Cool Plate SuperTack" +msgstr "Bambu Cool Plate SuperTack" + msgid "Send print job to" msgstr "Надіслати завдання на друк на" @@ -6879,13 +6893,10 @@ msgstr "" "сопла. Якщо ви недавно змінили сопло, будь ласка, перейдіть до “Пристрій > " "Частини принтера”, щоб змінити налаштування." -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" msgstr "" -"Друк високотемпературного матеріалу (%s матеріал) з %s може призвести до " -"пошкодження сопла" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "Будь ласка, виправте помилку вище, інакше друк не може продовжитися." @@ -7208,8 +7219,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" @@ -7357,8 +7368,8 @@ msgstr "" "Температура платформи, коли встановлено охолоджуючу плиту. Значення 0 " "означає, що філамент не підтримує друк на Bambu Cool Plate SuperTack" -msgid "Cool Plate / PLA Plate" -msgstr "Cool Plate / PLA Plate" +msgid "Cool Plate" +msgstr "Cool Plate/PLA Plate" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -8201,28 +8212,28 @@ msgid "Connect the printer using IP and access code" msgstr "Підключити принтер за допомогою IP-адреси та коду доступу" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." msgstr "" -"Крок 1, будь ласка, підтвердіть, що Bambu Studio та ваш принтер перебувають " -"в одній локальній мережі(LAN)." msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." msgstr "" -"Крок 2, якщо IP-адреса та код доступу нижче відрізняються від фактичних " -"значень вашому принтері, будь ласка, виправте їх." + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" msgid "Access Code" msgstr "Код доступу" +msgid "Printer model" +msgstr "" + msgid "Where to find your printer's IP and Access Code?" msgstr "Де знайти IP-адресу та код доступу вашого принтера?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "" -"Крок 3: Виконайте пінг до IP-адреси для перевірки втрат пакетів та затримки." - msgid "Connect" msgstr "Підключити" @@ -8235,10 +8246,6 @@ msgstr "Не вдалося підключитися до принтера." msgid "Failed to publish login request." msgstr "Не вдалося опублікувати запит на вхід." -msgid "The device does not support using IP and Access Code for connection." -msgstr "" -"Пристрій не підтримує підключення за допомогою IP-адреси та коду доступу." - msgid "The printer has already been bound." msgstr "Принтер вже прив’язаний." @@ -8418,10 +8425,19 @@ msgstr "" "Не вдалося згенерувати g-код для неприпустимого G-коду користувача. \n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." msgstr "" -"Будь ласка, перевірте G-код користувача або використовуйте за замовчуванням " -"G-код." #, boost-format msgid "Generating G-code: layer %1%" @@ -9468,12 +9484,13 @@ msgstr "" "Відстань від кінчика сопла до кришки. Використовується для уникнення " "зіткнення під час друку за обʼєктами." +msgid "Distance to rod" +msgstr "" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." msgstr "" -"Радіус вільного простору навколо екструдера. Використовується для уникнення " -"зіткнення під час друку за об’єктами." msgid "Nozzle height" msgstr "Висота насадки" @@ -10745,8 +10762,8 @@ msgstr "" "Ця кількість виражена у відсотках від поточного діаметра екструдера. За " "замовчуванням, цей параметр має значення 15" -msgid "Conditional scarf joint" -msgstr "Умовне з’єднання з шарфом" +msgid "Smart scarf seam application" +msgstr "" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " @@ -10755,8 +10772,8 @@ msgstr "" "Застосовувати з’єднання з шарфом лише до гладких периметрів, де традиційні " "шви не ефективно приховують шви в гострих кутах." -msgid "Conditional angle threshold" -msgstr "Умовний поріг кута" +msgid "Scarf application angle threshold" +msgstr "" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10803,8 +10820,8 @@ msgstr "" "то воно буде розраховано на основі наведеної вище установки швидкості руху. " "За замовчуванням для цього параметра - 80%" -msgid "Role base wipe speed" -msgstr "Швидкість затирання на основі ролі" +msgid "Role-based wipe speed" +msgstr "" msgid "" "The wipe speed is determined by speed of current extrusion role. e.g if a " @@ -11679,18 +11696,18 @@ msgstr "" "забарвлений кольором.\n" "Компенсація розміру XY не може поєднуватися з кольором." -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "" -"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або ." -"amf (.xml)." - msgid "Loading of a model file failed." msgstr "Не вдалося завантажити файл моделі." msgid "The supplied file couldn't be read because it's empty" msgstr "Наданий файл не вдалося прочитати, оскільки він порожній" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "" +"Невідомий формат файлу: вхідний файл повинен мати розширення .stl, .obj або ." +"amf (.xml)." + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "" "Невідомий формат файлу: вхідний файл повинен мати розширення .3mf або .zip." @@ -12202,6 +12219,20 @@ msgstr "Зразок" msgid "Method" msgstr "Метод" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s несумісний з %s" @@ -12209,6 +12240,22 @@ msgstr "%s несумісний з %s" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "TPU не підтримується для автокалібрування Flow Dynamics." +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" + msgid "Connecting to printer" msgstr "Підключення до принтера" @@ -12686,8 +12733,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 "" "Ми перейменовуємо налаштування на “Виробник Тип Серійний номер @принтер, " @@ -14102,6 +14149,72 @@ msgstr "" "ABS, відповідне підвищення температури гарячого ліжка може зменшити " "ймовірність деформації." +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "" +#~ "Друк високотемпературного матеріалу (%s матеріал) з %s може призвести до " +#~ "пошкодження сопла" + +#~ msgid "Remove all points" +#~ msgstr "Видалити всі точки" + +#~ msgid "(Set the brim type to \"painted\")" +#~ msgstr "(Встановіть тип краєчка на “пофарбований”)" + +#~ msgid "Conditional scarf joint" +#~ msgstr "Умовне з’єднання з шарфом" + +#~ msgid "Conditional angle threshold" +#~ msgstr "Умовний поріг кута" + +#~ msgid "Role base wipe speed" +#~ msgstr "Швидкість затирання на основі ролі" + +#~ msgid "Jump to layer" +#~ msgstr "Перейти до шару" + +#~ msgid "PLA Plate" +#~ msgstr "PLA Plate" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "Cool Plate / PLA Plate" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "" +#~ "Крок 1, будь ласка, підтвердіть, що Bambu Studio та ваш принтер " +#~ "перебувають в одній локальній мережі(LAN)." + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "" +#~ "Крок 2, якщо IP-адреса та код доступу нижче відрізняються від фактичних " +#~ "значень вашому принтері, будь ласка, виправте їх." + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "" +#~ "Крок 3: Виконайте пінг до IP-адреси для перевірки втрат пакетів та " +#~ "затримки." + +#~ msgid "The device does not support using IP and Access Code for connection." +#~ msgstr "" +#~ "Пристрій не підтримує підключення за допомогою IP-адреси та коду доступу." + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "" +#~ "Будь ласка, перевірте G-код користувача або використовуйте за " +#~ "замовчуванням G-код." + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "" +#~ "Радіус вільного простору навколо екструдера. Використовується для " +#~ "уникнення зіткнення під час друку за об’єктами." + #~ msgid "Tree support branch angle" #~ msgstr "Кут гілки опори дерева" @@ -16034,9 +16147,6 @@ msgstr "" #~ msgid "Confirm whether the filament has been extruded" #~ msgstr "Confirm whether the filament has been extruded" -#~ msgid "Cool Plate" -#~ msgstr "Cool Plate/PLA Plate" - #~ msgid "Cool plate" #~ msgstr "Cool plate" diff --git a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po index e619bb26bd..d12f563839 100644 --- a/bbl/i18n/zh_cn/BambuStudio_zh_CN.po +++ b/bbl/i18n/zh_cn/BambuStudio_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-25 21:39+0800\n" +"POT-Creation-Date: 2024-11-12 11:34+0800\n" "PO-Revision-Date: 2024-03-21 10:39+0800\n" "Last-Translator: Jiang Yue \n" "Language-Team: \n" @@ -827,6 +827,9 @@ msgstr "警告:输入不能为空!" msgid "Warning:create text fail." msgstr "警告:创建文字失败。" +msgid "Warning:text normal is error." +msgstr "警告:文字法向量错误" + msgid "Surface" msgstr "附着曲面" @@ -845,7 +848,7 @@ msgstr "检测半径" msgid "Remove selected points" msgstr "删除已选择的点" -msgid "Remove all points" +msgid "Remove all" msgstr "删除所有点" msgid "Auto-generate points" @@ -868,7 +871,7 @@ msgid "" "effect !" msgstr "警告:Brim类型未设置为绘制模式,耳状Brim将不会生效!" -msgid "(Set the brim type to \"painted\")" +msgid "Set the brim type to \"painted\"" msgstr "将Brim类型设置为绘制模式" msgid " invalid brim ears" @@ -2006,9 +2009,6 @@ msgstr "确认" msgid "Jump to Layer" msgstr "跳转到层" -msgid "Jump to layer" -msgstr "跳转到层" - msgid "Please enter the layer number" msgstr "请输入层数" @@ -3738,6 +3738,10 @@ msgstr "" "对象被放置在打印板的边界上或超过高度限制。\n" "请通过将其完全移动到打印板内或打印板外,并确认高度在构建空间以内来解决问题。" +#, c-format, boost-format +msgid "filaments %s cannot be printed directly on the surface of this plate." +msgstr "材料 %s 不能在直接在当前打印板上打印。" + msgid "Calibration step selection" msgstr "校准步骤选择" @@ -4865,6 +4869,9 @@ msgstr "三角面数量" msgid "0" msgstr "" +msgid "Don't show again" +msgstr "不再显示" + msgid "Calculating, please wait..." msgstr "计算中,请等待..." @@ -4874,9 +4881,6 @@ msgstr "设备状态" msgid "Update" msgstr "固件更新" -msgid "Don't show again" -msgstr "不再显示" - #, c-format, boost-format msgid "%s error" msgstr "%s 错误" @@ -5058,6 +5062,9 @@ msgstr "你的模型需要支撑才能打印。请开启材料支撑选项。" msgid "Gcode path overlap" msgstr "Gcode路径有重叠" +msgid "Click Wiki for help." +msgstr "点击Wiki寻求帮助。" + msgid "Support painting" msgstr "支撑绘制" @@ -5133,14 +5140,14 @@ msgstr "裹头检测" msgid "Check if the nozzle is clumping by filament or other foreign objects." msgstr "检查喷嘴是否被耗材丝或其他异物裹住" -msgid "Nozzle Type" -msgstr "喷嘴类型" +msgid "Hardened Steel" +msgstr "硬化钢" msgid "Stainless Steel" msgstr "不锈钢" -msgid "Hardened Steel" -msgstr "硬化钢" +msgid "Nozzle Type" +msgstr "喷嘴类型" #, c-format, boost-format msgid "%.1f" @@ -5882,6 +5889,13 @@ msgid "" "same time and manage multiple devices." msgstr "启用此选项后,您可以同时向多个设备发送任务并管理多个设备。" +msgid "Show the step mesh parameter setting dialog." +msgstr "显示step参数设置对话框。" + +msgid "" +"If enabled,a parameter settings dialog will appear during STEP file import." +msgstr "如果启用,导入step文件时将出现设置参数对话框。" + msgid "Support beta version update." msgstr "支持beta版本更新" @@ -5975,6 +5989,9 @@ msgstr "在线模型" msgid "Show online staff-picked models on the home page" msgstr "在主页上显示工作人员挑选的在线模型" +msgid "Show history on the home page" +msgstr "在主页上显示历史" + msgid "Maximum recent projects" msgstr "近期项目的最大数量" @@ -6364,15 +6381,9 @@ msgstr "离线" msgid "Busy" msgstr "忙碌" -msgid "Bambu Cool Plate SuperTack" -msgstr "低温增稳打印板" - msgid "Bambu Cool Plate" msgstr "低温打印板" -msgid "PLA Plate" -msgstr "PLA打印板" - msgid "Bamabu Engineering Plate" msgstr "工程材料打印板" @@ -6385,6 +6396,9 @@ msgstr "高温打印板" msgid "Bamabu Textured PEI Plate" msgstr "纹理PEI打印板" +msgid "Bambu Cool Plate SuperTack" +msgstr "低温增稳打印板" + msgid "Send print job to" msgstr "发送打印任务至" @@ -6539,11 +6553,10 @@ msgstr "" "切片文件中的喷嘴直径与记忆的喷嘴不一致。如果您最近更换了喷嘴,请前往设备 > 打" "印机零件进行更改设置。" -#, c-format, boost-format msgid "" -"Printing high temperature material(%s material) with %s may cause nozzle " +"Printing high temperature material(%1 material) with %2 may cause nozzle " "damage" -msgstr "用%s打印高温材料(%s材料)可能会导致喷嘴损坏" +msgstr "用%2打印高温材料(%1材料)可能会导致喷嘴损坏" msgid "Please fix the error above, otherwise printing cannot continue." msgstr "请修复上述错误,否则打印无法继续。" @@ -6971,8 +6984,8 @@ msgid "" "does not support to print on the Bambu Cool Plate SuperTack" msgstr "安装冷却板时的床温。值0表示耗材丝不支持在低温增稳打印板上打印。" -msgid "Cool Plate / PLA Plate" -msgstr "低温打印板 / PLA打印板" +msgid "Cool Plate" +msgstr "低温打印板" msgid "" "Bed temperature when cool plate is installed. Value 0 means the filament " @@ -7784,23 +7797,29 @@ msgid "Connect the printer using IP and access code" msgstr "使用IP和访问代码连接打印" msgid "" -"Step 1, please confirm Bambu Studio and your printer are in the same LAN." -msgstr "第1步,请确认Bambu Studio和您的打印机在同一个LAN上。" +"Step 1. Please confirm Bambu Studio and your printer are in the same LAN." +msgstr "步骤1,请确认Bambu Studio和您的打印机位于同一局域网中。" msgid "" -"Step 2, if the IP and Access Code below are different from the actual values " +"Step 2. If the IP and Access Code below are different from the actual values " "on your printer, please correct them." -msgstr "第2步,如果下方的IP和访问代码与打印机上的实际值不同,请更正。" +msgstr "步骤2,如果下面的IP和访问代码与打印机上的实际值不同,请重新输入。" + +msgid "" +"Step 3. Please obtain the device SN from the printer side; it is usually " +"found in the device information on the printer screen." +msgstr "" +"步骤3,请从打印机端获取设备序列号,它通常位于打印机屏幕上的设备信息中。" msgid "Access Code" msgstr "访问码" +msgid "Printer model" +msgstr "打印机模型" + msgid "Where to find your printer's IP and Access Code?" msgstr "在哪里可以找到打印机的IP和访问代码?" -msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "步骤3,请ping打印机的IP地址,以此检查丢包和延迟。" - msgid "Connect" msgstr "连接" @@ -7813,9 +7832,6 @@ msgstr "无法连接到打印机" msgid "Failed to publish login request." msgstr "发布登录请求失败" -msgid "The device does not support using IP and Access Code for connection." -msgstr "该设备不支持使用IP和访问代码进行连接。" - msgid "The printer has already been bound." msgstr "打印机已绑定。" @@ -7985,8 +8001,19 @@ msgstr "" "由于错误的自定义G-code,G-code生成失败。\n" "\n" -msgid "Please check the custom G-code or use the default custom G-code." -msgstr "请检查自定义G-code,或者使用默认的。" +msgid "Please check the custom G-code or use the default custom G-code.\n" +msgstr "请检查自定义G-code,或者使用默认的。\n" + +msgid "" +"You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament " +"settings' -> 'Advanced'." +msgstr "您可以在“打印机设置”->“打印机 G-code”和“耗材设置”->“高级”中找到它们。" + +msgid "You can find it from 'Printer settings' -> 'Machine G-code'." +msgstr "您可以在“打印机设置”->“打印机 G-code”中找到它。" + +msgid "You can find it from 'Filament settings' -> 'Advanced'." +msgstr "您可以在“耗材设置”->“高级”中找到它" #, boost-format msgid "Generating G-code: layer %1%" @@ -8918,10 +8945,13 @@ msgid "" "object printing." msgstr "喷嘴尖端到顶盖的距离。用于在逐件打印中避免碰撞。" +msgid "Distance to rod" +msgstr "到滑杆距离" + msgid "" -"Clearance radius around extruder. Used for collision avoidance in by-object " -"printing." -msgstr "挤出机四周的避让半径。用于在逐件打印中避免碰撞。" +"Horizontal distance of the nozzle tip to the rod's farther edge. Used for " +"collision avoidance in by-object printing." +msgstr "喷嘴尖端到滑杆的较远边缘的水平距离。用于在逐件打印中避免碰撞。" msgid "Nozzle height" msgstr "喷嘴高度" @@ -10053,16 +10083,16 @@ msgstr "" "为了减少闭环挤出中接缝的可见性,循环会被中断并缩短指定的长度。\n" "这个长度是当前挤出器直径的百分比。该参数的默认值为15。" -msgid "Conditional scarf joint" -msgstr "选择性应用斜拼接缝" +msgid "Smart scarf seam application" +msgstr "智能斜拼接缝应用" msgid "" "Apply scarf joints only to smooth perimeters where traditional seams do not " "conceal the seams at sharp corners effectively." msgstr "当墙壁没有合适的锐角以至于传统接缝无法有效隐藏的时候使用斜拼接缝。" -msgid "Conditional angle threshold" -msgstr "角度阈值" +msgid "Scarf application angle threshold" +msgstr "斜拼角度阈值" msgid "" "This option sets the threshold angle for applying a conditional scarf joint " @@ -10105,7 +10135,7 @@ msgstr "" "擦拭速度是根据此配置中指定的速度设置确定的。如果该值以百分比形式表示(例如" "80%),则将根据上方的移动速度设置进行计算。该参数的默认值为80%。" -msgid "Role base wipe speed" +msgid "Role-based wipe speed" msgstr "自动擦拭速度" msgid "" @@ -10891,16 +10921,16 @@ msgstr "" "对象的XY尺寸补偿不会生效,因为在此对象上做过涂色操作。\n" "XY尺寸补偿不能与涂色功能一起使用。" -msgid "" -"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." -msgstr "未知的文件格式。输入文件的扩展名必须为.stl、.obj 或 .amf(.xml)。" - msgid "Loading of a model file failed." msgstr "加载模型文件失败。" msgid "The supplied file couldn't be read because it's empty" msgstr "无法读取提供的文件,因为该文件为空。" +msgid "" +"Unknown file format. Input file must have .stl, .obj, .amf(.xml) extension." +msgstr "未知的文件格式。输入文件的扩展名必须为.stl、.obj 或 .amf(.xml)。" + msgid "Unknown file format. Input file must have .3mf or .zip.amf extension." msgstr "未知的文件格式。输入文件的扩展名必须为.3mf或.zip .amf。" @@ -11355,6 +11385,24 @@ msgstr "图案" msgid "Method" msgstr "模式" +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high " +"probability of failure.\n" +"If it fails, it is recommended to use manual calibration." +msgstr "" +"提示:使用%.1fmm喷嘴进行自动流量校准可能会有较高的失败概率,如果失败,建议使" +"用手动校准。" + +#, c-format, boost-format +msgid "" +"Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get " +"accurate calibration results.\n" +"It is recommended to use manual calibration." +msgstr "" +"提示:使用%.1fmm喷嘴进行自动动态流量校准很可能无法获得准确的校准结果,建议使" +"用手动校准。" + #, c-format, boost-format msgid "%s is not compatible with %s" msgstr "%s 与 %s 不兼容" @@ -11362,6 +11410,26 @@ msgstr "%s 与 %s 不兼容" msgid "TPU is not supported for Flow Dynamics Auto-Calibration." msgstr "不支持TPU进行动态流量自动校准。" +#, c-format, boost-format +msgid "" +"Tip: Calibrating foam filaments(%s) in X series printers may not get " +"accurate results\n" +"because their dynamic response is much different from that of ordinary " +"filaments, and there is a high risk of oozing when printing calibration " +"lines." +msgstr "" +"提示:X系列设备校准发泡材料(%s)可能无法得到一个准确的校准值,\n" +"因为它的动态响应和普通材料差距较大,且在打印校准线的时候有较大的漏料风险。" + +#, c-format, boost-format +msgid "" +"Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam " +"filaments(%s),\n" +"as the results may be unstable and affect print quality." +msgstr "" +"提示:在使用A1/A1 mini机器时,不建议对发泡类材料(%s)进行校准,\n" +"以免因效果不佳(校准结果不稳定)而影响打印质量。" + msgid "Connecting to printer" msgstr "正在连接打印机" @@ -13082,6 +13150,72 @@ msgstr "" "避免翘曲\n" "您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。" +#, c-format, boost-format +#~ msgid "" +#~ "Printing high temperature material(%s material) with %s may cause nozzle " +#~ "damage" +#~ msgstr "用%s打印高温材料(%s材料)可能会导致喷嘴损坏" + +#, c-format, boost-format +#~ msgid "" +#~ "Tip: When using the A1/A1 mini machine, we do not recommend calibrating " +#~ "foam filaments(%s),\n" +#~ "as the results may be unstable and affect print quality." +#~ msgstr "" +#~ "提示:在使用A1/A1 mini机器时,不建议对发泡类材料(%s)进行校准,\n" +#~ "以免因效果不佳(校准结果不稳定)而影响打印质量。" + +#, c-format, boost-format +#~ msgid "filaments %s cannot be printed directly on the surface of this plate" +#~ msgstr "材料 %s 不能在直接在当前打印板上打印" + +#~ msgid "Remove all points" +#~ msgstr "删除所有点" + +#~ msgid "(Set the brim type to \"painted\")" +#~ msgstr "将Brim类型设置为绘制模式" + +#~ msgid "Conditional scarf joint" +#~ msgstr "选择性应用斜拼接缝" + +#~ msgid "Conditional angle threshold" +#~ msgstr "角度阈值" + +#~ msgid "Role base wipe speed" +#~ msgstr "自动擦拭速度" + +#~ msgid "Jump to layer" +#~ msgstr "跳转到层" + +#~ msgid "PLA Plate" +#~ msgstr "PLA打印板" + +#~ msgid "Cool Plate / PLA Plate" +#~ msgstr "低温打印板 / PLA打印板" + +#~ msgid "" +#~ "Step 1, please confirm Bambu Studio and your printer are in the same LAN." +#~ msgstr "第1步,请确认Bambu Studio和您的打印机在同一个LAN上。" + +#~ msgid "" +#~ "Step 2, if the IP and Access Code below are different from the actual " +#~ "values on your printer, please correct them." +#~ msgstr "第2步,如果下方的IP和访问代码与打印机上的实际值不同,请更正。" + +#~ msgid "Step 3: Ping the IP address to check for packet loss and latency." +#~ msgstr "步骤3,请ping打印机的IP地址,以此检查丢包和延迟。" + +#~ msgid "The device does not support using IP and Access Code for connection." +#~ msgstr "该设备不支持使用IP和访问代码进行连接。" + +#~ msgid "Please check the custom G-code or use the default custom G-code." +#~ msgstr "请检查自定义G-code,或者使用默认的。" + +#~ msgid "" +#~ "Clearance radius around extruder. Used for collision avoidance in by-" +#~ "object printing." +#~ msgstr "挤出机四周的避让半径。用于在逐件打印中避免碰撞。" + #~ msgid "Warning: The brim type is not set to manual," #~ msgstr "警告:Brim类型未设置为手动," @@ -15083,9 +15217,6 @@ msgstr "" #~ "有一些未知型号的材料,映射到通用预设。请更新或者重启 Bambu Studio,以检查" #~ "系统预设有没有更新。" -#~ msgid "Cool Plate" -#~ msgstr "低温打印板" - #~ msgid "" #~ "Extrusion compensation calibration is not supported when using Textured " #~ "PEI Plate" @@ -15152,7 +15283,7 @@ msgstr "" #~ msgstr "下载视频" #~ msgid "Cool plate" -#~ msgstr "低温打印板 / PLA打印板" +#~ msgstr "低温打印板" #~ msgid "Engineering plate" #~ msgstr "工程材料打印板" diff --git a/resources/i18n/cs/BambuStudio.mo b/resources/i18n/cs/BambuStudio.mo index 3333fd0d4a..3d1d484b35 100644 Binary files a/resources/i18n/cs/BambuStudio.mo and b/resources/i18n/cs/BambuStudio.mo differ diff --git a/resources/i18n/de/BambuStudio.mo b/resources/i18n/de/BambuStudio.mo index ff02269d20..6390f90a68 100644 Binary files a/resources/i18n/de/BambuStudio.mo and b/resources/i18n/de/BambuStudio.mo differ diff --git a/resources/i18n/en/BambuStudio.mo b/resources/i18n/en/BambuStudio.mo index 735b3f1ffd..afd84a83f9 100644 Binary files a/resources/i18n/en/BambuStudio.mo and b/resources/i18n/en/BambuStudio.mo differ diff --git a/resources/i18n/es/BambuStudio.mo b/resources/i18n/es/BambuStudio.mo index 5b459b7b22..d73b189b8b 100644 Binary files a/resources/i18n/es/BambuStudio.mo and b/resources/i18n/es/BambuStudio.mo differ diff --git a/resources/i18n/fr/BambuStudio.mo b/resources/i18n/fr/BambuStudio.mo index b092a4885e..e65fe89d72 100644 Binary files a/resources/i18n/fr/BambuStudio.mo and b/resources/i18n/fr/BambuStudio.mo differ diff --git a/resources/i18n/hu/BambuStudio.mo b/resources/i18n/hu/BambuStudio.mo index 7885de4513..88973cb17b 100644 Binary files a/resources/i18n/hu/BambuStudio.mo and b/resources/i18n/hu/BambuStudio.mo differ diff --git a/resources/i18n/it/BambuStudio.mo b/resources/i18n/it/BambuStudio.mo index 5f9807a9bb..9e264cc304 100644 Binary files a/resources/i18n/it/BambuStudio.mo and b/resources/i18n/it/BambuStudio.mo differ diff --git a/resources/i18n/ja/BambuStudio.mo b/resources/i18n/ja/BambuStudio.mo index d58c3cddc5..db8afa75ba 100644 Binary files a/resources/i18n/ja/BambuStudio.mo and b/resources/i18n/ja/BambuStudio.mo differ diff --git a/resources/i18n/ko/BambuStudio.mo b/resources/i18n/ko/BambuStudio.mo index 486e76d343..8fb4343302 100644 Binary files a/resources/i18n/ko/BambuStudio.mo and b/resources/i18n/ko/BambuStudio.mo differ diff --git a/resources/i18n/nl/BambuStudio.mo b/resources/i18n/nl/BambuStudio.mo index 67ca2e4afd..b684574181 100644 Binary files a/resources/i18n/nl/BambuStudio.mo and b/resources/i18n/nl/BambuStudio.mo differ diff --git a/resources/i18n/pl/BambuStudio.mo b/resources/i18n/pl/BambuStudio.mo index 2dfaefa011..ebd84485e1 100644 Binary files a/resources/i18n/pl/BambuStudio.mo and b/resources/i18n/pl/BambuStudio.mo differ diff --git a/resources/i18n/pt-BR/BambuStudio.mo b/resources/i18n/pt-BR/BambuStudio.mo index 685a2e20e1..74d63df0ad 100644 Binary files a/resources/i18n/pt-BR/BambuStudio.mo and b/resources/i18n/pt-BR/BambuStudio.mo differ diff --git a/resources/i18n/pt_br/BambuStudio.mo b/resources/i18n/pt_br/BambuStudio.mo index 685a2e20e1..74d63df0ad 100644 Binary files a/resources/i18n/pt_br/BambuStudio.mo and b/resources/i18n/pt_br/BambuStudio.mo differ diff --git a/resources/i18n/ru/BambuStudio.mo b/resources/i18n/ru/BambuStudio.mo index 4f600dbfac..2482f8bd0d 100644 Binary files a/resources/i18n/ru/BambuStudio.mo and b/resources/i18n/ru/BambuStudio.mo differ diff --git a/resources/i18n/sv/BambuStudio.mo b/resources/i18n/sv/BambuStudio.mo index dc6fb92f83..9daf7caf7e 100644 Binary files a/resources/i18n/sv/BambuStudio.mo and b/resources/i18n/sv/BambuStudio.mo differ diff --git a/resources/i18n/tr/BambuStudio.mo b/resources/i18n/tr/BambuStudio.mo index 0cdd51eb8f..6468047601 100644 Binary files a/resources/i18n/tr/BambuStudio.mo and b/resources/i18n/tr/BambuStudio.mo differ diff --git a/resources/i18n/uk/BambuStudio.mo b/resources/i18n/uk/BambuStudio.mo index 2726ec48d4..76a3531c10 100644 Binary files a/resources/i18n/uk/BambuStudio.mo and b/resources/i18n/uk/BambuStudio.mo differ diff --git a/resources/i18n/zh_cn/BambuStudio.mo b/resources/i18n/zh_cn/BambuStudio.mo index 46cc13da43..4755713073 100644 Binary files a/resources/i18n/zh_cn/BambuStudio.mo and b/resources/i18n/zh_cn/BambuStudio.mo differ diff --git a/resources/images/bbl_bed_ep_left.svg b/resources/images/bbl_bed_ep_left.svg index 5ae83ea4a6..a4e92572d3 100644 --- a/resources/images/bbl_bed_ep_left.svg +++ b/resources/images/bbl_bed_ep_left.svg @@ -1,23 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pc_left.svg b/resources/images/bbl_bed_pc_left.svg index 5d3d787754..0f18a8e076 100644 --- a/resources/images/bbl_bed_pc_left.svg +++ b/resources/images/bbl_bed_pc_left.svg @@ -1,16 +1,28 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pei_left.svg b/resources/images/bbl_bed_pei_left.svg index 91fe150403..ae8b8e2042 100644 --- a/resources/images/bbl_bed_pei_left.svg +++ b/resources/images/bbl_bed_pei_left.svg @@ -1,35 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_pte_left.svg b/resources/images/bbl_bed_pte_left.svg index c2ddff20d9..4ce633f548 100644 --- a/resources/images/bbl_bed_pte_left.svg +++ b/resources/images/bbl_bed_pte_left.svg @@ -1,23 +1,35 @@ - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_st_bottom.svg b/resources/images/bbl_bed_st_bottom.svg new file mode 100644 index 0000000000..68c0c0f594 --- /dev/null +++ b/resources/images/bbl_bed_st_bottom.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_st_left.svg b/resources/images/bbl_bed_st_left.svg new file mode 100644 index 0000000000..6f40e0f538 --- /dev/null +++ b/resources/images/bbl_bed_st_left.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bind_device_ping_code_dark.svg b/resources/images/bind_device_ping_code_dark.svg new file mode 100644 index 0000000000..0a1af1b910 --- /dev/null +++ b/resources/images/bind_device_ping_code_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/images/bind_device_ping_code.svg b/resources/images/bind_device_ping_code_light.svg similarity index 100% rename from resources/images/bind_device_ping_code.svg rename to resources/images/bind_device_ping_code_light.svg diff --git a/resources/profiles/Anycubic/machine/fdm_machine_common.json b/resources/profiles/Anycubic/machine/fdm_machine_common.json index 235e52428b..be153c7d2c 100644 --- a/resources/profiles/Anycubic/machine/fdm_machine_common.json +++ b/resources/profiles/Anycubic/machine/fdm_machine_common.json @@ -87,7 +87,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 9693353800..7f06370aab 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": "01.10.00.16", + "version": "01.10.00.19", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -845,6 +845,10 @@ "name": "Fiberon PET-CF @base", "sub_path": "filament/Fiberon PET-CF @base.json" }, + { + "name": "Generic PETG HF @base", + "sub_path": "filament/Generic PETG HF @base.json" + }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" @@ -2017,6 +2021,38 @@ "name": "Fiberon PET-CF @BBL X1C", "sub_path": "filament/Fiberon PET-CF @BBL X1C.json" }, + { + "name": "Generic PETG HF @BBL X1C", + "sub_path": "filament/Generic PETG HF @BBL X1C.json" + }, + { + "name": "Generic PETG HF @BBL X1C 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL P1P", + "sub_path": "filament/Generic PETG HF @BBL P1P.json" + }, + { + "name": "Generic PETG HF @BBL P1P 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL A1", + "sub_path": "filament/Generic PETG HF @BBL A1.json" + }, + { + "name": "Generic PETG HF @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL A1 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL A1M", + "sub_path": "filament/Generic PETG HF @BBL A1M.json" + }, + { + "name": "Generic PETG HF @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu ABS @BBL X1C", "sub_path": "filament/Bambu ABS @BBL X1C.json" diff --git a/resources/profiles/BBL/filament/Bambu PET-CF @base.json b/resources/profiles/BBL/filament/Bambu PET-CF @base.json index fc4fdfcdc7..fd0c71af6c 100644 --- a/resources/profiles/BBL/filament/Bambu PET-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PET-CF @base.json @@ -6,12 +6,6 @@ "filament_id": "GFT01", "instantiation": "false", "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], @@ -75,6 +69,12 @@ "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], "slow_down_layer_time": [ "2" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json index 356f4ced79..801cab4aae 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json @@ -6,12 +6,6 @@ "filament_id": "GFG00", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @base.json b/resources/profiles/BBL/filament/Bambu PETG HF @base.json index cf948722a2..ebc2159925 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @base.json @@ -5,12 +5,6 @@ "from": "system", "filament_id": "GFG02", "instantiation": "false", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json index 71db3e9709..f2569d5f39 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json @@ -6,12 +6,6 @@ "filament_id": "GFG01", "instantiation": "false", "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json index 74aa2237e3..31b96e91b0 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @base.json @@ -5,12 +5,6 @@ "from": "system", "filament_id": "GFG50", "instantiation": "false", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json index 9c6525dd5d..484a397270 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json @@ -27,14 +27,20 @@ "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_high": [ - "260" + "filament_scarf_seam_type": [ + "none" ], "nozzle_temperature_range_low": [ "210" ], - "filament_scarf_seam_type": [ - "none" + "nozzle_temperature_range_high": [ + "260" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json index 2b074bab89..e9e66c97eb 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json @@ -18,24 +18,24 @@ "filament_vendor": [ "Bambu Lab" ], - "filament_scarf_seam_type": [ - "all" - ], - "filament_scarf_height":[ + "filament_scarf_height": [ "5%" ], - "filament_scarf_gap":[ + "filament_scarf_gap": [ "0%" ], - "filament_scarf_length":[ - "10" - ], "nozzle_temperature": [ "230" ], "nozzle_temperature_initial_layer": [ "230" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json index c290e93d44..ac88cc7098 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json @@ -8,12 +8,6 @@ "additional_cooling_fan_speed": [ "0" ], - "supertack_plate_temp": [ - "45" - ], - "supertack_plate_temp_initial_layer": [ - "45" - ], "cool_plate_temp": [ "45" ], @@ -35,15 +29,21 @@ "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_high": [ - "250" - ], "nozzle_temperature_range_low": [ "210" ], + "nozzle_temperature_range_high": [ + "250" + ], "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "50" + ], + "supertack_plate_temp_initial_layer": [ + "50" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json index 156b0d77ee..7868741dae 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -6,12 +6,6 @@ "filament_id": "GFS02", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", - "supertack_plate_temp": [ - "40" - ], - "supertack_plate_temp_initial_layer": [ - "40" - ], "cool_plate_temp": [ "40" ], @@ -30,12 +24,12 @@ "filament_vendor": [ "Bambu Lab" ], - "slow_down_layer_time": [ - "8" - ], "filament_scarf_seam_type": [ "none" ], + "slow_down_layer_time": [ + "8" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json index b5372827ee..6eae3684bf 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json @@ -27,6 +27,9 @@ "filament_max_volumetric_speed": [ "6" ], + "filament_scarf_seam_type": [ + "none" + ], "filament_vendor": [ "Bambu Lab" ], @@ -45,13 +48,13 @@ "slow_down_layer_time": [ "8" ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "textured_plate_temp": [ "60" ], "textured_plate_temp_initial_layer": [ "60" - ], - "filament_scarf_seam_type": [ - "none" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index b9db9fd894..2b40b44e08 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -6,12 +6,6 @@ "filament_id": "GFS00", "instantiation": "false", "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", - "supertack_plate_temp": [ - "40" - ], - "supertack_plate_temp_initial_layer": [ - "40" - ], "cool_plate_temp": [ "40" ], @@ -30,12 +24,12 @@ "filament_vendor": [ "Bambu Lab" ], - "slow_down_layer_time": [ - "8" - ], "filament_scarf_seam_type": [ "none" ], + "slow_down_layer_time": [ + "8" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Fiberon PET-CF @base.json b/resources/profiles/BBL/filament/Fiberon PET-CF @base.json index 578e695189..8a6520f1f4 100644 --- a/resources/profiles/BBL/filament/Fiberon PET-CF @base.json +++ b/resources/profiles/BBL/filament/Fiberon PET-CF @base.json @@ -62,6 +62,12 @@ "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], "slow_down_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/Generic EVA @base.json b/resources/profiles/BBL/filament/Generic EVA @base.json index 13cbbf6022..7c22532034 100644 --- a/resources/profiles/BBL/filament/Generic EVA @base.json +++ b/resources/profiles/BBL/filament/Generic EVA @base.json @@ -11,12 +11,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "cool_plate_temp": [ "35" ], @@ -44,9 +38,6 @@ "filament_max_volumetric_speed": [ "12" ], - "filament_type": [ - "EVA" - ], "hot_plate_temp": [ "55" ], diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json index 8de4609bb0..29734e7a95 100644 --- a/resources/profiles/BBL/filament/Generic PETG @base.json +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -5,12 +5,6 @@ "from": "system", "filament_id": "GFG99", "instantiation": "false", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json new file mode 100644 index 0000000000..099dfcc30a --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_05", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json new file mode 100644 index 0000000000..d870068812 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_04", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle", + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json new file mode 100644 index 0000000000..0b499781ae --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1M 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_07", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json new file mode 100644 index 0000000000..b42117eec9 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1M", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_06", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json new file mode 100644 index 0000000000..ff6131e515 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL P1P 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_03", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json new file mode 100644 index 0000000000..00587abea4 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL P1P", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_02", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json new file mode 100644 index 0000000000..963be7b885 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL X1C 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_01", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json new file mode 100644 index 0000000000..cdb1a1196c --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL X1C", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @base.json b/resources/profiles/BBL/filament/Generic PETG HF @base.json new file mode 100644 index 0000000000..085538fe91 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @base.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Generic PETG HF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG96", + "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": [ + "40" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "25" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG-CF @base.json b/resources/profiles/BBL/filament/Generic PETG-CF @base.json index 57a8c8bb79..5690901216 100644 --- a/resources/profiles/BBL/filament/Generic PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PETG-CF @base.json @@ -5,12 +5,6 @@ "from": "system", "filament_id": "GFG98", "instantiation": "false", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], @@ -44,9 +38,6 @@ "filament_type": [ "PETG-CF" ], - "filament_vendor": [ - "Generic" - ], "hot_plate_temp": [ "70" ], @@ -71,9 +62,6 @@ "slow_down_layer_time": [ "6" ], - "temperature_vitrification": [ - "70" - ], "textured_plate_temp": [ "70" ], diff --git a/resources/profiles/BBL/filament/Generic PLA Silk @base.json b/resources/profiles/BBL/filament/Generic PLA Silk @base.json index e54a44e106..03f0c0edcd 100644 --- a/resources/profiles/BBL/filament/Generic PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Generic PLA Silk @base.json @@ -9,6 +9,12 @@ "filament_flow_ratio": [ "0.98" ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Generic PLA-CF @base.json b/resources/profiles/BBL/filament/Generic PLA-CF @base.json index e7420a2635..8bb1564a4c 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF @base.json @@ -8,12 +8,6 @@ "additional_cooling_fan_speed": [ "0" ], - "supertack_plate_temp": [ - "45" - ], - "supertack_plate_temp_initial_layer": [ - "45" - ], "cool_plate_temp": [ "45" ], @@ -29,6 +23,12 @@ "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "50" + ], + "supertack_plate_temp_initial_layer": [ + "50" + ], "slow_down_layer_time": [ "7" ], diff --git a/resources/profiles/BBL/filament/PolyLite PETG @base.json b/resources/profiles/BBL/filament/PolyLite PETG @base.json index 89365dd39e..d93701f41d 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @base.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @base.json @@ -5,12 +5,6 @@ "from": "system", "filament_id": "GFG60", "instantiation": "false", - "supertack_plate_temp": [ - "0" - ], - "supertack_plate_temp_initial_layer": [ - "0" - ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_bvoh.json b/resources/profiles/BBL/filament/fdm_filament_bvoh.json index 5f20ebc545..10b86375bb 100644 --- a/resources/profiles/BBL/filament/fdm_filament_bvoh.json +++ b/resources/profiles/BBL/filament/fdm_filament_bvoh.json @@ -10,12 +10,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "40" - ], - "supertack_plate_temp_initial_layer": [ - "40" - ], "cool_plate_temp": [ "40" ], @@ -73,6 +67,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_min_speed": [ "20" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 52bc73c69a..1e7a813c4b 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -15,12 +15,6 @@ "complete_print_exhaust_fan_speed": [ "70" ], - "supertack_plate_temp": [ - "60" - ], - "supertack_plate_temp_initial_layer": [ - "60" - ], "cool_plate_temp": [ "60" ], @@ -120,6 +114,21 @@ "full_fan_speed_layer": [ "0" ], + "filament_scarf_seam_type": [ + "none" + ], + "filament_scarf_height": [ + "10%" + ], + "filament_scarf_gap": [ + "0%" + ], + "filament_scarf_length": [ + "10" + ], + "filament_shrink": [ + "100%" + ], "hot_plate_temp": [ "60" ], @@ -144,6 +153,12 @@ "required_nozzle_HRC": [ "3" ], + "supertack_plate_temp": [ + "45" + ], + "supertack_plate_temp_initial_layer": [ + "45" + ], "slow_down_for_layer_cooling": [ "1" ], @@ -162,21 +177,6 @@ "textured_plate_temp_initial_layer": [ "60" ], - "filament_scarf_seam_type": [ - "none" - ], - "filament_scarf_height":[ - "10%" - ], - "filament_scarf_gap":[ - "0%" - ], - "filament_scarf_length":[ - "10" - ], - "filament_shrink": [ - "100%" - ], "compatible_printers": [], "filament_start_gcode": [ "; Filament gcode\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" diff --git a/resources/profiles/BBL/filament/fdm_filament_eva.json b/resources/profiles/BBL/filament/fdm_filament_eva.json index 1b2efe2999..5eaf47fd3c 100644 --- a/resources/profiles/BBL/filament/fdm_filament_eva.json +++ b/resources/profiles/BBL/filament/fdm_filament_eva.json @@ -6,5 +6,11 @@ "instantiation": "false", "filament_type": [ "EVA" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pctg.json b/resources/profiles/BBL/filament/fdm_filament_pctg.json index 1b38376293..5c93c7d0d4 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pctg.json +++ b/resources/profiles/BBL/filament/fdm_filament_pctg.json @@ -1,64 +1,70 @@ { - "type": "filament", - "name": "fdm_filament_pctg", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PCTG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "255" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" - ] + "type": "filament", + "name": "fdm_filament_pctg", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.27" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PCTG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pe.json b/resources/profiles/BBL/filament/fdm_filament_pe.json index 7db3413afa..0808a35524 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pe.json +++ b/resources/profiles/BBL/filament/fdm_filament_pe.json @@ -10,12 +10,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "cool_plate_temp": [ "35" ], @@ -70,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pet.json b/resources/profiles/BBL/filament/fdm_filament_pet.json index 4a5f6085ca..ef13f4f894 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pet.json +++ b/resources/profiles/BBL/filament/fdm_filament_pet.json @@ -49,6 +49,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pha.json b/resources/profiles/BBL/filament/fdm_filament_pha.json index 302f92f2c9..19d143f5a7 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pha.json +++ b/resources/profiles/BBL/filament/fdm_filament_pha.json @@ -10,12 +10,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "cool_plate_temp": [ "35" ], @@ -70,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index 96dabfd036..14291cea0b 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -4,68 +4,56 @@ "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_density": [ - "1.24" + "additional_cooling_fan_speed": [ + "70" ], - "filament_cost": [ - "20" + "close_fan_the_first_x_layers": [ + "1" ], "cool_plate_temp": [ "35" ], - "eng_plate_temp": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "textured_plate_temp": [ - "55" - ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "cool_plate_temp_initial_layer": [ "35" ], + "eng_plate_temp": [ + "0" + ], "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer": [ - "55" + "fan_cooling_layer_time": [ + "100" ], - "textured_plate_temp_initial_layer": [ - "55" + "fan_min_speed": [ + "100" ], - "nozzle_temperature_initial_layer": [ - "220" + "filament_cost": [ + "20" ], - "reduce_fan_stop_start_freq": [ - "1" + "filament_density": [ + "1.24" ], - "fan_min_speed": [ - "100" + "filament_max_volumetric_speed": [ + "12" ], - "overhang_fan_threshold": [ - "50%" + "filament_scarf_seam_type": [ + "all" ], - "close_fan_the_first_x_layers": [ - "1" + "filament_scarf_gap": [ + "15%" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" ], "nozzle_temperature": [ "220" ], - "temperature_vitrification": [ - "45" + "nozzle_temperature_initial_layer": [ + "220" ], "nozzle_temperature_range_low": [ "190" @@ -73,26 +61,26 @@ "nozzle_temperature_range_high": [ "240" ], - "slow_down_min_speed": [ - "20" + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" ], "slow_down_layer_time": [ "4" ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_scarf_seam_type": [ - "all" + "slow_down_min_speed": [ + "20" ], - "filament_scarf_height":[ - "10%" + "temperature_vitrification": [ + "45" ], - "filament_scarf_gap":[ - "15%" + "textured_plate_temp": [ + "55" ], - "filament_scarf_length":[ - "10" + "textured_plate_temp_initial_layer": [ + "55" ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" diff --git a/resources/profiles/BBL/filament/fdm_filament_pp.json b/resources/profiles/BBL/filament/fdm_filament_pp.json index 9b6bcc7936..66927c186a 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pp.json +++ b/resources/profiles/BBL/filament/fdm_filament_pp.json @@ -10,12 +10,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "35" - ], - "supertack_plate_temp_initial_layer": [ - "35" - ], "cool_plate_temp": [ "35" ], @@ -70,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pva.json b/resources/profiles/BBL/filament/fdm_filament_pva.json index 83149ea854..2b00903a60 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pva.json +++ b/resources/profiles/BBL/filament/fdm_filament_pva.json @@ -10,12 +10,6 @@ "close_fan_the_first_x_layers": [ "1" ], - "supertack_plate_temp": [ - "45" - ], - "supertack_plate_temp_initial_layer": [ - "45" - ], "cool_plate_temp": [ "45" ], @@ -76,6 +70,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json index 0e07fa64e0..a897bd8aaa 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json @@ -20,7 +20,7 @@ "extruder_clearance_height_to_lid": "256", "extruder_clearance_height_to_rod": "25", "extruder_clearance_max_radius": "73", - "extruder_clearance_radius": "73", + "extruder_clearance_dist_to_rod": "56.5", "head_wrap_detect_zone": [ "226x224", "256x224", diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json index 9833cf02eb..5319a77f85 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json @@ -21,7 +21,7 @@ "extruder_clearance_height_to_lid": "180", "extruder_clearance_height_to_rod": "25", "extruder_clearance_max_radius": "73", - "extruder_clearance_radius": "73", + "extruder_clearance_dist_to_rod": "56.5", "head_wrap_detect_zone": [ "156x152", "180x152", diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index c9426f5c62..e0968ac56f 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -79,9 +79,10 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "140", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "printer_settings_id": "", "retraction_minimum_travel": [ "2" diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json index 227fb04c57..37a2a12777 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json @@ -8,7 +8,6 @@ "description": "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases.", "elefant_foot_compensation": "0.15", "compatible_printers": [ - "Bambu Lab P1P 0.2 nozzle", - "Bambu Lab P1S 0.2 nozzle" + "Bambu Lab P1P 0.2 nozzle" ] } \ No newline at end of file diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json index d8ea3e681c..b575766fec 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.4 nozzle.json @@ -111,7 +111,8 @@ ], "extruder_clearance_height_to_lid": "250", "extruder_clearance_height_to_rod": "14", - "extruder_clearance_radius": "70", + "extruder_clearance_max_radius": "70", + "extruder_clearance_dist_to_rod": "35", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json index 963a288a5d..006a9765f3 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 0.6 nozzle.json @@ -111,7 +111,8 @@ ], "extruder_clearance_height_to_lid": "250", "extruder_clearance_height_to_rod": "14", - "extruder_clearance_radius": "70", + "extruder_clearance_max_radius": "70", + "extruder_clearance_dist_to_rod": "35", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json index 27afb20173..cba701af25 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 KE 0.4 nozzle.json @@ -12,7 +12,7 @@ "default_print_profile": "0.20mm Standard @Creality Ender3V3KE", "extruder_clearance_height_to_rod": "47", "extruder_clearance_max_radius": "90", - "extruder_clearance_radius": "90", + "extruder_clearance_dist_to_rod": "90", "machine_load_filament_time": "11", "nozzle_diameter": [ "0.4" diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json index 577d9547e7..2a385a01ab 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.4 nozzle.json @@ -111,7 +111,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.12" ], diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json index f38570e8ca..e53fccb835 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 Plus 0.6 nozzle.json @@ -111,7 +111,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.12" ], diff --git a/resources/profiles/Creality/machine/Creality K1 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1 0.6 nozzle.json index 617e663cbd..f2d54e861d 100644 --- a/resources/profiles/Creality/machine/Creality K1 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 0.6 nozzle.json @@ -109,7 +109,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1 0.8 nozzle.json index 19cb4dad24..8a1d79fc12 100644 --- a/resources/profiles/Creality/machine/Creality K1 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 0.8 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1 Max 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max 0.6 nozzle.json index add0414268..ac9bb0db7b 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max 0.6 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1 Max 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1 Max 0.8 nozzle.json index 000ca4b37d..172acbfd44 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1 Max 0.8 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json index b6efa2685a..1f7c2b44a0 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.4 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json index c8a6ae9dbe..6f93eb7462 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.6 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json index 2858d717b6..0d78d54277 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json @@ -110,7 +110,7 @@ ], "extruder_clearance_height_to_lid": "101", "extruder_clearance_height_to_rod": "45", - "extruder_clearance_radius": "45", + "extruder_clearance_dist_to_rod": "45", "z_hop": [ "0.2" ], diff --git a/resources/profiles/Creality/machine/fdm_creality_common.json b/resources/profiles/Creality/machine/fdm_creality_common.json index e5f7ecdc4d..3d573ca8d1 100644 --- a/resources/profiles/Creality/machine/fdm_creality_common.json +++ b/resources/profiles/Creality/machine/fdm_creality_common.json @@ -76,7 +76,7 @@ "max_layer_height": [ "0.32" ], - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "34", "retract_length_toolchange": [ diff --git a/resources/profiles/Creality/machine/fdm_machine_common.json b/resources/profiles/Creality/machine/fdm_machine_common.json index 2ca0db9e5a..4d666b2fd2 100644 --- a/resources/profiles/Creality/machine/fdm_machine_common.json +++ b/resources/profiles/Creality/machine/fdm_machine_common.json @@ -74,7 +74,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "printer_settings_id": "", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.2 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.2 nozzle.json index 3393ab3de7..2d77d0809c 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.2 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.2 nozzle.json @@ -38,7 +38,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "34", "extruder_clearance_height_to_rod": "34", - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.4 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.4 nozzle.json index 52a873dcfa..1aeca70788 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.4 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "34", "extruder_clearance_height_to_rod": "34", - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.6 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.6 nozzle.json index ffad331ee7..def02ce80b 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.6 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.6 nozzle.json @@ -38,7 +38,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "34", "extruder_clearance_height_to_rod": "34", - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.8 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.8 nozzle.json index 9d4fe425cf..9d78ef33f7 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.8 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Max 0.8 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "34", "extruder_clearance_height_to_rod": "34", - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.2 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.2 nozzle.json index 71fc51bdf9..e0a7080281 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.2 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.2 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "380", "extruder_clearance_height_to_rod": "10", - "extruder_clearance_radius": "60", + "extruder_clearance_dist_to_rod": "60", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.4 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.4 nozzle.json index 55f5dea2c8..d8ad85fc3c 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.4 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.4 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "380", "extruder_clearance_height_to_rod": "10", - "extruder_clearance_radius": "60", + "extruder_clearance_dist_to_rod": "60", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.6 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.6 nozzle.json index 2d55088238..8341e385fc 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.6 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.6 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "380", "extruder_clearance_height_to_rod": "10", - "extruder_clearance_radius": "60", + "extruder_clearance_dist_to_rod": "60", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.8 nozzle.json b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.8 nozzle.json index 3b54c487a0..b1ac0f281c 100644 --- a/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.8 nozzle.json +++ b/resources/profiles/Elegoo/machine/Elegoo Neptune 4 Plus 0.8 nozzle.json @@ -30,7 +30,7 @@ "extra_loading_move": "-2", "extruder_clearance_height_to_lid": "380", "extruder_clearance_height_to_rod": "10", - "extruder_clearance_radius": "60", + "extruder_clearance_dist_to_rod": "60", "extruder_colour": ["#FCE94F"], "extruder_offset": ["0x0"], "fan_kickstart": "0", diff --git a/resources/profiles/Elegoo/machine/fdm_elegoo_common.json b/resources/profiles/Elegoo/machine/fdm_elegoo_common.json index faf8c95938..85ab67b941 100644 --- a/resources/profiles/Elegoo/machine/fdm_elegoo_common.json +++ b/resources/profiles/Elegoo/machine/fdm_elegoo_common.json @@ -80,7 +80,7 @@ "0.08" ], "printable_height": "280", - "extruder_clearance_radius": "47", + "extruder_clearance_dist_to_rod": "47", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "34", "printer_settings_id": "", diff --git a/resources/profiles/Elegoo/machine/fdm_machine_common.json b/resources/profiles/Elegoo/machine/fdm_machine_common.json index a5e460ac07..dabf912640 100644 --- a/resources/profiles/Elegoo/machine/fdm_machine_common.json +++ b/resources/profiles/Elegoo/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.07" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Elegoo/machine/fdm_neptune_4_common.json b/resources/profiles/Elegoo/machine/fdm_neptune_4_common.json index a0e6608657..7b94987834 100644 --- a/resources/profiles/Elegoo/machine/fdm_neptune_4_common.json +++ b/resources/profiles/Elegoo/machine/fdm_neptune_4_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "280", - "extruder_clearance_radius": "47", + "extruder_clearance_max_radius": "47", + "extruder_clearance_dist_to_rod": "24", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "34", "printer_settings_id": "", diff --git a/resources/profiles/Geeetech/machine/fdm_geeetech_common.json b/resources/profiles/Geeetech/machine/fdm_geeetech_common.json index 840813efb5..fadf44b543 100644 --- a/resources/profiles/Geeetech/machine/fdm_geeetech_common.json +++ b/resources/profiles/Geeetech/machine/fdm_geeetech_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "47", + "extruder_clearance_max_radius": "47", + "extruder_clearance_dist_to_rod": "24", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "34", "printer_settings_id": "", diff --git a/resources/profiles/Geeetech/machine/fdm_machine_common.json b/resources/profiles/Geeetech/machine/fdm_machine_common.json index 85543a5500..fb4fff3f14 100644 --- a/resources/profiles/Geeetech/machine/fdm_machine_common.json +++ b/resources/profiles/Geeetech/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Prusa/machine/fdm_machine_common.json b/resources/profiles/Prusa/machine/fdm_machine_common.json index b73df798a7..b5794285f9 100644 --- a/resources/profiles/Prusa/machine/fdm_machine_common.json +++ b/resources/profiles/Prusa/machine/fdm_machine_common.json @@ -87,7 +87,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json index 907fb1297e..e28b5ec5ea 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json @@ -41,7 +41,8 @@ "retract_lift_below": [ "269" ], - "extruder_clearance_radius": "60", + "extruder_clearance_max_radius": "60", + "extruder_clearance_dist_to_rod": "30", "extruder_clearance_height_to_rod": "38", "extruder_clearance_height_to_lid": "110", "single_extruder_multi_material": "1", diff --git a/resources/profiles/Qidi/machine/fdm_machine_common.json b/resources/profiles/Qidi/machine/fdm_machine_common.json index 71198a0e97..520c252859 100644 --- a/resources/profiles/Qidi/machine/fdm_machine_common.json +++ b/resources/profiles/Qidi/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Qidi/machine/fdm_qidi_common.json b/resources/profiles/Qidi/machine/fdm_qidi_common.json index fc9e9e05d9..506afe3b99 100644 --- a/resources/profiles/Qidi/machine/fdm_qidi_common.json +++ b/resources/profiles/Qidi/machine/fdm_qidi_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "47", + "extruder_clearance_max_radius": "47", + "extruder_clearance_dist_to_rod": "24", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "34", "printer_settings_id": "", diff --git a/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json b/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json index 2d795c42cd..5f4d9711df 100644 --- a/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json +++ b/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json @@ -26,9 +26,10 @@ "retract_lift_below": [ "239" ], - "extruder_clearance_radius": "56", + "extruder_clearance_max_radius": "56", + "extruder_clearance_dist_to_rod": "28", "extruder_clearance_height_to_rod": "33", - "extruder_clearance_height_to_lid": "110", + "extruder_clearance_height_to_lid": "110", "support_air_filtration": "1", "machine_start_gcode": "PRINT_START\nG28\nM141 S0\nG0 Z50 F600\nM190 S[hot_plate_temp_initial_layer]\nG28 Z\nG29; mesh bed leveling ,comment this code to close it\nG0 X0 Y0 Z50 F6000\nM191 S{overall_chamber_temperature}\nM109 S[nozzle_temperature_initial_layer]\nM106 P3 S255\nM83\nG4 P3000\nG0 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0)} Z5 F6000\nG0 Z[initial_layer_print_height] F600\nG1 E3 F1800\nG1 X{(min(print_bed_max[0], first_layer_print_min[0] + 80))} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0)} E{85 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 85} E{83 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 2} E{2 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 Y{max((min(print_bed_max[1], first_layer_print_min[1] + 80) - 85),0) + 3} E{82 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 X{max((min(print_bed_max[0], first_layer_print_min[0] + 80) - 85),0) + 12} E{-10 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\nG1 E{10 * 0.5 * initial_layer_print_height * nozzle_diameter[0]} F3000\n", "machine_end_gcode": "M141 S0\nM104 S0\nM140 S0\nG1 E-3 F1800\nG0 Z{min(max_print_height, max_layer_z + 3)} F600\nG0 X0 Y0 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}", diff --git a/resources/profiles/Tronxy/machine/fdm_machine_common.json b/resources/profiles/Tronxy/machine/fdm_machine_common.json index 5eaa07e526..5bb1bf4b56 100644 --- a/resources/profiles/Tronxy/machine/fdm_machine_common.json +++ b/resources/profiles/Tronxy/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "400", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Vivedino/machine/fdm_klipper_common.json b/resources/profiles/Vivedino/machine/fdm_klipper_common.json index d7a84deba5..0a83eeac9c 100644 --- a/resources/profiles/Vivedino/machine/fdm_klipper_common.json +++ b/resources/profiles/Vivedino/machine/fdm_klipper_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "printer_settings_id": "", diff --git a/resources/profiles/Vivedino/machine/fdm_machine_common.json b/resources/profiles/Vivedino/machine/fdm_machine_common.json index 28ee8f30b5..9ef80a36d7 100644 --- a/resources/profiles/Vivedino/machine/fdm_machine_common.json +++ b/resources/profiles/Vivedino/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Vivedino/machine/fdm_rrf_common.json b/resources/profiles/Vivedino/machine/fdm_rrf_common.json index 740146688c..505b1c08bb 100644 --- a/resources/profiles/Vivedino/machine/fdm_rrf_common.json +++ b/resources/profiles/Vivedino/machine/fdm_rrf_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "330", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "printer_settings_id": "", diff --git a/resources/profiles/Voron/machine/fdm_klipper_common.json b/resources/profiles/Voron/machine/fdm_klipper_common.json index 6a3b00a6b8..8c47efd9ab 100644 --- a/resources/profiles/Voron/machine/fdm_klipper_common.json +++ b/resources/profiles/Voron/machine/fdm_klipper_common.json @@ -80,7 +80,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "printer_settings_id": "", diff --git a/resources/profiles/Voron/machine/fdm_machine_common.json b/resources/profiles/Voron/machine/fdm_machine_common.json index a981292057..77d5f96530 100644 --- a/resources/profiles/Voron/machine/fdm_machine_common.json +++ b/resources/profiles/Voron/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/profiles/Voxelab/machine/fdm_machine_common.json b/resources/profiles/Voxelab/machine/fdm_machine_common.json index 31fc61df86..9ab81f0b52 100644 --- a/resources/profiles/Voxelab/machine/fdm_machine_common.json +++ b/resources/profiles/Voxelab/machine/fdm_machine_common.json @@ -70,7 +70,8 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "extruder_clearance_height_to_rod": "36", "extruder_clearance_height_to_lid": "140", "nozzle_diameter": [ diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 73fc72e911..4822d901c9 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -107,7 +107,15 @@ var LangText={ "t113": "You may change your choice in preference anytime.", "t114": "Home", "t115": "Batch", - "t116": "Retry" + "t116": "Retry", + "t117": "Print History", + "t118": "Printing", + "t119": "Success", + "t120": "Canceled", + "t121": "Search", + "t122": "Search online models", + "t123": "Plate", + "t124": "" }, "zh_CN": { "t1": "欢迎使用Bambu Studio", @@ -218,6 +226,14 @@ var LangText={ "t114": "首页", "t115": "批量处理", "t116": "重试", + "t117": "打印历史", + "t118": "正在打印", + "t119": "成功", + "t120": "已取消", + "t121": "搜索", + "t122": "搜索在线模型", + "t123": "第", + "t124": " 盘", "wk1": "快速入门指南", "wk2": "本文介绍了Bambu Studio的最基本用法。它指导用户配置软件,创建项目,并逐步完成第一个打印任务。", "wk3": "基于项目的工作流", @@ -343,7 +359,15 @@ var LangText={ "t113": "好みはいつでも変更できます.", "t114": "トップページ", "t115": "バッチ", - "t116": "[再試行]" + "t116": "[再試行]", + "t117": "印刷履歴", + "t118": "印刷中", + "t119": "成功", + "t120": "キャンセルされた", + "t121": "検索", + "t122": "オンラインモデルを検索する", + "t123": "シート材", + "t124": "" }, "it_IT": { "t1": "Benvenuti allo Studio Bambu", @@ -453,7 +477,15 @@ var LangText={ "t113": "Puoi cambiare la tua scelta in qualsiasi momento.", "t114": "Home", "t115": "Lotto", - "t116": "Riprova" + "t116": "Riprova", + "t117": "Storico di stampa", + "t118": "Stampa in corso", + "t119": "Successo", + "t120": "annullato", + "t121": "Ricerca", + "t122": "Cerca modelli online", + "t123": "piatto", + "t124": "" }, "fr_FR": { "t1": "Bienvenue chez Bambu Studio", @@ -563,7 +595,15 @@ var LangText={ "t113": "Vous pouvez modifier vos préférences à tout moment.", "t114": "Accueil", "t115": "Un lot de", - "t116": "Retenter" + "t116": "Retenter", + "t117": "Historique d'impression", + "t118": "Impression en cours", + "t119": "Succès", + "t120": "annulé", + "t121": "Recherche", + "t122": "Rechercher des modèles en ligne", + "t123": "assiette", + "t124": "" }, "de_DE": { "t1": "Willkommen im Bambu Studio", @@ -673,7 +713,15 @@ var LangText={ "t113": "Sie können Ihre Wahl jederzeit ändern.", "t114": "Startseite", "t115": "Charge", - "t116": "Erneut versuchen" + "t116": "Erneut versuchen", + "t117": "Druckverlauf", + "t118": "Wird gedruckt", + "t119": "Erfolg", + "t120": "storniert", + "t121": "Suche", + "t122": "Suche Online-Modelle", + "t123": "Teller", + "t124": "" }, "hu_HU": { "t1": "Üdvözöljük a Bambu Stúdióban", @@ -783,7 +831,15 @@ var LangText={ "t113": "Bármikor megváltoztathatja a preferenciáját.", "t114": "honlap", "t115": "Tétel", - "t116": "Újrapróbálkozás" + "t116": "Újrapróbálkozás", + "t117": "Nyomtatási előzmények", + "t118": "Nyomtatás folyamatban", + "t119": "Siker", + "t120": "törölt", + "t121": "Keresés", + "t122": "Online modellek keresése", + "t123": "tányér", + "t124": "" }, "es_ES": { "t1": "Bienvenido a Bambu Studio", @@ -893,7 +949,15 @@ var LangText={ "t113": "Puede cambiar sus preferencias en cualquier momento.", "t114": "Página de inicio", "t115": "Un lote", - "t116": "Reintentar" + "t116": "Reintentar", + "t117": "Historial de impresión", + "t118": "Imprimiendo", + "t119": "Éxito", + "t120": "cancelado", + "t121": "Búsqueda", + "t122": "Buscar modelos en línea", + "t123": "plato", + "t124": "" }, "sv_SE": { "t1": "Välkommen till Bambu Studio", @@ -1003,7 +1067,15 @@ var LangText={ "t113": "Du kan ändra ditt val när som helst.", "t114": "startsida", "t115": "Batch", - "t116": "Försök igen" + "t116": "Försök igen", + "t117": "Utskriftshistorik", + "t118": "Skrivs ut", + "t119": "Lyckad", + "t120": "avbruten", + "t121": "Sök", + "t122": "Sök online-modeller", + "t123": "fat", + "t124": "" }, "cs_CZ": { "t1": "Vítejte v Bambu Studio", @@ -1113,7 +1185,15 @@ var LangText={ "t113": "Své preference můžete kdykoliv změnit.", "t114": "domovská stránka", "t115": "Šarže", - "t116": "Zkuste to znovu" + "t116": "Zkuste to znovu", + "t117": "Historie tisku", + "t118": "Tisk probíhá", + "t119": "Úspěch", + "t120": "zrušený", + "t121": "Hledat", + "t122": "Hledat online modely", + "t123": "talíř", + "t124": "" }, "nl_NL": { "t1": "Welkom bij Bambu Studio", @@ -1223,7 +1303,15 @@ var LangText={ "t113": "U kunt uw keuze op elk gewenst moment wijzigen.", "t114": "startpagina", "t115": "Batch", - "t116": "Probeer het opnieuw" + "t116": "Probeer het opnieuw", + "t117": "Afdrukhistoriek", + "t118": "Aan het printen", + "t119": "Succes", + "t120": "geannuleerd", + "t121": "Zoeken", + "t122": "Zoek online modellen", + "t123": "bord", + "t124": "" }, "uk_UA": { "t1": "Вітаємо в Bambu Studio!", @@ -1333,7 +1421,15 @@ var LangText={ "t113": "Ви можете змінити свої переваги в будь-який час.", "t114": "Головна сторінка", "t115": "Одна партія", - "t116": "Спробувати знову" + "t116": "Спробувати знову", + "t117": "Історія друку", + "t118": "Друкується", + "t119": "Успіх", + "t120": "скасований", + "t121": "Пошук", + "t122": "Пошук онлайн-моделей", + "t123": "тарілка", + "t124": "" }, "ru_RU": { "t1": "Приветствуем в Bambu Studio!", @@ -1443,7 +1539,15 @@ var LangText={ "t113": "Вы можете изменить свои предпочтения в любое время.", "t114": "Главная страница", "t115": "Одна партия", - "t116": "Повторить попытку" + "t116": "Повторить попытку", + "t117": "История печати", + "t118": "Печатается", + "t119": "Успех", + "t120": "отмененный", + "t121": "Поиск", + "t122": "Поиск онлайн-моделей", + "t123": "тарелка", + "t124": "" }, "tr_TR": { "t1": "Bambu Stüdyo'ya Hoş Geldiniz", @@ -1553,7 +1657,15 @@ var LangText={ "t113": "ercihlerinizde istediğiniz zaman seçiminizi değiştirebilirsiniz.", "t114": "Ana Sayfa", "t115": "Toplu", - "t116": "Yeniden Dene" + "t116": "Yeniden Dene", + "t117": "Yazdırma geçmişi", + "t118": "Yazdırılıyor", + "t119": "Başarılı", + "t120": "iptal edildi", + "t121": "Arama", + "t122": "Çevrimiçi modelleri arayın", + "t123": "tabak", + "t124": "" }, "pt_BR": { "t1": "Bem-vindo ao Bambu Studio", @@ -1663,7 +1775,15 @@ var LangText={ "t113": "Você pode alterar sua escolha nas Preferências a qualquer momento", "t114": "Inicio", "t115": "Lote", - "t116": "Retentar" + "t116": "Retentar", + "t117": "Histórico de impressão", + "t118": "Imprimindo", + "t119": "Sucesso", + "t120": "cancelado", + "t121": "Pesquisa", + "t122": "Procurar modelos online", + "t123": "prato", + "t124": "" }, "ko_KR": { "t1": "Bambu Studio에 오신 것을 환영합니다", @@ -1773,7 +1893,15 @@ var LangText={ "t113": "언제든지 환경 설정에서 선택을 변경할 수 있습니다.", "t114": "홈", "t115": "일괄 처리", - "t116": "재시도" + "t116": "재시도", + "t117": "인쇄 기록", + "t118": "인쇄 중", + "t119": "성공", + "t120": "취소된", + "t121": "검색", + "t122": "온라인 모델을 검색하다", + "t123": "접시", + "t124": "" }, "pl_PL": { "t1": "Witamy w Bambu Studio", @@ -1883,7 +2011,15 @@ var LangText={ "t113": "Opcja można zmienić w preferencjach w dowolnym momencie.", "t114": "Strona główna", "t115": "Wartość zbiorcza", - "t116": "Ponów" + "t116": "Ponów", + "t117": "Historia druku", + "t118": "Drukuje się", + "t119": "Sukces", + "t120": "anulowany", + "t121": "Wyszukiwanie", + "t122": "Wyszukaj modele online", + "t123": "talerz", + "t124": "" } }; @@ -1926,3 +2062,35 @@ function TranslatePage() } } } + +function GetCurrentTextByKey( key ) +{ + 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 strText=''; + if( LangText[strLang].hasOwnProperty(key) ) + { + strText=LangText[strLang][key]; + } + else if(strLang!='en' && LangText['en'].hasOwnProperty(key) ) + { + strText=LangText['en'][key]; + } + + return strText; +} diff --git a/resources/web/homepage3/css/common.css b/resources/web/homepage3/css/common.css index e43ae4347d..c7fbf45058 100644 --- a/resources/web/homepage3/css/common.css +++ b/resources/web/homepage3/css/common.css @@ -15,6 +15,7 @@ html, body { padding:0px; border: 0px; margin: 0px; + background-color: #FFF; } /*---字体----*/ @@ -91,8 +92,14 @@ html, body { #MenuArea { display:flex; - justify-content: flex-end; margin-bottom: 24px; + flex-direction:row-reverse; +} + +#MenuBtnBlock +{ + display:flex; + margin-left: 60px; } .Menu_Btn @@ -109,6 +116,13 @@ html, body { width: 18px; } +.Menu_Btn span +{ + display: inline-block; + width: 100%; + white-space: nowrap; +} + /*---弹性内容块---*/ .GuideBlock { @@ -121,7 +135,7 @@ html, body { { width: calc(50% - 20px); } - .SingleGuideBar :nth-child(n+3) + .SingleGuideBar > :nth-child(n+3) { display: none; } @@ -133,7 +147,7 @@ html, body { { width: calc(33% - 20px); } - .SingleGuideBar :nth-child(n+4) + .SingleGuideBar > :nth-child(n+4) { display: none; } @@ -144,7 +158,7 @@ html, body { { width: calc(25% - 20px); } - .SingleGuideBar :nth-child(n+5) + .SingleGuideBar > :nth-child(n+5) { display: none; } @@ -155,7 +169,7 @@ html, body { { width: calc(20% - 20px); } - .SingleGuideBar :nth-child(n+6) + .SingleGuideBar > :nth-child(n+6) { display: none; } diff --git a/resources/web/homepage3/css/dark.css b/resources/web/homepage3/css/dark.css index a5ef25d4f7..d6c331efca 100644 --- a/resources/web/homepage3/css/dark.css +++ b/resources/web/homepage3/css/dark.css @@ -92,6 +92,12 @@ html,body color:#818183; } +/*----Recent Opened----*/ +.FileImg +{ + background-color:#575757; +} + /*---Staff PIck----*/ .HotModelPiece { @@ -107,3 +113,44 @@ html,body { filter: invert(1); } + +#HotModel_Search_Bar +{ + border: 1px solid #323A3D; + background-color: #36363A; +} + +#HotModel_Search_InputArea +{ + background-color: #36363A; +} + +#HotModel_Search_Input +{ + background-color: #36363A; + caret-color: white; + color: #FFFFFF; +} + +#HotModel_Search_Btn img +{ + filter: invert(100%) brightness(100); +} + +/*----Makerlab-----*/ +.MakerlabItem +{ + border: none; +} + +/*---Print History----*/ +.PrintHistoryImg +{ + border: 1px solid #474747; + background-color: #575757; +} + +#PrintHistory_Refresh_Btn +{ + filter: invert(80%) brightness(20); +} diff --git a/resources/web/homepage3/css/home.css b/resources/web/homepage3/css/home.css index 0c1dc25983..f76d4dfb51 100644 --- a/resources/web/homepage3/css/home.css +++ b/resources/web/homepage3/css/home.css @@ -32,14 +32,14 @@ body word-break: break-all; position: relative; cursor: pointer; - border-radius: 8px; + border-radius: 8px; + border: 1px solid #EEEEEE; } .MakerlabImg img { width: 100%; aspect-radio: 16/9; - border-radius: 8px 8px 0px 0px; } .MakerlabTextBlock @@ -71,4 +71,173 @@ body { font-size: 10px; color: #ACACAC; -} \ No newline at end of file +} + + +/*------Print History------*/ +#PrintHistoryArea +{ + display: none; + min-height: 100px; +} + +#PrintHistory_Refresh_Btn +{ + margin-left: 30px; + cursor: pointer; + filter: brightness(3); + width: 24px; +} + +#PrintHistory_Refresh_Btn:hover +{ + width: 27px; +} + +#PrintHistoryList +{ + display: flex; +} + +.PrintHistoryItem +{ + position: relative; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + word-break: break-all; + position: relative; + cursor: pointer; + border-radius: 12px; + overflow: hidden; +} + +.PrintHistoryImg +{ + border-radius: 12px; + border: 1px solid #EEEEEE; + background-color: #E4E4E4; +} + +.PrintHistoryImg img +{ + width: calc(100% - 2px); + aspect-ratio: 4/3; + object-fit:contain; +} + +.PrintHistoryTextBlock +{ + display: flex; + flex-direction: column; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + margin-top: 2px; +} + +.PrintHistoryName +{ + font-size: 14px; + font-weight: 700; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.PrintHistory_Line2 +{ + display: flex; + flex-direction: row; + align-items: center; + font-size: 12px; +} + +.PrintHistory_Line2 img +{ + width: 14px; + height: 14px; + margin-right: 4px; +} + +.PH_PrintTime +{ + width: 50px; + margin-right: 4px; +} + +.PH_DeviceName +{ + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.PrintHistoryInfo +{ + display: flex; + justify-content: space-between; +} + +.PrintHistoryPlate +{ + display: flex; + font-size: 12px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.PH_PlateName +{ + flex-grow: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.PH_PrintDate +{ + margin-left: 4px; +} + + +.PrintHistoryStatus +{ + margin-left: 6px; + font-size: 12px; + font-weight: 700; +} + +.PH_Status_Printing +{ + color: #FF6F00; +} + +.PH_Status_Fail +{ + color: #D01B1B; +} + +.PH_Status_Success +{ + color: #00AE42; +} + +.PH_Gcode_Icon +{ + background-color: #8F8F8F; + display: inline-block; + padding: 6px 12px; + width: Hug (61px)px; + height: Hug (28px)px; + gap: 10px; + border-radius: 0px 0px 4px 0px; + opacity: 0px; + color: #FFFFFF; + position: absolute; + top: 1px; + left: 1px; + font-weight: 700; +} + diff --git a/resources/web/homepage3/css/left.css b/resources/web/homepage3/css/left.css index b65ec35732..29542e9c70 100644 --- a/resources/web/homepage3/css/left.css +++ b/resources/web/homepage3/css/left.css @@ -215,6 +215,12 @@ body display: none; } +.BtnItem[menu="printhistory"] +{ + display: none; +} + + .JumpIcon { display: none; diff --git a/resources/web/homepage3/css/online.css b/resources/web/homepage3/css/online.css index cfed7f41ce..5488f56ab7 100644 --- a/resources/web/homepage3/css/online.css +++ b/resources/web/homepage3/css/online.css @@ -60,7 +60,8 @@ display:flex; flex-direction: column; cursor: pointer; - border-radius: 8px; + border-radius: 10px; + overflow: hidden; } .HotModel_PrevBlock @@ -160,3 +161,42 @@ align-items: center; } +/*-----Search Bar------*/ +#HotModel_Search_Bar +{ + display: none; + align-items: center; + border-radius: 22px; + border: 1px solid #EEEEEE; + flex-grow: 1; + background-color: #FFFFFF; +} + +#HotModel_Search_InputArea +{ + background-color: #FFF; + display: flex; + align-items: center; + flex-grow: 1; + padding: 0px 22px 0px 0px; + border-radius: 22px 0px 0px 22px; +} + +#HotModel_Search_Input +{ + height: 30px; + flex-grow: 1; + outline: none; + font-size: 16px; +} + + +#HotModel_Search_Btn +{ + width: 60px; + height: 100%; + border-radius: 0px 22px 22px 0px; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/resources/web/homepage3/css/recent.css b/resources/web/homepage3/css/recent.css index f32deabc73..8f33aa33fb 100644 --- a/resources/web/homepage3/css/recent.css +++ b/resources/web/homepage3/css/recent.css @@ -102,7 +102,6 @@ word-break: break-all; position: relative; cursor: pointer; - border-radius: 8px; } .FileMask diff --git a/resources/web/homepage3/css/rightcommon.css b/resources/web/homepage3/css/rightcommon.css index df1de8a22b..1a9262a63a 100644 --- a/resources/web/homepage3/css/rightcommon.css +++ b/resources/web/homepage3/css/rightcommon.css @@ -1,7 +1,7 @@ html { - background-color: #F8F8F8; + background-color: #FFF; padding: 28px 36px; display: flex; justify-content: center; diff --git a/resources/web/homepage3/disconnect.html b/resources/web/homepage3/disconnect.html index 48c3c75d09..9f4e6d7e03 100644 --- a/resources/web/homepage3/disconnect.html +++ b/resources/web/homepage3/disconnect.html @@ -22,7 +22,7 @@
Network disconnect, please check and try again later.
-
Retry
+
Retry
diff --git a/resources/web/homepage3/home.html b/resources/web/homepage3/home.html index 6c1d117921..008bb964b0 100644 --- a/resources/web/homepage3/home.html +++ b/resources/web/homepage3/home.html @@ -18,20 +18,30 @@ - - + + @@ -101,7 +111,7 @@
Online Models
MORE >
- +
+
+--> + +
+
+
+ +
Print History
+ +
+
MORE >
+
+ +
+ + + +
+
+ diff --git a/resources/web/homepage3/img/device.svg b/resources/web/homepage3/img/device.svg new file mode 100644 index 0000000000..fcfc37fa83 --- /dev/null +++ b/resources/web/homepage3/img/device.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/resources/web/homepage3/img/left_ph.svg b/resources/web/homepage3/img/left_ph.svg new file mode 100644 index 0000000000..a7dc8c6a92 --- /dev/null +++ b/resources/web/homepage3/img/left_ph.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/resources/web/homepage3/img/ph.svg b/resources/web/homepage3/img/ph.svg new file mode 100644 index 0000000000..896c3ed1b8 --- /dev/null +++ b/resources/web/homepage3/img/ph.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/web/homepage3/img/refresh.svg b/resources/web/homepage3/img/refresh.svg new file mode 100644 index 0000000000..934161bf89 --- /dev/null +++ b/resources/web/homepage3/img/refresh.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/web/homepage3/img/search.svg b/resources/web/homepage3/img/search.svg new file mode 100644 index 0000000000..be31c055de --- /dev/null +++ b/resources/web/homepage3/img/search.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/web/homepage3/img/search_dark.svg b/resources/web/homepage3/img/search_dark.svg new file mode 100644 index 0000000000..ed41ba2ef1 --- /dev/null +++ b/resources/web/homepage3/img/search_dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/web/homepage3/img/time.svg b/resources/web/homepage3/img/time.svg new file mode 100644 index 0000000000..ee5ad72f22 --- /dev/null +++ b/resources/web/homepage3/img/time.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/resources/web/homepage3/js/home.js b/resources/web/homepage3/js/home.js index 084d256678..bd2a6648de 100644 --- a/resources/web/homepage3/js/home.js +++ b/resources/web/homepage3/js/home.js @@ -4,6 +4,7 @@ var m_HotModelList=null; var m_ForUModelList=null; var m_MakerlabList=null; +var m_PrintHistoryList=null; function OnHomeInit() { @@ -13,8 +14,26 @@ function OnHomeInit() SendMsg_GetRecentFile(); SendMsg_GetStaffPick(); SendMsg_GetMakerlabList(); + SendMsg_GetPrintHistory(); + document.getElementById('HotModel_Search_Input').onkeydown = function (event) { + if (event.key === 'Enter') { + OnSearchOnline(); + } + + event.defaultPrevented(); + }; + + let ModelSearchTip=GetCurrentTextByKey('t122'); + $('#HotModel_Search_Input').prop('placeholder', ModelSearchTip); + + //Test //ShowMakerlabList(Test_MakerlabList['list']); + + //$('#PrintHistoryArea').show(); + //ShowPrintHistory(Test_PrintTaskList['hits']); + + //Show4UPick(Test_4UModelList['hits']); } //Recent详情页面的状态 @@ -31,9 +50,25 @@ function OnRecentInit() Set_RecentFile_Delete_Checkbox_Event(); } +var m_LineMenuName=''; function OnLineInit() { TranslatePage(); + m_LineMenuName=GetQueryString("menu"); +} + +function OnLineRetry() +{ + if(m_LineMenuName!="" && m_LineMenuName!=null) + SwitchContent(m_LineMenuName); +} + +function ShowLineWarn( bShow ) +{ + if(bShow) + $('#WarnMainArea').show(); + else + $('#WarnMainArea').hide(); } //------最佳打开文件的右键菜单功能---------- @@ -103,6 +138,7 @@ function Set_RecentFile_MouseRightBtn_Event() function HandleStudio( pVal ) { let strCmd = pVal['command']; + //alert(strCmd); if(strCmd=='get_recent_projects') { @@ -195,6 +231,43 @@ function HandleStudio( pVal ) OnHomeInit(); } + else if(strCmd=='printhistory_task_show') + { + if( m_PrintHistoryList!=null && pVal['hits'].length>0 ) + { + let SS1=JSON.stringify(pVal['list']); + let SS2=JSON.stringify(m_PrintHistoryList); + + if( SS1==SS2 ) + { + alert("PrintHistory is Same. Ignore"); + return; + } + } + + m_PrintHistoryList=pVal['hits']; + + ShowPrintHistory(m_PrintHistoryList); + } + else if(strCmd=='homepage_leftmenu_show') + { + let MenuName=pVal['menu']; + let nShow=pVal['show']*1; + + if(MenuName=='printhistory') + { + if(nShow==1) + { + $('#PrintHistoryArea').show(); + } + else + { + $('#PrintHistoryArea').hide(); + m_PrintHistoryList=null; + $('#PrintHistoryList').html(''); + } + } + } } function OnBoardChange( strMenu ) @@ -210,7 +283,10 @@ function OnBoardChange( strMenu ) SendMsg_GetStaffPick(); if( m_MakerlabList==null || m_MakerlabList.length==0 ) - SendMsg_GetMakerlabList(); + SendMsg_GetMakerlabList(); + + if( m_PrintHistoryList==null ) + SendMsg_GetPrintHistory(); } else if(strMenu=='recent') { @@ -663,6 +739,7 @@ function ShowStaffPick( ModelList ) $('#HotModelList').html(strPickHtml); InitStaffPick(); $('#HotModelArea').show(); + $('#HotModel_Search_Bar').css('display','flex'); } function Show4UPick( ModelList ) @@ -721,6 +798,7 @@ function Show4UPick( ModelList ) $('#HotModelList').html(strPickHtml); InitStaffPick(); $('#HotModelArea').show(); + $('#HotModel_Search_Bar').css('display','flex'); } function OpenOneStaffPickModel( ModelID ) @@ -736,6 +814,20 @@ function OpenOneStaffPickModel( ModelID ) } +function OnSearchOnline(event) +{ + let strKW=$('#HotModel_Search_Input').val().trim(); + if(strKW=='' ) + return; + + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="homepage_online_search"; + tSend['keyword']=strKW; + + SendWXMessage( JSON.stringify(tSend) ); +} + //----------MakerLab------------ function IsChinese() { @@ -818,6 +910,122 @@ function OnOpenOneMakerlab( ChildUrl ) SendWXMessage( JSON.stringify(tSend) ); } +//-----------Print History------------ +function SendMsg_GetPrintHistory() +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="homepage_printhistory_get"; + + SendWXMessage( JSON.stringify(tSend) ); +} + +function convertTimeFormat(timeStr) +{ + const date = new Date(timeStr); + const year = date.getFullYear(); // 取后两位年份 + const day = date.getDate(); + const month = date.getMonth() + 1; + const hours = date.getHours(); + const minutes = date.getMinutes(); + return `${year}/${month.toString().padStart(2, '0')}/${day.toString().padStart(2, '0')} ${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`; +} + + +//只更新HTML内容,不控制显示/隐藏 +function ShowPrintHistory( TaskList ) +{ + let TaskTotal=TaskList.length; + + let strTaskHtml=''; + for(let a=0;a=3600) + { + strCostTime=Math.round( (CostTime/3600)*10 )/10+'h'; + } + else if(CostTime>=60) + { + strCostTime=Math.floor( CostTime/60 )+'min'; + } + else + strCostTime=CostTime+'s'; + + let PlateName=' '+OneTask['plateIndex']+''; + if( OneTask['plateName'].trim()!='' ) + PlateName+=' - '+OneTask['plateName'].trim(); + + let StartTime=convertTimeFormat( OneTask['startTime'] ); + + let isPublicProfile =OneTask['isPublicProfile']; + let sMode=OneTask['mode']; + + strTaskHtml+= + '
'+ + '
'+ + '
'+ + '
'+TaskName+'
'+ + '
'+ + ' '+strCostTime+''+ + ' '+DeviceName+''+ + '
'+ + '
'+ + '
'+ + '
'+PlateName+'
'+ + '
('+StartTime+')
'+ + '
'; + switch(Status) + { + case 2: + strTaskHtml+='
Success
'; + break; + case 3: + strTaskHtml+='
Canceled
'; + break; + default: + strTaskHtml+='
Printing
'; + break; + } + strTaskHtml+= + '
'+ + '
'; + if( isPublicProfile==false && sMode!='cloud_slice' ) + strTaskHtml+='
Gcode
'; + + strTaskHtml+='
'; + } + + $('#PrintHistoryList').html(strTaskHtml); + TranslatePage(); +} + +function OnOpenPrintHistory( TaskID ) +{ + var tSend={}; + tSend['sequence_id']=Math.round(new Date() / 1000); + tSend['command']="homepage_printhistory_click"; + tSend['taskid']=TaskID*1; + + SendWXMessage( JSON.stringify(tSend) ); +} //---------------Global----------------- window.postMessage = HandleStudio; diff --git a/resources/web/homepage3/js/test.js b/resources/web/homepage3/js/test.js index d5506b9f3a..e29e92c98b 100644 --- a/resources/web/homepage3/js/test.js +++ b/resources/web/homepage3/js/test.js @@ -54,4 +54,933 @@ var Test_MakerlabList={ } } ] +}; + +var Test_PrintTaskList={ + "command": "printhistory_task_show", + "total": 15, + "hits": [ + { + "id": 3622536, + "designId": 374186, + "designTitle": "首发模型0914 1409 --0918 12:00改为独家", + "designTitleTranslated": "Exclusive model debut 0914 1409 --0918 12:00", + "instanceId": 32755, + "modelId": "CNQ72af310210f64b", + "title": "首发变独家", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQ72af310210f64b/4007130/instance/plate_1.png", + "status": 3, + "feedbackStatus": 1, + "startTime": "2024-09-20T09:56:22Z", + "endTime": "2024-09-20T09:56:32Z", + "weight": 0, + "length": 0, + "costTime": 0, + "profileId": 4007130, + "plateIndex": 1, + "plateName": "", + "deviceId": "03W09A380900239", + "amsDetailMapping": [ + { + "ams": 0, + "sourceColor": "FFFFFFFF", + "targetColor": "", + "filamentId": "", + "filamentType": "PLA", + "targetFilamentType": "PLA", + "weight": 0 + } + ], + "mode": "cloud_slice", + "isPublicProfile": true, + "isPrintable": true, + "isDelete": false, + "deviceModel": "X1E", + "deviceName": "3DP-03W-239", + "bedType": "Cool Plate" + }, + { + "id": 3622535, + "designId": 374186, + "designTitle": "首发模型0914 1409 --0918 12:00改为独家", + "designTitleTranslated": "Exclusive model debut 0914 1409 --0918 12:00", + "instanceId": 32755, + "modelId": "CNQ72af310210f64b", + "title": "首发变独家", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQ72af310210f64b/4007130/instance/plate_1.png", + "status": 3, + "feedbackStatus": 1, + "startTime": "2024-09-20T09:55:42Z", + "endTime": "2024-09-20T09:56:00Z", + "weight": 0, + "length": 0, + "costTime": 0, + "profileId": 4007130, + "plateIndex": 1, + "plateName": "", + "deviceId": "03W09A380900239", + "amsDetailMapping": [ + { + "ams": 0, + "sourceColor": "FFFFFFFF", + "targetColor": "", + "filamentId": "", + "filamentType": "PLA", + "targetFilamentType": "PLA", + "weight": 0 + } + ], + "mode": "cloud_slice", + "isPublicProfile": true, + "isPrintable": true, + "isDelete": false, + "deviceModel": "X1E", + "deviceName": "3DP-03W-239", + "bedType": "Cool Plate" + }, + { + "id": 3622505, + "designId": 374186, + "designTitle": "首发模型0914 1409 --0918 12:00改为独家", + "designTitleTranslated": "Exclusive model debut 0914 1409 --0918 12:00", + "instanceId": 32755, + "modelId": "CNQ72af310210f64b", + "title": "首发变独家", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/cache/1/CNQ72af310210f64b/4007130/3mf/3/REP1/Metadata/plate_3.png", + "status": 2, + "feedbackStatus": 1, + "startTime": "2024-09-20T06:38:33Z", + "endTime": "2024-09-20T08:27:56Z", + "weight": 53.54, + "length": 1766, + "costTime": 6376, + "profileId": 4007130, + "plateIndex": 3, + "plateName": "", + "deviceId": "03W09A380900239", + "amsDetailMapping": [ + { + "ams": 0, + "sourceColor": "FFFFFFFF", + "targetColor": "FFFFFFFF", + "filamentId": "", + "filamentType": "PLA", + "targetFilamentType": "PLA", + "weight": 53.54 + } + ], + "mode": "cloud_slice", + "isPublicProfile": true, + "isPrintable": true, + "isDelete": false, + "deviceModel": "X1E", + "deviceName": "3DP-03W-239", + "bedType": "Cool Plate" + }, + { + "id": 3622504, + "designId": 374186, + "designTitle": "首发模型0914 1409 --0918 12:00改为独家", + "designTitleTranslated": "Exclusive model debut 0914 1409 --0918 12:00", + "instanceId": 32755, + "modelId": "CNQ72af310210f64b", + "title": "首发变独家", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/cache/1/CNQ72af310210f64b/4007130/3mf/3/%23A0E20EFF/REP1/Metadata/plate_3.png", + "status": 2, + "feedbackStatus": 1, + "startTime": "2024-09-20T06:38:18Z", + "endTime": "2024-09-20T08:38:35Z", + "weight": 56.09, + "length": 1766, + "costTime": 7131, + "profileId": 4007130, + "plateIndex": 3, + "plateName": "", + "deviceId": "00W00A242600023", + "amsDetailMapping": [ + { + "ams": 1, + "sourceColor": "FFFFFFFF", + "targetColor": "A0E20EFF", + "filamentId": "", + "filamentType": "PLA", + "targetFilamentType": "PLA", + "weight": 56.09 + } + ], + "mode": "cloud_slice", + "isPublicProfile": true, + "isPrintable": true, + "isDelete": false, + "deviceModel": "X1", + "deviceName": "025", + "bedType": "Cool Plate" + }, + { + "id": 3622499, + "designId": 374186, + "designTitle": "首发模型0914 1409 --0918 12:00改为独家", + "designTitleTranslated": "Exclusive model debut 0914 1409 --0918 12:00", + "instanceId": 32755, + "modelId": "CNQ72af310210f64b", + "title": "首发变独家", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/cache/1/CNQ72af310210f64b/4007130/3mf/3/REP1/Metadata/plate_3.png", + "status": 2, + "feedbackStatus": 1, + "startTime": "2024-09-20T04:12:14Z", + "endTime": "2024-09-20T06:02:16Z", + "weight": 53.54, + "length": 1766, + "costTime": 6376, + "profileId": 4007130, + "plateIndex": 3, + "plateName": "", + "deviceId": "03W09A380900239", + "amsDetailMapping": [ + { + "ams": 0, + "sourceColor": "FFFFFFFF", + "targetColor": "FFFFFFFF", + "filamentId": "", + "filamentType": "PLA", + "targetFilamentType": "PLA", + "weight": 53.54 + } + ], + "mode": "cloud_slice", + "isPublicProfile": true, + "isPrintable": true, + "isDelete": false, + "deviceModel": "X1E", + "deviceName": "3DP-03W-239", + "bedType": "Cool Plate" + } + ] +} + +var Test_4UModelList={ + "hits": [ + { + "id": 374202, + "title": "0920 可定制", + "titleTranslated": "0920 Customizable", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQc553e8906eaff0/design/2024-09-20_7cf6087c009.jpg", + "likeCount": 0, + "collectionCount": 1, + "shareCount": 0, + "printCount": 0, + "downloadCount": 0, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 1074649781, + "name": "xiaohuan.li888888888888888888888888888", + "avatar": "https://public-us-cdn.bambulab.net/avatar/9a12d850-539a-11ef-bcfb-2953b84d62de.jpg", + "fanCount": 6, + "followCount": 6, + "createTime": "2023-08-29T07:06:16Z", + "certificated": true, + "handle": "xiaohuan.li6667", + "level": 30, + "gradeType": 4 + }, + "createTime": "2024-09-20T03:10:43Z", + "nsfw": false, + "hotScore": 794, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": true, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": true, + "contest": { + "contestId": 124, + "rank": 0, + "status": 1, + "contestName": "0718 contest", + "contestStatus": 0, + "comment": "" + }, + "source": 4, + "customizedByMakerLab": true, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"4|0.93\"],\"rk\":\"-0.04|0\"}", + "modelId": "CNQc553e8906eaff0" + }, + { + "id": 374215, + "title": "jeep", + "titleTranslated": "", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQ5da5ab69430323/design/2024-09-20_ef0049a4b5026.jpg", + "likeCount": 0, + "collectionCount": 1, + "shareCount": 0, + "printCount": 0, + "downloadCount": 1, + "commentCount": 1, + "readCount": 0, + "designCreator": { + "uid": 415112594, + "name": "Yifan Wu", + "avatar": "https://public-dev-cdn.bambulab.net/avatar/415112594/2023-05-06_1f35259225fad.jpg", + "fanCount": 14, + "followCount": 14, + "createTime": "2022-04-07T09:52:23Z", + "certificated": false, + "handle": "wuyifan", + "level": 11, + "gradeType": 1 + }, + "createTime": "2024-09-20T12:00:13Z", + "nsfw": false, + "hotScore": 2726, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": true, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 3, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|1\"],\"rk\":\"-0.11|1\"}", + "modelId": "CNQ5da5ab69430323" + }, + { + "id": 374216, + "title": "小迷宫", + "titleTranslated": "mini maze", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/DSM00000000374216/design/2024-09-20_e31bc38f1cef9.webp", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 0, + "downloadCount": 2, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 415112594, + "name": "Yifan Wu", + "avatar": "https://public-dev-cdn.bambulab.net/avatar/415112594/2023-05-06_1f35259225fad.jpg", + "fanCount": 14, + "followCount": 14, + "createTime": "2022-04-07T09:52:23Z", + "certificated": false, + "handle": "wuyifan", + "level": 11, + "gradeType": 1 + }, + "createTime": "2024-09-20T12:44:02Z", + "nsfw": false, + "hotScore": 1891, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": true, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 1, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|0.92\"],\"rk\":\"-0.17|2\"}", + "modelId": "CNQ581249e18cec42" + }, + { + "id": 374218, + "title": "运营开启独家未达标用户", + "titleTranslated": "The following content requires translation:\nExclusive unmet user operations have been initiated.", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQf2d9054da20bfe/design/2024-09-23_d4d635adef548.jpg", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 0, + "downloadCount": 11, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 1375262870, + "name": "XNCS025", + "avatar": "https://oss-cdn.bambulab.com/default-avatar.png", + "fanCount": 1, + "followCount": 1, + "createTime": "2023-03-07T02:14:57Z", + "certificated": false, + "handle": "XNCS025", + "level": 4, + "gradeType": 0 + }, + "createTime": "2024-09-23T07:17:13Z", + "nsfw": false, + "hotScore": 2447, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": true, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|0.96\"],\"rk\":\"-0.21|3\"}", + "modelId": "CNQf2d9054da20bfe" + }, + { + "id": 374229, + "title": "测试一下定时任务", + "titleTranslated": "Test the scheduled task", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQe4b47ef2e53023/design/2024-09-23_ed5de35b423cc.webp", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 2, + "downloadCount": 2, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 1812646376, + "name": "银鱼test2", + "avatar": "https://public-cdn.bblmw.com/default/avatar.png", + "fanCount": 1, + "followCount": 1, + "createTime": "2024-09-12T07:02:50Z", + "certificated": false, + "handle": "user_1812646376", + "level": 10, + "gradeType": 1 + }, + "createTime": "2024-09-23T10:42:15Z", + "nsfw": false, + "hotScore": 1442, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|0.88\"],\"rk\":\"-0.22|4\"}", + "modelId": "CNQe4b47ef2e53023" + }, + { + "id": 371892, + "title": "测试竞赛", + "titleTranslated": "", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/DSM00000000371892/design/2024-03-28_6875c4e16c667.jpg", + "likeCount": 1, + "collectionCount": 1, + "shareCount": 0, + "printCount": 0, + "downloadCount": 1, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 3185390264, + "name": "fang.nie", + "avatar": "https://public-dev-cdn.bambulab.net/avatar/3185390264/2024-02-26_fc5558ccc29f1.jpg", + "fanCount": 6, + "followCount": 6, + "createTime": "2022-05-11T07:56:50Z", + "certificated": false, + "handle": "fang.nie", + "level": 8, + "gradeType": 1 + }, + "createTime": "2024-03-28T07:59:10Z", + "nsfw": false, + "hotScore": 0, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": true, + "pickReason": "", + "isPrintable": false, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 75, + "rank": 0, + "status": 1, + "contestName": "0306进行中的竞赛", + "contestStatus": 0, + "comment": "" + }, + "source": 4, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"4|1\"],\"rk\":\"-0.28|5\"}", + "modelId": "" + }, + { + "id": 374114, + "title": "打印时长超过20小时", + "titleTranslated": "Printing duration exceeds 20 hours", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQf47c4b034a745c/design/2024-08-30_2606102d038c5.webp", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 0, + "downloadCount": 0, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 3345032319, + "name": "Summer_lights", + "avatar": "https://public-cdn.bambulab.com/default/avatar.png", + "fanCount": 2, + "followCount": 2, + "createTime": "2023-08-04T08:43:14Z", + "certificated": true, + "handle": "Summer_lights", + "level": 7, + "gradeType": 1 + }, + "createTime": "2024-08-30T02:52:40Z", + "nsfw": false, + "hotScore": 0, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": true, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 4, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"4|0.86\"],\"rk\":\"-0.4|6\"}", + "modelId": "CNQf47c4b034a745c" + }, + { + "id": 374044, + "title": "恐龙模型", + "titleTranslated": "Dinosaur Model", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/DSM00000000374044/design/2024-08-08_0cade4e99b18c.png", + "likeCount": 2, + "collectionCount": 2, + "shareCount": 0, + "printCount": 0, + "downloadCount": 1, + "commentCount": 10, + "readCount": 0, + "designCreator": { + "uid": 3603343695, + "name": "龙井~qa", + "avatar": "https://public-dev-cdn.bambulab.net/avatar/3603343695/2023-11-01_f32d53e210073.jpg", + "fanCount": 12, + "followCount": 12, + "createTime": "2022-08-01T07:37:47Z", + "certificated": false, + "handle": "user_3603343695", + "level": 10, + "gradeType": 1 + }, + "createTime": "2024-08-08T08:09:44Z", + "nsfw": false, + "hotScore": 163, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": true, + "pickReason": "", + "isPrintable": true, + "isOfficial": true, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 4, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 4, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"4|0.79\"],\"rk\":\"-0.43|7\"}", + "modelId": "CNQ1ff72338b76e42" + }, + { + "id": 374224, + "title": "testing1", + "titleTranslated": "", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/CNQ6d8c4e451cb1cb/design/2024-09-23_523ae314284da.webp", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 0, + "downloadCount": 0, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 899054757, + "name": "user_899054757", + "avatar": "https://public-us-cdn.bambulab.net/avatar/bfe3d810-798b-11ef-bd70-27bc07e67d92.jpg", + "fanCount": 0, + "followCount": 0, + "createTime": "2024-09-20T09:19:40Z", + "certificated": false, + "handle": "user_899054757", + "level": 6, + "gradeType": 0 + }, + "createTime": "2024-09-23T09:48:17Z", + "nsfw": false, + "hotScore": 0, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": true, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|0.56\"],\"rk\":\"-0.43|8\"}", + "modelId": "CNQ6d8c4e451cb1cb" + }, + { + "id": 374227, + "title": "test2", + "titleTranslated": "", + "cover": "https://public-dev-cdn.bambulab.net/makerworld/model/DSM00000000374227/design/2024-09-23_ff06b8ab9e468.jpg", + "likeCount": 0, + "collectionCount": 0, + "shareCount": 0, + "printCount": 0, + "downloadCount": 0, + "commentCount": 0, + "readCount": 0, + "designCreator": { + "uid": 899054757, + "name": "user_899054757", + "avatar": "https://public-us-cdn.bambulab.net/avatar/bfe3d810-798b-11ef-bd70-27bc07e67d92.jpg", + "fanCount": 0, + "followCount": 0, + "createTime": "2024-09-20T09:19:40Z", + "certificated": false, + "handle": "user_899054757", + "level": 6, + "gradeType": 0 + }, + "createTime": "2024-09-23T09:51:22Z", + "nsfw": false, + "hotScore": 0, + "status": 1, + "hasCollect": false, + "hasLike": false, + "hasDislike": false, + "isStaffPicked": false, + "pickReason": "", + "isPrintable": false, + "isOfficial": false, + "isPointRedeemable": false, + "pointRedeemDetail": { + "price": 0, + "sku": "", + "status": 0 + }, + "isExclusive": false, + "contest": { + "contestId": 0, + "rank": 0, + "status": 0, + "contestName": "", + "contestStatus": 0, + "comment": "" + }, + "source": 7, + "customizedByMakerLab": false, + "preset": { + "type": "", + "filamentConfig": null, + "printerConfig": null, + "processConfig": null, + "printerSettings": null, + "file": { + "name": "", + "size": 0, + "url": "" + } + }, + "coverLandscape": "", + "coverPortrait": "", + "boostCnt": 0, + "bomsNeeded": false, + "bannerTitle": "", + "ext": "{\"rc\":[\"7|0.68\"],\"rk\":\"-0.49|9\"}", + "modelId": "" + } + ], + "seed": 1149157380, + "surplus": 32 }; \ No newline at end of file diff --git a/resources/web/homepage3/left.html b/resources/web/homepage3/left.html index b672303663..57dda28172 100644 --- a/resources/web/homepage3/left.html +++ b/resources/web/homepage3/left.html @@ -59,6 +59,10 @@
New
+
+
+
Print History
+
User Manual
diff --git a/resources/web/include/globalapi.js b/resources/web/include/globalapi.js index 58b53fa2f6..563fb1f7c7 100644 --- a/resources/web/include/globalapi.js +++ b/resources/web/include/globalapi.js @@ -62,7 +62,7 @@ function GetFullDate() return tDate; } - +//return YYYY-MM-DD function Unixtimestamp2Date( nSecond ) { var d=new Date(nSecond*1000); @@ -93,6 +93,18 @@ function Unixtimestamp2Date( nSecond ) return tDate.strdate; } +function DateToUnixstamp( strDate ) +{ + const date = new Date(strDate); + return Math.floor(date.getTime() / 1000); +} + +function DateToUnixstampMS( strDate ) +{ + const date = new Date(strDate); + return date.getTime(); +} + //------------Array Function------------- Array.prototype.in_array = function (e) { @@ -468,10 +480,16 @@ function DisableHotkey( b_CtrlP ) if (e.shiftKey && e.metaKey) OutputKey(e.keyCode, false, true, true); - if (window.event) { - try { e.keyCode = 0; } catch (e) { } - e.returnValue = false; + //F1--F12 + if ( e.keyCode>=112 && e.keyCode<=123 ) + { + e.preventDefault(); } + +// if (window.event) { +// try { e.keyCode = 0; } catch (e) { } +// e.returnValue = false; +// } }; window.addEventListener('mousewheel', function (event) { @@ -479,7 +497,24 @@ function DisableHotkey( b_CtrlP ) event.preventDefault(); } }, { passive: false }); + + DisableDropAction(); } DisableHotkey(); +/*--------Disable Drop Action---------*/ +function DisableDropAction() +{ + document.addEventListener("dragstart", (event) => { + event.preventDefault(); + }); + + document.addEventListener("dragover", (event) => { + event.preventDefault(); + }); + + document.addEventListener("drop", (event) => { + event.preventDefault(); + }); +} \ No newline at end of file diff --git a/resources/web/model/index.html b/resources/web/model/index.html index 24bf34be2e..4e55ab1f97 100644 --- a/resources/web/model/index.html +++ b/resources/web/model/index.html @@ -22,8 +22,6 @@ - -
no model information
diff --git a/resources/web/model/model.css b/resources/web/model/model.css index 7422f5e3c3..7bee7db91a 100644 --- a/resources/web/model/model.css +++ b/resources/web/model/model.css @@ -4,7 +4,6 @@ padding: 0px; border: 0px; font-family: "system-ui", "Segoe UI", Roboto, Oxygen, Ubuntu, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-sans; - user-select: none; } html diff --git a/resources/web/model/model.js b/resources/web/model/model.js index 2f74237f57..e4e0a9e3be 100644 --- a/resources/web/model/model.js +++ b/resources/web/model/model.js @@ -144,6 +144,14 @@ function Request3MFInfo() SendWXMessage( JSON.stringify(tSend) ); } +function HtmlDecodeFrom3MF(strInput) +{ + const el = document.createElement('textarea'); + el.innerHTML = strInput; + el.innerHTML = el.value; + return el.value; +} + function HandleStudio(pVal) { let strCmd=pVal['command']; @@ -213,6 +221,7 @@ function ShowModelInfo( pModel ) let UploadType=pModel.upload_type.toLowerCase(); let sLicence=pModel.license.toUpperCase(); let sModelDesc=decodeURIComponent(pModel.description); + sModelDesc=HtmlDecodeFrom3MF( sModelDesc ); if( pModel.hasOwnProperty('model_id') ) { @@ -275,8 +284,8 @@ function ShowModelInfo( pModel ) $('#ModelLicenceImg').hide(); break; } - - $('#Model_Desc').html( html_decode(sModelDesc) ); + + $('#Model_Desc').html( sModelDesc ); let ModelPreviewList=pModel.preview_img; let TotalPreview=ModelPreviewList.length; @@ -490,11 +499,12 @@ function ShowProfilelInfo( pProfile ) let sProfileName=decodeURIComponent(pProfile.name); let sProfileAuthor=decodeURIComponent(pProfile.author); let sProfileDesc=decodeURIComponent(pProfile.description); + sProfileDesc=HtmlDecodeFrom3MF(sProfileDesc); $('#ProfileName').html(sProfileName); $('#ProfileAuthor').html(sProfileAuthor); - $('#Profile_Desc').html( html_decode(sProfileDesc) ); + $('#Profile_Desc').html( sProfileDesc ); let ProfilePreviewList=pProfile.preview_img; let TotalPreview=ProfilePreviewList.length; diff --git a/src/BambuStudio.cpp b/src/BambuStudio.cpp index 5f75b7498f..918eedfe7e 100644 --- a/src/BambuStudio.cpp +++ b/src/BambuStudio.cpp @@ -145,7 +145,8 @@ std::map cli_errors = { {CLI_OBJECT_COLLISION_IN_LAYER_PRINT, "Object conflicts were detected. Please verify the slicing of all plates in Bambu Studio before uploading."}, {CLI_SPIRAL_MODE_INVALID_PARAMS, "Some slicing parameters cannot work with Spiral Vase mode. Please solve the issue in Bambu Studio before uploading."}, {CLI_SLICING_ERROR, "Failed slicing the model. Please verify the slicing of all plates on Bambu Studio before uploading."}, - {CLI_GCODE_PATH_CONFLICTS, " G-code conflicts detected after slicing. Please make sure the 3mf file can be successfully sliced in the latest Bambu Studio."} + {CLI_GCODE_PATH_CONFLICTS, " G-code conflicts detected after slicing. Please make sure the 3mf file can be successfully sliced in the latest Bambu Studio."}, + {CLI_FILAMENT_UNPRINTABLE_ON_FIRST_LAYER, "Found some filament unprintable at first layer on current Plate. Please make sure the 3mf file can be successfully sliced with the same Plate type in the latest Bambu Studio."} }; typedef struct _sliced_plate_info{ @@ -1572,7 +1573,7 @@ int CLI::run(int argc, char **argv) // BBS: adjust whebackup //LoadStrategy strategy = LoadStrategy::LoadModel | LoadStrategy::LoadConfig|LoadStrategy::AddDefaultInstances; //if (load_aux) strategy = strategy | LoadStrategy::LoadAuxiliary; - model = Model::read_from_file(file, &config, &config_substitutions, strategy, &plate_data_src, &project_presets, &is_bbl_3mf, &file_version, nullptr, nullptr, nullptr, nullptr, nullptr, plate_to_slice); + model = Model::read_from_file(file, &config, &config_substitutions, strategy, &plate_data_src, &project_presets, &is_bbl_3mf, &file_version, nullptr, nullptr, nullptr, plate_to_slice); if (is_bbl_3mf) { if (!first_file) @@ -5516,6 +5517,13 @@ int CLI::run(int argc, char **argv) slice_time[TIME_USING_CACHE] = slice_time[TIME_USING_CACHE] + ((long long)Slic3r::Utils::get_current_milliseconds_time_utc() - temp_time); BOOST_LOG_TRIVIAL(info) << "export_gcode finished: time_using_cache update to " << slice_time[TIME_USING_CACHE] << " secs."; + if (gcode_result && gcode_result->filament_printable_reuslt.has_value()) { + //found gcode error + BOOST_LOG_TRIVIAL(error) << "plate " << index + 1 << ": found some filament unprintable on current bed- "<< gcode_result->filament_printable_reuslt.plate_name << std::endl; + record_exit_reson(outfile_dir, CLI_FILAMENT_UNPRINTABLE_ON_FIRST_LAYER, index + 1, cli_errors[CLI_FILAMENT_UNPRINTABLE_ON_FIRST_LAYER], sliced_info); + flush_and_exit(CLI_FILAMENT_UNPRINTABLE_ON_FIRST_LAYER); + } + //outfile_final = (dynamic_cast(print))->print_statistics().finalize_output_path(outfile); //m_fff_print->export_gcode(m_temp_output_path, m_gcode_result, [this](const ThumbnailsParams& params) { return this->render_thumbnails(params); }); }/* else { diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp index 4db80bd7ff..527c65d47b 100644 --- a/src/libslic3r/AppConfig.cpp +++ b/src/libslic3r/AppConfig.cpp @@ -263,6 +263,10 @@ void AppConfig::set_defaults() set_bool("show_home_page", true); } + if (get("show_print_history").empty()) { + set_bool("show_print_history", true); + } + if (get("show_printable_box").empty()) { set_bool("show_printable_box", true); } @@ -367,6 +371,16 @@ void AppConfig::set_defaults() set_str("print", "timelapse", "1"); } + if (get("enable_step_mesh_setting").empty()) { + set_bool("enable_step_mesh_setting", true); + } + if (get("linear_defletion").empty()) { + set("linear_defletion", "0.003"); + } + if (get("angle_defletion").empty()) { + set("angle_defletion", "0.5"); + } + // Remove legacy window positions/sizes erase("app", "main_frame_maximized"); erase("app", "main_frame_pos"); diff --git a/src/libslic3r/ExtrusionEntity.cpp b/src/libslic3r/ExtrusionEntity.cpp index 084e8c397c..172a535e3b 100644 --- a/src/libslic3r/ExtrusionEntity.cpp +++ b/src/libslic3r/ExtrusionEntity.cpp @@ -468,13 +468,32 @@ bool ExtrusionLoop::check_seam_point_angle(double angle_threshold, double min_ar idx_next = Slic3r::next_idx_modulo(idx_next, points.size()); } - // Calculate angle between idx_prev, idx_curr, idx_next. - const Point &p0 = points[idx_prev]; - const Point &p1 = points[idx_curr]; - const Point &p2 = points[idx_next]; - const auto a = angle(p0 - p1, p2 - p1); - if (a > 0 ? a < angle_threshold : a > -angle_threshold) { - return false; + //thanks orca + for (size_t _i = 0; _i < points.size(); ++_i) { + // pull idx_prev to current as much as possible, while respecting the min_arm_length + while (distance_to_prev - lengths[idx_prev] > min_arm_length) { + distance_to_prev -= lengths[idx_prev]; + idx_prev = Slic3r::next_idx_modulo(idx_prev, points.size()); + } + + // push idx_next forward as far as needed + while (distance_to_next < min_arm_length) { + distance_to_next += lengths[idx_next]; + idx_next = Slic3r::next_idx_modulo(idx_next, points.size()); + } + + // Calculate angle between idx_prev, idx_curr, idx_next. + const Point &p0 = points[idx_prev]; + const Point &p1 = points[idx_curr]; + const Point &p2 = points[idx_next]; + const auto a = angle(p0 - p1, p2 - p1); + if (a > 0 ? a < angle_threshold : a > -angle_threshold) { return false; } + + // increase idx_curr by one + float curr_distance = lengths[idx_curr]; + idx_curr++; + distance_to_prev += curr_distance; + distance_to_next -= curr_distance; } return true; diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index a8a8c9a311..bd5cc2c54e 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -177,7 +177,7 @@ static void getNamedSolids(const TopLoc_Location& location, const std::string& p if (referredLabel.FindAttribute(TDataStd_Name::GetID(), shapeName)) name = TCollection_AsciiString(shapeName->Get()).ToCString(); - if (name == "") + if (name == "" || !StepPreProcessor::isUtf8(name)) name = std::to_string(id++); std::string fullName{name}; diff --git a/src/libslic3r/Format/STEP.hpp b/src/libslic3r/Format/STEP.hpp index 71453b3fc9..a1403aa06d 100644 --- a/src/libslic3r/Format/STEP.hpp +++ b/src/libslic3r/Format/STEP.hpp @@ -62,8 +62,8 @@ class StepPreProcessor { public: bool preprocess(const char* path, std::string &output_path); static bool isUtf8File(const char* path); -private: static bool isUtf8(const std::string str); +private: static bool isGBK(const std::string str); static int preNum(const unsigned char byte); //BBS: default is UTF8 for most step file. diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index e9dfcd0ef0..47484011ec 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1190,6 +1190,16 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu BOOST_LOG_TRIVIAL(debug) << "Start processing gcode, " << log_memory_info(); // Post-process the G-code to update time stamps. + // BBS: FIX: layers count error, while the last layer extrude is empty + // spiral_vase_layer can't get right height + while (!m_processor.result().spiral_vase_layers.empty()) { + if (m_processor.result().spiral_vase_layers.back().first != FLT_MAX) + break; + //record last move, update prev layer move range + int last_move = m_processor.result().spiral_vase_layers.back().second.second; + m_processor.result().spiral_vase_layers.pop_back(); + m_processor.result().spiral_vase_layers.back().second.second = last_move; + } m_timelapse_warning_code = 0; if (m_config.printer_structure.value == PrinterStructure::psI3 && m_spiral_vase) { @@ -1211,23 +1221,16 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu m_processor.result().long_retraction_when_cut = activate_long_retraction_when_cut; { //BBS:check bed and filament compatible - const ConfigOptionDef *bed_type_def = print_config_def.get("curr_bed_type"); - assert(bed_type_def != nullptr); - const t_config_enum_values *bed_type_keys_map = bed_type_def->enum_keys_map; - const ConfigOptionInts *bed_temp_opt = m_config.option(get_bed_temp_key(m_config.curr_bed_type)); + const ConfigOptionInts *bed_temp_opt = m_config.option(get_bed_temp_1st_layer_key(m_config.curr_bed_type)); + std::vector conflict_filament; for(auto extruder_id : m_initial_layer_extruders){ int cur_bed_temp = bed_temp_opt->get_at(extruder_id); - if (cur_bed_temp == 0 && bed_type_keys_map != nullptr) { - for (auto item : *bed_type_keys_map) { - if (item.second == m_config.curr_bed_type) { - m_processor.result().bed_match_result = BedMatchResult(false, item.first, extruder_id); - break; - } - } + if (cur_bed_temp == 0) { + conflict_filament.push_back(extruder_id); } - if (m_processor.result().bed_match_result.match == false) - break; } + + m_processor.result().filament_printable_reuslt = FilamentPrintableResult(conflict_filament, bed_type_to_gcode_string(m_config.curr_bed_type)); } m_processor.set_filaments(m_writer.extruders()); m_processor.finalize(true); @@ -2346,12 +2349,27 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato //BBS void GCode::check_placeholder_parser_failed() { + bool has_machine_gcode = false, has_filament_gcode = false; if (! m_placeholder_parser_failed_templates.empty()) { // G-code export proceeded, but some of the PlaceholderParser substitutions failed. std::string msg = Slic3r::format(_(L("Failed to generate gcode for invalid custom G-code.\n\n"))); for (const auto &name_and_error : m_placeholder_parser_failed_templates) + { msg += name_and_error.first + " " + name_and_error.second + "\n"; - msg += Slic3r::format(_(L("Please check the custom G-code or use the default custom G-code."))); + if (("filament_end_gcode" == name_and_error.first) || ("filament_start_gcode" == name_and_error.first)) + has_filament_gcode = true; + else + has_machine_gcode = true; + } + msg += Slic3r::format(_(L("Please check the custom G-code or use the default custom G-code.\n"))); + if (has_machine_gcode) { + if (has_filament_gcode) + msg += Slic3r::format(_(L("You can find them from 'Printer settings' -> 'Machine G-code' and 'Filament settings' -> 'Advanced'."))); + else + msg += Slic3r::format(_(L("You can find it from 'Printer settings' -> 'Machine G-code'."))); + } + else + msg += Slic3r::format(_(L("You can find it from 'Filament settings' -> 'Advanced'."))); throw Slic3r::PlaceholderParserError(msg); } } diff --git a/src/libslic3r/GCode/CoolingBuffer.hpp b/src/libslic3r/GCode/CoolingBuffer.hpp index 90c60e5b19..299bcae853 100644 --- a/src/libslic3r/GCode/CoolingBuffer.hpp +++ b/src/libslic3r/GCode/CoolingBuffer.hpp @@ -4,6 +4,7 @@ #include "../libslic3r.h" #include #include +#include namespace Slic3r { diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 0f65f32b78..36a8df11bf 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -960,7 +960,6 @@ void GCodeProcessorResult::reset() { filament_costs = std::vector(MIN_EXTRUDERS_COUNT, DEFAULT_FILAMENT_COST); custom_gcode_per_print_z = std::vector(); spiral_vase_layers = std::vector>>(); - bed_match_result = BedMatchResult(true); warnings.clear(); //BBS: add mutex for protection of gcode result diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index b522ad23ff..791e7e3738 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -117,23 +117,23 @@ namespace Slic3r { ConflictResult() = default; }; - struct BedMatchResult + using ConflictResultOpt = std::optional; + + struct FilamentPrintableResult { - bool match; - std::string bed_type_name; - int extruder_id; - BedMatchResult():match(true),bed_type_name(""),extruder_id(-1) {} - BedMatchResult(bool _match,const std::string& _bed_type_name="",int _extruder_id=-1) - :match(_match),bed_type_name(_bed_type_name),extruder_id(_extruder_id) - {} + std::vector conflict_filament; + std::string plate_name; + FilamentPrintableResult(){}; + FilamentPrintableResult(std::vector &conflict_filament, std::string plate_name) : conflict_filament(conflict_filament), plate_name(plate_name) {} + bool has_value(){ + return !conflict_filament.empty(); + }; }; - using ConflictResultOpt = std::optional; - struct GCodeProcessorResult { ConflictResultOpt conflict_result; - BedMatchResult bed_match_result; + FilamentPrintableResult filament_printable_reuslt; struct SettingsIds { @@ -252,7 +252,7 @@ namespace Slic3r { spiral_vase_layers = other.spiral_vase_layers; warnings = other.warnings; bed_type = other.bed_type; - bed_match_result = other.bed_match_result; + filament_printable_reuslt = other.filament_printable_reuslt; #if ENABLE_GCODE_VIEWER_STATISTICS time = other.time; #endif diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 09f98d2ff3..4f8cffd547 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -184,18 +184,67 @@ Model::~Model() Slic3r::remove_backup(*this, true); } +Model Model::read_from_step(const std::string& input_file, + LoadStrategy options, + ImportStepProgressFn stepFn, + StepIsUtf8Fn stepIsUtf8Fn, + std::function step_mesh_fn, + double linear_defletion, + double angle_defletion) +{ + Model model; + bool result = false; + bool is_cb_cancel = false; + std::string message; + Step step_file(input_file); + step_file.load(); + if (step_mesh_fn) { + if (step_mesh_fn(step_file, linear_defletion, angle_defletion) == -1) { + Model empty_model; + return empty_model; + } + } + result = load_step(input_file.c_str(), &model, is_cb_cancel, linear_defletion, angle_defletion, stepFn, stepIsUtf8Fn); + if (is_cb_cancel) { + Model empty_model; + return empty_model; + } + + if (!result) { + if (message.empty()) + throw Slic3r::RuntimeError(_L("Loading of a model file failed.")); + else + throw Slic3r::RuntimeError(message); + } + + if (model.objects.empty()) + throw Slic3r::RuntimeError(_L("The supplied file couldn't be read because it's empty")); + + for (ModelObject *o : model.objects) + o->input_file = input_file; + + if (options & LoadStrategy::AddDefaultInstances) + model.add_default_instances(); + + return model; +} + // BBS: add part plate related logic // BBS: backup & restore // Loading model from a file, it may be a simple geometry file as STL or OBJ, however it may be a project file as well. -Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* config, ConfigSubstitutionContext* config_substitutions, - LoadStrategy options, PlateDataPtrs* plate_data, std::vector* project_presets, bool *is_xxx, Semver* file_version, Import3mfProgressFn proFn, - ImportstlProgressFn stlFn, - ImportStepProgressFn stepFn, - StepIsUtf8Fn stepIsUtf8Fn, - BBLProject * project, - int plate_id, - ObjImportColorFn objFn, - std::function step_mesh_fn) +Model Model::read_from_file(const std::string& input_file, + DynamicPrintConfig* config, + ConfigSubstitutionContext* config_substitutions, + LoadStrategy options, + PlateDataPtrs* plate_data, + std::vector* project_presets, + bool *is_xxx, + Semver* file_version, + Import3mfProgressFn proFn, + ImportstlProgressFn stlFn, + BBLProject * project, + int plate_id, + ObjImportColorFn objFn) { Model model; @@ -219,20 +268,7 @@ Model Model::read_from_file(const std::string& input_file, DynamicPrintConfig* c bool result = false; bool is_cb_cancel = false; std::string message; - if (boost::algorithm::iends_with(input_file, ".stp") || - boost::algorithm::iends_with(input_file, ".step")) { - double linear_defletion = 0.003; - double angle_defletion = 0.5; - Step step_file(input_file); - step_file.load(); - if (step_mesh_fn) { - if (step_mesh_fn(step_file, linear_defletion, angle_defletion) == -1) { - Model empty_model; - return empty_model; - } - } - result = load_step(input_file.c_str(), &model, is_cb_cancel, linear_defletion, angle_defletion, stepFn, stepIsUtf8Fn); - } else if (boost::algorithm::iends_with(input_file, ".stl")) + if (boost::algorithm::iends_with(input_file, ".stl")) result = load_stl(input_file.c_str(), &model, nullptr, stlFn); else if (boost::algorithm::iends_with(input_file, ".oltp")) result = load_stl(input_file.c_str(), &model, nullptr, stlFn,256); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index e0b63cb669..5cc4b4e7d1 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -6,6 +6,7 @@ #include "Geometry.hpp" #include "ObjectID.hpp" #include "Point.hpp" +#include "AppConfig.hpp" #include "PrintConfig.hpp" #include "Slicing.hpp" #include "SLA/SupportPoint.hpp" @@ -1314,10 +1315,13 @@ class ModelInstance final : public ObjectBase // BBS void rotate(Matrix3d rotation_matrix) { - // note: must remove scaling from transformation, otherwise auto-orientation with scaled objects will have problem - auto R = m_transformation.get_rotation_matrix().matrix().block<3, 3>(0, 0); + auto R = m_transformation.get_rotation_matrix(); auto R_new = rotation_matrix * R; auto euler_angles = Geometry::extract_euler_angles(R_new); + //BOOST_LOG_TRIVIAL(debug) << "old R:\n" + // << R.matrix() << "\nnew R:\n" + // << R_new.matrix() << "\nold euler angles: " << m_transformation.get_rotation().transpose() << "\n" + // << "new euler angles: " << euler_angles.transpose(); set_rotation(euler_angles); } @@ -1582,6 +1586,14 @@ class Model final : public ObjectBase OBJECTBASE_DERIVED_COPY_MOVE_CLONE(Model) + static Model read_from_step(const std::string& input_file, + LoadStrategy options, + ImportStepProgressFn stepFn, + StepIsUtf8Fn stepIsUtf8Fn, + std::function step_mesh_fn, + double linear_defletion, + double angle_defletion); + //BBS: add part plate related logic // BBS: backup //BBS: is_xxx is used for is_bbs_3mf when loading 3mf, is used for is_inches when loading amf @@ -1591,12 +1603,9 @@ class Model final : public ObjectBase LoadStrategy options = LoadStrategy::AddDefaultInstances, PlateDataPtrs* plate_data = nullptr, std::vector* project_presets = nullptr, bool* is_xxx = nullptr, Semver* file_version = nullptr, Import3mfProgressFn proFn = nullptr, ImportstlProgressFn stlFn = nullptr, - ImportStepProgressFn stepFn = nullptr, - StepIsUtf8Fn stepIsUtf8Fn = nullptr, BBLProject * project = nullptr, int plate_id = 0, - ObjImportColorFn objFn = nullptr, - std::function step_mesh_fn = nullptr + ObjImportColorFn objFn = nullptr ); // BBS static bool obj_import_vertex_color_deal(const std::vector &vertex_filament_ids, const unsigned char &first_extruder_id, Model *model); diff --git a/src/libslic3r/Orient.cpp b/src/libslic3r/Orient.cpp index 463523e275..a8cec70972 100644 --- a/src/libslic3r/Orient.cpp +++ b/src/libslic3r/Orient.cpp @@ -87,7 +87,7 @@ class AutoOrienter { params = params_; progressind = progressind_; params.ASCENT = cos(PI - orient_mesh->overhang_angle * PI / 180); // use per-object overhang angle - + // BOOST_LOG_TRIVIAL(info) << orient_mesh->name << ", angle=" << orient_mesh->overhang_angle << ", params.ASCENT=" << params.ASCENT; // std::cout << orient_mesh->name << ", angle=" << orient_mesh->overhang_angle << ", params.ASCENT=" << params.ASCENT; @@ -161,9 +161,9 @@ class AutoOrienter { for (int i = 1; i< results_vector.size()-1; i++) { if (abs(results_vector[i].second.unprintability - results_vector[0].second.unprintability) < EPSILON && abs(results_vector[0].first.dot(n1)-1) > EPSILON) { - if (abs(results_vector[i].first.dot(n1)-1) < EPSILON*EPSILON) { + if (abs(results_vector[i].first.dot(n1)-1) < EPSILON*EPSILON) { best_orientation = n1; - break; + break; } } else { @@ -385,7 +385,7 @@ class AutoOrienter { auto bottom_condition = z_max.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON; auto bottom_condition_hull = z_max_hull.array() < total_min_z + this->params.FIRST_LAY_H - EPSILON; auto bottom_condition_2nd = z_max.array() < total_min_z + this->params.FIRST_LAY_H/2.f - EPSILON; - //The first layer is sliced on half of the first layer height. + //The first layer is sliced on half of the first layer height. //The bottom area is measured by accumulating first layer area with the facets area below first layer height. //By combining these two factors, we can avoid the wrong orientation of large planar faces while not influence the //orientations of complex objects with small bottom areas. @@ -497,7 +497,8 @@ void _orient(OrientMeshs& meshs_, mesh_.orientation = orienter.process(); Geometry::rotation_from_two_vectors(mesh_.orientation, { 0,0,1 }, mesh_.axis, mesh_.angle, &mesh_.rotation_matrix); mesh_.euler_angles = Geometry::extract_euler_angles(mesh_.rotation_matrix); - BOOST_LOG_TRIVIAL(debug) << "rotation_from_two_vectors: " << mesh_.orientation << "; " << mesh_.axis << "; " << mesh_.angle << "; euler: " << mesh_.euler_angles.transpose(); + BOOST_LOG_TRIVIAL(debug) << "rotation_from_two_vectors: " << mesh_.orientation.transpose() << "; axis: " << mesh_.axis.transpose() << "; angle: " << mesh_.angle + << "; euler: " << mesh_.euler_angles.transpose() << ", rotation_matrix:\n" << mesh_.rotation_matrix; }}); } } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 32ceaddf9c..fb695cb451 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -894,7 +894,7 @@ static std::vector s_Preset_printer_options { "printer_technology", "printable_area", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor", "single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode","printing_by_object_gcode","before_layer_change_gcode", "layer_change_gcode", "time_lapse_gcode", "change_filament_gcode", - "printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_max_radius","extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", + "printer_model", "printer_variant", "printable_height", "extruder_clearance_dist_to_rod", "extruder_clearance_max_radius","extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "nozzle_height", "default_print_profile", "inherits", "silent_mode", @@ -2519,7 +2519,7 @@ const std::string& PresetCollection::get_preset_name_by_alias(const std::string& it_preset->is_visible && (it_preset->is_compatible || size_t(it_preset - m_presets.begin()) == m_idx_selected)) return it_preset->name; } - + return alias; } diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index dcee070805..2202987b8d 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -101,7 +101,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "post_process", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid", - "extruder_clearance_radius", + "extruder_clearance_dist_to_rod", "nozzle_height", "extruder_clearance_max_radius", "extruder_colour", @@ -768,7 +768,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print { auto inst = print_instance_with_bounding_box[k].print_instance; // 只需要考虑喷嘴到滑杆的偏移量,这个比整个工具头的碰撞半径要小得多 - auto bbox = print_instance_with_bounding_box[k].bounding_box.inflated(-scale_(0.5 * print.config().extruder_clearance_max_radius.value)); + auto bbox = print_instance_with_bounding_box[k].bounding_box.inflated(scale_(print_config.extruder_clearance_dist_to_rod.value - print_config.extruder_clearance_max_radius.value)); auto iy1 = bbox.min.y(); auto iy2 = bbox.max.y(); (const_cast(inst->model_instance))->arrange_order = k+1; @@ -1163,7 +1163,7 @@ StringObjectException Print::validate(StringObjectException *warning, Polygons* if (has_custom_layering) { std::vector> layer_z_series; layer_z_series.assign(m_objects.size(), std::vector()); - + for (size_t idx_object = 0; idx_object < m_objects.size(); ++idx_object) { layer_z_series[idx_object] = generate_object_layers(m_objects[idx_object]->slicing_parameters(), layer_height_profiles[idx_object], m_objects[idx_object]->config().precise_z_height.value); } @@ -1683,7 +1683,7 @@ void Print::process(std::unordered_map* slice_time, bool if (slice_time) { start_time = (long long)Slic3r::Utils::get_current_milliseconds_time_utc(); } - + for (PrintObject* obj : m_objects) { if (need_slicing_objects.count(obj) != 0) { diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 7e6ba6387a..860a914d92 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -322,11 +322,11 @@ CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(OverhangThresholdParticipatingCooling) // BBS static const t_config_enum_values s_keys_map_BedType = { { "Default Plate", btDefault }, - { "Supertack Plate", btSuperTack }, { "Cool Plate", btPC }, { "Engineering Plate", btEP }, { "High Temp Plate", btPEI }, - { "Textured PEI Plate", btPTE } + { "Textured PEI Plate", btPTE }, + {"Supertack Plate", btSuperTack} }; CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(BedType) @@ -691,16 +691,16 @@ void PrintConfigDef::init_fff_params() def->tooltip = L("Bed types supported by the printer"); def->mode = comSimple; def->enum_keys_map = &s_keys_map_BedType; - def->enum_values.emplace_back("Supertack Plate"); def->enum_values.emplace_back("Cool Plate"); def->enum_values.emplace_back("Engineering Plate"); def->enum_values.emplace_back("High Temp Plate"); def->enum_values.emplace_back("Textured PEI Plate"); - def->enum_labels.emplace_back(L("Bambu Cool Plate SuperTack")); - def->enum_labels.emplace_back(L("Cool Plate / PLA Plate")); + def->enum_values.emplace_back("Supertack Plate"); + def->enum_labels.emplace_back(L("Cool Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); def->enum_labels.emplace_back(L("Smooth PEI Plate / High Temp Plate")); def->enum_labels.emplace_back(L("Textured PEI Plate")); + def->enum_labels.emplace_back(L("Bambu Cool Plate SuperTack")); def->set_default_value(new ConfigOptionEnum(btPC)); // BBS @@ -1352,9 +1352,9 @@ void PrintConfigDef::init_fff_params() def->mode = comAdvanced; def->set_default_value(new ConfigOptionFloat(120)); - def = this->add("extruder_clearance_radius", coFloat); - def->label = L("Radius"); - def->tooltip = L("Clearance radius around extruder. Used for collision avoidance in by-object printing."); + def = this->add("extruder_clearance_dist_to_rod", coFloat); + def->label = L("Distance to rod"); + def->tooltip = L("Horizontal distance of the nozzle tip to the rod's farther edge. Used for collision avoidance in by-object printing."); def->sidetext = L("mm"); def->min = 0; def->mode = comAdvanced; @@ -3001,13 +3001,13 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionPercent(15)); def = this->add("seam_slope_conditional", coBool); - def->label = L("Conditional scarf joint"); + def->label = L("Smart scarf seam application"); def->tooltip = L("Apply scarf joints only to smooth perimeters where traditional seams do not conceal the seams at sharp corners effectively."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); def = this->add("scarf_angle_threshold", coInt); - def->label = L("Conditional angle threshold"); + def->label = L("Scarf application angle threshold"); def->tooltip = L("This option sets the threshold angle for applying a conditional scarf joint seam.\nIf the seam angle within the perimeter loop " "exceeds this value (indicating the absence of sharp corners), a scarf joint seam will be used. The default value is 155°."); def->mode = comAdvanced; def->sidetext = L("°"); @@ -3043,7 +3043,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionPercent(80)); def = this->add("role_base_wipe_speed", coBool); - def->label = L("Role base wipe speed"); + def->label = L("Role-based wipe speed"); def->tooltip = L("The wipe speed is determined by speed of current extrusion role. " "e.g if a wip action is executed immediately following an outer wall extrusion, the speed of the outer wall extrusion will be utilized for the wipe action."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(true)); diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 057024b6a0..228154e22f 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -226,11 +226,11 @@ enum OverhangThresholdParticipatingCooling { // BBS enum BedType { btDefault = 0, - btSuperTack, btPC, btEP, btPEI, btPTE, + btSuperTack, btCount }; @@ -1035,7 +1035,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionEnum, draft_shield)) ((ConfigOptionFloat, extruder_clearance_height_to_rod))//BBs ((ConfigOptionFloat, extruder_clearance_height_to_lid))//BBS - ((ConfigOptionFloat, extruder_clearance_radius)) + ((ConfigOptionFloat, extruder_clearance_dist_to_rod)) ((ConfigOptionFloat, nozzle_height)) ((ConfigOptionFloat, extruder_clearance_max_radius)) ((ConfigOptionStrings, extruder_colour)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 140e33ab84..86bbc43731 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -538,8 +538,6 @@ void PrintObject::simplify_extrusion_path() } if (this->set_started(posSimplifySupportPath)) { - //BBS: disable circle simplification for support as it causes separation of support walls - #if 0 m_print->set_status(75, L("Optimizing toolpath")); BOOST_LOG_TRIVIAL(debug) << "Simplify extrusion path of support in parallel - start"; tbb::parallel_for( @@ -553,7 +551,6 @@ void PrintObject::simplify_extrusion_path() ); m_print->throw_if_canceled(); BOOST_LOG_TRIVIAL(debug) << "Simplify extrusion path of support in parallel - end"; - #endif this->set_done(posSimplifySupportPath); } } diff --git a/src/libslic3r/Slicing.cpp b/src/libslic3r/Slicing.cpp index d81684e46d..a6f73fba6c 100644 --- a/src/libslic3r/Slicing.cpp +++ b/src/libslic3r/Slicing.cpp @@ -110,7 +110,7 @@ SlicingParameters SlicingParameters::create_from_config( params.min_layer_height = std::min(params.min_layer_height, params.layer_height); params.max_layer_height = std::max(params.max_layer_height, params.layer_height); - if (! soluble_interface || is_tree_slim(object_config.support_type.value, object_config.support_style.value)) { + if (! soluble_interface) { params.gap_raft_object = object_config.raft_contact_distance.value; //BBS params.gap_object_support = object_config.support_bottom_z_distance.value; diff --git a/src/libslic3r/Support/SupportCommon.cpp b/src/libslic3r/Support/SupportCommon.cpp index 8c4980fb40..ffa23a6e79 100644 --- a/src/libslic3r/Support/SupportCommon.cpp +++ b/src/libslic3r/Support/SupportCommon.cpp @@ -70,15 +70,6 @@ std::pair generate_interfa SupportGeneratorLayersPtr &interface_layers = base_and_interface_layers.first; SupportGeneratorLayersPtr &base_interface_layers = base_and_interface_layers.second; - // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion - // Note: support materials (such as Supp.W) can't be used as support base now, so support interface and base are still using different filaments even if support_filament==0 - bool differnt_support_interface_filament = config.support_interface_filament != 0 && config.support_interface_filament.value != config.support_filament.value; - int num_base_interface_layers_top = differnt_support_interface_filament ? 1 : 0; - int num_base_interface_layers_bottom = differnt_support_interface_filament ? 1 : 0; - int num_interface_layers_top = config.support_interface_top_layers + num_base_interface_layers_top; - int num_interface_layers_bottom = config.support_interface_bottom_layers + num_base_interface_layers_bottom; - if (num_interface_layers_bottom < 0) - num_interface_layers_bottom = num_interface_layers_top; interface_layers.assign(intermediate_layers.size(), nullptr); if (support_params.has_base_interfaces()) base_interface_layers.assign(intermediate_layers.size(), nullptr); diff --git a/src/libslic3r/Support/SupportParameters.hpp b/src/libslic3r/Support/SupportParameters.hpp index 6042049a67..0ad2f3da48 100644 --- a/src/libslic3r/Support/SupportParameters.hpp +++ b/src/libslic3r/Support/SupportParameters.hpp @@ -38,8 +38,13 @@ struct SupportParameters { this->num_top_base_interface_layers = size_t(std::min(int(num_top_interface_layers) / 2, 2)); this->num_bottom_base_interface_layers = size_t(std::min(int(num_bottom_interface_layers) / 2, 2)); } else { - this->num_top_base_interface_layers = 0; - this->num_bottom_base_interface_layers = 0; + // BBS: if support interface and support base do not use the same filament, add a base layer to improve their adhesion + // Note: support materials (such as Supp.W) can't be used as support base now, so support interface and base are still using different filaments even if + // support_filament==0 + bool differnt_support_interface_filament = object_config.support_interface_filament != 0 && + object_config.support_interface_filament != object_config.support_filament; + this->num_top_base_interface_layers = differnt_support_interface_filament ? 1 : 0; + this->num_bottom_base_interface_layers = differnt_support_interface_filament ? 1 : 0; } } this->first_layer_flow = Slic3r::support_material_1st_layer_flow(&object, float(slicing_params.first_print_layer_height)); diff --git a/src/libslic3r/Support/TreeSupport.cpp b/src/libslic3r/Support/TreeSupport.cpp index 1bc315eda9..d90f496905 100644 --- a/src/libslic3r/Support/TreeSupport.cpp +++ b/src/libslic3r/Support/TreeSupport.cpp @@ -2202,17 +2202,25 @@ void TreeSupport::draw_circles() } } auto &area_groups = ts_layer->area_groups; - for (auto& area : ts_layer->base_areas) { - area_groups.emplace_back(&area, SupportLayer::BaseType, max_layers_above_base); - area_groups.back().need_infill = overlaps({ area }, area_poly); + for (auto& expoly : ts_layer->base_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::BaseType, max_layers_above_base); + area_groups.back().need_infill = overlaps({ expoly }, area_poly); area_groups.back().need_extra_wall = need_extra_wall && !area_groups.back().need_infill; } - for (auto& area : ts_layer->roof_areas) { - area_groups.emplace_back(&area, SupportLayer::RoofType, max_layers_above_roof); + for (auto& expoly : ts_layer->roof_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::RoofType, max_layers_above_roof); area_groups.back().interface_id = interface_id; } - for (auto &area : ts_layer->floor_areas) area_groups.emplace_back(&area, SupportLayer::FloorType, 10000); - for (auto &area : ts_layer->roof_1st_layer) area_groups.emplace_back(&area, SupportLayer::Roof1stLayer, max_layers_above_roof1); + for (auto &expoly : ts_layer->floor_areas) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::FloorType, 10000); + } + for (auto &expoly : ts_layer->roof_1st_layer) { + if (area(expoly) < SQ(scale_(1))) continue; + area_groups.emplace_back(&expoly, SupportLayer::Roof1stLayer, max_layers_above_roof1); + } for (auto &area_group : area_groups) { auto& expoly = area_group.area; @@ -3251,7 +3259,7 @@ std::vector TreeSupport::plan_layer_heights() for (int layer_nr = 0; layer_nr < contact_nodes.size(); layer_nr++) { if (contact_nodes[layer_nr].empty()) continue; SupportNode *node1 = contact_nodes[layer_nr].front(); - auto it = z_heights.lower_bound(node1->print_z - EPSILON); + auto it = z_heights.lower_bound(node1->print_z + EPSILON); if (it == z_heights.end()) it = std::prev(it); int layer_nr2 = std::distance(z_heights.begin(), it); contact_nodes2[layer_nr2].insert(contact_nodes2[layer_nr2].end(), contact_nodes[layer_nr].begin(), contact_nodes[layer_nr].end()); @@ -3267,6 +3275,7 @@ std::vector TreeSupport::plan_layer_heights() << ", object_layer_zs[" << layer_heights[layer_nr].obj_layer_nr << "]=" << m_object->get_layer(layer_heights[layer_nr].obj_layer_nr)->print_z; coordf_t new_height = layer_heights[layer_nr].height; if (std::abs(node1->height - new_height) < EPSILON) continue; + if (top_z_distance < EPSILON && node1->height < EPSILON) continue; // top_z_distance==0, this is soluable interface coordf_t accum_height = 0; int num_layers = 0; for (int i=layer_nr;i>=0;i--){ @@ -3340,9 +3349,6 @@ void TreeSupport::generate_contact_points() // } const int z_distance_top_layers = round_up_divide(scale_(z_distance_top), scale_(layer_height)) + 1; //Support must always be 1 layer below overhang. int gap_layers = z_distance_top == 0 ? 0 : 1; - // virtual layer with 0 height will be deleted - if (z_distance_top == 0) - z_distance_top = 0.001; size_t support_roof_layers = config.support_interface_top_layers.value; if (support_roof_layers > 0) diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 9d33f9ceb6..676780a4dd 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -1697,7 +1697,7 @@ float its_volume(const indexed_triangle_set &its) volume += (area * height) / 3.0f; } - return volume; + return std::abs(volume); } float its_average_edge_length(const indexed_triangle_set &its) diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index b63b495734..711cff864d 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -63,6 +63,7 @@ #define CLI_SLICING_ERROR -100 #define CLI_GCODE_PATH_CONFLICTS -101 +#define CLI_FILAMENT_UNPRINTABLE_ON_FIRST_LAYER -103 namespace boost { namespace filesystem { class directory_entry; }} diff --git a/src/libslic3r/libslic3r.h b/src/libslic3r/libslic3r.h index b8929aac6b..aba7f9d523 100644 --- a/src/libslic3r/libslic3r.h +++ b/src/libslic3r/libslic3r.h @@ -65,7 +65,7 @@ static constexpr double RESOLUTION = 0.0125; static constexpr double SPARSE_INFILL_RESOLUTION = 0.04; #define SCALED_SPARSE_INFILL_RESOLUTION (SPARSE_INFILL_RESOLUTION / SCALING_FACTOR) -static constexpr double SUPPORT_RESOLUTION = 0.1; +static constexpr double SUPPORT_RESOLUTION = 0.0375; #define SCALED_SUPPORT_RESOLUTION (SUPPORT_RESOLUTION / SCALING_FACTOR) // Maximum perimeter length for the loop to apply the small perimeter speed. #define SMALL_PERIMETER_LENGTH(LENGTH) (((LENGTH)/SCALING_FACTOR)*2*PI) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 8dcb488c3a..4034c5628a 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -837,6 +837,11 @@ void GLVolume::render(bool with_outline, const std::array& body_color) if (mv->mmu_segmentation_facets.empty()) break; + std::vector> colors = get_extruders_colors(); + if (colors.size() == 1) { + break; + } + color_volume = true; if (mv->mmu_segmentation_facets.timestamp() != mmuseg_ts) { BOOST_LOG_TRIVIAL(debug) << __FUNCTION__<< boost::format(", this %1%, name %2%, current mmuseg_ts %3%, current color size %4%") @@ -845,9 +850,12 @@ void GLVolume::render(bool with_outline, const std::array& body_color) std::vector its_per_color; mv->mmu_segmentation_facets.get_facets(*mv, its_per_color); mmuseg_ivas.resize(its_per_color.size()); + for (int idx = 0; idx < its_per_color.size(); idx++) { - mmuseg_ivas[idx].load_its_flat_shading(its_per_color[idx]); - mmuseg_ivas[idx].finalize_geometry(true); + if (its_per_color[idx].indices.size() > 0) { + mmuseg_ivas[idx].load_its_flat_shading(its_per_color[idx]); + mmuseg_ivas[idx].finalize_geometry(true); + } } mmuseg_ts = mv->mmu_segmentation_facets.timestamp(); BOOST_LOG_TRIVIAL(debug) << __FUNCTION__<< boost::format(", this %1%, name %2%, new mmuseg_ts %3%, new color size %4%") @@ -877,6 +885,7 @@ void GLVolume::render(bool with_outline, const std::array& body_color) int extruder_id = mv->extruder_id(); //shader->set_uniform("uniform_color", colors[extruder_id - 1]); //to make black not too hard too see + if (extruder_id <= 0) { extruder_id = 1; } std::array new_color = adjust_color_for_rendering(colors[extruder_id - 1]); shader->set_uniform("uniform_color", new_color); } @@ -1127,6 +1136,7 @@ void GLVolume::simple_render(GLShaderProgram *shader, ModelObjectPtrs &model_obj if (shader) { if (idx == 0) { int extruder_id = model_volume->extruder_id(); + if (extruder_id <= 0) { extruder_id = 1; } //to make black not too hard too see std::array new_color = adjust_color_for_rendering(extruder_colors[extruder_id - 1]); if (ban_light) { diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 818d1df41d..9d8cb606d9 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -13,31 +13,6 @@ namespace Slic3r { namespace GUI { wxDEFINE_EVENT(EVT_SELECTED_COLOR, wxCommandEvent); -static void get_default_k_n_value(const std::string &filament_id, float &k, float &n) -{ - if (filament_id.compare("GFG00") == 0) { - // PETG - k = 0.04; - n = 1.0; - } else if (filament_id.compare("GFB00") == 0 || filament_id.compare("GFB50") == 0) { - // ABS - k = 0.04; - n = 1.0; - } else if (filament_id.compare("GFU01") == 0) { - // TPU - k = 0.2; - n = 1.0; - } else if (filament_id.compare("GFB01") == 0) { - // ASA - k = 0.04; - n = 1.0; - } else { - // PLA , other - k = 0.02; - n = 1.0; - } -} - static std::string float_to_string_with_precision(float value, int precision = 3) { std::stringstream stream; @@ -1197,6 +1172,10 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt) m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].k_value)); m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].n_coef)); } + else { + m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].k_value)); + m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].n_coef)); + } } else { if (!ams_filament_id.empty()) { diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 972e935244..1d024ffc40 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -36,7 +36,7 @@ void CaliPresetCaliStagePanel::create_panel(wxWindow* parent) m_complete_radioBox = new wxRadioButton(parent, wxID_ANY, _L("Complete Calibration")); m_complete_radioBox->SetForegroundColour(*wxBLACK); - + m_complete_radioBox->SetValue(true); m_stage = CALI_MANUAL_STAGE_1; m_top_sizer->Add(m_complete_radioBox); @@ -231,7 +231,7 @@ void CaliPresetWarningPanel::create_panel(wxWindow* parent) { m_warning_text = new Label(parent, wxEmptyString); m_warning_text->SetFont(Label::Body_13); - m_warning_text->SetForegroundColour(wxColour(230, 92, 92)); + //m_warning_text->SetForegroundColour(wxColour(230, 92, 92)); m_warning_text->Wrap(CALIBRATION_TEXT_MAX_LENGTH); m_top_sizer->Add(m_warning_text, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(5)); } @@ -241,6 +241,11 @@ void CaliPresetWarningPanel::set_warning(wxString text) m_warning_text->SetLabel(text); } +void CaliPresetWarningPanel::set_color(wxColour color) +{ + m_warning_text->SetForegroundColour(color); +} + CaliPresetCustomRangePanel::CaliPresetCustomRangePanel( wxWindow* parent, int input_value_nums, @@ -365,7 +370,7 @@ CaliPresetTipsPanel::CaliPresetTipsPanel( { this->SetBackgroundColour(wxColour(238, 238, 238)); this->SetMinSize(wxSize(MIN_CALIBRATION_PAGE_WIDTH, -1)); - + m_top_sizer = new wxBoxSizer(wxVERTICAL); create_panel(this); @@ -519,6 +524,13 @@ void CalibrationPresetPage::create_selection_panel(wxWindow* parent) m_comboBox_nozzle_dia = new ComboBox(parent, wxID_ANY, "", wxDefaultPosition, CALIBRATION_COMBOX_SIZE, 0, nullptr, wxCB_READONLY); panel_sizer->Add(m_comboBox_nozzle_dia, 0, wxALL, 0); + m_nozzle_diameter_tips = new Label(parent, ""); + m_nozzle_diameter_tips->Hide(); + m_nozzle_diameter_tips->SetFont(Label::Body_13); + //m_nozzle_diameter_tips->SetForegroundColour(wxColour(100, 100, 100)); + m_nozzle_diameter_tips->Wrap(CALIBRATION_TEXT_MAX_LENGTH); + panel_sizer->Add(m_nozzle_diameter_tips, 0, wxALL, 0); + panel_sizer->AddSpacer(PRESET_GAP); auto plate_type_combo_text = new Label(parent, _L("Plate Type")); @@ -740,12 +752,16 @@ void CalibrationPresetPage::create_page(wxWindow* parent) pa_cali_modes.push_back(_L("Pattern")); m_pa_cali_method_combox = new CaliComboBox(parent, _L("Method"), pa_cali_modes); } - + m_ext_spool_panel = new wxPanel(parent); create_ext_spool_panel(m_ext_spool_panel); m_ext_spool_panel->Hide(); m_warning_panel = new CaliPresetWarningPanel(parent); + m_warning_panel->Hide(); + + m_error_panel = new CaliPresetWarningPanel(parent); + m_error_panel->set_color(wxColour(230, 92, 92)); m_tips_panel = new CaliPresetTipsPanel(parent); @@ -770,6 +786,7 @@ void CalibrationPresetPage::create_page(wxWindow* parent) m_top_sizer->Add(m_custom_range_panel, 0); m_top_sizer->AddSpacer(FromDIP(15)); m_top_sizer->Add(m_warning_panel, 0); + m_top_sizer->Add(m_error_panel, 0); m_top_sizer->Add(m_tips_panel, 0); m_top_sizer->AddSpacer(PRESET_GAP); m_top_sizer->Add(m_sending_panel, 0, wxALIGN_CENTER); @@ -860,6 +877,7 @@ void CalibrationPresetPage::update_priner_status_msg(wxString msg, bool is_warni void CalibrationPresetPage::on_select_nozzle(wxCommandEvent& evt) { + check_nozzle_diameter_for_auto_cali(); update_combobox_filaments(curr_obj); } @@ -950,6 +968,30 @@ void CalibrationPresetPage::on_recommend_input_value() } } +void CalibrationPresetPage::check_nozzle_diameter_for_auto_cali() +{ + m_nozzle_diameter_tips->Hide(); + if (!curr_obj) + return; + + if (m_cali_method == CALI_METHOD_AUTO) { + float nozzle_diameter = get_nozzle_value(); + if (nozzle_diameter < 0.3) { + if (curr_obj->get_printer_arch() == PrinterArch::ARCH_I3) { + wxString tips = (boost::format(_u8L("Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may have a high probability of failure.\n" + "If it fails, it is recommended to use manual calibration.")) % nozzle_diameter).str(); + m_nozzle_diameter_tips->SetLabel(tips); + } + else if (curr_obj->get_printer_series() == PrinterSeries::SERIES_X1) { + wxString tips = (boost::format(_u8L("Tip: Using a %.1fmm nozzle for auto dynamic flow calibration may not get accurate calibration results.\n" + "It is recommended to use manual calibration.")) % nozzle_diameter).str(); + m_nozzle_diameter_tips->SetLabel(tips); + } + m_nozzle_diameter_tips->Show(); + } + } +} + void CalibrationPresetPage::check_filament_compatible() { std::map selected_filaments = get_selected_filaments(); @@ -961,20 +1003,22 @@ void CalibrationPresetPage::check_filament_compatible() for (auto& item: selected_filaments) selected_filaments_list.push_back(item.second); + check_filament_cali_reliability(selected_filaments_list); + if (!is_filaments_compatiable(selected_filaments_list, bed_temp, incompatiable_filament_name, error_tips)) { m_tips_panel->set_params(0, 0, 0.0f); if (!error_tips.empty()) { wxString tips = from_u8(error_tips); - m_warning_panel->set_warning(tips); + m_error_panel->set_warning(tips); } else { wxString tips = wxString::Format(_L("%s is not compatible with %s"), m_comboBox_bed_type->GetValue(), incompatiable_filament_name); - m_warning_panel->set_warning(tips); + m_error_panel->set_warning(tips); } m_has_filament_incompatible = true; update_show_status(); } else { m_tips_panel->set_params(0, bed_temp, 0); - m_warning_panel->set_warning(""); + m_error_panel->set_warning(""); m_has_filament_incompatible = false; update_show_status(); } @@ -1081,6 +1125,49 @@ bool CalibrationPresetPage::is_filaments_compatiable(const std::vector return true; } +void CalibrationPresetPage::check_filament_cali_reliability(const std::vector &prests) +{ + m_warning_panel->Hide(); + if (!curr_obj) + return; + + if (m_cali_method == CALI_METHOD_AUTO) { + std::set foam_filaments; + for (auto &item : prests) { + if (!item) + continue; + + if (item->filament_id == "GFA11" || item->filament_id == "GFB02") { // PLA Aero, ASA-Aero + if (item->alias.empty()) + foam_filaments.insert(item->name); + else + foam_filaments.insert(item->alias); + } + } + + if (!foam_filaments.empty()) { + std::string names; + for (auto foam_filament : foam_filaments) { + names += foam_filament; + names += ","; + } + names.pop_back(); + + wxString tips; + if (curr_obj->get_printer_series() == PrinterSeries::SERIES_X1) { + tips = (boost::format(_u8L("Tip: Calibrating foam filaments(%s) in X series printers may not get accurate results\n" + "because their dynamic response is much different from that of ordinary filaments, and there is a high risk of oozing when printing calibration lines.")) %names).str(); + } + else if (curr_obj->get_printer_arch() == PrinterArch::ARCH_I3) { + tips = (boost::format(_u8L("Tip: When using the A1/A1 mini printer, we do not recommend calibrating foam filaments(%s),\n" + "as the results may be unstable and affect print quality."))%names).str(); + } + m_warning_panel->set_warning(tips); + m_warning_panel->Show(); + } + } +} + void CalibrationPresetPage::update_plate_type_collection(CalibrationMethod method) { m_comboBox_bed_type->Clear(); @@ -1361,14 +1448,14 @@ float CalibrationPresetPage::get_nozzle_value() void CalibrationPresetPage::update(MachineObject* obj) { curr_obj = obj; - + //update printer status update_show_status(); } void CalibrationPresetPage::on_device_connected(MachineObject* obj) -{ +{ init_with_machine(obj); update_combobox_filaments(obj); } @@ -1618,12 +1705,12 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj) for (auto ams = obj->amsList.begin(); ams != obj->amsList.end(); ams++) { AMSinfo info; info.ams_id = ams->first; - if (ams->second->is_exists + if (ams->second->is_exists && info.parse_ams_info(obj, ams->second, obj->ams_calibrate_remain_flag, obj->is_support_ams_humidity)) { ams_info.push_back(info); } } - + for (auto i = 0; i < m_ams_item_list.size(); i++) { AMSItem* item = m_ams_item_list[i]; if (ams_info.size() > 1) { @@ -1745,7 +1832,7 @@ std::map CalibrationPresetPage::get_selected_filaments() out.emplace(std::make_pair(fcb_list[i]->get_tray_id(), preset)); } } - + return out; } diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index 4adcd858f3..15b46f236a 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -81,6 +81,9 @@ class CaliPresetWarningPanel : public wxPanel void create_panel(wxWindow* parent); void set_warning(wxString text); + + void set_color(wxColour color); + protected: wxBoxSizer* m_top_sizer; Label* m_warning_text; @@ -145,7 +148,7 @@ enum CaliPresetPageStatus CaliPresetStatusNeedForceUpgrading, CaliPresetStatusNeedConsistencyUpgrading, CaliPresetStatusUnsupportedPrinter, - CaliPresetStatusInConnecting, + CaliPresetStatusInConnecting, CaliPresetStatusFilamentIncompatible, }; @@ -236,6 +239,7 @@ class CalibrationPresetPage : public CalibrationWizardPage void on_recommend_input_value(); + void check_nozzle_diameter_for_auto_cali(); void check_filament_compatible(); bool is_filaments_compatiable(const std::vector& prests); bool is_filament_in_blacklist(Preset* preset, std::string& error_tips); @@ -244,6 +248,8 @@ class CalibrationPresetPage : public CalibrationWizardPage std::string& incompatiable_filament_name, std::string& error_tips); + void check_filament_cali_reliability(const std::vector &prests); + float get_nozzle_value(); void update_plate_type_collection(CalibrationMethod method); @@ -253,7 +259,7 @@ class CalibrationPresetPage : public CalibrationWizardPage void Enable_Send_Button(bool enable); bool is_blocking_printing(); bool need_check_sdcard(MachineObject* obj); - + CaliPresetPageStatus get_status() { return m_page_status; } CaliPageStepGuide* m_step_panel{ nullptr }; @@ -265,7 +271,8 @@ class CalibrationPresetPage : public CalibrationWizardPage wxPanel* m_multi_ams_panel { nullptr }; wxPanel* m_filament_list_panel { nullptr }; wxPanel* m_ext_spool_panel { nullptr }; - CaliPresetWarningPanel* m_warning_panel { nullptr }; + CaliPresetWarningPanel* m_warning_panel{nullptr}; + CaliPresetWarningPanel* m_error_panel { nullptr }; CaliPresetCustomRangePanel* m_custom_range_panel { nullptr }; CaliPresetTipsPanel* m_tips_panel { nullptr }; CaliPageSendingPanel* m_sending_panel { nullptr }; @@ -276,15 +283,16 @@ class CalibrationPresetPage : public CalibrationWizardPage ComboBox* m_comboBox_nozzle_dia; ComboBox* m_comboBox_bed_type; ComboBox* m_comboBox_process; - + Label* m_nozzle_diameter_tips{nullptr}; + wxRadioButton* m_ams_radiobox; wxRadioButton* m_ext_spool_radiobox; - + ScalableButton* m_ams_sync_button; FilamentComboBoxList m_filament_comboBox_list; FilamentComboBox* m_virtual_tray_comboBox; - + std::vector m_ams_item_list; // for update filament combobox, key : tray_id diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp index d2471bf980..1895fd75ba 100644 --- a/src/slic3r/GUI/ConfigManipulation.cpp +++ b/src/slic3r/GUI/ConfigManipulation.cpp @@ -658,7 +658,7 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co toggle_line(el, has_ironing); // bool have_sequential_printing = (config->opt_enum("print_sequence") == PrintSequence::ByObject); - // for (auto el : { "extruder_clearance_radius", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid" }) + // for (auto el : { "extruder_clearance_dist_to_rod", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid" }) // toggle_field(el, have_sequential_printing); bool have_ooze_prevention = config->opt_bool("ooze_prevention"); diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 36778cfb6a..ca78bc0f58 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -6022,6 +6022,7 @@ std::string DeviceManager::get_printer_ams_img(std::string type_str) bool DeviceManager::get_printer_is_enclosed(std::string type_str) { return get_value_from_config(type_str, "printer_is_enclosed"); } + std::vector DeviceManager::get_resolution_supported(std::string type_str) { std::vector resolution_supported; @@ -6067,6 +6068,49 @@ std::vector DeviceManager::get_compatible_machine(std::string type_ return compatible_machine; } +boost::bimaps::bimap DeviceManager::get_all_model_id_with_name() +{ + boost::bimaps::bimap models; + std::vector m_files; + + wxDir dir(Slic3r::resources_dir() + "/printers/"); + if (!dir.IsOpened()) { + return models; + } + + wxString filename; + bool hasFile = dir.GetFirst(&filename, wxEmptyString, wxDIR_FILES); + while (hasFile) { + m_files.push_back(filename); + hasFile = dir.GetNext(&filename); + } + + for (wxString file : m_files) { + std::string config_file = Slic3r::resources_dir() + "/printers/" + file.ToStdString(); + boost::nowide::ifstream json_file(config_file.c_str()); + + try { + json jj; + if (json_file.is_open()) { + json_file >> jj; + if (jj.contains("00.00.00.00")) { + json const &printer = jj["00.00.00.00"]; + + std::string model_id; + std::string display_name; + if (printer.contains("model_id")) {model_id = printer["model_id"].get();} + if (printer.contains("display_name")) {display_name = printer["display_name"].get();} + + if (!model_id.empty() && !display_name.empty()) { + models.left.insert(make_pair(model_id, display_name)); + } + } + } + } catch (...) {} + } + + return models; +} bool DeviceManager::load_filaments_blacklist_config() { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 7a9f109aa7..a127ca68df 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -13,6 +13,7 @@ #include "libslic3r/ProjectTask.hpp" #include "slic3r/Utils/json_diff.hpp" #include "slic3r/Utils/NetworkAgent.hpp" +#include "boost/bimap/bimap.hpp" #include "CameraPopup.hpp" #include "libslic3r/Calib.hpp" #include "libslic3r/Utils.hpp" @@ -1077,11 +1078,12 @@ class DeviceManager static std::string get_printer_ams_img(std::string type_str); static PrinterArch get_printer_arch(std::string type_str); static std::string get_ftp_folder(std::string type_str); - static bool get_printer_is_enclosed(std::string type_str); - static std::vector get_resolution_supported(std::string type_str); - static std::vector get_compatible_machine(std::string type_str); + static bool get_printer_is_enclosed(std::string type_str); static bool load_filaments_blacklist_config(); static void check_filaments_in_blacklist(std::string tag_vendor, std::string tag_type, bool& in_blacklist, std::string& ac, std::string& info); + static std::vector get_resolution_supported(std::string type_str); + static std::vector get_compatible_machine(std::string type_str); + static boost::bimaps::bimap get_all_model_id_with_name(); static std::string load_gcode(std::string type_str, std::string gcode_file); }; diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index d2c8b89ae9..90ab44d057 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -1123,6 +1123,7 @@ void GCodeViewer::load(const GCodeProcessorResult& gcode_result, const Print& pr m_conflict_result = gcode_result.conflict_result; if (m_conflict_result) { m_conflict_result.value().layer = m_layers.get_l_at(m_conflict_result.value()._height); } + filament_printable_reuslt = gcode_result.filament_printable_reuslt; //BBS: add mutex for protection of gcode result gcode_result.unlock(); //BBS: add logs @@ -3259,6 +3260,29 @@ void GCodeViewer::load_shells(const Print& print, bool initialized, bool force_p % m_shells.print_id % m_shells.print_modify_count % object_count %m_shells.volumes.volumes.size(); } +void GUI::GCodeViewer::set_shells_on_preview(bool is_previewing) { + if (is_previewing) { + delete_wipe_tower(); + } + m_shells.previewing = is_previewing; +} + +void GUI::GCodeViewer::delete_wipe_tower() +{ + size_t current_volumes_count = m_shells.volumes.volumes.size(); + if (current_volumes_count >= 1) { + for (size_t i = current_volumes_count - 1; i > 0; i--) { + GLVolume *v = m_shells.volumes.volumes[i]; + if (v->is_wipe_tower) { + m_shells.volumes.release_volume(v); + delete v; + m_shells.volumes.volumes.erase(m_shells.volumes.volumes.begin() + i); + break; + } + } + } +} + void GCodeViewer::refresh_render_paths(bool keep_sequential_current_first, bool keep_sequential_current_last) const { #if ENABLE_GCODE_VIEWER_STATISTICS diff --git a/src/slic3r/GUI/GCodeViewer.hpp b/src/slic3r/GUI/GCodeViewer.hpp index 2a1f6aba40..ae0c1ca381 100644 --- a/src/slic3r/GUI/GCodeViewer.hpp +++ b/src/slic3r/GUI/GCodeViewer.hpp @@ -738,6 +738,8 @@ class GCodeViewer //BBS ConflictResultOpt m_conflict_result; + FilamentPrintableResult filament_printable_reuslt; + private: std::vector m_plater_extruder; bool m_gl_data_initialized{ false }; @@ -821,7 +823,8 @@ class GCodeViewer //BBS: always load shell at preview void reset_shell(); void load_shells(const Print& print, bool initialized, bool force_previewing = false); - void set_shells_on_preview(bool is_previewing) { m_shells.previewing = is_previewing; } + void set_shells_on_preview(bool is_previewing); + void delete_wipe_tower(); //BBS: add all plates filament statistics void render_all_plates_stats(const std::vector& gcode_result_list, bool show = true) const; //BBS: GUI refactor: add canvas width and height diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 78dd29ee1a..6934d867b6 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -2809,6 +2809,7 @@ void GLCanvas3D::reload_scene(bool refresh_immediately, bool force_full_scene_re //BBS:exclude the assmble view if (m_canvas_type != ECanvasType::CanvasAssembleView) { _set_warning_notification_if_needed(EWarning::GCodeConflict); + _set_warning_notification(EWarning::FilamentUnPrintableOnFirstLayer, false); // checks for geometry outside the print volume to render it accordingly if (!m_volumes.empty()) { ModelInstanceEPrintVolumeState state; @@ -2897,6 +2898,7 @@ void GLCanvas3D::load_gcode_preview(const GCodeProcessorResult& gcode_result, co _set_warning_notification_if_needed(EWarning::ToolHeightOutside); _set_warning_notification_if_needed(EWarning::ToolpathOutside); _set_warning_notification_if_needed(EWarning::GCodeConflict); + _set_warning_notification_if_needed(EWarning::FilamentUnPrintableOnFirstLayer); } m_gcode_viewer.refresh(gcode_result, str_tool_colors); @@ -5330,8 +5332,8 @@ void GLCanvas3D::update_sequential_clearance() Polygon hull_no_offset = model_object->convex_hull_2d(Geometry::assemble_transform({ 0.0, 0.0, model_instance0->get_offset().z() }, model_instance0->get_rotation(), model_instance0->get_scaling_factor(), model_instance0->get_mirror())); auto tmp = offset(hull_no_offset, - // Shrink the extruder_clearance_radius a tiny bit, so that if the object arrangement algorithm placed the objects - // exactly by satisfying the extruder_clearance_radius, this test will not trigger collision. + // Shrink the extruder_clearance_max_radius a tiny bit, so that if the object arrangement algorithm placed the objects + // exactly by satisfying the extruder_clearance_max_radius, this test will not trigger collision. shrink_factor, jtRound, mitter_limit); Polygon hull_2d = !tmp.empty() ? tmp.front() : hull_no_offset;// tmp may be empty due to clipper's bug, see STUDIO-2452 @@ -9446,14 +9448,15 @@ void GLCanvas3D::_set_warning_notification_if_needed(EWarning warning) if (wxGetApp().is_editor()) { if (current_printer_technology() != ptSLA) { unsigned int max_z_layer = m_gcode_viewer.get_layers_z_range().back(); - if (warning == EWarning::ToolHeightOutside) // check if max z_layer height exceed max print height + if (warning == EWarning::ToolHeightOutside) // check if max z_layer height exceed max print height show = m_gcode_viewer.has_data() && (m_gcode_viewer.get_layers_zs()[max_z_layer] - m_gcode_viewer.get_max_print_height() >= 1e-6); else if (warning == EWarning::ToolpathOutside) { // check if max x,y coords exceed bed area show = m_gcode_viewer.has_data() && !m_gcode_viewer.is_contained_in_bed() && - (m_gcode_viewer.get_max_print_height() -m_gcode_viewer.get_layers_zs()[max_z_layer] >= 1e-6); - } - else if (warning == EWarning::GCodeConflict) + (m_gcode_viewer.get_max_print_height() - m_gcode_viewer.get_layers_zs()[max_z_layer] >= 1e-6); + } else if (warning == EWarning::GCodeConflict) show = m_gcode_viewer.has_data() && m_gcode_viewer.is_contained_in_bed() && m_gcode_viewer.m_conflict_result.has_value(); + else if (warning == EWarning::FilamentUnPrintableOnFirstLayer) + show = m_gcode_viewer.has_data() && m_gcode_viewer.filament_printable_reuslt.has_value(); } } } @@ -9489,7 +9492,7 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state) PLATER_WARNING, PLATER_ERROR, SLICING_SERIOUS_WARNING, - SLICING_ERROR + SLICING_ERROR, }; std::string text; ErrorType error = ErrorType::PLATER_WARNING; @@ -9523,6 +9526,18 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state) "Please solve the problem by moving it totally on or off the plate, and confirming that the height is within the build volume."); error = ErrorType::PLATER_ERROR; break; + case EWarning::FilamentUnPrintableOnFirstLayer: { + std::string warning; + const std::vector &conflict_filament = m_gcode_viewer.filament_printable_reuslt.conflict_filament; + auto iter = conflict_filament.begin(); + for (int filament : conflict_filament) { + warning += std::to_string(filament + 1); + warning+=" "; + } + text = (boost::format(_u8L("filaments %s cannot be printed directly on the surface of this plate.")) % warning ).str(); + error = ErrorType::SLICING_ERROR; + break; + } } //BBS: this may happened when exit the app, plater is null if (!wxGetApp().plater()) @@ -9550,10 +9565,20 @@ void GLCanvas3D::_set_warning_notification(EWarning warning, bool state) notification_manager.close_slicing_serious_warning_notification(text); break; case SLICING_ERROR: - if (state) - notification_manager.push_slicing_error_notification(text, conflictObj ? std::vector{conflictObj} : std::vector{}); - else - notification_manager.close_slicing_error_notification(text); + if (warning == EWarning::FilamentUnPrintableOnFirstLayer) { + if (state) { + notification_manager.bbl_show_bed_filament_incompatible_notification(text); + } + else { + notification_manager.bbl_close_bed_filament_incompatible_notification(); + } + } + else { + if (state) + notification_manager.push_slicing_error_notification(text, conflictObj ? std::vector{conflictObj} : std::vector{}); + else + notification_manager.close_slicing_error_notification(text); + } break; default: break; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 680b0001ee..7ef39e61f2 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -377,7 +377,8 @@ class GLCanvas3D SomethingNotShown, ObjectClashed, GCodeConflict, - ToolHeightOutside + ToolHeightOutside, + FilamentUnPrintableOnFirstLayer }; class RenderStats diff --git a/src/slic3r/GUI/GUI.cpp b/src/slic3r/GUI/GUI.cpp index 89992cea12..1b2582ad27 100644 --- a/src/slic3r/GUI/GUI.cpp +++ b/src/slic3r/GUI/GUI.cpp @@ -108,7 +108,7 @@ void change_opt_value(DynamicPrintConfig& config, const t_config_option_key& opt try{ if (config.def()->get(opt_key)->type == coBools && config.def()->get(opt_key)->nullable) { - auto vec_new = std::make_unique(1, boost::any_cast(value) ); + auto vec_new = std::make_unique(std::vector{boost::any_cast(value)}); config.option(opt_key)->set_at(vec_new.get(), opt_index, 0); return; } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 77526cae4e..aabc773fdc 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1952,6 +1952,10 @@ void GUI_App::init_networking_callbacks() m_server_error_dialog = new NetworkErrorDialog(mainframe); } + if(plater()->get_select_machine_dialog() && plater()->get_select_machine_dialog()->IsShown()){ + return; + } + if (m_server_error_dialog->m_show_again) { return; } @@ -4065,6 +4069,14 @@ std::string GUI_App::handle_web_request(std::string cmd) CallAfter([this] { get_login_info(); }); + // TODO: Fix home page not emit get_recent_projects on macOS + #ifdef __WXOSX__ + if (mainframe) { + if (mainframe->m_webview) { + mainframe->m_webview->SendRecentList(INT_MAX); + } + } + #endif } else if (command_str.compare("homepage_login_or_register") == 0) { @@ -4205,17 +4217,6 @@ std::string GUI_App::handle_web_request(std::string cmd) } } } - else if (command_str.compare("homepage_open_ccabin") == 0) { - if (root.get_child_optional("data") != boost::none) { - pt::ptree data_node = root.get_child("data"); - boost::optional path = data_node.get_optional("file"); - if (path.has_value()) { - std::string Fullpath = resources_dir() + "/web/homepage/model/" + path.value(); - - this->request_open_project(Fullpath); - } - } - } else if (command_str.compare("common_openurl") == 0) { boost::optional path = root.get_optional("url"); if (path.has_value()) { @@ -4287,6 +4288,34 @@ std::string GUI_App::handle_web_request(std::string cmd) } } } + else if (command_str.compare("homepage_online_search") == 0) { + if (root.get_child_optional("keyword") != boost::none) + { + std::string strKW = root.get_optional("keyword").value(); + + if (mainframe && mainframe->m_webview) + { + mainframe->m_webview->OpenMakerworldSearchPage(strKW); + } + } + } + else if (command_str.compare("homepage_printhistory_click") == 0) { + if (root.get_child_optional("taskid") != boost::none) { + int nTaskID = root.get("taskid"); + + if (mainframe && mainframe->m_webview) + { + mainframe->m_webview->SetPrintHistoryTaskID(nTaskID); + mainframe->m_webview->SwitchLeftMenu("printhistory"); + } + } + } + else if (command_str.compare("homepage_printhistory_get")==0) + { + if (mainframe && mainframe->m_webview) { + mainframe->m_webview->ShowUserPrintTask(true); + } + } } } catch (...) { @@ -4551,10 +4580,12 @@ void GUI_App::reset_to_active() last_active_point = std::chrono::system_clock::now(); } -void GUI_App::check_update(bool show_tips, int by_user, VersionUpdateType type) +void GUI_App::check_update(bool show_tips, int by_user) { - if (version_info.version_str.empty()) return; - if (version_info.url.empty()) return; + if (version_info.version_str.empty() || version_info.url.empty()) { + check_beta_version(); + return; + } auto curr_version = Semver::parse(SLIC3R_VERSION); auto remote_version = Semver::parse(version_info.version_str); @@ -4572,17 +4603,12 @@ void GUI_App::check_update(bool show_tips, int by_user, VersionUpdateType type) } } else { wxGetApp().app_config->set("upgrade", "force_upgrade", false); - if (app_config->get("enable_beta_version_update") == "true"){ - if (type == ReleaseVersionUpdate){ - check_beta_version(show_tips, by_user); - } - else if (type == BetaVersionUpdate){ - this->no_new_version(); - } - } - else{ + + if (show_tips) { this->no_new_version(); } + + check_beta_version(); } } @@ -4616,8 +4642,11 @@ void GUI_App::check_new_version(bool show_tips, int by_user) if (j.contains("message")) { if (j["message"].get() == "success") { if (j.contains("software")) { - if (j["software"].empty() && show_tips) { - this->no_new_version(); + if (j["software"].empty()) { + if (show_tips) { + this->no_new_version(); + } + check_beta_version(); } else { if (j["software"].contains("url") @@ -4648,7 +4677,12 @@ void GUI_App::check_new_version(bool show_tips, int by_user) }).perform(); } -void GUI_App::check_beta_version(bool show_tips, int by_user) { +void GUI_App::check_beta_version() +{ + if (app_config->get("enable_beta_version_update") != "true") { + return; + } + std::string platform = "windows"; #ifdef __WINDOWS__ @@ -4671,7 +4705,7 @@ void GUI_App::check_beta_version(bool show_tips, int by_user) { http.header("accept", "application/json") .timeout_connect(TIMEOUT_CONNECT) .timeout_max(TIMEOUT_RESPONSE) - .on_complete([this, show_tips, by_user, platform](std::string body, unsigned) { + .on_complete([this, platform](std::string body, unsigned) { try { json versions = json::parse(body, nullptr, false); for (auto version : versions){ @@ -4697,15 +4731,24 @@ void GUI_App::check_beta_version(bool show_tips, int by_user) { version_info.url = url; version_info.description = "###" + std::string(version["html_url"]) + "###"; version_info.force_upgrade = false; - CallAfter([this, show_tips, by_user]() { - this->check_update(show_tips, by_user, BetaVersionUpdate); - }); - return; + CallAfter([this]() { + + if (version_info.version_str.empty() || version_info.url.empty()) { + return; + } + + auto curr_version = Semver::parse(SLIC3R_VERSION); + auto remote_version = Semver::parse(version_info.version_str); + if (curr_version && remote_version && (*remote_version > *curr_version)) { + GUI::wxGetApp().request_new_version(false); + } + }); } } } } } + return; } } catch (...) { diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index 435d99d222..ec01e52304 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -135,13 +135,6 @@ enum CameraMenuIDs { wxID_CAMERA_COUNT, }; -enum VersionUpdateType -{ - ReleaseVersionUpdate, - BetaVersionUpdate -}; - - class Tab; class ConfigWizard; class GizmoObjectManipulation; @@ -462,9 +455,9 @@ class GUI_App : public wxApp bool m_studio_active = true; std::chrono::system_clock::time_point last_active_point; - void check_update(bool show_tips, int by_user, VersionUpdateType = ReleaseVersionUpdate); + void check_update(bool show_tips, int by_user); void check_new_version(bool show_tips = false, int by_user = 0); - void check_beta_version(bool show_tips = false, int by_user = 0); + void check_beta_version(); void request_new_version(int by_user); void enter_force_upgrade(); void set_skip_version(bool skip = true); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp index 04b11703ab..4a72f60558 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp @@ -44,7 +44,7 @@ bool GLGizmoBrimEars::on_init() 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 points"); + m_desc["remove_all"] = _L("Remove all"); m_desc["auto_generate"] = _L("Auto-generate points"); m_desc["section_view"] = _L("Section view"); @@ -522,8 +522,7 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi float input_text_size = m_imgui->scaled(10.0f); float button_size = ImGui::GetFrameHeight(); - float selectable_size = input_text_size + ImGui::GetFrameHeight() * 2; - float list_width = selectable_size + ImGui::GetStyle().ScrollbarSize + 2 * currt_scale; + float list_width = input_text_size + ImGui::GetStyle().ScrollbarSize + 2 * currt_scale; const float slider_icon_width = m_imgui->get_slider_icon_size().x; const float slider_width = list_width - space_size; @@ -606,17 +605,14 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi ImGui::Separator(); // ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); - float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; - show_tooltip_information(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)); - ImGui::SameLine(); if (m_imgui->button(m_desc["auto_generate"])) { auto_generate(); } - ImGui::SameLine(); + if (m_imgui->button(m_desc["remove_selected"])) { delete_selected_points(); } float font_size = ImGui::GetFontSize(); - ImGui::Dummy(ImVec2(font_size * 1.8, font_size * 1.3)); + //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) { @@ -626,29 +622,37 @@ void GLGizmoBrimEars::on_render_input_window(float x, float y, float bottom_limi } ImGui::PopStyleVar(1); + float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; + show_tooltip_information(x, get_cur_y); + if (glb_cfg.opt_enum("brim_type") != btBrimEars) { + ImGui::SameLine(); auto link_text = [&]() { - ImColor HyperColor = ImColor(48, 221, 114, 255).Value; + ImColor HyperColor = m_link_text_hover ? ImColor(0, 240, 91).Value : ImColor(0, 174, 66).Value; ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING())); float parent_width = ImGui::GetContentRegionAvail().x; 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(); ImGui::PushStyleColor(ImGuiCol_Text, HyperColor.Value); - m_imgui->text(_L("(Set the brim type to \"painted\")")); + ImGui::Dummy(ImVec2(font_size * 1.8, font_size * 1.3)); + ImGui::SameLine(); + m_imgui->bold_text(_u8L("Set the brim type 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)) { - // underline - ImVec2 lineEnd = ImGui::GetItemRectMax(); - lineEnd.y -= 2.0f; - ImVec2 lineStart = lineEnd; - lineStart.x = ImGui::GetItemRectMin().x; - ImGui::GetWindowDrawList()->AddLine(lineStart, lineEnd, HyperColor); - + m_link_text_hover = true; if (ImGui::IsMouseClicked(ImGuiMouseButton_Left)) { DynamicPrintConfig new_conf = obj_cfg; new_conf.set_key_value("brim_type", new ConfigOptionEnum(btBrimEars)); mo->config.assign_config(new_conf); } + }else { + m_link_text_hover = false; } }; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp index 8af4b73bd3..ce54374c49 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBrimEars.hpp @@ -109,6 +109,8 @@ class GLGizmoBrimEars : public GLGizmoBase GLVolume* m_last_hit_volume; CacheEntry* render_hover_point = nullptr; + bool m_link_text_hover = false; + // This map holds all translated description texts, so they can be easily referenced during layout calculations // etc. When language changes, GUI is recreated and this class constructed again, so the change takes effect. diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp index 95036105e5..d35f3716ba 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp @@ -232,7 +232,7 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l const int max_cap_length = ImGui::GetStyle().WindowPadding.x + ImGui::GetStyle().ItemSpacing.x + std::max(ImGui::CalcTextSize(_u8L("Source Volume").c_str()).x, ImGui::CalcTextSize(_u8L("Tool Volume").c_str()).x); const int select_btn_length = 2 * ImGui::GetStyle().FramePadding.x + std::max(ImGui::CalcTextSize(("1 " + _u8L("selected")).c_str()).x, ImGui::CalcTextSize(_u8L("Select").c_str()).x); - auto selectable = [this](const wxString& label, bool selected, const ImVec2& size_arg) { + auto selectable = [this](const std::string& label, bool selected, const ImVec2& size_arg) { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 0,0 }); ImGuiWindow* window = ImGui::GetCurrentWindow(); @@ -305,8 +305,8 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l std::string cap_str1 = m_operation_mode != MeshBooleanOperation::Difference ? _u8L("Part 1") : _u8L("Subtract from"); m_imgui->text(cap_str1); ImGui::SameLine(max_cap_length); - wxString select_src_str = m_src.mv ? "1 " + _u8L("selected") : _u8L("Select"); - select_src_str << "##select_source_volume"; + std::string select_src_str = m_src.mv ? "1 " + _u8L("selected") : _u8L("Select"); + select_src_str += "##select_source_volume"; ImGui::PushItemWidth(select_btn_length); if (selectable(select_src_str, m_selecting_state == MeshBooleanSelectingState::SelectSource, ImVec2(select_btn_length, 0))) m_selecting_state = MeshBooleanSelectingState::SelectSource; @@ -334,8 +334,8 @@ void GLGizmoMeshBoolean::on_render_input_window(float x, float y, float bottom_l std::string cap_str2 = m_operation_mode != MeshBooleanOperation::Difference ? _u8L("Part 2") : _u8L("Subtract with"); m_imgui->text(cap_str2); ImGui::SameLine(max_cap_length); - wxString select_tool_str = m_tool.mv ? "1 " + _u8L("selected") : _u8L("Select"); - select_tool_str << "##select_tool_volume"; + std::string select_tool_str = m_tool.mv ? "1 " + _u8L("selected") : _u8L("Select"); + select_tool_str += "##select_tool_volume"; ImGui::PushItemWidth(select_btn_length); if (selectable(select_tool_str, m_selecting_state == MeshBooleanSelectingState::SelectTool, ImVec2(select_btn_length, 0))) m_selecting_state = MeshBooleanSelectingState::SelectTool; diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp index 16f2288a49..8e70fa596e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp @@ -555,7 +555,7 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott } // draw filament background - ImGuiColorEditFlags flags = ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip; + ImGuiColorEditFlags flags = ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoTooltip; if (m_selected_extruder_idx != extruder_idx) flags |= ImGuiColorEditFlags_NoBorder; #ifdef __APPLE__ ImGui::PushStyleColor(ImGuiCol_FrameBg, ImVec4(0.00f, 0.68f, 0.26f, 1.00f)); @@ -581,10 +581,15 @@ void GLGizmoMmuSegmentation::on_render_input_window(float x, float y, float bott float gray = 0.299 * extruder_color[0] + 0.587 * extruder_color[1] + 0.114 * extruder_color[2]; ImGui::SameLine(button_offset + (button_size.x - label_size.x) / 2.f); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, {10.0,15.0}); - if (gray * 255.f < 80.f) - ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), item_text.c_str()); - else + if (abs(color_vec.w - 1) < 0.01) { + if (gray * 255.f < 80.f) + ImGui::TextColored(ImVec4(1.0f, 1.0f, 1.0f, 1.0f), item_text.c_str()); + else + ImGui::TextColored(ImVec4(0.0f, 0.0f, 0.0f, 1.0f), item_text.c_str()); + } + else {//alpha ImGui::TextColored(ImVec4(0.0f, 0.0f, 0.0f, 1.0f), item_text.c_str()); + } ImGui::PopStyleVar(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp index d7c64f21ea..2171ff048c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.cpp @@ -1330,9 +1330,8 @@ float TriangleSelectorPatch::gap_area = TriangleSelectorPatch::GapAreaMin; void TriangleSelectorPatch::render(ImGuiWrapper* imgui) { - static bool last_show_wireframe = false; - if (last_show_wireframe != wxGetApp().plater()->is_show_wireframe()) { - last_show_wireframe = wxGetApp().plater()->is_show_wireframe(); + if (m_cached_wireframe_mode != wxGetApp().plater()->is_show_wireframe()) { + m_cached_wireframe_mode = wxGetApp().plater()->is_show_wireframe(); m_update_render_data = true; m_paint_changed = true; } @@ -1681,8 +1680,8 @@ void TriangleSelectorPatch::render(int triangle_indices_idx, int position_id, bo glsafe(::glDisableClientState(GL_VERTEX_ARRAY)); if ((this->m_triangle_indices_sizes[triangle_indices_idx] > 0)&&(position_id != -1)) glsafe(::glDisableVertexAttribArray(position_id)); - if ((this->m_triangle_indices_sizes[triangle_indices_idx] > 0)&&show_wireframe) { - glsafe(::glEnableClientState(GL_COLOR_ARRAY)); + if ((this->m_triangle_indices_sizes[triangle_indices_idx] > 0)&&show_wireframe) { + glsafe(::glDisableClientState(GL_COLOR_ARRAY)); } if (this->m_triangle_indices_sizes[triangle_indices_idx] > 0) glsafe(::glBindBuffer(GL_ARRAY_BUFFER, 0)); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp index 216219ca7c..f5ad08a6c7 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoPainterBase.hpp @@ -198,6 +198,7 @@ class TriangleSelectorPatch : public TriangleSelectorGUI { std::vector> m_ebt_colors; bool m_filter_state = false; + bool m_cached_wireframe_mode = false; private: void update_render_data(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp index 75cd2c2ddb..482784e08e 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.cpp @@ -400,6 +400,7 @@ void GLGizmoText::on_set_state() } else if (m_state == EState::Off) { m_show_warning = false; + m_show_text_normal_error = false; m_edit_text_again = false; reset_text_info(); delete_temp_preview_text_volume(); @@ -987,6 +988,9 @@ void GLGizmoText::on_render_input_window(float x, float y, float bottom_limit) if (m_show_warning) { m_imgui->warning_text(_L("Warning:create text fail.")); } + if (m_show_text_normal_error) { + m_imgui->warning_text(_L("Warning:text normal is error.")); + } ImGui::Separator(); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); @@ -1162,16 +1166,18 @@ bool GLGizmoText::update_text_positions(const std::vector& texts) BOOST_LOG_TRIVIAL(info) << boost::format("Text: mrr_mesh_id is -1"); return false; } - if (m_text_normal_in_world.norm() < 0.1) { - BOOST_LOG_TRIVIAL(info) << "m_text_normal_in_object is error"; - return false; - } // mouse_position_world may is error after user modified if (m_need_fix) { m_need_fix = false; m_text_position_in_world = m_fix_text_position_in_world; m_text_normal_in_world = m_fix_text_normal_in_world; } + if (m_text_normal_in_world.norm() < 0.1) { + m_show_text_normal_error = true; + BOOST_LOG_TRIVIAL(info) << "m_text_normal_in_object is error"; + return false; + } + m_show_text_normal_error = false; auto mouse_position_world = m_text_position_in_world.cast(); auto mouse_normal_world = m_text_normal_in_world.cast(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp index 081838fac1..8953cc09ac 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoText.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoText.hpp @@ -69,6 +69,7 @@ class GLGizmoText : public GLGizmoBase bool m_is_modify = false; bool m_need_update_text = false; bool m_show_warning = false; + bool m_show_text_normal_error = false; int m_object_idx = -1; int m_volume_idx = -1; diff --git a/src/slic3r/GUI/IMSlider.cpp b/src/slic3r/GUI/IMSlider.cpp index 7299c4e550..4607a03c82 100644 --- a/src/slic3r/GUI/IMSlider.cpp +++ b/src/slic3r/GUI/IMSlider.cpp @@ -1223,7 +1223,7 @@ void IMSlider::render_go_to_layer_dialog() | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse; - if (ImGui::BeginPopupModal((_u8L("Jump to layer")).c_str(), NULL, windows_flag)) + if (ImGui::BeginPopupModal((_u8L("Jump to Layer")).c_str(), NULL, windows_flag)) { imgui.text(_u8L("Please enter the layer number") + " (" + std::to_string(m_min_value + 1) + " - " + std::to_string(m_max_value + 1) + "):"); if (ImGui::IsMouseClicked(0)) { diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index c88a86b46c..cd1e78ea79 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -471,8 +471,11 @@ void ArrangeJob::prepare_outside_plate() { iter1 = all_inside_objects.find(std::pair(obj_idx, inst_idx)); iter2 = all_outside_objects.find(std::pair(obj_idx, inst_idx)); bool outside_plate = false; - if ((iter2 != all_outside_objects.end()) - || (iter1 == all_inside_objects.end())) { + if (iter1 == all_inside_objects.end()) { + //skip + continue; + } + if (iter2 != all_outside_objects.end()) { outside_plate = true; } ArrangePolygon&& ap = prepare_arrange_polygon(instance); diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 84ff6fd174..83d77b166c 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -448,7 +448,6 @@ bool MonitorPanel::Show(bool show) #ifdef __APPLE__ wxGetApp().mainframe->SetMinSize(wxGetApp().plater()->GetMinSize()); #endif - NetworkAgent* m_agent = wxGetApp().getAgent(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (show) { @@ -475,6 +474,13 @@ bool MonitorPanel::Show(bool show) stop_update(); m_refresh_timer->Stop(); } + + if (obj && !obj->dev_id.empty()) { + select_machine(obj->dev_id); + } else { + select_machine(""); + } + return wxPanel::Show(show); } diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 17bb6eb174..f2264385f5 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -2684,6 +2684,25 @@ void NotificationManager::bbl_close_gcode_overlap_notification() if (notification->get_type() == NotificationType::BBLGcodeOverlap) { notification->close(); } } +void NotificationManager::bbl_show_bed_filament_incompatible_notification(const std::string& text) +{ + auto callback = [](wxEvtHandler*) { + std::string language = wxGetApp().app_config->get("language"); + wxString region = L"en"; + if (language.find("zh") == 0) + region = L"zh"; + const wxString bed_filament_compatibility_wiki = wxString::Format(L"https://wiki.bambulab.com/%s/PLA/PETG-with-bambu-bool-plate-supertack", region); + wxGetApp().open_browser_with_warning_dialog(bed_filament_compatibility_wiki); + return false; + }; + push_notification_data({ NotificationType::BBLBedFilamentIncompatible,NotificationLevel::ErrorNotificationLevel,0,_u8L("Error:") + "\n" + text,_u8L("Click Wiki for help."),callback }, 0); +} + +void NotificationManager::bbl_close_bed_filament_incompatible_notification() +{ + close_notification_of_type(NotificationType::BBLBedFilamentIncompatible); +} + void NotificationManager::bbl_show_sole_text_notification(NotificationType sType, const std::string &text, bool bOverride, int level, bool autohide) { NotificationLevel nlevel; diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 73b8354534..beee3a4afa 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -145,6 +145,7 @@ enum class NotificationType BBLPreviewOnlyMode, BBLPrinterConfigUpdateAvailable, BBLUserPresetExceedLimit, + BBLBedFilamentIncompatible }; class NotificationManager @@ -330,6 +331,10 @@ class NotificationManager void bbl_show_gcode_overlap_notification(); void bbl_close_gcode_overlap_notification(); + //BBS--bed filament match + void bbl_show_bed_filament_incompatible_notification(const std::string& text); + void bbl_close_bed_filament_incompatible_notification(); + //BBS--sole notification void bbl_show_sole_text_notification(NotificationType sType,const std::string &text, bool bOverride, int level, bool autohide); void bbl_chose_sole_text_notification(NotificationType sType); diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index 3642412c92..52ba1902b5 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2137,7 +2137,6 @@ void PartPlate::set_logo_box_by_bed(const BoundingBoxf3& box) BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":error :Unable to create logo triangles in set_logo_box_by_bed\n"; return; } - m_partplate_list->m_logo_texture.reset(); } } @@ -5570,18 +5569,23 @@ void PartPlateList::BedTextureInfo::reset() void PartPlateList::init_bed_type_info() { - BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); - BedTextureInfo::TexturePart pc_part2(74, -10, 148, 12, "bbl_bed_pc_bottom.svg"); - BedTextureInfo::TexturePart ep_part1(7.5, 90, 12.5, 150, "bbl_bed_ep_left.svg"); - BedTextureInfo::TexturePart ep_part2(74, -10, 148, 12, "bbl_bed_ep_bottom.svg"); - BedTextureInfo::TexturePart pei_part1(7.5, 50, 12.5, 190, "bbl_bed_pei_left.svg"); - BedTextureInfo::TexturePart pei_part2(74, -10, 148, 12, "bbl_bed_pei_bottom.svg"); - BedTextureInfo::TexturePart pte_part1(10, 80, 10, 160, "bbl_bed_pte_left.svg"); - BedTextureInfo::TexturePart pte_part2(74, -10, 148, 12, "bbl_bed_pte_bottom.svg"); + BedTextureInfo::TexturePart st_part1(10, 52, 8.393f, 192, "bbl_bed_st_left.svg"); + BedTextureInfo::TexturePart st_part2(74, -10, 148, 12, "bbl_bed_st_bottom.svg"); + BedTextureInfo::TexturePart pc_part1(10, 52, 8.393f, 192, "bbl_bed_pc_left.svg"); + BedTextureInfo::TexturePart pc_part2(74, -10, 148, 12, "bbl_bed_pc_bottom.svg"); + BedTextureInfo::TexturePart ep_part1(10, 52, 8.393f, 192, "bbl_bed_ep_left.svg"); + BedTextureInfo::TexturePart ep_part2(74, -10, 148, 12, "bbl_bed_ep_bottom.svg"); + BedTextureInfo::TexturePart pei_part1(10, 52, 8.393f, 192, "bbl_bed_pei_left.svg"); + BedTextureInfo::TexturePart pei_part2(74, -10, 148, 12, "bbl_bed_pei_bottom.svg"); + BedTextureInfo::TexturePart pte_part1(10, 52, 8.393f, 192, "bbl_bed_pte_left.svg"); + BedTextureInfo::TexturePart pte_part2(74, -10, 148, 12, "bbl_bed_pte_bottom.svg"); + for (size_t i = 0; i < btCount; i++) { bed_texture_info[i].reset(); bed_texture_info[i].parts.clear(); } + bed_texture_info[btSuperTack].parts.push_back(st_part1); + bed_texture_info[btSuperTack].parts.push_back(st_part2); bed_texture_info[btPC].parts.push_back(pc_part1); bed_texture_info[btPC].parts.push_back(pc_part2); bed_texture_info[btEP].parts.push_back(ep_part1); @@ -5600,8 +5604,13 @@ void PartPlateList::init_bed_type_info() float y_rate = bed_height / base_height; for (int i = 0; i < btCount; i++) { for (int j = 0; j < bed_texture_info[i].parts.size(); j++) { - bed_texture_info[i].parts[j].x *= x_rate; - bed_texture_info[i].parts[j].y *= y_rate; + if (j == 0 && (bed_width == 180 && bed_height == 180)) { + bed_texture_info[i].parts[j].x = 10; + bed_texture_info[i].parts[j].y = 35; + } else { + bed_texture_info[i].parts[j].x *= x_rate; + bed_texture_info[i].parts[j].y *= y_rate; + } bed_texture_info[i].parts[j].w *= x_rate; bed_texture_info[i].parts[j].h *= y_rate; bed_texture_info[i].parts[j].update_buffer(); diff --git a/src/slic3r/GUI/PartPlate.hpp b/src/slic3r/GUI/PartPlate.hpp index cc19330e5d..675e438c37 100644 --- a/src/slic3r/GUI/PartPlate.hpp +++ b/src/slic3r/GUI/PartPlate.hpp @@ -417,7 +417,9 @@ class PartPlate : public ObjectBase { bool result = m_slice_result_valid; if (result) - result = m_gcode_result ? (!m_gcode_result->toolpath_outside) : false;// && !m_gcode_result->conflict_result.has_value() gcode conflict can also print + result = m_gcode_result ? + (!m_gcode_result->toolpath_outside && !m_gcode_result->filament_printable_reuslt.has_value()) : + false;// && !m_gcode_result->conflict_result.has_value() gcode conflict can also print return result; } diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 363be831de..5eb70f0754 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1626,7 +1626,7 @@ void Sidebar::add_filament() { void Sidebar::delete_filament() { if (p->combos_filament.size() <= 1) return; - + wxBusyCursor busy; size_t filament_count = p->combos_filament.size() - 1; if (wxGetApp().preset_bundle->is_the_only_edited_filament(filament_count) || (filament_count == 1)) { wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0], false, "", true); @@ -1725,6 +1725,11 @@ void Sidebar::load_ams_list(std::string const &device, MachineObject* obj) void Sidebar::sync_ams_list() { + // Force load ams list + auto obj = wxGetApp().getDeviceManager()->get_selected_machine(); + if (obj) + GUI::wxGetApp().sidebar().load_ams_list(obj->dev_id, obj); + auto & list = wxGetApp().preset_bundle->filament_ams_list; if (list.empty()) { MessageDialog dlg(this, @@ -2742,7 +2747,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) //BBS: add bed_exclude_area , config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({ "printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence", - "extruder_clearance_radius", "extruder_clearance_max_radius", + "extruder_clearance_dist_to_rod", "extruder_clearance_max_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "nozzle_height", "skirt_loops", "skirt_distance", "brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material", @@ -4016,20 +4021,44 @@ std::vector Plater::priv::load_files(const std::vector& input_ filament_ids.clear(); } }; - auto step_mesh = [this, &path, &is_user_cancel](Slic3r::Step& file, double& linear_value, double& angle_value)-> int { - if (boost::iends_with(path.string(), ".step") || - boost::iends_with(path.string(), ".stp")){ - StepMeshDialog mesh_dlg(nullptr, file); - if (mesh_dlg.ShowModal() == wxID_OK) { - linear_value = mesh_dlg.get_linear_defletion(); - angle_value = mesh_dlg.get_angle_defletion(); - return 1; - } - } - is_user_cancel = true; - return -1; - }; - model = Slic3r::Model:: read_from_file( + if (boost::algorithm::iends_with(path.string(), ".stp") || + boost::algorithm::iends_with(path.string(), ".step")) { + double linear = std::stod(wxGetApp().app_config->get("linear_defletion")); + double angle = std::stod(wxGetApp().app_config->get("angle_defletion")); + model = Slic3r::Model:: read_from_step(path.string(), strategy, + [this, &dlg, real_filename, &progress_percent, &file_percent, step_percent, INPUT_FILES_RATIO, total_files, i](int load_stage, int current, int total, bool &cancel) + { + bool cont = true; + float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)step_percent[load_stage] + (float)current * (float)(step_percent[load_stage + 1] - step_percent[load_stage]) / (float)total) / (float)total_files; + BOOST_LOG_TRIVIAL(trace) << "load_step_file: percent(float)=" << percent_float << ", stage = " << load_stage << ", curr = " << current << ", total = " << total; + progress_percent = (int)percent_float; + wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); + cont = dlg.Update(progress_percent, msg); + cancel = !cont; + }, + [](int isUtf8StepFile) { + if (!isUtf8StepFile) + Slic3r::GUI::show_info(nullptr, _L("Name of components inside step file is not UTF8 format!") + "\n\n" + _L("The name may show garbage characters!"), + _L("Attention!")); + }, + [this, &path, &is_user_cancel, &linear, &angle](Slic3r::Step& file, double& linear_value, double& angle_value)-> int { + if (wxGetApp().app_config->get_bool("enable_step_mesh_setting")) { + StepMeshDialog mesh_dlg(nullptr, file); + if (mesh_dlg.ShowModal() == wxID_OK) { + linear_value = mesh_dlg.get_linear_defletion(); + angle_value = mesh_dlg.get_angle_defletion(); + return 1; + } + }else { + linear_value = linear; + angle_value = angle; + return 1; + } + is_user_cancel = true; + return -1; + }, linear, angle); + }else { + model = Slic3r::Model:: read_from_file( path.string(), nullptr, nullptr, strategy, &plate_data, &project_presets, &is_xxx, &file_version, nullptr, [this, &dlg, real_filename, &progress_percent, &file_percent, INPUT_FILES_RATIO, total_files, i, &designer_model_id, &designer_country_code, &makerlab_region, &makerlab_name, &makerlab_id](int current, int total, bool &cancel, std::string &mode_id, std::string &code, std::string &ml_region, std::string &ml_name, std::string &ml_id) @@ -4047,24 +4076,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); cont = dlg.Update(progress_percent, msg); cancel = !cont; - }, - [this, &dlg, real_filename, &progress_percent, &file_percent, step_percent, INPUT_FILES_RATIO, total_files, i](int load_stage, int current, int total, bool &cancel) - { - bool cont = true; - float percent_float = (100.0f * (float)i / (float)total_files) + INPUT_FILES_RATIO * ((float)step_percent[load_stage] + (float)current * (float)(step_percent[load_stage + 1] - step_percent[load_stage]) / (float)total) / (float)total_files; - BOOST_LOG_TRIVIAL(trace) << "load_step_file: percent(float)=" << percent_float << ", stage = " << load_stage << ", curr = " << current << ", total = " << total; - progress_percent = (int)percent_float; - wxString msg = wxString::Format(_L("Loading file: %s"), from_path(real_filename)); - cont = dlg.Update(progress_percent, msg); - cancel = !cont; }, - [](int isUtf8StepFile) { - if (!isUtf8StepFile) - Slic3r::GUI::show_info(nullptr, _L("Name of components inside step file is not UTF8 format!") + "\n\n" + _L("The name may show garbage characters!"), - _L("Attention!")); - }, - nullptr, 0, obj_color_fun, step_mesh); - + nullptr, 0, obj_color_fun); + } if (designer_model_id.empty() && boost::algorithm::iends_with(path.string(), ".stl")) { read_binary_stl(path.string(), designer_model_id, designer_country_code, makerlab_name, makerlab_region, makerlab_id); @@ -5833,7 +5847,7 @@ void Plater::priv::reload_from_disk() // BBS: backup new_model = Model::read_from_file(path, nullptr, nullptr, LoadStrategy::AddDefaultInstances | LoadStrategy::LoadModel, &plate_data, &project_presets, nullptr, - nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, 0, obj_color_fun); + nullptr, nullptr, nullptr, nullptr, 0, obj_color_fun); for (ModelObject* model_object : new_model.objects) { model_object->center_around_origin(); @@ -6471,16 +6485,57 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) Vec3d old_plate_size = old_plate->get_plate_box().size(); // BBS: Save the model in the current platelist - std::vector > plate_object; + std::vector> plate_object; + std::set all_plate_object; for (size_t i = 0; i < old_plate_list.get_plate_count(); ++i) { PartPlate* plate = old_plate_list.get_plate(i); + std::set> obj_set = plate->get_obj_and_inst_set(); + std::vector obj_idxs; - for (int obj_idx = 0; obj_idx < model.objects.size(); obj_idx++) { - if (plate && plate->contain_instance(obj_idx, 0)) { - obj_idxs.emplace_back(obj_idx); - } + for (auto& p: obj_set) { + obj_idxs.push_back(p.first); + all_plate_object.emplace(p.first); + } + plate_object.emplace_back(std::move(obj_idxs)); + } + + BoundingBoxf3 platelist_bbox = old_plate_list.get_bounding_box(); + std::map outside_plate_object; + for (int i = 0; i < model.objects.size(); ++i) + { + ModelObject* object = model.objects[i]; + ModelInstance* obj_inst = object->instances[0]; + + if (all_plate_object.find(i) == all_plate_object.end()) + { + int position_type = 0; + BoundingBoxf3 instance_bbox = object->instance_convex_hull_bounding_box(obj_inst); + /* 1 | 2 | 3 + * -------------------------------- + * 4 | 5 | 6 + * -------------------------------- + * 7 | 8 | 9 + */ + if ((platelist_bbox.min.x() >= instance_bbox.max.x()) && (platelist_bbox.max.y() <= instance_bbox.min.y())) + position_type = 1; + else if ((platelist_bbox.min.x() >= instance_bbox.max.x()) && (platelist_bbox.min.y() >= instance_bbox.max.y())) + position_type = 7; + else if (platelist_bbox.min.x() >= instance_bbox.max.x()) + position_type = 4; + else if ((platelist_bbox.max.x() <= instance_bbox.min.x()) && (platelist_bbox.max.y() <= instance_bbox.min.y())) + position_type = 3; + else if ((platelist_bbox.max.x() <= instance_bbox.min.x()) && (platelist_bbox.min.y() >= instance_bbox.max.y())) + position_type = 9; + else if (platelist_bbox.max.x() <= instance_bbox.min.x()) + position_type = 6; + else if (platelist_bbox.max.y() <= instance_bbox.min.y()) + position_type = 2; + else if (platelist_bbox.min.y() >= instance_bbox.max.y()) + position_type = 8; + else + position_type = 5; + outside_plate_object.emplace(i, position_type); } - plate_object.emplace_back(obj_idxs); } bool flag = is_support_filament(idx); @@ -6549,6 +6604,47 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) view3D->center_selected_plate(i); } + const BoundingBoxf3& cur_platelist_bbox = cur_plate_list.get_bounding_box(); + const BoundingBoxf3 last_plate_bbox = cur_plate_list.get_plate(cur_plate_list.get_plate_count() - 1)->get_bounding_box(); + int cur_plate_w, cur_plate_d, cur_plate_h; + cur_plate_list.get_plate_size(cur_plate_w, cur_plate_d, cur_plate_h); + for (auto& iter: outside_plate_object) + { + ModelObject *object = model.objects[iter.first]; + BoundingBoxf3 instance_bbox = object->instance_convex_hull_bounding_box(size_t(0), false); + Vec3d offset = Vec3d::Zero(); + switch(iter.second) { + case 1: + case 2: + offset(1) = cur_platelist_bbox.max.y() - platelist_bbox.max.y(); + break; + case 7: + case 8: + offset(1) = cur_platelist_bbox.min.y() - platelist_bbox.min.y(); + break; + case 3: + offset(0) = cur_platelist_bbox.max.x() - platelist_bbox.max.x(); + offset(1) = cur_platelist_bbox.max.y() - platelist_bbox.max.y(); + break; + case 6: + offset(0) = cur_platelist_bbox.max.x() - platelist_bbox.max.x(); + break; + case 9: + offset(0) = cur_platelist_bbox.max.x() - platelist_bbox.max.x(); + offset(1) = cur_platelist_bbox.min.y() - platelist_bbox.min.y(); + break; + case 5: + offset(0) = last_plate_bbox.center().x() + 1.2f * cur_plate_w - instance_bbox.center().x(); + offset(1) = last_plate_bbox.center().y() - instance_bbox.center().y(); + break; + default: + break; + } + + object->translate_instance(0, offset); + cur_plate_list.notify_instance_update(iter.first, 0); + } + BOOST_LOG_TRIVIAL(info) << format("change bed size from (%.0f,%.0f) to (%.0f,%.0f)", old_plate_size.x(), old_plate_size.y(), cur_plate_size.x(), cur_plate_size.y()); if (cur_plate_is_smaller && std::any_of(plate_object.begin(), plate_object.end(), [](const std::vector &obj_idxs) { return !obj_idxs.empty(); })) { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 9080246950..cce62bd20a 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -156,10 +156,19 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox( language_name = wxString::FromUTF8("\xD0\xA0\xD1\x83\xD1\x81\xD1\x81\xD0\xBA\xD0\xB8\xD0\xB9"); } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_CZECH)) { - language_name = wxString::FromUTF8("\xC4\x8D\x65\xC5\xA1\x74\x69\x6E\x61"); + if (wxGetApp().app_config->get("language") == "ja_JP") { + language_name = wxString::FromUTF8("\x43\x7A\x65\x63\x68"); + } + else{ + language_name = wxString::FromUTF8("\xC4\x8D\x65\xC5\xA1\x74\x69\x6E\x61"); + } } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_UKRAINIAN)) { - language_name = wxString::FromUTF8("\xD0\xA3\xD0\xBA\xD1\x80\xD0\xB0\xD1\x97\xD0\xBD\xD1\x81\xD1\x8C\xD0\xBA\xD0\xB0"); + if (wxGetApp().app_config->get("language") == "ja_JP") { + language_name = wxString::FromUTF8("\x55\x6B\x72\x61\x69\x6E\x69\x61\x6E"); + } else { + language_name = wxString::FromUTF8("\xD0\xA3\xD0\xBA\xD1\x80\xD0\xB0\xD1\x97\xD0\xBD\xD1\x81\xD1\x8C\xD0\xBA\xD0\xB0"); + } } else if (vlist[i] == wxLocale::GetLanguageInfo(wxLANGUAGE_PORTUGUESE_BRAZILIAN)) { language_name = wxString::FromUTF8("\x50\x6F\x72\x74\x75\x67\x75\xC3\xAA\x73\x20\x28\x42\x72\x61\x73\x69\x6C\x29"); @@ -806,6 +815,15 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa } } + if (param == "show_print_history") { + auto show_history = app_config->get_bool("show_print_history"); + if (show_history == true) { + if (wxGetApp().mainframe && wxGetApp().mainframe->m_webview) { wxGetApp().mainframe->m_webview->ShowUserPrintTask(true); } + } else { + if (wxGetApp().mainframe && wxGetApp().mainframe->m_webview) { wxGetApp().mainframe->m_webview->ShowUserPrintTask(false); } + } + } + if (param == "enable_lod") { if (wxGetApp().plater()->is_project_dirty()) { auto result = MessageDialog(static_cast(this), _L("The current project has unsaved changes, save it before continuing?"), @@ -1126,6 +1144,7 @@ wxWindow* PreferencesDialog::create_general_page() auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate every time when the color is changed."), page, _L("If enabled, auto-calculate every time when the color is changed."), 50, "auto_calculate"); auto item_calc_in_long_retract = create_item_checkbox(_L("Flushing volumes: Auto-calculate every time when the filament is changed."), page, _L("If enabled, auto-calculate every time when filament is changed"), 50, "auto_calculate_when_filament_change"); auto item_multi_machine = create_item_checkbox(_L("Multi-device Management(Take effect after restarting Studio)."), page, _L("With this option enabled, you can send a task to multiple devices at the same time and manage multiple devices."), 50, "enable_multi_machine"); + auto item_step_mesh_setting = create_item_checkbox(_L("Show the step mesh parameter setting dialog."), page, _L("If enabled,a parameter settings dialog will appear during STEP file import."), 50, "enable_step_mesh_setting"); auto item_beta_version_update = create_item_checkbox(_L("Support beta version update."), page, _L("With this option enabled, you can receive beta version updates."), 50, "enable_beta_version_update"); auto _3d_settings = create_item_title(_L("3D Settings"), page, _L("3D Settings")); auto item_mouse_zoom_settings = create_item_checkbox(_L("Zoom to mouse position"), page, @@ -1171,6 +1190,7 @@ wxWindow* PreferencesDialog::create_general_page() // auto item_backup = create_item_switch(_L("Backup switch"), page, _L("Backup switch"), "units"); auto item_modelmall = create_item_checkbox(_L("Show online staff-picked models on the home page"), page, _L("Show online staff-picked models on the home page"), 50, "staff_pick_switch"); + auto item_show_history = create_item_checkbox(_L("Show history on the home page"), page, _L("Show history on the home page"), 50, "show_print_history"); auto title_project = create_item_title(_L("Project"), page, ""); auto item_max_recent_count = create_item_input(_L("Maximum recent projects"), "", page, _L("Maximum count of recent projects"), "max_recent_count", [](wxString value) { long max = 0; @@ -1216,6 +1236,7 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_calc_in_long_retract, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_multi_machine, 0, wxTOP, FromDIP(3)); + sizer_page->Add(item_step_mesh_setting, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_beta_version_update, 0, wxTOP, FromDIP(3)); sizer_page->Add(_3d_settings, 0, wxTOP | wxEXPAND, FromDIP(20)); sizer_page->Add(item_mouse_zoom_settings, 0, wxTOP, FromDIP(3)); @@ -1232,12 +1253,15 @@ wxWindow* PreferencesDialog::create_general_page() sizer_page->Add(item_associate_stl, 0, wxTOP, FromDIP(3)); sizer_page->Add(item_associate_step, 0, wxTOP, FromDIP(3)); #endif // _WIN32 - auto item_title_modelmall = sizer_page->Add(title_modelmall, 0, wxTOP | wxEXPAND, FromDIP(20)); - auto item_item_modelmall = sizer_page->Add(item_modelmall, 0, wxTOP, FromDIP(3)); - auto update_modelmall = [this, item_title_modelmall, item_item_modelmall] (wxEvent & e) { + auto item_title_modelmall = sizer_page->Add(title_modelmall, 0, wxTOP | wxEXPAND, FromDIP(20)); + auto item_item_modelmall = sizer_page->Add(item_modelmall, 0, wxTOP, FromDIP(3)); + auto item_item_show_history = sizer_page->Add(item_show_history, 0, wxTOP, FromDIP(3)); + + auto update_modelmall = [this, item_title_modelmall, item_item_modelmall, item_item_show_history](wxEvent &e) { bool has_model_mall = wxGetApp().has_model_mall(); item_title_modelmall->Show(has_model_mall); item_item_modelmall->Show(has_model_mall); + item_item_show_history->Show(has_model_mall); Layout(); Fit(); }; diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index a61f0df7d0..a54be18518 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -959,7 +959,8 @@ void PlaterPresetComboBox::update() std::map project_embedded_presets; std::map system_presets; std::map preset_descriptions; - std::map preset_filament_types; + std::map preset_filament_vendors; + std::map preset_filament_types; //BBS: move system to the end wxString selected_system_preset; @@ -996,6 +997,7 @@ void PlaterPresetComboBox::update() bitmap_key += single_bar ? filament_rgb : filament_rgb + extruder_rgb; #endif + preset_filament_vendors[name] = preset.config.option("filament_vendor")->values.at(0); preset_filament_types[name] = preset.config.option("filament_type")->values.at(0); } @@ -1043,20 +1045,37 @@ void PlaterPresetComboBox::update() if (m_type == Preset::TYPE_FILAMENT) add_ams_filaments(into_u8(selected_user_preset.empty() ? selected_system_preset : selected_user_preset), true); - std::vector first_types = { "PLA", "PETG" }; - auto add_presets = [this, &preset_descriptions, &preset_filament_types, &first_types] + std::vector filament_orders = {"Bambu PLA Basic", "Bambu PLA Matte", "Bambu PETG HF", "Bambu ABS", "Bambu PLA Silk", "Bambu PLA-CF", + "Bambu PLA Galaxy", "Bambu PLA Metal", "Bambu PLA Marble", "Bambu PETG-CF", "Bambu PETG Translucent", "Bambu ABS-GF"}; + std::vector first_vendors = {"Bambu Lab", "Generic"}; + std::vector first_types = {"PLA", "PETG", "ABS", "TPU"}; + auto add_presets = [this, &preset_descriptions, &filament_orders, &preset_filament_vendors, &first_vendors, &preset_filament_types, &first_types] (std::map const &presets, wxString const &selected, std::string const &group) { if (!presets.empty()) { set_label_marker(Append(separator(group), wxNullBitmap)); if (m_type == Preset::TYPE_FILAMENT) { std::vector::value_type const*> list(presets.size(), nullptr); std::transform(presets.begin(), presets.end(), list.begin(), [](auto & pair) { return &pair; }); - std::sort(list.begin(), list.end(), [&preset_filament_types, &first_types](auto *l, auto *r) { - auto iter1 = std::find(first_types.begin(), first_types.end(), preset_filament_types[l->first]); - auto iter2 = std::find(first_types.begin(), first_types.end(), preset_filament_types[r->first]); - if (iter1 == iter2) - return l->first < r->first; - return iter1 < iter2; + std::sort(list.begin(), list.end(), [&filament_orders, &preset_filament_vendors, &first_vendors, &preset_filament_types, &first_types](auto *l, auto *r) { + { // Compare order + auto iter1 = std::find(filament_orders.begin(), filament_orders.end(), l->first); + auto iter2 = std::find(filament_orders.begin(), filament_orders.end(), r->first); + if (iter1 != iter2) + return iter1 < iter2; + } + { // Compare vendor + auto iter1 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[l->first]); + auto iter2 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[r->first]); + if (iter1 != iter2) + return iter1 < iter2; + } + { // Compare type + auto iter1 = std::find(first_types.begin(), first_types.end(), preset_filament_types[l->first]); + auto iter2 = std::find(first_types.begin(), first_types.end(), preset_filament_types[r->first]); + if (iter1 != iter2) + return iter1 < iter2; + } + return l->first < r->first; }); for (auto it : list) { SetItemTooltip(Append(it->first, *it->second), preset_descriptions[it->first]); diff --git a/src/slic3r/GUI/PrintOptionsDialog.cpp b/src/slic3r/GUI/PrintOptionsDialog.cpp index 0461fdb56c..f28cf578ac 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.cpp +++ b/src/slic3r/GUI/PrintOptionsDialog.cpp @@ -441,6 +441,8 @@ PrinterPartsDialog::PrinterPartsDialog(wxWindow* parent) { nozzle_type_map[0] = "hardened_steel"; nozzle_type_map[1] = "stainless_steel"; + nozzle_type_map_tr[0] = _L("Hardened Steel"); + nozzle_type_map_tr[1] = _L("Stainless Steel"); nozzle_stainless_diameter_map[0] = 0.2; nozzle_stainless_diameter_map[1] = 0.4; @@ -467,8 +469,8 @@ PrinterPartsDialog::PrinterPartsDialog(wxWindow* parent) nozzle_type->Wrap(-1); nozzle_type_checkbox = new ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(140), -1), 0, NULL, wxCB_READONLY); - nozzle_type_checkbox->Append(_L("Stainless Steel")); - nozzle_type_checkbox->Append(_L("Hardened Steel")); + nozzle_type_checkbox->Append(nozzle_type_map_tr[0]); + nozzle_type_checkbox->Append(nozzle_type_map_tr[1]); nozzle_type_checkbox->SetSelection(0); @@ -605,7 +607,7 @@ bool PrinterPartsDialog::Show(bool show) for (int i=0; i < nozzle_type_map.size(); i++) { - nozzle_type_checkbox->Append( nozzle_type_map[i] ); + nozzle_type_checkbox->Append(nozzle_type_map_tr[i]); if (nozzle_type_map[i] == type) { nozzle_type_checkbox->SetSelection(i); } diff --git a/src/slic3r/GUI/PrintOptionsDialog.hpp b/src/slic3r/GUI/PrintOptionsDialog.hpp index db55d12dcc..38f22ac6cb 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.hpp +++ b/src/slic3r/GUI/PrintOptionsDialog.hpp @@ -26,6 +26,7 @@ class PrinterPartsDialog : public DPIDialog ComboBox* nozzle_diameter_checkbox; std::string last_nozzle_type; std::map nozzle_type_map; + std::map nozzle_type_map_tr; std::map nozzle_stainless_diameter_map; std::map nozzle_hard_diameter_map; public: diff --git a/src/slic3r/GUI/Project.cpp b/src/slic3r/GUI/Project.cpp index e7273e2ee3..c99c9de9ef 100644 --- a/src/slic3r/GUI/Project.cpp +++ b/src/slic3r/GUI/Project.cpp @@ -29,6 +29,8 @@ #include "MainFrame.hpp" #include +#include + namespace Slic3r { namespace GUI { wxDEFINE_EVENT(EVT_PROJECT_RELOAD, wxCommandEvent); @@ -61,7 +63,7 @@ ProjectPanel::ProjectPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, m_browser->Bind(wxEVT_WEBVIEW_NAVIGATED, &ProjectPanel::on_navigated, this); m_browser->Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &ProjectPanel::OnScriptMessage, this, m_browser->GetId()); Bind(wxEVT_WEBVIEW_NAVIGATING, &ProjectPanel::onWebNavigating, this, m_browser->GetId()); - + Bind(wxEVT_WEBVIEW_NEWWINDOW, &ProjectPanel::OnNewWindow, this); Bind(EVT_PROJECT_RELOAD, &ProjectPanel::on_reload, this); SetSizer(main_sizer); @@ -71,6 +73,42 @@ ProjectPanel::ProjectPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, ProjectPanel::~ProjectPanel() {} +std::string trim(const std::string &str, const std::string &charsToTrim) +{ + std::regex pattern("^[" + charsToTrim + "]+|[" + charsToTrim + "]+$"); + return std::regex_replace(str, pattern, ""); +} + +/** + * On new window, we veto to stop extra windows appearing + */ +void ProjectPanel::OnNewWindow(wxWebViewEvent &evt) +{ + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); + wxString flag = " (other)"; + + if (evt.GetNavigationAction() == wxWEBVIEW_NAV_ACTION_USER) { flag = " (user)"; } + + if (wxGetApp().get_mode() == comDevelop) + wxLogMessage("%s", "New window; url='" + evt.GetURL() + "'" + flag); + + // If we handle new window events then just load them in local browser + wxString tmpUrl = evt.GetURL(); + + if (tmpUrl.StartsWith("File://") || tmpUrl.StartsWith("file://")) + { + std::regex pattern("%22http.+%22"); + std::smatch matches; + std::string UrlTmp = tmpUrl.ToStdString(); + if (std::regex_search(UrlTmp, matches, pattern)) { tmpUrl = trim(matches[0].str(), "%22"); } + } + + if (boost::starts_with(tmpUrl, "http://") || boost::starts_with(tmpUrl, "https://")) { + m_browser->Stop(); + evt.Veto(); + wxLaunchDefaultApplication(tmpUrl); + } +} void ProjectPanel::onWebNavigating(wxWebViewEvent& evt) { @@ -109,8 +147,6 @@ void ProjectPanel::on_reload(wxCommandEvent& evt) description = model.model_info->description; update_type = model.model_info->origin; - - if (model.design_info && !model.design_info->DesignerId.empty()) { if (m_model_id_map.count(model.design_info->DesignerId) > 0) { @@ -121,7 +157,6 @@ void ProjectPanel::on_reload(wxCommandEvent& evt) m_model_id_map[model.design_info->DesignerId] = model_id; } } - try { if (!model.model_info->copyright.empty()) { @@ -277,8 +312,6 @@ void ProjectPanel::OnScriptMessage(wxWebViewEvent& evt) } } } - - } else if (strCmd == "debug_info") { //wxString msg = j["msg"]; diff --git a/src/slic3r/GUI/Project.hpp b/src/slic3r/GUI/Project.hpp index ab9f96ad2e..6e594b7be2 100644 --- a/src/slic3r/GUI/Project.hpp +++ b/src/slic3r/GUI/Project.hpp @@ -67,7 +67,6 @@ class ProjectPanel : public wxPanel wxString m_root_dir; std::map m_model_id_map; static inline int m_sequence_id = 8000; - public: ProjectPanel(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxTAB_TRAVERSAL); @@ -78,7 +77,8 @@ class ProjectPanel : public wxPanel void on_reload(wxCommandEvent& evt); void on_size(wxSizeEvent& event); void on_navigated(wxWebViewEvent& event); - + void OnNewWindow(wxWebViewEvent &evt); + void msw_rescale(); void update_model_data(); void clear_model_info(); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 600f4b8b9e..1b036609e3 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -33,11 +33,13 @@ wxDEFINE_EVENT(EVT_CHECKBOX_CHANGE, wxCommandEvent); wxDEFINE_EVENT(EVT_ENTER_IP_ADDRESS, wxCommandEvent); wxDEFINE_EVENT(EVT_CLOSE_IPADDRESS_DLG, wxCommandEvent); wxDEFINE_EVENT(EVT_CHECK_IP_ADDRESS_FAILED, wxCommandEvent); +wxDEFINE_EVENT(EVT_CHECK_IP_ADDRESS_LAYOUT, wxCommandEvent); wxDEFINE_EVENT(EVT_SECONDARY_CHECK_RETRY, wxCommandEvent); wxDEFINE_EVENT(EVT_PRINT_ERROR_STOP, wxCommandEvent); wxDEFINE_EVENT(EVT_UPDATE_NOZZLE, wxCommandEvent); wxDEFINE_EVENT(EVT_JUMP_TO_HMS, wxCommandEvent); wxDEFINE_EVENT(EVT_JUMP_TO_LIVEVIEW, wxCommandEvent); +wxDEFINE_EVENT(EVT_UPDATE_TEXT_MSG, wxCommandEvent); ReleaseNoteDialog::ReleaseNoteDialog(Plater *plater /*= nullptr*/) : DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Release Note"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) @@ -989,7 +991,7 @@ void PrintErrorDialog::update_text_image(const wxString& text, const wxString& e m_vebview_release_note->SetMinSize(wxSize(FromDIP(320), text_size.y + FromDIP(220))); } else { - m_vebview_release_note->SetMinSize(wxSize(FromDIP(320), text_size.y + FromDIP(25))); + m_vebview_release_note->SetMinSize(wxSize(FromDIP(320), text_size.y + FromDIP(50))); } else { m_vebview_release_note->SetMinSize(wxSize(FromDIP(320), FromDIP(340))); @@ -1436,55 +1438,71 @@ void ConfirmBeforeSendDialog::rescale() m_button_cancel->Rescale(); } -InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) - :DPIDialog(static_cast(wxGetApp().mainframe), wxID_ANY, _L("Connect the printer using IP and access code"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX) +InputIpAddressDialog::InputIpAddressDialog(wxWindow *parent) + : DPIDialog(static_cast(wxGetApp().mainframe), + wxID_ANY, + _L("Connect the printer using IP and access code"), + wxDefaultPosition, + wxDefaultSize, + wxCAPTION | wxCLOSE_BOX) { std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); SetBackgroundColour(*wxWHITE); - m_result = -1; - wxBoxSizer* m_sizer_body = new wxBoxSizer(wxVERTICAL); - wxBoxSizer* m_sizer_main = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer* m_sizer_main_left = new wxBoxSizer(wxVERTICAL); - wxBoxSizer* m_sizer_main_right = new wxBoxSizer(wxVERTICAL); - wxBoxSizer* m_sizer_msg = new wxBoxSizer(wxHORIZONTAL); - auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); + m_result = -1; + wxBoxSizer *m_sizer_body = new wxBoxSizer(wxVERTICAL); + wxBoxSizer *m_sizer_main = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *m_sizer_main_left = new wxBoxSizer(wxVERTICAL); + wxBoxSizer *m_sizer_main_right = new wxBoxSizer(wxVERTICAL); + wxBoxSizer *m_sizer_msg = new wxBoxSizer(wxHORIZONTAL); + auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); m_line_top->SetBackgroundColour(wxColour(166, 169, 170)); - comfirm_before_enter_text = _L("Step 1, please confirm Bambu Studio and your printer are in the same LAN."); - comfirm_after_enter_text = _L("Step 2, if the IP and Access Code below are different from the actual values on your printer, please correct them."); - + comfirm_before_enter_text = _L("Step 1. Please confirm Bambu Studio and your printer are in the same LAN."); + comfirm_after_enter_text = _L("Step 2. If the IP and Access Code below are different from the actual values on your printer, please correct them."); + comfirm_last_enter_text = _L("Step 3. Please obtain the device SN from the printer side; it is usually found in the device information on the printer screen."); m_tip1 = new Label(this, ::Label::Body_13, comfirm_before_enter_text, LB_AUTO_WRAP); m_tip1->SetMinSize(wxSize(FromDIP(352), -1)); m_tip1->SetMaxSize(wxSize(FromDIP(352), -1)); m_tip1->Wrap(FromDIP(352)); - auto m_line_tips = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); - m_line_tips->SetBackgroundColour(wxColour(0xEEEEEE)); - m_tip2 = new Label(this, ::Label::Body_13, comfirm_after_enter_text, LB_AUTO_WRAP); m_tip2->SetMinSize(wxSize(FromDIP(352), -1)); m_tip2->SetMaxSize(wxSize(FromDIP(352), -1)); + m_tip3 = new Label(this, ::Label::Body_13, comfirm_last_enter_text, LB_AUTO_WRAP); + m_tip3->SetMinSize(wxSize(FromDIP(352), -1)); + m_tip3->SetMaxSize(wxSize(FromDIP(352), -1)); + + ip_input_top_panel = new wxPanel(this); + ip_input_bot_panel = new wxPanel(this); + + ip_input_top_panel->SetBackgroundColour(*wxWHITE); + ip_input_bot_panel->SetBackgroundColour(*wxWHITE); + + auto m_input_top_sizer = new wxBoxSizer(wxVERTICAL); + auto m_input_bot_sizer = new wxBoxSizer(wxVERTICAL); + + /*top input*/ auto m_input_tip_area = new wxBoxSizer(wxHORIZONTAL); - auto m_input_area = new wxBoxSizer(wxHORIZONTAL); + auto m_input_area = new wxBoxSizer(wxHORIZONTAL); - m_tips_ip = new Label(this, "IP"); + m_tips_ip = new Label(ip_input_top_panel, "IP"); m_tips_ip->SetMinSize(wxSize(FromDIP(168), -1)); m_tips_ip->SetMaxSize(wxSize(FromDIP(168), -1)); - m_input_ip = new TextInput(this, wxEmptyString, wxEmptyString); + m_input_ip = new TextInput(ip_input_top_panel, wxEmptyString, wxEmptyString); m_input_ip->Bind(wxEVT_TEXT, &InputIpAddressDialog::on_text, this); m_input_ip->SetMinSize(wxSize(FromDIP(168), FromDIP(28))); m_input_ip->SetMaxSize(wxSize(FromDIP(168), FromDIP(28))); - m_tips_access_code = new Label(this, _L("Access Code")); - m_tips_access_code->SetMinSize(wxSize(FromDIP(168),-1)); - m_tips_access_code->SetMaxSize(wxSize(FromDIP(168),-1)); + m_tips_access_code = new Label(ip_input_top_panel, _L("Access Code")); + m_tips_access_code->SetMinSize(wxSize(FromDIP(168), -1)); + m_tips_access_code->SetMaxSize(wxSize(FromDIP(168), -1)); - m_input_access_code = new TextInput(this, wxEmptyString, wxEmptyString); + m_input_access_code = new TextInput(ip_input_top_panel, wxEmptyString, wxEmptyString); m_input_access_code->Bind(wxEVT_TEXT, &InputIpAddressDialog::on_text, this); m_input_access_code->SetMinSize(wxSize(FromDIP(168), FromDIP(28))); m_input_access_code->SetMaxSize(wxSize(FromDIP(168), FromDIP(28))); @@ -1492,40 +1510,87 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) m_input_tip_area->Add(m_tips_ip, 0, wxALIGN_CENTER, 0); m_input_tip_area->Add(0, 0, 0, wxLEFT, FromDIP(16)); m_input_tip_area->Add(m_tips_access_code, 0, wxALIGN_CENTER, 0); - + m_input_area->Add(m_input_ip, 0, wxALIGN_CENTER, 0); m_input_area->Add(0, 0, 0, wxLEFT, FromDIP(16)); m_input_area->Add(m_input_access_code, 0, wxALIGN_CENTER, 0); + m_input_top_sizer->Add(m_input_tip_area, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + m_input_top_sizer->Add(0, 0, 0, wxTOP, FromDIP(4)); + m_input_top_sizer->Add(m_input_area, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + + ip_input_top_panel->SetSizer(m_input_top_sizer); + ip_input_top_panel->Layout(); + ip_input_top_panel->Fit(); + + /*bom input*/ + auto m_input_sn_area = new wxBoxSizer(wxHORIZONTAL); + auto m_input_modelID_area = new wxBoxSizer(wxHORIZONTAL); + + m_tips_sn = new Label(ip_input_bot_panel, "SN"); + m_tips_sn->SetMinSize(wxSize(FromDIP(168), -1)); + m_tips_sn->SetMaxSize(wxSize(FromDIP(168), -1)); + + m_input_sn = new TextInput(ip_input_bot_panel, wxEmptyString, wxEmptyString); + m_input_sn->Bind(wxEVT_TEXT, &InputIpAddressDialog::on_text, this); + m_input_sn->SetMinSize(wxSize(FromDIP(168), FromDIP(28))); + m_input_sn->SetMaxSize(wxSize(FromDIP(168), FromDIP(28))); + + m_tips_modelID = new Label(ip_input_bot_panel, _L("Printer model")); + m_tips_modelID->SetMinSize(wxSize(FromDIP(168), -1)); + m_tips_modelID->SetMaxSize(wxSize(FromDIP(168), -1)); + + m_input_modelID = new ComboBox(ip_input_bot_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(168), FromDIP(28)), 0, nullptr, wxCB_READONLY); + // m_input_modelID->Bind(wxEVT_TEXT, &InputIpAddressDialog::on_text, this); + m_input_modelID->SetMinSize(wxSize(FromDIP(168), FromDIP(28))); + m_input_modelID->SetMaxSize(wxSize(FromDIP(168), FromDIP(28))); + + m_models_map = DeviceManager::get_all_model_id_with_name(); + for (auto it = m_models_map.begin(); it != m_models_map.end(); ++it) { + m_input_modelID->Append(it->right); + m_input_modelID->SetSelection(0); + } + + m_input_sn_area->Add(m_tips_sn, 0, wxALIGN_CENTER, 0); + m_input_sn_area->Add(0, 0, 0, wxLEFT, FromDIP(16)); + m_input_sn_area->Add(m_tips_modelID, 0, wxALIGN_CENTER, 0); + + m_input_modelID_area->Add(m_input_sn, 0, wxALIGN_CENTER, 0); + m_input_modelID_area->Add(0, 0, 0, wxLEFT, FromDIP(16)); + m_input_modelID_area->Add(m_input_modelID, 0, wxALIGN_CENTER, 0); + + m_input_bot_sizer->Add(m_input_sn_area, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + m_input_bot_sizer->Add(0, 0, 0, wxTOP, FromDIP(4)); + m_input_bot_sizer->Add(m_input_modelID_area, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + + ip_input_bot_panel->SetSizer(m_input_bot_sizer); + ip_input_bot_panel->Layout(); + ip_input_bot_panel->Fit(); + + /*other*/ m_test_right_msg = new Label(this, Label::Body_13, wxEmptyString, LB_AUTO_WRAP); m_test_right_msg->SetForegroundColour(wxColour(61, 203, 115)); m_test_right_msg->Hide(); - m_test_wrong_msg = new Label(this, Label::Body_13, wxEmptyString, LB_AUTO_WRAP); m_test_wrong_msg->SetForegroundColour(wxColour(208, 27, 27)); m_test_wrong_msg->Hide(); - m_tip3 = new Label(this, Label::Body_12, _L("Where to find your printer's IP and Access Code?"), LB_AUTO_WRAP); - m_tip3->SetMinSize(wxSize(FromDIP(352), -1)); - m_tip3->SetMaxSize(wxSize(FromDIP(352), -1)); - - m_tip4 = new Label(this, ::Label::Body_13, _L("Step 3: Ping the IP address to check for packet loss and latency."), LB_AUTO_WRAP); + m_tip4 = new Label(this, Label::Body_12, _L("Where to find your printer's IP and Access Code?"), LB_AUTO_WRAP); m_tip4->SetMinSize(wxSize(FromDIP(352), -1)); m_tip4->SetMaxSize(wxSize(FromDIP(352), -1)); - + m_trouble_shoot = new wxHyperlinkCtrl(this, wxID_ANY, "How to trouble shooting", ""); m_img_help = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("input_access_code_x1_en", this, 198), wxDefaultPosition, wxSize(FromDIP(352), -1), 0); - auto m_sizer_button = new wxBoxSizer(wxHORIZONTAL); StateColor btn_bg_green(std::pair(wxColour(61, 203, 115), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), - std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); + std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); StateColor btn_bg_white(std::pair(wxColour(206, 206, 206), StateColor::Pressed), std::pair(wxColour(238, 238, 238), StateColor::Hovered), - std::pair(*wxWHITE, StateColor::Normal)); + std::pair(*wxWHITE, StateColor::Normal)); m_button_ok = new Button(this, _L("Connect")); m_button_ok->SetBackgroundColor(btn_bg_green); @@ -1535,9 +1600,10 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) m_button_ok->SetSize(wxSize(FromDIP(58), FromDIP(24))); m_button_ok->SetMinSize(wxSize(FromDIP(58), FromDIP(24))); m_button_ok->SetCornerRadius(FromDIP(12)); - - m_button_ok->Bind(wxEVT_LEFT_DOWN, &InputIpAddressDialog::on_ok, this); + m_button_ok->Enable(false); + m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); + m_button_ok->SetBorderColor(wxColour(0x90, 0x90, 0x90)); /*auto m_button_cancel = new Button(this, _L("Close")); m_button_cancel->SetBackgroundColor(btn_bg_white); @@ -1553,35 +1619,27 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) m_sizer_button->AddStretchSpacer(); m_sizer_button->Add(m_button_ok, 0, wxALL, FromDIP(5)); - //m_sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5)); + // m_sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5)); m_sizer_button->Layout(); - - m_status_bar = std::make_shared(this); + m_status_bar = std::make_shared(this); m_status_bar->get_panel()->Hide(); - auto m_step_icon_panel1 = new wxWindow(this, wxID_ANY); auto m_step_icon_panel2 = new wxWindow(this, wxID_ANY); - + m_step_icon_panel3 = new wxWindow(this, wxID_ANY); + m_step_icon_panel1->SetBackgroundColour(*wxWHITE); m_step_icon_panel2->SetBackgroundColour(*wxWHITE); - + m_step_icon_panel3->SetBackgroundColour(*wxWHITE); auto m_sizer_step_icon_panel1 = new wxBoxSizer(wxVERTICAL); auto m_sizer_step_icon_panel2 = new wxBoxSizer(wxVERTICAL); - - + auto m_sizer_step_icon_panel3 = new wxBoxSizer(wxVERTICAL); m_img_step1 = new wxStaticBitmap(m_step_icon_panel1, wxID_ANY, create_scaled_bitmap("ip_address_step", this, 6), wxDefaultPosition, wxSize(FromDIP(6), FromDIP(6)), 0); - - auto m_line_tips_left = new wxPanel(m_step_icon_panel1, wxID_ANY, wxDefaultPosition, wxSize(-1, 1)); - m_line_tips_left->SetBackgroundColour(wxColour(0xEEEEEE)); m_img_step2 = new wxStaticBitmap(m_step_icon_panel2, wxID_ANY, create_scaled_bitmap("ip_address_step", this, 6), wxDefaultPosition, wxSize(FromDIP(6), FromDIP(6)), 0); - m_img_step3 = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("ip_address_step", this, 6), wxDefaultPosition, wxSize(FromDIP(6), FromDIP(6)), 0); - - m_sizer_step_icon_panel1->Add(m_img_step1, 0, wxALIGN_CENTER|wxALL, FromDIP(5)); - + m_img_step3 = new wxStaticBitmap(m_step_icon_panel3, wxID_ANY, create_scaled_bitmap("ip_address_step", this, 6), wxDefaultPosition, wxSize(FromDIP(6), FromDIP(6)), 0); m_step_icon_panel1->SetSizer(m_sizer_step_icon_panel1); m_step_icon_panel1->Layout(); @@ -1591,45 +1649,45 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) m_step_icon_panel2->Layout(); m_step_icon_panel2->Fit(); + m_step_icon_panel3->SetSizer(m_sizer_step_icon_panel3); + m_step_icon_panel3->Layout(); + m_step_icon_panel3->Fit(); - - m_sizer_step_icon_panel2->Add(m_img_step2, 0, wxALIGN_CENTER|wxALL, FromDIP(5)); - //m_sizer_step_icon_panel3->Add(m_img_step3, 0, wxALIGN_CENTER|wxALL, FromDIP(5)); + m_sizer_step_icon_panel1->Add(m_img_step1, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); + m_sizer_step_icon_panel2->Add(m_img_step2, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); + m_sizer_step_icon_panel3->Add(m_img_step3, 0, wxALIGN_CENTER | wxALL, FromDIP(5)); m_step_icon_panel1->SetMinSize(wxSize(-1, m_tip1->GetBestSize().y)); m_step_icon_panel1->SetMaxSize(wxSize(-1, m_tip1->GetBestSize().y)); - m_sizer_msg->Add(0, 0, 0, wxALIGN_CENTER, FromDIP(20)); - m_sizer_msg->Add(m_img_step3, 0, wxALL, FromDIP(5)); - m_sizer_msg->Add(0, 0, 0, wxALIGN_CENTER, FromDIP(8)); - m_sizer_msg->Add(m_tip4, 0, wxALIGN_CENTER | wxEXPAND | wxLEFT, FromDIP(5)); - m_img_step3->Hide(); - m_tip4->Hide(); + m_step_icon_panel2->SetMinSize(wxSize(-1, m_tip2->GetBestSize().y)); + m_step_icon_panel2->SetMaxSize(wxSize(-1, m_tip2->GetBestSize().y)); + + m_sizer_msg->Layout(); m_sizer_main_left->Add(m_step_icon_panel1, 0, wxEXPAND, 0); m_sizer_main_left->Add(0, 0, 0, wxTOP, FromDIP(20)); - m_sizer_main_left->Add(m_line_tips_left, 1, wxEXPAND, 0); - m_sizer_main_left->Add(0, 0, 0, wxTOP, FromDIP(20)); m_sizer_main_left->Add(m_step_icon_panel2, 0, wxEXPAND, 0); + m_sizer_main_left->Add(0, 0, 0, wxTOP, FromDIP(20)); + m_sizer_main_left->Add(m_step_icon_panel3, 0, wxEXPAND, 0); m_sizer_main_left->Layout(); - + m_trouble_shoot->Hide(); - - m_sizer_main_right->Add(m_tip1, 0, wxRIGHT|wxEXPAND, FromDIP(18)); - m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(20)); - m_sizer_main_right->Add(m_line_tips, 0, wxRIGHT|wxEXPAND, FromDIP(18)); + + m_sizer_main_right->Add(m_tip1, 0, wxRIGHT | wxEXPAND, FromDIP(18)); m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(20)); - m_sizer_main_right->Add(m_tip2, 0, wxRIGHT|wxEXPAND, FromDIP(18)); + m_sizer_main_right->Add(m_tip2, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(2)); + m_sizer_main_right->Add(m_tip3, 0, wxTOP|wxRIGHT|wxEXPAND, FromDIP(18)); m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(12)); - m_sizer_main_right->Add(m_tip3, 0, wxRIGHT | wxEXPAND, FromDIP(18)); - m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(4)); + m_sizer_main_right->Add(m_tip4, 0, wxRIGHT | wxEXPAND, FromDIP(18)); + m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(3)); m_sizer_main_right->Add(m_img_help, 0, 0, 0); m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(12)); - m_sizer_main_right->Add(m_input_tip_area, 0, wxRIGHT|wxEXPAND, FromDIP(18)); - m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(4)); - m_sizer_main_right->Add(m_input_area, 0, wxRIGHT|wxEXPAND, FromDIP(18)); + m_sizer_main_right->Add(ip_input_top_panel, 0, wxRIGHT|wxEXPAND, FromDIP(18)); + m_sizer_main_right->Add(ip_input_bot_panel, 0, wxRIGHT|wxEXPAND, FromDIP(18)); m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(4)); //m_sizer_main_right->Add(m_button_ok, 0, wxRIGHT, FromDIP(18)); m_sizer_main_right->Add(0, 0, 0, wxTOP, FromDIP(4)); @@ -1645,18 +1703,19 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) m_sizer_main->Layout(); m_sizer_body->Add(m_line_top, 0, wxEXPAND, 0); - m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(4)); + m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(10)); m_sizer_body->Add(m_sizer_main, 0, wxRIGHT, FromDIP(10)); m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(4)); m_sizer_body->Add(m_sizer_msg, 0, wxLEFT|wxEXPAND, FromDIP(18)); m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(4)); m_sizer_body->Add(m_trouble_shoot, 0, wxLEFT | wxRIGHT | wxEXPAND, FromDIP(40)); - m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(8)); m_sizer_body->Add(m_sizer_button, 0, wxRIGHT | wxEXPAND, FromDIP(25)); m_sizer_body->Add(0, 0, 0, wxTOP, FromDIP(10)); m_sizer_body->Layout(); + switch_input_panel(0); + SetSizer(m_sizer_body); Layout(); Fit(); @@ -1669,7 +1728,7 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) closeTimer->SetOwner(this); Bind(wxEVT_TIMER, &InputIpAddressDialog::OnTimer, this); - Bind(EVT_CHECK_IP_ADDRESS_FAILED, &InputIpAddressDialog::on_check_ip_address_failed, this); + //Bind(EVT_CHECK_IP_ADDRESS_FAILED, &InputIpAddressDialog::on_check_ip_address_failed, this); Bind(EVT_CLOSE_IPADDRESS_DLG, [this](auto& e) { m_status_bar->reset(); @@ -1680,6 +1739,33 @@ InputIpAddressDialog::InputIpAddressDialog(wxWindow* parent) closeTimer->Stop(); }); + Bind(EVT_UPDATE_TEXT_MSG, &InputIpAddressDialog::update_test_msg_event, this); + Bind(EVT_CHECK_IP_ADDRESS_LAYOUT, [this](auto& e) { + int mode = e.GetInt(); + switch_input_panel(mode); + Layout(); + Fit(); + }); +} + +void InputIpAddressDialog::switch_input_panel(int index) +{ + if (index == 0) { + ip_input_top_panel->Show(); + ip_input_bot_panel->Hide(); + m_step_icon_panel3->Hide(); + m_tip3->Hide(); + } else { + ip_input_top_panel->Hide(); + ip_input_bot_panel->Show(); + m_step_icon_panel3->Show(); + m_tip3->Show(); + + m_button_ok->Enable(false); + m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); + m_button_ok->SetBorderColor(wxColour(0x90, 0x90, 0x90)); + } + current_input_index = index; } void InputIpAddressDialog::on_cancel() @@ -1775,26 +1861,16 @@ void InputIpAddressDialog::on_ok(wxMouseEvent& evt) { m_test_right_msg->Hide(); m_test_wrong_msg->Hide(); - m_img_step3->Hide(); - m_tip4->Hide(); m_trouble_shoot->Hide(); std::string str_ip = m_input_ip->GetTextCtrl()->GetValue().ToStdString(); std::string str_access_code = m_input_access_code->GetTextCtrl()->GetValue().ToStdString(); + std::string str_sn = m_input_sn->GetTextCtrl()->GetValue().ToStdString(); + std::string str_model_id = ""; - //check support function - /*if (!m_obj) return; - if (!m_obj->is_support_send_to_sdcard) { - wxString input_str = wxString::Format("%s|%s", ip, str_access_code); - auto event = wxCommandEvent(EVT_ENTER_IP_ADDRESS); - event.SetString(input_str); - event.SetEventObject(this); - wxPostEvent(this, event); - - auto event_close = wxCommandEvent(EVT_CLOSE_IPADDRESS_DLG); - event_close.SetEventObject(this); - wxPostEvent(this, event_close); - return; - }*/ + auto it = m_models_map.right.find(m_input_modelID->GetStringSelection().ToStdString()); + if (it != m_models_map.right.end()) { + str_model_id = it->get_left(); + } m_button_ok->Enable(false); m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); @@ -1803,55 +1879,75 @@ void InputIpAddressDialog::on_ok(wxMouseEvent& evt) Refresh(); Layout(); Fit(); + m_thread = new boost::thread(boost::bind(&InputIpAddressDialog::workerThreadFunc, this, str_ip, str_access_code, str_sn, str_model_id)); +} + +void InputIpAddressDialog::update_test_msg_event(wxCommandEvent& evt) +{ + wxString text = evt.GetString(); + bool beconnect = evt.GetInt(); + update_test_msg(text, beconnect); + Layout(); + Fit(); +} - m_thread = new boost::thread(boost::bind(&InputIpAddressDialog::workerThreadFunc, this, str_ip, str_access_code)); +void InputIpAddressDialog::post_update_test_msg(wxString text, bool beconnect) +{ + wxCommandEvent event(EVT_UPDATE_TEXT_MSG); + event.SetEventObject(this); + event.SetString(text); + event.SetInt(beconnect); + wxPostEvent(this, event); } -void InputIpAddressDialog::workerThreadFunc(std::string str_ip, std::string str_access_code) +void InputIpAddressDialog::workerThreadFunc(std::string str_ip, std::string str_access_code, std::string sn, std::string model_id) { - update_test_msg(_L("connecting..."), true); + post_update_test_msg(_L("connecting..."), true); + detectResult detectData; - auto result = wxGetApp().getAgent()->bind_detect(str_ip, "secure", detectData); + auto result = -1; + if (current_input_index == 0) { + +#ifdef __APPLE__ + result = -3; +#else + result = wxGetApp().getAgent()->bind_detect(str_ip, "secure", detectData); +#endif + + } else { + result = 0; + detectData.dev_name = sn; + detectData.dev_id = sn; + detectData.connect_type = "lan"; + detectData.connect_type = "free"; + } if (result < 0) { - update_test_msg(wxEmptyString, true); + post_update_test_msg(wxEmptyString, true); if (result == -1) { - update_test_msg(_L("Failed to connect to printer."), false); + post_update_test_msg(_L("Failed to connect to printer."), false); } else if (result == -2) { - update_test_msg(_L("Failed to publish login request."), false); + post_update_test_msg(_L("Failed to publish login request."), false); } else if (result == -3) { - update_test_msg(_L("The device does not support using IP and Access Code for connection."), false); + wxCommandEvent event(EVT_CHECK_IP_ADDRESS_LAYOUT); + event.SetEventObject(this); + event.SetInt(1); + wxPostEvent(this, event); } - - m_button_ok->Enable(true); - - m_button_ok->Enable(true); - StateColor btn_bg_green(std::pair(wxColour(61, 203, 115), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), - std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); - m_button_ok->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); - m_button_ok->SetBackgroundColor(btn_bg_green); - m_button_ok->SetBorderColor(*wxWHITE); - - Layout(); - Fit(); return; } if (detectData.bind_state == "occupied") { - update_test_msg(wxEmptyString, true); - update_test_msg(_L("The printer has already been bound."), false); - Layout(); - Fit(); + post_update_test_msg(wxEmptyString, true); + post_update_test_msg(_L("The printer has already been bound."), false); return; } if (detectData.connect_type == "cloud") { - update_test_msg(wxEmptyString, true); - update_test_msg(_L("The printer mode is incorrect, please switch to LAN Only."), false); - Layout(); - Fit(); + post_update_test_msg(wxEmptyString, true); + post_update_test_msg(_L("The printer mode is incorrect, please switch to LAN Only."), false); return; } @@ -1867,21 +1963,20 @@ void InputIpAddressDialog::workerThreadFunc(std::string str_ip, std::string str_ closeCount = 1; - update_test_msg(wxEmptyString, true); - update_test_msg(wxString::Format(_L("Connecting to printer... The dialog will close later"), closeCount), true); - - closeTimer->Start(1000); + post_update_test_msg(wxEmptyString, true); + post_update_test_msg(wxString::Format(_L("Connecting to printer... The dialog will close later"), closeCount), true); - Layout(); - Fit(); - Refresh(true); +#ifdef __APPLE__ + wxCommandEvent event(EVT_CLOSE_IPADDRESS_DLG); + wxPostEvent(this, event); +#else + closeTimer->Start(1000); +#endif } void InputIpAddressDialog::OnTimer(wxTimerEvent& event) { if (closeCount > 0) { closeCount--; - //update_test_msg(wxString::Format(_L("Printer binding successful. The dialog will close in %d seconds"), closeCount), true); - //Refresh(); } else { closeTimer->Stop(); @@ -1904,9 +1999,6 @@ void InputIpAddressDialog::on_check_ip_address_failed(wxCommandEvent& evt) } else { update_test_msg(_L("Connection failed! If your IP and Access Code is correct, \nplease move to step 3 for troubleshooting network issues"), false); - m_img_step3->Show(); - m_tip4->Show(); - //m_trouble_shoot->Show(); Layout(); Fit(); } @@ -1918,10 +2010,11 @@ void InputIpAddressDialog::on_check_ip_address_failed(wxCommandEvent& evt) m_button_ok->SetBackgroundColor(btn_bg_green); } -void InputIpAddressDialog::on_text(wxCommandEvent& evt) +void InputIpAddressDialog::on_text(wxCommandEvent &evt) { - auto str_ip = m_input_ip->GetTextCtrl()->GetValue(); - auto str_access_code = m_input_access_code->GetTextCtrl()->GetValue(); + auto str_ip = m_input_ip->GetTextCtrl()->GetValue(); + auto str_access_code = m_input_access_code->GetTextCtrl()->GetValue(); + auto str_sn = m_input_sn->GetTextCtrl()->GetValue(); bool invalid_access_code = true; for (char c : str_access_code) { @@ -1934,15 +2027,28 @@ void InputIpAddressDialog::on_text(wxCommandEvent& evt) if (isIp(str_ip.ToStdString()) && str_access_code.Length() == 8 && invalid_access_code) { m_button_ok->Enable(true); StateColor btn_bg_green(std::pair(wxColour(61, 203, 115), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), - std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); + std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); m_button_ok->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); m_button_ok->SetBackgroundColor(btn_bg_green); - } - else { + } else { m_button_ok->Enable(false); m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); m_button_ok->SetBorderColor(wxColour(0x90, 0x90, 0x90)); } + + if (current_input_index == 1){ + if (str_sn.length() == 15) { + m_button_ok->Enable(true); + StateColor btn_bg_green(std::pair(wxColour(61, 203, 115), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), + std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); + m_button_ok->SetTextColor(StateColor::darkModeColorFor("#FFFFFE")); + m_button_ok->SetBackgroundColor(btn_bg_green); + } else { + m_button_ok->Enable(false); + m_button_ok->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); + m_button_ok->SetBorderColor(wxColour(0x90, 0x90, 0x90)); + } + } } InputIpAddressDialog::~InputIpAddressDialog() diff --git a/src/slic3r/GUI/ReleaseNote.hpp b/src/slic3r/GUI/ReleaseNote.hpp index 4dc3723dcb..b87db5beee 100644 --- a/src/slic3r/GUI/ReleaseNote.hpp +++ b/src/slic3r/GUI/ReleaseNote.hpp @@ -50,6 +50,7 @@ wxDECLARE_EVENT(EVT_UPDATE_NOZZLE, wxCommandEvent); wxDECLARE_EVENT(EVT_LOAD_VAMS_TRAY, wxCommandEvent); wxDECLARE_EVENT(EVT_JUMP_TO_HMS, wxCommandEvent); wxDECLARE_EVENT(EVT_JUMP_TO_LIVEVIEW, wxCommandEvent); +wxDECLARE_EVENT(EVT_UPDATE_TEXT_MSG, wxCommandEvent); class ReleaseNoteDialog : public DPIDialog { @@ -275,10 +276,12 @@ class InputIpAddressDialog : public DPIDialog public: wxString comfirm_before_enter_text; wxString comfirm_after_enter_text; + wxString comfirm_last_enter_text; boost::thread* m_thread{nullptr}; std::string m_ip; + wxWindow* m_step_icon_panel3{ nullptr }; Label* m_tip1{ nullptr }; Label* m_tip2{ nullptr }; Label* m_tip3{ nullptr }; @@ -287,13 +290,19 @@ class InputIpAddressDialog : public DPIDialog ~InputIpAddressDialog(); MachineObject* m_obj{nullptr}; + wxPanel * ip_input_top_panel{ nullptr }; + wxPanel * ip_input_bot_panel{ nullptr }; Button* m_button_ok{ nullptr }; Label* m_tips_ip{ nullptr }; Label* m_tips_access_code{ nullptr }; + Label* m_tips_sn{nullptr}; + Label* m_tips_modelID{nullptr}; Label* m_test_right_msg{ nullptr }; Label* m_test_wrong_msg{ nullptr }; TextInput* m_input_ip{ nullptr }; TextInput* m_input_access_code{ nullptr }; + TextInput* m_input_sn{ nullptr }; + ComboBox* m_input_modelID{ nullptr }; wxStaticBitmap* m_img_help{ nullptr }; wxStaticBitmap* m_img_step1{ nullptr }; wxStaticBitmap* m_img_step2{ nullptr }; @@ -303,9 +312,12 @@ class InputIpAddressDialog : public DPIDialog int closeCount{3}; bool m_show_access_code{ false }; int m_result; + int current_input_index {0}; std::shared_ptr m_send_job{nullptr}; std::shared_ptr m_status_bar; + boost::bimaps::bimap m_models_map; + void switch_input_panel(int index); void on_cancel(); void update_title(wxString title); void set_machine_obj(MachineObject* obj); @@ -314,7 +326,9 @@ class InputIpAddressDialog : public DPIDialog void check_ip_address_failed(int result); void on_check_ip_address_failed(wxCommandEvent& evt); void on_ok(wxMouseEvent& evt); - void workerThreadFunc(std::string str_ip, std::string str_access_code); + void update_test_msg_event(wxCommandEvent &evt); + void post_update_test_msg(wxString text, bool beconnect); + void workerThreadFunc(std::string str_ip, std::string str_access_code, std::string sn, std::string model_id); void OnTimer(wxTimerEvent& event); void on_text(wxCommandEvent& evt); void on_dpi_changed(const wxRect& suggested_rect) override; @@ -325,6 +339,7 @@ wxDECLARE_EVENT(EVT_CLOSE_IPADDRESS_DLG, wxCommandEvent); wxDECLARE_EVENT(EVT_CHECKBOX_CHANGE, wxCommandEvent); wxDECLARE_EVENT(EVT_ENTER_IP_ADDRESS, wxCommandEvent); wxDECLARE_EVENT(EVT_CHECK_IP_ADDRESS_FAILED, wxCommandEvent); +wxDECLARE_EVENT(EVT_CHECK_IP_ADDRESS_LAYOUT, wxCommandEvent); }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 99071b4541..2808d95a22 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -897,20 +897,20 @@ void SelectMachinePopup::OnLeftUp(wxMouseEvent &event) static wxString MACHINE_BED_TYPE_STRING[BED_TYPE_COUNT] = { //_L("Auto"), - _L("Bambu Cool Plate SuperTack"), - _L("Bambu Cool Plate") + " / " + _L("PLA Plate"), + _L("Bambu Cool Plate"), _L("Bamabu Engineering Plate"), _L("Bamabu Smooth PEI Plate") + "/" + _L("High temperature Plate"), - _L("Bamabu Textured PEI Plate") + _L("Bamabu Textured PEI Plate"), + _L("Bambu Cool Plate SuperTack") }; static std::string MachineBedTypeString[BED_TYPE_COUNT] = { //"auto", - "suprtack", "pc", "pe", "pei", - "pte" + "pte", + "suprtack" }; void SelectMachineDialog::stripWhiteSpace(std::string& str) @@ -2576,7 +2576,7 @@ void SelectMachineDialog::on_ok_btn(wxCommandEvent &event) is_printing_block = true; nozzle_diameter = wxString::Format("%.1f", obj_->nozzle_diameter).ToStdString(); - wxString nozzle_in_preset = wxString::Format(_L("Printing high temperature material(%s material) with %s may cause nozzle damage"), filament_type, format_steel_name(obj_->nozzle_type)); + wxString nozzle_in_preset = wxString::Format(_L("Printing high temperature material(%1 material) with %2 may cause nozzle damage"), filament_type, format_steel_name(obj_->nozzle_type)); confirm_text.push_back(ConfirmBeforeSendInfo(nozzle_in_preset, ConfirmBeforeSendInfo::InfoLevel::Warning)); } } @@ -4846,8 +4846,6 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) SetMinSize(SELECT_MACHINE_ITEM_SIZE); m_type = type; - m_bitmap = ScalableBitmap(this, "bind_device_ping_code",10); - this->Bind(wxEVT_ENTER_WINDOW, &PinCodePanel::on_mouse_enter, this); this->Bind(wxEVT_LEAVE_WINDOW, &PinCodePanel::on_mouse_leave, this); this->Bind(wxEVT_LEFT_UP, &PinCodePanel::on_mouse_left_up, this); @@ -4883,9 +4881,14 @@ void EditDevNameDialog::on_edit_name(wxCommandEvent &e) void PinCodePanel::doRender(wxDC& dc) { auto size = GetSize(); + + //m_bitmap = ScalableBitmap(this, "bind_device_ping_code",10); + + m_bitmap = ScalableBitmap(this, wxGetApp().dark_mode() ? "bind_device_ping_code_dark" : "bind_device_ping_code_light", 10); + dc.DrawBitmap(m_bitmap.bmp(), wxPoint(FromDIP(12), (size.y - m_bitmap.GetBmpSize().y) / 2)); dc.SetFont(::Label::Head_13); - dc.SetTextForeground(wxColour(38, 46, 48)); + dc.SetTextForeground(StateColor::darkModeColorFor(SELECT_MACHINE_GREY900)); wxString txt; if (m_type == 0) { txt = _L("Bind with Pin Code"); } else if (m_type == 1) { txt = _L("Bind with Access Code"); } diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 6f046d1a8d..da2ccd9ee8 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1585,7 +1585,10 @@ void StatusBasePanel::show_ams_group(bool show) if (m_show_ams_group != show) { Fit(); } m_show_ams_group = show; m_show_ams_group_reset = false; + m_ams_control->Layout(); + m_ams_control->Fit(); Layout(); + Fit(); } } @@ -2151,14 +2154,17 @@ void StatusPanel::show_error_message(MachineObject *obj, bool is_exist, wxString if (is_exist && msg.IsEmpty()) { error_info_reset(); } else { + if (msg.IsEmpty()) { msg = _L("Unknow error."); } m_project_task_panel->show_error_msg(msg); if (!used_button.empty()) { BOOST_LOG_TRIVIAL(info) << "show print error! error_msg = " << msg; - if (m_print_error_dlg == nullptr) { - m_print_error_dlg = new PrintErrorDialog(this->GetParent(), wxID_ANY, _L("Error")); + if (m_print_error_dlg != nullptr) { + delete m_print_error_dlg; + m_print_error_dlg = nullptr; } + m_print_error_dlg = new PrintErrorDialog(this->GetParent(), wxID_ANY, _L("Error")); m_print_error_dlg->update_title_style(_L("Error"), used_button, this); m_print_error_dlg->update_text_image(msg, print_error_str, image_url); m_print_error_dlg->Bind(EVT_SECONDARY_CHECK_CONFIRM, [this, obj](wxCommandEvent& e) { @@ -2187,10 +2193,12 @@ void StatusPanel::show_error_message(MachineObject *obj, bool is_exist, wxString wxString show_time = now.Format("%H%M%d"); wxString error_code_msg = wxString::Format("%S\n[%S %S]", msg, print_error_str, show_time); - if (m_print_error_dlg_no_action == nullptr) { - m_print_error_dlg_no_action = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM); + if (m_print_error_dlg_no_action != nullptr) { + delete m_print_error_dlg_no_action; + m_print_error_dlg_no_action = nullptr; } + m_print_error_dlg_no_action = new SecondaryCheckDialog(this->GetParent(), wxID_ANY, _L("Warning"), SecondaryCheckDialog::ButtonStyle::ONLY_CONFIRM); if (it_done != message_containing_done.end() && it_retry != message_containing_retry.end()) { m_print_error_dlg_no_action->update_title_style(_L("Warning"), SecondaryCheckDialog::ButtonStyle::DONE_AND_RETRY, this); } @@ -2238,14 +2246,14 @@ void StatusPanel::update_error_message() char buf[32]; ::sprintf(buf, "%08X", obj->print_error); std::string print_error_str = std::string(buf); - if (print_error_str.size() > 4) { print_error_str.insert(4, " "); } + if (print_error_str.size() > 4) { print_error_str.insert(4, "-"); } wxString error_msg; bool is_errocode_exist = wxGetApp().get_hms_query()->query_print_error_msg(obj->print_error, error_msg); std::vector used_button; wxString error_image_url = wxGetApp().get_hms_query()->query_print_error_url_action(obj->print_error, obj->dev_id, used_button); // special case - if (print_error_str == "0300 8003" || print_error_str == "0300 8002" || print_error_str == "0300 800A") { + if (print_error_str == "0300-8003" || print_error_str == "0300-8002" || print_error_str == "0300-800A") { used_button.emplace_back(PrintErrorDialog::PrintErrorButton::JUMP_TO_LIVEVIEW); } show_error_message(obj, is_errocode_exist, error_msg, print_error_str, error_image_url, used_button); @@ -3006,7 +3014,10 @@ void StatusPanel::update_subtask(MachineObject *obj) int height = m_project_task_panel->get_bitmap_thumbnail()->GetSize().y; if (m_calib_method == CALI_METHOD_AUTO) { if (m_calib_mode == CalibMode::Calib_PA_Line) { - png_path = (boost::format("%1%/images/fd_calibration_auto.png") % resources_dir()).str(); + if (obj->get_printer_arch() == PrinterArch::ARCH_I3) + png_path = (boost::format("%1%/images/fd_calibration_auto_i3.png") % resources_dir()).str(); + else + png_path = (boost::format("%1%/images/fd_calibration_auto.png") % resources_dir()).str(); } else if (m_calib_mode == CalibMode::Calib_Flow_Rate) { png_path = (boost::format("%1%/images/flow_rate_calibration_auto.png") % resources_dir()).str(); diff --git a/src/slic3r/GUI/StepMeshDialog.cpp b/src/slic3r/GUI/StepMeshDialog.cpp index 96e71cbd25..4963b7d97b 100644 --- a/src/slic3r/GUI/StepMeshDialog.cpp +++ b/src/slic3r/GUI/StepMeshDialog.cpp @@ -229,7 +229,9 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file) wxBoxSizer* bSizer_button = new wxBoxSizer(wxHORIZONTAL); bSizer_button->SetMinSize(wxSize(FromDIP(100), -1)); - + m_checkbox = new wxCheckBox(this, wxID_ANY, _L("Don't show again"), wxDefaultPosition, wxDefaultSize, 0); + bSizer_button->Add(m_checkbox, 0, wxALIGN_LEFT); + bSizer_button->AddStretchSpacer(1); StateColor btn_bg_green(std::pair(wxColour(27, 136, 68), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); m_button_ok = new Button(this, _L("OK")); @@ -246,6 +248,12 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file) stop_task(); if (validate_number_range(angle_input->GetTextCtrl()->GetValue(), 0.01, 1) && validate_number_range(linear_input->GetTextCtrl()->GetValue(), 0.001, 0.1)) { + if (m_checkbox->IsChecked()) { + wxGetApp().app_config->set_bool("enable_step_mesh_setting", false); + } + wxGetApp().app_config->set("linear_defletion", std::to_string(get_linear_defletion())); + wxGetApp().app_config->set("angle_defletion", std::to_string(get_angle_defletion())); + EndModal(wxID_OK); } SetFocusIgnoringChildren(); @@ -268,7 +276,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file) EndModal(wxID_CANCEL); }); - bSizer->Add(bSizer_button, 0, wxALIGN_RIGHT | wxRIGHT| wxBOTTOM, LEFT_RIGHT_PADING); + bSizer->Add(bSizer_button, 1, wxEXPAND | wxALL, LEFT_RIGHT_PADING); this->SetSizer(bSizer); update_mesh_number_text(); diff --git a/src/slic3r/GUI/StepMeshDialog.hpp b/src/slic3r/GUI/StepMeshDialog.hpp index df2175d368..ad342a7745 100644 --- a/src/slic3r/GUI/StepMeshDialog.hpp +++ b/src/slic3r/GUI/StepMeshDialog.hpp @@ -3,6 +3,7 @@ #include #include +#include "GUI_App.hpp" #include "GUI_Utils.hpp" #include "libslic3r/Format/STEP.hpp" #include "Widgets/Button.hpp" @@ -13,12 +14,18 @@ class StepMeshDialog : public Slic3r::GUI::DPIDialog public: StepMeshDialog(wxWindow* parent, Slic3r::Step& file); void on_dpi_changed(const wxRect& suggested_rect) override; + inline double get_linear_init() { + return std::stod(Slic3r::GUI::wxGetApp().app_config->get("linear_defletion")); + } + inline double get_angle_init() { + return std::stod(Slic3r::GUI::wxGetApp().app_config->get("angle_defletion")); + } inline double get_linear_defletion() { double value; if (m_linear_last.ToDouble(&value)) { return value; }else { - return 0.003; + return get_linear_init(); } } inline double get_angle_defletion() { @@ -26,15 +33,16 @@ class StepMeshDialog : public Slic3r::GUI::DPIDialog if (m_angle_last.ToDouble(&value)) { return value; } else { - return 0.5; + return get_angle_init(); } } private: Slic3r::Step& m_file; Button* m_button_ok = nullptr; Button* m_button_cancel = nullptr; - wxString m_linear_last = wxString::Format("%.3f", 0.003); - wxString m_angle_last = wxString::Format("%.2f", 0.5); + wxCheckBox* m_checkbox = nullptr; + wxString m_linear_last = wxString::Format("%.3f", get_linear_init()); + wxString m_angle_last = wxString::Format("%.2f", get_angle_init()); wxStaticText* mesh_face_number_text; double m_last_linear; double m_last_angle; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 3f5669bb63..a4466b049e 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3040,7 +3040,7 @@ void TabFilament::build() line.append_option(optgroup->get_option("supertack_plate_temp")); optgroup->append_line(line); - line = { L("Cool Plate / PLA Plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; + line = { L("Cool Plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; line.append_option(optgroup->get_option("cool_plate_temp_initial_layer")); line.append_option(optgroup->get_option("cool_plate_temp")); optgroup->append_line(line); @@ -3517,6 +3517,7 @@ void TabPrinter::build_fff() optgroup = page->new_optgroup(L("Extruder Clearance")); optgroup->append_single_option_line("extruder_clearance_max_radius"); + optgroup->append_single_option_line("extruder_clearance_dist_to_rod"); optgroup->append_single_option_line("extruder_clearance_height_to_rod"); optgroup->append_single_option_line("extruder_clearance_height_to_lid"); @@ -4126,7 +4127,7 @@ void TabPrinter::toggle_options() // Disable silent mode for non-marlin firmwares. toggle_option("silent_mode", is_marlin_flavor); //BBS: extruder clearance of BBL printer can't be edited. - for (auto el : { "extruder_clearance_max_radius", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid" }) + for (auto el : {"extruder_clearance_max_radius", "extruder_clearance_dist_to_rod", "extruder_clearance_height_to_rod", "extruder_clearance_height_to_lid"}) toggle_option(el, !is_BBL_printer); } @@ -4146,6 +4147,9 @@ void TabPrinter::toggle_options() for (auto el : { "extruder_type" , "nozzle_diameter"}) { toggle_option(el, !is_BBL_printer, i); } + + toggle_option("extruder_type", !is_BBL_printer, i); + toggle_option("nozzle_diameter", !is_BBL_printer || config_mode == ConfigOptionMode::comDevelop, i); toggle_option("extruder_offset", !is_BBL_printer || config_mode == ConfigOptionMode::comDevelop, i); bool use_firmware_retraction = m_config->opt_bool("use_firmware_retraction"); diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 14f6a155e2..a8d81fa35e 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -926,7 +926,7 @@ bool GuideFrame::run() int main_frame_display_index = wxDisplay::GetFromWindow(wxGetApp().mainframe); int guide_display_index = wxDisplay::GetFromWindow(this); if (main_frame_display_index != guide_display_index) { - wxDisplay display = wxDisplay(main_frame_display_index); + wxDisplay display(wxGetApp().mainframe); wxRect screenRect = display.GetGeometry(); int guide_x = screenRect.x + (screenRect.width - this->GetSize().GetWidth()) / 2; int guide_y = screenRect.y + (screenRect.height - this->GetSize().GetHeight()) / 2; @@ -1133,7 +1133,7 @@ int GuideFrame::LoadProfile() wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('\/'); + strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0) @@ -1152,7 +1152,7 @@ int GuideFrame::LoadProfile() //cout << iter->path().string() << endl; wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast( '\\'); - strVendor = strVendor.AfterLast('\/'); + strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0) @@ -1459,7 +1459,7 @@ std::string GuideFrame::w2s(wxString sSrc) void GuideFrame::GetStardardFilePath(std::string &FilePath) { StrReplace(FilePath, "\\", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); - StrReplace(FilePath, "\/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); + StrReplace(FilePath, "/", w2s(wxString::Format("%c", boost::filesystem::path::preferred_separator))); } //bool GuideFrame::LoadFile(std::string jPath, std::string &sContent) diff --git a/src/slic3r/GUI/WebUserLoginDialog.cpp b/src/slic3r/GUI/WebUserLoginDialog.cpp index 92c2797586..af21610346 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.cpp +++ b/src/slic3r/GUI/WebUserLoginDialog.cpp @@ -272,13 +272,7 @@ void ZUserLogin::OnScriptMessage(wxWebViewEvent &evt) json j = json::parse(into_u8(str_input)); wxString strCmd = j["command"]; - - if (strCmd == "autotest_token") - { - m_AutotestToken = j["data"]["token"]; - } if (strCmd == "user_login") { - j["data"]["autotest_token"] = m_AutotestToken; wxGetApp().handle_script_message(j.dump()); Close(); } diff --git a/src/slic3r/GUI/WebUserLoginDialog.hpp b/src/slic3r/GUI/WebUserLoginDialog.hpp index ff3631496b..b0dca35113 100644 --- a/src/slic3r/GUI/WebUserLoginDialog.hpp +++ b/src/slic3r/GUI/WebUserLoginDialog.hpp @@ -70,8 +70,6 @@ class ZUserLogin : public wxDialog wxString TargetUrl; wxWebView *m_browser; - std::string m_AutotestToken; - #if wxUSE_WEBVIEW_IE wxMenuItem *m_script_object_el; wxMenuItem *m_script_date_el; diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 6223766385..a04b1df66b 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -41,18 +41,28 @@ WebViewPanel::WebViewPanel(wxWindow *parent) m_Region = wxGetApp().app_config->get_country_code(); m_loginstatus = -1; - wxString UrlLeft = wxString::Format("file://%s/web/homepage3/left.html", from_u8(resources_dir())); + // Connect the webview events + Bind(wxEVT_WEBVIEW_NAVIGATING, &WebViewPanel::OnNavigationRequest, this); + Bind(wxEVT_WEBVIEW_NAVIGATED, &WebViewPanel::OnNavigationComplete, this); + Bind(wxEVT_WEBVIEW_LOADED, &WebViewPanel::OnDocumentLoaded, this); + Bind(wxEVT_WEBVIEW_TITLE_CHANGED, &WebViewPanel::OnTitleChanged, this); + Bind(wxEVT_WEBVIEW_ERROR, &WebViewPanel::OnError, this); + Bind(wxEVT_WEBVIEW_NEWWINDOW, &WebViewPanel::OnNewWindow, this); + Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &WebViewPanel::OnScriptMessage, this); + Bind(EVT_RESPONSE_MESSAGE, &WebViewPanel::OnScriptResponseMessage, this); + + wxString UrlLeft = wxString::Format("file://%s/web/homepage3/left.html", from_u8(resources_dir())); wxString UrlRight = wxString::Format("file://%s/web/homepage3/home.html", from_u8(resources_dir())); wxString strlang = wxGetApp().current_language_code_safe(); - if (strlang != "") - { + if (strlang != "") + { UrlLeft = wxString::Format("file://%s/web/homepage3/left.html?lang=%s", from_u8(resources_dir()), strlang); UrlRight = wxString::Format("file://%s/web/homepage3/home.html?lang=%s", from_u8(resources_dir()), strlang); } topsizer = new wxBoxSizer(wxVERTICAL); - + #if !BBL_RELEASE_TO_PUBLIC // Create the button bSizer_toolbar = new wxBoxSizer(wxHORIZONTAL); @@ -96,6 +106,17 @@ WebViewPanel::WebViewPanel(wxWindow *parent) //Create Webview Panel m_home_web = new wxBoxSizer(wxHORIZONTAL); + // LeftMenu webview + m_leftfirst = false; + m_browserLeft = WebView::CreateWebView(this, UrlLeft); + if (m_browserLeft == nullptr) { + wxLogError("Could not init m_browser"); + return; + } + m_browserLeft->SetSize(wxSize(FromDIP(224), -1)); + m_browserLeft->SetMinSize(wxSize(FromDIP(224), -1)); + m_browserLeft->SetMaxSize(wxSize(FromDIP(224), -1)); + // Create the webview m_browser = WebView::CreateWebView(this, UrlRight); if (m_browser == nullptr) { @@ -103,28 +124,31 @@ WebViewPanel::WebViewPanel(wxWindow *parent) return; } - m_browserMW = WebView::CreateWebView(this, "about:blank"); + // Makerworld webview + m_browserMW = WebView::CreateWebView(this, "about:blank"); if (m_browserMW == nullptr) { wxLogError("Could not init m_browserMW"); return; - } + } m_browserMW->Hide(); SetMakerworldModelID(""); m_onlinefirst = false; - m_leftfirst = false; - m_browserLeft = WebView::CreateWebView(this, UrlLeft); - if (m_browserLeft == nullptr) { - wxLogError("Could not init m_browser"); + // PrintHistory webview + m_browserPH = WebView::CreateWebView(this, "about:blank"); + if (m_browserPH == nullptr) { + wxLogError("Could not init m_browserPH"); return; } - m_browserLeft->SetSize(wxSize(FromDIP(224), -1)); - m_browserLeft->SetMinSize(wxSize(FromDIP(224), -1)); - m_browserLeft->SetMaxSize(wxSize(FromDIP(224), -1)); + m_browserPH->Hide(); + SetPrintHistoryTaskID(0); + m_printhistoryfirst = false; + // Position m_home_web->Add(m_browserLeft, 0, wxEXPAND | wxALL, 0); m_home_web->Add(m_browser, 1, wxEXPAND | wxALL, 0); m_home_web->Add(m_browserMW, 1, wxEXPAND | wxALL, 0); + m_home_web->Add(m_browserPH, 1, wxEXPAND | wxALL, 0); topsizer->Add(m_home_web,1, wxEXPAND | wxALL, 0); @@ -201,16 +225,6 @@ WebViewPanel::WebViewPanel(wxWindow *parent) #endif //BBL_RELEASE_TO_PUBLIC - // Connect the webview events - Bind(wxEVT_WEBVIEW_NAVIGATING, &WebViewPanel::OnNavigationRequest, this); - Bind(wxEVT_WEBVIEW_NAVIGATED, &WebViewPanel::OnNavigationComplete, this); - Bind(wxEVT_WEBVIEW_LOADED, &WebViewPanel::OnDocumentLoaded, this); - Bind(wxEVT_WEBVIEW_TITLE_CHANGED, &WebViewPanel::OnTitleChanged, this); - Bind(wxEVT_WEBVIEW_ERROR, &WebViewPanel::OnError, this); - Bind(wxEVT_WEBVIEW_NEWWINDOW, &WebViewPanel::OnNewWindow, this); - Bind(wxEVT_WEBVIEW_SCRIPT_MESSAGE_RECEIVED, &WebViewPanel::OnScriptMessage, this); - Bind(EVT_RESPONSE_MESSAGE, &WebViewPanel::OnScriptResponseMessage, this); - // Connect the menu events Bind(wxEVT_MENU, &WebViewPanel::OnViewSourceRequest, this, viewSource->GetId()); Bind(wxEVT_MENU, &WebViewPanel::OnViewTextRequest, this, viewText->GetId()); @@ -259,7 +273,7 @@ WebViewPanel::~WebViewPanel() { BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << " Start"; SetEvtHandlerEnabled(false); - + delete m_tools_menu; if (m_LoginUpdateTimer != nullptr) { @@ -270,13 +284,16 @@ WebViewPanel::~WebViewPanel() BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << " End"; } -void WebViewPanel::ResetWholePage() -{ +void WebViewPanel::ResetWholePage() +{ std::string tmp_Region = wxGetApp().app_config->get_country_code(); if (tmp_Region == m_Region) return; - + m_Region = tmp_Region; + //loginstatus + m_loginstatus = -1; + //left if (m_browserLeft != nullptr && m_leftfirst) m_browserLeft->Reload(); @@ -291,6 +308,19 @@ void WebViewPanel::ResetWholePage() //online SetMakerworldModelID(""); m_onlinefirst = false; + + //PrintHistory + SetPrintHistoryTaskID(0); + m_printhistoryfirst = false; +} + +wxString WebViewPanel::MakeDisconnectUrl(std::string MenuName) +{ + wxString UrlDisconnect = wxString::Format("file://%s/web/homepage3/disconnect.html?menu=%s", from_u8(resources_dir()), MenuName); + wxString strlang = wxGetApp().current_language_code_safe(); + if (strlang != "") { UrlDisconnect = wxString::Format("file://%s/web/homepage3/disconnect.html?menu=%s&lang=%s", from_u8(resources_dir()), MenuName, strlang); } + + return UrlDisconnect; } void WebViewPanel::load_url(wxString& url) @@ -482,21 +512,32 @@ void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event) if (mainframe && mainframe->m_webview == this) Slic3r::GUI::wxGetApp().get_login_info(); - if (wxGetApp().is_user_login()) { - if (m_loginstatus != 1) - { + std::string phShow = wxGetApp().app_config->get("app", "show_print_history"); + + if (wxGetApp().is_user_login()) + { + if (m_loginstatus != 1) + { m_loginstatus = 1; if (m_onlinefirst) UpdateMakerworldLoginStatus(); } + + if (m_TaskInfo == "" && m_browser && phShow != "false") + { + SetPrintHistoryTaskID(0); + ShowUserPrintTask(true); + } } else { if (m_loginstatus != 0) { m_loginstatus = 0; if (m_onlinefirst) SetMakerworldPageLoginStatus(false); - } + } + + if (m_TaskInfo != "" && m_browser) ShowUserPrintTask(false); } } @@ -543,11 +584,11 @@ void WebViewPanel::SendDesignStaffpick(bool on) BOOST_LOG_TRIVIAL(warning) << "get_mw_user_preference failed " + body; return; } - CallAfter([this, body] { + CallAfter([this, body] { json jPrefer = json::parse(body); int nRecommendStatus = jPrefer["recommendStatus"]; - if (nRecommendStatus != 1 && nRecommendStatus != 3) + if (nRecommendStatus != 1 && nRecommendStatus != 3) { // Default : Staff Pick get_design_staffpick(0, 10, [this](std::string body) { @@ -566,7 +607,7 @@ void WebViewPanel::SendDesignStaffpick(bool on) //Show Online Menu SetLeftMenuShow("online", 1); }); - }); + }); } else { //For U Pick get_4u_staffpick(0, 10, [this](std::string body) { @@ -585,12 +626,12 @@ void WebViewPanel::SendDesignStaffpick(bool on) //Show Online Menu SetLeftMenuShow("online", 1); }); - }); + }); } }); }); - } + } else { // Default : Staff Pick @@ -648,15 +689,15 @@ void WebViewPanel::SendMakerlabList( ) auto body2 = from_u8(body); json jLab = json::parse(body2); - if (jLab.contains("list")) - { + if (jLab.contains("list")) + { int nSize = jLab["list"].size(); - if (nSize > 0) + if (nSize > 0) { body2.insert(1, "\"command\": \"homepage_makerlab_get\", "); RunScript(wxString::Format("window.postMessage(%s)", body2)); - SetLeftMenuShow("makerlab", 1); + SetLeftMenuShow("makerlab", 1); } } }); @@ -672,9 +713,9 @@ void WebViewPanel::SendMakerlabList( ) } } -void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent) -{ - SwitchLeftMenu("online"); +void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent) +{ + SwitchLeftMenu("online"); SetMakerworldModelID(id); } @@ -811,14 +852,19 @@ void WebViewPanel::UpdateMakerworldLoginStatus() std::string newticket; int ret = agent->request_bind_ticket(&newticket); - if (ret==0) SetMakerworldPageLoginStatus(true, newticket); + if (ret==0) + SetMakerworldPageLoginStatus(true, newticket); + else { + wxString UrlDisconnect = MakeDisconnectUrl("online"); + m_browserMW->LoadURL(UrlDisconnect); + } } -void WebViewPanel::SetMakerworldPageLoginStatus(bool login ,wxString ticket) -{ +void WebViewPanel::SetMakerworldPageLoginStatus(bool login ,wxString ticket) +{ if (m_browserMW == nullptr) return; - + wxString mw_currenturl; if (m_online_LastUrl != "") { mw_currenturl = m_online_LastUrl; @@ -833,7 +879,7 @@ void WebViewPanel::SetMakerworldPageLoginStatus(bool login ,wxString ticket) std::regex ParamPattern("agreeBackUrl=([^&]+)"); std::smatch match; std::string CurUrl = mw_currenturl.ToStdString(); - if (std::regex_search(CurUrl, match, ParamPattern)) + if (std::regex_search(CurUrl, match, ParamPattern)) { //std::cout << "Param Value: " << match[1] << std::endl; mw_currenturl = wxGetApp().url_decode(std::string(match[1])); @@ -853,23 +899,23 @@ void WebViewPanel::SetMakerworldPageLoginStatus(bool login ,wxString ticket) wxString mw_jumpurl = ""; bool b = GetJumpUrl(login, ticket, mw_currenturl, mw_jumpurl); - if (b) { + if (b) { m_browserMW->LoadURL(mw_jumpurl); m_online_LastUrl = ""; } } -void WebViewPanel::get_user_mw_4u_config(std::function callback) { +void WebViewPanel::get_user_mw_4u_config(std::function callback) { NetworkAgent *agent = GUI::wxGetApp().getAgent(); if (agent) - int ret = agent->get_mw_user_preference(callback); + int ret = agent->get_mw_user_preference(callback); } void WebViewPanel::get_4u_staffpick(int seed, int limit, std::function callback) { NetworkAgent *agent = GUI::wxGetApp().getAgent(); - if (agent) + if (agent) int ret = agent->get_mw_user_4ulist(seed,limit,callback); } @@ -884,6 +930,76 @@ int WebViewPanel::get_model_mall_detail_url(std::string *url, std::string id) return 0; } +void WebViewPanel::ShowUserPrintTask(bool bShow) +{ + std::string phShow = wxGetApp().app_config->get("app", "show_print_history"); + if (bShow && phShow == "false") bShow = false; + + if (bShow) + { + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent && agent->is_user_login()) { + static long long PrintTaskMs = 0; + + auto now = std::chrono::system_clock::now(); + long long TmpMs = std::chrono::duration_cast(now.time_since_epoch()).count(); + long long nInterval = TmpMs - PrintTaskMs; + if (nInterval < 2000) return; + PrintTaskMs = TmpMs; + + BBL::TaskQueryParams task_query_params; + task_query_params.limit = 5; + task_query_params.offset = 0; + int result = agent->get_user_tasks(task_query_params, &m_TaskInfo); + BOOST_LOG_TRIVIAL(trace) << "task_manager: get_task_list task_info=" << m_TaskInfo; + if (result == 0) { + try { + json j = json::parse(m_TaskInfo); + BOOST_LOG_TRIVIAL(trace) << "task_manager: get_task_list task count =" << j["hits"].size(); + + auto body2 = from_u8(m_TaskInfo); + body2.insert(1, "\"command\": \"printhistory_task_show\", "); + RunScript(wxString::Format("window.postMessage(%s)", body2)); + + SetLeftMenuShow("printhistory", 1); + + return; + } catch (...) {} + } + else + m_TaskInfo = ""; + } + } + else + { + //Hide Left Menu + SetLeftMenuShow("printhistory", 0); + m_TaskInfo = ""; + + //Hide WebBrowser + if (m_contentname == "printhistory") SwitchLeftMenu("home"); + + //refresh url + auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code()); + + wxString language_code = wxGetApp().current_language_code().BeforeFirst('_'); + language_code = language_code.ToStdString(); + + wxString mw_OffUrl = (boost::format("%1%%2%/studio/print-history?from=bambustudio") % host % language_code.mb_str()).str(); + wxString Finalurl = wxString::Format("%sapi/sign-out?to=%s", host, UrlEncode("about:blank")); + + m_browserPH->LoadURL(Finalurl); + SetPrintHistoryTaskID(0); + m_TaskInfo = ""; + + //First Enter False + m_printhistoryfirst = false; + } + + return; +} + + void WebViewPanel::update_mode() { GetSizer()->Show(size_t(0), wxGetApp().app_config->get("internal_developer_mode") == "true"); @@ -909,23 +1025,23 @@ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt) evt.Veto(); return; } - } + } else { wxString surl = url; if (surl.find("?") != std::string::npos) { surl = surl.substr(0, surl.find("?")).Lower(); - } + } - if (surl.EndsWith(".zip") || - surl.EndsWith(".pdf") || - surl.EndsWith(".stl") || - surl.EndsWith(".3mf") || - surl.EndsWith(".xlsx") || + if (surl.EndsWith(".zip") || + surl.EndsWith(".pdf") || + surl.EndsWith(".stl") || + surl.EndsWith(".3mf") || + surl.EndsWith(".xlsx") || surl.EndsWith(".xls") || - surl.EndsWith(".txt") || - surl.EndsWith("bbscfg") || + surl.EndsWith(".txt") || + surl.EndsWith("bbscfg") || surl.EndsWith("bbsflmt") - ) + ) { wxLaunchDefaultBrowser(url); @@ -961,14 +1077,14 @@ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt) */ void WebViewPanel::OnNavigationComplete(wxWebViewEvent& evt) { - if (m_browserMW!=nullptr && evt.GetId() == m_browserMW->GetId()) - { + if (m_browserMW!=nullptr && evt.GetId() == m_browserMW->GetId()) + { std::string TmpNowUrl = m_browserMW->GetCurrentURL().ToStdString(); std::string mwHost = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code()); if (TmpNowUrl.find(mwHost) != std::string::npos) m_onlinefirst = true; if (m_contentname == "online") { // conf save - SetWebviewShow("right", false); + SetWebviewShow("right", false); SetWebviewShow("online", true); } } @@ -992,9 +1108,9 @@ void WebViewPanel::OnDocumentLoaded(wxWebViewEvent& evt) // Only notify if the document is the main frame, not a subframe if (m_browser!=nullptr && evt.GetId() == m_browser->GetId()) { if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Document loaded; url='" + evt.GetURL() + "'"); - } - else if (m_browserLeft!=nullptr && evt.GetId() == m_browserLeft->GetId()) - { + } + else if (m_browserLeft!=nullptr && evt.GetId() == m_browserLeft->GetId()) + { m_leftfirst = true; } @@ -1024,7 +1140,7 @@ void WebViewPanel::OnNewWindow(wxWebViewEvent& evt) wxLogMessage("%s", "New window; url='" + evt.GetURL() + "'" + flag); //If we handle new window events then just load them in local browser - if (m_tools_handle_new_window->IsChecked()) + if (m_tools_handle_new_window->IsChecked()) { wxLaunchDefaultBrowser(evt.GetURL()); } @@ -1296,40 +1412,64 @@ void WebViewPanel::OnError(wxWebViewEvent& evt) BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": [" << category << "] " << evt.GetString().ToUTF8().data(); - if (wxGetApp().get_mode() == comDevelop) + if (wxGetApp().get_mode() == comDevelop) { wxLogMessage("%s", "Error; url='" + evt.GetURL() + "', error='" + category + " (" + evt.GetString() + ")'"); - // Show the info bar with an error + // Show the info bar with an error } //m_info->ShowMessage(_L("An error occurred loading ") + evt.GetURL() + "\n" + "'" + category + "'", wxICON_ERROR); - if (evt.GetInt() == wxWEBVIEW_NAV_ERR_CONNECTION && evt.GetId() == m_browserMW->GetId()) - { + if (evt.GetInt() == wxWEBVIEW_NAV_ERR_CONNECTION && evt.GetId() == m_browserMW->GetId()) + { m_online_LastUrl = m_browserMW->GetCurrentURL(); - if (m_contentname == "online") - { + if (m_contentname == "online") + { wxString errurl = evt.GetURL(); - wxString UrlRight = wxString::Format("file://%s/web/homepage3/disconnect.html", from_u8(resources_dir())); - - wxString strlang = wxGetApp().current_language_code_safe(); - if (strlang != "") { - UrlRight = wxString::Format("file://%s/web/homepage3/disconnect.html?lang=%s", from_u8(resources_dir()), strlang); - } + wxString UrlDisconnect = MakeDisconnectUrl("online"); + m_browserMW->LoadURL(UrlDisconnect); - m_browserMW->LoadURL(UrlRight); - SetWebviewShow("online", true); SetWebviewShow("right", false); + SetWebviewShow("printhistory", false); + } + } + + if (evt.GetInt() == wxWEBVIEW_NAV_ERR_CONNECTION && evt.GetId() == m_browserPH->GetId()) { + m_print_history_LastUrl = m_browserPH->GetCurrentURL(); + + if (m_contentname == "printhistory") { + wxString errurl = evt.GetURL(); + + wxString UrlDisconnect = MakeDisconnectUrl("printhistory"); + m_browserPH->LoadURL(UrlDisconnect); + + SetWebviewShow("printhistory", true); + SetWebviewShow("online", false); + SetWebviewShow("right", false); } } UpdateState(); } -void WebViewPanel::SetMakerworldModelID(std::string ModelID) +void WebViewPanel::OpenMakerworldSearchPage(std::string KeyWord) +{ + if (KeyWord.empty()) return; + + auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code()); + + wxString language_code = wxGetApp().current_language_code().BeforeFirst('_'); + language_code = language_code.ToStdString(); + + m_online_LastUrl = (boost::format("%1%%2%/studio/webview/search?keyword=%3%&from=bambustudio") % host % language_code.mb_str() % UrlEncode(KeyWord)).str(); + + SwitchLeftMenu("online"); +} + +void WebViewPanel::SetMakerworldModelID(std::string ModelID) { auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code()); @@ -1342,6 +1482,19 @@ void WebViewPanel::SetMakerworldModelID(std::string ModelID) m_online_LastUrl = (boost::format("%1%%2%/studio/webview?from=bambustudio") % host % language_code.mb_str()).str(); } +void WebViewPanel::SetPrintHistoryTaskID(int TaskID) +{ + auto host = wxGetApp().get_model_http_url(wxGetApp().app_config->get_country_code()); + + wxString language_code = wxGetApp().current_language_code().BeforeFirst('_'); + language_code = language_code.ToStdString(); + + if (TaskID != 0) + m_print_history_LastUrl = (boost::format("%1%%2%/studio/print-history/%3%?from=bambustudio") % host % language_code.mb_str() % TaskID).str(); + else + m_print_history_LastUrl = (boost::format("%1%%2%/studio/print-history?from=bambustudio") % host % language_code.mb_str()).str(); +} + void WebViewPanel::SwitchWebContent(std::string modelname, int refresh) { m_contentname = modelname; @@ -1357,6 +1510,8 @@ void WebViewPanel::SwitchWebContent(std::string modelname, int refresh) wxString FinalUrl = LabUrl; NetworkAgent *agent = GUI::wxGetApp().getAgent(); if (agent && agent->is_user_login()) { + std::string BambuHost=agent->get_bambulab_host(); + std::string newticket; int ret = agent->request_bind_ticket(&newticket); if (ret == 0) GetJumpUrl(true, newticket, FinalUrl, FinalUrl); @@ -1390,6 +1545,7 @@ void WebViewPanel::SwitchWebContent(std::string modelname, int refresh) SetWebviewShow("online", true); SetWebviewShow("right", false); + SetWebviewShow("printhistory", false); GetSizer()->Layout(); @@ -1397,6 +1553,44 @@ void WebViewPanel::SwitchWebContent(std::string modelname, int refresh) wxGetApp().app_config->set_str("homepage", "online_clicked", "1"); wxGetApp().app_config->save(); wxGetApp().CallAfter([this] { ShowMenuNewTag("online", "0"); }); + + } else if (modelname.compare("printhistory") == 0) { + + if (!m_printhistoryfirst) + { + NetworkAgent *agent = GUI::wxGetApp().getAgent(); + if (agent == nullptr) return; + + std::string BambuHost = agent->get_bambulab_host(); + wxString FinalUrl = m_print_history_LastUrl; + std::string newticket; + int ret = agent->request_bind_ticket(&newticket); + if (ret == 0) { + GetJumpUrl(true, newticket, FinalUrl, FinalUrl); + m_browserPH->LoadURL(FinalUrl); + + m_print_history_LastUrl = ""; + m_printhistoryfirst = true; + } else { + wxString UrlDisconnect = MakeDisconnectUrl("printhistory"); + m_browserPH->LoadURL(UrlDisconnect); + } + } else { + if (m_print_history_LastUrl != "") { + m_browserPH->LoadURL(m_print_history_LastUrl); + + m_print_history_LastUrl = ""; + } else { + + } + } + + SetWebviewShow("online", false); + SetWebviewShow("right", false); + SetWebviewShow("printhistory", true); + + GetSizer()->Layout(); + } else if (modelname.compare("home") == 0 || modelname.compare("recent") == 0 || modelname.compare("manual") == 0) { if (!m_browser) return; @@ -1410,12 +1604,11 @@ void WebViewPanel::SwitchWebContent(std::string modelname, int refresh) WebView::RunScript(m_browser, strJS); - CallAfter([this]{ - SetWebviewShow("online", false); - SetWebviewShow("right", true); + SetWebviewShow("online", false); + SetWebviewShow("printhistory", false); + SetWebviewShow("right", true); - GetSizer()->Layout(); - }); + GetSizer()->Layout(); } } @@ -1452,7 +1645,7 @@ void WebViewPanel::OpenOneMakerlab(std::string url) { void WebViewPanel::CheckMenuNewTag() { std::string sClick = wxGetApp().app_config->get("homepage", "online_clicked"); - if (sClick.compare("1")==0) + if (sClick.compare("1")==0) ShowMenuNewTag("online", "0"); else ShowMenuNewTag("online", "1"); @@ -1466,7 +1659,7 @@ void WebViewPanel::CheckMenuNewTag() { } void WebViewPanel::ShowMenuNewTag(std::string menuname, std::string show) -{ +{ if (!m_browserLeft) return; if (menuname != "online" && menuname != "makerlab") return; @@ -1479,14 +1672,14 @@ void WebViewPanel::ShowMenuNewTag(std::string menuname, std::string show) if (show.compare("1") == 0) m_Res["show"] = 1; - else + else m_Res["show"] = 0; wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', true)); WebView::RunScript(m_browserLeft, strJS); } -void WebViewPanel::SetLeftMenuShow(std::string menuname, int show) +void WebViewPanel::SetLeftMenuShow(std::string menuname, int show) { if (!m_browserLeft) return; @@ -1498,10 +1691,11 @@ void WebViewPanel::SetLeftMenuShow(std::string menuname, int show) wxString strJS = wxString::Format("HandleStudio(%s)", m_Res.dump(-1, ' ', true)); WebView::RunScript(m_browserLeft, strJS); + WebView::RunScript(m_browser, strJS); } -void WebViewPanel::SetWebviewShow(wxString name, bool show) -{ +void WebViewPanel::SetWebviewShow(wxString name, bool show) +{ wxWebView *TmpWeb = nullptr; if (name == "left") TmpWeb = m_browserLeft; @@ -1509,9 +1703,11 @@ void WebViewPanel::SetWebviewShow(wxString name, bool show) TmpWeb = m_browser; else if (name == "online") TmpWeb = m_browserMW; - - if (TmpWeb != nullptr) - { + else if (name == "printhistory") + TmpWeb = m_browserPH; + + if (TmpWeb != nullptr) + { if (show) TmpWeb->Show(); else diff --git a/src/slic3r/GUI/WebViewDialog.hpp b/src/slic3r/GUI/WebViewDialog.hpp index 9fe8138390..48099595cb 100644 --- a/src/slic3r/GUI/WebViewDialog.hpp +++ b/src/slic3r/GUI/WebViewDialog.hpp @@ -97,10 +97,14 @@ class WebViewPanel : public wxPanel void ResetWholePage(); void SetMakerworldModelID(std::string ModelID); + void OpenMakerworldSearchPage(std::string KeyWord); + void SetPrintHistoryTaskID(int TaskID); void SwitchWebContent(std::string modelname, int refresh=0); void SwitchLeftMenu(std::string strMenu); void OpenOneMakerlab(std::string url); + wxString MakeDisconnectUrl(std::string MenuName); + void CheckMenuNewTag(); void ShowMenuNewTag(std::string menuname, std::string show); void SetLeftMenuShow(std::string menuname, int show); @@ -120,6 +124,9 @@ class WebViewPanel : public wxPanel void get_makerlab_list(std::function callback); int get_model_mall_detail_url(std::string *url, std::string id); + std::string m_TaskInfo; + void ShowUserPrintTask(bool bShow); + void UpdateMakerworldLoginStatus(); void SetMakerworldPageLoginStatus(bool login, wxString ticket = ""); @@ -136,12 +143,15 @@ class WebViewPanel : public wxPanel wxWebView* m_browser; wxWebView* m_browserLeft; wxWebView * m_browserMW; + wxWebView *m_browserPH; //PrintHistory std::string m_contentname; - bool m_leftfirst; //Left First Loaded - bool m_onlinefirst; //Online Page First Load - //std::string m_online_spec_id; // Online Page Spec_ID - wxString m_online_type; //recommend & browse - wxString m_online_LastUrl; //PageLastError Url + bool m_leftfirst; //Left First Loaded + bool m_onlinefirst; //Online Page First Load + bool m_printhistoryfirst; //print history first load + //std::string m_online_spec_id; // Online Page Spec_ID + wxString m_online_type; //recommend & browse + wxString m_online_LastUrl; //PageLastError Url + wxString m_print_history_LastUrl; wxBoxSizer *bSizer_toolbar; wxButton * m_button_back; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 9014a32ec5..197e0f74f4 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -43,7 +43,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo else { this->ams_humidity = -1; } - + cans.clear(); for (int i = 0; i < 4; i++) { auto it = ams->trayList.find(std::to_string(i)); @@ -54,6 +54,8 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo info.can_id = it->second->id; info.ctype = it->second->ctype; info.material_name = it->second->get_display_filament_type(); + info.cali_idx = it->second->cali_idx; + info.filament_id = it->second->setting_id; if (!it->second->color.empty()) { info.material_colour = AmsTray::decode_color(it->second->color); } else { @@ -70,18 +72,20 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo } else { info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND; } - + if (!MachineObject::is_bbl_filament(it->second->tag_uid) || !remain_flag) { info.material_remain = 100; } else { info.material_remain = it->second->remain < 0 ? 0 : it->second->remain; info.material_remain = it->second->remain > 100 ? 100 : info.material_remain; } - - + + } else { info.can_id = it->second->id; info.material_name = ""; + info.cali_idx = -1; + info.filament_id = ""; info.ctype = 0; info.material_colour = AMS_TRAY_DEFAULT_COL; info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND; @@ -124,7 +128,7 @@ AMSrefresh::AMSrefresh(wxWindow *parent, int number, Caninfo info, const wxPoint create(parent, wxID_ANY, pos, size); } - AMSrefresh::~AMSrefresh() + AMSrefresh::~AMSrefresh() { if (m_playing_timer) { m_playing_timer->Stop(); @@ -137,7 +141,7 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con { wxWindow::Create(parent, id, pos, size, wxBORDER_NONE); SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); - + Bind(wxEVT_TIMER, &AMSrefresh::on_timer, this); Bind(wxEVT_PAINT, &AMSrefresh::paintEvent, this); Bind(wxEVT_ENTER_WINDOW, &AMSrefresh::OnEnterWindow, this); @@ -174,7 +178,7 @@ void AMSrefresh::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, con SetMaxSize(AMS_REFRESH_SIZE); } -void AMSrefresh::on_timer(wxTimerEvent &event) +void AMSrefresh::on_timer(wxTimerEvent &event) { //if (m_rotation_angle >= m_rfid_bitmap_list.size()) { // m_rotation_angle = 0; @@ -214,7 +218,7 @@ void AMSrefresh::OnLeaveWindow(wxMouseEvent &evt) } void AMSrefresh::OnClick(wxMouseEvent &evt) { - post_event(wxCommandEvent(EVT_AMS_REFRESH_RFID)); + post_event(wxCommandEvent(EVT_AMS_REFRESH_RFID)); } void AMSrefresh::post_event(wxCommandEvent &&event) @@ -312,7 +316,7 @@ void AMSrefresh::DoSetSize(int x, int y, int width, int height, int sizeFlags) /************************************************* Description:AMSextruder **************************************************/ -void AMSextruderImage::TurnOn(wxColour col) +void AMSextruderImage::TurnOn(wxColour col) { if (m_colour != col) { m_colour = col; @@ -320,7 +324,7 @@ void AMSextruderImage::TurnOn(wxColour col) } } -void AMSextruderImage::TurnOff() +void AMSextruderImage::TurnOff() { if (m_colour != AMS_EXTRUDER_DEF_COLOUR) { m_colour = AMS_EXTRUDER_DEF_COLOUR; @@ -328,7 +332,7 @@ void AMSextruderImage::TurnOff() } } -void AMSextruderImage::msw_rescale() +void AMSextruderImage::msw_rescale() { //m_ams_extruder.SetSize(AMS_EXTRUDER_BITMAP_SIZE); //auto image = m_ams_extruder.ConvertToImage(); @@ -336,7 +340,7 @@ void AMSextruderImage::msw_rescale() Refresh(); } -void AMSextruderImage::paintEvent(wxPaintEvent &evt) +void AMSextruderImage::paintEvent(wxPaintEvent &evt) { wxPaintDC dc(this); render(dc); @@ -363,8 +367,8 @@ void AMSextruderImage::render(wxDC &dc) #endif } -void AMSextruderImage::doRender(wxDC &dc) -{ +void AMSextruderImage::doRender(wxDC &dc) +{ auto size = GetSize(); dc.SetPen(*wxTRANSPARENT_PEN); dc.SetBrush(m_colour); @@ -373,9 +377,9 @@ void AMSextruderImage::doRender(wxDC &dc) } -AMSextruderImage::AMSextruderImage(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) +AMSextruderImage::AMSextruderImage(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) { - wxWindow::Create(parent, id, pos, AMS_EXTRUDER_BITMAP_SIZE); + wxWindow::Create(parent, id, pos, AMS_EXTRUDER_BITMAP_SIZE); SetBackgroundColour(*wxWHITE); m_ams_extruder = ScalableBitmap(this, "monitor_ams_extruder",55); @@ -396,7 +400,7 @@ AMSextruder::AMSextruder(wxWindow *parent, wxWindowID id, const wxPoint &pos, co AMSextruder::~AMSextruder() {} void AMSextruder::TurnOn(wxColour col) -{ +{ m_amsSextruder->TurnOn(col); } @@ -481,7 +485,7 @@ void AMSextruder::render(wxDC& dc) void AMSextruder::doRender(wxDC& dc) { - //m_current_colur = + //m_current_colur = wxSize size = GetSize(); dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); @@ -671,7 +675,7 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w m_bitmap_extra_tray_left_selected = ScalableBitmap(this, "extra_ams_tray_left_selected", 80); m_bitmap_extra_tray_right_selected = ScalableBitmap(this, "extra_ams_tray_right_selected", 80); - + m_sizer_body->Add(0, 0, 1, wxEXPAND, 0); m_sizer_body->Add(m_sizer_edit, 0, wxALIGN_CENTER, 0); @@ -681,13 +685,13 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w } void AMSLib::on_enter_window(wxMouseEvent &evt) -{ +{ m_hover = true; Refresh(); } void AMSLib::on_leave_window(wxMouseEvent &evt) -{ +{ m_hover = false; Refresh(); } @@ -733,7 +737,7 @@ void AMSLib::on_left_down(wxMouseEvent &evt) void AMSLib::paintEvent(wxPaintEvent &evt) { - wxPaintDC dc(this); + wxPaintDC dc(this); render(dc); } @@ -853,9 +857,12 @@ void AMSLib::render_extra_text(wxDC& dc) void AMSLib::render_generic_text(wxDC &dc) { bool show_k_value = true; - if (m_obj && (m_obj->cali_version >= 0) && (abs(m_info.k - 0) < 1e-3)) { + if (m_info.material_name.empty()) { show_k_value = false; } + else if (m_info.cali_idx == -1 || (m_obj && (CalibUtils::get_selected_calib_idx(m_obj->pa_calib_tab, m_info.cali_idx) == -1))) { + get_default_k_n_value(m_info.filament_id, m_info.k, m_info.n); + } auto tmp_lib_colour = m_info.material_colour; change_the_opacity(tmp_lib_colour); @@ -892,7 +899,7 @@ void AMSLib::render_generic_text(wxDC &dc) if (m_info.material_name.empty() /*&& m_info.material_state != AMSCanType::AMS_CAN_TYPE_VIRTUAL*/) { auto tsize = dc.GetMultiLineTextExtent("?"); auto pot = wxPoint(0, 0); - + if (m_obj && show_k_value) { pot = wxPoint((libsize.x - tsize.x) / 2, (libsize.y - tsize.y) / 2 - FromDIP(9)); } @@ -1001,21 +1008,21 @@ void AMSLib::render_extra_lib(wxDC& dc) //draw road - + dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); if (m_pass_road) { dc.SetPen(wxPen(m_info.material_colour, 6, wxSOLID)); } - + if (m_can_index == 0 || m_can_index == 3) { dc.DrawLine(size.x / 2, size.y / 2, size.x / 2, size.y); } else { dc.DrawLine(size.x / 2, size.y / 2, size.x / 2, 0); } - + //draw def background dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); @@ -1165,7 +1172,7 @@ void AMSLib::render_generic_lib(wxDC &dc) //draw remain auto alpha = m_info.material_colour.Alpha(); int height = size.y - FromDIP(8); - int curr_height = height * float(m_info.material_remain * 1.0 / 100.0); + int curr_height = height * float(m_info.material_remain * 1.0 / 100.0); dc.SetFont(::Label::Body_13); int top = height - curr_height; @@ -1173,7 +1180,7 @@ void AMSLib::render_generic_lib(wxDC &dc) if (curr_height >= FromDIP(6)) { //transparent - + if (alpha == 0) { dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4)); } @@ -1191,7 +1198,7 @@ void AMSLib::render_generic_lib(wxDC &dc) replace.push_back(fill_replace); m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68, false, false, true, replace); transparent_changed = false; - + } dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4)); } @@ -1384,7 +1391,7 @@ void AMSLib::msw_rescale() Description:AMSRoad **************************************************/ AMSRoad::AMSRoad() : m_road_def_color(AMS_CONTROL_GRAY500), m_road_color(AMS_CONTROL_GRAY500) {} -AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos, const wxSize &size) +AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos, const wxSize &size) : AMSRoad() { m_info = info; @@ -1421,7 +1428,7 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in create(parent, id, pos, virtual_size); } - + Bind(wxEVT_PAINT, &AMSRoad::paintEvent, this); wxWindow::SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); @@ -1430,7 +1437,7 @@ AMSRoad::AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, in auto mouse_pos = ClientToScreen(e.GetPosition()); auto rect = ClientToScreen(wxPoint(0, 0)); - if (mouse_pos.x > rect.x + GetSize().x - FromDIP(40) && + if (mouse_pos.x > rect.x + GetSize().x - FromDIP(40) && mouse_pos.y > rect.y + GetSize().y - FromDIP(40)) { wxCommandEvent show_event(EVT_AMS_SHOW_HUMIDITY_TIPS); wxPostEvent(GetParent()->GetParent(), show_event); @@ -1449,7 +1456,7 @@ void AMSRoad::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const void AMSRoad::Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan) { - if (amsinfo == m_amsinfo && m_info == info && m_canindex == canindex) { + if (amsinfo == m_amsinfo && m_info == info && m_canindex == canindex) { return; } @@ -1566,7 +1573,7 @@ void AMSRoad::doRender(wxDC &dc) if (m_road_color.Alpha() == 0) {dc.SetPen(wxPen(*wxWHITE, m_passroad_width, wxSOLID));} else {dc.SetPen(wxPen(m_road_color, m_passroad_width, wxSOLID));} - + dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); // left pass mode @@ -1824,17 +1831,17 @@ void AMSItem::doRender(wxDC &dc) if(iter->material_state==AMSCanType::AMS_CAN_TYPE_EMPTY){ dc.SetPen(wxPen(wxColor(0, 0, 0))); dc.DrawRoundedRectangle(rect, 2); - - dc.DrawLine(rect.GetRight()-1, rect.GetTop()+1, rect.GetLeft()+1, rect.GetBottom()-1); - } + + dc.DrawLine(rect.GetRight()-1, rect.GetTop()+1, rect.GetLeft()+1, rect.GetBottom()-1); + } else { dc.DrawRoundedRectangle(rect, 2); } } - + } - + left += AMS_ITEM_CUBE_SIZE.x; left += m_space; } @@ -1936,7 +1943,7 @@ void AmsCans::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size amscan->SetBackgroundColour(AMS_CONTROL_DEF_BLOCK_BK_COLOUR); wxBoxSizer* m_sizer_ams = new wxBoxSizer(wxVERTICAL); - + auto m_panel_refresh = new AMSrefresh(amscan, m_can_count, caninfo); auto m_panel_lib = new AMSLib(amscan, caninfo); @@ -2007,7 +2014,7 @@ void AmsCans::AddCan(Caninfo caninfo, int canindex, int maxcan, wxBoxSizer* size sizer->Add(amscan, 0, wxALL, 0); } } - + Canrefreshs* canrefresh = new Canrefreshs; canrefresh->canID = caninfo.can_id; canrefresh->canrefresh = m_panel_refresh; @@ -2034,7 +2041,7 @@ void AmsCans::Update(AMSinfo info) if (i < m_can_count) { refresh->canrefresh->Update(info.ams_id, info.cans[i]); if (!refresh->canrefresh->IsShown()) { refresh->canrefresh->Show();} - + } else { if (refresh->canrefresh->IsShown()) { refresh->canrefresh->Hide();} } @@ -2079,8 +2086,8 @@ void AmsCans::SelectCan(std::string canid) { for (auto i = 0; i < m_can_lib_list.GetCount(); i++) { CanLibs *lib = m_can_lib_list[i]; - if (lib->canLib->m_info.can_id == canid) { - m_canlib_selection = lib->canLib->m_can_index; + if (lib->canLib->m_info.can_id == canid) { + m_canlib_selection = lib->canLib->m_can_index; } } @@ -2099,7 +2106,7 @@ void AmsCans::SelectCan(std::string canid) } } -wxColour AmsCans::GetTagColr(wxString canid) +wxColour AmsCans::GetTagColr(wxString canid) { auto tag_colour = *wxWHITE; for (auto i = 0; i < m_can_lib_list.GetCount(); i++) { @@ -2136,7 +2143,7 @@ void AmsCans::SetAmsStep(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP s return; } - + auto tag_can_index = -1; for (auto i = 0; i < m_can_road_list.GetCount(); i++) { CanRoads *road = m_can_road_list[i]; @@ -2271,7 +2278,7 @@ void AmsCans::doRender(wxDC& dc) } } - + // A1 dc.SetPen(wxPen(AMS_CONTROL_GRAY500, 2, wxSOLID)); dc.SetBrush(wxBrush(*wxTRANSPARENT_BRUSH)); @@ -2311,7 +2318,7 @@ void AmsCans::doRender(wxDC& dc) dc.DrawLine(a4_left, FromDIP(30), a4_left, a4_top); dc.DrawLine(a4_left, a4_top, end_top, a4_top); - + if (!m_road_canid.empty()) { if (m_road_canid == "0") { dc.SetPen(wxPen(m_road_colour, passroad_width, wxSOLID)); @@ -2377,11 +2384,11 @@ void AmsCans::StopRridLoading(wxString canid) } } -void AmsCans::msw_rescale() +void AmsCans::msw_rescale() { for (auto i = 0; i < m_can_refresh_list.GetCount(); i++) { Canrefreshs *refresh = m_can_refresh_list[i]; - refresh->canrefresh->msw_rescale(); + refresh->canrefresh->msw_rescale(); } for (auto i = 0; i < m_can_lib_list.GetCount(); i++) { @@ -2403,7 +2410,7 @@ void AmsCans::show_sn_value(bool show) Description:AMSControl **************************************************/ // WX_DEFINE_OBJARRAY(AmsItemsHash); -AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) +AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size) : wxSimplebook(parent, wxID_ANY, pos, size) , m_Humidity_tip_popup(AmsHumidityTipPopup(this)) , m_ams_introduce_popup(AmsIntroducePopup(this)) @@ -2423,7 +2430,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_simplebook_amsitems->SetSizer(m_sizer_amsitems); m_simplebook_amsitems->Layout(); m_sizer_amsitems->Fit(m_simplebook_amsitems); - + m_panel_top = new wxPanel(m_simplebook_amsitems, wxID_ANY, wxDefaultPosition, wxSize(-1, AMS_CAN_ITEM_HEIGHT_SIZE)); m_sizer_top = new wxBoxSizer(wxHORIZONTAL); m_panel_top->SetSizer(m_sizer_top); @@ -2491,7 +2498,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); }); m_img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP)); }); - + //ams cans m_panel_can = new StaticBox(m_amswin, wxID_ANY, wxDefaultPosition, AMS_CANS_SIZE, wxBORDER_NONE); @@ -2558,22 +2565,22 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons //m_sizer_left_bottom->Add(0, 0, 0, wxEXPAND, 0); StateColor btn_bg_green(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), - std::pair(wxColour(27, 136, 68), StateColor::Pressed), + std::pair(wxColour(27, 136, 68), StateColor::Pressed), std::pair(wxColour(61, 203, 115), StateColor::Hovered), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Normal)); - StateColor btn_bg_white(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), + StateColor btn_bg_white(std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled), std::pair(AMS_CONTROL_DISABLE_COLOUR, StateColor::Pressed), std::pair(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, StateColor::Hovered), std::pair(AMS_CONTROL_WHITE_COLOUR, StateColor::Normal)); - StateColor btn_bd_green(std::pair(wxColour(255,255,254), StateColor::Disabled), + StateColor btn_bd_green(std::pair(wxColour(255,255,254), StateColor::Disabled), std::pair(AMS_CONTROL_BRAND_COLOUR, StateColor::Enabled)); - StateColor btn_bd_white(std::pair(wxColour(255,255,254), StateColor::Disabled), + StateColor btn_bd_white(std::pair(wxColour(255,255,254), StateColor::Disabled), std::pair(wxColour(38, 46, 48), StateColor::Enabled)); - StateColor btn_text_green(std::pair(wxColour(255,255,254), StateColor::Disabled), + StateColor btn_text_green(std::pair(wxColour(255,255,254), StateColor::Disabled), std::pair(wxColour(255,255,254), StateColor::Enabled)); StateColor btn_text_white(std::pair(wxColour(255, 255, 254), StateColor::Disabled), @@ -2592,7 +2599,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_button_extruder_feed->SetBackgroundColor(btn_bg_green); m_button_extruder_feed->SetBorderColor(btn_bd_green); m_button_extruder_feed->SetTextColor(btn_text_green); - + if (wxGetApp().app_config->get("language") == "de_DE") m_button_extruder_feed->SetFont(Label::Body_9); if (wxGetApp().app_config->get("language") == "fr_FR") m_button_extruder_feed->SetFont(Label::Body_9); @@ -2931,7 +2938,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_button_extruder_feed->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AMSControl::on_filament_load), NULL, this); m_button_extruder_back->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(AMSControl::on_filament_unload), NULL, this); - + m_button_ams_setting->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent& e) { m_button_ams_setting->SetBitmap(m_button_ams_setting_hover.bmp()); e.Skip(); @@ -2948,7 +2955,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons }); Bind(EVT_AMS_SHOW_HUMIDITY_TIPS, [this](wxCommandEvent& evt) { - + wxPoint img_pos = ClientToScreen(wxPoint(0, 0)); wxPoint popup_pos(img_pos.x - m_Humidity_tip_popup.GetSize().GetWidth() + FromDIP(150), img_pos.y - FromDIP(80)); m_Humidity_tip_popup.Position(popup_pos, wxSize(0, 0)); @@ -2958,11 +2965,11 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons m_Humidity_tip_popup.set_humidity_level(m_ams_info[i].ams_humidity); } } - + } m_Humidity_tip_popup.Popup(); }); - + m_button_guide->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) { post_event(wxCommandEvent(EVT_AMS_GUIDE_WIKI)); @@ -3006,13 +3013,13 @@ std::string AMSControl::GetCurrentCan(std::string amsid) return current_can; } -wxColour AMSControl::GetCanColour(std::string amsid, std::string canid) +wxColour AMSControl::GetCanColour(std::string amsid, std::string canid) { wxColour col = *wxWHITE; for (auto i = 0; i < m_ams_info.size(); i++) { - if (m_ams_info[i].ams_id == amsid) { + if (m_ams_info[i].ams_id == amsid) { for (auto o = 0; o < m_ams_info[i].cans.size(); o++) { - if (m_ams_info[i].cans[o].can_id == canid) { + if (m_ams_info[i].cans[o].can_id == canid) { col = m_ams_info[i].cans[o].material_colour; } } @@ -3062,9 +3069,9 @@ void AMSControl::EnterGenericAMSMode() m_vams_lib->m_ams_model = AMSModel::GENERIC_AMS; m_ams_tip->SetLabel(_L("AMS")); - m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); + m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); m_img_vams_tip->Enable(); - m_img_amsmapping_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); + m_img_amsmapping_tip->SetBitmap(create_scaled_bitmap("enable_ams", this, 16)); m_img_amsmapping_tip->Enable(); m_simplebook_ams->SetSelection(1); @@ -3089,7 +3096,7 @@ void AMSControl::EnterExtraAMSMode() m_simplebook_amsitems->Show(); m_simplebook_amsitems->SetSelection(1); - + m_vams_lib->m_ams_model = AMSModel::EXTRA_AMS; m_ams_tip->SetLabel(wxEmptyString); m_img_vams_tip->SetBitmap(create_scaled_bitmap("enable_ams_disable", this, 16)); @@ -3263,8 +3270,8 @@ void AMSControl::CreateAms() std::vector ams_info{ams1, ams2, ams3, ams4}; std::vector::iterator it; Freeze(); - for (it = ams_info.begin(); it != ams_info.end(); it++) { - AddAmsItems(*it); + for (it = ams_info.begin(); it != ams_info.end(); it++) { + AddAmsItems(*it); AddAms(*it); AddExtraAms(*it); m_ams_info.push_back(*it); @@ -3274,7 +3281,7 @@ void AMSControl::CreateAms() Thaw(); } -void AMSControl::Reset() +void AMSControl::Reset() { auto caninfo0_0 = Caninfo{"0", "", *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; auto caninfo0_1 = Caninfo{"1", "", *wxWHITE, AMSCanType::AMS_CAN_TYPE_NONE}; @@ -3366,10 +3373,14 @@ void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) m_vams_info.material_name = tray.get_display_filament_type(); m_vams_info.material_colour = tray.get_color(); + m_vams_info.cali_idx = tray.cali_idx; + m_vams_info.filament_id = tray.setting_id; m_vams_lib->m_info.material_name = tray.get_display_filament_type(); m_vams_lib->m_info.material_colour = tray.get_color(); + m_vams_lib->m_info.cali_idx = tray.cali_idx; + m_vams_lib->m_info.filament_id = tray.setting_id; - if (last_k_value != m_vams_info.k || last_n_value != m_vams_info.n) { + if (last_k_value != m_vams_info.k || last_n_value != m_vams_info.n) { m_vams_lib->Refresh(); } } @@ -3380,8 +3391,12 @@ void AMSControl::reset_vams() m_vams_lib->m_info.n = 0; m_vams_lib->m_info.material_name = wxEmptyString; m_vams_lib->m_info.material_colour = AMS_CONTROL_WHITE_COLOUR; + m_vams_lib->m_info.cali_idx = -1; + m_vams_lib->m_info.filament_id = ""; m_vams_info.material_name = wxEmptyString; m_vams_info.material_colour = AMS_CONTROL_WHITE_COLOUR; + m_vams_info.cali_idx = -1; + m_vams_info.filament_id = ""; m_vams_lib->Refresh(); } @@ -3392,10 +3407,10 @@ void AMSControl::UpdateAms(std::vector info, bool is_reset) std::string curr_can_id = GetCurrentCan(curr_ams_id); m_button_area->Layout(); - m_button_area->Fit(); + m_button_area->Fit(); // update item - + if (m_ams_model == AMSModel::GENERIC_AMS){ m_ams_cans_list = m_ams_generic_cans_list; } @@ -3556,7 +3571,7 @@ void AMSControl::SwitchAms(std::string ams_id) for (auto i = 0; i < m_ams_cans_list.GetCount(); i++) { AmsCansWindow *cans = m_ams_cans_list[i]; - if (cans->amsCans->m_info.ams_id == ams_id) { + if (cans->amsCans->m_info.ams_id == ams_id) { if (m_ams_model == AMSModel::GENERIC_AMS) { m_simplebook_generic_cans->SetSelection(cans->amsCans->m_selection); @@ -3668,7 +3683,7 @@ void AMSControl::ShowFilamentTip(bool hasams) m_tip_right_top->Hide(); m_tip_load_info->SetLabelText(wxEmptyString); } - + m_tip_load_info->SetMinSize(AMS_STEP_SIZE); m_tip_load_info->Wrap(AMS_STEP_SIZE.x - FromDIP(5)); m_sizer_right_tip->Layout(); diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index a87f63a702..22ed4ee5c7 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -142,20 +142,24 @@ struct Caninfo AMSCanType material_state; int ctype=0; int material_remain = 100; + int cali_idx = -1; + std::string filament_id; float k = 0.0f; float n = 0.0f; std::vector material_cols; bool operator==(const Caninfo &other) const { - return can_id == other.can_id && - material_name == other.material_name && - material_colour == other.material_colour && + return can_id == other.can_id && + material_name == other.material_name && + material_colour == other.material_colour && material_state == other.material_state && - ctype == other.ctype && - material_remain == other.material_remain && - k == other.k && - n == other.n && + ctype == other.ctype && + material_remain == other.material_remain && + cali_idx == other.cali_idx && + filament_id == other.filament_id && + k == other.k && + n == other.n && material_cols == other.material_cols; } }; diff --git a/src/slic3r/GUI/Widgets/ComboBox.cpp b/src/slic3r/GUI/Widgets/ComboBox.cpp index c930b26ec8..05e8507f76 100644 --- a/src/slic3r/GUI/Widgets/ComboBox.cpp +++ b/src/slic3r/GUI/Widgets/ComboBox.cpp @@ -84,10 +84,13 @@ void ComboBox::SetSelection(int n) return; drop.SetSelection(n); SetLabel(drop.GetValue()); - if (drop.selection >= 0 && drop.iconSize.y > 0) + if (drop.selection >= 0 && drop.iconSize.y > 0 && icons[drop.selection].IsOk()) SetIcon(icons[drop.selection]); + else + SetIcon("drop_down"); } -void ComboBox::SelectAndNotify(int n) { + +void ComboBox::SelectAndNotify(int n) { SetSelection(n); sendComboBoxEvent(); } @@ -107,8 +110,10 @@ void ComboBox::SetValue(const wxString &value) { drop.SetValue(value); SetLabel(value); - if (drop.selection >= 0 && drop.iconSize.y > 0) + if (drop.selection >= 0 && drop.iconSize.y > 0 && icons[drop.selection].IsOk()) SetIcon(icons[drop.selection]); + else + SetIcon("drop_down"); } void ComboBox::SetLabel(const wxString &value) diff --git a/src/slic3r/GUI/Widgets/DropDown.cpp b/src/slic3r/GUI/Widgets/DropDown.cpp index 1ef65e55e3..6db97bd078 100644 --- a/src/slic3r/GUI/Widgets/DropDown.cpp +++ b/src/slic3r/GUI/Widgets/DropDown.cpp @@ -332,7 +332,8 @@ void DropDown::messureSize() wxSize size1 = text_off ? wxSize() : dc.GetMultiLineTextExtent(texts[i]); if (icons[i].IsOk()) { wxSize size2 = GetBmpSize(icons[i]); - if (size2.x > iconSize.x) iconSize = size2; + if (size2.x > iconSize.x) + iconSize = size2; if (!align_icon) { size1.x += size2.x + (text_off ? 0 : 5); } diff --git a/src/slic3r/GUI/Widgets/TabCtrl.cpp b/src/slic3r/GUI/Widgets/TabCtrl.cpp index 27924574ee..9ac68f2cb0 100644 --- a/src/slic3r/GUI/Widgets/TabCtrl.cpp +++ b/src/slic3r/GUI/Widgets/TabCtrl.cpp @@ -108,7 +108,7 @@ int TabCtrl::AppendItem(const wxString &item, btns.push_back(btn); if (btns.size() > 1) sizer->GetItem(sizer->GetItemCount() - 1)->SetMinSize({0, 0}); - sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxALL, TAB_BUTTON_SPACE * 2); + sizer->Add(btn, 0, wxALIGN_CENTER_VERTICAL | wxALL, TAB_BUTTON_SPACE); sizer->AddStretchSpacer(1); relayout(); return btns.size() - 1; @@ -198,8 +198,9 @@ bool TabCtrl::IsVisible(unsigned int item) const void TabCtrl::DoSetSize(int x, int y, int width, int height, int sizeFlags) { + auto size = GetSize(); wxWindow::DoSetSize(x, y, width, height, sizeFlags); - if (sizeFlags & wxSIZE_USE_EXISTING) return; + if (size == GetSize()) return; relayout(); } diff --git a/src/slic3r/GUI/wxMediaCtrl3.cpp b/src/slic3r/GUI/wxMediaCtrl3.cpp index b2a97b19e8..cee4df7290 100644 --- a/src/slic3r/GUI/wxMediaCtrl3.cpp +++ b/src/slic3r/GUI/wxMediaCtrl3.cpp @@ -149,7 +149,7 @@ void wxMediaCtrl3::paintEvent(wxPaintEvent &evt) void wxMediaCtrl3::DoSetSize(int x, int y, int width, int height, int sizeFlags) { wxWindow::DoSetSize(x, y, width, height, sizeFlags); - if (sizeFlags & wxSIZE_USE_EXISTING) return; + if (sizeFlags == wxSIZE_USE_EXISTING) return; wxMediaCtrl_OnSize(this, m_video_size, width, height); std::unique_lock lk(m_mutex); adjust_frame_size(m_frame_size, m_video_size, GetSize()); diff --git a/src/slic3r/Utils/CalibUtils.cpp b/src/slic3r/Utils/CalibUtils.cpp index 224a8788aa..c002c2e994 100644 --- a/src/slic3r/Utils/CalibUtils.cpp +++ b/src/slic3r/Utils/CalibUtils.cpp @@ -23,13 +23,37 @@ static const std::string config_3mf_path = temp_dir + "/test_config.3mf"; static std::string MachineBedTypeString[6] = { "auto", - "suprtack", "pc", "ep", "pei", - "pte" + "pte", + "suprtack" }; +void get_default_k_n_value(const std::string &filament_id, float &k, float &n) +{ + if (filament_id.compare("GFG00") == 0) { + // PETG + k = 0.04; + n = 1.0; + } else if (filament_id.compare("GFB00") == 0 || filament_id.compare("GFB50") == 0) { + // ABS + k = 0.04; + n = 1.0; + } else if (filament_id.compare("GFU01") == 0) { + // TPU + k = 0.2; + n = 1.0; + } else if (filament_id.compare("GFB01") == 0) { + // ASA + k = 0.04; + n = 1.0; + } else { + // PLA , other + k = 0.02; + n = 1.0; + } +} std::string get_calib_mode_name(CalibMode cali_mode, int stage) { @@ -297,7 +321,7 @@ static void read_model_from_file(const std::string& input_file, Model& model) std::vector project_presets; model = Model::read_from_file(input_file, &config, &config_substitutions, strategy, &plate_data_src, &project_presets, - &is_bbl_3mf, &file_version, nullptr, nullptr, nullptr, nullptr, nullptr, plate_to_slice); + &is_bbl_3mf, &file_version, nullptr, nullptr, nullptr, plate_to_slice); model.add_default_instances(); for (auto object : model.objects) @@ -1039,9 +1063,9 @@ bool CalibUtils::process_and_store_3mf(Model *model, const DynamicPrintConfig &f if (params.mode == CalibMode::Calib_PA_Pattern) { ModelInstance *instance = model->objects[0]->instances[0]; - Vec3d offset = model->calib_pa_pattern->get_start_offset() + - Vec3d(model->calib_pa_pattern->handle_xy_size() / 2, -model->calib_pa_pattern->handle_xy_size() / 2 - model->calib_pa_pattern->handle_spacing(), 0); - instance->set_offset(offset); + instance->set_offset(Axis::X, model->calib_pa_pattern->get_start_offset().x() + model->calib_pa_pattern->handle_xy_size() / 2); + instance->set_offset(Axis::Y, model->calib_pa_pattern->get_start_offset().y() - model->calib_pa_pattern->handle_xy_size() / 2 - model->calib_pa_pattern->handle_spacing()); + } else if (model->objects.size() == 1) { ModelInstance *instance = model->objects[0]->instances[0]; diff --git a/src/slic3r/Utils/CalibUtils.hpp b/src/slic3r/Utils/CalibUtils.hpp index 980ba30c1a..6927aa2ae7 100644 --- a/src/slic3r/Utils/CalibUtils.hpp +++ b/src/slic3r/Utils/CalibUtils.hpp @@ -74,5 +74,7 @@ class CalibUtils static void send_to_print(const CalibInfo &calib_info, wxString& error_message, int flow_ratio_mode = 0); // 0: none 1: coarse 2: fine }; +extern void get_default_k_n_value(const std::string &filament_id, float &k, float &n); + } } \ No newline at end of file diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index b32e82e9ea..690f30b0fe 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -95,7 +95,7 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.10.00.06" +#define BAMBU_NETWORK_AGENT_VERSION "01.10.00.08" //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" diff --git a/version.inc b/version.inc index 0b7f5e584a..ca22e5cc81 100644 --- a/version.inc +++ b/version.inc @@ -13,7 +13,7 @@ endif() # The build_version should start from 50 in master branch -set(SLIC3R_VERSION "01.10.00.81") +set(SLIC3R_VERSION "01.10.00.89") string(REPLACE "." "," SLIC3R_COMMA_SEPARATED_VERSION ${SLIC3R_VERSION}) set(SLIC3R_COMMA_SEPARATED_VERSION "${SLIC3R_COMMA_SEPARATED_VERSION}")