mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-10-23 00:31:11 -06:00
Merge branch 'SoftFever:main' into dremel
This commit is contained in:
commit
147428f709
110 changed files with 7610 additions and 5443 deletions
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -5740,6 +5740,9 @@ msgstr ""
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5793,6 +5796,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -12509,7 +12515,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -12518,10 +12524,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -12530,39 +12536,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-10 23:17+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2024-03-17 22:08+0100\n"
|
"PO-Revision-Date: 2024-03-17 22:08+0100\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -3420,22 +3420,16 @@ msgstr ""
|
||||||
"No - Renunciar a utilitzar el mode espiral aquesta vegada"
|
"No - Renunciar a utilitzar el mode espiral aquesta vegada"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Alternate extra wall only works with ensure vertical shell thickness "
|
"Alternate extra wall does't work well when ensure vertical shell thickness "
|
||||||
"disabled. "
|
"is set to All. "
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"El perímetre addicional alternat només funciona amb el gruix vertical de la "
|
|
||||||
"carcassa desactivat. "
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Change these settings automatically? \n"
|
"Change these settings automatically? \n"
|
||||||
"Yes - Disable ensure vertical shell thickness and enable alternate extra "
|
"Yes - Change ensure vertical shell thickness to Moderate and enable "
|
||||||
"wall\n"
|
"alternate extra wall\n"
|
||||||
"No - Dont use alternate extra wall"
|
"No - Dont use alternate extra wall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Canviar aquesta configuració automàticament? \n"
|
|
||||||
"Sí - Desactivar assegurar el gruix vertical de la carcassa i activar un "
|
|
||||||
"perímetre addicional alternat\n"
|
|
||||||
"No - No utilitzar perímetre addicional alternat"
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Prime tower does not work when Adaptive Layer Height or Independent Support "
|
"Prime tower does not work when Adaptive Layer Height or Independent Support "
|
||||||
|
@ -3482,6 +3476,11 @@ msgstr ""
|
||||||
"Mentre s'imprimeix per Objecte, l'extrusora pot xocar amb la faldilla.\n"
|
"Mentre s'imprimeix per Objecte, l'extrusora pot xocar amb la faldilla.\n"
|
||||||
"Per tant, restabliu la capa de faldilla a 1 per evitar-ho."
|
"Per tant, restabliu la capa de faldilla a 1 per evitar-ho."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||||
|
"Reset to 0."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto bed leveling"
|
msgid "Auto bed leveling"
|
||||||
msgstr "Anivellament de llit automàtic"
|
msgstr "Anivellament de llit automàtic"
|
||||||
|
|
||||||
|
@ -6175,6 +6174,9 @@ msgstr "Regió d'inici de sessió"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Mode Silenciós"
|
msgstr "Mode Silenciós"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Comprovar només si hi ha actualitzacions estables"
|
msgstr "Comprovar només si hi ha actualitzacions estables"
|
||||||
|
|
||||||
|
@ -6235,6 +6237,9 @@ msgstr ""
|
||||||
"Si està activat, fa els clculs automàticament cada vegada que canviï el "
|
"Si està activat, fa els clculs automàticament cada vegada que canviï el "
|
||||||
"color."
|
"color."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sincronització automàtica dels perfils de l'usuari ( Impressora/Filament/"
|
"Sincronització automàtica dels perfils de l'usuari ( Impressora/Filament/"
|
||||||
|
@ -7122,8 +7127,8 @@ msgstr "Ignorar"
|
||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Quan graveu timelapse sense capçal d'impressió, es recomana afegir una "
|
"Quan graveu timelapse sense capçal d'impressió, es recomana afegir una "
|
||||||
"\"Torre de Purga Timelapse\" \n"
|
"\"Torre de Purga Timelapse\" \n"
|
||||||
|
@ -8765,19 +8770,13 @@ msgstr ""
|
||||||
"de la impressora per obtenir velocitats més altes."
|
"de la impressora per obtenir velocitats més altes."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The speed setting exceeds the printer's maximum speed (machine_max_speed_x/"
|
"The travel acceleration setting exceeds the printer's maximum travel "
|
||||||
"machine_max_speed_y).\n"
|
"acceleration (machine_max_acceleration_travel).\n"
|
||||||
"Orca will automatically cap the print speed to ensure it doesn't surpass the "
|
"Orca will automatically cap the travel acceleration speed to ensure it "
|
||||||
"printer's capabilities.\n"
|
"doesn't surpass the printer's capabilities.\n"
|
||||||
"You can adjust the maximum speed setting in your printer's configuration to "
|
"You can adjust the machine_max_acceleration_travel value in your printer's "
|
||||||
"get higher speeds."
|
"configuration to get higher speeds."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La configuració de velocitat supera la velocitat màxima de la impressora "
|
|
||||||
"(machine_max_speed_x/machine_max_speed_y).\n"
|
|
||||||
"L'Orca limitarà automàticament la velocitat d'impressió per assegurar-se que "
|
|
||||||
"no superi les capacitats de la impressora.\n"
|
|
||||||
"Podeu ajustar la configuració de velocitat màxima a la configuració de la "
|
|
||||||
"impressora per obtenir velocitats més altes."
|
|
||||||
|
|
||||||
msgid "Generating skirt & brim"
|
msgid "Generating skirt & brim"
|
||||||
msgstr "Generant Faldilla i Vora d'Adherència"
|
msgstr "Generant Faldilla i Vora d'Adherència"
|
||||||
|
@ -9335,8 +9334,8 @@ msgstr ""
|
||||||
"invers a 0 de manera que totes els perímetres interns s'imprimeixin en "
|
"invers a 0 de manera que totes els perímetres interns s'imprimeixin en "
|
||||||
"direccions alternes en capes senars, independentment del seu grau de voladís."
|
"direccions alternes en capes senars, independentment del seu grau de voladís."
|
||||||
|
|
||||||
msgid "Bridge counterbole holes"
|
msgid "Bridge counterbore holes"
|
||||||
msgstr "Pont pels forats esbocats( contraforats )"
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"This option creates bridges for counterbore holes, allowing them to be "
|
"This option creates bridges for counterbore holes, allowing them to be "
|
||||||
|
@ -10656,15 +10655,15 @@ msgstr "Velocitat màxima del ventilador a la capa"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"La velocitat del ventilador augmentarà linealment de zero a la capa "
|
"La velocitat del ventilador augmentarà linealment de zero a la capa "
|
||||||
"\"close_fan_the_first_x_layers\" al màxim a la capa "
|
"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior "
|
"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a "
|
||||||
"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a "
|
"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a "
|
||||||
"la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1."
|
"la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1."
|
||||||
|
|
||||||
msgid "Support interface fan speed"
|
msgid "Support interface fan speed"
|
||||||
|
@ -14425,8 +14424,8 @@ msgstr "Inicia la prova Single-Thread"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Exportar Registre( Log )"
|
msgstr "Exportar Registre( Log )"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Versió d'Studio:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Versió del Sistema:"
|
msgstr "Versió del Sistema:"
|
||||||
|
@ -14434,11 +14433,11 @@ msgstr "Versió del Sistema:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Servidor DNS:"
|
msgstr "Servidor DNS:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Prova BambuLab"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Prova BambuLab:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Prova Bing.com"
|
msgstr "Prova Bing.com"
|
||||||
|
@ -14446,39 +14445,6 @@ msgstr "Prova Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Prova bing.com:"
|
msgstr "Prova bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "Prova HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Prova el servei HTTP:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Prova d'emmagatzematge"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Prova de càrrega d'emmagatzematge:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Prova d'actualització de l'emmagatzematge"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Prova d'Actualització de l'Emmagatzematge:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Prova de descàrrega des de l'emmagatzematge"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Prova de Descàrrega des de l'Emmagatzematge:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Prova de descàrrega de plugins"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Prova de Descàrrega de Plugins:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Prova de pujada a l'emmagatzematge"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Informació del Registre"
|
msgstr "Informació del Registre"
|
||||||
|
|
||||||
|
@ -14587,8 +14553,8 @@ msgstr ""
|
||||||
"Vols reescriure'l?"
|
"Vols reescriure'l?"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"We would rename the presets as \"Vendor Type Serial @printer you "
|
"We would rename the presets as \"Vendor Type Serial @printer you selected"
|
||||||
"selected\". \n"
|
"\". \n"
|
||||||
"To add preset for more printers, Please go to printer selection"
|
"To add preset for more printers, Please go to printer selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus "
|
"Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus "
|
||||||
|
@ -15579,6 +15545,84 @@ msgstr ""
|
||||||
"augmentar adequadament la temperatura del llit pot reduir la probabilitat de "
|
"augmentar adequadament la temperatura del llit pot reduir la probabilitat de "
|
||||||
"deformació."
|
"deformació."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Alternate extra wall only works with ensure vertical shell thickness "
|
||||||
|
#~ "disabled. "
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "El perímetre addicional alternat només funciona amb el gruix vertical de "
|
||||||
|
#~ "la carcassa desactivat. "
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Change these settings automatically? \n"
|
||||||
|
#~ "Yes - Disable ensure vertical shell thickness and enable alternate extra "
|
||||||
|
#~ "wall\n"
|
||||||
|
#~ "No - Dont use alternate extra wall"
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Canviar aquesta configuració automàticament? \n"
|
||||||
|
#~ "Sí - Desactivar assegurar el gruix vertical de la carcassa i activar un "
|
||||||
|
#~ "perímetre addicional alternat\n"
|
||||||
|
#~ "No - No utilitzar perímetre addicional alternat"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
#~ "Orca will automatically cap the print speed to ensure it doesn't surpass "
|
||||||
|
#~ "the printer's capabilities.\n"
|
||||||
|
#~ "You can adjust the maximum speed setting in your printer's configuration "
|
||||||
|
#~ "to get higher speeds."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "La configuració de velocitat supera la velocitat màxima de la impressora "
|
||||||
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
#~ "L'Orca limitarà automàticament la velocitat d'impressió per assegurar-se "
|
||||||
|
#~ "que no superi les capacitats de la impressora.\n"
|
||||||
|
#~ "Podeu ajustar la configuració de velocitat màxima a la configuració de la "
|
||||||
|
#~ "impressora per obtenir velocitats més altes."
|
||||||
|
|
||||||
|
#~ msgid "Bridge counterbole holes"
|
||||||
|
#~ msgstr "Pont pels forats esbocats( contraforats )"
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Versió d'Studio:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Prova BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Prova BambuLab:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "Prova HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Prova el servei HTTP:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Prova d'emmagatzematge"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Prova de càrrega d'emmagatzematge:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Prova d'actualització de l'emmagatzematge"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Prova d'Actualització de l'Emmagatzematge:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Prova de descàrrega des de l'emmagatzematge"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Prova de Descàrrega des de l'Emmagatzematge:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Prova de descàrrega de plugins"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Prova de Descàrrega de Plugins:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Prova de pujada a l'emmagatzematge"
|
||||||
|
|
||||||
#~ msgid "Resize"
|
#~ msgid "Resize"
|
||||||
#~ msgstr "Redimensionar"
|
#~ msgstr "Redimensionar"
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2023-09-30 15:15+0200\n"
|
"PO-Revision-Date: 2023-09-30 15:15+0200\n"
|
||||||
"Last-Translator: René Mošner <Renemosner@seznam.cz>\n"
|
"Last-Translator: René Mošner <Renemosner@seznam.cz>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6069,6 +6069,9 @@ msgstr "Región přihlášení"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Tajný Režim"
|
msgstr "Tajný Režim"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6124,6 +6127,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Automatická synchronizace uživatelských předvoleb (Tiskárna/Filament/Proces)"
|
"Automatická synchronizace uživatelských předvoleb (Tiskárna/Filament/Proces)"
|
||||||
|
@ -13772,7 +13778,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13781,10 +13787,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13793,39 +13799,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6237,6 +6237,9 @@ msgstr "Login-Region"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Unsichtbarer Modus"
|
msgstr "Unsichtbarer Modus"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr "Netzwerk-Plugin aktivieren"
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Nur nach stabilen Updates suchen"
|
msgstr "Nur nach stabilen Updates suchen"
|
||||||
|
|
||||||
|
@ -6292,6 +6295,9 @@ msgstr "Reinigungsvolumen: Auto-Berechnung bei jeder Farbänderung."
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "Wenn aktiviert, wird bei jeder Farbänderung automatisch berechnet."
|
msgstr "Wenn aktiviert, wird bei jeder Farbänderung automatisch berechnet."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "Netzwerk"
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "Benutzerprofile automatisch synchronisieren (Drucker/Filament/Prozess)"
|
msgstr "Benutzerprofile automatisch synchronisieren (Drucker/Filament/Prozess)"
|
||||||
|
|
||||||
|
@ -8853,8 +8859,9 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Die Beschleunigungseinstellung für das Verfahren überschreitet die maximale "
|
"Die Beschleunigungseinstellung für das Verfahren überschreitet die maximale "
|
||||||
"Verfahrensbeschleunigung des Druckers (machine_max_acceleration_travel).\n"
|
"Verfahrensbeschleunigung des Druckers (machine_max_acceleration_travel).\n"
|
||||||
"Orca wird automatisch die Verfahrensbeschleunigungsgeschwindigkeit begrenzen, "
|
"Orca wird automatisch die Verfahrensbeschleunigungsgeschwindigkeit "
|
||||||
"um sicherzustellen, dass sie nicht die Fähigkeiten des Druckers überschreitet.\n"
|
"begrenzen, um sicherzustellen, dass sie nicht die Fähigkeiten des Druckers "
|
||||||
|
"überschreitet.\n"
|
||||||
"Sie können den Wert von machine_max_acceleration_travel in der Konfiguration "
|
"Sie können den Wert von machine_max_acceleration_travel in der Konfiguration "
|
||||||
"Ihres Druckers anpassen, um höhere Geschwindigkeiten zu erreichen."
|
"Ihres Druckers anpassen, um höhere Geschwindigkeiten zu erreichen."
|
||||||
|
|
||||||
|
@ -14505,8 +14512,8 @@ msgstr "Starten Sie den Test mit einem Thread"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Protokoll exportieren"
|
msgstr "Protokoll exportieren"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Studio Version:"
|
msgstr "OrcaSlicer Version:"
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "System Version:"
|
msgstr "System Version:"
|
||||||
|
@ -14514,11 +14521,11 @@ msgstr "System Version:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "DNS Server:"
|
msgstr "DNS Server:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Test BambuLab"
|
msgstr "Test OrcaSlicer(GitHub)"
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Test BambuLab:"
|
msgstr "Test OrcaSlicer(GitHub):"
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Test Bing.com"
|
msgstr "Test Bing.com"
|
||||||
|
@ -14526,39 +14533,6 @@ msgstr "Test Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Test bing.com:"
|
msgstr "Test bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "Test HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Test HTTP Service:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Test Speicher"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Test Speicher hochladen:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Test Speicher Upgrade"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Test Speicher Upgrade:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Test Speicher Download"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Test Speicher Download:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Test Plugin Download"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Test Plugin Download:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Test Speicher hochladen"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Protokoll Info"
|
msgstr "Protokoll Info"
|
||||||
|
|
||||||
|
@ -15663,6 +15637,48 @@ msgstr ""
|
||||||
"wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die "
|
"wie z.B. ABS, durch eine entsprechende Erhöhung der Heizbetttemperatur die "
|
||||||
"Wahrscheinlichkeit von Verwerfungen verringert werden kann."
|
"Wahrscheinlichkeit von Verwerfungen verringert werden kann."
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Studio Version:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Test BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Test BambuLab:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "Test HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Test HTTP Service:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Test Speicher"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Test Speicher hochladen:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Test Speicher Upgrade"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Test Speicher Upgrade:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Test Speicher Download"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Test Speicher Download:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Test Plugin Download"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Test Plugin Download:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Test Speicher hochladen"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -5961,6 +5961,9 @@ msgstr "Login Region"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6016,6 +6019,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "Auto sync user presets (Printer/Filament/Process)"
|
msgstr "Auto sync user presets (Printer/Filament/Process)"
|
||||||
|
|
||||||
|
@ -13217,7 +13223,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13226,10 +13232,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13238,39 +13244,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Carlos Fco. Caruncho Serrano <puzzlero@gmail.com>\n"
|
"Last-Translator: Carlos Fco. Caruncho Serrano <puzzlero@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6195,6 +6195,9 @@ msgstr "Región de inicio de sesión"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Modo invisible"
|
msgstr "Modo invisible"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Buscar sólo actualizaciones estables"
|
msgstr "Buscar sólo actualizaciones estables"
|
||||||
|
|
||||||
|
@ -6252,6 +6255,9 @@ msgstr "Volumenes de descarga: Auto calcular en cada cambio de color."
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "Si está activado, auto calcula en cada cambio de color."
|
msgstr "Si está activado, auto calcula en cada cambio de color."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sincronización automática de los perfiles del usuario (Impresora/Filamento/"
|
"Sincronización automática de los perfiles del usuario (Impresora/Filamento/"
|
||||||
|
@ -14456,8 +14462,8 @@ msgstr "Iniciar Prueba Monotarea"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Exportar Registro"
|
msgstr "Exportar Registro"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Versión de Orca:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Versión de Sistema:"
|
msgstr "Versión de Sistema:"
|
||||||
|
@ -14465,11 +14471,11 @@ msgstr "Versión de Sistema:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Servidor DNS:"
|
msgstr "Servidor DNS:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Prueba OrcaSlicer"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Prueba OrcaSlicer:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Prueba Bing.com"
|
msgstr "Prueba Bing.com"
|
||||||
|
@ -14477,39 +14483,6 @@ msgstr "Prueba Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Prueba Bing,.com:"
|
msgstr "Prueba Bing,.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "Prueba HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Prueba Servicio HTTP:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Prueba de almacenamiento"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Prueba de Carga de Almacenamiento:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Prueba de actualización de almacenamiento"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Prueba de Actualización de Almacenamiento:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Prueba de descarga de almacenamiento"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Prueba de Descarga de Almacenamiento:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Prueba de descarga de plugin"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Prueba de Descarga de Plugin:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Prueba de Carga de Almacenamiento"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Información de Registro"
|
msgstr "Información de Registro"
|
||||||
|
|
||||||
|
@ -15610,6 +15583,48 @@ msgstr ""
|
||||||
"aumentar adecuadamente la temperatura del lecho térmico puede reducir la "
|
"aumentar adecuadamente la temperatura del lecho térmico puede reducir la "
|
||||||
"probabilidad de deformaciones."
|
"probabilidad de deformaciones."
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Versión de Orca:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Prueba OrcaSlicer"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Prueba OrcaSlicer:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "Prueba HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Prueba Servicio HTTP:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Prueba de almacenamiento"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Prueba de Carga de Almacenamiento:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Prueba de actualización de almacenamiento"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Prueba de Actualización de Almacenamiento:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Prueba de descarga de almacenamiento"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Prueba de Descarga de Almacenamiento:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Prueba de descarga de plugin"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Prueba de Descarga de Plugin:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Prueba de Carga de Almacenamiento"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -6,7 +6,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Guislain Cyril, Thomas Lété\n"
|
"Language-Team: Guislain Cyril, Thomas Lété\n"
|
||||||
|
@ -6222,6 +6222,9 @@ msgstr "Région d'origine"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Mode privé"
|
msgstr "Mode privé"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Vérifier les mises à jour stables uniquement"
|
msgstr "Vérifier les mises à jour stables uniquement"
|
||||||
|
|
||||||
|
@ -6282,6 +6285,9 @@ msgstr ""
|
||||||
"Si cette option est activée, le calcul se fera automatiquement à chaque "
|
"Si cette option est activée, le calcul se fera automatiquement à chaque "
|
||||||
"changement de couleur."
|
"changement de couleur."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Synchronisation automatique des pré-réglages utilisateur (Imprimante/"
|
"Synchronisation automatique des pré-réglages utilisateur (Imprimante/"
|
||||||
|
@ -14603,8 +14609,8 @@ msgstr "Démarrer le test Single-Thread"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Exportation du journal"
|
msgstr "Exportation du journal"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Version de Studio :"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Version du système :"
|
msgstr "Version du système :"
|
||||||
|
@ -14612,11 +14618,11 @@ msgstr "Version du système :"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Serveur DNS :"
|
msgstr "Serveur DNS :"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Test BambuLab"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Test BambuLab :"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Test Bing.com"
|
msgstr "Test Bing.com"
|
||||||
|
@ -14624,39 +14630,6 @@ msgstr "Test Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Test bing.com :"
|
msgstr "Test bing.com :"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Test du service HTTP :"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Test du stockage"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Test de l’envoi du stockage:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Test de la mise à niveau du stockage"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Test de la mise à niveau du stockage :"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Test du téléchargement du stockage"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Test du téléchargement du stockage :"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Test du téléchargement du plugin"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Test du téléchargement du plugin :"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Test de l’envoi du stockage"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Journal de bord"
|
msgstr "Journal de bord"
|
||||||
|
|
||||||
|
@ -15775,6 +15748,45 @@ msgstr ""
|
||||||
"déformer, tels que l’ABS, une augmentation appropriée de la température du "
|
"déformer, tels que l’ABS, une augmentation appropriée de la température du "
|
||||||
"plateau chauffant peut réduire la probabilité de déformation."
|
"plateau chauffant peut réduire la probabilité de déformation."
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Version de Studio :"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Test BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Test BambuLab :"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Test du service HTTP :"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Test du stockage"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Test de l’envoi du stockage:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Test de la mise à niveau du stockage"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Test de la mise à niveau du stockage :"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Test du téléchargement du stockage"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Test du téléchargement du stockage :"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Test du téléchargement du plugin"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Test du téléchargement du plugin :"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Test de l’envoi du stockage"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"Language: hu\n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -5992,6 +5992,9 @@ msgstr "Régió"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6047,6 +6050,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Felhasználói beállítások automatikus szinkronizálása (Nyomtató/Filament/"
|
"Felhasználói beállítások automatikus szinkronizálása (Nyomtató/Filament/"
|
||||||
|
@ -13310,7 +13316,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13319,10 +13325,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13331,39 +13337,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -2971,8 +2971,8 @@ msgstr "Slot AMS"
|
||||||
msgid ""
|
msgid ""
|
||||||
"Note: Only the AMS slots loaded with the same material type can be selected."
|
"Note: Only the AMS slots loaded with the same material type can be selected."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nota: sono selezionabili solo gli slot AMS caricati con lo stesso tipo "
|
"Nota: sono selezionabili solo gli slot AMS caricati con lo stesso tipo di "
|
||||||
"di materiale."
|
"materiale."
|
||||||
|
|
||||||
msgid "Enable AMS"
|
msgid "Enable AMS"
|
||||||
msgstr "Abilita AMS"
|
msgstr "Abilita AMS"
|
||||||
|
@ -3443,8 +3443,8 @@ msgid ""
|
||||||
"No - Dont use alternate extra wall"
|
"No - Dont use alternate extra wall"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Modificare automaticamente queste impostazioni? \n"
|
"Modificare automaticamente queste impostazioni? \n"
|
||||||
"Sì - Modifica Garantisci spessore verticale del guscio a Moderato e "
|
"Sì - Modifica Garantisci spessore verticale del guscio a Moderato e abilita "
|
||||||
"abilita Parete Aggiuntiva Alternativa\n"
|
"Parete Aggiuntiva Alternativa\n"
|
||||||
"No - Non utilizzare Parete Aggiuntiva Alternativa"
|
"No - Non utilizzare Parete Aggiuntiva Alternativa"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -3494,8 +3494,7 @@ msgid ""
|
||||||
"seam_slope_start_height need to be smaller than layer_height.\n"
|
"seam_slope_start_height need to be smaller than layer_height.\n"
|
||||||
"Reset to 0."
|
"Reset to 0."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"seam_slope_start_height deve essere inferiore a layer_height"
|
"seam_slope_start_height deve essere inferiore a layer_heightReimpostare a 0."
|
||||||
"Reimpostare a 0."
|
|
||||||
|
|
||||||
msgid "Auto bed leveling"
|
msgid "Auto bed leveling"
|
||||||
msgstr "Livellamento automatico piano"
|
msgstr "Livellamento automatico piano"
|
||||||
|
@ -6189,6 +6188,9 @@ msgstr "Regione di accesso"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Modalità invisibile"
|
msgstr "Modalità invisibile"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Verifica solo la disponibilità di aggiornamenti stabili"
|
msgstr "Verifica solo la disponibilità di aggiornamenti stabili"
|
||||||
|
|
||||||
|
@ -6246,6 +6248,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "Se abilitato, calcola automaticamente ogni volta che il colore cambia."
|
msgstr "Se abilitato, calcola automaticamente ogni volta che il colore cambia."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sincronizzazione automatica preset utente (stampante/filamento/processo)"
|
"Sincronizzazione automatica preset utente (stampante/filamento/processo)"
|
||||||
|
@ -6871,8 +6876,8 @@ msgid ""
|
||||||
"Caution to use! Flow calibration on Textured PEI Plate may fail due to the "
|
"Caution to use! Flow calibration on Textured PEI Plate may fail due to the "
|
||||||
"scattered surface."
|
"scattered surface."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Precauzioni per l'uso! La calibrazione del flusso sulla piastra PEI testurizzata "
|
"Precauzioni per l'uso! La calibrazione del flusso sulla piastra PEI "
|
||||||
"può fallire a causa della superficie irregolare."
|
"testurizzata può fallire a causa della superficie irregolare."
|
||||||
|
|
||||||
msgid "Automatic flow calibration using Micro Lidar"
|
msgid "Automatic flow calibration using Micro Lidar"
|
||||||
msgstr "Calibrazione automatica del flusso tramite Micro Lidar"
|
msgstr "Calibrazione automatica del flusso tramite Micro Lidar"
|
||||||
|
@ -8771,8 +8776,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'impostazione del jerk supera quella massima prevista dalla stampante. "
|
"L'impostazione del jerk supera quella massima prevista dalla stampante. "
|
||||||
"(machine_max_jerk_x/machine_max_jerk_y).\n"
|
"(machine_max_jerk_x/machine_max_jerk_y).\n"
|
||||||
"Orca limiterà automaticamente la velocità del jerk per garantire che "
|
"Orca limiterà automaticamente la velocità del jerk per garantire che non "
|
||||||
"non superi le capacità della stampante.\n"
|
"superi le capacità della stampante.\n"
|
||||||
"È possibile regolare l'impostazione di jerk massimo nella configurazione "
|
"È possibile regolare l'impostazione di jerk massimo nella configurazione "
|
||||||
"della stampante per ottenere velocità più elevate."
|
"della stampante per ottenere velocità più elevate."
|
||||||
|
|
||||||
|
@ -8786,8 +8791,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"L'impostazione di accelerazione supera quella massima prevista dalla "
|
"L'impostazione di accelerazione supera quella massima prevista dalla "
|
||||||
"stampante. (machine_max_acceleration_extruding).\n"
|
"stampante. (machine_max_acceleration_extruding).\n"
|
||||||
"Orca limiterà automaticamente la velocità di accelerazione per garantire "
|
"Orca limiterà automaticamente la velocità di accelerazione per garantire che "
|
||||||
"che non superi le capacità della stampante.\n"
|
"non superi le capacità della stampante.\n"
|
||||||
"È possibile regolare il valore machine_max_acceleration_extruding nella "
|
"È possibile regolare il valore machine_max_acceleration_extruding nella "
|
||||||
"configurazione della stampante per ottenere velocità più elevate."
|
"configurazione della stampante per ottenere velocità più elevate."
|
||||||
|
|
||||||
|
@ -9769,15 +9774,16 @@ msgid ""
|
||||||
"All: Add solid infill for all suitable sloping surfaces\n"
|
"All: Add solid infill for all suitable sloping surfaces\n"
|
||||||
"Default value is All."
|
"Default value is All."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Aggiunge un riempimento solido in prossimità di superfici inclinate "
|
"Aggiunge un riempimento solido in prossimità di superfici inclinate per "
|
||||||
"per garantire lo spessore verticale del guscio (layers solidi superiori e "
|
"garantire lo spessore verticale del guscio (layers solidi superiori e "
|
||||||
"inferiori)\n"
|
"inferiori)\n"
|
||||||
"Nessuno: Non viene aggiunto alcun riempimento solido. Attenzione: utilizzare "
|
"Nessuno: Non viene aggiunto alcun riempimento solido. Attenzione: utilizzare "
|
||||||
"questa opzione con precauzione se il modello presenta superfici inclinate\n"
|
"questa opzione con precauzione se il modello presenta superfici inclinate\n"
|
||||||
"Solo Critico: Evitare l'aggiunta di riempimenti solidi per le pareti\n"
|
"Solo Critico: Evitare l'aggiunta di riempimenti solidi per le pareti\n"
|
||||||
"Moderato: Aggiungere il riempimento solido solo per le superfici fortemente "
|
"Moderato: Aggiungere il riempimento solido solo per le superfici fortemente "
|
||||||
"inclinate.\n"
|
"inclinate.\n"
|
||||||
"Tutto: aggiunge un riempimento solido per tutte le superfici inclinate idonee\n"
|
"Tutto: aggiunge un riempimento solido per tutte le superfici inclinate "
|
||||||
|
"idonee\n"
|
||||||
"Il valore predefinito è Tutto."
|
"Il valore predefinito è Tutto."
|
||||||
|
|
||||||
msgid "Critical Only"
|
msgid "Critical Only"
|
||||||
|
@ -14470,8 +14476,8 @@ msgstr "Avvia test a thread singolo"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Esporta Log"
|
msgstr "Esporta Log"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Versione Studio:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Versione del sistema:"
|
msgstr "Versione del sistema:"
|
||||||
|
@ -14479,11 +14485,11 @@ msgstr "Versione del sistema:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Server DNS:"
|
msgstr "Server DNS:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Test BambuLab"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Test BambuLab:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Test Bing.com"
|
msgstr "Test Bing.com"
|
||||||
|
@ -14491,39 +14497,6 @@ msgstr "Test Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Test bing.com:"
|
msgstr "Test bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "Test HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Test servizio HTTP:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Test Archiviazione"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Test Caricamento dell'archiviazione:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Test l'aggiornamento dell'archiviazione"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Test l'aggiornamento dell'archiviazione:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Test Download dell'archiviazione "
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Test Download dell'archiviazione:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Test plugin download"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Test Plugin Download:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Test Caricamento dell'archiviazione"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Informazioni sul registro"
|
msgstr "Informazioni sul registro"
|
||||||
|
|
||||||
|
@ -15627,12 +15600,54 @@ msgstr ""
|
||||||
"aumentare in modo appropriato la temperatura del piano riscaldato può "
|
"aumentare in modo appropriato la temperatura del piano riscaldato può "
|
||||||
"ridurre la probabilità di deformazione."
|
"ridurre la probabilità di deformazione."
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Versione Studio:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Test BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Test BambuLab:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "Test HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Test servizio HTTP:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Test Archiviazione"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Test Caricamento dell'archiviazione:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Test l'aggiornamento dell'archiviazione"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Test l'aggiornamento dell'archiviazione:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Test Download dell'archiviazione "
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Test Download dell'archiviazione:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Test plugin download"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Test Plugin Download:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Test Caricamento dell'archiviazione"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Alternate extra wall only works with ensure vertical shell thickness "
|
#~ "Alternate extra wall only works with ensure vertical shell thickness "
|
||||||
#~ "disabled. "
|
#~ "disabled. "
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "L'opzione Parete Aggiuntiva Alternativa funziona solo con la disattivazione "
|
#~ "L'opzione Parete Aggiuntiva Alternativa funziona solo con la "
|
||||||
#~ "dell'opzione Garantisci spessore verticale del guscio"
|
#~ "disattivazione dell'opzione Garantisci spessore verticale del guscio"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Change these settings automatically? \n"
|
#~ "Change these settings automatically? \n"
|
||||||
|
@ -15641,8 +15656,8 @@ msgstr ""
|
||||||
#~ "No - Dont use alternate extra wall"
|
#~ "No - Dont use alternate extra wall"
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Modificare automaticamente queste impostazioni? \n"
|
#~ "Modificare automaticamente queste impostazioni? \n"
|
||||||
#~ "Sì - Disabilita Garantisci spessore verticale del guscio e abilita "
|
#~ "Sì - Disabilita Garantisci spessore verticale del guscio e abilita Parete "
|
||||||
#~ "Parete Aggiuntiva Alternativa\n"
|
#~ "Aggiuntiva Alternativa\n"
|
||||||
#~ "No - Non utilizzare una Parete Aggiuntiva Alternativa"
|
#~ "No - Non utilizzare una Parete Aggiuntiva Alternativa"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -5878,6 +5878,9 @@ msgstr "地域"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -5933,6 +5936,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "ユーザープリセットの自動同期 (プリンター/フィラメント/プロセス)"
|
msgstr "ユーザープリセットの自動同期 (プリンター/フィラメント/プロセス)"
|
||||||
|
|
||||||
|
@ -12936,7 +12942,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -12945,10 +12951,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -12957,39 +12963,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2024-03-15 23:12+0900\n"
|
"PO-Revision-Date: 2024-03-15 23:12+0900\n"
|
||||||
"Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply."
|
"Last-Translator: Hotsolidinfill <138652683+Hotsolidinfill@users.noreply."
|
||||||
"github.com>, crwusiz <crwusiz@naver.com>\n"
|
"github.com>, crwusiz <crwusiz@naver.com>\n"
|
||||||
|
@ -6021,6 +6021,9 @@ msgstr "로그인 지역"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "스텔스 모드"
|
msgstr "스텔스 모드"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "안정적인 업데이트만 확인"
|
msgstr "안정적인 업데이트만 확인"
|
||||||
|
|
||||||
|
@ -6076,6 +6079,9 @@ msgstr "플러시 볼륨: 색상이 변경될 때마다 자동 계산됩니다."
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "활성화하면 색상이 변경될 때마다 자동 계산됩니다."
|
msgstr "활성화하면 색상이 변경될 때마다 자동 계산됩니다."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "사용자 사전 설정 자동 동기화(프린터/필라멘트/프로세스)"
|
msgstr "사용자 사전 설정 자동 동기화(프린터/필라멘트/프로세스)"
|
||||||
|
|
||||||
|
@ -13795,8 +13801,8 @@ msgstr "단일 스레드 테스트 시작"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "로그 내보내기"
|
msgstr "로그 내보내기"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "스튜디오 버전:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "시스템 버전:"
|
msgstr "시스템 버전:"
|
||||||
|
@ -13804,11 +13810,11 @@ msgstr "시스템 버전:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "DNS 서버:"
|
msgstr "DNS 서버:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "테스트 뱀부랩"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "테스트 뱀부랩:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "테스트 Bing.com"
|
msgstr "테스트 Bing.com"
|
||||||
|
@ -13816,39 +13822,6 @@ msgstr "테스트 Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "테스트 Bing.com:"
|
msgstr "테스트 Bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "테스트 HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "테스트 HTTP 서비스:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "테스트 저장소"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "테스트 저장소 업로드:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "테스트 저장소 업그레이드"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "테스트 저장소 업그레이드:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "테스트 저장소 다운로드"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "테스트 저장소 다운로드:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "테스트 플러그인 다운로드"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "테스트 플러그인 다운로드:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "테스트 저장소 업로드"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "로그 정보"
|
msgstr "로그 정보"
|
||||||
|
|
||||||
|
@ -14901,6 +14874,48 @@ msgstr ""
|
||||||
"ABS 등 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이"
|
"ABS 등 뒤틀림이 발생하기 쉬운 소재를 출력할 때, 히트베드 온도를 적절하게 높이"
|
||||||
"면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?"
|
"면 뒤틀림 가능성을 줄일 수 있다는 사실을 알고 계셨나요?"
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "스튜디오 버전:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "테스트 뱀부랩"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "테스트 뱀부랩:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "테스트 HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "테스트 HTTP 서비스:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "테스트 저장소"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "테스트 저장소 업로드:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "테스트 저장소 업그레이드"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "테스트 저장소 업그레이드:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "테스트 저장소 다운로드"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "테스트 저장소 다운로드:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "테스트 플러그인 다운로드"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "테스트 플러그인 다운로드:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "테스트 저장소 업로드"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"Language: nl\n"
|
"Language: nl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -6043,6 +6043,9 @@ msgstr "Inlogregio"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6099,6 +6102,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/"
|
"Gebruikersvoorinstellingen automatisch synchroniseren (printer/filament/"
|
||||||
|
@ -13424,7 +13430,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13433,10 +13439,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13445,39 +13451,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: \n"
|
"PO-Revision-Date: \n"
|
||||||
"Last-Translator: Krzysztof Morga <tlumaczeniebs@gmail.com>\n"
|
"Last-Translator: Krzysztof Morga <tlumaczeniebs@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6170,6 +6170,9 @@ msgstr "Region Logowania"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Tryb \"Niewidzialny\""
|
msgstr "Tryb \"Niewidzialny\""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Sprawdzaj aktualizacje (tylko wersje stabilne)"
|
msgstr "Sprawdzaj aktualizacje (tylko wersje stabilne)"
|
||||||
|
|
||||||
|
@ -6229,6 +6232,9 @@ msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Jeśli włączone, automatyczne obliczanie za każdym razem, gdy zmieni się kolor"
|
"Jeśli włączone, automatyczne obliczanie za każdym razem, gdy zmieni się kolor"
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Automatyczna synchronizacja profili użytkownika (Drukarka/Filament/Proces)"
|
"Automatyczna synchronizacja profili użytkownika (Drukarka/Filament/Proces)"
|
||||||
|
@ -7103,8 +7109,8 @@ msgstr "Ignoruj"
|
||||||
msgid ""
|
msgid ""
|
||||||
"When recording timelapse without toolhead, it is recommended to add a "
|
"When recording timelapse without toolhead, it is recommended to add a "
|
||||||
"\"Timelapse Wipe Tower\" \n"
|
"\"Timelapse Wipe Tower\" \n"
|
||||||
"by right-click the empty position of build plate and choose \"Add "
|
"by right-click the empty position of build plate and choose \"Add Primitive"
|
||||||
"Primitive\"->\"Timelapse Wipe Tower\"."
|
"\"->\"Timelapse Wipe Tower\"."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Podczas nagrywania timelapse'a bez głowicy narzędziowej zaleca się dodanie "
|
"Podczas nagrywania timelapse'a bez głowicy narzędziowej zaleca się dodanie "
|
||||||
"\"Timelaps - Wieża Czyszcząca\" \n"
|
"\"Timelaps - Wieża Czyszcząca\" \n"
|
||||||
|
@ -8944,10 +8950,10 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Unikaj ruchów nad obrysami-\n"
|
"Unikaj ruchów nad obrysami-\n"
|
||||||
"Maksymalna długość objazdu przy unikaniu przejeżdżania nad obrysami. Jeśli "
|
"Maksymalna długość objazdu przy unikaniu przejeżdżania nad obrysami. Jeśli "
|
||||||
"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad "
|
"objazd miałby wykroczyć poza tę wartość, funkcja \"unikaj ruchów nad obrysami"
|
||||||
"obrysami\" zostanie zignorowana dla tej ścieżki. Długość objazdu można "
|
"\" zostanie zignorowana dla tej ścieżki. Długość objazdu można zdefiniować "
|
||||||
"zdefiniować jako wartość absolutna lub obliczona procentowo (np. 50%) z "
|
"jako wartość absolutna lub obliczona procentowo (np. 50%) z długości ruchu "
|
||||||
"długości ruchu bezpośredniego."
|
"bezpośredniego."
|
||||||
|
|
||||||
msgid "mm or %"
|
msgid "mm or %"
|
||||||
msgstr "mm lub %"
|
msgstr "mm lub %"
|
||||||
|
@ -9507,9 +9513,9 @@ msgid ""
|
||||||
"quality for needle and small details"
|
"quality for needle and small details"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Włącz tę opcję, aby zwolnić prędkość druku, aby czas końcowej warstwy nie "
|
"Włącz tę opcję, aby zwolnić prędkość druku, aby czas końcowej warstwy nie "
|
||||||
"był krótszy niż próg czasu warstwy w \"Próg maksymalnej prędkości "
|
"był krótszy niż próg czasu warstwy w \"Próg maksymalnej prędkości wentylatora"
|
||||||
"wentylatora\", tak aby warstwa mogła być chłodzona przez dłuższy czas. Może "
|
"\", tak aby warstwa mogła być chłodzona przez dłuższy czas. Może to poprawić "
|
||||||
"to poprawić jakość chłodzenia dla igieł i małych detali"
|
"jakość chłodzenia dla igieł i małych detali"
|
||||||
|
|
||||||
msgid "Normal printing"
|
msgid "Normal printing"
|
||||||
msgstr "Normalne drukowanie"
|
msgstr "Normalne drukowanie"
|
||||||
|
@ -10636,10 +10642,10 @@ msgstr "Pełna prędkość wentylatora na warstwie"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Fan speed will be ramped up linearly from zero at layer "
|
"Fan speed will be ramped up linearly from zero at layer "
|
||||||
"\"close_fan_the_first_x_layers\" to maximum at layer "
|
"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer"
|
||||||
"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower "
|
"\". \"full_fan_speed_layer\" will be ignored if lower than "
|
||||||
"than \"close_fan_the_first_x_layers\", in which case the fan will be running "
|
"\"close_fan_the_first_x_layers\", in which case the fan will be running at "
|
||||||
"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Prędkość wentylatora będzie stopniowo zwiększana liniowo od zera na warstwie "
|
"Prędkość wentylatora będzie stopniowo zwiększana liniowo od zera na warstwie "
|
||||||
"\"close_fan_the_first_x_layers\" do maksymalnej na warstwie "
|
"\"close_fan_the_first_x_layers\" do maksymalnej na warstwie "
|
||||||
|
@ -12109,8 +12115,8 @@ msgstr ""
|
||||||
"poklatkowy po zakończeniu drukowania. Jeśli wybrany jest tryb \"Wygładź\", "
|
"poklatkowy po zakończeniu drukowania. Jeśli wybrany jest tryb \"Wygładź\", "
|
||||||
"głowica narzędziowa przesunie się nad wieżę po wydrukowaniu każdej warstwy, "
|
"głowica narzędziowa przesunie się nad wieżę po wydrukowaniu każdej warstwy, "
|
||||||
"a następnie zrobi zdjęcie. Ponieważ stopiony filament może wyciekać z dyszy "
|
"a następnie zrobi zdjęcie. Ponieważ stopiony filament może wyciekać z dyszy "
|
||||||
"podczas robienia zdjęcia, wieża czyszcząca jest wymagana w trybie "
|
"podczas robienia zdjęcia, wieża czyszcząca jest wymagana w trybie \"Wygładź"
|
||||||
"\"Wygładź\" do czyszczenia dyszy."
|
"\" do czyszczenia dyszy."
|
||||||
|
|
||||||
msgid "Traditional"
|
msgid "Traditional"
|
||||||
msgstr "Tradycyjny"
|
msgstr "Tradycyjny"
|
||||||
|
@ -12190,10 +12196,10 @@ msgid ""
|
||||||
"triangle mesh slicing. The gap closing operation may reduce the final print "
|
"triangle mesh slicing. The gap closing operation may reduce the final print "
|
||||||
"resolution, therefore it is advisable to keep the value reasonably low."
|
"resolution, therefore it is advisable to keep the value reasonably low."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania "
|
"Szpary mniejsze niż dwukrotność wartości parametru \"promień zamykania szpar"
|
||||||
"szpar\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może "
|
"\" zostaną zamknięte przy cięciu. Operacja zamykania szpar może zmniejszyć "
|
||||||
"zmniejszyć finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej "
|
"finalną rozdzielczość wydruku, więc zalecane jest ustawienie tej wartości na "
|
||||||
"wartości na rozsądnie niskim poziomie."
|
"rozsądnie niskim poziomie."
|
||||||
|
|
||||||
msgid "Slicing Mode"
|
msgid "Slicing Mode"
|
||||||
msgstr "Tryb cięcia"
|
msgstr "Tryb cięcia"
|
||||||
|
@ -14371,8 +14377,8 @@ msgstr "Rozpocznij test jednowątkowy"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Eksportuj log"
|
msgstr "Eksportuj log"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Wersja Studio:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Wersja systemu:"
|
msgstr "Wersja systemu:"
|
||||||
|
@ -14380,11 +14386,11 @@ msgstr "Wersja systemu:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Serwer DNS:"
|
msgstr "Serwer DNS:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "Test BambuLab"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "Test BambuLab:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Test Bing.com"
|
msgstr "Test Bing.com"
|
||||||
|
@ -14392,39 +14398,6 @@ msgstr "Test Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Test bing.com:"
|
msgstr "Test bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "Test HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "Test usługi HTTP:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Test pamięci"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Test Przesyłu:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Test aktualizacji pamięci masowej"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Test aktualizacji pamięci masowej:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Test pamięci dla pobierania"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Test pamięci dla pobierania:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Test pobierania pluginów"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Test pobierania Pluginów:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Test załadunku przechowywania"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Informacje o logu"
|
msgstr "Informacje o logu"
|
||||||
|
|
||||||
|
@ -14529,8 +14502,8 @@ msgstr ""
|
||||||
"Czy chcesz go zastąpić?"
|
"Czy chcesz go zastąpić?"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"We would rename the presets as \"Vendor Type Serial @printer you "
|
"We would rename the presets as \"Vendor Type Serial @printer you selected"
|
||||||
"selected\". \n"
|
"\". \n"
|
||||||
"To add preset for more printers, Please go to printer selection"
|
"To add preset for more printers, Please go to printer selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nazwa profilu zostanie zmieniona na \"Producent Typ Rodzaj @nazwa drukarki, "
|
"Nazwa profilu zostanie zmieniona na \"Producent Typ Rodzaj @nazwa drukarki, "
|
||||||
|
@ -15512,6 +15485,48 @@ msgstr ""
|
||||||
"takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może "
|
"takimi jak ABS, odpowiednie zwiększenie temperatury podgrzewanej płyty może "
|
||||||
"zmniejszyć prawdopodobieństwo odkształceń."
|
"zmniejszyć prawdopodobieństwo odkształceń."
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Wersja Studio:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "Test BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "Test BambuLab:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "Test HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "Test usługi HTTP:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Test pamięci"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Test Przesyłu:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Test aktualizacji pamięci masowej"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Test aktualizacji pamięci masowej:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Test pamięci dla pobierania"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Test pamięci dla pobierania:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Test pobierania pluginów"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Test pobierania Pluginów:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Test załadunku przechowywania"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
@ -16355,8 +16370,8 @@ msgstr ""
|
||||||
#~ "Elevation is too low for object. Use the \"Pad around object\" feature to "
|
#~ "Elevation is too low for object. Use the \"Pad around object\" feature to "
|
||||||
#~ "print the object without elevation."
|
#~ "print the object without elevation."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół "
|
#~ "Podniesienie zbyt małe dla modelu. Użyj funkcji \"Podkładka wokół modelu"
|
||||||
#~ "modelu\", aby wydrukować model bez podniesienia."
|
#~ "\", aby wydrukować model bez podniesienia."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The endings of the support pillars will be deployed on the gap between "
|
#~ "The endings of the support pillars will be deployed on the gap between "
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"Language: sv\n"
|
"Language: sv\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
@ -5975,6 +5975,9 @@ msgstr "Logga in Region"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6030,6 +6033,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Automatisk synkronisering av användarens förinställningar (skrivare/filament/"
|
"Automatisk synkronisering av användarens förinställningar (skrivare/filament/"
|
||||||
|
@ -13236,7 +13242,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13245,10 +13251,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13257,39 +13263,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: OrcaSlicer\n"
|
"Project-Id-Version: OrcaSlicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2024-03-14 22:00+0300\n"
|
"PO-Revision-Date: 2024-03-14 22:00+0300\n"
|
||||||
"Last-Translator: Olcay ÖREN\n"
|
"Last-Translator: Olcay ÖREN\n"
|
||||||
"Language-Team: Türkçe\n"
|
"Language-Team: Türkçe\n"
|
||||||
|
@ -6120,6 +6120,9 @@ msgstr "Giriş Bölgesi"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "Gizli mod"
|
msgstr "Gizli mod"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr "Yalnızca kararlı güncellemeleri kontrol edin"
|
msgstr "Yalnızca kararlı güncellemeleri kontrol edin"
|
||||||
|
|
||||||
|
@ -6177,6 +6180,9 @@ msgstr "Hacimleri temizleme: Renk her değiştiğinde otomatik olarak hesapla."
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "Etkinleştirilirse, renk her değiştiğinde otomatik hesapla."
|
msgstr "Etkinleştirilirse, renk her değiştiğinde otomatik hesapla."
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "Kullanıcı ön ayarları otomatik senkronizasyon (Yazıcı/Filament/İşlem)"
|
msgstr "Kullanıcı ön ayarları otomatik senkronizasyon (Yazıcı/Filament/İşlem)"
|
||||||
|
|
||||||
|
@ -14195,8 +14201,8 @@ msgstr "Tek İş Parçacığı Testini Başlat"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "Logu Dışa Aktar"
|
msgstr "Logu Dışa Aktar"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Stüdyo Sürümü:"
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "Sistem Versiyonu:"
|
msgstr "Sistem Versiyonu:"
|
||||||
|
@ -14204,11 +14210,11 @@ msgstr "Sistem Versiyonu:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "Dns sunucusu:"
|
msgstr "Dns sunucusu:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "BambuLab'ı test edin"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "BambuLab'ı test edin"
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "Bing.com'u test edin"
|
msgstr "Bing.com'u test edin"
|
||||||
|
@ -14216,39 +14222,6 @@ msgstr "Bing.com'u test edin"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "Bing.com'u test edin:"
|
msgstr "Bing.com'u test edin:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "HTTP'yi test et"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "HTTP Hizmetini Test Edin:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "Test depolaması"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "Depolama Yüklemesini Test Et:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "Depolama yükseltmesini test edin"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "Depolama Yükseltmesini Test Edin:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "Test depolama indirmesi"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "Test Depolama İndirme:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "Test eklentisi indirme"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "Test Eklentisini İndirin:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "Depolama Yüklemesini Test Etme"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "Günlük Bilgisi"
|
msgstr "Günlük Bilgisi"
|
||||||
|
|
||||||
|
@ -15322,6 +15295,48 @@ msgstr ""
|
||||||
"sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını "
|
"sıcaklığının uygun şekilde arttırılmasının bükülme olasılığını "
|
||||||
"azaltabileceğini biliyor muydunuz?"
|
"azaltabileceğini biliyor muydunuz?"
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Stüdyo Sürümü:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "BambuLab'ı test edin"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "BambuLab'ı test edin"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "HTTP'yi test et"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "HTTP Hizmetini Test Edin:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "Test depolaması"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "Depolama Yüklemesini Test Et:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "Depolama yükseltmesini test edin"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "Depolama Yükseltmesini Test Edin:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "Test depolama indirmesi"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "Test Depolama İndirme:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "Test eklentisi indirme"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "Test Eklentisini İndirin:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "Depolama Yüklemesini Test Etme"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: \n"
|
"Project-Id-Version: \n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2023-08-10 20:25-0400\n"
|
"PO-Revision-Date: 2023-08-10 20:25-0400\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6030,6 +6030,9 @@ msgstr "Регіон входу"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6084,6 +6087,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Автоматична синхронізація користувацьких пресетів (принтер/філамент/процес)"
|
"Автоматична синхронізація користувацьких пресетів (принтер/філамент/процес)"
|
||||||
|
@ -13404,7 +13410,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13413,10 +13419,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13425,39 +13431,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Slic3rPE\n"
|
"Project-Id-Version: Slic3rPE\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2023-04-01 13:21+0800\n"
|
"PO-Revision-Date: 2023-04-01 13:21+0800\n"
|
||||||
"Last-Translator: SoftFever <softfeverever@gmail.com>\n"
|
"Last-Translator: SoftFever <softfeverever@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -4306,22 +4306,22 @@ msgid "Use Orthogonal View"
|
||||||
msgstr "使用正交视角"
|
msgstr "使用正交视角"
|
||||||
|
|
||||||
msgid "Show &G-code Window"
|
msgid "Show &G-code Window"
|
||||||
msgstr ""
|
msgstr "显示G-code窗口"
|
||||||
|
|
||||||
msgid "Show g-code window in Previce scene"
|
msgid "Show g-code window in Previce scene"
|
||||||
msgstr ""
|
msgstr "显示G-code窗口"
|
||||||
|
|
||||||
msgid "Show 3D Navigator"
|
msgid "Show 3D Navigator"
|
||||||
msgstr ""
|
msgstr "显示3D导航器"
|
||||||
|
|
||||||
msgid "Show 3D navigator in Prepare and Preview scene"
|
msgid "Show 3D navigator in Prepare and Preview scene"
|
||||||
msgstr ""
|
msgstr "显示3D导航器"
|
||||||
|
|
||||||
msgid "Reset Window Layout"
|
msgid "Reset Window Layout"
|
||||||
msgstr ""
|
msgstr "重置窗口布局"
|
||||||
|
|
||||||
msgid "Reset to default window layout"
|
msgid "Reset to default window layout"
|
||||||
msgstr ""
|
msgstr "重置为默认窗口布局"
|
||||||
|
|
||||||
msgid "Show &Labels"
|
msgid "Show &Labels"
|
||||||
msgstr "显示名称"
|
msgstr "显示名称"
|
||||||
|
@ -5863,8 +5863,11 @@ msgstr "登录区域"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "局域网模式"
|
msgstr "局域网模式"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr "启用网络插件"
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr "仅检测正式版的更新"
|
||||||
|
|
||||||
msgid "Metric"
|
msgid "Metric"
|
||||||
msgstr "公制"
|
msgstr "公制"
|
||||||
|
@ -5916,6 +5919,9 @@ msgstr "冲刷体积:每一次更换颜色时自动计算。"
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr "如果启用,会在每一次更换颜色时自动计算。"
|
msgstr "如果启用,会在每一次更换颜色时自动计算。"
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr "网络"
|
||||||
|
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "同步用户预设(打印机/耗材丝/工艺)"
|
msgstr "同步用户预设(打印机/耗材丝/工艺)"
|
||||||
|
|
||||||
|
@ -10078,10 +10084,10 @@ msgid "Klipper"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Support multi bed types"
|
msgid "Support multi bed types"
|
||||||
msgstr ""
|
msgstr "支持多种打印床类型"
|
||||||
|
|
||||||
msgid "Enable this option if you want to use multiple bed types"
|
msgid "Enable this option if you want to use multiple bed types"
|
||||||
msgstr ""
|
msgstr "如果要使用多种打印床类型,请启用此选项"
|
||||||
|
|
||||||
msgid "Label objects"
|
msgid "Label objects"
|
||||||
msgstr "标注模型"
|
msgstr "标注模型"
|
||||||
|
@ -10092,6 +10098,9 @@ msgid ""
|
||||||
"plugin. This settings is NOT compatible with Single Extruder Multi Material "
|
"plugin. This settings is NOT compatible with Single Extruder Multi Material "
|
||||||
"setup and Wipe into Object / Wipe into Infill."
|
"setup and Wipe into Object / Wipe into Infill."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"启用此选项,将在G-code中添加注释,标记打印移动属于哪个对象,这对Octoprint "
|
||||||
|
"CancelObject插件非常有用。此设置与单挤出机多材料设置和擦拭到对象/擦拭到填充不"
|
||||||
|
"兼容。"
|
||||||
|
|
||||||
msgid "Exclude objects"
|
msgid "Exclude objects"
|
||||||
msgstr "对象排除"
|
msgstr "对象排除"
|
||||||
|
@ -10107,6 +10116,8 @@ msgid ""
|
||||||
"descriptive text. If you print from SD card, the additional weight of the "
|
"descriptive text. If you print from SD card, the additional weight of the "
|
||||||
"file could make your firmware slow down."
|
"file could make your firmware slow down."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"启用此选项,将获得带有注释的G-code文件,每行都有描述性文本解释。如果您从SD卡"
|
||||||
|
"打印,文件的额外重量可能会使您的固件变慢。"
|
||||||
|
|
||||||
msgid "Infill combination"
|
msgid "Infill combination"
|
||||||
msgstr "合并填充"
|
msgstr "合并填充"
|
||||||
|
@ -10215,7 +10226,7 @@ msgstr "熨烫角度"
|
||||||
msgid ""
|
msgid ""
|
||||||
"The angle ironing is done at. A negative number disables this function and "
|
"The angle ironing is done at. A negative number disables this function and "
|
||||||
"uses the default method."
|
"uses the default method."
|
||||||
msgstr ""
|
msgstr "熨烫的角度。设为负值将禁用此功能并使用默认方法。"
|
||||||
|
|
||||||
msgid "This gcode part is inserted at every layer change after lift z"
|
msgid "This gcode part is inserted at every layer change after lift z"
|
||||||
msgstr "在每次换层抬升Z高度之后插入这段G-code。"
|
msgstr "在每次换层抬升Z高度之后插入这段G-code。"
|
||||||
|
@ -10238,6 +10249,8 @@ msgid ""
|
||||||
"If enabled, the machine limits will be emitted to G-code file.\n"
|
"If enabled, the machine limits will be emitted to G-code file.\n"
|
||||||
"This option will be ignored if the g-code flavor is set to Klipper."
|
"This option will be ignored if the g-code flavor is set to Klipper."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"如果启用,机器限制将写入到G-code文件。\n"
|
||||||
|
"如果G-code风格设置为Klipper,则此选项将被忽略。"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"This G-code will be used as a code for the pause print. User can insert "
|
"This G-code will be used as a code for the pause print. User can insert "
|
||||||
|
@ -13144,8 +13157,8 @@ msgstr "单线程开始测试"
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr "输出日志"
|
msgstr "输出日志"
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr "Studio 版本:"
|
msgstr "逆戟鲸版本:"
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
msgstr "系统版本:"
|
msgstr "系统版本:"
|
||||||
|
@ -13153,11 +13166,11 @@ msgstr "系统版本:"
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr "DNS服务:"
|
msgstr "DNS服务:"
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr "测试 BambuLab"
|
msgstr "测试逆戟鲸项目网站(GitHub)"
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr "测试 BambuLab:"
|
msgstr "测试逆戟鲸项目网站(GitHub)"
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
msgstr "测试 Bing.com"
|
msgstr "测试 Bing.com"
|
||||||
|
@ -13165,39 +13178,6 @@ msgstr "测试 Bing.com"
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr "测试 Bing.com:"
|
msgstr "测试 Bing.com:"
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr "测试 HTTP"
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr "测试 HTTP 服务:"
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr "测试存储"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr "测试存储上传:"
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr "测试存储升级"
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr "测试存储升级:"
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr "测试存储下载"
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr "测试存储下载:"
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr "测试插件下载"
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr "测试插件下载:"
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr "测试存储上传"
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr "日志信息"
|
msgstr "日志信息"
|
||||||
|
|
||||||
|
@ -14185,6 +14165,48 @@ msgstr ""
|
||||||
"避免翘曲\n"
|
"避免翘曲\n"
|
||||||
"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。"
|
"您知道吗?打印ABS这类易翘曲材料时,适当提高热床温度可以降低翘曲的概率。"
|
||||||
|
|
||||||
|
#~ msgid "Studio Version:"
|
||||||
|
#~ msgstr "Studio 版本:"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab"
|
||||||
|
#~ msgstr "测试 BambuLab"
|
||||||
|
|
||||||
|
#~ msgid "Test BambuLab:"
|
||||||
|
#~ msgstr "测试 BambuLab:"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP"
|
||||||
|
#~ msgstr "测试 HTTP"
|
||||||
|
|
||||||
|
#~ msgid "Test HTTP Service:"
|
||||||
|
#~ msgstr "测试 HTTP 服务:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage"
|
||||||
|
#~ msgstr "测试存储"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload:"
|
||||||
|
#~ msgstr "测试存储上传:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage upgrade"
|
||||||
|
#~ msgstr "测试存储升级"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upgrade:"
|
||||||
|
#~ msgstr "测试存储升级:"
|
||||||
|
|
||||||
|
#~ msgid "Test storage download"
|
||||||
|
#~ msgstr "测试存储下载"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Download:"
|
||||||
|
#~ msgstr "测试存储下载:"
|
||||||
|
|
||||||
|
#~ msgid "Test plugin download"
|
||||||
|
#~ msgstr "测试插件下载"
|
||||||
|
|
||||||
|
#~ msgid "Test Plugin Download:"
|
||||||
|
#~ msgstr "测试插件下载:"
|
||||||
|
|
||||||
|
#~ msgid "Test Storage Upload"
|
||||||
|
#~ msgstr "测试存储上传"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "The speed setting exceeds the printer's maximum speed "
|
#~ "The speed setting exceeds the printer's maximum speed "
|
||||||
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
#~ "(machine_max_speed_x/machine_max_speed_y).\n"
|
||||||
|
|
|
@ -6,7 +6,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Orca Slicer\n"
|
"Project-Id-Version: Orca Slicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-03-16 17:57+0800\n"
|
"POT-Creation-Date: 2024-03-22 19:58+0800\n"
|
||||||
"PO-Revision-Date: 2023-11-06 14:37+0800\n"
|
"PO-Revision-Date: 2023-11-06 14:37+0800\n"
|
||||||
"Last-Translator: ablegods <ablegods@gmail.com>\n"
|
"Last-Translator: ablegods <ablegods@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
|
@ -6119,6 +6119,9 @@ msgstr "登入區域"
|
||||||
msgid "Stealth Mode"
|
msgid "Stealth Mode"
|
||||||
msgstr "區域網路模式"
|
msgstr "區域網路模式"
|
||||||
|
|
||||||
|
msgid "Enable network plugin"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "Check for stable updates only"
|
msgid "Check for stable updates only"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -6173,6 +6176,9 @@ msgstr ""
|
||||||
msgid "If enabled, auto-calculate everytime the color changed."
|
msgid "If enabled, auto-calculate everytime the color changed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Network"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "Auto sync user presets(Printer/Filament/Process)"
|
msgid "Auto sync user presets(Printer/Filament/Process)"
|
||||||
msgstr "同步使用者預設(列印設備/線材/列印品質參數)"
|
msgstr "同步使用者預設(列印設備/線材/列印品質參數)"
|
||||||
|
@ -13660,7 +13666,7 @@ msgstr ""
|
||||||
msgid "Export Log"
|
msgid "Export Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Studio Version:"
|
msgid "OrcaSlicer Version:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "System Version:"
|
msgid "System Version:"
|
||||||
|
@ -13669,10 +13675,10 @@ msgstr ""
|
||||||
msgid "DNS Server:"
|
msgid "DNS Server:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab"
|
msgid "Test OrcaSlicer(GitHub)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test BambuLab:"
|
msgid "Test OrcaSlicer(GitHub):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test Bing.com"
|
msgid "Test Bing.com"
|
||||||
|
@ -13681,39 +13687,6 @@ msgstr ""
|
||||||
msgid "Test bing.com:"
|
msgid "Test bing.com:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Test HTTP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test HTTP Service:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage upgrade"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upgrade:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test storage download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test plugin download"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Plugin Download:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Test Storage Upload"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
msgid "Log Info"
|
msgid "Log Info"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Binary file not shown.
Binary file not shown.
|
@ -23,6 +23,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 0.4 nozzle",
|
"Creality Ender-3 V2 0.4 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 Pro 0.4 nozzle",
|
"Creality Ender-3 S1 Pro 0.4 nozzle",
|
||||||
|
|
|
@ -57,6 +57,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 0.4 nozzle",
|
"Creality Ender-3 V2 0.4 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
|
|
|
@ -33,6 +33,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 0.4 nozzle",
|
"Creality Ender-3 V2 0.4 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
"inherits": "Creality Generic PLA",
|
"inherits": "Creality Generic PLA",
|
||||||
"filament_max_volumetric_speed": ["18"],
|
"filament_max_volumetric_speed": ["18"],
|
||||||
"slow_down_min_speed": ["20"],
|
"slow_down_min_speed": ["20"],
|
||||||
"cool_plate_temp" : ["45"],
|
"cool_plate_temp" : ["55"],
|
||||||
"eng_plate_temp" : ["45"],
|
"eng_plate_temp" : ["55"],
|
||||||
"hot_plate_temp" : ["45"],
|
"hot_plate_temp" : ["55"],
|
||||||
"textured_plate_temp" : ["45"],
|
"textured_plate_temp" : ["55"],
|
||||||
"cool_plate_temp_initial_layer" : ["45"],
|
"cool_plate_temp_initial_layer" : ["55"],
|
||||||
"eng_plate_temp_initial_layer" : ["45"],
|
"eng_plate_temp_initial_layer" : ["55"],
|
||||||
"hot_plate_temp_initial_layer" : ["45"],
|
"hot_plate_temp_initial_layer" : ["55"],
|
||||||
"textured_plate_temp_initial_layer" : ["45"],
|
"textured_plate_temp_initial_layer" : ["55"],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"Creality Ender-3 V3 SE 0.4 nozzle",
|
"Creality Ender-3 V3 SE 0.4 nozzle",
|
||||||
"Creality Ender-3 V3 KE 0.4 nozzle"
|
"Creality Ender-3 V3 KE 0.4 nozzle"
|
||||||
|
|
|
@ -35,6 +35,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 0.4 nozzle",
|
"Creality Ender-3 V2 0.4 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
|
|
|
@ -24,6 +24,10 @@
|
||||||
"Creality Ender-3 0.4 nozzle",
|
"Creality Ender-3 0.4 nozzle",
|
||||||
"Creality Ender-3 0.6 nozzle",
|
"Creality Ender-3 0.6 nozzle",
|
||||||
"Creality Ender-3 0.8 nozzle",
|
"Creality Ender-3 0.8 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.2 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.4 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.6 nozzle",
|
||||||
|
"Creality Ender-3 Pro 0.8 nozzle",
|
||||||
"Creality Ender-3 V2 0.4 nozzle",
|
"Creality Ender-3 V2 0.4 nozzle",
|
||||||
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
"Creality Ender-3 V2 Neo 0.4 nozzle",
|
||||||
"Creality Ender-3 S1 0.4 nozzle",
|
"Creality Ender-3 S1 0.4 nozzle",
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Custom Printer",
|
"name": "Custom Printer",
|
||||||
"version": "02.00.00.00",
|
"version": "02.00.00.01",
|
||||||
"force_update": "0",
|
"force_update": "0",
|
||||||
"description": "My configurations",
|
"description": "My configurations",
|
||||||
"machine_model_list": [
|
"machine_model_list": [
|
||||||
|
@ -11,6 +11,10 @@
|
||||||
{
|
{
|
||||||
"name": "Generic Marlin Printer",
|
"name": "Generic Marlin Printer",
|
||||||
"sub_path": "machine/MyMarlin.json"
|
"sub_path": "machine/MyMarlin.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Generic RRF Printer",
|
||||||
|
"sub_path": "machine/MyRRF.json"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"process_list": [
|
"process_list": [
|
||||||
|
@ -22,6 +26,10 @@
|
||||||
"name": "fdm_process_klipper_common",
|
"name": "fdm_process_klipper_common",
|
||||||
"sub_path": "process/fdm_process_klipper_common.json"
|
"sub_path": "process/fdm_process_klipper_common.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_process_rrf_common",
|
||||||
|
"sub_path": "process/fdm_process_rrf_common.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "fdm_process_marlin_common",
|
"name": "fdm_process_marlin_common",
|
||||||
"sub_path": "process/fdm_process_marlin_common.json"
|
"sub_path": "process/fdm_process_marlin_common.json"
|
||||||
|
@ -50,6 +58,30 @@
|
||||||
"name": "0.28mm Extra Draft @MyKlipper",
|
"name": "0.28mm Extra Draft @MyKlipper",
|
||||||
"sub_path": "process/0.28mm Extra Draft @MyKlipper.json"
|
"sub_path": "process/0.28mm Extra Draft @MyKlipper.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "0.08mm Extra Fine @MyRRF",
|
||||||
|
"sub_path": "process/0.08mm Extra Fine @MyRRF.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0.12mm Fine @MyRRF",
|
||||||
|
"sub_path": "process/0.12mm Fine @MyRRF.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0.15mm Optimal @MyRRF",
|
||||||
|
"sub_path": "process/0.15mm Optimal @MyRRF.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0.20mm Standard @MyRRF",
|
||||||
|
"sub_path": "process/0.20mm Standard @MyRRF.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0.24mm Draft @MyRRF",
|
||||||
|
"sub_path": "process/0.24mm Draft @MyRRF.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "0.28mm Extra Draft @MyRRF",
|
||||||
|
"sub_path": "process/0.28mm Extra Draft @MyRRF.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "0.08mm Extra Fine @MyMarlin",
|
"name": "0.08mm Extra Fine @MyMarlin",
|
||||||
"sub_path": "process/0.08mm Extra Fine @MyMarlin.json"
|
"sub_path": "process/0.08mm Extra Fine @MyMarlin.json"
|
||||||
|
@ -162,6 +194,10 @@
|
||||||
"name": "fdm_klipper_common",
|
"name": "fdm_klipper_common",
|
||||||
"sub_path": "machine/fdm_klipper_common.json"
|
"sub_path": "machine/fdm_klipper_common.json"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "fdm_rrf_common",
|
||||||
|
"sub_path": "machine/fdm_rrf_common.json"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "MyKlipper 0.4 nozzle",
|
"name": "MyKlipper 0.4 nozzle",
|
||||||
"sub_path": "machine/MyKlipper 0.4 nozzle.json"
|
"sub_path": "machine/MyKlipper 0.4 nozzle.json"
|
||||||
|
@ -169,6 +205,10 @@
|
||||||
{
|
{
|
||||||
"name": "MyMarlin 0.4 nozzle",
|
"name": "MyMarlin 0.4 nozzle",
|
||||||
"sub_path": "machine/MyMarlin 0.4 nozzle.json"
|
"sub_path": "machine/MyMarlin 0.4 nozzle.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MyRRF 0.4 nozzle",
|
||||||
|
"sub_path": "machine/MyRRF 0.4 nozzle.json"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
BIN
resources/profiles/Custom/Generic RRF Printer_cover.png
Normal file
BIN
resources/profiles/Custom/Generic RRF Printer_cover.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.6 KiB |
|
@ -14,6 +14,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,6 +44,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
],
|
],
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"MyKlipper 0.4 nozzle",
|
"MyKlipper 0.4 nozzle",
|
||||||
"MyMarlin 0.4 nozzle"
|
"MyMarlin 0.4 nozzle",
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"machine_tech": "FFF",
|
"machine_tech": "FFF",
|
||||||
"family": "MyPrinter",
|
"family": "MyPrinter",
|
||||||
"bed_model": "",
|
"bed_model": "",
|
||||||
"bed_texture": "",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
"machine_tech": "FFF",
|
"machine_tech": "FFF",
|
||||||
"family": "MyPrinter",
|
"family": "MyPrinter",
|
||||||
"bed_model": "",
|
"bed_model": "",
|
||||||
"bed_texture": "",
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
"hotend_model": "",
|
"hotend_model": "",
|
||||||
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
||||||
}
|
}
|
||||||
|
|
19
resources/profiles/Custom/machine/MyRRF 0.4 nozzle.json
Normal file
19
resources/profiles/Custom/machine/MyRRF 0.4 nozzle.json
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"type": "machine",
|
||||||
|
"setting_id": "GM003",
|
||||||
|
"name": "MyRRF 0.4 nozzle",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_rrf_common",
|
||||||
|
"printer_model": "Generic RRF Printer",
|
||||||
|
"nozzle_diameter": [
|
||||||
|
"0.4"
|
||||||
|
],
|
||||||
|
"printable_area": [
|
||||||
|
"0x0",
|
||||||
|
"250x0",
|
||||||
|
"250x250",
|
||||||
|
"0x250"
|
||||||
|
],
|
||||||
|
"printable_height": "250"
|
||||||
|
}
|
12
resources/profiles/Custom/machine/MyRRF.json
Normal file
12
resources/profiles/Custom/machine/MyRRF.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"type": "machine_model",
|
||||||
|
"name": "Generic RRF Printer",
|
||||||
|
"model_id": "my_rrf_01",
|
||||||
|
"nozzle_diameter": "0.4",
|
||||||
|
"machine_tech": "FFF",
|
||||||
|
"family": "MyPrinter",
|
||||||
|
"bed_model": "",
|
||||||
|
"bed_texture": "orcaslicer_bed_texture.svg",
|
||||||
|
"hotend_model": "",
|
||||||
|
"default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF"
|
||||||
|
}
|
141
resources/profiles/Custom/machine/fdm_rrf_common.json
Normal file
141
resources/profiles/Custom/machine/fdm_rrf_common.json
Normal file
|
@ -0,0 +1,141 @@
|
||||||
|
{
|
||||||
|
"type": "machine",
|
||||||
|
"name": "fdm_rrf_common",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "false",
|
||||||
|
"inherits": "fdm_machine_common",
|
||||||
|
"gcode_flavor": "reprapfirmware",
|
||||||
|
"machine_max_acceleration_e": [
|
||||||
|
"5000",
|
||||||
|
"5000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_extruding": [
|
||||||
|
"20000",
|
||||||
|
"20000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_retracting": [
|
||||||
|
"5000",
|
||||||
|
"5000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_travel": [
|
||||||
|
"20000",
|
||||||
|
"20000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_x": [
|
||||||
|
"20000",
|
||||||
|
"20000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_y": [
|
||||||
|
"20000",
|
||||||
|
"20000"
|
||||||
|
],
|
||||||
|
"machine_max_acceleration_z": [
|
||||||
|
"500",
|
||||||
|
"200"
|
||||||
|
],
|
||||||
|
"machine_max_speed_e": [
|
||||||
|
"25",
|
||||||
|
"25"
|
||||||
|
],
|
||||||
|
"machine_max_speed_x": [
|
||||||
|
"500",
|
||||||
|
"200"
|
||||||
|
],
|
||||||
|
"machine_max_speed_y": [
|
||||||
|
"500",
|
||||||
|
"200"
|
||||||
|
],
|
||||||
|
"machine_max_speed_z": [
|
||||||
|
"12",
|
||||||
|
"12"
|
||||||
|
],
|
||||||
|
"machine_max_jerk_e": [
|
||||||
|
"2.5",
|
||||||
|
"2.5"
|
||||||
|
],
|
||||||
|
"machine_max_jerk_x": [
|
||||||
|
"9",
|
||||||
|
"9"
|
||||||
|
],
|
||||||
|
"machine_max_jerk_y": [
|
||||||
|
"9",
|
||||||
|
"9"
|
||||||
|
],
|
||||||
|
"machine_max_jerk_z": [
|
||||||
|
"0.2",
|
||||||
|
"0.4"
|
||||||
|
],
|
||||||
|
"machine_min_extruding_rate": [
|
||||||
|
"0",
|
||||||
|
"0"
|
||||||
|
],
|
||||||
|
"machine_min_travel_rate": [
|
||||||
|
"0",
|
||||||
|
"0"
|
||||||
|
],
|
||||||
|
"max_layer_height": [
|
||||||
|
"0.32"
|
||||||
|
],
|
||||||
|
"min_layer_height": [
|
||||||
|
"0.08"
|
||||||
|
],
|
||||||
|
"printable_height": "250",
|
||||||
|
"extruder_clearance_radius": "65",
|
||||||
|
"extruder_clearance_height_to_rod": "36",
|
||||||
|
"extruder_clearance_height_to_lid": "140",
|
||||||
|
"printer_settings_id": "",
|
||||||
|
"printer_technology": "FFF",
|
||||||
|
"printer_variant": "0.4",
|
||||||
|
"retraction_minimum_travel": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"retract_before_wipe": [
|
||||||
|
"70%"
|
||||||
|
],
|
||||||
|
"retract_when_changing_layer": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"retraction_length": [
|
||||||
|
"0.8"
|
||||||
|
],
|
||||||
|
"retract_length_toolchange": [
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"z_hop": [
|
||||||
|
"0.4"
|
||||||
|
],
|
||||||
|
"retract_restart_extra": [
|
||||||
|
"0"
|
||||||
|
],
|
||||||
|
"retract_restart_extra_toolchange": [
|
||||||
|
"0"
|
||||||
|
],
|
||||||
|
"retraction_speed": [
|
||||||
|
"30"
|
||||||
|
],
|
||||||
|
"deretraction_speed": [
|
||||||
|
"30"
|
||||||
|
],
|
||||||
|
"z_hop_types": "Normal Lift",
|
||||||
|
"silent_mode": "0",
|
||||||
|
"single_extruder_multi_material": "1",
|
||||||
|
"change_filament_gcode": "",
|
||||||
|
"wipe": [
|
||||||
|
"1"
|
||||||
|
],
|
||||||
|
"default_filament_profile": [
|
||||||
|
"My Generic ABS"
|
||||||
|
],
|
||||||
|
"default_print_profile": "0.20mm Standard @MyRRF",
|
||||||
|
"bed_exclude_area": [
|
||||||
|
"0x0"
|
||||||
|
],
|
||||||
|
"scan_first_layer": "0",
|
||||||
|
"nozzle_type": "undefine",
|
||||||
|
"auxiliary_fan": "0",
|
||||||
|
"machine_start_gcode": "; Prime Filament Sensor for Runout\nM581 P1 T2 S-1 R0\nM950 J1 C\"nil\" ; Input 1 e0 Filament Sensor \nM591 D0 P2 C\"e0stop\" S1 ; Filament Runout Sensor\n\nM83 ; extruder relative mode\n\nM140 S[first_layer_bed_temperature] ; set bed temp\nM109 S140 ; Set extruder temp 140C before bed level\nM190 S[first_layer_bed_temperature] ; wait for bed temp\n\n;G28 W\nG32 ; Levels Z Tilt and probes Z=0\nG29 S0 ; mesh bed leveling\nG1 X0 Y0 Z2 F2000\nM109 S[first_layer_temperature] ; wait for extruder temp\n\nG1 X10 Y-7 Z0.3 F1000.0 ; go outside print area\nG92 E0.0\nG1 Z0.2 E8 ; Purge Bubble\nG1 X60.0 E9.0 F1000.0 ; intro line\nG1 X100.0 E12.5 F1000.0 ; intro line\nG92 E0.0",
|
||||||
|
"machine_end_gcode": "{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+1, max_print_height)} F720 ; Move print head up{endif}\nG1 X0 Y200 F3600 ; park\n{if max_layer_z < max_print_height}G1 Z{z_offset+min(max_layer_z+49, max_print_height)} F720 ; Move print head further up{endif}\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM84 ; disable motors",
|
||||||
|
"layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]",
|
||||||
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||||
|
"machine_pause_gcode": "M601"
|
||||||
|
}
|
148
resources/profiles/Custom/orcaslicer_bed_texture.svg
Normal file
148
resources/profiles/Custom/orcaslicer_bed_texture.svg
Normal file
|
@ -0,0 +1,148 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
fill="none"
|
||||||
|
version="1.1"
|
||||||
|
id="svg526"
|
||||||
|
sodipodi:docname="OrcaSlicer_about.svg"
|
||||||
|
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
|
||||||
|
inkscape:export-filename="OrcaSlicer_about.svg"
|
||||||
|
inkscape:export-xdpi="96"
|
||||||
|
inkscape:export-ydpi="96"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs530">
|
||||||
|
<clipPath
|
||||||
|
clipPathUnits="userSpaceOnUse"
|
||||||
|
id="clipPath16">
|
||||||
|
<path
|
||||||
|
d="M 0,792 H 612 V 0 H 0 Z"
|
||||||
|
id="path14" />
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview528"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="12.179348"
|
||||||
|
inkscape:cx="278.75055"
|
||||||
|
inkscape:cy="104.93173"
|
||||||
|
inkscape:window-width="3440"
|
||||||
|
inkscape:window-height="1369"
|
||||||
|
inkscape:window-x="-8"
|
||||||
|
inkscape:window-y="-8"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg526" />
|
||||||
|
<g
|
||||||
|
id="g10"
|
||||||
|
transform="matrix(0.07369611,0,0,-0.07369611,345.22738,480.7198)"
|
||||||
|
style="display:inline">
|
||||||
|
<g
|
||||||
|
id="g12"
|
||||||
|
clip-path="url(#clipPath16)">
|
||||||
|
<g
|
||||||
|
id="g18"
|
||||||
|
transform="translate(59.7287,115.3517)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c 53.332,-53.285 126.698,-86.317 207.744,-86.646 164.049,-0.664 298.355,134.38 297.699,299.337 -0.324,81.496 -33.176,155.271 -86.17,208.899 z"
|
||||||
|
style="fill:#292826;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path20" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g22"
|
||||||
|
transform="translate(479.0017,536.9419)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 -419.273,-421.59 c 0.298,-0.298 0.606,-0.587 0.906,-0.884 146.894,74.925 348.023,206.579 486.003,316.297 C 52.756,-65.97 29.506,-29.859 0,0"
|
||||||
|
style="fill:#009789;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path24" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g26"
|
||||||
|
transform="translate(397.0372,747)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c -163.742,0 -296.482,-133.473 -296.482,-298.121 0,-81.979 32.915,-156.223 86.172,-210.117 l 419.273,421.59 C 155.364,-33.096 81.529,0 0,0"
|
||||||
|
style="fill:#292826;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path28" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g30"
|
||||||
|
transform="translate(397.0372,747)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c -56.714,0 -109.702,-16.022 -154.751,-43.796 -24.127,6.312 -54.061,11.37 -88.437,11.157 -59.938,-0.372 -108.713,-16.603 -141.822,-31.784 -8.218,-3.768 -6.898,-15.967 1.941,-17.829 21.801,-4.593 50.498,-14.324 78.883,-35.28 17.931,-13.238 31.574,-27.883 41.856,-41.597 -21.794,-41.504 -34.152,-88.793 -34.152,-138.992 0,-29.952 4.412,-58.865 12.586,-86.137 12.54,27.79 25.699,46.391 29.916,52.184 27.229,37.41 56.015,56.883 98.542,85.651 31.328,21.193 74.856,46.047 199.916,97.449 0,0 39.121,11.017 91.587,42.212 20.912,12.433 36.823,24.17 41.863,42.526 0.355,1.293 0.677,2.57 0.973,3.83 C 129.175,-22.506 67.208,0 0,0"
|
||||||
|
style="fill:#262523;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path32" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
id="g34"
|
||||||
|
transform="translate(446.5563,646.8041)">
|
||||||
|
<path
|
||||||
|
d="m 0,0 c 10.875,-19.229 -10.891,-52.305 -48.616,-73.879 -37.725,-21.573 -77.124,-23.474 -88,-4.245 -10.875,19.229 10.891,52.305 48.617,73.879 C -50.274,17.328 -10.875,19.229 0,0"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
|
||||||
|
id="path36" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
aria-label="Orca"
|
||||||
|
id="text835"
|
||||||
|
style="font-size:31.8474px;fill:#f9f9f9;fill-opacity:0.8;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:1.19308"
|
||||||
|
transform="translate(160.2713,346.81659)">
|
||||||
|
<path
|
||||||
|
d="m 246.33548,105.05624 q -3.12104,0 -5.47775,-0.95542 -2.32486,-0.95542 -3.6943,-2.86626 -1.33759,-1.942695 -1.46498,-4.777114 -0.0319,-1.305744 -0.0319,-2.770724 0,-1.46498 0.0319,-2.834419 0.12739,-2.802571 1.46498,-4.745262 1.33759,-1.942692 3.6943,-2.961809 2.35671,-1.019116 5.47775,-1.019116 3.12105,0 5.47775,1.019116 2.35671,1.019117 3.6943,2.961809 1.36944,1.942691 1.46498,4.745262 0.0637,1.369439 0.0637,2.834419 0,1.46498 -0.0637,2.770724 -0.12739,2.834419 -1.49683,4.777114 -1.33759,1.91084 -3.69429,2.86626 -2.32486,0.95542 -5.44591,0.95542 z m 0,-6.210239 q 1.05096,0 1.68791,-0.605101 0.63695,-0.636948 0.6688,-1.974538 0.0637,-1.369439 0.0637,-2.70703 0,-1.33759 -0.0637,-2.643334 -0.0319,-0.891727 -0.35032,-1.46498 -0.28663,-0.573253 -0.79619,-0.828033 -0.50956,-0.286626 -1.2102,-0.286626 -0.66879,0 -1.2102,0.286626 -0.50956,0.25478 -0.82803,0.828033 -0.28663,0.573253 -0.31848,1.46498 -0.0318,1.305744 -0.0318,2.643334 0,1.337591 0.0318,2.70703 0.0637,1.33759 0.6688,1.974538 0.63695,0.605101 1.68791,0.605101 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy';text-align:center;text-anchor:middle"
|
||||||
|
id="path926" />
|
||||||
|
<path
|
||||||
|
d="m 260.4439,104.73777 q -0.35032,0 -0.6051,-0.25478 -0.25478,-0.25478 -0.25478,-0.6051 V 89.037002 q 0,-0.350322 0.25478,-0.605101 0.25478,-0.254779 0.6051,-0.254779 h 5.57329 q 0.35032,0 0.6051,0.254779 0.25478,0.254779 0.25478,0.605101 v 1.114659 q 1.01912,-0.891728 2.26117,-1.433133 1.27389,-0.541406 2.70703,-0.541406 h 1.52867 q 0.35032,0 0.6051,0.254779 0.25478,0.254779 0.25478,0.605101 v 4.968194 q 0,0.350321 -0.25478,0.605101 -0.25478,0.254779 -0.6051,0.254779 h -4.10831 q -0.95542,0 -1.43313,0.477711 -0.47772,0.477711 -0.47772,1.433133 v 7.10197 q 0,0.35032 -0.25477,0.6051 -0.25478,0.25478 -0.60511,0.25478 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy';text-align:center;text-anchor:middle"
|
||||||
|
id="path928" />
|
||||||
|
<path
|
||||||
|
d="m 284.52052,105.05624 q -2.4204,0 -4.39494,-0.82803 -1.97454,-0.85988 -3.18474,-2.4841 -1.2102,-1.62421 -1.33759,-3.980921 -0.0319,-0.509558 -0.0319,-1.273896 0,-0.764337 0.0319,-1.305743 0.12739,-2.356708 1.30574,-3.980925 1.2102,-1.656065 3.18474,-2.484097 2.00639,-0.85988 4.42679,-0.85988 2.51595,0 4.26755,0.73249 1.78346,0.700643 2.86627,1.751607 1.11466,1.019117 1.62422,2.038234 0.5414,1.019116 0.57325,1.656064 0.0319,0.350322 -0.25478,0.605101 -0.25478,0.254779 -0.6051,0.254779 h -6.21024 q -0.35033,0 -0.57326,-0.159237 -0.19108,-0.191084 -0.35032,-0.477711 -0.22293,-0.445863 -0.47771,-0.700643 -0.22293,-0.254779 -0.70064,-0.254779 -0.73249,0 -0.98727,0.541406 -0.25478,0.541406 -0.28663,1.496828 -0.0319,1.369438 0,2.261165 0.0637,1.019117 0.28663,1.528676 0.25478,0.477711 0.98727,0.477711 0.57325,0 0.76434,-0.25478 0.22293,-0.254779 0.41401,-0.700642 0.12739,-0.286627 0.35032,-0.445864 0.22293,-0.191084 0.57326,-0.191084 h 6.21024 q 0.35032,0 0.6051,0.254779 0.28663,0.254779 0.25478,0.6051 -0.0319,0.414017 -0.35032,1.178352 -0.28663,0.73249 -0.95542,1.59237 -0.63695,0.85988 -1.71976,1.65607 -1.08282,0.76433 -2.64334,1.27389 -1.56052,0.47771 -3.66245,0.47771 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy';text-align:center;text-anchor:middle"
|
||||||
|
id="path930" />
|
||||||
|
<path
|
||||||
|
d="m 301.1767,105.05624 q -1.8153,0 -3.21659,-0.66879 -1.40128,-0.6688 -2.19747,-1.8153 -0.76433,-1.14651 -0.76433,-2.579643 0,-2.32486 1.87899,-3.630603 1.91085,-1.337591 5.09559,-1.878997 l 3.37582,-0.541406 v -0.03185 q 0,-0.828033 -0.15924,-1.210201 -0.12738,-0.382169 -0.79618,-0.382169 -0.44586,0 -0.73249,0.191084 -0.25478,0.159237 -0.57325,0.477711 -0.35033,0.350322 -0.89173,0.350322 h -5.41406 q -0.31847,0 -0.5414,-0.191085 -0.19109,-0.191084 -0.15924,-0.509558 0.0319,-0.605101 0.50956,-1.401286 0.47771,-0.828032 1.46498,-1.59237 1.01911,-0.764337 2.57964,-1.273896 1.59237,-0.509558 3.82168,-0.509558 2.16563,0 3.758,0.477711 1.62422,0.445863 2.67518,1.337591 1.05096,0.859879 1.56052,2.165623 0.54141,1.273896 0.54141,2.898113 v 9.140207 q 0,0.35032 -0.25478,0.6051 -0.25478,0.25478 -0.6051,0.25478 h -5.5733 q -0.35032,0 -0.6051,-0.25478 -0.25478,-0.25478 -0.25478,-0.6051 v -0.89173 q -0.44586,0.63695 -1.1465,1.11466 -0.6688,0.44587 -1.52868,0.70064 -0.85988,0.25478 -1.84715,0.25478 z m 2.19747,-4.71341 q 0.63695,0 1.08281,-0.25478 0.47772,-0.25478 0.73249,-0.796185 0.25478,-0.573254 0.25478,-1.401286 v -0.03185 l -1.87899,0.414016 q -0.82804,0.191084 -1.11466,0.509558 -0.28663,0.318474 -0.28663,0.668796 0,0.222931 0.12739,0.445863 0.15924,0.191088 0.41402,0.318478 0.28662,0.12739 0.66879,0.12739 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy';text-align:center;text-anchor:middle"
|
||||||
|
id="path932" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
aria-label="Slicer"
|
||||||
|
id="text1443"
|
||||||
|
style="font-size:22.8809px;text-align:center;text-anchor:middle;fill:#f9f9f9;fill-opacity:0.8;stroke:#1a1a1a;stroke-width:0.857176"
|
||||||
|
transform="translate(160.2713,346.81659)">
|
||||||
|
<path
|
||||||
|
d="m 244.8391,127.60037 q -2.53978,0 -4.18721,-0.68643 -1.64742,-0.68643 -2.47113,-1.80759 -0.82372,-1.12116 -0.86948,-2.37961 0,-0.20593 0.13729,-0.34322 0.16016,-0.16016 0.36609,-0.16016 h 4.34737 q 0.3661,0 0.54914,0.1144 0.20593,0.0915 0.43474,0.27457 0.22881,0.16017 0.45762,0.29745 0.25169,0.11441 0.54914,0.18305 0.32033,0.0458 0.68643,0.0458 0.77795,0 1.23557,-0.16016 0.48049,-0.18305 0.48049,-0.4805 0,-0.27457 -0.27457,-0.45762 -0.25169,-0.18305 -0.89235,-0.32033 -0.64067,-0.16017 -1.78471,-0.29745 -1.80759,-0.25169 -3.13468,-0.8466 -1.3271,-0.5949 -2.05929,-1.62454 -0.7093,-1.05252 -0.7093,-2.56266 0,-1.5559 0.86947,-2.74571 0.89236,-1.18981 2.44826,-1.85335 1.57878,-0.66355 3.66094,-0.66355 1.71607,0 3.04316,0.45762 1.32709,0.43474 2.24233,1.16692 0.91523,0.70931 1.39573,1.53302 0.4805,0.82372 0.50338,1.57879 0,0.20592 -0.16016,0.36609 -0.13729,0.13729 -0.32034,0.13729 h -4.57618 q -0.32033,0 -0.52626,-0.0915 -0.18304,-0.0915 -0.38897,-0.27457 -0.11441,-0.1144 -0.43474,-0.25169 -0.29745,-0.16016 -0.77795,-0.16016 -0.57202,0 -0.84659,0.18304 -0.25169,0.16017 -0.25169,0.45762 0,0.20593 0.20593,0.38898 0.20592,0.18304 0.75507,0.32033 0.54914,0.13728 1.57878,0.27457 2.28809,0.27457 3.66094,0.89235 1.39574,0.59491 2.01352,1.60167 0.64067,1.00676 0.64067,2.49402 0,1.6703 -1.00676,2.88299 -0.98388,1.21269 -2.69995,1.87623 -1.71607,0.64067 -3.88975,0.64067 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path935" />
|
||||||
|
<path
|
||||||
|
d="m 254.49485,127.37156 q -0.25169,0 -0.43474,-0.18305 -0.18305,-0.18305 -0.18305,-0.43474 V 111.7439 q 0,-0.25169 0.18305,-0.43473 0.18305,-0.18305 0.43474,-0.18305 h 4.09568 q 0.25169,0 0.43474,0.18305 0.18304,0.18304 0.18304,0.43473 v 15.00987 q 0,0.25169 -0.18304,0.43474 -0.18305,0.18305 -0.43474,0.18305 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path937" />
|
||||||
|
<path
|
||||||
|
d="m 263.12097,127.37156 q -0.25169,0 -0.43474,-0.18305 -0.18305,-0.18305 -0.18305,-0.43474 v -10.66249 q 0,-0.25169 0.18305,-0.43474 0.18305,-0.18305 0.43474,-0.18305 h 4.09568 q 0.25169,0 0.43473,0.18305 0.18305,0.18305 0.18305,0.43474 v 10.66249 q 0,0.25169 -0.18305,0.43474 -0.18304,0.18305 -0.43473,0.18305 z m 0.1144,-13.15652 q -0.25169,0 -0.43474,-0.18305 -0.18304,-0.18304 -0.18304,-0.43473 v -2.76859 q 0,-0.25169 0.18304,-0.43474 0.18305,-0.18305 0.43474,-0.18305 h 3.86687 q 0.25169,0 0.43474,0.18305 0.18305,0.18305 0.18305,0.43474 v 2.76859 q 0,0.25169 -0.18305,0.43473 -0.18305,0.18305 -0.43474,0.18305 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path939" />
|
||||||
|
<path
|
||||||
|
d="m 276.14018,127.60037 q -1.73895,0 -3.15756,-0.59491 -1.41862,-0.61778 -2.28809,-1.78471 -0.86948,-1.16692 -0.961,-2.86011 -0.0229,-0.36609 -0.0229,-0.91523 0,-0.54915 0.0229,-0.93812 0.0915,-1.69319 0.93812,-2.86011 0.86947,-1.18981 2.28809,-1.78471 1.44149,-0.61779 3.18044,-0.61779 1.80759,0 3.06604,0.52626 1.28133,0.50338 2.05928,1.25845 0.80084,0.73219 1.16693,1.46438 0.38897,0.73219 0.41186,1.18981 0.0229,0.25169 -0.18305,0.43473 -0.18305,0.18305 -0.43474,0.18305 h -4.46177 q -0.25169,0 -0.41186,-0.1144 -0.13729,-0.13729 -0.25169,-0.34322 -0.16017,-0.32033 -0.34321,-0.50338 -0.16017,-0.18304 -0.50338,-0.18304 -0.52626,0 -0.70931,0.38897 -0.18305,0.38898 -0.20593,1.0754 -0.0229,0.98388 0,1.62455 0.0458,0.73219 0.20593,1.09828 0.18305,0.34321 0.70931,0.34321 0.41185,0 0.54914,-0.18304 0.16016,-0.18305 0.29745,-0.50338 0.0915,-0.20593 0.25169,-0.32034 0.16017,-0.13728 0.41186,-0.13728 h 4.46177 q 0.25169,0 0.43474,0.18305 0.20593,0.18304 0.18305,0.43473 -0.0229,0.29746 -0.25169,0.8466 -0.20593,0.52626 -0.68643,1.14404 -0.45762,0.61779 -1.23557,1.18981 -0.77795,0.54914 -1.89911,0.91523 -1.12117,0.34322 -2.63131,0.34322 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path941" />
|
||||||
|
<path
|
||||||
|
d="m 290.46362,127.60037 q -2.9974,0 -4.78211,-1.46438 -1.76183,-1.48726 -1.76183,-4.69058 0,-0.0458 0,-0.0915 0,-0.0458 0,-0.0686 0.0458,-1.96776 0.8466,-3.31773 0.82371,-1.34997 2.26521,-2.0364 1.46437,-0.68643 3.40925,-0.68643 2.24233,0 3.68382,0.86948 1.4415,0.84659 2.12793,2.26521 0.70931,1.39573 0.70931,3.08892 v 0.68642 q 0,0.25169 -0.18305,0.43474 -0.18305,0.18305 -0.43474,0.18305 h -6.81851 q 0,0.0229 0,0.0458 0,0.0229 0,0.0686 0,0.45762 0.0686,0.77795 0.0915,0.29746 0.29745,0.45762 0.20593,0.16017 0.52626,0.16017 0.13728,0 0.22881,-0.0458 0.1144,-0.0458 0.20593,-0.13729 0.1144,-0.1144 0.2288,-0.22881 0.20593,-0.20593 0.34322,-0.25169 0.13728,-0.0686 0.41185,-0.0686 h 4.32449 q 0.22881,0 0.3661,0.13728 0.16016,0.13729 0.13728,0.3661 -0.0229,0.43474 -0.41185,1.05252 -0.3661,0.5949 -1.12117,1.16693 -0.75507,0.57202 -1.92199,0.96099 -1.16693,0.3661 -2.74571,0.3661 z m -0.93812,-7.68798 h 1.83048 v -0.0229 q 0,-0.50338 -0.11441,-0.82372 -0.0915,-0.32033 -0.29745,-0.45762 -0.20593,-0.16016 -0.50338,-0.16016 -0.29745,0 -0.50338,0.16016 -0.20593,0.13729 -0.32033,0.45762 -0.0915,0.32034 -0.0915,0.82372 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path943" />
|
||||||
|
<path
|
||||||
|
d="m 299.18123,127.37156 q -0.25169,0 -0.43474,-0.18305 -0.18305,-0.18305 -0.18305,-0.43474 v -10.66249 q 0,-0.25169 0.18305,-0.43474 0.18305,-0.18305 0.43474,-0.18305 h 4.00415 q 0.25169,0 0.43474,0.18305 0.18305,0.18305 0.18305,0.43474 v 0.80083 q 0.73219,-0.64067 1.62454,-1.02964 0.91524,-0.38898 1.94488,-0.38898 h 1.09828 q 0.25169,0 0.43474,0.18305 0.18305,0.18305 0.18305,0.43474 v 3.56942 q 0,0.25169 -0.18305,0.43473 -0.18305,0.18305 -0.43474,0.18305 h -2.95163 q -0.68643,0 -1.02965,0.34321 -0.34321,0.34322 -0.34321,1.02964 v 5.10244 q 0,0.25169 -0.18305,0.43474 -0.18304,0.18305 -0.43473,0.18305 z"
|
||||||
|
style="font-weight:900;font-family:Rubik;-inkscape-font-specification:'Rubik Heavy'"
|
||||||
|
id="path945" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.08mm Extra Fine @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"layer_height": "0.08",
|
||||||
|
"bottom_shell_layers": "7",
|
||||||
|
"top_shell_layers": "9"
|
||||||
|
}
|
11
resources/profiles/Custom/process/0.12mm Fine @MyRRF.json
Normal file
11
resources/profiles/Custom/process/0.12mm Fine @MyRRF.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.12mm Fine @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"layer_height": "0.12",
|
||||||
|
"bottom_shell_layers": "5",
|
||||||
|
"top_shell_layers": "6"
|
||||||
|
}
|
11
resources/profiles/Custom/process/0.15mm Optimal @MyRRF.json
Normal file
11
resources/profiles/Custom/process/0.15mm Optimal @MyRRF.json
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.15mm Optimal @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"bottom_shell_layers": "4",
|
||||||
|
"top_shell_layers": "5",
|
||||||
|
"layer_height": "0.15"
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.20mm Standard @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"instantiation": "true",
|
||||||
|
"layer_height": "0.2",
|
||||||
|
"bottom_shell_layers": "3",
|
||||||
|
"top_shell_layers": "4"
|
||||||
|
}
|
12
resources/profiles/Custom/process/0.24mm Draft @MyRRF.json
Normal file
12
resources/profiles/Custom/process/0.24mm Draft @MyRRF.json
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.24mm Draft @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"layer_height": "0.24",
|
||||||
|
"top_surface_line_width": "0.45",
|
||||||
|
"bottom_shell_layers": "3",
|
||||||
|
"top_shell_layers": "4"
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"setting_id": "GP004",
|
||||||
|
"name": "0.28mm Extra Draft @MyRRF",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "true",
|
||||||
|
"inherits": "fdm_process_rrf_common",
|
||||||
|
"layer_height": "0.28",
|
||||||
|
"top_surface_line_width": "0.45",
|
||||||
|
"bottom_shell_layers": "3",
|
||||||
|
"top_shell_layers": "4"
|
||||||
|
}
|
109
resources/profiles/Custom/process/fdm_process_rrf_common.json
Normal file
109
resources/profiles/Custom/process/fdm_process_rrf_common.json
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
{
|
||||||
|
"type": "process",
|
||||||
|
"name": "fdm_process_rrf_common",
|
||||||
|
"from": "system",
|
||||||
|
"instantiation": "false",
|
||||||
|
"inherits": "fdm_process_common",
|
||||||
|
"adaptive_layer_height": "0",
|
||||||
|
"reduce_crossing_wall": "0",
|
||||||
|
"max_travel_detour_distance": "0",
|
||||||
|
"bottom_surface_pattern": "monotonic",
|
||||||
|
"bottom_shell_layers": "3",
|
||||||
|
"bottom_shell_thickness": "0",
|
||||||
|
"bridge_flow": "0.95",
|
||||||
|
"bridge_speed": "50",
|
||||||
|
"brim_width": "5",
|
||||||
|
"brim_object_gap": "0.1",
|
||||||
|
"compatible_printers_condition": "",
|
||||||
|
"print_sequence": "by layer",
|
||||||
|
"default_acceleration": "5000",
|
||||||
|
"top_surface_acceleration": "3000",
|
||||||
|
"travel_acceleration": "7000",
|
||||||
|
"inner_wall_acceleration": "5000",
|
||||||
|
"outer_wall_acceleration": "3000",
|
||||||
|
"bridge_no_support": "0",
|
||||||
|
"draft_shield": "disabled",
|
||||||
|
"elefant_foot_compensation": "0",
|
||||||
|
"outer_wall_line_width": "0.4",
|
||||||
|
"wall_infill_order": "inner wall/outer wall/infill",
|
||||||
|
"line_width": "0.4",
|
||||||
|
"infill_direction": "45",
|
||||||
|
"sparse_infill_density": "15%",
|
||||||
|
"sparse_infill_pattern": "grid",
|
||||||
|
"initial_layer_acceleration": "500",
|
||||||
|
"initial_layer_line_width": "0.5",
|
||||||
|
"initial_layer_print_height": "0.2",
|
||||||
|
"infill_combination": "0",
|
||||||
|
"sparse_infill_line_width": "0.45",
|
||||||
|
"infill_wall_overlap": "25%",
|
||||||
|
"interface_shells": "0",
|
||||||
|
"ironing_flow": "10%",
|
||||||
|
"ironing_spacing": "0.15",
|
||||||
|
"ironing_speed": "30",
|
||||||
|
"ironing_type": "no ironing",
|
||||||
|
"layer_height": "0.2",
|
||||||
|
"reduce_infill_retraction": "1",
|
||||||
|
"filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode",
|
||||||
|
"detect_overhang_wall": "1",
|
||||||
|
"overhang_1_4_speed": "0",
|
||||||
|
"overhang_2_4_speed": "50",
|
||||||
|
"overhang_3_4_speed": "30",
|
||||||
|
"overhang_4_4_speed": "10",
|
||||||
|
"inner_wall_line_width": "0.45",
|
||||||
|
"wall_loops": "3",
|
||||||
|
"print_settings_id": "",
|
||||||
|
"raft_layers": "0",
|
||||||
|
"seam_position": "aligned",
|
||||||
|
"skirt_distance": "2",
|
||||||
|
"skirt_height": "1",
|
||||||
|
"skirt_loops": "0",
|
||||||
|
"minimum_sparse_infill_area": "15",
|
||||||
|
"internal_solid_infill_line_width": "0.4",
|
||||||
|
"spiral_mode": "0",
|
||||||
|
"standby_temperature_delta": "-5",
|
||||||
|
"enable_support": "0",
|
||||||
|
"resolution": "0.012",
|
||||||
|
"support_type": "normal(auto)",
|
||||||
|
"support_style": "default",
|
||||||
|
"support_on_build_plate_only": "0",
|
||||||
|
"support_top_z_distance": "0.2",
|
||||||
|
"support_filament": "0",
|
||||||
|
"support_line_width": "0.4",
|
||||||
|
"support_interface_loop_pattern": "0",
|
||||||
|
"support_interface_filament": "0",
|
||||||
|
"support_interface_top_layers": "2",
|
||||||
|
"support_interface_bottom_layers": "2",
|
||||||
|
"support_interface_spacing": "0.5",
|
||||||
|
"support_interface_speed": "80",
|
||||||
|
"support_base_pattern": "rectilinear",
|
||||||
|
"support_base_pattern_spacing": "2.5",
|
||||||
|
"support_speed": "150",
|
||||||
|
"support_threshold_angle": "30",
|
||||||
|
"support_object_xy_distance": "0.35",
|
||||||
|
"tree_support_branch_angle": "45",
|
||||||
|
"tree_support_wall_count": "0",
|
||||||
|
"detect_thin_wall": "0",
|
||||||
|
"top_surface_pattern": "monotonic",
|
||||||
|
"top_surface_line_width": "0.4",
|
||||||
|
"top_shell_layers": "3",
|
||||||
|
"top_shell_thickness": "0.8",
|
||||||
|
"initial_layer_speed": "50",
|
||||||
|
"initial_layer_infill_speed": "105",
|
||||||
|
"outer_wall_speed": "120",
|
||||||
|
"inner_wall_speed": "200",
|
||||||
|
"internal_solid_infill_speed": "200",
|
||||||
|
"top_surface_speed": "100",
|
||||||
|
"gap_infill_speed": "100",
|
||||||
|
"sparse_infill_speed": "200",
|
||||||
|
"travel_speed": "350",
|
||||||
|
"enable_prime_tower": "0",
|
||||||
|
"wipe_tower_no_sparse_layers": "0",
|
||||||
|
"prime_tower_width": "60",
|
||||||
|
"xy_hole_compensation": "0",
|
||||||
|
"xy_contour_compensation": "0",
|
||||||
|
"enable_arc_fitting": "0",
|
||||||
|
"compatible_printers": [
|
||||||
|
"MyRRF 0.4 nozzle"
|
||||||
|
],
|
||||||
|
"exclude_object": "1"
|
||||||
|
}
|
|
@ -115,7 +115,7 @@
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"machine_start_gcode": ";v2.8-20240219-3;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n",
|
"machine_start_gcode": ";v2.9-20240311;\n;wiping nozzle start\nM106 P3 S0\nclean_nozzle_position\n;wiping nozzle end\n;*************preheat nozzle and hotbed for Z_TILT_ADJUST*************\nM140 S[bed_temperature_initial_layer_single]\nM104 S130\nG1 X110 Y110 F6000 \nG4 P200\nprobe\nSET_KINEMATIC_POSITION Z=0 ;Z homing\nZ_TILT_ADJUST \n;*************Z_TILT_ADJUST end*************\nM140 S[bed_temperature_initial_layer_single] ;heat hotbed temp set by user\nG1 X5 Y5 F6000 \nG28 \nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.2 F600\nM104 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user\nM106 S100 ;close head_nozzle fan\nG4 P3000\nM106 S255 ;close head_nozzle fan\nG4 P3000\nM106 S100 ;close head_nozzle fan\n;*************PRINT START*************\nM109 S[nozzle_temperature_initial_layer] ;heat nozzle temp set by user and wait \nM190 S[bed_temperature_initial_layer_single];heat bed temp set by user and wait \nM106 S0 ;close head_nozzle fan\nBED_MESH_CLEAR \nBED_MESH_PROFILE LOAD=default # bedmesh load\nG92 E0 ;Reset Extruder\nG1 Z4.0 F200 ;Move Z Axis up\nG90 ;absolute position\n ; ; ; ; ; ; ; ; ; draw line along model\nG92 E0 ;reset extruder\nG1 E4 F300 ;extrude filament\nG1 X{first_layer_print_min[0]-1.5} Y{min(first_layer_print_min[0] + 60,print_bed_max[0])} F6000 \nG1 Z0.22 F600\nG1 X{first_layer_print_min[0]-1.5} Y{max(0, first_layer_print_min[1]-1.5)} F2000 E10\nG1 Z0.22 F600\nG1 X{min(first_layer_print_min[0] + 60,print_bed_max[0])} F1200 E12\n ; ; ; ; ; ; ; ; ;draw line along model end \nG4 P200\nG1 Z2\nG92 E0 ;Reset Extruder\nCLEAR_PAUSE\n;***********model start************\n",
|
||||||
"machine_unload_filament_time": "0",
|
"machine_unload_filament_time": "0",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.28"
|
"0.28"
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"machine_start_gcode": ";V1.0\n\nM140 S[bed_temperature_initial_layer_single] \nG28\nG4 P200\nG90\nG1 Z4\nZ_TILT_ADJUST\nM140 S[bed_temperature_initial_layer_single] \nG90\nG1 X150 Y150 F3000\nG28 Z\nG1 X50 Y-3 F2500\nM109 S[nozzle_temperature_initial_layer]\nM190 S[bed_temperature_initial_layer_single] \nPRINT_START",
|
"machine_start_gcode": ";V1.1\n\nM140 S[bed_temperature_initial_layer_single] \nM104 S135\nG28\nG4 P200\nZ_TILT_ADJUST\nG90\nG1 X150 Y150 F3000\nG28 Z\nG1 X50 Y-4 F2500\nM109 S[nozzle_temperature_initial_layer]\nM190 S[bed_temperature_initial_layer_single] \nPRINT_START",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.28"
|
"0.28"
|
||||||
],
|
],
|
||||||
|
|
|
@ -113,7 +113,7 @@
|
||||||
"0"
|
"0"
|
||||||
],
|
],
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"machine_start_gcode": "M140 S[bed_temperature_initial_layer_single] \nG28\nG4 P200\nG90\nG1 Z4\nZ_TILT_ADJUST\nM140 S[bed_temperature_initial_layer_single] \nG90\nG1 X150 Y150 F3000\nG28 Z\nG1 X50 Y-3 F2500\nM109 S[nozzle_temperature_initial_layer]\nM190 S[bed_temperature_initial_layer_single] \nPRINT_START",
|
"machine_start_gcode": ";V1.1\n\nM140 S[bed_temperature_initial_layer_single] \nM104 S135\nG28\nG4 P200\nZ_TILT_ADJUST\nG90\nG1 X150 Y150 F3000\nG28 Z\nG1 X50 Y-4 F2500\nM109 S[nozzle_temperature_initial_layer]\nM190 S[bed_temperature_initial_layer_single] \nPRINT_START",
|
||||||
"max_layer_height": [
|
"max_layer_height": [
|
||||||
"0.28"
|
"0.28"
|
||||||
],
|
],
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_process_common",
|
"inherits": "fdm_process_common",
|
||||||
|
|
||||||
|
"overhang_2_4_speed": "50",
|
||||||
|
"overhang_3_4_speed": "30",
|
||||||
|
"top_shell_layers": "6",
|
||||||
"overhang_1_4_speed": "50",
|
"overhang_1_4_speed": "50",
|
||||||
"accel_to_decel_enable": "0",
|
"accel_to_decel_enable": "0",
|
||||||
"bottom_shell_layers": "4",
|
"bottom_shell_layers": "4",
|
||||||
|
@ -28,7 +31,7 @@
|
||||||
"skirt_speed": "50",
|
"skirt_speed": "50",
|
||||||
"sparse_infill_speed": "330",
|
"sparse_infill_speed": "330",
|
||||||
"support_line_width": "0.42",
|
"support_line_width": "0.42",
|
||||||
"top_shell_thickness": "0.8",
|
"top_shell_thickness": "1",
|
||||||
"top_surface_line_width": "0.42",
|
"top_surface_line_width": "0.42",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"FlyingBear Reborn3 0.4 nozzle"
|
"FlyingBear Reborn3 0.4 nozzle"
|
||||||
|
|
|
@ -6,6 +6,9 @@
|
||||||
"instantiation": "true",
|
"instantiation": "true",
|
||||||
"inherits": "fdm_process_common_S1",
|
"inherits": "fdm_process_common_S1",
|
||||||
|
|
||||||
|
"overhang_2_4_speed": "50",
|
||||||
|
"overhang_3_4_speed": "30",
|
||||||
|
"top_shell_layers": "6",
|
||||||
"overhang_1_4_speed": "50",
|
"overhang_1_4_speed": "50",
|
||||||
"accel_to_decel_enable": "0",
|
"accel_to_decel_enable": "0",
|
||||||
"bottom_shell_layers": "4",
|
"bottom_shell_layers": "4",
|
||||||
|
@ -28,7 +31,7 @@
|
||||||
"skirt_speed": "50",
|
"skirt_speed": "50",
|
||||||
"sparse_infill_speed": "330",
|
"sparse_infill_speed": "330",
|
||||||
"support_line_width": "0.42",
|
"support_line_width": "0.42",
|
||||||
"top_shell_thickness": "0.8",
|
"top_shell_thickness": "1",
|
||||||
"top_surface_line_width": "0.42",
|
"top_surface_line_width": "0.42",
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"FlyingBear S1 0.4 nozzle"
|
"FlyingBear S1 0.4 nozzle"
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
"initial_layer_print_height": "0.2",
|
"initial_layer_print_height": "0.2",
|
||||||
"initial_layer_speed": "50",
|
"initial_layer_speed": "50",
|
||||||
"initial_layer_travel_speed": "100%",
|
"initial_layer_travel_speed": "100%",
|
||||||
"inner_wall_acceleration": "10000",
|
"inner_wall_acceleration": "5000",
|
||||||
"inner_wall_jerk": "9",
|
"inner_wall_jerk": "9",
|
||||||
"inner_wall_line_width": "0.45",
|
"inner_wall_line_width": "0.45",
|
||||||
"interface_shells": "0",
|
"interface_shells": "0",
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
"tree_support_branch_diameter": "2",
|
"tree_support_branch_diameter": "2",
|
||||||
"tree_support_branch_angle": "45",
|
"tree_support_branch_angle": "45",
|
||||||
"tree_support_wall_count": "1",
|
"tree_support_wall_count": "1",
|
||||||
"detect_thin_wall": "0",
|
"detect_thin_wall": "1",
|
||||||
"top_surface_pattern": "monotonicline",
|
"top_surface_pattern": "monotonicline",
|
||||||
"top_surface_line_width": "0.42",
|
"top_surface_line_width": "0.42",
|
||||||
"top_surface_acceleration": "2000",
|
"top_surface_acceleration": "2000",
|
||||||
|
|
|
@ -105,6 +105,8 @@ var LangText = {
|
||||||
t111: "Create New",
|
t111: "Create New",
|
||||||
t112: "Join the Program",
|
t112: "Join the Program",
|
||||||
t113: "You may change your choice in preference anytime.",
|
t113: "You may change your choice in preference anytime.",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
es_ES: {
|
es_ES: {
|
||||||
t1: "Bienvenido a Orca Slicer",
|
t1: "Bienvenido a Orca Slicer",
|
||||||
|
@ -212,6 +214,8 @@ var LangText = {
|
||||||
t111: "Crear nuevo",
|
t111: "Crear nuevo",
|
||||||
t112: "Unirse al programa",
|
t112: "Unirse al programa",
|
||||||
t113: "Puede cambiar su elección en preferencias en cualquier momento.",
|
t113: "Puede cambiar su elección en preferencias en cualquier momento.",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
de_DE: {
|
de_DE: {
|
||||||
t1: "Willkommen im Orca Slicer",
|
t1: "Willkommen im Orca Slicer",
|
||||||
|
@ -312,6 +316,8 @@ var LangText = {
|
||||||
t104: "Profilname",
|
t104: "Profilname",
|
||||||
t105: "Profilautor",
|
t105: "Profilautor",
|
||||||
t106: "Profilbeschreibung",
|
t106: "Profilbeschreibung",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
cs_CZ: {
|
cs_CZ: {
|
||||||
t1: "Vítejte v Orca Slicer",
|
t1: "Vítejte v Orca Slicer",
|
||||||
|
@ -412,6 +418,8 @@ var LangText = {
|
||||||
t104: "Název profilu",
|
t104: "Název profilu",
|
||||||
t105: "Autor profilu",
|
t105: "Autor profilu",
|
||||||
t106: "Popis profilu",
|
t106: "Popis profilu",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
fr_FR: {
|
fr_FR: {
|
||||||
t1: "Bienvenue sur Orca Slicer",
|
t1: "Bienvenue sur Orca Slicer",
|
||||||
|
@ -515,6 +523,8 @@ var LangText = {
|
||||||
t109: "Filaments du système",
|
t109: "Filaments du système",
|
||||||
t110: "Filaments personnalisés",
|
t110: "Filaments personnalisés",
|
||||||
t111: "Créer un nouveau filament",
|
t111: "Créer un nouveau filament",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
wk1: "Démarrage rapide",
|
wk1: "Démarrage rapide",
|
||||||
wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.",
|
wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.",
|
||||||
wk3: "Workflow basé sur des projets",
|
wk3: "Workflow basé sur des projets",
|
||||||
|
@ -655,6 +665,7 @@ var LangText = {
|
||||||
wk15: "3D文本",
|
wk15: "3D文本",
|
||||||
wk16: "使用3D文本工具,用户可以轻松地在项目中创建各种3D文本形状,使模型更加个性化。Orca Slicer提供了数十种字体,并支持粗体和斜体样式,使文本具有更大的灵活性。",
|
wk16: "使用3D文本工具,用户可以轻松地在项目中创建各种3D文本形状,使模型更加个性化。Orca Slicer提供了数十种字体,并支持粗体和斜体样式,使文本具有更大的灵活性。",
|
||||||
orca1: "编辑项目信息",
|
orca1: "编辑项目信息",
|
||||||
|
orca2: "该模型没有相关信息",
|
||||||
},
|
},
|
||||||
zh_TW: {
|
zh_TW: {
|
||||||
t1: "歡迎使用 Orca Slicer",
|
t1: "歡迎使用 Orca Slicer",
|
||||||
|
@ -742,6 +753,8 @@ var LangText = {
|
||||||
t90: "3D 模型",
|
t90: "3D 模型",
|
||||||
t91: "下載3D模型",
|
t91: "下載3D模型",
|
||||||
t92: "Bambu聖誕小屋",
|
t92: "Bambu聖誕小屋",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
wk1: "快速入門指南",
|
wk1: "快速入門指南",
|
||||||
wk2: "本文介紹了 Orca Slicer 的最基本用法。它指導用戶配置軟體,創建項目,並逐步完成第一個列印任務。",
|
wk2: "本文介紹了 Orca Slicer 的最基本用法。它指導用戶配置軟體,創建項目,並逐步完成第一個列印任務。",
|
||||||
wk3: "基於項目的工作流",
|
wk3: "基於項目的工作流",
|
||||||
|
@ -865,6 +878,8 @@ var LangText = {
|
||||||
t111: "Создать новый",
|
t111: "Создать новый",
|
||||||
t112: "Присоединяйтесь к программе",
|
t112: "Присоединяйтесь к программе",
|
||||||
t113: "Вы можете изменить свой выбор в любое время.",
|
t113: "Вы можете изменить свой выбор в любое время.",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
ko_KR: {
|
ko_KR: {
|
||||||
t1: "Orca Slicer에 오신 것을 환영합니다",
|
t1: "Orca Slicer에 오신 것을 환영합니다",
|
||||||
|
@ -954,6 +969,8 @@ var LangText = {
|
||||||
t92: "Bambu Christmas Cabin",
|
t92: "Bambu Christmas Cabin",
|
||||||
t93: "프린터 연결",
|
t93: "프린터 연결",
|
||||||
t94: "장치를 보려면 프린터 연결을 설정하세요.",
|
t94: "장치를 보려면 프린터 연결을 설정하세요.",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
tr_TR: {
|
tr_TR: {
|
||||||
t1: "Orca Slicer'a hoş geldiniz",
|
t1: "Orca Slicer'a hoş geldiniz",
|
||||||
|
@ -1043,6 +1060,8 @@ var LangText = {
|
||||||
t92: "Bambu Noel Kabini",
|
t92: "Bambu Noel Kabini",
|
||||||
t93: "Yazıcı Bağlantısı",
|
t93: "Yazıcı Bağlantısı",
|
||||||
t94: "Cihazı görüntülemek için lütfen yazıcı bağlantınızı kurun.",
|
t94: "Cihazı görüntülemek için lütfen yazıcı bağlantınızı kurun.",
|
||||||
|
orca1: "Edit Project Info",
|
||||||
|
orca2: "no model information",
|
||||||
},
|
},
|
||||||
pl_PL: {
|
pl_PL: {
|
||||||
t1: "Witamy w Orca Slicer",
|
t1: "Witamy w Orca Slicer",
|
||||||
|
@ -1057,7 +1076,7 @@ var LangText = {
|
||||||
t10: "Wybór drukarki",
|
t10: "Wybór drukarki",
|
||||||
t11: "Wszystkie",
|
t11: "Wszystkie",
|
||||||
t12: "Wyczyść wszystko",
|
t12: "Wyczyść wszystko",
|
||||||
t13: "dysza mm",
|
t13: "mm dysza",
|
||||||
t14: "Wybór filamentu",
|
t14: "Wybór filamentu",
|
||||||
t15: "Drukarka",
|
t15: "Drukarka",
|
||||||
t16: "Typ filamentu",
|
t16: "Typ filamentu",
|
||||||
|
@ -1151,6 +1170,7 @@ var LangText = {
|
||||||
t112: "Dołącz do programu",
|
t112: "Dołącz do programu",
|
||||||
t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.",
|
t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.",
|
||||||
orca1: "Edytuj informacje o projekcie",
|
orca1: "Edytuj informacje o projekcie",
|
||||||
|
orca2: "brak informacji o modelu",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
<script type="text/javascript" src="js/home.js"></script>
|
<script type="text/javascript" src="js/home.js"></script>
|
||||||
</head>
|
</head>
|
||||||
<body class="ZScrol" onLoad="OnInit()">
|
<body class="ZScrol" onLoad="OnInit()">
|
||||||
<div id="LeftBoard">
|
<div id="LeftBoard" style="display: none;">
|
||||||
<div id="LoginArea">
|
<div id="LoginArea">
|
||||||
<div id="Login1">
|
<div id="Login1">
|
||||||
<div id="Icon1"><img id="BBLIcon" src="../image/logo2.png" /></div>
|
<div id="Icon1"><img id="BBLIcon" src="../image/logo2.png" /></div>
|
||||||
|
|
|
@ -80,61 +80,53 @@ function Set_RecentFile_MouseRightBtn_Event()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SetLoginPanelVisibility(visible) {
|
||||||
|
var leftBoard = document.getElementById("LeftBoard");
|
||||||
|
if (visible) {
|
||||||
|
leftBoard.style.display = "block";
|
||||||
|
} else {
|
||||||
|
leftBoard.style.display = "none";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function HandleStudio( pVal )
|
function HandleStudio( pVal )
|
||||||
{
|
{
|
||||||
let strCmd = pVal['command'];
|
let strCmd = pVal['command'];
|
||||||
|
|
||||||
if(strCmd=='get_recent_projects')
|
if (strCmd == "get_recent_projects") {
|
||||||
{
|
ShowRecentFileList(pVal["response"]);
|
||||||
ShowRecentFileList(pVal['response']);
|
} else if (strCmd == "studio_userlogin") {
|
||||||
}
|
SetLoginInfo(pVal["data"]["avatar"], pVal["data"]["name"]);
|
||||||
else if(strCmd=='studio_userlogin')
|
} else if (strCmd == "studio_useroffline") {
|
||||||
{
|
|
||||||
SetLoginInfo(pVal['data']['avatar'],pVal['data']['name']);
|
|
||||||
}
|
|
||||||
else if(strCmd=='studio_useroffline')
|
|
||||||
{
|
|
||||||
SetUserOffline();
|
SetUserOffline();
|
||||||
}
|
} else if (strCmd == "studio_set_mallurl") {
|
||||||
else if( strCmd=="studio_set_mallurl" )
|
SetMallUrl(pVal["data"]["url"]);
|
||||||
{
|
} else if (strCmd == "studio_clickmenu") {
|
||||||
SetMallUrl( pVal['data']['url'] );
|
let strName = pVal["data"]["menu"];
|
||||||
}
|
|
||||||
else if( strCmd=="studio_clickmenu" )
|
|
||||||
{
|
|
||||||
let strName=pVal['data']['menu'];
|
|
||||||
|
|
||||||
GotoMenu(strName);
|
GotoMenu(strName);
|
||||||
}
|
} else if (strCmd == "network_plugin_installtip") {
|
||||||
else if( strCmd=="network_plugin_installtip" )
|
|
||||||
{
|
|
||||||
let nShow = pVal["show"] * 1;
|
let nShow = pVal["show"] * 1;
|
||||||
|
|
||||||
if(nShow==1)
|
if (nShow == 1) {
|
||||||
{
|
|
||||||
$("#NoPluginTip").show();
|
$("#NoPluginTip").show();
|
||||||
$("#NoPluginTip").css("display", "flex");
|
$("#NoPluginTip").css("display", "flex");
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
$("#NoPluginTip").hide();
|
$("#NoPluginTip").hide();
|
||||||
}
|
}
|
||||||
}
|
} else if (strCmd == "modelmall_model_advise_get") {
|
||||||
else if( strCmd=="modelmall_model_advise_get")
|
|
||||||
{
|
|
||||||
//alert('hot');
|
//alert('hot');
|
||||||
if( m_HotModelList!=null )
|
if (m_HotModelList != null) {
|
||||||
{
|
let SS1 = JSON.stringify(pVal["hits"]);
|
||||||
let SS1=JSON.stringify(pVal['hits']);
|
|
||||||
let SS2 = JSON.stringify(m_HotModelList);
|
let SS2 = JSON.stringify(m_HotModelList);
|
||||||
|
|
||||||
if( SS1==SS2 )
|
if (SS1 == SS2) return;
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_HotModelList=pVal['hits'];
|
m_HotModelList = pVal["hits"];
|
||||||
ShowStaffPick(m_HotModelList);
|
ShowStaffPick(m_HotModelList);
|
||||||
|
} else if (data.cmd === "SetLoginPanelVisibility") {
|
||||||
|
SetLoginPanelVisibility(data.visible);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
|
|
||||||
<div id="EmptyArea">
|
<div id="EmptyArea">
|
||||||
<div><img src="img/null.png"></div>
|
<div><img src="img/null.png"></div>
|
||||||
<div>no model information</div>
|
<div class="Text_Title Text_Bold trans" tid='orca2'>no model information</div>
|
||||||
<div id="AddModelInfoBtn" class="trans TextS1" tid='orca1' onClick="OnClickEditProjectInfo()">Edit Project Info</div>
|
<div id="AddModelInfoBtn" class="trans TextS1" tid='orca1' onClick="OnClickEditProjectInfo()">Edit Project Info</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -874,7 +874,7 @@ static std::vector<std::string> s_Preset_printer_options {
|
||||||
"nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "retract_lift_enforce","support_chamber_temp_control","support_air_filtration","printer_structure",
|
"nozzle_type", "nozzle_hrc","auxiliary_fan", "nozzle_volume","upward_compatible_machine", "z_hop_types", "retract_lift_enforce","support_chamber_temp_control","support_air_filtration","printer_structure",
|
||||||
"best_object_pos","head_wrap_detect_zone",
|
"best_object_pos","head_wrap_detect_zone",
|
||||||
//SoftFever
|
//SoftFever
|
||||||
"host_type", "print_host", "printhost_apikey",
|
"host_type", "print_host", "printhost_apikey", "bbl_use_printhost",
|
||||||
"print_host_webui",
|
"print_host_webui",
|
||||||
"printhost_cafile","printhost_port","printhost_authorization_type",
|
"printhost_cafile","printhost_port","printhost_authorization_type",
|
||||||
"printhost_user", "printhost_password", "printhost_ssl_ignore_revoke", "thumbnails", "thumbnails_format",
|
"printhost_user", "printhost_password", "printhost_ssl_ignore_revoke", "thumbnails", "thumbnails_format",
|
||||||
|
@ -2941,6 +2941,7 @@ static std::vector<std::string> s_PhysicalPrinter_opts {
|
||||||
"preset_name", // temporary option to compatibility with older Slicer
|
"preset_name", // temporary option to compatibility with older Slicer
|
||||||
"preset_names",
|
"preset_names",
|
||||||
"printer_technology",
|
"printer_technology",
|
||||||
|
"bbl_use_printhost",
|
||||||
"host_type",
|
"host_type",
|
||||||
"print_host",
|
"print_host",
|
||||||
"print_host_webui",
|
"print_host_webui",
|
||||||
|
|
|
@ -344,6 +344,13 @@ VendorType PresetBundle::get_current_vendor_type()
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PresetBundle::use_bbl_network()
|
||||||
|
{
|
||||||
|
const auto cfg = printers.get_edited_preset().config;
|
||||||
|
const bool use_bbl_network = is_bbl_vendor() && !cfg.opt_bool("bbl_use_printhost");
|
||||||
|
return use_bbl_network;
|
||||||
|
}
|
||||||
|
|
||||||
//BBS: load project embedded presets
|
//BBS: load project embedded presets
|
||||||
PresetsConfigSubstitutions PresetBundle::load_project_embedded_presets(std::vector<Preset*> project_presets, ForwardCompatibilitySubstitutionRule substitution_rule)
|
PresetsConfigSubstitutions PresetBundle::load_project_embedded_presets(std::vector<Preset*> project_presets, ForwardCompatibilitySubstitutionRule substitution_rule)
|
||||||
{
|
{
|
||||||
|
|
|
@ -97,6 +97,7 @@ public:
|
||||||
VendorType get_current_vendor_type();
|
VendorType get_current_vendor_type();
|
||||||
// Vendor related handy functions
|
// Vendor related handy functions
|
||||||
bool is_bbl_vendor() { return get_current_vendor_type() == VendorType::Marlin_BBL; }
|
bool is_bbl_vendor() { return get_current_vendor_type() == VendorType::Marlin_BBL; }
|
||||||
|
bool use_bbl_network();
|
||||||
|
|
||||||
//BBS: project embedded preset logic
|
//BBS: project embedded preset logic
|
||||||
PresetsConfigSubstitutions load_project_embedded_presets(std::vector<Preset*> project_presets, ForwardCompatibilitySubstitutionRule substitution_rule);
|
PresetsConfigSubstitutions load_project_embedded_presets(std::vector<Preset*> project_presets, ForwardCompatibilitySubstitutionRule substitution_rule);
|
||||||
|
|
|
@ -103,7 +103,9 @@ static t_config_enum_values s_keys_map_PrintHostType {
|
||||||
{ "astrobox", htAstroBox },
|
{ "astrobox", htAstroBox },
|
||||||
{ "repetier", htRepetier },
|
{ "repetier", htRepetier },
|
||||||
{ "mks", htMKS },
|
{ "mks", htMKS },
|
||||||
{ "obico", htObico }
|
{ "obico", htObico },
|
||||||
|
{ "flashforge", htFlashforge },
|
||||||
|
{ "simplyprint", htSimplyPrint },
|
||||||
};
|
};
|
||||||
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PrintHostType)
|
CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(PrintHostType)
|
||||||
|
|
||||||
|
@ -541,6 +543,13 @@ void PrintConfigDef::init_common_params()
|
||||||
def->mode = comDevelop;
|
def->mode = comDevelop;
|
||||||
def->set_default_value(new ConfigOptionStrings());
|
def->set_default_value(new ConfigOptionStrings());
|
||||||
|
|
||||||
|
def = this->add("bbl_use_printhost", coBool);
|
||||||
|
def->label = L("Use 3rd-party print host");
|
||||||
|
def->tooltip = L("Allow controlling BambuLab's printer through 3rd party print hosts");
|
||||||
|
def->mode = comAdvanced;
|
||||||
|
def->cli = ConfigOptionDef::nocli;
|
||||||
|
def->set_default_value(new ConfigOptionBool(false));
|
||||||
|
|
||||||
def = this->add("print_host", coString);
|
def = this->add("print_host", coString);
|
||||||
def->label = L("Hostname, IP or URL");
|
def->label = L("Hostname, IP or URL");
|
||||||
def->tooltip = L("Orca Slicer can upload G-code files to a printer host. This field should contain "
|
def->tooltip = L("Orca Slicer can upload G-code files to a printer host. This field should contain "
|
||||||
|
@ -3066,6 +3075,8 @@ def = this->add("filament_loading_speed", coFloats);
|
||||||
def->enum_values.push_back("repetier");
|
def->enum_values.push_back("repetier");
|
||||||
def->enum_values.push_back("mks");
|
def->enum_values.push_back("mks");
|
||||||
def->enum_values.push_back("obico");
|
def->enum_values.push_back("obico");
|
||||||
|
def->enum_values.push_back("flashforge");
|
||||||
|
def->enum_values.push_back("simplyprint");
|
||||||
def->enum_labels.push_back("PrusaLink");
|
def->enum_labels.push_back("PrusaLink");
|
||||||
def->enum_labels.push_back("PrusaConnect");
|
def->enum_labels.push_back("PrusaConnect");
|
||||||
def->enum_labels.push_back("Octo/Klipper");
|
def->enum_labels.push_back("Octo/Klipper");
|
||||||
|
@ -3075,6 +3086,8 @@ def = this->add("filament_loading_speed", coFloats);
|
||||||
def->enum_labels.push_back("Repetier");
|
def->enum_labels.push_back("Repetier");
|
||||||
def->enum_labels.push_back("MKS");
|
def->enum_labels.push_back("MKS");
|
||||||
def->enum_labels.push_back("Obico");
|
def->enum_labels.push_back("Obico");
|
||||||
|
def->enum_labels.push_back("Flashforge");
|
||||||
|
def->enum_labels.push_back("SimplyPrint");
|
||||||
def->mode = comAdvanced;
|
def->mode = comAdvanced;
|
||||||
def->cli = ConfigOptionDef::nocli;
|
def->cli = ConfigOptionDef::nocli;
|
||||||
def->set_default_value(new ConfigOptionEnum<PrintHostType>(htOctoPrint));
|
def->set_default_value(new ConfigOptionEnum<PrintHostType>(htOctoPrint));
|
||||||
|
|
|
@ -59,7 +59,7 @@ enum class FuzzySkinType {
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PrintHostType {
|
enum PrintHostType {
|
||||||
htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htObico
|
htPrusaLink, htPrusaConnect, htOctoPrint, htDuet, htFlashAir, htAstroBox, htRepetier, htMKS, htObico, htFlashforge, htSimplyPrint
|
||||||
};
|
};
|
||||||
|
|
||||||
enum AuthorizationType {
|
enum AuthorizationType {
|
||||||
|
|
|
@ -2059,9 +2059,9 @@ void PrintObject::bridge_over_infill()
|
||||||
unsupported_area = closing(unsupported_area, float(SCALED_EPSILON));
|
unsupported_area = closing(unsupported_area, float(SCALED_EPSILON));
|
||||||
|
|
||||||
// Orca:
|
// Orca:
|
||||||
// Lightning infill benefits from always having a bridge layer so don't filter out small unsupported areas. Also, don't filter small internal unsupported areas if the user has requested so.
|
// Don't filter small internal unsupported areas if the user has requested so.
|
||||||
double expansion_multiplier = 3;
|
double expansion_multiplier = 3;
|
||||||
if(has_lightning_infill || po->config().dont_filter_internal_bridges.value !=ibfDisabled){
|
if(po->config().dont_filter_internal_bridges.value !=ibfDisabled){
|
||||||
expansion_multiplier = 1;
|
expansion_multiplier = 1;
|
||||||
}
|
}
|
||||||
// By expanding the lower layer solids, we avoid making bridges from the tiny internal overhangs that are (very likely) supported by previous layer solids
|
// By expanding the lower layer solids, we avoid making bridges from the tiny internal overhangs that are (very likely) supported by previous layer solids
|
||||||
|
|
|
@ -508,6 +508,8 @@ set(SLIC3R_GUI_SOURCES
|
||||||
Utils/PrintHost.hpp
|
Utils/PrintHost.hpp
|
||||||
Utils/Serial.cpp
|
Utils/Serial.cpp
|
||||||
Utils/Serial.hpp
|
Utils/Serial.hpp
|
||||||
|
Utils/SerialMessageType.hpp
|
||||||
|
Utils/SerialMessage.hpp
|
||||||
Utils/MKS.cpp
|
Utils/MKS.cpp
|
||||||
Utils/MKS.hpp
|
Utils/MKS.hpp
|
||||||
Utils/WxFontUtils.cpp
|
Utils/WxFontUtils.cpp
|
||||||
|
@ -528,6 +530,15 @@ set(SLIC3R_GUI_SOURCES
|
||||||
GUI/PrinterCloudAuthDialog.hpp
|
GUI/PrinterCloudAuthDialog.hpp
|
||||||
Utils/Obico.cpp
|
Utils/Obico.cpp
|
||||||
Utils/Obico.hpp
|
Utils/Obico.hpp
|
||||||
|
Utils/Flashforge.cpp
|
||||||
|
Utils/Flashforge.hpp
|
||||||
|
|
||||||
|
GUI/OAuthDialog.cpp
|
||||||
|
GUI/OAuthDialog.hpp
|
||||||
|
GUI/Jobs/OAuthJob.cpp
|
||||||
|
GUI/Jobs/OAuthJob.hpp
|
||||||
|
Utils/SimplyPrint.cpp
|
||||||
|
Utils/SimplyPrint.hpp
|
||||||
)
|
)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
|
|
|
@ -1434,7 +1434,7 @@ int GUI_App::install_plugin(std::string name, std::string package_name, InstallP
|
||||||
if (pro_fn)
|
if (pro_fn)
|
||||||
pro_fn(InstallStatusInstallCompleted, 100, cancel);
|
pro_fn(InstallStatusInstallCompleted, 100, cancel);
|
||||||
if (name == "plugins")
|
if (name == "plugins")
|
||||||
app_config->set_str("app", "installed_networking", "1");
|
app_config->set_bool("installed_networking", true);
|
||||||
BOOST_LOG_TRIVIAL(info) << "[install_plugin] success";
|
BOOST_LOG_TRIVIAL(info) << "[install_plugin] success";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -2616,6 +2616,11 @@ void GUI_App::copy_network_if_available()
|
||||||
|
|
||||||
bool GUI_App::on_init_network(bool try_backup)
|
bool GUI_App::on_init_network(bool try_backup)
|
||||||
{
|
{
|
||||||
|
auto should_load_networking_plugin = app_config->get_bool("installed_networking");
|
||||||
|
if(!should_load_networking_plugin) {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "Don't load plugin as installed_networking is false";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
int load_agent_dll = Slic3r::NetworkAgent::initialize_network_module();
|
int load_agent_dll = Slic3r::NetworkAgent::initialize_network_module();
|
||||||
bool create_network_agent = false;
|
bool create_network_agent = false;
|
||||||
__retry:
|
__retry:
|
||||||
|
@ -2627,7 +2632,7 @@ __retry:
|
||||||
if (!bambu_source) {
|
if (!bambu_source) {
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": can not get bambu source module!";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": can not get bambu source module!";
|
||||||
m_networking_compatible = false;
|
m_networking_compatible = false;
|
||||||
if (app_config->get("installed_networking") == "1") {
|
if (should_load_networking_plugin) {
|
||||||
m_networking_need_update = true;
|
m_networking_need_update = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2642,13 +2647,13 @@ __retry:
|
||||||
goto __retry;
|
goto __retry;
|
||||||
}
|
}
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, version dismatch, need upload network module";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, version dismatch, need upload network module";
|
||||||
if (app_config->get("installed_networking") == "1") {
|
if (should_load_networking_plugin) {
|
||||||
m_networking_need_update = true;
|
m_networking_need_update = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, load dll failed";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, load dll failed";
|
||||||
if (app_config->get("installed_networking") == "1") {
|
if (should_load_networking_plugin) {
|
||||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, need upload network module";
|
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": on_init_network, need upload network module";
|
||||||
m_networking_need_update = true;
|
m_networking_need_update = true;
|
||||||
}
|
}
|
||||||
|
@ -3462,6 +3467,7 @@ void GUI_App::get_login_info()
|
||||||
wxString strJS = wxString::Format("window.postMessage(%s)", logout_cmd);
|
wxString strJS = wxString::Format("window.postMessage(%s)", logout_cmd);
|
||||||
GUI::wxGetApp().run_script(strJS);
|
GUI::wxGetApp().run_script(strJS);
|
||||||
}
|
}
|
||||||
|
mainframe->m_webview->SetLoginPanelVisibility(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,35 +7,179 @@
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
static std::string parse_params(std::string url, std::string key)
|
std::string url_get_param(const std::string& url, const std::string& key)
|
||||||
{
|
{
|
||||||
size_t start = url.find(key);
|
size_t start = url.find(key);
|
||||||
if (start < 0) return "";
|
if (start == std::string::npos) return "";
|
||||||
size_t eq = url.find('=', start);
|
size_t eq = url.find('=', start);
|
||||||
if (eq < 0) return "";
|
if (eq == std::string::npos) return "";
|
||||||
std::string key_str = url.substr(start, eq - start);
|
std::string key_str = url.substr(start, eq - start);
|
||||||
if (key_str != key)
|
if (key_str != key)
|
||||||
return "";
|
return "";
|
||||||
start += key.size() + 1;
|
start += key.size() + 1;
|
||||||
size_t end = url.find('&', start);
|
size_t end = url.find('&', start);
|
||||||
if (end < 0)
|
if (end == std::string::npos) end = url.length(); // Last param
|
||||||
return "";
|
|
||||||
std::string result = url.substr(start, end - start);
|
std::string result = url.substr(start, end - start);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string http_headers::get_response()
|
void session::start()
|
||||||
|
{
|
||||||
|
read_first_line();
|
||||||
|
}
|
||||||
|
|
||||||
|
void session::stop()
|
||||||
|
{
|
||||||
|
boost::system::error_code ignored_ec;
|
||||||
|
socket.shutdown(boost::asio::socket_base::shutdown_both, ignored_ec);
|
||||||
|
socket.close(ignored_ec);
|
||||||
|
}
|
||||||
|
|
||||||
|
void session::read_first_line()
|
||||||
|
{
|
||||||
|
auto self(shared_from_this());
|
||||||
|
|
||||||
|
async_read_until(socket, buff, '\r', [this, self](const boost::beast::error_code& e, std::size_t s) {
|
||||||
|
if (!e) {
|
||||||
|
std::string line, ignore;
|
||||||
|
std::istream stream{&buff};
|
||||||
|
std::getline(stream, line, '\r');
|
||||||
|
std::getline(stream, ignore, '\n');
|
||||||
|
headers.on_read_request_line(line);
|
||||||
|
read_next_line();
|
||||||
|
} else if (e != boost::asio::error::operation_aborted) {
|
||||||
|
server.stop(self);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void session::read_body()
|
||||||
|
{
|
||||||
|
auto self(shared_from_this());
|
||||||
|
|
||||||
|
int nbuffer = 1000;
|
||||||
|
std::shared_ptr<std::vector<char>> bufptr = std::make_shared<std::vector<char>>(nbuffer);
|
||||||
|
async_read(socket, boost::asio::buffer(*bufptr, nbuffer),
|
||||||
|
[this, self](const boost::beast::error_code& e, std::size_t s) { server.stop(self); });
|
||||||
|
}
|
||||||
|
|
||||||
|
void session::read_next_line()
|
||||||
|
{
|
||||||
|
auto self(shared_from_this());
|
||||||
|
|
||||||
|
async_read_until(socket, buff, '\r', [this, self](const boost::beast::error_code& e, std::size_t s) {
|
||||||
|
if (!e) {
|
||||||
|
std::string line, ignore;
|
||||||
|
std::istream stream{&buff};
|
||||||
|
std::getline(stream, line, '\r');
|
||||||
|
std::getline(stream, ignore, '\n');
|
||||||
|
headers.on_read_header(line);
|
||||||
|
|
||||||
|
if (line.length() == 0) {
|
||||||
|
if (headers.content_length() == 0) {
|
||||||
|
const std::string url_str = Http::url_decode(headers.get_url());
|
||||||
|
const auto resp = server.server.m_request_handler(url_str);
|
||||||
|
std::stringstream ssOut;
|
||||||
|
resp->write_response(ssOut);
|
||||||
|
std::shared_ptr<std::string> str = std::make_shared<std::string>(ssOut.str());
|
||||||
|
async_write(socket, boost::asio::buffer(str->c_str(), str->length()),
|
||||||
|
[this, self](const boost::beast::error_code& e, std::size_t s) {
|
||||||
|
std::cout << "done" << std::endl;
|
||||||
|
server.stop(self);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
read_body();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
read_next_line();
|
||||||
|
}
|
||||||
|
} else if (e != boost::asio::error::operation_aborted) {
|
||||||
|
server.stop(self);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::IOServer::do_accept()
|
||||||
|
{
|
||||||
|
acceptor.async_accept([this](boost::system::error_code ec, boost::asio::ip::tcp::socket socket) {
|
||||||
|
if (!acceptor.is_open()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ec) {
|
||||||
|
const auto ss = std::make_shared<session>(*this, std::move(socket));
|
||||||
|
start(ss);
|
||||||
|
}
|
||||||
|
|
||||||
|
do_accept();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::IOServer::start(std::shared_ptr<session> session)
|
||||||
|
{
|
||||||
|
sessions.insert(session);
|
||||||
|
session->start();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::IOServer::stop(std::shared_ptr<session> session)
|
||||||
|
{
|
||||||
|
sessions.erase(session);
|
||||||
|
session->stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::IOServer::stop_all()
|
||||||
|
{
|
||||||
|
for (auto s : sessions) {
|
||||||
|
s->stop();
|
||||||
|
}
|
||||||
|
sessions.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
HttpServer::HttpServer(boost::asio::ip::port_type port) : port(port) {}
|
||||||
|
|
||||||
|
void HttpServer::start()
|
||||||
|
{
|
||||||
|
BOOST_LOG_TRIVIAL(info) << "start_http_service...";
|
||||||
|
start_http_server = true;
|
||||||
|
m_http_server_thread = create_thread([this] {
|
||||||
|
set_current_thread_name("http_server");
|
||||||
|
server_ = std::make_unique<IOServer>(*this);
|
||||||
|
server_->acceptor.listen();
|
||||||
|
|
||||||
|
server_->do_accept();
|
||||||
|
|
||||||
|
server_->io_service.run();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::stop()
|
||||||
|
{
|
||||||
|
start_http_server = false;
|
||||||
|
if (server_) {
|
||||||
|
server_->acceptor.close();
|
||||||
|
server_->stop_all();
|
||||||
|
}
|
||||||
|
if (m_http_server_thread.joinable())
|
||||||
|
m_http_server_thread.join();
|
||||||
|
server_.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::set_request_handler(const std::function<std::shared_ptr<Response>(const std::string&)>& request_handler)
|
||||||
|
{
|
||||||
|
this->m_request_handler = request_handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::shared_ptr<HttpServer::Response> HttpServer::bbl_auth_handle_request(const std::string& url)
|
||||||
{
|
{
|
||||||
BOOST_LOG_TRIVIAL(info) << "thirdparty_login: get_response";
|
BOOST_LOG_TRIVIAL(info) << "thirdparty_login: get_response";
|
||||||
std::stringstream ssOut;
|
|
||||||
std::string url_str = Http::url_decode(url);
|
if (boost::contains(url, "access_token")) {
|
||||||
if (boost::contains(url_str, "access_token")) {
|
std::string redirect_url = url_get_param(url, "redirect_url");
|
||||||
std::string sHTML = "<html><body><p>redirect to url </p></body></html>";
|
std::string access_token = url_get_param(url, "access_token");
|
||||||
std::string redirect_url = parse_params(url_str, "redirect_url");
|
std::string refresh_token = url_get_param(url, "refresh_token");
|
||||||
std::string access_token = parse_params(url_str, "access_token");
|
std::string expires_in_str = url_get_param(url, "expires_in");
|
||||||
std::string refresh_token = parse_params(url_str, "refresh_token");
|
std::string refresh_expires_in_str = url_get_param(url, "refresh_expires_in");
|
||||||
std::string expires_in_str = parse_params(url_str, "expires_in");
|
|
||||||
std::string refresh_expires_in_str = parse_params(url_str, "refresh_expires_in");
|
|
||||||
NetworkAgent* agent = wxGetApp().getAgent();
|
NetworkAgent* agent = wxGetApp().getAgent();
|
||||||
|
|
||||||
unsigned int http_code;
|
unsigned int http_code;
|
||||||
|
@ -72,79 +216,38 @@ std::string http_headers::get_response()
|
||||||
if (agent->is_user_login()) {
|
if (agent->is_user_login()) {
|
||||||
wxGetApp().request_user_login(1);
|
wxGetApp().request_user_login(1);
|
||||||
}
|
}
|
||||||
GUI::wxGetApp().CallAfter([this] {
|
GUI::wxGetApp().CallAfter([] { wxGetApp().ShowUserLogin(false); });
|
||||||
wxGetApp().ShowUserLogin(false);
|
std::string location_str = (boost::format("%1%?result=success") % redirect_url).str();
|
||||||
});
|
return std::make_shared<ResponseRedirect>(location_str);
|
||||||
std::string location_str = (boost::format("Location: %1%?result=success") % redirect_url).str();
|
|
||||||
ssOut << "HTTP/1.1 302 Found" << std::endl;
|
|
||||||
ssOut << location_str << std::endl;
|
|
||||||
ssOut << "content-type: text/html" << std::endl;
|
|
||||||
ssOut << "content-length: " << sHTML.length() << std::endl;
|
|
||||||
ssOut << std::endl;
|
|
||||||
ssOut << sHTML;
|
|
||||||
} else {
|
} else {
|
||||||
std::string error_str = "get_user_profile_error_" + std::to_string(result);
|
std::string error_str = "get_user_profile_error_" + std::to_string(result);
|
||||||
std::string location_str = (boost::format("Location: %1%?result=fail&error=%2%") % redirect_url % error_str).str();
|
std::string location_str = (boost::format("%1%?result=fail&error=%2%") % redirect_url % error_str).str();
|
||||||
ssOut << "HTTP/1.1 302 Found" << std::endl;
|
return std::make_shared<ResponseRedirect>(location_str);
|
||||||
ssOut << location_str << std::endl;
|
|
||||||
ssOut << "content-type: text/html" << std::endl;
|
|
||||||
ssOut << "content-length: " << sHTML.length() << std::endl;
|
|
||||||
ssOut << std::endl;
|
|
||||||
ssOut << sHTML;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
std::string sHTML = "<html><body><h1>404 Not Found</h1><p>There's nothing here.</p></body></html>";
|
return std::make_shared<ResponseNotFound>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HttpServer::ResponseNotFound::write_response(std::stringstream& ssOut)
|
||||||
|
{
|
||||||
|
const std::string sHTML = "<html><body><h1>404 Not Found</h1><p>There's nothing here.</p></body></html>";
|
||||||
ssOut << "HTTP/1.1 404 Not Found" << std::endl;
|
ssOut << "HTTP/1.1 404 Not Found" << std::endl;
|
||||||
ssOut << "content-type: text/html" << std::endl;
|
ssOut << "content-type: text/html" << std::endl;
|
||||||
ssOut << "content-length: " << sHTML.length() << std::endl;
|
ssOut << "content-length: " << sHTML.length() << std::endl;
|
||||||
ssOut << std::endl;
|
ssOut << std::endl;
|
||||||
ssOut << sHTML;
|
ssOut << sHTML;
|
||||||
}
|
}
|
||||||
return ssOut.str();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
void HttpServer::ResponseRedirect::write_response(std::stringstream& ssOut)
|
||||||
void accept_and_run(boost::asio::ip::tcp::acceptor& acceptor, boost::asio::io_service& io_service)
|
|
||||||
{
|
{
|
||||||
std::shared_ptr<session> sesh = std::make_shared<session>(io_service);
|
const std::string sHTML = "<html><body><p>redirect to url </p></body></html>";
|
||||||
acceptor.async_accept(sesh->socket,
|
ssOut << "HTTP/1.1 302 Found" << std::endl;
|
||||||
[sesh, &acceptor, &io_service](const boost::beast::error_code& accept_error)
|
ssOut << "Location: " << location_str << std::endl;
|
||||||
{
|
ssOut << "content-type: text/html" << std::endl;
|
||||||
accept_and_run(acceptor, io_service);
|
ssOut << "content-length: " << sHTML.length() << std::endl;
|
||||||
if (!accept_error)
|
ssOut << std::endl;
|
||||||
{
|
ssOut << sHTML;
|
||||||
session::interact(sesh);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
HttpServer::HttpServer()
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HttpServer::start()
|
|
||||||
{
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "start_http_service...";
|
|
||||||
start_http_server = true;
|
|
||||||
m_http_server_thread = Slic3r::create_thread(
|
|
||||||
[this] {
|
|
||||||
boost::asio::io_service io_service;
|
|
||||||
boost::asio::ip::tcp::endpoint endpoint{ boost::asio::ip::tcp::v4(), LOCALHOST_PORT};
|
|
||||||
boost::asio::ip::tcp::acceptor acceptor { io_service, endpoint};
|
|
||||||
acceptor.listen();
|
|
||||||
accept_and_run(acceptor, io_service);
|
|
||||||
while (start_http_server) {
|
|
||||||
io_service.run();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void HttpServer::stop()
|
|
||||||
{
|
|
||||||
start_http_server = false;
|
|
||||||
if (m_http_server_thread.joinable())
|
|
||||||
m_http_server_thread.join();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // GUI
|
} // GUI
|
||||||
|
|
|
@ -13,14 +13,12 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
using namespace boost::system;
|
|
||||||
using namespace boost::asio;
|
|
||||||
|
|
||||||
#define LOCALHOST_PORT 13618
|
#define LOCALHOST_PORT 13618
|
||||||
#define LOCALHOST_URL "http://localhost:"
|
#define LOCALHOST_URL "http://localhost:"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r { namespace GUI {
|
||||||
namespace GUI {
|
|
||||||
|
class session;
|
||||||
|
|
||||||
class http_headers
|
class http_headers
|
||||||
{
|
{
|
||||||
|
@ -31,14 +29,12 @@ class http_headers
|
||||||
std::map<std::string, std::string> headers;
|
std::map<std::string, std::string> headers;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
std::string get_url() { return url; }
|
||||||
std::string get_response();
|
|
||||||
|
|
||||||
int content_length()
|
int content_length()
|
||||||
{
|
{
|
||||||
auto request = headers.find("content-length");
|
auto request = headers.find("content-length");
|
||||||
if (request != headers.end())
|
if (request != headers.end()) {
|
||||||
{
|
|
||||||
std::stringstream ssLength(request->second);
|
std::stringstream ssLength(request->second);
|
||||||
int content_length;
|
int content_length;
|
||||||
ssLength >> content_length;
|
ssLength >> content_length;
|
||||||
|
@ -71,82 +67,36 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class session
|
class HttpServer
|
||||||
{
|
{
|
||||||
boost::asio::streambuf buff;
|
boost::asio::ip::port_type port;
|
||||||
http_headers headers;
|
|
||||||
|
|
||||||
static void read_body(std::shared_ptr<session> pThis)
|
|
||||||
{
|
|
||||||
int nbuffer = 1000;
|
|
||||||
std::shared_ptr<std::vector<char>> bufptr = std::make_shared<std::vector<char>>(nbuffer);
|
|
||||||
boost::asio::async_read(pThis->socket, boost::asio::buffer(*bufptr, nbuffer), [pThis](const boost::beast::error_code& e, std::size_t s)
|
|
||||||
{
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static void read_next_line(std::shared_ptr<session> pThis)
|
|
||||||
{
|
|
||||||
boost::asio::async_read_until(pThis->socket, pThis->buff, '\r', [pThis](const boost::beast::error_code& e, std::size_t s)
|
|
||||||
{
|
|
||||||
std::string line, ignore;
|
|
||||||
std::istream stream{ &pThis->buff };
|
|
||||||
std::getline(stream, line, '\r');
|
|
||||||
std::getline(stream, ignore, '\n');
|
|
||||||
pThis->headers.on_read_header(line);
|
|
||||||
|
|
||||||
if (line.length() == 0)
|
|
||||||
{
|
|
||||||
if (pThis->headers.content_length() == 0)
|
|
||||||
{
|
|
||||||
std::shared_ptr<std::string> str = std::make_shared<std::string>(pThis->headers.get_response());
|
|
||||||
boost::asio::async_write(pThis->socket, boost::asio::buffer(str->c_str(), str->length()), [pThis, str](const boost::beast::error_code& e, std::size_t s)
|
|
||||||
{
|
|
||||||
std::cout << "done" << std::endl;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pThis->read_body(pThis);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pThis->read_next_line(pThis);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static void read_first_line(std::shared_ptr<session> pThis)
|
|
||||||
{
|
|
||||||
boost::asio::async_read_until(pThis->socket, pThis->buff, '\r', [pThis](const boost::beast::error_code& e, std::size_t s)
|
|
||||||
{
|
|
||||||
std::string line, ignore;
|
|
||||||
std::istream stream{ &pThis->buff };
|
|
||||||
std::getline(stream, line, '\r');
|
|
||||||
std::getline(stream, ignore, '\n');
|
|
||||||
pThis->headers.on_read_request_line(line);
|
|
||||||
pThis->read_next_line(pThis);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
boost::asio::ip::tcp::socket socket;
|
class Response
|
||||||
|
|
||||||
session(io_service& io_service)
|
|
||||||
:socket(io_service)
|
|
||||||
{
|
{
|
||||||
}
|
public:
|
||||||
|
virtual ~Response() = default;
|
||||||
static void interact(std::shared_ptr<session> pThis)
|
virtual void write_response(std::stringstream& ssOut) = 0;
|
||||||
{
|
|
||||||
read_first_line(pThis);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class HttpServer {
|
class ResponseNotFound : public Response
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
HttpServer();
|
~ResponseNotFound() override = default;
|
||||||
|
void write_response(std::stringstream& ssOut) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ResponseRedirect : public Response
|
||||||
|
{
|
||||||
|
const std::string location_str;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ResponseRedirect(const std::string& location) : location_str(location) {}
|
||||||
|
~ResponseRedirect() override = default;
|
||||||
|
void write_response(std::stringstream& ssOut) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
HttpServer(boost::asio::ip::port_type port = LOCALHOST_PORT);
|
||||||
|
|
||||||
boost::thread m_http_server_thread;
|
boost::thread m_http_server_thread;
|
||||||
bool start_http_server = false;
|
bool start_http_server = false;
|
||||||
|
@ -154,9 +104,55 @@ public:
|
||||||
bool is_started() { return start_http_server; }
|
bool is_started() { return start_http_server; }
|
||||||
void start();
|
void start();
|
||||||
void stop();
|
void stop();
|
||||||
|
void set_request_handler(const std::function<std::shared_ptr<Response>(const std::string&)>& m_request_handler);
|
||||||
|
|
||||||
|
static std::shared_ptr<Response> bbl_auth_handle_request(const std::string& url);
|
||||||
|
|
||||||
|
private:
|
||||||
|
class IOServer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HttpServer& server;
|
||||||
|
boost::asio::io_service io_service;
|
||||||
|
boost::asio::ip::tcp::acceptor acceptor;
|
||||||
|
std::set<std::shared_ptr<session>> sessions;
|
||||||
|
|
||||||
|
IOServer(HttpServer& server) : server(server), acceptor(io_service, {boost::asio::ip::tcp::v4(), server.port}) {}
|
||||||
|
|
||||||
|
void do_accept();
|
||||||
|
|
||||||
|
void start(std::shared_ptr<session> session);
|
||||||
|
void stop(std::shared_ptr<session> session);
|
||||||
|
void stop_all();
|
||||||
|
};
|
||||||
|
friend class session;
|
||||||
|
|
||||||
|
std::unique_ptr<IOServer> server_{nullptr};
|
||||||
|
|
||||||
|
std::function<std::shared_ptr<Response>(const std::string&)> m_request_handler{&HttpServer::bbl_auth_handle_request};
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
class session : public std::enable_shared_from_this<session>
|
||||||
|
{
|
||||||
|
HttpServer::IOServer& server;
|
||||||
|
boost::asio::ip::tcp::socket socket;
|
||||||
|
|
||||||
|
boost::asio::streambuf buff;
|
||||||
|
http_headers headers;
|
||||||
|
|
||||||
|
void read_first_line();
|
||||||
|
void read_next_line();
|
||||||
|
void read_body();
|
||||||
|
|
||||||
|
public:
|
||||||
|
session(HttpServer::IOServer& server, boost::asio::ip::tcp::socket socket) : server(server), socket(std::move(socket)) {}
|
||||||
|
|
||||||
|
void start();
|
||||||
|
void stop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::string url_get_param(const std::string& url, const std::string& key);
|
||||||
|
|
||||||
|
}};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
124
src/slic3r/GUI/Jobs/OAuthJob.cpp
Normal file
124
src/slic3r/GUI/Jobs/OAuthJob.cpp
Normal file
|
@ -0,0 +1,124 @@
|
||||||
|
#include "OAuthJob.hpp"
|
||||||
|
|
||||||
|
#include "Http.hpp"
|
||||||
|
#include "ThreadSafeQueue.hpp"
|
||||||
|
#include "slic3r/GUI/I18N.hpp"
|
||||||
|
#include "nlohmann/json.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
wxDEFINE_EVENT(EVT_OAUTH_COMPLETE_MESSAGE, wxCommandEvent);
|
||||||
|
|
||||||
|
OAuthJob::OAuthJob(const OAuthData& input) : local_authorization_server(input.params.callback_port), _data(input) {}
|
||||||
|
|
||||||
|
void OAuthJob::parse_token_response(const std::string& body, bool error, OAuthResult& result)
|
||||||
|
{
|
||||||
|
const auto j = nlohmann::json::parse(body, nullptr, false, true);
|
||||||
|
if (j.is_discarded()) {
|
||||||
|
BOOST_LOG_TRIVIAL(warning) << "Invalid or no JSON data on token response: " << body;
|
||||||
|
result.error_message = _u8L("Unknown error");
|
||||||
|
} else if (error) {
|
||||||
|
if (j.contains("error_description")) {
|
||||||
|
j.at("error_description").get_to(result.error_message);
|
||||||
|
} else {
|
||||||
|
result.error_message = _u8L("Unknown error");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
j.at("access_token").get_to(result.access_token);
|
||||||
|
j.at("refresh_token").get_to(result.refresh_token);
|
||||||
|
result.success = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void OAuthJob::process(Ctl& ctl)
|
||||||
|
{
|
||||||
|
// Prepare auth process
|
||||||
|
ThreadSafeQueueSPSC<OAuthResult> queue;
|
||||||
|
|
||||||
|
// Setup auth server to receive OAuth code from callback url
|
||||||
|
local_authorization_server.set_request_handler([this, &queue](const std::string& url) -> std::shared_ptr<HttpServer::Response> {
|
||||||
|
if (boost::contains(url, "/callback")) {
|
||||||
|
const auto code = url_get_param(url, "code");
|
||||||
|
const auto state = url_get_param(url, "state");
|
||||||
|
|
||||||
|
const auto handle_auth_fail = [this, &queue](const std::string& message) -> std::shared_ptr<HttpServer::ResponseRedirect> {
|
||||||
|
queue.push(OAuthResult{false, message});
|
||||||
|
return std::make_shared<HttpServer::ResponseRedirect>(this->_data.params.auth_fail_redirect_url);
|
||||||
|
};
|
||||||
|
|
||||||
|
if (state != _data.params.state) {
|
||||||
|
BOOST_LOG_TRIVIAL(warning) << "The provided state was not correct. Got " << state << " and expected " << _data.params.state;
|
||||||
|
return handle_auth_fail(_u8L("The provided state is not correct."));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (code.empty()) {
|
||||||
|
const auto error_code = url_get_param(url, "error_code");
|
||||||
|
if (error_code == "user_denied") {
|
||||||
|
BOOST_LOG_TRIVIAL(debug) << "User did not give the required permission when authorizing this application";
|
||||||
|
return handle_auth_fail(_u8L("Please give the required permissions when authorizing this application."));
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOST_LOG_TRIVIAL(warning) << "Unexpected error when logging in. Error_code: " << error_code << ", State: " << state;
|
||||||
|
return handle_auth_fail(_u8L("Something unexpected happened when trying to log in, please try again."));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
OAuthResult r;
|
||||||
|
// Request the access token from the authorization server.
|
||||||
|
auto http = Http::post(_data.params.token_url);
|
||||||
|
http.timeout_connect(5)
|
||||||
|
.timeout_max(5)
|
||||||
|
.form_add("client_id", _data.params.client_id)
|
||||||
|
.form_add("redirect_uri", _data.params.callback_url)
|
||||||
|
.form_add("grant_type", "authorization_code")
|
||||||
|
.form_add("code", code)
|
||||||
|
.form_add("code_verifier", _data.params.verification_code)
|
||||||
|
.form_add("scope", _data.params.scope)
|
||||||
|
.on_complete([&](std::string body, unsigned status) { parse_token_response(body, false, r); })
|
||||||
|
.on_error([&](std::string body, std::string error, unsigned status) { parse_token_response(body, true, r); })
|
||||||
|
.perform_sync();
|
||||||
|
|
||||||
|
queue.push(r);
|
||||||
|
return std::make_shared<HttpServer::ResponseRedirect>(r.success ? _data.params.auth_success_redirect_url :
|
||||||
|
_data.params.auth_fail_redirect_url);
|
||||||
|
} else {
|
||||||
|
queue.push(OAuthResult{false});
|
||||||
|
return std::make_shared<HttpServer::ResponseNotFound>();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Run the local server
|
||||||
|
local_authorization_server.start();
|
||||||
|
|
||||||
|
// Wait until we received the result
|
||||||
|
bool received = false;
|
||||||
|
while (!ctl.was_canceled() && !received ) {
|
||||||
|
queue.consume_one(BlockingWait{1000}, [this, &received](const OAuthResult& result) {
|
||||||
|
*_data.result = result;
|
||||||
|
received = true;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle timeout
|
||||||
|
if (!received && !ctl.was_canceled()) {
|
||||||
|
BOOST_LOG_TRIVIAL(debug) << "Timeout when authenticating with the account server.";
|
||||||
|
_data.result->error_message = _u8L("Timeout when authenticating with the account server.");
|
||||||
|
} else if (ctl.was_canceled()) {
|
||||||
|
_data.result->error_message = _u8L("User cancelled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void OAuthJob::finalize(bool canceled, std::exception_ptr& e)
|
||||||
|
{
|
||||||
|
// Make sure it's stopped
|
||||||
|
local_authorization_server.stop();
|
||||||
|
|
||||||
|
wxCommandEvent event(EVT_OAUTH_COMPLETE_MESSAGE);
|
||||||
|
event.SetEventObject(m_event_handle);
|
||||||
|
wxPostEvent(m_event_handle, event);
|
||||||
|
}
|
||||||
|
|
||||||
|
}} // namespace Slic3r::GUI
|
62
src/slic3r/GUI/Jobs/OAuthJob.hpp
Normal file
62
src/slic3r/GUI/Jobs/OAuthJob.hpp
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
#ifndef __OAuthJob_HPP__
|
||||||
|
#define __OAuthJob_HPP__
|
||||||
|
|
||||||
|
#include "Job.hpp"
|
||||||
|
#include "slic3r/GUI/HttpServer.hpp"
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
class Plater;
|
||||||
|
|
||||||
|
struct OAuthParams
|
||||||
|
{
|
||||||
|
std::string login_url;
|
||||||
|
std::string client_id;
|
||||||
|
boost::asio::ip::port_type callback_port;
|
||||||
|
std::string callback_url;
|
||||||
|
std::string scope;
|
||||||
|
std::string response_type;
|
||||||
|
std::string auth_success_redirect_url;
|
||||||
|
std::string auth_fail_redirect_url;
|
||||||
|
std::string token_url;
|
||||||
|
std::string verification_code;
|
||||||
|
std::string state;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OAuthResult
|
||||||
|
{
|
||||||
|
bool success{false};
|
||||||
|
std::string error_message{""};
|
||||||
|
std::string access_token{""};
|
||||||
|
std::string refresh_token{""};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct OAuthData
|
||||||
|
{
|
||||||
|
OAuthParams params;
|
||||||
|
std::shared_ptr<OAuthResult> result;
|
||||||
|
};
|
||||||
|
|
||||||
|
class OAuthJob : public Job
|
||||||
|
{
|
||||||
|
HttpServer local_authorization_server;
|
||||||
|
OAuthData _data;
|
||||||
|
wxWindow* m_event_handle{nullptr};
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit OAuthJob(const OAuthData& input);
|
||||||
|
|
||||||
|
void process(Ctl& ctl) override;
|
||||||
|
void finalize(bool canceled, std::exception_ptr& e) override;
|
||||||
|
|
||||||
|
void set_event_handle(wxWindow* hanle) { m_event_handle = hanle; }
|
||||||
|
|
||||||
|
static void parse_token_response(const std::string& body, bool error, OAuthResult& result);
|
||||||
|
};
|
||||||
|
|
||||||
|
wxDECLARE_EVENT(EVT_OAUTH_COMPLETE_MESSAGE, wxCommandEvent);
|
||||||
|
|
||||||
|
}} // namespace Slic3r::GUI
|
||||||
|
|
||||||
|
#endif // OAUTHJOB_HPP
|
|
@ -562,7 +562,7 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, BORDERLESS_FRAME_
|
||||||
m_print_enable = get_enable_print_status();
|
m_print_enable = get_enable_print_status();
|
||||||
m_print_btn->Enable(m_print_enable);
|
m_print_btn->Enable(m_print_enable);
|
||||||
if (m_print_enable) {
|
if (m_print_enable) {
|
||||||
if (wxGetApp().preset_bundle->is_bbl_vendor())
|
if (wxGetApp().preset_bundle->use_bbl_network())
|
||||||
wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_PRINT_PLATE));
|
wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_PRINT_PLATE));
|
||||||
else
|
else
|
||||||
wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SEND_GCODE));
|
wxPostEvent(m_plater, SimpleEvent(EVT_GLTOOLBAR_SEND_GCODE));
|
||||||
|
@ -989,30 +989,6 @@ void MainFrame::init_tabpanel() {
|
||||||
m_tabpanel->Hide();
|
m_tabpanel->Hide();
|
||||||
m_settings_dialog.set_tabpanel(m_tabpanel);
|
m_settings_dialog.set_tabpanel(m_tabpanel);
|
||||||
|
|
||||||
m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGING, [this](wxBookCtrlEvent &e) {
|
|
||||||
int old_sel = e.GetOldSelection();
|
|
||||||
int new_sel = e.GetSelection();
|
|
||||||
if (wxGetApp().preset_bundle && wxGetApp().preset_bundle->is_bbl_vendor() && new_sel == tpMonitor) {
|
|
||||||
if (!wxGetApp().getAgent()) {
|
|
||||||
e.Veto();
|
|
||||||
BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins") % old_sel % new_sel;
|
|
||||||
if (m_plater) {
|
|
||||||
wxCommandEvent *evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
|
|
||||||
wxQueueEvent(m_plater, evt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (new_sel == tpMonitor && wxGetApp().preset_bundle != nullptr) {
|
|
||||||
auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
|
|
||||||
wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
|
|
||||||
if (url.empty()) {
|
|
||||||
wxString url = wxString::Format("file://%s/web/orca/missing_connection.html", from_u8(resources_dir()));
|
|
||||||
m_printer_view->load_url(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
m_tabpanel->Bind(wxEVT_BOOKCTRL_PAGE_CHANGED, [this](wxBookCtrlEvent& e) {
|
m_tabpanel->Bind(wxEVT_BOOKCTRL_PAGE_CHANGED, [this](wxBookCtrlEvent& e) {
|
||||||
#else
|
#else
|
||||||
|
@ -1624,7 +1600,7 @@ wxBoxSizer* MainFrame::create_side_tools()
|
||||||
SidePopup* p = new SidePopup(this);
|
SidePopup* p = new SidePopup(this);
|
||||||
|
|
||||||
if (wxGetApp().preset_bundle
|
if (wxGetApp().preset_bundle
|
||||||
&& !wxGetApp().preset_bundle->is_bbl_vendor()) {
|
&& !wxGetApp().preset_bundle->use_bbl_network()) {
|
||||||
// ThirdParty Buttons
|
// ThirdParty Buttons
|
||||||
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
SideButton* export_gcode_btn = new SideButton(p, _L("Export G-code file"), "");
|
||||||
export_gcode_btn->SetCornerRadius(0);
|
export_gcode_btn->SetCornerRadius(0);
|
||||||
|
@ -3608,7 +3584,7 @@ void MainFrame::load_printer_url(wxString url, wxString apikey)
|
||||||
void MainFrame::load_printer_url()
|
void MainFrame::load_printer_url()
|
||||||
{
|
{
|
||||||
PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
|
PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
|
||||||
if (preset_bundle.is_bbl_vendor())
|
if (preset_bundle.use_bbl_network())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto cfg = preset_bundle.printers.get_edited_preset().config;
|
auto cfg = preset_bundle.printers.get_edited_preset().config;
|
||||||
|
|
|
@ -93,7 +93,7 @@ wxBoxSizer* NetworkTestDialog::create_info_sizer(wxWindow* parent)
|
||||||
sizer->Add(text_basic_info, 0, wxALL, 5);
|
sizer->Add(text_basic_info, 0, wxALL, 5);
|
||||||
|
|
||||||
wxBoxSizer* version_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer* version_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
text_version_title = new wxStaticText(this, wxID_ANY, _L("Studio Version:"), wxDefaultPosition, wxDefaultSize, 0);
|
text_version_title = new wxStaticText(this, wxID_ANY, _L("OrcaSlicer Version:"), wxDefaultPosition, wxDefaultSize, 0);
|
||||||
text_version_title->Wrap(-1);
|
text_version_title->Wrap(-1);
|
||||||
version_sizer->Add(text_version_title, 0, wxALL, 5);
|
version_sizer->Add(text_version_title, 0, wxALL, 5);
|
||||||
|
|
||||||
|
@ -139,11 +139,11 @@ wxBoxSizer* NetworkTestDialog::create_content_sizer(wxWindow* parent)
|
||||||
grid_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
|
grid_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
|
||||||
|
|
||||||
StateColor btn_bg(std::pair<wxColour, int>(wxColour(0, 137, 123), StateColor::Pressed),std::pair<wxColour, int>(wxColour(38, 166, 154), StateColor::Hovered), std::pair<wxColour, int>(wxColour(255,255,255), StateColor::Enabled));
|
StateColor btn_bg(std::pair<wxColour, int>(wxColour(0, 137, 123), StateColor::Pressed),std::pair<wxColour, int>(wxColour(38, 166, 154), StateColor::Hovered), std::pair<wxColour, int>(wxColour(255,255,255), StateColor::Enabled));
|
||||||
btn_link = new Button(this, _L("Test BambuLab"));
|
btn_link = new Button(this, _L("Test OrcaSlicer(GitHub)"));
|
||||||
btn_link->SetBackgroundColor(btn_bg);
|
btn_link->SetBackgroundColor(btn_bg);
|
||||||
grid_sizer->Add(btn_link, 0, wxEXPAND | wxALL, 5);
|
grid_sizer->Add(btn_link, 0, wxEXPAND | wxALL, 5);
|
||||||
|
|
||||||
text_link_title = new wxStaticText(this, wxID_ANY, _L("Test BambuLab:"), wxDefaultPosition, wxDefaultSize, 0);
|
text_link_title = new wxStaticText(this, wxID_ANY, _L("Test OrcaSlicer(GitHub):"), wxDefaultPosition, wxDefaultSize, 0);
|
||||||
text_link_title->Wrap(-1);
|
text_link_title->Wrap(-1);
|
||||||
grid_sizer->Add(text_link_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
grid_sizer->Add(text_link_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
||||||
|
|
||||||
|
@ -163,114 +163,16 @@ wxBoxSizer* NetworkTestDialog::create_content_sizer(wxWindow* parent)
|
||||||
text_bing_val = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
text_bing_val = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
||||||
text_bing_val->Wrap(-1);
|
text_bing_val->Wrap(-1);
|
||||||
grid_sizer->Add(text_bing_val, 0, wxALL, 5);
|
grid_sizer->Add(text_bing_val, 0, wxALL, 5);
|
||||||
|
|
||||||
btn_iot = new Button(this, _L("Test HTTP"));
|
|
||||||
btn_iot->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_iot, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_iot_title = new wxStaticText(this, wxID_ANY, _L("Test HTTP Service:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_iot_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_iot_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_iot_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_iot_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_iot_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
btn_oss = new Button(this, _L("Test storage"));
|
|
||||||
btn_oss->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_oss, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upload:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
btn_oss_upgrade = new Button(this, _L("Test storage upgrade"));
|
|
||||||
btn_oss_upgrade->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_oss_upgrade, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_upgrade_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upgrade:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_upgrade_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_upgrade_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_upgrade_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_upgrade_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_upgrade_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
btn_oss_download = new Button(this, _L("Test storage download"));
|
|
||||||
btn_oss_download->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_oss_download, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_download_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Download:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_download_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_download_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_download_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_download_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_download_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
btn_network_plugin=new Button(this, _L("Test plugin download"));
|
|
||||||
btn_network_plugin->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_network_plugin, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_network_plugin_title=new wxStaticText(this, wxID_ANY, _L("Test Plugin Download:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_network_plugin_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_network_plugin_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_network_plugin_value=new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_network_plugin_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_network_plugin_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
|
|
||||||
btn_oss_upload = new Button(this, _L("Test Storage Upload"));
|
|
||||||
btn_oss_upload->SetBackgroundColor(btn_bg);
|
|
||||||
grid_sizer->Add(btn_oss_upload, 0, wxEXPAND | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_upload_title = new wxStaticText(this, wxID_ANY, _L("Test Storage Upload:"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_upload_title->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_upload_title, 0, wxALIGN_RIGHT | wxALL, 5);
|
|
||||||
|
|
||||||
text_oss_upload_value = new wxStaticText(this, wxID_ANY, _L("N/A"), wxDefaultPosition, wxDefaultSize, 0);
|
|
||||||
text_oss_upload_value->Wrap(-1);
|
|
||||||
grid_sizer->Add(text_oss_upload_value, 0, wxALL, 5);
|
|
||||||
|
|
||||||
btn_oss_upload->Hide();
|
|
||||||
text_oss_upload_title->Hide();
|
|
||||||
text_oss_upload_value->Hide();
|
|
||||||
|
|
||||||
sizer->Add(grid_sizer, 1, wxEXPAND, 5);
|
sizer->Add(grid_sizer, 1, wxEXPAND, 5);
|
||||||
|
|
||||||
btn_link->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
btn_link->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
||||||
start_test_bambulab_thread();
|
start_test_github_thread();
|
||||||
});
|
});
|
||||||
|
|
||||||
btn_bing->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
btn_bing->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
||||||
start_test_bing_thread();
|
start_test_bing_thread();
|
||||||
});
|
});
|
||||||
|
|
||||||
btn_iot->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
|
||||||
start_test_iot_thread();
|
|
||||||
});
|
|
||||||
|
|
||||||
btn_oss->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
|
||||||
start_test_oss_thread();
|
|
||||||
});
|
|
||||||
|
|
||||||
btn_oss_upgrade->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
|
||||||
start_test_oss_upgrade_thread();
|
|
||||||
});
|
|
||||||
|
|
||||||
btn_oss_download->Bind(wxEVT_BUTTON, [this](wxCommandEvent& evt) {
|
|
||||||
start_test_oss_download_thread();
|
|
||||||
});
|
|
||||||
|
|
||||||
btn_network_plugin->Bind(wxEVT_BUTTON, [this](wxCommandEvent &evt) {
|
|
||||||
start_test_plugin_download_thread();
|
|
||||||
});
|
|
||||||
|
|
||||||
return sizer;
|
return sizer;
|
||||||
}
|
}
|
||||||
wxBoxSizer* NetworkTestDialog::create_result_sizer(wxWindow* parent)
|
wxBoxSizer* NetworkTestDialog::create_result_sizer(wxWindow* parent)
|
||||||
|
@ -293,22 +195,10 @@ NetworkTestDialog::~NetworkTestDialog()
|
||||||
void NetworkTestDialog::init_bind()
|
void NetworkTestDialog::init_bind()
|
||||||
{
|
{
|
||||||
Bind(EVT_UPDATE_RESULT, [this](wxCommandEvent& evt) {
|
Bind(EVT_UPDATE_RESULT, [this](wxCommandEvent& evt) {
|
||||||
if (evt.GetInt() == TEST_BAMBULAB_JOB) {
|
if (evt.GetInt() == TEST_ORCA_JOB) {
|
||||||
text_link_val->SetLabelText(evt.GetString());
|
text_link_val->SetLabelText(evt.GetString());
|
||||||
} else if (evt.GetInt() == TEST_BING_JOB) {
|
} else if (evt.GetInt() == TEST_BING_JOB) {
|
||||||
text_bing_val->SetLabelText(evt.GetString());
|
text_bing_val->SetLabelText(evt.GetString());
|
||||||
} else if (evt.GetInt() == TEST_IOT_JOB) {
|
|
||||||
text_iot_value->SetLabelText(evt.GetString());
|
|
||||||
} else if (evt.GetInt() == TEST_OSS_JOB) {
|
|
||||||
text_oss_value->SetLabelText(evt.GetString());
|
|
||||||
} else if (evt.GetInt() == TEST_OSS_UPGRADE_JOB) {
|
|
||||||
text_oss_upgrade_value->SetLabelText(evt.GetString());
|
|
||||||
} else if (evt.GetInt() == TEST_OSS_DOWNLOAD_JOB) {
|
|
||||||
text_oss_download_value->SetLabelText(evt.GetString());
|
|
||||||
} else if (evt.GetInt() == TEST_OSS_UPLOAD_JOB) {
|
|
||||||
text_oss_upload_value->SetLabelText(evt.GetString());
|
|
||||||
} else if (evt.GetInt() == TEST_PLUGIN_JOB){
|
|
||||||
text_network_plugin_value->SetLabelText(evt.GetString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::time_t t = std::time(0);
|
std::time_t t = std::time(0);
|
||||||
|
@ -350,44 +240,33 @@ wxString NetworkTestDialog::get_dns_info()
|
||||||
|
|
||||||
void NetworkTestDialog::start_all_job()
|
void NetworkTestDialog::start_all_job()
|
||||||
{
|
{
|
||||||
start_test_bambulab_thread();
|
start_test_github_thread();
|
||||||
start_test_bing_thread();
|
start_test_bing_thread();
|
||||||
|
|
||||||
start_test_iot_thread();
|
|
||||||
start_test_oss_thread();
|
|
||||||
start_test_oss_upgrade_thread();
|
|
||||||
start_test_oss_download_thread();
|
|
||||||
start_test_plugin_download_thread();
|
|
||||||
start_test_ping_thread();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkTestDialog::start_all_job_sequence()
|
void NetworkTestDialog::start_all_job_sequence()
|
||||||
{
|
{
|
||||||
m_sequence_job = new boost::thread([this] {
|
m_sequence_job = new boost::thread([this] {
|
||||||
update_status(-1, "start_test_sequence");
|
update_status(-1, "start_test_sequence");
|
||||||
start_test_bing();
|
start_test_url(TEST_BING_JOB, "Bing", "http://www.bing.com");
|
||||||
if (m_closing) return;
|
if (m_closing) return;
|
||||||
start_test_bambulab();
|
start_test_url(TEST_ORCA_JOB, "OrcaSlicer(GitHub)", "https://github.com/SoftFever/OrcaSlicer");
|
||||||
if (m_closing) return;
|
if (m_closing) return;
|
||||||
start_test_oss();
|
|
||||||
if (m_closing) return;
|
|
||||||
start_test_oss_upgrade();
|
|
||||||
if (m_closing) return;
|
|
||||||
start_test_oss_download();
|
|
||||||
if (m_closing) return;
|
|
||||||
start_test_plugin_download();
|
|
||||||
update_status(-1, "end_test_sequence");
|
update_status(-1, "end_test_sequence");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_bing()
|
void NetworkTestDialog::start_test_url(TestJob job, wxString name, wxString url)
|
||||||
{
|
{
|
||||||
m_in_testing[TEST_BING_JOB] = true;
|
m_in_testing[job] = true;
|
||||||
update_status(TEST_BING_JOB, "test bing start...");
|
wxString info = wxString::Format("test %s start...", name);
|
||||||
|
|
||||||
std::string url = "http://www.bing.com/";
|
update_status(job, info);
|
||||||
Slic3r::Http http = Slic3r::Http::get(url);
|
|
||||||
update_status(-1, "[test_bing]: url=" + url);
|
Slic3r::Http http = Slic3r::Http::get(url.ToStdString());
|
||||||
|
info = wxString::Format("[test %s]: url=%s", name,url);
|
||||||
|
|
||||||
|
update_status(-1, info);
|
||||||
|
|
||||||
int result = -1;
|
int result = -1;
|
||||||
http.timeout_max(10)
|
http.timeout_max(10)
|
||||||
|
@ -401,477 +280,19 @@ void NetworkTestDialog::start_test_bing()
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.on_ip_resolve([this](std::string ip) {
|
.on_ip_resolve([this,name,job](std::string ip) {
|
||||||
wxString ip_report = wxString::Format("test bing ip resolved = %s", ip);
|
wxString ip_report = wxString::Format("test %s ip resolved = %s", name, ip);
|
||||||
update_status(TEST_BING_JOB, ip_report);
|
update_status(job, ip_report);
|
||||||
})
|
})
|
||||||
.on_error([this](std::string body, std::string error, unsigned int status) {
|
.on_error([this,name,job](std::string body, std::string error, unsigned int status) {
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
||||||
this->update_status(TEST_BING_JOB, "test bing failed");
|
this->update_status(job, wxString::Format("test %s failed", name));
|
||||||
this->update_status(-1, info);
|
this->update_status(-1, info);
|
||||||
}).perform_sync();
|
}).perform_sync();
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
update_status(TEST_BING_JOB, "test bing ok");
|
update_status(job, wxString::Format("test %s ok", name));
|
||||||
}
|
}
|
||||||
m_in_testing[TEST_BING_JOB] = false;
|
m_in_testing[job] = false;
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_bambulab()
|
|
||||||
{
|
|
||||||
m_in_testing[TEST_BAMBULAB_JOB] = true;
|
|
||||||
update_status(TEST_BAMBULAB_JOB, "test bambulab start...");
|
|
||||||
|
|
||||||
std::string platform = "windows";
|
|
||||||
|
|
||||||
#ifdef __WINDOWS__
|
|
||||||
platform = "windows";
|
|
||||||
#endif
|
|
||||||
#ifdef __APPLE__
|
|
||||||
platform = "macos";
|
|
||||||
#endif
|
|
||||||
#ifdef __LINUX__
|
|
||||||
platform = "linux";
|
|
||||||
#endif
|
|
||||||
std::string query_params = (boost::format("?name=slicer&version=%1%&guide_version=%2%")
|
|
||||||
% VersionInfo::convert_full_version(SLIC3R_VERSION)
|
|
||||||
% VersionInfo::convert_full_version("0.0.0.1")
|
|
||||||
).str();
|
|
||||||
|
|
||||||
AppConfig* app_config = wxGetApp().app_config;
|
|
||||||
std::string url = wxGetApp().get_http_url(app_config->get_country_code()) + query_params;
|
|
||||||
Slic3r::Http http = Slic3r::Http::get(url);
|
|
||||||
update_status(-1, "[test_bambulab]: url=" + url);
|
|
||||||
int result = -1;
|
|
||||||
http.header("accept", "application/json")
|
|
||||||
.timeout_max(10)
|
|
||||||
.on_complete([this, &result](std::string body, unsigned status) {
|
|
||||||
try {
|
|
||||||
if (status == 200) {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on_ip_resolve([this](std::string ip) {
|
|
||||||
wxString ip_report = wxString::Format("test bambulab ip resolved = %s", ip);
|
|
||||||
update_status(TEST_BAMBULAB_JOB, ip_report);
|
|
||||||
})
|
|
||||||
.on_error([this](std::string body, std::string error, unsigned int status) {
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_BAMBULAB_JOB, "test bambulab failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
}).perform_sync();
|
|
||||||
if (result == 0) {
|
|
||||||
update_status(TEST_BAMBULAB_JOB, "test bambulab ok");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_BAMBULAB_JOB] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_iot()
|
|
||||||
{
|
|
||||||
m_in_testing[TEST_IOT_JOB] = true;
|
|
||||||
update_status(TEST_IOT_JOB, "test http start...");
|
|
||||||
NetworkAgent* agent = wxGetApp().getAgent();
|
|
||||||
if (agent) {
|
|
||||||
unsigned int http_code;
|
|
||||||
std::string http_body;
|
|
||||||
if (!agent->is_user_login()) {
|
|
||||||
update_status(TEST_IOT_JOB, "please login first");
|
|
||||||
} else {
|
|
||||||
int result = agent->get_user_print_info(&http_code, &http_body);
|
|
||||||
if (result == 0) {
|
|
||||||
update_status(TEST_IOT_JOB, "test http ok");
|
|
||||||
} else {
|
|
||||||
update_status(TEST_IOT_JOB, "test http failed");
|
|
||||||
wxString info = wxString::Format("test http failed, status = %u, error = %s", http_code, http_body);
|
|
||||||
update_status(-1, info);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
update_status(TEST_IOT_JOB, "please install network module first");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_IOT_JOB] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss()
|
|
||||||
{
|
|
||||||
m_in_testing[TEST_OSS_JOB] = true;
|
|
||||||
update_status(TEST_OSS_JOB, "test storage start...");
|
|
||||||
|
|
||||||
std::string url = "http://upload-file.bambulab.com";
|
|
||||||
|
|
||||||
AppConfig* config = wxGetApp().app_config;
|
|
||||||
if (config) {
|
|
||||||
if (config->get_country_code() == "CN")
|
|
||||||
url = "http://upload-file.bambulab.cn";
|
|
||||||
}
|
|
||||||
|
|
||||||
Slic3r::Http http = Slic3r::Http::get(url);
|
|
||||||
update_status(-1, "[test_oss]: url=" + url);
|
|
||||||
|
|
||||||
int result = -1;
|
|
||||||
http.timeout_max(15)
|
|
||||||
.on_complete([this, &result](std::string body, unsigned status) {
|
|
||||||
try {
|
|
||||||
if (status == 200) {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on_ip_resolve([this](std::string ip) {
|
|
||||||
wxString ip_report = wxString::Format("test oss ip resolved = %s", ip);
|
|
||||||
update_status(TEST_OSS_JOB, ip_report);
|
|
||||||
})
|
|
||||||
.on_error([this, &result](std::string body, std::string error, unsigned int status) {
|
|
||||||
if (status == 403) {
|
|
||||||
result = 0;
|
|
||||||
} else {
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_OSS_JOB, "test storage failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
}
|
|
||||||
}).perform_sync();
|
|
||||||
if (result == 0) {
|
|
||||||
update_status(TEST_OSS_JOB, "test storage ok");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_OSS_JOB] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_upgrade()
|
|
||||||
{
|
|
||||||
m_in_testing[TEST_OSS_UPGRADE_JOB] = true;
|
|
||||||
update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade start...");
|
|
||||||
|
|
||||||
std::string url = "http://upgrade-file.bambulab.com";
|
|
||||||
|
|
||||||
AppConfig* config = wxGetApp().app_config;
|
|
||||||
if (config) {
|
|
||||||
if (config->get_country_code() == "CN")
|
|
||||||
url = "http://upgrade-file.bambulab.cn";
|
|
||||||
}
|
|
||||||
|
|
||||||
Slic3r::Http http = Slic3r::Http::get(url);
|
|
||||||
update_status(-1, "[test_oss_upgrade]: url=" + url);
|
|
||||||
|
|
||||||
int result = -1;
|
|
||||||
http.timeout_max(15)
|
|
||||||
.on_complete([this, &result](std::string body, unsigned status) {
|
|
||||||
try {
|
|
||||||
if (status == 200) {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on_ip_resolve([this](std::string ip) {
|
|
||||||
wxString ip_report = wxString::Format("test storage upgrade ip resolved = %s", ip);
|
|
||||||
update_status(TEST_OSS_UPGRADE_JOB, ip_report);
|
|
||||||
})
|
|
||||||
.on_error([this, &result](std::string body, std::string error, unsigned int status) {
|
|
||||||
if (status == 403) {
|
|
||||||
result = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
}
|
|
||||||
}).perform_sync();
|
|
||||||
|
|
||||||
if (result == 0) {
|
|
||||||
update_status(TEST_OSS_UPGRADE_JOB, "test storage upgrade ok");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_OSS_UPGRADE_JOB] = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_download()
|
|
||||||
{
|
|
||||||
int result = 0;
|
|
||||||
// get country_code
|
|
||||||
AppConfig* app_config = wxGetApp().app_config;
|
|
||||||
if (!app_config) {
|
|
||||||
update_status(TEST_OSS_DOWNLOAD_JOB, "app config is nullptr");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_in_testing[TEST_OSS_DOWNLOAD_JOB] = true;
|
|
||||||
update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download start...");
|
|
||||||
m_download_cancel = false;
|
|
||||||
// get temp path
|
|
||||||
fs::path target_file_path = (fs::temp_directory_path() / "test_storage_download.zip");
|
|
||||||
fs::path tmp_path = target_file_path;
|
|
||||||
tmp_path += (boost::format(".%1%%2%") % get_current_pid() % ".tmp").str();
|
|
||||||
|
|
||||||
// get_url
|
|
||||||
std::string url = wxGetApp().get_plugin_url("plugins", app_config->get_country_code());
|
|
||||||
std::string download_url;
|
|
||||||
Slic3r::Http http_url = Slic3r::Http::get(url);
|
|
||||||
update_status(-1, "[test_oss_download]: url=" + url);
|
|
||||||
|
|
||||||
http_url.on_complete(
|
|
||||||
[&download_url](std::string body, unsigned status) {
|
|
||||||
try {
|
|
||||||
json j = json::parse(body);
|
|
||||||
std::string message = j["message"].get<std::string>();
|
|
||||||
|
|
||||||
if (message == "success") {
|
|
||||||
json resource = j.at("resources");
|
|
||||||
if (resource.is_array()) {
|
|
||||||
for (auto iter = resource.begin(); iter != resource.end(); iter++) {
|
|
||||||
Semver version;
|
|
||||||
std::string url;
|
|
||||||
std::string type;
|
|
||||||
std::string vendor;
|
|
||||||
std::string description;
|
|
||||||
for (auto sub_iter = iter.value().begin(); sub_iter != iter.value().end(); sub_iter++) {
|
|
||||||
if (boost::iequals(sub_iter.key(), "type")) {
|
|
||||||
type = sub_iter.value();
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get version of settings's type, " << sub_iter.value();
|
|
||||||
}
|
|
||||||
else if (boost::iequals(sub_iter.key(), "version")) {
|
|
||||||
version = *(Semver::parse(sub_iter.value()));
|
|
||||||
}
|
|
||||||
else if (boost::iequals(sub_iter.key(), "description")) {
|
|
||||||
description = sub_iter.value();
|
|
||||||
}
|
|
||||||
else if (boost::iequals(sub_iter.key(), "url")) {
|
|
||||||
url = sub_iter.value();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get type " << type << ", version " << version.to_string() << ", url " << url;
|
|
||||||
download_url = url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download]: get version of plugin failed, body=" << body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (...) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_storage_download]: catch unknown exception";
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}).on_error(
|
|
||||||
[&result, this](std::string body, std::string error, unsigned int status) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_storage_download] on_error: " << error << ", body = " << body;
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
result = -1;
|
|
||||||
}).perform_sync();
|
|
||||||
|
|
||||||
if (result < 0) {
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
|
|
||||||
m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (download_url.empty()) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_oss_download]: no availaible plugin found for this app version: " << SLIC3R_VERSION;
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
|
|
||||||
m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (m_download_cancel) {
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download canceled");
|
|
||||||
m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cancel = false;
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download] get_url = " << download_url;
|
|
||||||
|
|
||||||
// download
|
|
||||||
Slic3r::Http http = Slic3r::Http::get(download_url);
|
|
||||||
int reported_percent = 0;
|
|
||||||
http.on_progress(
|
|
||||||
[this, &result, &reported_percent](Slic3r::Http::Progress progress, bool& cancel) {
|
|
||||||
int percent = 0;
|
|
||||||
if (progress.dltotal != 0) {
|
|
||||||
percent = progress.dlnow * 100 / progress.dltotal;
|
|
||||||
}
|
|
||||||
if (percent - reported_percent >= 10) {
|
|
||||||
reported_percent = percent;
|
|
||||||
std::string download_progress_info = (boost::format("downloading %1%%%") % percent).str();
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, download_progress_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download] progress: " << reported_percent;
|
|
||||||
cancel = m_download_cancel;
|
|
||||||
|
|
||||||
if (cancel)
|
|
||||||
result = -1;
|
|
||||||
})
|
|
||||||
.on_complete([this, tmp_path, target_file_path](std::string body, unsigned status) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_storage_download] completed";
|
|
||||||
bool cancel = false;
|
|
||||||
fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc);
|
|
||||||
file.write(body.c_str(), body.size());
|
|
||||||
file.close();
|
|
||||||
fs::rename(tmp_path, target_file_path);
|
|
||||||
//this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download ok");
|
|
||||||
})
|
|
||||||
.on_error([this, &result](std::string body, std::string error, unsigned int status) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_oss_download] downloading... on_error: " << error << ", body = " << body;
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
result = -1;
|
|
||||||
});
|
|
||||||
http.perform_sync();
|
|
||||||
if (result < 0) {
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download failed");
|
|
||||||
} else {
|
|
||||||
this->update_status(TEST_OSS_DOWNLOAD_JOB, "test storage download ok");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_OSS_DOWNLOAD_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_upload()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog:: start_test_plugin_download(){
|
|
||||||
int result = 0;
|
|
||||||
// get country_code
|
|
||||||
AppConfig *app_config = wxGetApp().app_config;
|
|
||||||
if (!app_config) {
|
|
||||||
update_status(TEST_PLUGIN_JOB, "app config is nullptr");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m_in_testing[TEST_PLUGIN_JOB] = true;
|
|
||||||
update_status(TEST_PLUGIN_JOB, "test plugin download start...");
|
|
||||||
m_download_cancel = false;
|
|
||||||
// get temp path
|
|
||||||
fs::path target_file_path = (fs::temp_directory_path() / "test_plugin_download.zip");
|
|
||||||
fs::path tmp_path = target_file_path;
|
|
||||||
tmp_path += (boost::format(".%1%%2%") % get_current_pid() % ".tmp").str();
|
|
||||||
|
|
||||||
// get_url
|
|
||||||
std::string url = wxGetApp().get_plugin_url("plugins", app_config->get_country_code());
|
|
||||||
std::string download_url;
|
|
||||||
Slic3r::Http http_url = Slic3r::Http::get(url);
|
|
||||||
http_url
|
|
||||||
.on_complete([&download_url,this](std::string body, unsigned status) {
|
|
||||||
try {
|
|
||||||
json j = json::parse(body);
|
|
||||||
std::string message = j["message"].get<std::string>();
|
|
||||||
|
|
||||||
if (message == "success") {
|
|
||||||
json resource = j.at("resources");
|
|
||||||
if (resource.is_array()) {
|
|
||||||
for (auto iter = resource.begin(); iter != resource.end(); iter++) {
|
|
||||||
Semver version;
|
|
||||||
std::string url;
|
|
||||||
std::string type;
|
|
||||||
std::string vendor;
|
|
||||||
std::string description;
|
|
||||||
for (auto sub_iter = iter.value().begin(); sub_iter != iter.value().end(); sub_iter++) {
|
|
||||||
if (boost::iequals(sub_iter.key(), "type")) {
|
|
||||||
type = sub_iter.value();
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get version of settings's type, " << sub_iter.value();
|
|
||||||
} else if (boost::iequals(sub_iter.key(), "version")) {
|
|
||||||
version = *(Semver::parse(sub_iter.value()));
|
|
||||||
} else if (boost::iequals(sub_iter.key(), "description")) {
|
|
||||||
description = sub_iter.value();
|
|
||||||
} else if (boost::iequals(sub_iter.key(), "url")) {
|
|
||||||
url = sub_iter.value();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get type " << type << ", version " << version.to_string() << ", url " << url;
|
|
||||||
download_url = url;
|
|
||||||
this->update_status(-1, "[test_plugin_download]: downloadurl=" + download_url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: get version of plugin failed, body=" << body;
|
|
||||||
}
|
|
||||||
} catch (...) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_plugin_download]: catch unknown exception";
|
|
||||||
;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on_error([&result, this](std::string body, std::string error, unsigned int status) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_plugin_download] on_error: " << error << ", body = " << body;
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
result = -1;
|
|
||||||
})
|
|
||||||
.perform_sync();
|
|
||||||
|
|
||||||
|
|
||||||
if (result < 0) {
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
|
|
||||||
m_in_testing[TEST_PLUGIN_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (download_url.empty()) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download]: no availaible plugin found for this app version: " << SLIC3R_VERSION;
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
|
|
||||||
m_in_testing[TEST_PLUGIN_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (m_download_cancel) {
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download canceled");
|
|
||||||
m_in_testing[TEST_PLUGIN_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cancel = false;
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] get_url = " << download_url;
|
|
||||||
|
|
||||||
// download
|
|
||||||
Slic3r::Http http = Slic3r::Http::get(download_url);
|
|
||||||
int reported_percent = 0;
|
|
||||||
http.on_progress([this, &result, &reported_percent](Slic3r::Http::Progress progress, bool &cancel) {
|
|
||||||
int percent = 0;
|
|
||||||
if (progress.dltotal != 0) { percent = progress.dlnow * 100 / progress.dltotal; }
|
|
||||||
if (percent - reported_percent >= 5) {
|
|
||||||
reported_percent = percent;
|
|
||||||
std::string download_progress_info = (boost::format("downloading %1%%%") % percent).str();
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, download_progress_info);
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] progress: " << reported_percent;
|
|
||||||
cancel = m_download_cancel;
|
|
||||||
|
|
||||||
if (cancel) result = -1;
|
|
||||||
})
|
|
||||||
.on_complete([this, tmp_path, target_file_path](std::string body, unsigned status) {
|
|
||||||
BOOST_LOG_TRIVIAL(info) << "[test_plugin_download] completed";
|
|
||||||
bool cancel = false;
|
|
||||||
fs::fstream file(tmp_path, std::ios::out | std::ios::binary | std::ios::trunc);
|
|
||||||
file.write(body.c_str(), body.size());
|
|
||||||
file.close();
|
|
||||||
fs::rename(tmp_path, target_file_path);
|
|
||||||
})
|
|
||||||
.on_error([this, &result](std::string body, std::string error, unsigned int status) {
|
|
||||||
BOOST_LOG_TRIVIAL(error) << "[test_plugin_download] downloading... on_error: " << error << ", body = " << body;
|
|
||||||
wxString info = wxString::Format("status=%u, body=%s, error=%s", status, body, error);
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
|
|
||||||
this->update_status(-1, info);
|
|
||||||
result = -1;
|
|
||||||
});
|
|
||||||
http.perform_sync();
|
|
||||||
if (result < 0) {
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download failed");
|
|
||||||
} else {
|
|
||||||
this->update_status(TEST_PLUGIN_JOB, "test plugin download ok");
|
|
||||||
}
|
|
||||||
m_in_testing[TEST_PLUGIN_JOB] = false;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_ping_thread()
|
void NetworkTestDialog::start_test_ping_thread()
|
||||||
|
@ -882,62 +303,18 @@ void NetworkTestDialog::start_test_ping_thread()
|
||||||
m_in_testing[TEST_PING_JOB] = false;
|
m_in_testing[TEST_PING_JOB] = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
void NetworkTestDialog::start_test_github_thread()
|
||||||
|
{
|
||||||
|
if (m_in_testing[TEST_ORCA_JOB])
|
||||||
|
return;
|
||||||
|
test_job[TEST_ORCA_JOB] = new boost::thread([this] {
|
||||||
|
start_test_url(TEST_ORCA_JOB, "OrcaSlicer(GitHub)", "https://github.com/SoftFever/OrcaSlicer");
|
||||||
|
});
|
||||||
|
}
|
||||||
void NetworkTestDialog::start_test_bing_thread()
|
void NetworkTestDialog::start_test_bing_thread()
|
||||||
{
|
{
|
||||||
test_job[TEST_BING_JOB] = new boost::thread([this] {
|
test_job[TEST_BING_JOB] = new boost::thread([this] {
|
||||||
start_test_bing();
|
start_test_url(TEST_BING_JOB, "Bing", "http://www.bing.com");
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_bambulab_thread()
|
|
||||||
{
|
|
||||||
if (m_in_testing[TEST_BAMBULAB_JOB]) return;
|
|
||||||
test_job[TEST_BAMBULAB_JOB] = new boost::thread([this] {
|
|
||||||
start_test_bambulab();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_iot_thread()
|
|
||||||
{
|
|
||||||
if (m_in_testing[TEST_IOT_JOB]) return;
|
|
||||||
test_job[TEST_IOT_JOB] = new boost::thread([this] {
|
|
||||||
start_test_iot();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_thread()
|
|
||||||
{
|
|
||||||
test_job[TEST_OSS_JOB] = new boost::thread([this] {
|
|
||||||
start_test_oss();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_upgrade_thread()
|
|
||||||
{
|
|
||||||
test_job[TEST_OSS_UPGRADE_JOB] = new boost::thread([this] {
|
|
||||||
start_test_oss_upgrade();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_download_thread()
|
|
||||||
{
|
|
||||||
test_job[TEST_OSS_DOWNLOAD_JOB] = new boost::thread([this] {
|
|
||||||
start_test_oss_download();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog::start_test_oss_upload_thread()
|
|
||||||
{
|
|
||||||
test_job[TEST_OSS_UPLOAD_JOB] = new boost::thread([this] {
|
|
||||||
start_test_oss_upload();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
void NetworkTestDialog:: start_test_plugin_download_thread(){
|
|
||||||
|
|
||||||
test_job[TEST_PLUGIN_JOB] = new boost::thread([this] {
|
|
||||||
start_test_plugin_download();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,7 +335,7 @@ void NetworkTestDialog::on_close(wxCloseEvent& event)
|
||||||
|
|
||||||
wxString NetworkTestDialog::get_studio_version()
|
wxString NetworkTestDialog::get_studio_version()
|
||||||
{
|
{
|
||||||
return wxString(SLIC3R_VERSION);
|
return wxString(SoftFever_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkTestDialog::set_default()
|
void NetworkTestDialog::set_default()
|
||||||
|
@ -975,13 +352,6 @@ void NetworkTestDialog::set_default()
|
||||||
txt_dns_info_value->SetLabelText(get_dns_info());
|
txt_dns_info_value->SetLabelText(get_dns_info());
|
||||||
text_link_val->SetLabelText(NA_STR);
|
text_link_val->SetLabelText(NA_STR);
|
||||||
text_bing_val->SetLabelText(NA_STR);
|
text_bing_val->SetLabelText(NA_STR);
|
||||||
text_iot_value->SetLabelText(NA_STR);
|
|
||||||
text_oss_value->SetLabelText(NA_STR);
|
|
||||||
text_oss_upgrade_value->SetLabelText(NA_STR);
|
|
||||||
text_oss_download_value->SetLabelText(NA_STR);
|
|
||||||
text_oss_upload_value->SetLabelText(NA_STR);
|
|
||||||
text_network_plugin_value->SetLabelText(NA_STR);
|
|
||||||
//text_ping_value->SetLabelText(NA_STR);
|
|
||||||
m_download_cancel = false;
|
m_download_cancel = false;
|
||||||
m_closing = false;
|
m_closing = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,15 +35,9 @@ namespace GUI {
|
||||||
|
|
||||||
enum TestJob {
|
enum TestJob {
|
||||||
TEST_BING_JOB = 0,
|
TEST_BING_JOB = 0,
|
||||||
TEST_BAMBULAB_JOB = 1,
|
TEST_ORCA_JOB = 1,
|
||||||
TEST_IOT_JOB = 2,
|
TEST_PING_JOB,
|
||||||
TEST_OSS_JOB = 3,
|
TEST_JOB_MAX
|
||||||
TEST_OSS_UPGRADE_JOB = 4,
|
|
||||||
TEST_OSS_DOWNLOAD_JOB = 5,
|
|
||||||
TEST_OSS_UPLOAD_JOB = 6,
|
|
||||||
TEST_PING_JOB = 7,
|
|
||||||
TEST_PLUGIN_JOB = 8,
|
|
||||||
TEST_JOB_MAX = 9
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class NetworkTestDialog : public DPIDialog
|
class NetworkTestDialog : public DPIDialog
|
||||||
|
@ -65,24 +59,6 @@ protected:
|
||||||
Button* btn_bing;
|
Button* btn_bing;
|
||||||
wxStaticText* text_bing_title;
|
wxStaticText* text_bing_title;
|
||||||
wxStaticText* text_bing_val;
|
wxStaticText* text_bing_val;
|
||||||
Button* btn_iot;
|
|
||||||
wxStaticText* text_iot_title;
|
|
||||||
wxStaticText* text_iot_value;
|
|
||||||
Button* btn_oss;
|
|
||||||
wxStaticText* text_oss_title;
|
|
||||||
wxStaticText* text_oss_value;
|
|
||||||
Button* btn_oss_upgrade;
|
|
||||||
wxStaticText* text_oss_upgrade_title;
|
|
||||||
wxStaticText* text_oss_upgrade_value;
|
|
||||||
Button* btn_oss_download;
|
|
||||||
wxStaticText* text_oss_download_title;
|
|
||||||
wxStaticText* text_oss_download_value;
|
|
||||||
Button* btn_oss_upload;
|
|
||||||
wxStaticText* text_oss_upload_title;
|
|
||||||
wxStaticText* text_oss_upload_value;
|
|
||||||
Button* btn_network_plugin;
|
|
||||||
wxStaticText* text_network_plugin_title;
|
|
||||||
wxStaticText* text_network_plugin_value;
|
|
||||||
wxStaticText* text_ping_title;
|
wxStaticText* text_ping_title;
|
||||||
wxStaticText* text_ping_value;
|
wxStaticText* text_ping_value;
|
||||||
wxStaticText* text_result;
|
wxStaticText* text_result;
|
||||||
|
@ -116,23 +92,10 @@ public:
|
||||||
void start_all_job();
|
void start_all_job();
|
||||||
void start_all_job_sequence();
|
void start_all_job_sequence();
|
||||||
void start_test_bing_thread();
|
void start_test_bing_thread();
|
||||||
void start_test_bambulab_thread();
|
void start_test_github_thread();
|
||||||
void start_test_iot_thread();
|
|
||||||
void start_test_oss_thread();
|
|
||||||
void start_test_oss_upgrade_thread();
|
|
||||||
void start_test_oss_download_thread();
|
|
||||||
void start_test_oss_upload_thread();
|
|
||||||
void start_test_ping_thread();
|
void start_test_ping_thread();
|
||||||
void start_test_plugin_download_thread();
|
|
||||||
|
|
||||||
void start_test_bing();
|
void start_test_url(TestJob job, wxString name, wxString url);
|
||||||
void start_test_bambulab();
|
|
||||||
void start_test_iot();
|
|
||||||
void start_test_oss();
|
|
||||||
void start_test_oss_upgrade();
|
|
||||||
void start_test_oss_download();
|
|
||||||
void start_test_oss_upload();
|
|
||||||
void start_test_plugin_download();
|
|
||||||
|
|
||||||
void on_close(wxCloseEvent& event);
|
void on_close(wxCloseEvent& event);
|
||||||
|
|
||||||
|
|
84
src/slic3r/GUI/OAuthDialog.cpp
Normal file
84
src/slic3r/GUI/OAuthDialog.cpp
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
#include "OAuthDialog.hpp"
|
||||||
|
|
||||||
|
#include "GUI_App.hpp"
|
||||||
|
#include "Jobs/BoostThreadWorker.hpp"
|
||||||
|
#include "Jobs/PlaterWorker.hpp"
|
||||||
|
#include "wxExtensions.hpp"
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
|
||||||
|
#define BORDER_W FromDIP(10)
|
||||||
|
|
||||||
|
OAuthDialog::OAuthDialog(wxWindow* parent, OAuthParams params)
|
||||||
|
: DPIDialog(parent, wxID_ANY, _L("Login"), wxDefaultPosition, wxSize(45 * wxGetApp().em_unit(), -1), wxDEFAULT_DIALOG_STYLE)
|
||||||
|
, _params(params)
|
||||||
|
{
|
||||||
|
SetFont(wxGetApp().normal_font());
|
||||||
|
SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
|
m_worker = std::make_unique<PlaterWorker<BoostThreadWorker>>(this, nullptr, "auth_worker");
|
||||||
|
|
||||||
|
wxStdDialogButtonSizer* btns = this->CreateStdDialogButtonSizer(wxCANCEL);
|
||||||
|
btnCancel = static_cast<wxButton*>(this->FindWindowById(wxID_CANCEL, this));
|
||||||
|
wxGetApp().UpdateDarkUI(btnCancel);
|
||||||
|
btnCancel->Bind(wxEVT_BUTTON, &OAuthDialog::on_cancel, this);
|
||||||
|
|
||||||
|
const auto message_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
const auto message = new wxStaticText(this, wxID_ANY, _L("Authorizing..."), wxDefaultPosition, wxDefaultSize, 0);
|
||||||
|
message->SetForegroundColour(*wxBLACK);
|
||||||
|
message_sizer->Add(message, 0, wxEXPAND | wxLEFT | wxTOP | wxBOTTOM, BORDER_W);
|
||||||
|
|
||||||
|
const auto topSizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
topSizer->Add(message_sizer, 0, wxEXPAND | wxALL, BORDER_W);
|
||||||
|
topSizer->Add(btns, 0, wxEXPAND | wxALL, BORDER_W);
|
||||||
|
|
||||||
|
Bind(wxEVT_CLOSE_WINDOW, &OAuthDialog::on_cancel, this);
|
||||||
|
|
||||||
|
SetSizer(topSizer);
|
||||||
|
topSizer->SetSizeHints(this);
|
||||||
|
this->CenterOnParent();
|
||||||
|
wxGetApp().UpdateDlgDarkUI(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OAuthDialog::on_cancel(wxEvent& event)
|
||||||
|
{
|
||||||
|
m_worker->cancel_all();
|
||||||
|
m_worker->wait_for_idle();
|
||||||
|
EndModal(wxID_NO);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool OAuthDialog::Show(bool show)
|
||||||
|
{
|
||||||
|
if (show) {
|
||||||
|
// Prepare login job
|
||||||
|
_result = std::make_shared<OAuthResult>();
|
||||||
|
auto job = std::make_unique<OAuthJob>(OAuthData{_params, _result});
|
||||||
|
job->set_event_handle(this);
|
||||||
|
Bind(EVT_OAUTH_COMPLETE_MESSAGE, [this](wxCommandEvent& evt) { EndModal(wxID_NO); });
|
||||||
|
|
||||||
|
// Start auth job
|
||||||
|
replace_job(*m_worker, std::move(job));
|
||||||
|
|
||||||
|
// Open login URL in external browser
|
||||||
|
wxLaunchDefaultBrowser(_params.login_url);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DPIDialog::Show(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OAuthDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
|
{
|
||||||
|
const int& em = em_unit();
|
||||||
|
|
||||||
|
msw_buttons_rescale(this, em, {wxID_CANCEL});
|
||||||
|
|
||||||
|
const wxSize& size = wxSize(45 * em, 35 * em);
|
||||||
|
SetMinSize(size);
|
||||||
|
|
||||||
|
Fit();
|
||||||
|
Refresh();
|
||||||
|
}
|
||||||
|
|
||||||
|
}}
|
34
src/slic3r/GUI/OAuthDialog.hpp
Normal file
34
src/slic3r/GUI/OAuthDialog.hpp
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#ifndef __OAuthDialog_HPP__
|
||||||
|
#define __OAuthDialog_HPP__
|
||||||
|
|
||||||
|
#include "GUI_Utils.hpp"
|
||||||
|
#include "Jobs/OAuthJob.hpp"
|
||||||
|
#include "Jobs/Worker.hpp"
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
namespace GUI {
|
||||||
|
|
||||||
|
class OAuthDialog : public DPIDialog
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
OAuthParams _params;
|
||||||
|
std::shared_ptr<OAuthResult> _result;
|
||||||
|
|
||||||
|
wxButton* btnCancel{nullptr};
|
||||||
|
std::unique_ptr<Worker> m_worker;
|
||||||
|
|
||||||
|
void on_cancel(wxEvent& event);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool Show(bool show) override;
|
||||||
|
void on_dpi_changed(const wxRect& suggested_rect) override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
OAuthDialog(wxWindow* parent, OAuthParams params);
|
||||||
|
|
||||||
|
OAuthResult get_result() { return *_result; }
|
||||||
|
};
|
||||||
|
|
||||||
|
}} // namespace Slic3r::GUI
|
||||||
|
|
||||||
|
#endif
|
|
@ -194,6 +194,13 @@ void OptionsGroup::show_field(const t_config_option_key& opt_key, bool show/* =
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void OptionsGroup::enable_field(const t_config_option_key& opt_key, bool enable)
|
||||||
|
{
|
||||||
|
if (Field* f = get_field(opt_key); f) {
|
||||||
|
f->toggle(enable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void OptionsGroup::set_name(const wxString& new_name)
|
void OptionsGroup::set_name(const wxString& new_name)
|
||||||
{
|
{
|
||||||
stb->SetLabel(new_name);
|
stb->SetLabel(new_name);
|
||||||
|
|
|
@ -173,6 +173,9 @@ public:
|
||||||
void show_field(const t_config_option_key& opt_key, bool show = true);
|
void show_field(const t_config_option_key& opt_key, bool show = true);
|
||||||
void hide_field(const t_config_option_key& opt_key) { show_field(opt_key, false); }
|
void hide_field(const t_config_option_key& opt_key) { show_field(opt_key, false); }
|
||||||
|
|
||||||
|
void enable_field(const t_config_option_key& opt_key, bool enable = true);
|
||||||
|
void disable_field(const t_config_option_key& opt_key) { enable_field(opt_key, false); }
|
||||||
|
|
||||||
void set_name(const wxString& new_name);
|
void set_name(const wxString& new_name);
|
||||||
|
|
||||||
inline void enable() { for (auto& field : m_fields) field.second->enable(); }
|
inline void enable() { for (auto& field : m_fields) field.second->enable(); }
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
#include "BitmapCache.hpp"
|
#include "BitmapCache.hpp"
|
||||||
#include "BonjourDialog.hpp"
|
#include "BonjourDialog.hpp"
|
||||||
#include "MsgDialog.hpp"
|
#include "MsgDialog.hpp"
|
||||||
|
#include "OAuthDialog.hpp"
|
||||||
|
#include "SimplyPrint.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
@ -174,20 +176,24 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
result = host->test(msg);
|
result = host->test(msg);
|
||||||
|
|
||||||
if (!result && host->is_cloud()) {
|
if (!result && host->is_cloud()) {
|
||||||
|
if (const auto h = dynamic_cast<SimplyPrint*>(host.get()); h) {
|
||||||
|
OAuthDialog dlg(this, h->get_oauth_params());
|
||||||
|
dlg.ShowModal();
|
||||||
|
|
||||||
|
const auto& r = dlg.get_result();
|
||||||
|
result = r.success;
|
||||||
|
if (r.success) {
|
||||||
|
h->save_oauth_credential(r);
|
||||||
|
} else {
|
||||||
|
msg = r.error_message;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
PrinterCloudAuthDialog dlg(this->GetParent(), host.get());
|
PrinterCloudAuthDialog dlg(this->GetParent(), host.get());
|
||||||
dlg.ShowModal();
|
dlg.ShowModal();
|
||||||
|
|
||||||
auto api_key = dlg.GetApiKey();
|
const auto api_key = dlg.GetApiKey();
|
||||||
m_config->opt_string("printhost_apikey") = api_key;
|
m_config->opt_string("printhost_apikey") = api_key;
|
||||||
result = !api_key.empty();
|
result = !api_key.empty();
|
||||||
if (result) {
|
|
||||||
if (Field* print_host_webui_field = this->m_optgroup->get_field("printhost_apikey"); print_host_webui_field) {
|
|
||||||
if (TextInput* temp_input = dynamic_cast<TextInput*>(print_host_webui_field->getWindow()); temp_input) {
|
|
||||||
if (wxTextCtrl* temp = temp_input->GetTextCtrl()) {
|
|
||||||
temp->SetValue(wxString(api_key));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -195,6 +201,31 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
show_info(this, host->get_test_ok_msg(), _L("Success!"));
|
show_info(this, host->get_test_ok_msg(), _L("Success!"));
|
||||||
else
|
else
|
||||||
show_error(this, host->get_test_failed_msg(msg));
|
show_error(this, host->get_test_failed_msg(msg));
|
||||||
|
|
||||||
|
update();
|
||||||
|
});
|
||||||
|
|
||||||
|
return sizer;
|
||||||
|
};
|
||||||
|
|
||||||
|
auto print_host_logout = [&](wxWindow* parent) {
|
||||||
|
auto sizer = create_sizer_with_btn(parent, &m_printhost_logout_btn, "", _L("Log Out"));
|
||||||
|
|
||||||
|
m_printhost_logout_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent& e) {
|
||||||
|
std::unique_ptr<PrintHost> host(PrintHost::get_print_host(m_config));
|
||||||
|
if (!host) {
|
||||||
|
const wxString text = _L("Could not get a valid Printer Host reference");
|
||||||
|
show_error(this, text);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString msg_text = _L("Are you sure to log out?");
|
||||||
|
MessageDialog dialog(this, msg_text, "", wxICON_QUESTION | wxYES_NO);
|
||||||
|
|
||||||
|
if (dialog.ShowModal() == wxID_YES) {
|
||||||
|
host->log_out();
|
||||||
|
update();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return sizer;
|
return sizer;
|
||||||
|
@ -215,6 +246,7 @@ void PhysicalPrinterDialog::build_printhost_settings(ConfigOptionsGroup* m_optgr
|
||||||
Line host_line = m_optgroup->create_single_option_line(option);
|
Line host_line = m_optgroup->create_single_option_line(option);
|
||||||
host_line.append_widget(printhost_browse);
|
host_line.append_widget(printhost_browse);
|
||||||
host_line.append_widget(print_host_test);
|
host_line.append_widget(print_host_test);
|
||||||
|
host_line.append_widget(print_host_logout);
|
||||||
m_optgroup->append_line(host_line);
|
m_optgroup->append_line(host_line);
|
||||||
|
|
||||||
option = m_optgroup->get_option("print_host_webui");
|
option = m_optgroup->get_option("print_host_webui");
|
||||||
|
@ -375,7 +407,9 @@ void PhysicalPrinterDialog::update_printhost_buttons()
|
||||||
std::unique_ptr<PrintHost> host(PrintHost::get_print_host(m_config));
|
std::unique_ptr<PrintHost> host(PrintHost::get_print_host(m_config));
|
||||||
if (host) {
|
if (host) {
|
||||||
m_printhost_test_btn->Enable(!m_config->opt_string("print_host").empty() && host->can_test());
|
m_printhost_test_btn->Enable(!m_config->opt_string("print_host").empty() && host->can_test());
|
||||||
m_printhost_browse_btn->Enable(host->has_auto_discovery());
|
m_printhost_browse_btn->Show(host->has_auto_discovery());
|
||||||
|
m_printhost_logout_btn->Show(host->is_logged_in());
|
||||||
|
m_printhost_test_btn->SetLabel(host->is_cloud() ? _L("Login/Test") : _L("Test"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,14 +503,28 @@ void PhysicalPrinterDialog::update(bool printer_change)
|
||||||
const auto opt = m_config->option<ConfigOptionEnum<PrintHostType>>("host_type");
|
const auto opt = m_config->option<ConfigOptionEnum<PrintHostType>>("host_type");
|
||||||
m_optgroup->show_field("host_type");
|
m_optgroup->show_field("host_type");
|
||||||
|
|
||||||
// hide PrusaConnect address
|
m_optgroup->enable_field("print_host");
|
||||||
|
m_optgroup->enable_field("print_host_webui");
|
||||||
|
m_optgroup->enable_field("printhost_cafile");
|
||||||
|
m_optgroup->enable_field("printhost_ssl_ignore_revoke");
|
||||||
|
if (m_printhost_cafile_browse_btn)
|
||||||
|
m_printhost_cafile_browse_btn->Enable();
|
||||||
|
|
||||||
|
// hide pre-configured address, in case user switched to a different host type
|
||||||
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
||||||
if (wxTextCtrl* temp = dynamic_cast<wxTextCtrl*>(printhost_field->getWindow()); temp && temp->GetValue() == L"https://connect.prusa3d.com") {
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_field)->text_ctrl(); temp) {
|
||||||
|
const auto current_host = temp->GetValue();
|
||||||
|
if (current_host == L"https://connect.prusa3d.com" ||
|
||||||
|
current_host == L"https://app.obico.io" ||
|
||||||
|
current_host == "https://simplyprint.io") {
|
||||||
temp->SetValue(wxString());
|
temp->SetValue(wxString());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (TextInput* temp_input = dynamic_cast<TextInput*>(printhost_field->getWindow()); temp_input) {
|
}
|
||||||
if (wxTextCtrl* temp = temp_input->GetTextCtrl(); temp &&temp->GetValue() == L"https://app.obico.io") {
|
if (Field* printhost_webui_field = m_optgroup->get_field("print_host_webui"); printhost_webui_field) {
|
||||||
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_webui_field)->text_ctrl(); temp) {
|
||||||
|
const auto current_host = temp->GetValue();
|
||||||
|
if (current_host == "https://simplyprint.io/panel") {
|
||||||
temp->SetValue(wxString());
|
temp->SetValue(wxString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -492,26 +540,48 @@ void PhysicalPrinterDialog::update(bool printer_change)
|
||||||
m_optgroup->show_field("printhost_apikey", true);
|
m_optgroup->show_field("printhost_apikey", true);
|
||||||
for (const std::string& opt_key : std::vector<std::string>{ "printhost_user", "printhost_password" })
|
for (const std::string& opt_key : std::vector<std::string>{ "printhost_user", "printhost_password" })
|
||||||
m_optgroup->hide_field(opt_key);
|
m_optgroup->hide_field(opt_key);
|
||||||
supports_multiple_printers = opt && opt->value == htRepetier;
|
supports_multiple_printers = opt->value == htRepetier || opt->value == htObico;
|
||||||
|
|
||||||
if (opt->value == htPrusaConnect) { // automatically show default prusaconnect address
|
if (opt->value == htPrusaConnect) { // automatically show default prusaconnect address
|
||||||
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
||||||
if (wxTextCtrl* temp = dynamic_cast<wxTextCtrl*>(printhost_field->getWindow()); temp && temp->GetValue().IsEmpty()) {
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_field)->text_ctrl(); temp && temp->GetValue().IsEmpty()) {
|
||||||
temp->SetValue(L"https://connect.prusa3d.com");
|
temp->SetValue(L"https://connect.prusa3d.com");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else if (opt->value == htObico) { // automatically show default obico address
|
||||||
}
|
|
||||||
|
|
||||||
if (opt->value == htObico) {
|
|
||||||
supports_multiple_printers = true;
|
|
||||||
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
||||||
if (TextInput* temp_input = dynamic_cast<TextInput*>(printhost_field->getWindow()); temp_input) {
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_field)->text_ctrl(); temp && temp->GetValue().IsEmpty()) {
|
||||||
if (wxTextCtrl* temp = temp_input->GetTextCtrl(); temp && temp->GetValue().IsEmpty()) {
|
|
||||||
temp->SetValue(L"https://app.obico.io");
|
temp->SetValue(L"https://app.obico.io");
|
||||||
m_config->opt_string("print_host") = "https://app.obico.io";
|
m_config->opt_string("print_host") = "https://app.obico.io";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (opt->value == htSimplyPrint) {
|
||||||
|
// Set the host url
|
||||||
|
if (Field* printhost_field = m_optgroup->get_field("print_host"); printhost_field) {
|
||||||
|
printhost_field->disable();
|
||||||
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_field)->text_ctrl(); temp && temp->GetValue().IsEmpty()) {
|
||||||
|
temp->SetValue("https://simplyprint.io");
|
||||||
}
|
}
|
||||||
|
m_config->opt_string("print_host") = "https://simplyprint.io";
|
||||||
|
}
|
||||||
|
if (Field* printhost_webui_field = m_optgroup->get_field("print_host_webui"); printhost_webui_field) {
|
||||||
|
printhost_webui_field->disable();
|
||||||
|
if (wxTextCtrl* temp = dynamic_cast<TextCtrl*>(printhost_webui_field)->text_ctrl(); temp && temp->GetValue().IsEmpty()) {
|
||||||
|
temp->SetValue("https://simplyprint.io/panel");
|
||||||
|
}
|
||||||
|
m_config->opt_string("print_host_webui") = "https://simplyprint.io/panel";
|
||||||
|
}
|
||||||
|
m_optgroup->hide_field("printhost_apikey");
|
||||||
|
m_optgroup->disable_field("printhost_cafile");
|
||||||
|
m_optgroup->disable_field("printhost_ssl_ignore_revoke");
|
||||||
|
if (m_printhost_cafile_browse_btn)
|
||||||
|
m_printhost_cafile_browse_btn->Disable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (opt->value == htFlashforge) {
|
||||||
|
m_optgroup->hide_field("printhost_apikey");
|
||||||
|
m_optgroup->hide_field("printhost_authorization_type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -594,6 +664,7 @@ void PhysicalPrinterDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||||
|
|
||||||
m_printhost_browse_btn->msw_rescale();
|
m_printhost_browse_btn->msw_rescale();
|
||||||
m_printhost_test_btn->msw_rescale();
|
m_printhost_test_btn->msw_rescale();
|
||||||
|
m_printhost_logout_btn->msw_rescale();
|
||||||
if (m_printhost_cafile_browse_btn)
|
if (m_printhost_cafile_browse_btn)
|
||||||
m_printhost_cafile_browse_btn->msw_rescale();
|
m_printhost_cafile_browse_btn->msw_rescale();
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@ class PhysicalPrinterDialog : public DPIDialog
|
||||||
|
|
||||||
ScalableButton* m_printhost_browse_btn {nullptr};
|
ScalableButton* m_printhost_browse_btn {nullptr};
|
||||||
ScalableButton* m_printhost_test_btn {nullptr};
|
ScalableButton* m_printhost_test_btn {nullptr};
|
||||||
|
ScalableButton* m_printhost_logout_btn {nullptr};
|
||||||
ScalableButton* m_printhost_cafile_browse_btn {nullptr};
|
ScalableButton* m_printhost_cafile_browse_btn {nullptr};
|
||||||
ScalableButton* m_printhost_client_cert_browse_btn {nullptr};
|
ScalableButton* m_printhost_client_cert_browse_btn {nullptr};
|
||||||
ScalableButton* m_printhost_port_browse_btn {nullptr};
|
ScalableButton* m_printhost_port_browse_btn {nullptr};
|
||||||
|
|
|
@ -1132,13 +1132,14 @@ void Sidebar::update_all_preset_comboboxes()
|
||||||
const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology();
|
const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology();
|
||||||
|
|
||||||
bool is_bbl_vendor = preset_bundle.is_bbl_vendor();
|
bool is_bbl_vendor = preset_bundle.is_bbl_vendor();
|
||||||
|
const bool use_bbl_network = preset_bundle.use_bbl_network();
|
||||||
|
|
||||||
// Orca:: show device tab based on vendor type
|
// Orca:: show device tab based on vendor type
|
||||||
auto p_mainframe = wxGetApp().mainframe;
|
auto p_mainframe = wxGetApp().mainframe;
|
||||||
p_mainframe->show_device(is_bbl_vendor);
|
p_mainframe->show_device(use_bbl_network);
|
||||||
auto cfg = preset_bundle.printers.get_edited_preset().config;
|
auto cfg = preset_bundle.printers.get_edited_preset().config;
|
||||||
|
|
||||||
if (is_bbl_vendor) {
|
if (use_bbl_network) {
|
||||||
//only show connection button for not-BBL printer
|
//only show connection button for not-BBL printer
|
||||||
connection_btn->Hide();
|
connection_btn->Hide();
|
||||||
//only show sync-ams button for BBL printer
|
//only show sync-ams button for BBL printer
|
||||||
|
@ -1270,7 +1271,7 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
||||||
}
|
}
|
||||||
|
|
||||||
Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset();
|
Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset();
|
||||||
bool isBBL = preset_bundle.is_bbl_vendor();
|
bool isBBL = preset_bundle.use_bbl_network();
|
||||||
wxGetApp().mainframe->show_calibration_button(!isBBL);
|
wxGetApp().mainframe->show_calibration_button(!isBBL);
|
||||||
|
|
||||||
if (auto printer_structure_opt = printer_preset.config.option<ConfigOptionEnum<PrinterStructure>>("printer_structure")) {
|
if (auto printer_structure_opt = printer_preset.config.option<ConfigOptionEnum<PrinterStructure>>("printer_structure")) {
|
||||||
|
@ -6835,6 +6836,26 @@ void Plater::priv::on_tab_selection_changing(wxBookCtrlEvent& e)
|
||||||
const int new_sel = e.GetSelection();
|
const int new_sel = e.GetSelection();
|
||||||
sidebar_layout.show = new_sel == MainFrame::tp3DEditor || new_sel == MainFrame::tpPreview;
|
sidebar_layout.show = new_sel == MainFrame::tp3DEditor || new_sel == MainFrame::tpPreview;
|
||||||
update_sidebar();
|
update_sidebar();
|
||||||
|
int old_sel = e.GetOldSelection();
|
||||||
|
if (wxGetApp().preset_bundle && wxGetApp().preset_bundle->use_bbl_network() && new_sel == MainFrame::tpMonitor) {
|
||||||
|
if (!wxGetApp().getAgent()) {
|
||||||
|
e.Veto();
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins") % old_sel % new_sel;
|
||||||
|
if (q) {
|
||||||
|
wxCommandEvent* evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
|
||||||
|
wxQueueEvent(q, evt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (new_sel == MainFrame::tpMonitor && wxGetApp().preset_bundle != nullptr) {
|
||||||
|
auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
|
||||||
|
wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
|
||||||
|
if (url.empty()) {
|
||||||
|
// It's missing_connection page, reload so that we can replay the gif image
|
||||||
|
main_frame->m_printer_view->reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
|
int Plater::priv::update_print_required_data(Slic3r::DynamicPrintConfig config, Slic3r::Model model, Slic3r::PlateDataPtrs plate_data_list, std::string file_name, std::string file_path)
|
||||||
|
|
|
@ -629,7 +629,7 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa
|
||||||
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 23);
|
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 23);
|
||||||
|
|
||||||
auto checkbox = new ::CheckBox(parent);
|
auto checkbox = new ::CheckBox(parent);
|
||||||
checkbox->SetValue((app_config->get(param) == "true") ? true : false);
|
checkbox->SetValue(app_config->get_bool(param));
|
||||||
|
|
||||||
m_sizer_checkbox->Add(checkbox, 0, wxALIGN_CENTER, 0);
|
m_sizer_checkbox->Add(checkbox, 0, wxALIGN_CENTER, 0);
|
||||||
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8);
|
m_sizer_checkbox->Add(0, 0, 0, wxEXPAND | wxLEFT, 8);
|
||||||
|
@ -701,10 +701,16 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (param == "installed_networking") {
|
||||||
|
bool pbool = app_config->get_bool("installed_networking");
|
||||||
|
if (pbool) {
|
||||||
|
GUI::wxGetApp().CallAfter([] { GUI::wxGetApp().ShowDownNetPluginDlg(); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif // __WXMSW__
|
#endif // __WXMSW__
|
||||||
|
|
||||||
if (param == "developer_mode")
|
if (param == "developer_mode") {
|
||||||
{
|
|
||||||
m_developer_mode_def = app_config->get("developer_mode");
|
m_developer_mode_def = app_config->get("developer_mode");
|
||||||
if (m_developer_mode_def == "true") {
|
if (m_developer_mode_def == "true") {
|
||||||
Slic3r::GUI::wxGetApp().save_mode(comDevelop);
|
Slic3r::GUI::wxGetApp().save_mode(comDevelop);
|
||||||
|
@ -1004,6 +1010,7 @@ wxWindow* PreferencesDialog::create_general_page()
|
||||||
auto item_region= create_item_region_combobox(_L("Login Region"), page, _L("Login Region"), Regions);
|
auto item_region= create_item_region_combobox(_L("Login Region"), page, _L("Login Region"), Regions);
|
||||||
|
|
||||||
auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("Stealth Mode"), 50, "stealth_mode");
|
auto item_stealth_mode = create_item_checkbox(_L("Stealth Mode"), page, _L("Stealth Mode"), 50, "stealth_mode");
|
||||||
|
auto item_enable_plugin = create_item_checkbox(_L("Enable network plugin"), page, _L("Enable network plugin"), 50, "installed_networking");
|
||||||
auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only");
|
auto item_check_stable_version_only = create_item_checkbox(_L("Check for stable updates only"), page, _L("Check for stable updates only"), 50, "check_stable_update_only");
|
||||||
|
|
||||||
std::vector<wxString> Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"};
|
std::vector<wxString> Units = {_L("Metric") + " (mm, g)", _L("Imperial") + " (in, oz)"};
|
||||||
|
@ -1020,6 +1027,7 @@ wxWindow* PreferencesDialog::create_general_page()
|
||||||
|
|
||||||
auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate everytime the color changed."), page, _L("If enabled, auto-calculate everytime the color changed."), 50, "auto_calculate");
|
auto item_calc_mode = create_item_checkbox(_L("Flushing volumes: Auto-calculate everytime the color changed."), page, _L("If enabled, auto-calculate everytime the color changed."), 50, "auto_calculate");
|
||||||
auto title_presets = create_item_title(_L("Presets"), page, _L("Presets"));
|
auto title_presets = create_item_title(_L("Presets"), page, _L("Presets"));
|
||||||
|
auto title_network = create_item_title(_L("Network"), page, _L("Network"));
|
||||||
auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset");
|
auto item_user_sync = create_item_checkbox(_L("Auto sync user presets(Printer/Filament/Process)"), page, _L("User Sync"), 50, "sync_user_preset");
|
||||||
auto item_system_sync = create_item_checkbox(_L("Update built-in Presets automatically."), page, _L("System Sync"), 50, "sync_system_preset");
|
auto item_system_sync = create_item_checkbox(_L("Update built-in Presets automatically."), page, _L("System Sync"), 50, "sync_system_preset");
|
||||||
auto item_save_presets = create_item_button(_L("Clear my choice on the unsaved presets."), _L("Clear"), page, _L("Clear my choice on the unsaved presets."), []() {
|
auto item_save_presets = create_item_button(_L("Clear my choice on the unsaved presets."), _L("Clear"), page, _L("Clear my choice on the unsaved presets."), []() {
|
||||||
|
@ -1080,12 +1088,14 @@ wxWindow* PreferencesDialog::create_general_page()
|
||||||
sizer_page->Add(item_show_splash_screen, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_show_splash_screen, 0, wxTOP, FromDIP(3));
|
||||||
sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_hints, 0, wxTOP, FromDIP(3));
|
||||||
sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20));
|
sizer_page->Add(title_presets, 0, wxTOP | wxEXPAND, FromDIP(20));
|
||||||
sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3));
|
|
||||||
sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3));
|
|
||||||
sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_calc_mode, 0, wxTOP, FromDIP(3));
|
||||||
sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_user_sync, 0, wxTOP, FromDIP(3));
|
||||||
sizer_page->Add(item_system_sync, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_system_sync, 0, wxTOP, FromDIP(3));
|
||||||
sizer_page->Add(item_save_presets, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_save_presets, 0, wxTOP, FromDIP(3));
|
||||||
|
sizer_page->Add(title_network, 0, wxTOP | wxEXPAND, FromDIP(20));
|
||||||
|
sizer_page->Add(item_check_stable_version_only, 0, wxTOP, FromDIP(3));
|
||||||
|
sizer_page->Add(item_stealth_mode, 0, wxTOP, FromDIP(3));
|
||||||
|
sizer_page->Add(item_enable_plugin, 0, wxTOP, FromDIP(3));
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
sizer_page->Add(title_associate_file, 0, wxTOP| wxEXPAND, FromDIP(20));
|
sizer_page->Add(title_associate_file, 0, wxTOP| wxEXPAND, FromDIP(20));
|
||||||
sizer_page->Add(item_associate_3mf, 0, wxTOP, FromDIP(3));
|
sizer_page->Add(item_associate_3mf, 0, wxTOP, FromDIP(3));
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
PrinterCloudAuthDialog::PrinterCloudAuthDialog(wxWindow* parent, PrintHost* host)
|
PrinterCloudAuthDialog::PrinterCloudAuthDialog(wxWindow* parent, PrintHost* host)
|
||||||
: wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, "Login"), m_host(host)
|
: wxDialog((wxWindow*) (wxGetApp().mainframe), wxID_ANY, "Login")
|
||||||
{
|
{
|
||||||
SetBackgroundColour(*wxWHITE);
|
SetBackgroundColour(*wxWHITE);
|
||||||
// Url
|
// Url
|
||||||
|
@ -91,7 +91,6 @@ void PrinterCloudAuthDialog::OnScriptMessage(wxWebViewEvent& evt)
|
||||||
wxString strCmd = j["command"];
|
wxString strCmd = j["command"];
|
||||||
if (strCmd == "login_token") {
|
if (strCmd == "login_token") {
|
||||||
auto token = j["data"]["token"];
|
auto token = j["data"]["token"];
|
||||||
m_host->set_api_key(token);
|
|
||||||
m_apikey = token;
|
m_apikey = token;
|
||||||
}
|
}
|
||||||
Close();
|
Close();
|
||||||
|
|
|
@ -29,7 +29,6 @@ protected:
|
||||||
|
|
||||||
wxString m_javascript;
|
wxString m_javascript;
|
||||||
wxString m_response_js;
|
wxString m_response_js;
|
||||||
PrintHost* m_host;
|
|
||||||
std::string m_apikey;
|
std::string m_apikey;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -80,6 +80,11 @@ void PrinterWebView::load_url(wxString& url, wxString apikey)
|
||||||
//m_browser->SetFocus();
|
//m_browser->SetFocus();
|
||||||
UpdateState();
|
UpdateState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrinterWebView::reload()
|
||||||
|
{
|
||||||
|
m_browser->Reload();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Method that retrieves the current state from the web control and updates the
|
* Method that retrieves the current state from the web control and updates the
|
||||||
* GUI the reflect this current state.
|
* GUI the reflect this current state.
|
||||||
|
|
|
@ -41,6 +41,7 @@ public:
|
||||||
void OnClose(wxCloseEvent& evt);
|
void OnClose(wxCloseEvent& evt);
|
||||||
void OnError(wxWebViewEvent& evt);
|
void OnError(wxWebViewEvent& evt);
|
||||||
void OnLoaded(wxWebViewEvent& evt);
|
void OnLoaded(wxWebViewEvent& evt);
|
||||||
|
void reload();
|
||||||
private:
|
private:
|
||||||
void SendAPIKey();
|
void SendAPIKey();
|
||||||
|
|
||||||
|
|
|
@ -3546,6 +3546,7 @@ void TabPrinter::build_fff()
|
||||||
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
|
optgroup = page->new_optgroup(L("Advanced"), L"param_advanced");
|
||||||
optgroup->append_single_option_line("printer_structure");
|
optgroup->append_single_option_line("printer_structure");
|
||||||
optgroup->append_single_option_line("gcode_flavor");
|
optgroup->append_single_option_line("gcode_flavor");
|
||||||
|
optgroup->append_single_option_line("bbl_use_printhost");
|
||||||
optgroup->append_single_option_line("disable_m73");
|
optgroup->append_single_option_line("disable_m73");
|
||||||
option = optgroup->get_option("thumbnails");
|
option = optgroup->get_option("thumbnails");
|
||||||
option.opt.full_width = true;
|
option.opt.full_width = true;
|
||||||
|
@ -4188,7 +4189,7 @@ void TabPrinter::toggle_options()
|
||||||
|
|
||||||
// SoftFever: hide BBL specific settings
|
// SoftFever: hide BBL specific settings
|
||||||
for (auto el :
|
for (auto el :
|
||||||
{"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "bbl_calib_mark_logo"})
|
{"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "bbl_calib_mark_logo", "bbl_use_printhost"})
|
||||||
toggle_line(el, is_BBL_printer);
|
toggle_line(el, is_BBL_printer);
|
||||||
|
|
||||||
// SoftFever: hide non-BBL settings
|
// SoftFever: hide non-BBL settings
|
||||||
|
|
|
@ -421,6 +421,11 @@ void WebViewPanel::OnFreshLoginStatus(wxTimerEvent &event)
|
||||||
Slic3r::GUI::wxGetApp().get_login_info();
|
Slic3r::GUI::wxGetApp().get_login_info();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WebViewPanel::SetLoginPanelVisibility(bool bshow)
|
||||||
|
{
|
||||||
|
wxString strJS = wxString::Format("SetLoginPanelVisibility(%s)", bshow ? "true" : "false");
|
||||||
|
RunScript(strJS);
|
||||||
|
}
|
||||||
void WebViewPanel::SendRecentList(int images)
|
void WebViewPanel::SendRecentList(int images)
|
||||||
{
|
{
|
||||||
boost::property_tree::wptree req;
|
boost::property_tree::wptree req;
|
||||||
|
|
|
@ -94,6 +94,7 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void SendRecentList(int images);
|
void SendRecentList(int images);
|
||||||
|
void SetLoginPanelVisibility(bool bshow);
|
||||||
void SendDesignStaffpick(bool on);
|
void SendDesignStaffpick(bool on);
|
||||||
void OpenModelDetail(std::string id, NetworkAgent *agent);
|
void OpenModelDetail(std::string id, NetworkAgent *agent);
|
||||||
void SendLoginInfo();
|
void SendLoginInfo();
|
||||||
|
|
135
src/slic3r/Utils/Flashforge.cpp
Normal file
135
src/slic3r/Utils/Flashforge.cpp
Normal file
|
@ -0,0 +1,135 @@
|
||||||
|
#include "Flashforge.hpp"
|
||||||
|
#include <algorithm>
|
||||||
|
#include <ctime>
|
||||||
|
#include <chrono>
|
||||||
|
#include <thread>
|
||||||
|
#include <boost/filesystem/path.hpp>
|
||||||
|
#include <boost/format.hpp>
|
||||||
|
#include <boost/log/trivial.hpp>
|
||||||
|
#include <boost/property_tree/ptree.hpp>
|
||||||
|
#include <boost/property_tree/json_parser.hpp>
|
||||||
|
#include <boost/asio.hpp>
|
||||||
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
#include <wx/frame.h>
|
||||||
|
#include <wx/event.h>
|
||||||
|
#include <wx/progdlg.h>
|
||||||
|
#include <wx/sizer.h>
|
||||||
|
#include <wx/stattext.h>
|
||||||
|
#include <wx/textctrl.h>
|
||||||
|
#include <wx/checkbox.h>
|
||||||
|
|
||||||
|
#include "libslic3r/PrintConfig.hpp"
|
||||||
|
#include "slic3r/GUI/GUI.hpp"
|
||||||
|
#include "slic3r/GUI/I18N.hpp"
|
||||||
|
#include "slic3r/GUI/MsgDialog.hpp"
|
||||||
|
#include "Http.hpp"
|
||||||
|
#include "TCPConsole.hpp"
|
||||||
|
#include "SerialMessage.hpp"
|
||||||
|
#include "SerialMessageType.hpp"
|
||||||
|
|
||||||
|
namespace fs = boost::filesystem;
|
||||||
|
namespace pt = boost::property_tree;
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
|
||||||
|
Flashforge::Flashforge(DynamicPrintConfig* config) : m_host(config->opt_string("print_host")), m_console_port("8899")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* Flashforge::get_name() const { return "Flashforge"; }
|
||||||
|
|
||||||
|
bool Flashforge::test(wxString& msg) const
|
||||||
|
{
|
||||||
|
BOOST_LOG_TRIVIAL(debug) << boost::format("[Flashforge] testing connection");
|
||||||
|
// Utils::TCPConsole console(m_host, m_console_port);
|
||||||
|
Utils::TCPConsole client(m_host, m_console_port);
|
||||||
|
client.enqueue_cmd(controlCommand);
|
||||||
|
bool res = client.run_queue();
|
||||||
|
if (!res) {
|
||||||
|
msg = wxString::FromUTF8(client.error_message().c_str());
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] testing connection failed");
|
||||||
|
} else {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] testing connection success");
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxString Flashforge::get_test_ok_msg() const { return _(L("Connection to Flashforge works correctly.")); }
|
||||||
|
|
||||||
|
wxString Flashforge::get_test_failed_msg(wxString& msg) const
|
||||||
|
{
|
||||||
|
return GUI::from_u8((boost::format("%s: %s") % _utf8(L("Could not connect to Flashforge")) % std::string(msg.ToUTF8())).str());
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Flashforge::upload(PrintHostUpload upload_data, ProgressFn progress_fn, ErrorFn error_fn, InfoFn info_fn) const
|
||||||
|
{
|
||||||
|
bool res = true;
|
||||||
|
|
||||||
|
Utils::TCPConsole client(m_host, m_console_port);
|
||||||
|
client.enqueue_cmd(controlCommand);
|
||||||
|
|
||||||
|
client.enqueue_cmd(connect5MCommand);
|
||||||
|
|
||||||
|
client.enqueue_cmd(statusCommand);
|
||||||
|
wxString errormsg;
|
||||||
|
try {
|
||||||
|
std::ifstream newfile;
|
||||||
|
newfile.open(upload_data.source_path.c_str(), std::ios::binary); // open a file to perform read operation using file object
|
||||||
|
if (newfile.is_open()) { // checking whether the file is open
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] Reading file...");
|
||||||
|
newfile.seekg(0, std::ios::end);
|
||||||
|
std::ifstream::pos_type pos = newfile.tellg();
|
||||||
|
|
||||||
|
std::vector<char> result(pos);
|
||||||
|
|
||||||
|
newfile.seekg(0, std::ios::beg);
|
||||||
|
newfile.read(&result[0], pos);
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] Reading file...done size is %1%") % result.size();
|
||||||
|
|
||||||
|
Slic3r::Utils::SerialMessage fileuploadCommand =
|
||||||
|
{(boost::format("~M28 %1% 0:/user/%2%") % result.size() % upload_data.upload_path.generic_string()).str(),
|
||||||
|
Slic3r::Utils::Command};
|
||||||
|
client.enqueue_cmd(fileuploadCommand);
|
||||||
|
Slic3r::Utils::SerialMessage dataCommand = {std::string(result.begin(), result.end()), Slic3r::Utils::Data};
|
||||||
|
client.enqueue_cmd(dataCommand);
|
||||||
|
newfile.close(); // close the file object.
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] Sent %1% ") % result.size();
|
||||||
|
}
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] Sending file save command ");
|
||||||
|
client.enqueue_cmd(saveFileCommand);
|
||||||
|
if (upload_data.post_action == PrintHostPostUploadAction::StartPrint) {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] Starting print %1%") % upload_data.upload_path.string();
|
||||||
|
Slic3r::Utils::SerialMessage startPrintCommand = {(boost::format("~M23 0:/user/%1%") % upload_data.upload_path.string()).str(),
|
||||||
|
Slic3r::Utils::Command};
|
||||||
|
client.enqueue_cmd(startPrintCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
res = client.run_queue();
|
||||||
|
|
||||||
|
if (!res) {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] error %1%") % client.error_message().c_str();
|
||||||
|
errormsg = wxString::FromUTF8(client.error_message().c_str());
|
||||||
|
}
|
||||||
|
if (!res) {
|
||||||
|
error_fn(std::move(errormsg));
|
||||||
|
}
|
||||||
|
} catch (const std::exception& e) {
|
||||||
|
BOOST_LOG_TRIVIAL(info) << boost::format("[Flashforge] error %1%") % e.what();
|
||||||
|
errormsg = wxString::FromUTF8(e.what());
|
||||||
|
error_fn(std::move(errormsg));
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Flashforge::get_err_code_from_body(const std::string& body) const
|
||||||
|
{
|
||||||
|
pt::ptree root;
|
||||||
|
std::istringstream iss(body); // wrap returned json to istringstream
|
||||||
|
pt::read_json(iss, root);
|
||||||
|
|
||||||
|
return root.get<int>("err", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace Slic3r
|
45
src/slic3r/Utils/Flashforge.hpp
Normal file
45
src/slic3r/Utils/Flashforge.hpp
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
#ifndef slic3r_FlashForge_hpp_
|
||||||
|
#define slic3r_FlashForge_hpp_
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include "PrintHost.hpp"
|
||||||
|
#include "SerialMessage.hpp"
|
||||||
|
#include "SerialMessageType.hpp"
|
||||||
|
#include "../../libslic3r/PrintConfig.hpp"
|
||||||
|
|
||||||
|
namespace Slic3r {
|
||||||
|
class DynamicPrintConfig;
|
||||||
|
class Http;
|
||||||
|
|
||||||
|
class Flashforge : public PrintHost
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit Flashforge(DynamicPrintConfig *config);
|
||||||
|
~Flashforge() override = default;
|
||||||
|
|
||||||
|
const char *get_name() const override;
|
||||||
|
|
||||||
|
bool test(wxString &curl_msg) const override;
|
||||||
|
wxString get_test_ok_msg() const override;
|
||||||
|
wxString get_test_failed_msg(wxString &msg) const override;
|
||||||
|
bool upload(PrintHostUpload upload_data, ProgressFn prorgess_fn, ErrorFn error_fn, InfoFn info_fn) const override;
|
||||||
|
bool has_auto_discovery() const override { return false; }
|
||||||
|
bool can_test() const override { return true; }
|
||||||
|
PrintHostPostUploadActions get_post_upload_actions() const override { return PrintHostPostUploadAction::StartPrint; }
|
||||||
|
std::string get_host() const override { return m_host; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::string m_host;
|
||||||
|
std::string m_console_port;
|
||||||
|
Slic3r::Utils::SerialMessage controlCommand = {"~M601 S1\r\n",Slic3r::Utils::Command};
|
||||||
|
Slic3r::Utils::SerialMessage connect5MCommand = {"~M640\r\n",Slic3r::Utils::Command};
|
||||||
|
Slic3r::Utils::SerialMessage connectGuiderCommand = {"~M650\r\n",Slic3r::Utils::Command};
|
||||||
|
Slic3r::Utils::SerialMessage statusCommand = {"~M119\r\n",Slic3r::Utils::Command};
|
||||||
|
Slic3r::Utils::SerialMessage saveFileCommand = {"~M29\r\n",Slic3r::Utils::Command};
|
||||||
|
int get_err_code_from_body(const std::string &body) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Slic3r
|
||||||
|
|
||||||
|
#endif
|
|
@ -25,6 +25,8 @@
|
||||||
#include "slic3r/GUI/I18N.hpp"
|
#include "slic3r/GUI/I18N.hpp"
|
||||||
#include "slic3r/GUI/MsgDialog.hpp"
|
#include "slic3r/GUI/MsgDialog.hpp"
|
||||||
#include "Http.hpp"
|
#include "Http.hpp"
|
||||||
|
#include "SerialMessage.hpp"
|
||||||
|
#include "SerialMessageType.hpp"
|
||||||
|
|
||||||
namespace fs = boost::filesystem;
|
namespace fs = boost::filesystem;
|
||||||
namespace pt = boost::property_tree;
|
namespace pt = boost::property_tree;
|
||||||
|
@ -40,8 +42,8 @@ const char* MKS::get_name() const { return "MKS"; }
|
||||||
bool MKS::test(wxString& msg) const
|
bool MKS::test(wxString& msg) const
|
||||||
{
|
{
|
||||||
Utils::TCPConsole console(m_host, m_console_port);
|
Utils::TCPConsole console(m_host, m_console_port);
|
||||||
|
Slic3r::Utils::SerialMessage s("M105", Slic3r::Utils::Command);
|
||||||
console.enqueue_cmd("M105");
|
console.enqueue_cmd(s);
|
||||||
bool ret = console.run_queue();
|
bool ret = console.run_queue();
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
@ -126,9 +128,10 @@ bool MKS::start_print(wxString& msg, const std::string& filename) const
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1500));
|
std::this_thread::sleep_for(std::chrono::milliseconds(1500));
|
||||||
|
|
||||||
Utils::TCPConsole console(m_host, m_console_port);
|
Utils::TCPConsole console(m_host, m_console_port);
|
||||||
|
Slic3r::Utils::SerialMessage s(std::string("M23 ") + filename, Slic3r::Utils::Command);
|
||||||
console.enqueue_cmd(std::string("M23 ") + filename);
|
console.enqueue_cmd(s);
|
||||||
console.enqueue_cmd("M24");
|
s.message = "M24";
|
||||||
|
console.enqueue_cmd(s);
|
||||||
|
|
||||||
bool ret = console.run_queue();
|
bool ret = console.run_queue();
|
||||||
|
|
||||||
|
|
|
@ -42,8 +42,6 @@ Obico::Obico(DynamicPrintConfig* config) :
|
||||||
|
|
||||||
const char* Obico::get_name() const { return "Obico"; }
|
const char* Obico::get_name() const { return "Obico"; }
|
||||||
|
|
||||||
void Obico::set_api_key(const std::string auth_api_key) { m_apikey = auth_api_key; }
|
|
||||||
|
|
||||||
std::string Obico::get_host() const {
|
std::string Obico::get_host() const {
|
||||||
return m_host;
|
return m_host;
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue