diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000000..4e841c04bbf --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,2 @@ +ARG BASE_IMAGE +FROM ${BASE_IMAGE} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 413866a667b..07d6a4b0d04 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,6 +1,13 @@ { "name": "OrcaSlicer", - "image": "mcr.microsoft.com/devcontainers/cpp:ubuntu-20.04", + "build": { + "dockerfile": "Dockerfile", + "args": { + "PLATFORM": "linux/amd64", + "BASE_IMAGE": "mcr.microsoft.com/devcontainers/cpp:ubuntu-20.04" + }, + "options": ["--platform=linux/amd64"] + }, "runArgs": ["--env-file", "/tmp/devcontainer.env"], "features": { "ghcr.io/devcontainers/features/desktop-lite:1": { @@ -48,4 +55,4 @@ "Set postCreate executable flag": "chmod +x .devcontainer/postCreate.sh" }, "postCreateCommand": "sudo .devcontainer/postCreate.sh" -} \ No newline at end of file +} diff --git a/CMakeLists.txt b/CMakeLists.txt index 197694e0208..47a4fba3cb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -302,6 +302,10 @@ if (NOT MSVC AND ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" OR "${CMAKE_CXX_COMP add_compile_options(-gz=zstd) endif() + if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 14) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=template-id-cdtor" ) + endif() + endif() if (SLIC3R_ASAN) diff --git "a/SoftFever_doc/sponsor_logos/Phrozen_Logo\345\234\223_.png" "b/SoftFever_doc/sponsor_logos/Phrozen_Logo\345\234\223_.png" deleted file mode 100644 index 2bf62bef54d..00000000000 Binary files "a/SoftFever_doc/sponsor_logos/Phrozen_Logo\345\234\223_.png" and /dev/null differ diff --git a/SoftFever_doc/sponsor_logos/QIDI.png b/SoftFever_doc/sponsor_logos/QIDI.png index 9b4f8e0ed12..d7ffa792f97 100644 Binary files a/SoftFever_doc/sponsor_logos/QIDI.png and b/SoftFever_doc/sponsor_logos/QIDI.png differ diff --git a/flatpak/io.github.softfever.OrcaSlicer.yml b/flatpak/io.github.softfever.OrcaSlicer.yml index 3fe3ca3769e..0eb8b86c144 100755 --- a/flatpak/io.github.softfever.OrcaSlicer.yml +++ b/flatpak/io.github.softfever.OrcaSlicer.yml @@ -14,9 +14,11 @@ finish-args: - --filesystem=xdg-run/gvfs - --filesystem=/run/media - --filesystem=/media + - --filesystem=/run/spnav.sock:ro # Allow OrcaSlicer to talk to other instances - --talk-name=io.github.softfever.OrcaSlicer.InstanceCheck.* - --system-talk-name=org.freedesktop.UDisks2 + - --env=SPNAV_SOCKET=/run/spnav.sock modules: @@ -78,6 +80,12 @@ modules: tag: v5.249.0 cleanup: - / + + - name: libspnav + sources: + - type: archive + url: https://github.com/FreeSpacenav/libspnav/releases/download/v1.1/libspnav-1.1.tar.gz + sha256: 04b297f68a10db4fa40edf68d7f823ba7b9d0442f2b665181889abe2cea42759 - name: orca_wxwidgets buildsystem: simple @@ -296,8 +304,6 @@ modules: # OrcaSlicer Source Archive - type: dir path: ../ - - type: patch - path: patches/libslic3r_missing_include.patch # AppData metainfo for Gnome Software & Co. - type: file diff --git a/flatpak/patches/libslic3r_missing_include.patch b/flatpak/patches/libslic3r_missing_include.patch deleted file mode 100644 index 3c48e515325..00000000000 --- a/flatpak/patches/libslic3r_missing_include.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp -index 528a72e70..1530fe655 100644 ---- a/src/libslic3r/PrintObject.cpp -+++ b/src/libslic3r/PrintObject.cpp -@@ -31,6 +31,7 @@ - #include - - #include -+#include - - #include - diff --git a/linux.d/debian b/linux.d/debian index 796f2ab1005..1c299cba312 100644 --- a/linux.d/debian +++ b/linux.d/debian @@ -1,4 +1,4 @@ -FOUND_GTK3=$(dpkg -l libgtk* | grep gtk-3) +FOUND_GTK3=$(dpkg -l libgtk* | grep gtk-3 || echo '') REQUIRED_DEV_PACKAGES=( autoconf diff --git a/linux.d/fedora b/linux.d/fedora index 3a34072891e..47086053ba5 100644 --- a/linux.d/fedora +++ b/linux.d/fedora @@ -16,6 +16,7 @@ REQUIRED_DEV_PACKAGES=( gstreamermm-devel gtk3-devel libmspack-devel + libquadmath-devel libsecret-devel libtool m4 diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 19304a1da4d..a6fe7f89dae 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4116,7 +4116,7 @@ msgstr "" msgid "Size:" msgstr "" -#, possible-c-format, possible-boost-format +#, possible-boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7102,8 +7102,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" msgid "Line width" @@ -10441,10 +10441,10 @@ msgstr "" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -11365,6 +11365,14 @@ msgstr "" msgid "Force a retraction when changes layer" msgstr "" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "" @@ -12275,8 +12283,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13953,8 +13961,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 7270a9c16c5..e3d1f0c7214 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-07-07 18:43+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -4427,7 +4427,7 @@ msgstr "Volum:" msgid "Size:" msgstr "Mida:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7740,8 +7740,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quan graveu timelapse sense capçal d'impressió, es recomana afegir una " "\"Torre de Purga Timelapse\" \n" @@ -11658,15 +11658,15 @@ msgstr "Velocitat màxima del ventilador a la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocitat del ventilador augmentarà linealment de zero a la capa " -"\"close_fan_the_first_x_layers\" al màxim a la capa \"full_fan_speed_layer" -"\". S'ignorarà \"full_fan_speed_layer\" si és inferior a " -"\"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " +"\"close_fan_the_first_x_layers\" al màxim a la capa " +"\"full_fan_speed_layer\". S'ignorarà \"full_fan_speed_layer\" si és inferior " +"a \"close_fan_the_first_x_layers\", en aquest cas el ventilador funcionarà a " "la velocitat màxima permesa a la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" @@ -12822,6 +12822,14 @@ msgstr "Retracció quan canvia de capa" msgid "Force a retraction when changes layer" msgstr "Forçar una retracció quan canvia de capa" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Longitud de Retracció" @@ -13947,8 +13955,8 @@ msgstr "Activar el control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15984,8 +15992,8 @@ msgstr "" "Vols reescriure'l?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Canviaríem el nom dels perfils seleccionats com a \"Proveïdor Tipus " diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index 7c7bee2844a..ddcbd9cbf02 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-11-03 20:59+0100\n" "Last-Translator: René Mošner \n" "Language-Team: \n" @@ -4342,7 +4342,7 @@ msgstr "Objem:" msgid "Size:" msgstr "Velikost:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -12284,6 +12284,14 @@ msgstr "Retrakce při změně vrstvy" msgid "Force a retraction when changes layer" msgstr "Vynutit retrakci při změně vrstvy" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Vzdálenost retrakce" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index 1f2d8954989..f51fe858c65 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: Heiko Liebscher \n" "Language-Team: \n" @@ -4470,7 +4470,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Größe:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -5981,7 +5981,7 @@ msgid "Edit current plate name" msgstr "Bearbeite den Namen der aktuellen Platte" msgid "Move plate to the front" -msgstr "" +msgstr "Bewege die Platte nach vorne" msgid "Customize current plate" msgstr "Aktuelle Platte anpassen" @@ -7417,8 +7417,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach Objekt" -"\" eingestellt ist." +"Zeitraffer wird nicht unterstützt, da die Druckreihenfolge auf \"Nach " +"Objekt\" eingestellt ist." msgid "Errors" msgstr "Fehler" @@ -7812,13 +7812,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Wenn Sie einen Zeitraffer ohne Werkzeugkopf aufnehmen, wird empfohlen, einen " "\"Timelapse Wischturm\" hinzuzufügen, indem Sie mit der rechten Maustaste " -"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"->" -"\"Timelapse Wischturm\" wählen." +"auf die leere Position der Bauplatte klicken und \"Primitiv hinzufügen\"-" +">\"Timelapse Wischturm\" wählen." msgid "Line width" msgstr "Breite der Linie" @@ -10404,6 +10404,14 @@ msgid "" "When Detect overhang wall is not enabled, this option is ignored and " "reversal happens on every even layers regardless." msgstr "" +"Die Anzahl der Millimeter, die der Überhang betragen muss, damit die " +"Umkehrung als nützlich angesehen wird. Kann ein Prozentsatz der " +"Umfangsbreite sein.\n" +"Der Wert 0 aktiviert die Umkehrung auf jeder geraden Schicht unabhängig " +"davon.\n" +"Wenn die Erkennung der Überhangswand nicht aktiviert ist, wird diese Option " +"ignoriert und die Umkehrung erfolgt auf jeder geraden Schicht unabhängig " +"davon." msgid "Classic mode" msgstr "Klassicher Modus" @@ -11981,7 +11989,7 @@ msgid "" "increased in a linear fashion over the specified number of layers." msgstr "" "Die ersten paar Schichten werden langsamer als normal gedruckt. Die " -"Geschwindigkeitwird allmählich linear über die angegebene Anzahl von " +"Geschwindigkeit wird allmählich linear über die angegebene Anzahl von " "Schichten erhöht." msgid "Initial layer nozzle temperature" @@ -11997,13 +12005,13 @@ msgstr "Volle Lüfterdrehzahl ab Schicht" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" -"Die Lüftergeschwindigkeit wird linear von Null bei der Schicht" -"\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " +"Die Lüftergeschwindigkeit wird linear von Null bei der " +"Schicht\"close_fan_the_first_x_layers\" auf das Maximum bei der Schicht " "\"full_fan_speed_layer\" erhöht. \"full_fan_speed_layer\" wird ignoriert, " "wenn es niedriger ist als \"close_fan_the_first_x_layers\",in diesem Fall " "läuft der Lüfter bei Schicht \"close_fan_the_first_x_layers\"+ 1 mit maximal " @@ -13174,6 +13182,17 @@ msgstr "Zurückziehen beim Schichtwechsel" msgid "Force a retraction when changes layer" msgstr "Erzwingen eines Rückzugs beim Schichtwechsel" +msgid "Retract on top layer" +msgstr "Rückzug auf der obersten Schicht" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" +"Forciert einen Rückzug auf der obersten Schicht. Das Deaktivieren könnte " +"eine Verstopfung bei sehr langsamen Mustern mit kleinen Bewegungen wie der " +"Hilbert-Kurve verhindern." + msgid "Retraction Length" msgstr "Rückzugslänge" @@ -14334,8 +14353,8 @@ msgstr "aktiviere Temperaturkontrolle" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -16418,8 +16437,8 @@ msgstr "" "Möchten Sie es überschreiben?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer @Drucker, " @@ -18475,8 +18494,8 @@ msgstr "" #~ "Choose an AMS slot then press \"Load\" or \"Unload\" button to " #~ "automatically load or unload filiament." #~ msgstr "" -#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder \"Entladen" -#~ "\", um automatisch Filament zu laden oder zu entladen." +#~ "Wählen Sie einen AMS-Slot und drücken Sie dann \"Laden\" oder " +#~ "\"Entladen\", um automatisch Filament zu laden oder zu entladen." #~ msgid "MC" #~ msgstr "MC" @@ -18792,8 +18811,8 @@ msgstr "" #~ msgstr "Keine dünnen Schichten (EXPERIMENTELL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "Wir würden die Voreinstellungen als \"Hersteller Typ Seriennummer " diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 9dc797a864c..55fb48c8ada 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4298,7 +4298,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Size:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7494,13 +7494,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgid "Line width" msgstr "Line width" @@ -11084,10 +11084,10 @@ msgstr "Full fan speed at layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -12071,6 +12071,14 @@ msgstr "Retract on layer change" msgid "Force a retraction when changes layer" msgstr "This forces a retraction on layer changes." +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Retraction Length" @@ -13071,8 +13079,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14912,8 +14920,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index c161940a355..1538f94cd42 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: Carlos Fco. Caruncho Serrano \n" "Language-Team: \n" @@ -4463,7 +4463,7 @@ msgstr "Volumen:" msgid "Size:" msgstr "Tamaño:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7421,8 +7421,8 @@ msgid "" "start printing." msgstr "" "Hay algunos filamentos desconocidos en los mapeados AMS. Por favor, " -"compruebe si son los filamentos requeridos. Si lo son, presione \"Confirmar" -"\" para empezar a imprimir." +"compruebe si son los filamentos requeridos. Si lo son, presione " +"\"Confirmar\" para empezar a imprimir." #, c-format, boost-format msgid "nozzle in preset: %s %s" @@ -7784,13 +7784,13 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Cuando se graba un timelapse sin cabezal, se recomienda añadir una \"Torre " "de Purga de Timelapse\" haciendo clic con el botón derecho del ratón en una " -"posición vacía de la bandeja de impresión y seleccionando \"Añadir Primitivo" -"\"->Torre de Purga de Timelapse\"." +"posición vacía de la bandeja de impresión y seleccionando \"Añadir " +"Primitivo\"->Torre de Purga de Timelapse\"." msgid "Line width" msgstr "Ancho de linea" @@ -11954,16 +11954,16 @@ msgstr "Velocidad máxima del ventilador en la capa" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocidad de ventilador se incrementará linealmente de cero desde la capa " -"\"close_fan_the_first_x_layers\" al máximo en la capa \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" se ignorará si es menor que " -"\"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará al " -"máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al máximo en la capa " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" se ignorará si es menor " +"que \"close_fan_the_first_x_layers\", en cuyo caso el ventilador funcionará " +"al máximo permitido en la capa \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "Capa" @@ -13145,6 +13145,14 @@ msgstr "Retracción al cambiar de capa" msgid "Force a retraction when changes layer" msgstr "Forzar una retracción al cambiar de capa" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Longitud de retracción" @@ -14297,8 +14305,8 @@ msgstr "Activar control de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15631,12 +15639,12 @@ msgstr "" "impresión de varios colores/materiales, la impresora utilizará el parámetro " "de compensación por defecto para el filamento durante cada cambio de " "filamento que tendrá un buen resultado en la mayoría de los casos.\n" -"un solo color/material, con la opción \"calibración de la dinámica de flujo" -"\" marcada en el menú de inicio de impresión, la impresora seguirá el camino " -"antiguo, calibrar el filamento antes de la impresión; cuando se inicia una " -"impresión de varios colores/materiales, la impresora utilizará el parámetro " -"de compensación por defecto para el filamento durante cada cambio de " -"filamento que tendrá un buen resultado en la mayoría de los casos.\n" +"un solo color/material, con la opción \"calibración de la dinámica de " +"flujo\" marcada en el menú de inicio de impresión, la impresora seguirá el " +"camino antiguo, calibrar el filamento antes de la impresión; cuando se " +"inicia una impresión de varios colores/materiales, la impresora utilizará el " +"parámetro de compensación por defecto para el filamento durante cada cambio " +"de filamento que tendrá un buen resultado en la mayoría de los casos.\n" "\n" "Tenga en cuenta que hay algunos casos que pueden hacer que los resultados de " "la calibración no sean fiables, como una adhesión insuficiente en la bandeja " @@ -16391,8 +16399,8 @@ msgstr "" "¿Quieres reescribirlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Cambiaremos el nombre de los perfiles a \"Tipo Número de Serie @impresora " @@ -18166,14 +18174,14 @@ msgstr "" #~ "Cuando grabamos timelapse sin cabezal de impresión, es recomendable " #~ "añadir un \"Torre de Purga de Intervalo\" \n" #~ "presionando con el botón derecho la posición vacía de la bandeja de " -#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de Purga" -#~ "\"." +#~ "construcción y elegir \"Añadir Primitivo\"->\"Intervalo de Torre de " +#~ "Purga\"." #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more printers, Please go to printer selection" #~ msgstr "" #~ "Cambiaríamos el nombre de los preajustes a \"Número de serie del Vendedor " diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index dd256e568a5..607ce9f42ff 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: Guislain Cyril, Thomas Lété\n" @@ -4456,7 +4456,7 @@ msgstr "Le volume:" msgid "Size:" msgstr "Taille:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -13274,6 +13274,14 @@ msgstr "Rétracter lors de changement de couche" msgid "Force a retraction when changes layer" msgstr "Cela force une rétraction sur les changements de couche." +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Longueur de Rétraction" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 9d84e786d77..5c4e404921d 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4339,7 +4339,7 @@ msgstr "Térfogat:" msgid "Size:" msgstr "Méret:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7565,8 +7565,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ha a nyomtatófej nélküli timelapse engedélyezve van, javasoljuk, hogy " "helyezz el a tálcán egy „Timelapse törlőtornyot“. Ehhez kattints jobb " @@ -11208,10 +11208,10 @@ msgstr "Teljes ventilátor fordulatszám ennél a rétegnél" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -12215,6 +12215,14 @@ msgstr "Visszahúzás rétegváltáskor" msgid "Force a retraction when changes layer" msgstr "Kényszeríti a visszahúzást minden rétegváltáskor" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Visszahúzás hossza" @@ -13242,8 +13250,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15099,8 +15107,8 @@ msgstr "" "Szeretnéd felülírni?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 4bb4e90163d..5f83b1bd2bb 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4438,7 +4438,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Dimensione:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7717,8 +7717,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Quando si registra un timelapse senza testa di stampa, si consiglia di " "aggiungere un \"Timelapse Torre di pulizia\"\n" @@ -9012,8 +9012,8 @@ msgid "" msgstr "" "È stato rilevato un aggiornamento importante che deve essere eseguito prima " "che la stampa possa continuare. Si desidera aggiornare ora? È possibile " -"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna firmware" -"\"." +"effettuare l'aggiornamento anche in un secondo momento da \"Aggiorna " +"firmware\"." msgid "" "The firmware version is abnormal. Repairing and updating are required before " @@ -11616,16 +11616,17 @@ msgstr "Massima velocità della ventola al layer" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "La velocità della ventola aumenterà linearmente da zero al livello " -"\"close_fan_the_first_x_layers\" al massimo al livello \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" verrà ignorato se inferiore a " -"\"close_fan_the_first_x_layers\", nel qual caso la ventola funzionerà alla " -"massima velocità consentita al livello \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" al massimo al livello " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" verrà ignorato se " +"inferiore a \"close_fan_the_first_x_layers\", nel qual caso la ventola " +"funzionerà alla massima velocità consentita al livello " +"\"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "" @@ -12754,6 +12755,14 @@ msgstr "Ritrai al cambio layer" msgid "Force a retraction when changes layer" msgstr "Questo forza una retrazione nei cambi layer." +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Lunghezza Retrazione" @@ -13871,8 +13880,8 @@ msgstr "Attiva il controllo della temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15868,8 +15877,8 @@ msgstr "" "Vuoi riscriverlo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Rinomineremo le preimpostazioni come \"Tipo di fornitore seriale @printer " @@ -17583,12 +17592,13 @@ msgstr "" #~ "nostro wiki.\n" #~ "\n" #~ "Di solito la calibrazione non è necessaria. Quando si avvia una stampa a " -#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del flusso" -#~ "\" selezionata nel menu di avvio della stampa, la stampante seguirà il " -#~ "vecchio modo, calibrando il filamento prima della stampa; Quando si avvia " -#~ "una stampa multicolore/materiale, la stampante utilizzerà il parametro di " -#~ "compensazione predefinito per il filamento durante ogni cambio di " -#~ "filamento, che avrà un buon risultato nella maggior parte dei casi.\n" +#~ "singolo colore/materiale, con l'opzione \"calibrazione dinamica del " +#~ "flusso\" selezionata nel menu di avvio della stampa, la stampante seguirà " +#~ "il vecchio modo, calibrando il filamento prima della stampa; Quando si " +#~ "avvia una stampa multicolore/materiale, la stampante utilizzerà il " +#~ "parametro di compensazione predefinito per il filamento durante ogni " +#~ "cambio di filamento, che avrà un buon risultato nella maggior parte dei " +#~ "casi.\n" #~ "\n" #~ "Si prega di notare che ci sono alcuni casi che renderanno il risultato " #~ "della calibrazione non affidabile: utilizzo di una piastra di texture per " @@ -17978,8 +17988,8 @@ msgstr "" #~ msgstr "Nessun layer sparso (SPERIMENTALE)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "Rinomineremo le impostazioni predefinite come \"Tipo di fornitore seriale " diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 3055f24fd00..5a64176778b 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -289,7 +289,7 @@ msgid "Dowel" msgstr "Dowel" msgid "Snap" -msgstr "Snap" +msgstr "スナップ" msgid "Prism" msgstr "プリズム" @@ -374,7 +374,7 @@ msgid "Change cut mode" msgstr "カットモード変更" msgid "Tolerance" -msgstr "Tolerance" +msgstr "公差" msgid "Drag" msgstr "Drag" @@ -383,13 +383,13 @@ msgid "Draw cut line" msgstr "" msgid "Left click" -msgstr "Left click" +msgstr "左クリック" msgid "Add connector" msgstr "Add connector" msgid "Right click" -msgstr "Right click" +msgstr "右クリック" msgid "Remove connector" msgstr "Remove connector" @@ -468,13 +468,13 @@ msgid "Reset cutting plane and remove connectors" msgstr "カット面をリセットし、コネクターを削除" msgid "Upper part" -msgstr "Upper part" +msgstr "上部パーツ" msgid "Lower part" -msgstr "Lower part" +msgstr "下部パーツ" msgid "Keep" -msgstr "Keep" +msgstr "残す" msgid "Flip" msgstr "Flip" @@ -1278,7 +1278,7 @@ msgid "Center of edge" msgstr "Center of edge" msgid "Center of circle" -msgstr "Center of circle" +msgstr "円の中心" msgid "ShiftLeft mouse button" msgstr "" @@ -1466,7 +1466,8 @@ msgid "Choose one file (3mf):" msgstr "ファイルを選択 (3mf):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" -msgstr "Choose one or more files (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" +msgstr "" +"1つ以上のファイルを選択してください (3mf/step/stl/svg/obj/amf/usd*/abc/ply):" msgid "Choose one or more files (3mf/step/stl/svg/obj/amf):" msgstr "ファイルを選択 (3mf/step/stl/svg/obj/amf)" @@ -1732,10 +1733,10 @@ msgid "Set as individual objects" msgstr "個別オブジェクトとして設定" msgid "Fill bed with copies" -msgstr "Fill bed with copies" +msgstr "コピーでビルドプレートを埋める" msgid "Fill the remaining area of bed with copies of the selected object" -msgstr "Fill the remaining area of bed with copies of the selected object" +msgstr "選択したオブジェクトのコピーでビルドプレートの残りの領域を埋める" msgid "Printable" msgstr "造形可能" @@ -1744,7 +1745,7 @@ msgid "Fix model" msgstr "モデルを修復" msgid "Export as one STL" -msgstr "Export as one STL" +msgstr "1つのSTLとしてエクスポート" msgid "Export as STLs" msgstr "Export as STLs" @@ -1916,10 +1917,10 @@ msgid "arrange current plate" msgstr "現在のプレートをレイアウト" msgid "Reload All" -msgstr "" +msgstr "全て再読み込み" msgid "reload all from disk" -msgstr "" +msgstr "全てディスクから再読み込み" msgid "Auto Rotate" msgstr "自動回転" @@ -2068,7 +2069,7 @@ msgstr "" "cut information first." msgid "Delete all connectors" -msgstr "Delete all connectors" +msgstr "全てのコネクターを削除" msgid "Deleting the last solid part is not allowed." msgstr "最後のソリッドパーツは削除できません。" @@ -2205,13 +2206,13 @@ msgid "Mouse ear" msgstr "" msgid "Outer brim only" -msgstr "Outer brim only" +msgstr "外側ブリムのみ" msgid "Inner brim only" -msgstr "Inner brim only" +msgstr "内側ブリムのみ" msgid "Outer and inner brim" -msgstr "Outer and inner brim" +msgstr "外側および内側ブリム" msgid "No-brim" msgstr "ブリム無し" @@ -2286,7 +2287,7 @@ msgid "Add Pause" msgstr "一時停止を追加" msgid "Insert a pause command at the beginning of this layer." -msgstr "Insert a pause command at the beginning of this layer." +msgstr "このレイヤーの先頭にポーズコマンドを挿入" msgid "Add Custom G-code" msgstr "カスタムG-codeを追加" @@ -2298,13 +2299,13 @@ msgid "Add Custom Template" msgstr "カスタムテンプレートを追加" msgid "Insert template custom G-code at the beginning of this layer." -msgstr "Insert template custom G-code at the beginning of this layer." +msgstr "このレイヤーの先頭にテンプレートカスタムGコードを挿入" msgid "Filament " msgstr "フィラメント" msgid "Change filament at the beginning of this layer." -msgstr "Change filament at the beginning of this layer." +msgstr "このレイヤーの先頭でフィラメントを交換" msgid "Delete Pause" msgstr "Delete Pause" @@ -2337,19 +2338,21 @@ msgid "code" msgstr "code" msgid "Failed to connect to cloud service" -msgstr "Failed to connect to cloud service" +msgstr "クラウドサービスへの接続に失敗しました。" msgid "Please click on the hyperlink above to view the cloud service status" -msgstr "Please click on the hyperlink above to view the cloud service status" +msgstr "" +"クラウドサービスのステータスを確認するには、上記のハイパーリンクをクリックし" +"てください。" msgid "Failed to connect to the printer" msgstr "プリンターへ接続できませんでした" msgid "Connection to printer failed" -msgstr "Connection to printer failed" +msgstr "プリンターへの接続に失敗しました。" msgid "Please check the network connection of the printer and Orca." -msgstr "Please check the network connection of the printer and Orca." +msgstr "プリンターとOrcaのネットワーク接続を確認してください。" msgid "Connecting..." msgstr "接続中…" @@ -4280,7 +4283,7 @@ msgstr "ボリューム" msgid "Size:" msgstr "サイズ:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7435,8 +7438,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "ヘッド無しのタイムラプスビデオを録画する時に、「タイムラプスプライムタワー」" "を追加してください。プレートで右クリックして、「プリミティブを追加」→「タイム" @@ -8614,10 +8617,12 @@ msgid "Where to find your printer's IP and Access Code?" msgstr "どこでプリンターのIPアドレスとアクセスコードを確認できますか?" msgid "Step 3: Ping the IP address to check for packet loss and latency." -msgstr "Step 3: Ping the IP address to check for packet loss and latency." +msgstr "" +"ステップ3: パケットロスとレイテンシを確認するために、IPアドレスに対してpingを" +"実行します。" msgid "Test" -msgstr "Test" +msgstr "テスト" msgid "IP and Access Code Verified! You may close the window" msgstr "IP and Access Code Verified! You may close the window" @@ -8887,13 +8892,13 @@ msgid "file open failed" msgstr "file open failed" msgid "file create failed" -msgstr "file create failed" +msgstr "ファイルの作成に失敗しました" msgid "file write failed" -msgstr "file write failed" +msgstr "ファイルの書き込みに失敗しました" msgid "file read failed" -msgstr "file read failed" +msgstr "ファイルの読み込みに失敗しました" msgid "file close failed" msgstr "file close failed" @@ -9028,13 +9033,15 @@ msgid "" "Ooze prevention is only supported with the wipe tower when " "'single_extruder_multi_material' is off." msgstr "" +"オーズ防止は、'single_extruder_multi_material'がオフの場合にのみ、 ワイプタ" +"ワーと併用してサポートされます。" msgid "" "The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " "RepRapFirmware and Repetier G-code flavors." msgstr "" -"The prime tower is currently only supported for the Marlin, RepRap/Sprinter, " -"RepRapFirmware and Repetier G-code flavors." +"プライムタワーは現在、Marlin、RepRap/Sprinter、RepRapFirmware、およびRepetier" +"のGコード形式のみサポートされています。" msgid "The prime tower is not supported in \"By object\" print." msgstr "オブジェクト順で造形する場合、プライムタワーを利用できません" @@ -10969,10 +10976,10 @@ msgstr "最大回転速度の積層" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -11943,6 +11950,14 @@ msgstr "積層変更時のリトラクション" msgid "Force a retraction when changes layer" msgstr "この設定により、積層を変更時にリトラクションを実行します。" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "リトラクション長さ" @@ -12943,8 +12958,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14799,8 +14814,8 @@ msgstr "" "Do you want to rewrite it?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" @@ -15371,10 +15386,10 @@ msgid "Could not connect to Prusa Connect" msgstr "Prusaコネクトに接続できませんでした" msgid "Connection to Repetier works correctly." -msgstr "Connection to Repetier is working correctly." +msgstr "Repetierへの接続は正常に動作しています" msgid "Could not connect to Repetier" -msgstr "Could not connect to Repetier" +msgstr "Repetierに接続できませんでした。" msgid "Note: Repetier version at least 0.90.0 is required." msgstr "Note: Repetier version 0.90.0 or higher is required." @@ -15437,8 +15452,9 @@ msgid "" "height, and results in slightly visible layer lines, but shorter printing " "time." msgstr "" -"Compared with the default profile of a 0.2 mm nozzle, it has a bigger layer " -"height. This results in slightly visible layer lines but shorter print time." +"0.2 mmノズルのデフォルトプロファイルと比較すると、レイヤー高さが大きくなって" +"います。そのため、レイヤーラインがわずかに見えますが、印刷時間は短縮されま" +"す。" msgid "" "Compared with the default profile of a 0.2 mm nozzle, it has a smaller layer " diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index cb5fc11ef55..466e969b029 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-11-06 21:10+0900\n" "Last-Translator: ElectricalBoy <15651807+ElectricalBoy@users.noreply.github." "com>\n" @@ -4309,7 +4309,7 @@ msgstr "용량:" msgid "Size:" msgstr "크기:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -12540,6 +12540,14 @@ msgstr "레이어 변경 시 후퇴" msgid "Force a retraction when changes layer" msgstr "레이어 변경 시 강제로 후퇴를 실행합니다" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "후퇴 길이" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index 39e7f9b448d..1ac39062b10 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: \n" "Language-Team: \n" @@ -4379,7 +4379,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Maat:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7675,8 +7675,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Bij het opnemen van timelapse zonder toolhead is het aan te raden om een " "„Timelapse Wipe Tower” toe te voegen \n" @@ -11358,10 +11358,10 @@ msgstr "Volledige snelheid op laag" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -12377,6 +12377,14 @@ msgstr "" "Dit forceert retraction (terugtrekken van filament) als er gewisseld wordt " "van laag" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Terugtrek (retraction) lengte" @@ -13404,8 +13412,8 @@ msgstr "Temperatuurregeling activeren" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13762,10 +13770,11 @@ msgid "" "Wipe tower is only compatible with relative mode. It is recommended on most " "printers. Default is checked" msgstr "" -"Relatieve extrusie wordt aanbevolen bij gebruik van de optie \"label_objects" -"\". Sommige extruders werken beter als deze optie niet is aangevinkt " -"(absolute extrusiemodus). Wipe tower is alleen compatibel met relatieve " -"modus. Het wordt aanbevolen op de meeste printers. Standaard is aangevinkt" +"Relatieve extrusie wordt aanbevolen bij gebruik van de optie " +"\"label_objects\". Sommige extruders werken beter als deze optie niet is " +"aangevinkt (absolute extrusiemodus). Wipe tower is alleen compatibel met " +"relatieve modus. Het wordt aanbevolen op de meeste printers. Standaard is " +"aangevinkt" msgid "" "Classic wall generator produces walls with constant extrusion width and for " @@ -15290,8 +15299,8 @@ msgstr "" "Wil je het herschrijven?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 0b501af8f90..f34f1ae89d7 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: OrcaSlicer 2.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: \n" "Last-Translator: Krzysztof Morga \n" "Language-Team: \n" @@ -13,7 +13,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 " "|| n%100>14) ? 1 : 2);\n" -"X-Generator: Poedit 3.4.2\n" +"X-Generator: Poedit 3.5\n" msgid "Supports Painting" msgstr "Malowanie podpór" @@ -4419,7 +4419,7 @@ msgstr "Objętość:" msgid "Size:" msgstr "Rozmiar:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -10195,7 +10195,7 @@ msgstr "" "można zakotwiczyć mostów. " msgid "Reverse on even" -msgstr "Znień kierunek na parzystych" +msgstr "Zmień kierunek na parzystych" msgid "Overhang reversal" msgstr "Przeciwny kierunek przy nawisach" @@ -13045,6 +13045,17 @@ msgstr "Retrakcja przy zmianie warstwy" msgid "Force a retraction when changes layer" msgstr "Wymuś retrakcję przy zmianie warstwy" +msgid "Retract on top layer" +msgstr "Retrakcja na górnej warstwie" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" +"Włącz wymuszanie retrakcji na górnej warstwie. Wyłączenie tej opcji może " +"prowadzić do gromadzenia się materiału i zatkania dyszy, zwłaszcza przy " +"drukowaniu skomplikowanych i wolnych wzorów, takich jak krzywa Hilberta." + msgid "Retraction Length" msgstr "Długość retrakcji" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 4b36b3629f0..c5300cadad1 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-06-01 21:51-0300\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" @@ -4420,7 +4420,7 @@ msgstr "Volume:" msgid "Size:" msgstr "Tamanho:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7716,8 +7716,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Ao gravar um timelapse sem o hotend aparecer, é recomendável adicionar uma " "\"Torre Prime para Timelapse\" \n" @@ -11581,10 +11581,10 @@ msgstr "Velocidade total do ventilador na camada" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "A velocidade do ventilador aumentará linearmente de zero na camada " "\"close_fan_the_first_x_layers\" para o máximo na camada " @@ -12729,6 +12729,14 @@ msgstr "Retrair ao mudar de camada" msgid "Force a retraction when changes layer" msgstr "Forçar uma retração ao mudar de camada" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Distância de retração" @@ -13834,8 +13842,8 @@ msgstr "Ativar controle de temperatura" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15824,8 +15832,8 @@ msgstr "" "Você deseja reescrevê-lo?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Renomearíamos os presets como \"Fornecedor Tipo Serial @ impressora que você " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index b4a99052f22..db9820c8235 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -5,9 +5,9 @@ # msgid "" msgstr "" -"Project-Id-Version: OrcaSlicer V2.2.0-beta2\n" +"Project-Id-Version: OrcaSlicer V2.2.0 Official Release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-09-25 22:36+0700\n" "Last-Translator: \n" "Language-Team: Andylg \n" @@ -15,8 +15,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.5\n" msgid "Supports Painting" @@ -101,8 +101,9 @@ msgstr "Позволяет рисовать на выбранных гранях msgid "Highlight faces according to overhang angle." msgstr "Выделение граней по углу свеса." +# это в рисование поддержки идет после - Выделение граней по углу свеса. msgid "No auto support" -msgstr "Откл. автоподдержку" +msgstr "Автоподдержка отключена." msgid "Support Generated" msgstr "Поддержка сгенерирована" @@ -361,17 +362,17 @@ msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane" msgstr "" -"Нажмите, чтобы перевернуть секущую плоскость\n" -"Двигайте, чтобы переместить секущую плоскость" +"Нажмите, чтобы перевернуть секущую плоскость.\n" +"Двигайте, чтобы переместить секущую плоскость." msgid "" "Click to flip the cut plane\n" "Drag to move the cut plane\n" "Right-click a part to assign it to the other side" msgstr "" -"Нажмите, чтобы перевернуть секущую плоскость\n" -"Двигайте, чтобы переместить секущую плоскость\n" -"Правая кнопка мыши на части модели для переназначения стороны" +"Нажмите, чтобы перевернуть секущую плоскость.\n" +"Двигайте, чтобы переместить секущую плоскость.\n" +"Для переназначения стороны части модели используйте правую кнопку мыши." msgid "Move cut plane" msgstr "Перемещение секущей плоскости" @@ -507,16 +508,16 @@ msgstr "Обнаружены недопустимые соединения" #, c-format, boost-format msgid "%1$d connector is out of cut contour" msgid_plural "%1$d connectors are out of cut contour" -msgstr[0] "%1$d соединение выходит за контур модели" -msgstr[1] "%1$d соединения выходит за контур модели" -msgstr[2] "%1$d соединений выходит за контур модели" +msgstr[0] "%1$d соединение выходит за контур модели." +msgstr[1] "%1$d соединения выходит за контур модели." +msgstr[2] "%1$d соединений выходит за контур модели." #, c-format, boost-format msgid "%1$d connector is out of object" msgid_plural "%1$d connectors are out of object" -msgstr[0] "%1$d соединение находится за пределами модели" -msgstr[1] "%1$d соединения находится за пределами модели" -msgstr[2] "%1$d соединений находится за пределами модели" +msgstr[0] "%1$d соединение находится за пределами модели." +msgstr[1] "%1$d соединения находится за пределами модели." +msgstr[2] "%1$d соединений находится за пределами модели." msgid "Some connectors are overlapped" msgstr "Имеются пересекающие соединения" @@ -605,7 +606,6 @@ msgstr "Показывать каркас" msgid "%1%" msgstr "%1%" -# ??? msgid "Can't apply when process preview." msgstr "Невозможно применить при предпросмотре нарезки." @@ -1247,10 +1247,10 @@ msgstr "" "Блокировка/разблокировка угла поворота при перетаскивании над поверхностью." msgid "Mirror vertically" -msgstr "Зеркалировать по вертикали" +msgstr "Отзеркалить по вертикали" msgid "Mirror horizontally" -msgstr "Зеркалировать по горизонтали" +msgstr "Отзеркалить по горизонтали" #. TRN: This is the name of the action that shows in undo/redo stack (changing part type from SVG to something else). msgid "Change SVG Type" @@ -2446,11 +2446,11 @@ msgstr "Автодозаправка" msgid "AMS not connected" msgstr "АСПП не подключена" -# ???? кнопка в интерфейсе? Extrude - Выдавить - Load +# ??? кнопка в интерфейсе? Extrude - Выдавить - Load msgid "Load" msgstr "Выдавить" -# ???? кнопка в интерфейсе? retract - Втянуть - Unload (Выгрузить, Вырузка) +# ??? кнопка в интерфейсе? retract - Втянуть - Unload (Выгрузить, Вырузка) msgid "Unload" msgstr "Втянуть" @@ -2483,6 +2483,7 @@ msgstr "Отменить калибровку" msgid "Idling..." msgstr "Простой..." +# При выгрузке/загрузке прутка справа отображается процесс msgid "Heat the nozzle" msgstr "Нагрев сопла" @@ -3877,6 +3878,7 @@ msgstr "Пауза при неисправности температуры ст msgid "Filament unloading" msgstr "Выгрузка прутка" +# ??? msgid "Skip step pause" msgstr "Пропуск команды паузы" @@ -3889,6 +3891,7 @@ msgstr "Калибровка шума двигателя" msgid "Paused due to AMS lost" msgstr "Печать приостановлена из-за потери связи с АСПП" +# ??? Печать приостановлена из-за низкой скорости вентилятора радиатора головы msgid "Paused due to low speed of the heat break fan" msgstr "" "Печать приостановлена из-за низкой скорости вентилятора обдува радиатора " @@ -4469,7 +4472,7 @@ msgstr "Объём:" msgid "Size:" msgstr "Размер:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -4610,7 +4613,7 @@ msgstr "Авторизация" msgid "Preview" msgstr "Предпросмотр нарезки" -# ??? Управ. принтерами, Управ. устройствами, менеджер устройств, Диспетчер устройств, Принтеры +# ??? Управ. принтерами, менеджер принтеров, Диспетчер принтеров msgid "Multi-device" msgstr "Принтеры" @@ -5070,7 +5073,7 @@ msgid "File is missing" msgstr "Файл отсутствует" msgid "The project is no longer available." -msgstr "Проект больше не доступен." +msgstr "Проект больше недоступен." msgid "Filament Settings" msgstr "Настройки прутка" @@ -5152,7 +5155,7 @@ msgstr "" msgid "The printer has been logged out and cannot connect." msgstr "Принтер вышел из системы и не может подключиться." -# ??? Трансляция, видеотрансляция остановлена +# ??? видеотрансляция остановлена msgid "Stopped." msgstr "Трансляция с камеры остановлена." @@ -5784,8 +5787,8 @@ msgstr "Безопасное извлечение устройства." msgid "%1$d Object has custom supports." msgid_plural "%1$d Objects have custom supports." msgstr[0] "%1$d модель имеет пользовательскую поддержку." -msgstr[1] "%1$d модели имеют пользовательские поддержки." -msgstr[2] "%1$d моделей имеют пользовательские поддержки." +msgstr[1] "%1$d модели имеют пользовательскую поддержку." +msgstr[2] "%1$d моделей имеют пользовательскую поддержку." #, c-format, boost-format msgid "%1$d Object has color painting." @@ -5958,7 +5961,7 @@ msgid "View all object's settings" msgstr "Просмотр всех настроек модели" msgid "Material settings" -msgstr "Параметры материала" +msgstr "Настройки материала" msgid "Remove current plate (if not last one)" msgstr "Удалить текущую печатную пластину (кроме последней)" @@ -6120,7 +6123,7 @@ msgid "" "nozzle hardness of the printer. Please replace the hardened nozzle or " "filament, otherwise, the nozzle will be attrited or damaged." msgstr "" -"Твердость сопла, установленного по умолчанию, не достаточна для печати " +"Твердость сопла, установленного по умолчанию, недостаточна для печати " "данной пластиковой нитью. Замените сопло на закалённое или смените " "пластиковую нить. В противном случае сопло будет изношено или повреждено." @@ -6510,15 +6513,17 @@ msgid "" "will be kept. You may fix the meshes and try again." msgstr "" "Невозможно выполнить булеву операцию над сетками модели. Будут сохранены " -"только положительные части. Вы можете исправить сетки и попробовать снова." +"только положительные части. Попробуйте починить сетку модели и попробовать " +"снова." #, boost-format msgid "Reason: part \"%1%\" is empty." msgstr "Причина: часть \"%1%\" пустая." +# ??? не формирует объем, не имеет замкнутой геометрии #, boost-format msgid "Reason: part \"%1%\" does not bound a volume." -msgstr "Причина: часть \"%1%\" не ограничивает объём." +msgstr "Причина: часть \"%1%\" не формирует замкнутый объём." #, boost-format msgid "Reason: part \"%1%\" has self intersection." @@ -6532,6 +6537,8 @@ msgid "" "Unable to perform boolean operation on model meshes. Only positive parts " "will be exported." msgstr "" +"Невозможно выполнить булеву операцию над сетками модели. Будут " +"экспортированы только положительные части." msgid "" "Are you sure you want to store original SVGs with their local paths into the " @@ -7091,14 +7098,13 @@ msgstr "Создать принтер" msgid "The selected preset is null!" msgstr "Выбранный профиль пуст!" -# ?????? В двух местах - в одном месте кнопка в другом Конечный слой +# ?????? В двух местах - в одном месте кнопка в другом Конечный слой. В V2.2.0beta2 пока не исправлено msgid "End" msgstr "End" msgid "Customize" msgstr "Настройка" -# ??? layer? msgid "Other layer filament sequence" msgstr "Последовательность прутков на других слоях" @@ -7801,8 +7807,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записи таймлапса без видимости головы рекомендуется добавить «Черновая " "башня таймлапса». \n" @@ -7956,7 +7962,7 @@ msgid "Flow ratio and Pressure Advance" msgstr "Коэффициент потока и Pressure Advance" msgid "Print chamber temperature" -msgstr "Температура в камере" +msgstr "Температура в термокамере при печати" msgid "Print temperature" msgstr "Температура печати" @@ -8061,7 +8067,7 @@ msgstr "" "расчётное время печати слоя меньше установленного значения." msgid "Auxiliary part cooling fan" -msgstr "Вспомогательный вентилятор для охлаждения моделей" +msgstr "Вспомогательный вентилятор модели" msgid "Exhaust fan" msgstr "Вытяжной вентилятор" @@ -8192,10 +8198,6 @@ msgstr "Диаметр сопла" msgid "Wipe tower" msgstr "Черновая башня" -# ????2 Параметры замены материала в одноэкструдерном ММ принтере -# ???? Параметры экструдера в одноэкструдерном мультиматериальном принтере -# ???? Параметры для экструдера в одноэкструдерном мультиматериальном принтере -# ???? Параметры для одноэкструдерной мультиматериальном печати msgid "Single extruder multi-material parameters" msgstr "Параметры одноэкструдерного мультиматериального принтера" @@ -8772,7 +8774,9 @@ msgid "" "objects, it just orientates the selected ones.Otherwise, it will orientates " "all objects in the current disk." msgstr "" -"Автоориентация моделей (ориентация выбранного, иначе всего на текущем столе)" +"Автоориентация выбранных или всех моделей. Если выбраны отдельные модели, " +"ориентация будет применена только к ним; в противном случае ко всем моделям " +"на текущем столе." msgid "Shift+Tab" msgstr "Shift+Tab" @@ -8940,10 +8944,10 @@ msgid "Select the object/part and press space to change the name" msgstr "Выберите модель/часть и нажмите пробел, чтобы изменить имя" msgid "Mouse click" -msgstr "Щелчок кнопкой мыши" +msgstr "Левая кнопка мыши" msgid "Select the object/part and mouse click to change the name" -msgstr "Выберите модель/часть и нажмите клавишу мыши, чтобы изменить имя" +msgstr "Выберите модель/часть и нажмите левую клавишу мыши, чтобы изменить имя" msgid "Objects List" msgstr "Список моделей" @@ -10133,7 +10137,6 @@ msgstr "" msgid "Cooling overhang threshold" msgstr "Порог включения обдува на нависаниях" -#, fuzzy, c-format msgid "" "Force cooling fan to be specific speed when overhang degree of printed part " "exceeds this value. Expressed as percentage which indicates how much width " @@ -10394,6 +10397,7 @@ msgstr "Порог для реверса" msgid "Overhang reversal threshold" msgstr "Порог разворота на свесах" +# ????? #, no-c-format, no-boost-format msgid "" "Number of mm the overhang need to be for the reversal to be considered " @@ -10402,6 +10406,14 @@ msgid "" "When Detect overhang wall is not enabled, this option is ignored and " "reversal happens on every even layers regardless." msgstr "" +"Величина свеса периметра при которой она считается достаточной для активации " +"функции реверса печати нависаний. Может быть в мм или в % от ширины " +"периметра.\n" +"При нуле разворот будет на каждом чётном слое, независимо от величина " +"свеса.\n" +"Если «Определять нависающие периметры» не включено, этот параметр " +"игнорируется, и разворот происходит на каждом чётном слое без " +"исключений." msgid "Classic mode" msgstr "Классический режим" @@ -10928,7 +10940,7 @@ msgid "" "\n" " " msgstr "" -"Последовательность печати внутреннего/внешнего периметров.\n" +"Последовательность печати внутреннего и внешнего периметров.\n" "\n" "Используйте порядок печати периметров «Внутренний/Внешний» для получения " "наилучших нависаний. Однако этот вариант приводит к небольшому снижению " @@ -11085,7 +11097,7 @@ msgstr "" "максимальные точки. OrcaSlicer следит за тем, чтобы значения " "adaptive_bed_mesh_min/adaptive_bed_mesh_max не превышают эти минимальные/" "максимальные значения. Эту информацию можно получить у производителя " -"принтера. По умолчанию установлено значение (-99999, -99999), которое " +"принтера. По умолчанию установлено значение (99999, 99999), которое " "означает отсутствие ограничений, что позволяет проводить зондирование по " "всему столу." @@ -11117,7 +11129,6 @@ msgstr "" "Используется только в качестве визуальной помощи в пользовательском " "интерфейсе" -# ??? Смещение экструдера по осям X/Y msgid "Extruder offset" msgstr "Смещение координат экструдера" @@ -11834,8 +11845,8 @@ msgstr "" "две ближайшие линии заполнения с коротким отрезком периметра. Если не " "найдено такого отрезка периметра короче этого параметра, линия заполнения " "соединяется с отрезком периметра только с одной стороны, а длина отрезка " -"периметра ограничена значением «Длина привязок разреженного " -"заполнения» (infill_anchor), но не больше этого параметра.\n" +"периметра ограничена значением «Длина привязок разреженного заполнения» " +"(infill_anchor), но не больше этого параметра.\n" "Если установить 0, то будет использоваться старый алгоритм для соединения " "заполнения, который даёт такой же результат, как и при значениях 1000 и 0." @@ -11900,7 +11911,7 @@ msgstr "Вкл. ограничение ускорения зигзагов" msgid "Klipper's max_accel_to_decel will be adjusted automatically" msgstr "" -"Значение ограничение ускорения зигзагов (max_accel_to_decel) в Klipper будет " +"Значение Klipper-а ограничение ускорения зигзагов (max_accel_to_decel) будет " "скорректировано автоматически.\n" "\n" "Параметр предназначен для ограничения влияния экстремальных переходов от " @@ -11914,8 +11925,8 @@ msgstr "Ограничение ускорение зигзагов" msgid "" "Klipper's max_accel_to_decel will be adjusted to this %% of acceleration" msgstr "" -"Значение ограничение ускорения зигзагов (max_accel_to_decel) в Klipper будет " -"скорректировано на заданный процент ускорения." +"Значение Klipper-а ограничение ускорения зигзагов (max_accel_to_decel) будет " +"скорректировано на данный процент ускорения." msgid "Jerk of outer walls" msgstr "Рывок для внешних периметров." @@ -11990,17 +12001,17 @@ msgstr "Полная скорость вентилятора на слое" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Скорость вентилятора будет нарастать линейно от нуля на слое " -"\"close_fan_the_first_x_layers\" до максимума на слое \"full_fan_speed_layer" -"\". Значение \"full_fan_speed_layer\" будет игнорироваться, если оно меньше " -"значения \"close_fan_the_first_x_layers\", в этом случае вентилятор будет " -"работать на максимально допустимой скорости на слое " -"\"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" до максимума на слое " +"\"full_fan_speed_layer\". Значение \"full_fan_speed_layer\" будет " +"игнорироваться, если оно меньше значения \"close_fan_the_first_x_layers\", в " +"этом случае вентилятор будет работать на максимально допустимой скорости на " +"слое \"close_fan_the_first_x_layers\" + 1." msgid "layer" msgstr "слой" @@ -12088,7 +12099,7 @@ msgid "" "printed more slowly" msgstr "" "Скорость заполнения пробелов. Пробелы обычно имеют неравномерную ширину " -"линии и должен печататься медленнее." +"линии и должны печататься медленнее." msgid "Precise Z height" msgstr "Точная высота по Z" @@ -12311,7 +12322,7 @@ msgstr "Включите, если хотите использовать нес # ?????? Название моделей msgid "Label objects" -msgstr "Помечать объекты" +msgstr "Помечать модели" # ?????? msgid "" @@ -12321,7 +12332,8 @@ msgid "" "setup and Wipe into Object / Wipe into Infill." msgstr "" "Отвечает за присвоение уникальных меток или названий каждой модели или " -"элементу, что позволяет отменять печать любого из них по вашему выбору." +"элементу, что позволяет отменять печать любого из них по вашему выбору.\n" +"\n" "Включите эту опцию, чтобы добавить комментарии в G-код с указанием того, к " "какой модели он принадлежит, что полезно для плагина Octoprint CancelObject. " "Эта настройка не совместима с настройкой «Одноэкструдерный " @@ -12329,11 +12341,11 @@ msgstr "" "модели»." msgid "Exclude objects" -msgstr "Исключить модели" +msgstr "Исключение моделей" msgid "Enable this option to add EXCLUDE OBJECT command in g-code" msgstr "" -"Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключения " +"Включите эту опцию, чтобы добавить команду EXCLUDE OBJECT (исключение " "моделей) в G-код для принтера с прошивкой Klipper." msgid "Verbose G-code" @@ -13151,7 +13163,7 @@ msgstr "Расширение первого слоя" msgid "Expand the first raft or support layer to improve bed plate adhesion" msgstr "" "Расширение первого слоя подложки или поддержки в плоскости XY для улучшения " -"адгезии с материалами склонными к отлипанию и закручиванию." +"адгезии при печати материалами склонными к отлипанию и закручиванию." msgid "Raft layers" msgstr "Слоёв в подложке" @@ -13202,6 +13214,14 @@ msgstr "Откат при смене слоя" msgid "Force a retraction when changes layer" msgstr "Эта опция включает принудительный откат при переходе со слоя на слой." +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Длина отката" @@ -13542,7 +13562,7 @@ msgid "" "scarf." msgstr "" "Длина клиновидного шва. Установка этого параметра на ноль фактически " -"отключает шарф." +"отключает клиновидный шов." msgid "Scarf steps" msgstr "Шагов клиновидного шва" @@ -13816,9 +13836,9 @@ msgid "" "zero value." msgstr "" "Разница температур, которая будет применяться, когда экструдер не активен. " -"Значение не используется, если для параметра «Температура " -"ожидания» ('idle_temperature') в настройках пластиковой нити установлено " -"ненулевое значение." +"Значение не используется, если для параметра «Температура ожидания» " +"('idle_temperature') в настройках пластиковой нити установлено ненулевое " +"значение." msgid "Preheat time" msgstr "Время преднагрева" @@ -14375,8 +14395,8 @@ msgstr "Вкл. контроль температуры" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14832,9 +14852,12 @@ msgid "" msgstr "" "Движок классического генератора периметров создаёт их с постоянной шириной " "экструзии, а для очень тонких участков используется параметр «Заполнять " -"щели». Движок Arachne же создаёт периметры с переменной шириной экструзии, " -"что позволяет печатать без щелей, лучше пропечатывать мелкие элементы (при " -"условии, что у вас правильно откалиброван LA/PA)." +"щели».\n" +"\n" +"Движок Arachne же создаёт периметры с переменной шириной экструзии, что " +"позволяет печатать без щелей, лучше пропечатывать мелкие элементы (при " +"условии, что у вас правильно откалиброван LA/PA). Этот параметр также влияет " +"на концентрическое заполнение." msgid "Classic" msgstr "Классический" @@ -16288,8 +16311,9 @@ msgstr "Пересечение" msgid "Source Volume" msgstr "Исходный объём" +# ??? msgid "Tool Volume" -msgstr "" +msgstr "Объём инструмента" msgid "Subtract from" msgstr "Главный" @@ -16455,8 +16479,8 @@ msgstr "" "Хотите перезаписать его?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Мы переименуем профиль в \"Производитель Тип Серия @выбранный принтер\".\n" @@ -17439,7 +17463,7 @@ msgid "" "Auxiliary fan\n" "Did you know that OrcaSlicer supports Auxiliary part cooling fan?" msgstr "" -"Вспомогательный вентилятор для охлаждения моделей\n" +"Вспомогательный вентилятор модели\n" "Знаете ли вы, что OrcaSlicer поддерживает управление вспомогательным " "вентилятором для охлаждения моделей?" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index c255febe9ca..53c78a31ae0 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -4310,7 +4310,7 @@ msgstr "Volym:" msgid "Size:" msgstr "Storlek:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7143,8 +7143,8 @@ msgstr "" msgid "" "Timelapse is not supported because Print sequence is set to \"By object\"." msgstr "" -"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per objekt" -"\"." +"Timelapse stöds inte eftersom utskrifts sekvensen är inställd på \"Per " +"objekt\"." msgid "Errors" msgstr "Fel" @@ -7516,8 +7516,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "När du spelar in timelapse utan verktygshuvud rekommenderas att du lägger " "till ett \"Timelapse Wipe Tower\".\n" @@ -10002,9 +10002,9 @@ msgid "" "quality for needle and small details" msgstr "" "Aktivera detta val för att sänka utskifts hastigheten för att göra den sista " -"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets tröskel" -"\", detta så att lager kan kylas under en längre tid. Detta kan förbättra " -"kylnings kvaliteten för små detaljer" +"lager tiden inte kortare än lager tidströskeln \"Max fläkthastighets " +"tröskel\", detta så att lager kan kylas under en längre tid. Detta kan " +"förbättra kylnings kvaliteten för små detaljer" msgid "Normal printing" msgstr "Normal utskrift" @@ -11096,10 +11096,10 @@ msgstr "Full fläkthastighet vid lager" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" msgid "layer" @@ -12085,6 +12085,14 @@ msgstr "Retraktera vid lager byte" msgid "Force a retraction when changes layer" msgstr "Tvinga retraktion vid lager byte" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Retraktions längd" @@ -13082,8 +13090,8 @@ msgstr "" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14938,8 +14946,8 @@ msgstr "" "Vill du skriva om det?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index a2dbc8429d2..568994d7475 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-10-01 22:31+0300\n" "Last-Translator: GlauTech\n" "Language-Team: \n" @@ -4376,7 +4376,7 @@ msgstr "Hacim:" msgid "Size:" msgstr "Boyut:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7649,8 +7649,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "Araç başlığı olmadan timelapse kaydederken, bir \"Timelapse Wipe Tower\" " "eklenmesi önerilir.\n" @@ -9267,8 +9267,8 @@ msgid "" "Please select \"By object\" print sequence to print multiple objects in " "spiral vase mode." msgstr "" -"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye göre" -"\" yazdırma sırasını seçin." +"Birden fazla nesneyi spiral vazo modunda yazdırmak için lütfen \"Nesneye " +"göre\" yazdırma sırasını seçin." msgid "" "The spiral vase mode does not work when an object contains more than one " @@ -11720,16 +11720,17 @@ msgstr "Maksimum fan hızı" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Fan hızı, \"close_fan_the_first_x_layers\" katmanında sıfırdan " "\"ful_fan_speed_layer\" katmanında maksimuma doğrusal olarak artırılacaktır. " "\"full_fan_speed_layer\", \"close_fan_the_first_x_layers\" değerinden " -"düşükse göz ardı edilecektir; bu durumda fan, \"close_fan_the_first_x_layers" -"\" + 1 katmanında izin verilen maksimum hızda çalışacaktır." +"düşükse göz ardı edilecektir; bu durumda fan, " +"\"close_fan_the_first_x_layers\" + 1 katmanında izin verilen maksimum hızda " +"çalışacaktır." msgid "layer" msgstr "katman" @@ -12884,6 +12885,14 @@ msgstr "Katman değişiminde geri çek" msgid "Force a retraction when changes layer" msgstr "Katmanı değiştirdiğinde geri çekilmeyi zorla" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Geri Çekme Uzunluğu" @@ -14012,8 +14021,8 @@ msgstr "Sıcaklık kontrolünü etkinleştirin" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -16049,8 +16058,8 @@ msgstr "" "Yeniden yazmak ister misin?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ön ayarları şu şekilde yeniden adlandırırdık: \"Satıcı Türü Seçtiğiniz Seri " @@ -18389,12 +18398,12 @@ msgstr "" #~ msgstr "Seyrek katman yok (DENEYSEL)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgid "The Config can not be loaded." diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 2a4a84963c6..b7bd723b272 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-06-30 23:05+0300\n" "Last-Translator: \n" "Language-Team: \n" @@ -16,8 +16,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" "X-Generator: Poedit 3.4.4\n" msgid "Supports Painting" @@ -4408,7 +4408,7 @@ msgstr "Об'єм:" msgid "Size:" msgstr "Розмір:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7704,8 +7704,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "При записі таймлапсу без інструментальної головки рекомендується додати " "“Timelapse Wipe Tower” \n" @@ -11550,10 +11550,10 @@ msgstr "Повна швидкість вентилятора на шарі" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "Швидкість вентилятора лінійно збільшується від нуля на " "рівні«close_fan_the_first_x_layers» до максимуму на рівні " @@ -12690,6 +12690,14 @@ msgstr "Втягування при зміні шару" msgid "Force a retraction when changes layer" msgstr "Примусове втягування при зміні шару" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "Довжина втягування" @@ -13785,8 +13793,8 @@ msgstr "Увімкнути контроль температури" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -13918,9 +13926,9 @@ msgstr "" "Залежно від тривалості операції витирання, швидкості та тривалості " "втягування екструдера/нитки, може знадобитися рух накату для нитки. \n" "\n" -"Якщо встановити значення у параметрі \"Кількість втягування перед витиранням" -"\" нижче, надлишкове втягування буде виконано перед витиранням, інакше воно " -"буде виконано після нього." +"Якщо встановити значення у параметрі \"Кількість втягування перед " +"витиранням\" нижче, надлишкове втягування буде виконано перед витиранням, " +"інакше воно буде виконано після нього." msgid "" "The wiping tower can be used to clean up the residue on the nozzle and " @@ -15770,8 +15778,8 @@ msgstr "" "Чи бажаєте ви їх перезаписати?" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "Ми б перейменували попередні налаштування на «Вибраний вами серійний " diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 3fdbf3e8170..e7afc790b42 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Slic3rPE\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2024-07-28 07:12+0000\n" "Last-Translator: Handle \n" "Language-Team: \n" @@ -4229,7 +4229,7 @@ msgstr "体积:" msgid "Size:" msgstr "尺寸:" -#, c-format, boost-format +#, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7315,8 +7315,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在录制无工具头延时摄影视频时,建议添加“延时摄影擦料塔”\n" "右键单击打印板的空白位置,选择“添加标准模型”->“延时摄影擦料塔”。" @@ -9592,7 +9592,6 @@ msgstr "" "值0表示在每个偶数层上都启用反转。\n" "当未启用检测悬垂时,此选项将被忽略,反转将在每个偶数层上发生。" - msgid "Classic mode" msgstr "经典模式" @@ -10878,10 +10877,10 @@ msgstr "满速风扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "风扇速度将从“禁用第一层”的零线性上升到“全风扇速度层”的最大。如果低于“禁用风扇" "第一层”,则“全风扇速度第一层”将被忽略,在这种情况下,风扇将在“禁用风扇第一" @@ -11883,6 +11882,14 @@ msgstr "换层时回抽" msgid "Force a retraction when changes layer" msgstr "强制在换层时回抽。" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "回抽长度" @@ -12874,8 +12881,8 @@ msgstr "激活温度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -14713,8 +14720,8 @@ msgstr "" "你想重写预设吗" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" "我们将会把预设重命名为“供应商类型名 @ 您选择的打印机”\n" @@ -16440,8 +16447,8 @@ msgstr "" #~ msgstr "无稀疏层(实验)" #~ msgid "" -#~ "We would rename the presets as \"Vendor Type Serial @printer you selected" -#~ "\". \n" +#~ "We would rename the presets as \"Vendor Type Serial @printer you " +#~ "selected\". \n" #~ "To add preset for more prinetrs, Please go to printer selection" #~ msgstr "" #~ "我们会将预设重命名为“供应商 类型 系列 @您选择的打印机”。\n" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index 40968cd0a80..19599b5f6cb 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Orca Slicer\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-27 23:05+0800\n" +"POT-Creation-Date: 2024-12-01 08:07+0100\n" "PO-Revision-Date: 2023-11-06 14:37+0800\n" "Last-Translator: ablegods \n" "Language-Team: \n" @@ -4362,7 +4362,7 @@ msgstr "體積:" msgid "Size:" msgstr "尺寸:" -#, fuzzy, c-format, boost-format +#, fuzzy, boost-format msgid "" "Conflicts of gcode paths have been found at layer %d, z = %.2lf mm. Please " "separate the conflicted objects farther (%s <-> %s)." @@ -7575,8 +7575,8 @@ msgstr "" msgid "" "When recording timelapse without toolhead, it is recommended to add a " "\"Timelapse Wipe Tower\" \n" -"by right-click the empty position of build plate and choose \"Add Primitive" -"\"->\"Timelapse Wipe Tower\"." +"by right-click the empty position of build plate and choose \"Add " +"Primitive\"->\"Timelapse Wipe Tower\"." msgstr "" "在錄製無工具頭縮時錄影影片時,建議增加“縮時錄影擦拭塔”\n" "右鍵單擊列印板的空白位置,選擇“新增標準模型”->“縮時錄影擦拭塔”。" @@ -11216,10 +11216,10 @@ msgstr "滿速風扇在" msgid "" "Fan speed will be ramped up linearly from zero at layer " -"\"close_fan_the_first_x_layers\" to maximum at layer \"full_fan_speed_layer" -"\". \"full_fan_speed_layer\" will be ignored if lower than " -"\"close_fan_the_first_x_layers\", in which case the fan will be running at " -"maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." +"\"close_fan_the_first_x_layers\" to maximum at layer " +"\"full_fan_speed_layer\". \"full_fan_speed_layer\" will be ignored if lower " +"than \"close_fan_the_first_x_layers\", in which case the fan will be running " +"at maximum allowed speed at layer \"close_fan_the_first_x_layers\" + 1." msgstr "" "風扇速度將從“禁用第一層”的零線性上升到“全風扇速度層”的最大。如果低於“禁用風扇" "第一層”,則“全風扇速度第一層”將被忽略,在這種情況下,風扇將在“禁用風扇第一" @@ -12237,6 +12237,14 @@ msgstr "換層時回抽" msgid "Force a retraction when changes layer" msgstr "強制在換層時回抽。" +msgid "Retract on top layer" +msgstr "" + +msgid "" +"Force a retraction on top layer. Disabling could prevent clog on very slow " +"patterns with small movements, like Hilbert curve" +msgstr "" + msgid "Retraction Length" msgstr "回抽長度" @@ -13213,8 +13221,8 @@ msgstr "啟動溫度控制" msgid "" "Enable this option for automated chamber temperature control. This option " -"activates the emitting of an M191 command before the \"machine_start_gcode" -"\"\n" +"activates the emitting of an M191 command before the " +"\"machine_start_gcode\"\n" " which sets the chamber temperature and waits until it is reached. In " "addition, it emits an M141 command at the end of the print to turn off the " "chamber heater, if present. \n" @@ -15056,8 +15064,8 @@ msgid "" msgstr "" msgid "" -"We would rename the presets as \"Vendor Type Serial @printer you selected" -"\". \n" +"We would rename the presets as \"Vendor Type Serial @printer you " +"selected\". \n" "To add preset for more printers, Please go to printer selection" msgstr "" diff --git a/resources/images/bbl_bed_st_bottom.svg b/resources/images/bbl_bed_st_bottom.svg new file mode 100644 index 00000000000..68c0c0f5947 --- /dev/null +++ b/resources/images/bbl_bed_st_bottom.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/bbl_bed_st_left.svg b/resources/images/bbl_bed_st_left.svg new file mode 100644 index 00000000000..4a7c10acbe2 --- /dev/null +++ b/resources/images/bbl_bed_st_left.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/images/toolbar_assembly.svg b/resources/images/toolbar_assembly.svg new file mode 100644 index 00000000000..1c2a025f5e3 --- /dev/null +++ b/resources/images/toolbar_assembly.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/images/toolbar_assembly_dark.svg b/resources/images/toolbar_assembly_dark.svg new file mode 100644 index 00000000000..f514dcb5cc2 --- /dev/null +++ b/resources/images/toolbar_assembly_dark.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json index 1c21b4d2b31..32895aecddc 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.2 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.2", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json index f63ef573d46..97a4e9ed60b 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.25 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.25", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json index 9ad650c1cf2..8ce3690f5b0 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json @@ -12,7 +12,6 @@ "printer_variant": "0.4", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json index 796c77b3c1c..086aff0b7f4 100644 --- a/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 0.6 nozzle.json @@ -18,7 +18,6 @@ "printer_variant": "0.6", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json index 1874ea77db1..4533f58efd0 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.2 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.2", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json index 55534d9eb1f..f1d5fb21df1 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.25 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.25", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json index 353867858cb..c6fb4cb472b 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.4 nozzle.json @@ -12,7 +12,6 @@ "printer_variant": "0.4", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json index 766d3de1aaf..3bd775d1c12 100644 --- a/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5 All-Metal 0.6 nozzle.json @@ -18,7 +18,6 @@ "printer_variant": "0.6", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json index f6c067f96cf..e518530c190 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.2 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.2", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json index c0002ad5eed..3d8db4d9f2f 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.25 nozzle.json @@ -15,7 +15,6 @@ "printer_variant": "0.25", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json index 575550f2d88..6e72eba456d 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json @@ -12,7 +12,6 @@ "printer_variant": "0.4", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json b/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json index c9f68263c69..cc42f476076 100644 --- a/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json +++ b/resources/profiles/Anker/machine/Anker M5C 0.6 nozzle.json @@ -18,7 +18,6 @@ "printer_variant": "0.6", "auxiliary_fan": "0", "bed_exclude_area": [], - "printer_structure": "i3", "default_filament_profile": [ "Anker Generic PLA+" ], diff --git a/resources/profiles/Anker/machine/fdm_machine_common.json b/resources/profiles/Anker/machine/fdm_machine_common.json index 0dc08da1e3b..69fcb91793d 100644 --- a/resources/profiles/Anker/machine/fdm_machine_common.json +++ b/resources/profiles/Anker/machine/fdm_machine_common.json @@ -16,46 +16,46 @@ ], "silent_mode": "0", "machine_max_acceleration_e": [ - "10000" + "4000" ], "machine_max_acceleration_extruding": [ - "10000" + "6000" ], "machine_max_acceleration_retracting": [ - "10000" + "1000" ], "machine_max_acceleration_x": [ - "10000" + "6000" ], "machine_max_acceleration_y": [ - "10000" + "6000" ], "machine_max_acceleration_z": [ - "10000" + "300" ], "machine_max_acceleration_travel": [ - "10000" + "6000" ], "machine_max_speed_e": [ - "100" + "50" ], "machine_max_speed_x": [ - "500" + "600" ], "machine_max_speed_y": [ - "500" + "600" ], "machine_max_speed_z": [ - "50" + "30" ], "machine_max_jerk_e": [ "3" ], "machine_max_jerk_x": [ - "15" + "12" ], "machine_max_jerk_y": [ - "15" + "12" ], "machine_max_jerk_z": [ "0.3" @@ -70,11 +70,11 @@ "0.32" ], "min_layer_height": [ - "0.08" + "0.05" ], "printer_settings_id": "", "retraction_minimum_travel": [ - "1.5" + "1" ], "retract_before_wipe": [ "0%" @@ -83,10 +83,10 @@ "1" ], "retraction_length": [ - "3" + "0.5" ], "retract_length_toolchange": [ - "4" + "2" ], "z_hop": [ "0" @@ -106,4 +106,4 @@ "wipe": [ "1" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Anker/process/fdm_process_anker_fast_common.json b/resources/profiles/Anker/process/fdm_process_anker_fast_common.json index 2a68dee68f0..ca5b0b35b5c 100644 --- a/resources/profiles/Anker/process/fdm_process_anker_fast_common.json +++ b/resources/profiles/Anker/process/fdm_process_anker_fast_common.json @@ -22,5 +22,12 @@ "travel_speed": "500", "travel_acceleration": "6000", "top_surface_speed": "360", - "top_surface_acceleration": "2500" + "top_surface_acceleration": "2500", + "default_jerk": "9", + "outer_wall_jerk": "9", + "inner_wall_jerk": "9", + "infill_jerk": "9", + "top_surface_jerk": "9", + "initial_layer_jerk": "9", + "travel_jerk": "10" } diff --git a/resources/profiles/Anker/process/fdm_process_common.json b/resources/profiles/Anker/process/fdm_process_common.json index b95f1c3487b..34473ba55e9 100644 --- a/resources/profiles/Anker/process/fdm_process_common.json +++ b/resources/profiles/Anker/process/fdm_process_common.json @@ -51,13 +51,13 @@ "inner_wall_acceleration": "500", "bridge_acceleration": "500", "travel_acceleration": "2500", - "default_jerk": "15", - "outer_wall_jerk": "10", - "inner_wall_jerk": "15", - "infill_jerk": "15", - "top_surface_jerk": "12", - "initial_layer_jerk": "12", - "travel_jerk": "20", + "default_jerk": "8", + "outer_wall_jerk": "5", + "inner_wall_jerk": "8", + "infill_jerk": "9", + "top_surface_jerk": "5", + "initial_layer_jerk": "8", + "travel_jerk": "9", "enable_support": "0", "support_type": "normal(auto)", "support_threshold_angle": "30", diff --git a/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json index 0c28cba87ae..76c221347ae 100644 --- a/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.08mm HighDetail @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json b/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json index 5f94f3e8fe8..13884c26252 100644 --- a/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json +++ b/resources/profiles/Anycubic/process/0.10mm Detail @Anycubic Kobra 3 0.2 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json index 35745292d22..3febe3b3c52 100644 --- a/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.12mm Detail @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json index 48c5d85af38..d59311f7403 100644 --- a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json index 9e1873775c3..bdd93e6fdc9 100644 --- a/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.16mm Optimal @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json index 073a4e6b632..0802e64e3be 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Max 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json index d6573bf139c..ce8d3f9bd9e 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Neo 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json index f619dd5bc9f..557d6bc75d4 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Plus 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json index dd7c9fc7145..b510830392d 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json index 35a958e81b7..3eac0335a97 100644 --- a/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json index 49701d0f2e9..5ba4c7c3870 100644 --- a/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.24mm Draft @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json index 0808f0b1d0c..5493230ccbb 100644 --- a/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm Draft @Anycubic Kobra 2 Pro 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json b/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json index 83d0a1b842e..53059f57d79 100644 --- a/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json +++ b/resources/profiles/Anycubic/process/0.28mm SuperDraft @Anycubic Kobra 3 0.4 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json index 9ce20fd9fa3..4190d23daae 100644 --- a/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json +++ b/resources/profiles/Anycubic/process/0.30mm Standard @Anycubic Kobra 3 0.6 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", diff --git a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json index dfd05c6d222..913402bcaf2 100644 --- a/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json +++ b/resources/profiles/Anycubic/process/0.40mm Standard @Anycubic Kobra 3 0.8 nozzle.json @@ -162,7 +162,7 @@ "seam_slope_start_height": "0", "seam_slope_steps": "10", "seam_slope_type": "none", - "single_extruder_multi_material_priming": "1", + "single_extruder_multi_material_priming": "0", "skirt_distance": "2", "skirt_height": "1", "skirt_loops": "0", @@ -289,4 +289,4 @@ ], "xy_contour_compensation": "0", "xy_hole_compensation": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 7da1749debc..356da0b297c 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.09.00.23", + "version": "01.10.00.26", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -674,8 +674,8 @@ "sub_path": "filament/fdm_filament_bvoh.json" }, { - "name": "fdm_filament_sbs", - "sub_path": "filament/fdm_filament_sbs.json" + "name": "fdm_filament_sbs", + "sub_path": "filament/fdm_filament_sbs.json" }, { "name": "Bambu PLA Matte @base", @@ -738,8 +738,8 @@ "sub_path": "filament/Generic PLA-CF @base.json" }, { - "name": "Generic SBS @base", - "sub_path": "filament/Generic SBS @base.json" + "name": "Generic SBS @base", + "sub_path": "filament/Generic SBS @base.json" }, { "name": "Bambu PLA-CF @base", @@ -797,6 +797,14 @@ "name": "Bambu TPU 95A HF @base", "sub_path": "filament/Bambu TPU 95A HF @base.json" }, + { + "name": "Generic TPU for AMS @base", + "sub_path": "filament/Generic TPU for AMS @base.json" + }, + { + "name": "Bambu TPU for AMS @base", + "sub_path": "filament/Bambu TPU for AMS @base.json" + }, { "name": "Bambu PETG Basic @base", "sub_path": "filament/Bambu PETG Basic @base.json" @@ -833,6 +841,22 @@ "name": "Bambu PETG HF @base", "sub_path": "filament/Bambu PETG HF @base.json" }, + { + "name": "Fiberon PETG-ESD @base", + "sub_path": "filament/Fiberon PETG-ESD @base.json" + }, + { + "name": "Fiberon PETG-rCF @base", + "sub_path": "filament/Fiberon PETG-rCF @base.json" + }, + { + "name": "Fiberon PET-CF @base", + "sub_path": "filament/Fiberon PET-CF @base.json" + }, + { + "name": "Generic PETG HF @base", + "sub_path": "filament/Generic PETG HF @base.json" + }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" @@ -877,6 +901,10 @@ "name": "Bambu ASA-Aero @base", "sub_path": "filament/Bambu ASA-Aero @base.json" }, + { + "name": "Bambu ASA-CF @base", + "sub_path": "filament/Bambu ASA-CF @base.json" + }, { "name": "Generic PVA @base", "sub_path": "filament/Generic PVA @base.json" @@ -925,6 +953,22 @@ "name": "Bambu PA6-GF @base", "sub_path": "filament/Bambu PA6-GF @base.json" }, + { + "name": "Fiberon PA6-CF @base", + "sub_path": "filament/Fiberon PA6-CF @base.json" + }, + { + "name": "Fiberon PA6-GF @base", + "sub_path": "filament/Fiberon PA6-GF @base.json" + }, + { + "name": "Fiberon PA12-CF @base", + "sub_path": "filament/Fiberon PA12-CF @base.json" + }, + { + "name": "Fiberon PA612-CF @base", + "sub_path": "filament/Fiberon PA612-CF @base.json" + }, { "name": "Generic HIPS @base", "sub_path": "filament/Generic HIPS @base.json" @@ -1406,8 +1450,8 @@ "sub_path": "filament/Generic PLA-CF @BBL A1.json" }, { - "name": "Generic SBS", - "sub_path": "filament/Generic SBS.json" + "name": "Generic SBS", + "sub_path": "filament/Generic SBS.json" }, { "name": "Bambu PLA-CF @BBL X1C 0.8 nozzle", @@ -1745,6 +1789,38 @@ "name": "Bambu TPU 95A HF @BBL A1", "sub_path": "filament/Bambu TPU 95A HF @BBL A1.json" }, + { + "name": "Generic TPU for AMS @BBL X1C", + "sub_path": "filament/Generic TPU for AMS @BBL X1C.json" + }, + { + "name": "Generic TPU for AMS @BBL P1P", + "sub_path": "filament/Generic TPU for AMS @BBL P1P.json" + }, + { + "name": "Generic TPU for AMS @BBL A1", + "sub_path": "filament/Generic TPU for AMS @BBL A1.json" + }, + { + "name": "Generic TPU for AMS @BBL A1M", + "sub_path": "filament/Generic TPU for AMS @BBL A1M.json" + }, + { + "name": "Bambu TPU for AMS @BBL X1C", + "sub_path": "filament/Bambu TPU for AMS @BBL X1C.json" + }, + { + "name": "Bambu TPU for AMS @BBL P1P", + "sub_path": "filament/Bambu TPU for AMS @BBL P1P.json" + }, + { + "name": "Bambu TPU for AMS @BBL A1", + "sub_path": "filament/Bambu TPU for AMS @BBL A1.json" + }, + { + "name": "Bambu TPU for AMS @BBL A1M", + "sub_path": "filament/Bambu TPU for AMS @BBL A1M.json" + }, { "name": "Bambu PETG Basic @BBL X1C", "sub_path": "filament/Bambu PETG Basic @BBL X1C.json" @@ -1945,6 +2021,50 @@ "name": "Generic PCTG @BBL A1M", "sub_path": "filament/Generic PCTG @BBL A1M.json" }, + { + "name": "Fiberon PETG-ESD @BBL X1C", + "sub_path": "filament/Fiberon PETG-ESD @BBL X1C.json" + }, + { + "name": "Fiberon PETG-rCF @BBL X1C", + "sub_path": "filament/Fiberon PETG-rCF @BBL X1C.json" + }, + { + "name": "Fiberon PET-CF @BBL X1C", + "sub_path": "filament/Fiberon PET-CF @BBL X1C.json" + }, + { + "name": "Generic PETG HF @BBL X1C", + "sub_path": "filament/Generic PETG HF @BBL X1C.json" + }, + { + "name": "Generic PETG HF @BBL X1C 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL X1C 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL P1P", + "sub_path": "filament/Generic PETG HF @BBL P1P.json" + }, + { + "name": "Generic PETG HF @BBL P1P 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL P1P 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL A1", + "sub_path": "filament/Generic PETG HF @BBL A1.json" + }, + { + "name": "Generic PETG HF @BBL A1 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL A1 0.2 nozzle.json" + }, + { + "name": "Generic PETG HF @BBL A1M", + "sub_path": "filament/Generic PETG HF @BBL A1M.json" + }, + { + "name": "Generic PETG HF @BBL A1M 0.2 nozzle", + "sub_path": "filament/Generic PETG HF @BBL A1M 0.2 nozzle.json" + }, { "name": "Bambu ABS @BBL X1C", "sub_path": "filament/Bambu ABS @BBL X1C.json" @@ -2173,6 +2293,30 @@ "name": "Bambu ASA-Aero @BBL A1", "sub_path": "filament/Bambu ASA-Aero @BBL A1.json" }, + { + "name": "Bambu ASA-CF @BBL X1C", + "sub_path": "filament/Bambu ASA-CF @BBL X1C.json" + }, + { + "name": "Bambu ASA-CF @BBL X1C 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json" + }, + { + "name": "Bambu ASA-CF @BBL P1P", + "sub_path": "filament/Bambu ASA-CF @BBL P1P.json" + }, + { + "name": "Bambu ASA-CF @BBL P1P 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json" + }, + { + "name": "Bambu ASA-CF @BBL A1", + "sub_path": "filament/Bambu ASA-CF @BBL A1.json" + }, + { + "name": "Bambu ASA-CF @BBL A1 0.6 nozzle", + "sub_path": "filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json" + }, { "name": "Generic PVA @0.2 nozzle", "sub_path": "filament/Generic PVA @0.2 nozzle.json" @@ -2321,6 +2465,22 @@ "name": "Bambu PA6-GF @BBL A1", "sub_path": "filament/Bambu PA6-GF @BBL A1.json" }, + { + "name": "Fiberon PA6-CF @BBL X1C", + "sub_path": "filament/Fiberon PA6-CF @BBL X1C.json" + }, + { + "name": "Fiberon PA6-GF @BBL X1C", + "sub_path": "filament/Fiberon PA6-GF @BBL X1C.json" + }, + { + "name": "Fiberon PA12-CF @BBL X1C", + "sub_path": "filament/Fiberon PA12-CF @BBL X1C.json" + }, + { + "name": "Fiberon PA612-CF @BBL X1C", + "sub_path": "filament/Fiberon PA612-CF @BBL X1C.json" + }, { "name": "Generic HIPS @BBL X1C", "sub_path": "filament/Generic HIPS @BBL X1C.json" diff --git a/resources/profiles/BBL/cli_config.json b/resources/profiles/BBL/cli_config.json index 2bd68647c91..7c75b738d83 100644 --- a/resources/profiles/BBL/cli_config.json +++ b/resources/profiles/BBL/cli_config.json @@ -75,80 +75,100 @@ "Bambu Lab X1": { "downward_check": { "Bambu Lab X1 0.2 nozzle": [ - "Bambu Lab A1 mini 0.2 nozzle" + "Bambu Lab A1 mini 0.2 nozzle", + "Bambu Lab A1 0.2 nozzle" ], "Bambu Lab X1 0.4 nozzle": [ - "Bambu Lab A1 mini 0.4 nozzle" + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 0.4 nozzle" ], "Bambu Lab X1 0.6 nozzle": [ - "Bambu Lab A1 mini 0.6 nozzle" + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 0.6 nozzle" ], "Bambu Lab X1 0.8 nozzle": [ - "Bambu Lab A1 mini 0.8 nozzle" + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 0.8 nozzle" ] } }, "Bambu Lab X1 Carbon": { "downward_check": { "Bambu Lab X1 Carbon 0.2 nozzle": [ - "Bambu Lab A1 mini 0.2 nozzle" + "Bambu Lab A1 mini 0.2 nozzle", + "Bambu Lab A1 0.2 nozzle" ], "Bambu Lab X1 Carbon 0.4 nozzle": [ - "Bambu Lab A1 mini 0.4 nozzle" + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 0.4 nozzle" ], "Bambu Lab X1 Carbon 0.6 nozzle": [ - "Bambu Lab A1 mini 0.6 nozzle" + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 0.6 nozzle" ], "Bambu Lab X1 Carbon 0.8 nozzle": [ - "Bambu Lab A1 mini 0.8 nozzle" + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 0.8 nozzle" ] } }, "Bambu Lab X1E": { "downward_check": { "Bambu Lab X1E 0.2 nozzle": [ - "Bambu Lab A1 mini 0.2 nozzle" + "Bambu Lab A1 mini 0.2 nozzle", + "Bambu Lab A1 0.2 nozzle" ], "Bambu Lab X1E 0.4 nozzle": [ - "Bambu Lab A1 mini 0.4 nozzle" + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 0.4 nozzle" ], "Bambu Lab X1E 0.6 nozzle": [ - "Bambu Lab A1 mini 0.6 nozzle" + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 0.6 nozzle" ], "Bambu Lab X1E 0.8 nozzle": [ - "Bambu Lab A1 mini 0.8 nozzle" + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 0.8 nozzle" ] } }, "Bambu Lab P1P": { "downward_check": { "Bambu Lab P1P 0.2 nozzle": [ - "Bambu Lab A1 mini 0.2 nozzle" + "Bambu Lab A1 mini 0.2 nozzle", + "Bambu Lab A1 0.2 nozzle" ], "Bambu Lab P1P 0.4 nozzle": [ - "Bambu Lab A1 mini 0.4 nozzle" + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 0.4 nozzle" ], "Bambu Lab P1P 0.6 nozzle": [ - "Bambu Lab A1 mini 0.6 nozzle" + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 0.6 nozzle" ], "Bambu Lab P1P 0.8 nozzle": [ - "Bambu Lab A1 mini 0.8 nozzle" + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 0.8 nozzle" ] } }, "Bambu Lab P1S": { "downward_check": { "Bambu Lab P1S 0.2 nozzle": [ - "Bambu Lab A1 mini 0.2 nozzle" + "Bambu Lab A1 mini 0.2 nozzle", + "Bambu Lab A1 0.2 nozzle" ], "Bambu Lab P1S 0.4 nozzle": [ - "Bambu Lab A1 mini 0.4 nozzle" + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 0.4 nozzle" ], "Bambu Lab P1S 0.6 nozzle": [ - "Bambu Lab A1 mini 0.6 nozzle" + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 0.6 nozzle" ], "Bambu Lab P1S 0.8 nozzle": [ - "Bambu Lab A1 mini 0.8 nozzle" + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 0.8 nozzle" ] } } diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL A1 0.2 nozzle.json index 413d8ce7958..3282b698e73 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL A1 0.2 nozzle.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL A1.json b/resources/profiles/BBL/filament/Bambu ABS @BBL A1.json index f85009c07bb..6d34d11f229 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL A1.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json index f21efe7f800..ae2331a947d 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.2 nozzle.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "slow_down_layer_time": [ "12" ], diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json index 6145a910b61..fa8c04cf9fb 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C 0.8 nozzle.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "260" ], diff --git a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json index 88ad1a408f9..cef6534784d 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ABS @BBL X1C.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "slow_down_layer_time": [ "12" ], diff --git a/resources/profiles/BBL/filament/Bambu ABS @base.json b/resources/profiles/BBL/filament/Bambu ABS @base.json index a185e7cf80c..f5d8680b063 100644 --- a/resources/profiles/BBL/filament/Bambu ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS @base.json @@ -5,12 +5,13 @@ "from": "system", "filament_id": "GFB00", "instantiation": "false", - "filament_flow_ratio": [ - "0.95" - ], + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ "24.99" ], + "filament_flow_ratio": [ + "0.95" + ], "filament_vendor": [ "Bambu Lab" ] diff --git a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL A1.json b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL A1.json index ff5f41cae78..aee4e52a016 100644 --- a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL A1.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSB50_02", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab A1 0.4 nozzle", "Bambu Lab A1 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL P1P.json b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL P1P.json index 37acd12522d..8a51aedb7e7 100644 --- a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL P1P.json +++ b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL P1P.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSB50_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle", "Bambu Lab P1P 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL X1C.json index 89916b17b3a..173f63007d7 100644 --- a/resources/profiles/BBL/filament/Bambu ABS-GF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ABS-GF @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSB50_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ABS-GF @base.json b/resources/profiles/BBL/filament/Bambu ABS-GF @base.json index 777cf850801..a67aa45465b 100644 --- a/resources/profiles/BBL/filament/Bambu ABS-GF @base.json +++ b/resources/profiles/BBL/filament/Bambu ABS-GF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFB50", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "12" ], @@ -17,15 +18,15 @@ "filament_density": [ "1.08" ], - "filament_type": [ - "ABS-GF" - ], "filament_flow_ratio": [ "0.95" ], "filament_max_volumetric_speed": [ "12" ], + "filament_type": [ + "ABS-GF" + ], "filament_vendor": [ "Bambu Lab" ], diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.2 nozzle.json index e67d7d90e00..52d1c45a6b0 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.2 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSB01_10", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab A1 0.2 nozzle" ] diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.4 nozzle.json index 9c92e7653b7..97017c4fa3a 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.4 nozzle.json @@ -8,6 +8,12 @@ "chamber_temperatures": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" ] diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.6 nozzle.json index 916abbfbe39..8aa9d6f38b8 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL A1 0.6 nozzle.json @@ -8,6 +8,12 @@ "fan_min_speed": [ "25" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab A1 0.6 nozzle", "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json index 90b80ac8dc4..954cdc9ff2c 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.2 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSB01_03", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 0.2 nozzle" ] diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json index 5e6a6788c3f..144df72be9e 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1 0.6 nozzle.json @@ -8,6 +8,12 @@ "fan_min_speed": [ "25" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_speed": [ "0.4" ], diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json index 1253bff71f7..5264f9d6de2 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.2 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSB01_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab P1S 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json index b3c53e095c3..6a8a891f257 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C 0.4 nozzle.json @@ -8,6 +8,12 @@ "chamber_temperatures": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab P1S 0.4 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json index 4c9c47f1a3c..db44041c73a 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu ASA @BBL X1C.json @@ -8,6 +8,12 @@ "fan_min_speed": [ "25" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 Carbon 0.8 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu ASA @base.json b/resources/profiles/BBL/filament/Bambu ASA @base.json index 7ae30500d90..6850e938f65 100644 --- a/resources/profiles/BBL/filament/Bambu ASA @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFB01", "instantiation": "false", + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ "35" ], diff --git a/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json b/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json index f469aeebc67..4cfe7de309a 100644 --- a/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu ASA-Aero @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFB02", "instantiation": "false", + "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: ASA Aero Printing Guide.", "fan_cooling_layer_time": [ "30" ], @@ -26,9 +27,6 @@ "filament_max_volumetric_speed": [ "12" ], - "filament_retract_before_wipe": [ - "nil" - ], "filament_retraction_length": [ "1.5" ], @@ -58,5 +56,8 @@ ], "slow_down_layer_time": [ "5" + ], + "filament_scarf_seam_type": [ + "none" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json new file mode 100644 index 00000000000..442f2b6230e --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL A1 0.6 nozzle", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_05", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1.json new file mode 100644 index 00000000000..70c164accf2 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL A1.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL A1", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_04", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json new file mode 100644 index 00000000000..0d038bb515e --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL P1P 0.6 nozzle", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_03", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P.json new file mode 100644 index 00000000000..7c19ff98065 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL P1P.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL P1P", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_02", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json new file mode 100644 index 00000000000..44c110b6353 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C 0.6 nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL X1C 0.6 nozzle", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_01", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C.json new file mode 100644 index 00000000000..a65d70b6f39 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @BBL X1C.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @BBL X1C", + "inherits": "Bambu ASA-CF @base", + "from": "system", + "setting_id": "GFSB51_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu ASA-CF @base.json b/resources/profiles/BBL/filament/Bambu ASA-CF @base.json new file mode 100644 index 00000000000..b280a21659b --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu ASA-CF @base.json @@ -0,0 +1,44 @@ +{ + "type": "filament", + "name": "Bambu ASA-CF @base", + "inherits": "fdm_filament_asa", + "from": "system", + "filament_id": "GFB51", + "instantiation": "false", + "fan_max_speed": [ + "25" + ], + "filament_cost": [ + "36.99" + ], + "filament_density": [ + "1.02" + ], + "filament_flow_ratio": [ + "0.9" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_type": [ + "ASA-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "nozzle_temperature": [ + "275" + ], + "nozzle_temperature_initial_layer": [ + "275" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "slow_down_layer_time": [ + "12" + ], + "temperature_vitrification": [ + "108" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PA-CF @base.json b/resources/profiles/BBL/filament/Bambu PA-CF @base.json index 2788ee1bdce..f278ca567b9 100644 --- a/resources/profiles/BBL/filament/Bambu PA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA-CF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFN03", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_cost": [ "84.99" ], diff --git a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json index 190e61093e9..7df1f06e4ac 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA6-CF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFN05", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/Bambu PA6-GF @base.json b/resources/profiles/BBL/filament/Bambu PA6-GF @base.json index 24a6fa15b06..e2246b0cab5 100644 --- a/resources/profiles/BBL/filament/Bambu PA6-GF @base.json +++ b/resources/profiles/BBL/filament/Bambu PA6-GF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFN08", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json index 0f5dcfb745c..17ef39575f0 100644 --- a/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PAHT-CF @base.json @@ -5,20 +5,18 @@ "from": "system", "filament_id": "GFN04", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", + "fan_cooling_layer_time": [ + "5" + ], "fan_max_speed": [ "30" ], "fan_min_speed": [ "10" ], - "fan_cooling_layer_time": [ - "5" - ], - "full_fan_speed_layer": [ - "2" - ], - "filament_vendor": [ - "Bambu Lab" + "filament_cost": [ + "94.99" ], "filament_density": [ "1.06" @@ -26,17 +24,20 @@ "filament_flow_ratio": [ "0.96" ], - "overhang_fan_threshold": [ - "0%" + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "full_fan_speed_layer": [ + "2" ], "overhang_fan_speed": [ "40" ], - "filament_type": [ - "PA-CF" - ], - "filament_cost": [ - "94.99" + "overhang_fan_threshold": [ + "0%" ], "temperature_vitrification": [ "180" diff --git a/resources/profiles/BBL/filament/Bambu PET-CF @base.json b/resources/profiles/BBL/filament/Bambu PET-CF @base.json index 9cfc605c328..fd0c71af6c8 100644 --- a/resources/profiles/BBL/filament/Bambu PET-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PET-CF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFT01", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "cool_plate_temp": [ "0" ], @@ -68,6 +69,12 @@ "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], "slow_down_layer_time": [ "2" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json index 6553473d1bd..97d7a7cd1a1 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.2 nozzle.json @@ -8,6 +8,12 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "nil" + ], + "filament_retraction_distances_when_cut": [ + "nil" + ], "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" ] diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json index 837e060fe54..58b35890a91 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.4 nozzle.json @@ -8,9 +8,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "nil" + ], "filament_max_volumetric_speed": [ "9" ], + "filament_retraction_distances_when_cut": [ + "nil" + ], "compatible_printers": [ "Bambu Lab A1 mini 0.4 nozzle" ] diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json index e3d66863c0e..73cc2e96331 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @BBL A1M 0.8 nozzle.json @@ -8,9 +8,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "nil" + ], "filament_max_volumetric_speed": [ "12" ], + "filament_retraction_distances_when_cut": [ + "nil" + ], "compatible_printers": [ "Bambu Lab A1 mini 0.6 nozzle", "Bambu Lab A1 mini 0.8 nozzle" diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json index b187cac1922..801cab4aae4 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFG00", "instantiation": "false", + "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json index 7335bcaffe0..23c674f620c 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.2 nozzle.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "1" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json index a4db6b85bd2..6c52c255e8a 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1 0.8 nozzle.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json index 2a9f8a264c1..5b972849de5 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json index 17106138f6c..bad6f79415b 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.2 nozzle.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "1" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json index 2d3ea73731f..df1eab07543 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M 0.8 nozzle.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json index f6d16e8d475..d3ebff57e84 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL A1M.json @@ -17,9 +17,15 @@ "filament_flow_ratio": [ "0.94" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "240" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json index b0d8d373744..72f3a64f357 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.2 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "1" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json index 44193c3c433..145f98d1ff6 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C 0.8 nozzle.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json index c02f8e26099..d31822c6d73 100644 --- a/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PETG HF @BBL X1C.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json index fc6643dfc6c..d79bd3b578a 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.2" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json index fd65b8f27af..4cf239e1447 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSG01_05", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.3" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json index 5785e725ca1..864884dad1e 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.2" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json index fc1271284b0..ad1111fdaa4 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSG01_02", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.3" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json index 39a4bfb3f8c..eafc44f3b5e 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.2" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json index 386ef5eab80..830dab5dea0 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSG01_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "filament_retraction_length": [ "0.3" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json index 174052635cd..f2569d5f399 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFG01", "instantiation": "false", + "description": "To get better transparent or translucent results with the corresponding filament, please refer to this wiki: Printing tips for transparent PETG.", "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json index 47f54f981dd..4ad1c374178 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.4 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "9" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json index ad7db31ffbd..edf85380a3e 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1 0.8 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "9" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json index 6c7b97ce7b6..7852889288c 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL A1M.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSG50_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "9" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "textured_plate_temp_initial_layer": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json index d0ea93c38c7..41f1bc333e0 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C 0.4 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "11.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json index 8d0e7ce354e..42e23219c51 100644 --- a/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PETG-CF @BBL X1C.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "11.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json index 95b26c27968..484a3972702 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Aero @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Aero @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFA11", "instantiation": "false", + "description": "This filament is only used to print models with a low density usually, and some special parameters are required. To get better printing quality, please refer to this wiki: Instructions for printing RC model with foaming PLA (PLA Aero).", "fan_min_speed": [ "30" ], @@ -26,12 +27,21 @@ "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_high": [ - "260" + "filament_scarf_seam_type": [ + "none" ], "nozzle_temperature_range_low": [ "210" ], + "nozzle_temperature_range_high": [ + "260" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json index df3036b34ce..b26ee48d43a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1.json index 4e3b6cc6dc4..fbb03698126 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json index 49b44fa936f..f54a464e62f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json index 17858789174..23e418b7e03 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @BBL A1M.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json index b975be47dcc..45a5b357901 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Basic @base.json @@ -20,6 +20,19 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], + "filament_scarf_height":[ + "10%" + ], + "filament_scarf_gap":[ + "0%" + ], + "filament_scarf_length":[ + "10" + ], + "compatible_printers": [], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json index ae4fbb27473..bf0d7a524f0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1.json index d3cb1dfc851..094a7c31ac0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json index b70fded8638..3f59d61d76d 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M.json index c73ef89d00d..1330b7ac74c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL A1M.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json index b9e85c1d8c7..636518b50e0 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P 0.2 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P.json index e461af9d498..2ebe013d9a3 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL P1P.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json index 7bb8e8f94b8..0d387ff78c1 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.2 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA15_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json index 43457c192d2..bae2c44be99 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C 0.8 nozzle.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA15_02", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C.json index d95ffa6a6d9..1a8e719f09a 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Galaxy @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA15_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json index 5eae9e1e1ac..8763639cdd3 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1 0.2 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "1" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1.json index b4949148dda..4fa331e1b97 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL A1.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL P1P.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL P1P.json index e162316fd30..198c2bf29ab 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL P1P.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL P1P.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1.json index 6f91b4f7faa..c4a3ca7738e 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA12_08", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1C.json index 5d0c2705a77..abcc9763a40 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA12_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1E.json b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1E.json index 30c339132c9..1bfc1ca5cda 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1E.json +++ b/resources/profiles/BBL/filament/Bambu PLA Glow @BBL X1E.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA12_04", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1E 0.4 nozzle", "Bambu Lab X1E 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1.json index c4eaac7e47e..1452831345c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json index ebb955bdf04..c53cde99c5c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL A1M.json @@ -14,6 +14,12 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json index 20b0a0969e4..a56c168547c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA07_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json index 29592f9b4fd..0b9a41dce6f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Marble @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSA07_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json index 55bcf1e9b0f..a66550291ac 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1.json index 7b877ed611c..95e6db95224 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json index eb0f819f533..477f128d1c7 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M 0.2 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json index 65403831cbd..8b8d54f422b 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL A1M.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json index c0b3df55551..b223ece7144 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA05", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json index 04b51f81041..25a2125b1cb 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.2 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA01_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json index fc0962cd0e2..a4f376d9bba 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C 0.8 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA01_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json index 0987393ec65..d1f1969c26d 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @BBL X1C.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab X1 Carbon 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json index 36156e0af82..1550142d46c 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Matte @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Matte @base.json @@ -17,6 +17,18 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], + "filament_scarf_height":[ + "5%" + ], + "filament_scarf_gap":[ + "0%" + ], + "filament_scarf_length":[ + "10" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json index 77c81e4fb04..986613c9aea 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Metal @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Metal @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFA02", "instantiation": "false", + "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ "29.99" ], @@ -17,6 +18,9 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json index 642f9396109..e9e66c97eb9 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Silk @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFA05", "instantiation": "false", + "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_cost": [ "29.99" ], @@ -17,12 +18,24 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_height": [ + "5%" + ], + "filament_scarf_gap": [ + "0%" + ], "nozzle_temperature": [ "230" ], "nozzle_temperature_initial_layer": [ "230" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json index 24168d6f136..6268e9d97e2 100644 --- a/resources/profiles/BBL/filament/Bambu PLA Tough @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA Tough @base.json @@ -17,6 +17,9 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >55)||(bed_temperature_initial_layer[current_extruder] >55)}M106 P3 S200\n{elsif(bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S150\n{elsif(bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S50\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" ] diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json index 48fdfde08fd..7b86bec58f7 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1 0.8 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1.json index f69ce39db1e..f27abc0df2f 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "15" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json index d22d4de449b..af10570429d 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M 0.8 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json index b976f74eb7d..06b3e679e27 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL A1M.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "15" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json index 204237570ba..d7a632e1bdf 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C 0.8 nozzle.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA50_02", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "230" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json index 2e4aa2e93ca..6ec63c6a401 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @BBL X1C.json @@ -5,9 +5,15 @@ "from": "system", "setting_id": "GFSA50_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "15" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "nozzle_temperature": [ "230" ], diff --git a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json index 3f356ae8655..ac88cc70983 100644 --- a/resources/profiles/BBL/filament/Bambu PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PLA-CF @base.json @@ -29,15 +29,21 @@ "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_high": [ - "250" - ], "nozzle_temperature_range_low": [ "210" ], + "nozzle_temperature_range_high": [ + "250" + ], "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "50" + ], + "supertack_plate_temp_initial_layer": [ + "50" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu PPS-CF @base.json b/resources/profiles/BBL/filament/Bambu PPS-CF @base.json index 391e986bf72..cef49fe98d2 100644 --- a/resources/profiles/BBL/filament/Bambu PPS-CF @base.json +++ b/resources/profiles/BBL/filament/Bambu PPS-CF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFT02", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ "30" ], @@ -23,9 +24,6 @@ "filament_vendor": [ "Bambu Lab" ], - "nozzle_temperature_range_high": [ - "350" - ], "nozzle_temperature_range_low": [ "310" ], diff --git a/resources/profiles/BBL/filament/Bambu PVA @base.json b/resources/profiles/BBL/filament/Bambu PVA @base.json index a236f83bd6e..f9396292cfa 100644 --- a/resources/profiles/BBL/filament/Bambu PVA @base.json +++ b/resources/profiles/BBL/filament/Bambu PVA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS04", "instantiation": "false", + "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_cost": [ "79.98" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json index 7af6db4c149..3166617d721 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PA PET @base.json @@ -5,11 +5,12 @@ "from": "system", "filament_id": "GFS03", "instantiation": "false", - "required_nozzle_HRC": [ - "3" + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", + "fan_cooling_layer_time": [ + "10" ], - "filament_vendor": [ - "Bambu Lab" + "filament_cost": [ + "34.99" ], "filament_density": [ "1.22" @@ -17,17 +18,17 @@ "filament_is_support": [ "1" ], - "nozzle_temperature_initial_layer": [ - "280" + "filament_vendor": [ + "Bambu Lab" ], "nozzle_temperature": [ "280" ], - "fan_cooling_layer_time": [ - "10" + "nozzle_temperature_initial_layer": [ + "280" ], - "filament_cost": [ - "34.99" + "required_nozzle_HRC": [ + "3" ], "slow_down_layer_time": [ "6" diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json index 75179145e6c..7868741daea 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS02", "instantiation": "false", + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ "40" ], @@ -23,6 +24,9 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json index 52f12d83edf..db0f6ce2f10 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1 0.2 nozzle.json @@ -11,9 +11,15 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "0.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1.json index cc081f215f7..e0cb4210a78 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1.json @@ -11,6 +11,12 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json index e896919e4ea..90920ebe8cb 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M 0.2 nozzle.json @@ -11,9 +11,15 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "0.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M.json index ad2bc888ac9..fcbd1bb645e 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL A1M.json @@ -11,6 +11,12 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json index 0352dc891a5..5f71f87c3fa 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P 0.2 nozzle.json @@ -11,9 +11,15 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "0.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P.json index 1f47df1ec9c..3e3db66e03b 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL P1P.json @@ -11,6 +11,12 @@ "eng_plate_temp_initial_layer": [ "65" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json index fa58a048a76..793ddf06ee6 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C 0.2 nozzle.json @@ -11,9 +11,15 @@ "eng_plate_temp_initial_layer": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "0.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab P1S 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C.json index 8672833ea78..3f210fc5792 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @BBL X1C.json @@ -11,6 +11,12 @@ "eng_plate_temp_initial_layer": [ "60" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1S 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json index 4e628358628..6eae3684bf6 100644 --- a/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json +++ b/resources/profiles/BBL/filament/Bambu Support For PLA-PETG @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS05", "instantiation": "false", + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_cooling_layer_time": [ "80" ], @@ -26,6 +27,9 @@ "filament_max_volumetric_speed": [ "6" ], + "filament_scarf_seam_type": [ + "none" + ], "filament_vendor": [ "Bambu Lab" ], @@ -44,6 +48,9 @@ "slow_down_layer_time": [ "8" ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "textured_plate_temp": [ "60" ], diff --git a/resources/profiles/BBL/filament/Bambu Support G @base.json b/resources/profiles/BBL/filament/Bambu Support G @base.json index 1d72fe95803..7a60603cae0 100644 --- a/resources/profiles/BBL/filament/Bambu Support G @base.json +++ b/resources/profiles/BBL/filament/Bambu Support G @base.json @@ -5,11 +5,12 @@ "from": "system", "filament_id": "GFS01", "instantiation": "false", - "required_nozzle_HRC": [ - "3" + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", + "fan_cooling_layer_time": [ + "10" ], - "filament_vendor": [ - "Bambu Lab" + "filament_cost": [ + "34.99" ], "filament_density": [ "1.22" @@ -17,17 +18,20 @@ "filament_is_support": [ "1" ], - "nozzle_temperature_initial_layer": [ - "280" + "filament_vendor": [ + "Bambu Lab" ], "nozzle_temperature": [ "280" ], - "fan_cooling_layer_time": [ - "10" + "nozzle_temperature_initial_layer": [ + "280" ], - "filament_cost": [ - "34.99" + "required_nozzle_HRC": [ + "3" + ], + "filament_scarf_seam_type": [ + "none" ], "slow_down_layer_time": [ "6" diff --git a/resources/profiles/BBL/filament/Bambu Support W @base.json b/resources/profiles/BBL/filament/Bambu Support W @base.json index 63f7acebc8d..2b40b44e085 100644 --- a/resources/profiles/BBL/filament/Bambu Support W @base.json +++ b/resources/profiles/BBL/filament/Bambu Support W @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS00", "instantiation": "false", + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "cool_plate_temp": [ "40" ], @@ -23,6 +24,9 @@ "filament_vendor": [ "Bambu Lab" ], + "filament_scarf_seam_type": [ + "none" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json index f0841864961..52655bf9fb3 100644 --- a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL A1.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSS06_01", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab A1 0.4 nozzle", "Bambu Lab A1 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json index 5029095bca5..9ae445e96c4 100644 --- a/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @BBL X1C.json @@ -5,6 +5,12 @@ "from": "system", "setting_id": "GFSS06_00", "instantiation": "true", + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "compatible_printers": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab P1P 0.6 nozzle", diff --git a/resources/profiles/BBL/filament/Bambu Support for ABS @base.json b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json index 506ffa39acf..3bd74d4d960 100644 --- a/resources/profiles/BBL/filament/Bambu Support for ABS @base.json +++ b/resources/profiles/BBL/filament/Bambu Support for ABS @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS06", "instantiation": "false", + "description": "This is a non-water-soluble support filament, and usually it is only for the support structure and not for the model body. To get better printing quality, please refer to this wiki: Printing Tips for Support Filament and Support Function.", "fan_max_speed": [ "30" ], @@ -29,6 +30,9 @@ "slow_down_layer_time": [ "12" ], + "filament_scarf_seam_type": [ + "none" + ], "temperature_vitrification": [ "90" ] diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json index bc1e8393400..eb0555633a3 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A @base.json @@ -5,19 +5,20 @@ "from": "system", "filament_id": "GFU01", "instantiation": "false", - "filament_vendor": [ - "Bambu Lab" + "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", + "filament_cost": [ + "41.99" ], "filament_density": [ "1.22" ], - "nozzle_temperature_initial_layer": [ - "230" - ], - "filament_cost": [ - "41.99" + "filament_vendor": [ + "Bambu Lab" ], "nozzle_temperature": [ "230" + ], + "nozzle_temperature_initial_layer": [ + "230" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json index 0445791bfc6..6deab30b356 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFU00", "instantiation": "false", + "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_cost": [ "41.99" ], diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1.json new file mode 100644 index 00000000000..52ed49cee12 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Bambu TPU for AMS @BBL A1", + "inherits": "Bambu TPU for AMS @base", + "from": "system", + "setting_id": "GFSU02_02", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle", + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1M.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1M.json new file mode 100644 index 00000000000..bff83af130d --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Bambu TPU for AMS @BBL A1M", + "inherits": "Bambu TPU for AMS @base", + "from": "system", + "setting_id": "GFSU02_03", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL P1P.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL P1P.json new file mode 100644 index 00000000000..3c8c7dad73e --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL P1P.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Bambu TPU for AMS @BBL P1P", + "inherits": "Bambu TPU for AMS @base", + "from": "system", + "setting_id": "GFSU02_01", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL X1C.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL X1C.json new file mode 100644 index 00000000000..8c7dac662f8 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @BBL X1C.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Bambu TPU for AMS @BBL X1C", + "inherits": "Bambu TPU for AMS @base", + "from": "system", + "setting_id": "GFSU02_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.8 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json b/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json new file mode 100644 index 00000000000..09d42965065 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu TPU for AMS @base.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "name": "Bambu TPU for AMS @base", + "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "GFU02", + "instantiation": "false", + "description": "If you are to print a kind of soft TPU, please don't slice with this profile, and it is only for TPU that has high enough hardness (not less than 55D) and is compatible with the AMS. To get better printing quality, please refer to this wiki: TPU printing guide.", + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "38.99" + ], + "filament_density": [ + "1.26" + ], + "filament_flow_ratio": [ + "0.97" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_type": [ + "TPU-AMS" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_layer_time": [ + "10" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA12-CF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PA12-CF @BBL X1C.json new file mode 100644 index 00000000000..06bca8c5f92 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA12-CF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PA12-CF @BBL X1C", + "inherits": "Fiberon PA12-CF @base", + "from": "system", + "setting_id": "GFSL52_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA12-CF @base.json b/resources/profiles/BBL/filament/Fiberon PA12-CF @base.json new file mode 100644 index 00000000000..e2a5bf64755 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA12-CF @base.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Fiberon PA12-CF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFL52", + "instantiation": "false", + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "100" + ], + "filament_cost": [ + "99.99" + ], + "filament_density": [ + "1.06" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_type": [ + "PA-CF" + ], + "filament_vendor": [ + "Polymaker" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "overhang_fan_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "131" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA6-CF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PA6-CF @BBL X1C.json new file mode 100644 index 00000000000..d10be7532a2 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA6-CF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PA6-CF @BBL X1C", + "inherits": "Fiberon PA6-CF @base", + "from": "system", + "setting_id": "GFSL50_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA6-CF @base.json b/resources/profiles/BBL/filament/Fiberon PA6-CF @base.json new file mode 100644 index 00000000000..5027f220967 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA6-CF @base.json @@ -0,0 +1,68 @@ +{ + "type": "filament", + "name": "Fiberon PA6-CF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFL50", + "instantiation": "false", + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "100" + ], + "filament_cost": [ + "83.99" + ], + "filament_density": [ + "1.17" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "14" + ], + "filament_type": [ + "PA6-CF" + ], + "filament_vendor": [ + "Polymaker" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "215" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA6-GF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PA6-GF @BBL X1C.json new file mode 100644 index 00000000000..c38dfd17956 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA6-GF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PA6-GF @BBL X1C", + "inherits": "Fiberon PA6-GF @base", + "from": "system", + "setting_id": "GFSL51_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA6-GF @base.json b/resources/profiles/BBL/filament/Fiberon PA6-GF @base.json new file mode 100644 index 00000000000..9ab9237e7b2 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA6-GF @base.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Fiberon PA6-GF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFL51", + "instantiation": "false", + "eng_plate_temp": [ + "40" + ], + "eng_plate_temp_initial_layer": [ + "40" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_max_speed": [ + "100" + ], + "filament_cost": [ + "63.99" + ], + "filament_density": [ + "1.2" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PA-GF" + ], + "filament_vendor": [ + "Polymaker" + ], + "full_fan_speed_layer": [ + "2" + ], + "hot_plate_temp": [ + "40" + ], + "hot_plate_temp_initial_layer": [ + "40" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_low": [ + "280" + ], + "overhang_fan_speed": [ + "100" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "temperature_vitrification": [ + "191" + ], + "textured_plate_temp": [ + "40" + ], + "textured_plate_temp_initial_layer": [ + "40" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA612-CF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PA612-CF @BBL X1C.json new file mode 100644 index 00000000000..d91d220575d --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA612-CF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PA612-CF @BBL X1C", + "inherits": "Fiberon PA612-CF @base", + "from": "system", + "setting_id": "GFSL53_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PA612-CF @base.json b/resources/profiles/BBL/filament/Fiberon PA612-CF @base.json new file mode 100644 index 00000000000..031f9737be5 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PA612-CF @base.json @@ -0,0 +1,41 @@ +{ + "type": "filament", + "name": "Fiberon PA612-CF @base", + "inherits": "fdm_filament_pa", + "from": "system", + "filament_id": "GFL53", + "instantiation": "false", + "fan_cooling_layer_time": [ + "5" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "94.99" + ], + "filament_density": [ + "1.06" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "full_fan_speed_layer": [ + "2" + ], + "overhang_fan_speed": [ + "40" + ], + "overhang_fan_threshold": [ + "0%" + ], + "temperature_vitrification": [ + "180" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PET-CF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PET-CF @BBL X1C.json new file mode 100644 index 00000000000..789dddb752d --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PET-CF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PET-CF @BBL X1C", + "inherits": "Fiberon PET-CF @base", + "from": "system", + "setting_id": "GFSL54_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PET-CF @base.json b/resources/profiles/BBL/filament/Fiberon PET-CF @base.json new file mode 100644 index 00000000000..8a6520f1f46 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PET-CF @base.json @@ -0,0 +1,89 @@ +{ + "type": "filament", + "name": "Fiberon PET-CF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFL54", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "242" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "89.99" + ], + "filament_density": [ + "1.34" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PET-CF" + ], + "filament_vendor": [ + "Polymaker" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "300" + ], + "nozzle_temperature_initial_layer": [ + "300" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "required_nozzle_HRC": [ + "40" + ], + "supertack_plate_temp": [ + "80" + ], + "supertack_plate_temp_initial_layer": [ + "80" + ], + "slow_down_layer_time": [ + "5" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "147" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PETG-ESD @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PETG-ESD @BBL X1C.json new file mode 100644 index 00000000000..0cce20991fc --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PETG-ESD @BBL X1C.json @@ -0,0 +1,19 @@ +{ + "type": "filament", + "name": "Fiberon PETG-ESD @BBL X1C", + "inherits": "Fiberon PETG-ESD @base", + "from": "system", + "setting_id": "GFSL06_00", + "instantiation": "true", + "filament_cost": [ + "29.99" + ], + "compatible_printers": [ + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PETG-ESD @base.json b/resources/profiles/BBL/filament/Fiberon PETG-ESD @base.json new file mode 100644 index 00000000000..9f861a724ed --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PETG-ESD @base.json @@ -0,0 +1,77 @@ +{ + "type": "filament", + "name": "Fiberon PETG-ESD @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFL06", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "60" + ], + "eng_plate_temp_initial_layer": [ + "60" + ], + "fan_cooling_layer_time": [ + "15" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "1.24" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_vendor": [ + "Polymaker" + ], + "hot_plate_temp": [ + "60" + ], + "hot_plate_temp_initial_layer": [ + "60" + ], + "nozzle_temperature": [ + "290" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "nozzle_temperature_range_low": [ + "250" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "76" + ], + "textured_plate_temp": [ + "60" + ], + "textured_plate_temp_initial_layer": [ + "60" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PETG-rCF @BBL X1C.json b/resources/profiles/BBL/filament/Fiberon PETG-rCF @BBL X1C.json new file mode 100644 index 00000000000..790d2565506 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PETG-rCF @BBL X1C.json @@ -0,0 +1,16 @@ +{ + "type": "filament", + "name": "Fiberon PETG-rCF @BBL X1C", + "inherits": "Fiberon PETG-rCF @base", + "from": "system", + "setting_id": "GFSL55_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Fiberon PETG-rCF @base.json b/resources/profiles/BBL/filament/Fiberon PETG-rCF @base.json new file mode 100644 index 00000000000..aa367e2e2b8 --- /dev/null +++ b/resources/profiles/BBL/filament/Fiberon PETG-rCF @base.json @@ -0,0 +1,80 @@ +{ + "type": "filament", + "name": "Fiberon PETG-rCF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFL55", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "12" + ], + "fan_min_speed": [ + "0" + ], + "filament_cost": [ + "39.99" + ], + "filament_density": [ + "1.3" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PETG-CF" + ], + "filament_vendor": [ + "Polymaker" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "270" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "required_nozzle_HRC": [ + "40" + ], + "slow_down_layer_time": [ + "2" + ], + "slow_down_min_speed": [ + "20" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic ABS @base.json b/resources/profiles/BBL/filament/Generic ABS @base.json index e41b289fbcf..80a90af9936 100644 --- a/resources/profiles/BBL/filament/Generic ABS @base.json +++ b/resources/profiles/BBL/filament/Generic ABS @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFB99", "instantiation": "false", + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Generic ASA @base.json b/resources/profiles/BBL/filament/Generic ASA @base.json index 9f80b36f121..148f69f3d06 100644 --- a/resources/profiles/BBL/filament/Generic ASA @base.json +++ b/resources/profiles/BBL/filament/Generic ASA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFB98", "instantiation": "false", + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Generic EVA @base.json b/resources/profiles/BBL/filament/Generic EVA @base.json index 6a24cfdba57..7c225320349 100644 --- a/resources/profiles/BBL/filament/Generic EVA @base.json +++ b/resources/profiles/BBL/filament/Generic EVA @base.json @@ -38,9 +38,6 @@ "filament_max_volumetric_speed": [ "12" ], - "filament_type": [ - "EVA" - ], "hot_plate_temp": [ "55" ], diff --git a/resources/profiles/BBL/filament/Generic PA-CF.json b/resources/profiles/BBL/filament/Generic PA-CF.json index 5ce9881f823..e229358d4cc 100644 --- a/resources/profiles/BBL/filament/Generic PA-CF.json +++ b/resources/profiles/BBL/filament/Generic PA-CF.json @@ -6,6 +6,7 @@ "filament_id": "GFN98", "setting_id": "GFSN99", "instantiation": "true", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/Generic PA.json b/resources/profiles/BBL/filament/Generic PA.json index 6a4f7bf4e2a..d7dd99831f4 100644 --- a/resources/profiles/BBL/filament/Generic PA.json +++ b/resources/profiles/BBL/filament/Generic PA.json @@ -6,6 +6,7 @@ "filament_id": "GFN99", "setting_id": "GFSN98", "instantiation": "true", + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "chamber_temperatures": [ "60" ], diff --git a/resources/profiles/BBL/filament/Generic PC @base.json b/resources/profiles/BBL/filament/Generic PC @base.json index 6c56650bafb..c2a9975e371 100644 --- a/resources/profiles/BBL/filament/Generic PC @base.json +++ b/resources/profiles/BBL/filament/Generic PC @base.json @@ -5,10 +5,11 @@ "from": "system", "filament_id": "GFC99", "instantiation": "false", - "filament_max_volumetric_speed": [ - "16" - ], + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_flow_ratio": [ "0.94" + ], + "filament_max_volumetric_speed": [ + "16" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json new file mode 100644 index 00000000000..099dfcc30a9 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_05", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json new file mode 100644 index 00000000000..d8700688126 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_04", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle", + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json new file mode 100644 index 00000000000..0b499781aea --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M 0.2 nozzle.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1M 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_07", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json new file mode 100644 index 00000000000..b42117eec90 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL A1M.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL A1M", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_06", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json new file mode 100644 index 00000000000..ff6131e5156 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P 0.2 nozzle.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL P1P 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_03", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json new file mode 100644 index 00000000000..00587abea4f --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL P1P.json @@ -0,0 +1,13 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL P1P", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_02", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json new file mode 100644 index 00000000000..963be7b885e --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C 0.2 nozzle.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL X1C 0.2 nozzle", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_01", + "instantiation": "true", + "filament_max_volumetric_speed": [ + "1" + ], + "compatible_printers": [ + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json new file mode 100644 index 00000000000..cdb1a1196c4 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @BBL X1C.json @@ -0,0 +1,22 @@ +{ + "type": "filament", + "name": "Generic PETG HF @BBL X1C", + "inherits": "Generic PETG HF @base", + "from": "system", + "setting_id": "GFSG96_00", + "instantiation": "true", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG HF @base.json b/resources/profiles/BBL/filament/Generic PETG HF @base.json new file mode 100644 index 00000000000..085538fe911 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic PETG HF @base.json @@ -0,0 +1,71 @@ +{ + "type": "filament", + "name": "Generic PETG HF @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG96", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "40" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.28" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "220" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "25" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic PETG-CF @base.json b/resources/profiles/BBL/filament/Generic PETG-CF @base.json index 4e12feba51e..56909012160 100644 --- a/resources/profiles/BBL/filament/Generic PETG-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PETG-CF @base.json @@ -38,9 +38,6 @@ "filament_type": [ "PETG-CF" ], - "filament_vendor": [ - "Generic" - ], "hot_plate_temp": [ "70" ], @@ -65,9 +62,6 @@ "slow_down_layer_time": [ "6" ], - "temperature_vitrification": [ - "70" - ], "textured_plate_temp": [ "70" ], diff --git a/resources/profiles/BBL/filament/Generic PLA @base.json b/resources/profiles/BBL/filament/Generic PLA @base.json index 904cef4daea..bf37d0917e2 100644 --- a/resources/profiles/BBL/filament/Generic PLA @base.json +++ b/resources/profiles/BBL/filament/Generic PLA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFL99", "instantiation": "false", + "description": "The generic presets are conservatively tuned for compatibility with a wider range of filaments. For higher printing quality and speeds, please use Bambu filaments with Bambu presets.", "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/BBL/filament/Generic PLA Silk @base.json b/resources/profiles/BBL/filament/Generic PLA Silk @base.json index 60ac1d46fa1..03f0c0edcd0 100644 --- a/resources/profiles/BBL/filament/Generic PLA Silk @base.json +++ b/resources/profiles/BBL/filament/Generic PLA Silk @base.json @@ -5,9 +5,16 @@ "from": "system", "filament_id": "GFL96", "instantiation": "false", + "description": "To make the prints get higher gloss, please dry the filament before use, and set the outer wall speed to be 40 to 60 mm/s when slicing.", "filament_flow_ratio": [ "0.98" ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], "slow_down_layer_time": [ "8" ], diff --git a/resources/profiles/BBL/filament/Generic PLA-CF @base.json b/resources/profiles/BBL/filament/Generic PLA-CF @base.json index 597bdd6e23b..8bb1564a4ce 100644 --- a/resources/profiles/BBL/filament/Generic PLA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PLA-CF @base.json @@ -23,6 +23,12 @@ "required_nozzle_HRC": [ "40" ], + "supertack_plate_temp": [ + "50" + ], + "supertack_plate_temp_initial_layer": [ + "50" + ], "slow_down_layer_time": [ "7" ], diff --git a/resources/profiles/BBL/filament/Generic PPA-CF @base.json b/resources/profiles/BBL/filament/Generic PPA-CF @base.json index 1e642929b29..8c6a9c9b8dc 100644 --- a/resources/profiles/BBL/filament/Generic PPA-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PPA-CF @base.json @@ -5,12 +5,10 @@ "from": "system", "filament_id": "GFN97", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "filament_max_volumetric_speed": [ "6" ], - "filament_type": [ - "PPA-CF" - ], "filament_vendor": [ "Generic" ] diff --git a/resources/profiles/BBL/filament/Generic PPS-CF @base.json b/resources/profiles/BBL/filament/Generic PPS-CF @base.json index 887d276e2da..5fc5d6e4078 100644 --- a/resources/profiles/BBL/filament/Generic PPS-CF @base.json +++ b/resources/profiles/BBL/filament/Generic PPS-CF @base.json @@ -5,11 +5,15 @@ "from": "system", "filament_id": "GFT98", "instantiation": "false", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_max_speed": [ "30" ], + "filament_cost": [ + "240" + ], "filament_density": [ - "1.3" + "1.26" ], "filament_max_volumetric_speed": [ "3" @@ -17,8 +21,8 @@ "filament_type": [ "PPS-CF" ], - "nozzle_temperature_range_high": [ - "350" + "nozzle_temperature_range_low": [ + "310" ], "required_nozzle_HRC": [ "40" diff --git a/resources/profiles/BBL/filament/Generic PVA @base.json b/resources/profiles/BBL/filament/Generic PVA @base.json index c29671ea3c4..c394eaeb975 100644 --- a/resources/profiles/BBL/filament/Generic PVA @base.json +++ b/resources/profiles/BBL/filament/Generic PVA @base.json @@ -5,6 +5,7 @@ "from": "system", "filament_id": "GFS99", "instantiation": "false", + "description": "This is a water-soluble support filament, and usually it is only for the support structure and not for the model body. Printing this filament is of many requirements, and to get better printing quality, please refer to this wiki: PVA Printing Guide.", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1.json b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1.json new file mode 100644 index 00000000000..b73d35817b8 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "name": "Generic TPU for AMS @BBL A1", + "inherits": "Generic TPU for AMS @base", + "from": "system", + "setting_id": "GFSU98_02", + "instantiation": "true", + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_layer_time": [ + "10" + ], + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle", + "Bambu Lab A1 0.6 nozzle", + "Bambu Lab A1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1M.json b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1M.json new file mode 100644 index 00000000000..bcb504c0385 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL A1M.json @@ -0,0 +1,28 @@ +{ + "type": "filament", + "name": "Generic TPU for AMS @BBL A1M", + "inherits": "Generic TPU for AMS @base", + "from": "system", + "setting_id": "GFSU98_03", + "instantiation": "true", + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_layer_time": [ + "10" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.8 nozzle", + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @BBL P1P.json b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL P1P.json new file mode 100644 index 00000000000..fafe5667f43 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL P1P.json @@ -0,0 +1,31 @@ +{ + "type": "filament", + "name": "Generic TPU for AMS @BBL P1P", + "inherits": "Generic TPU for AMS @base", + "from": "system", + "setting_id": "GFSU98_01", + "instantiation": "true", + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_layer_time": [ + "10" + ], + "compatible_printers": [ + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @BBL X1C.json b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL X1C.json new file mode 100644 index 00000000000..b2e6d311977 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @BBL X1C.json @@ -0,0 +1,34 @@ +{ + "type": "filament", + "name": "Generic TPU for AMS @BBL X1C", + "inherits": "Generic TPU for AMS @base", + "from": "system", + "setting_id": "GFSU98_00", + "instantiation": "true", + "fan_cooling_layer_time": [ + "40" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "slow_down_layer_time": [ + "10" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1E 0.4 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU for AMS @base.json b/resources/profiles/BBL/filament/Generic TPU for AMS @base.json new file mode 100644 index 00000000000..c214ba1c272 --- /dev/null +++ b/resources/profiles/BBL/filament/Generic TPU for AMS @base.json @@ -0,0 +1,30 @@ +{ + "type": "filament", + "name": "Generic TPU for AMS @base", + "inherits": "fdm_filament_tpu", + "from": "system", + "filament_id": "GFU98", + "instantiation": "false", + "description": "If you are to print a kind of soft TPU, please don't slice with this profile, and it is only for TPU that has high enough hardness (not less than 55D) and is compatible with the AMS. To get better printing quality, please refer to this wiki: TPU printing guide.", + "filament_cost": [ + "41.99" + ], + "filament_density": [ + "1.26" + ], + "filament_max_volumetric_speed": [ + "10.5" + ], + "filament_retraction_length": [ + "0.8" + ], + "filament_type": [ + "TPU-AMS" + ], + "nozzle_temperature": [ + "230" + ], + "nozzle_temperature_initial_layer": [ + "230" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Generic TPU.json b/resources/profiles/BBL/filament/Generic TPU.json index 273e9175708..f8dc0320b27 100644 --- a/resources/profiles/BBL/filament/Generic TPU.json +++ b/resources/profiles/BBL/filament/Generic TPU.json @@ -6,6 +6,7 @@ "filament_id": "GFU99", "setting_id": "GFSR99", "instantiation": "true", + "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json index f99a91cfb05..b80e46e1517 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P 0.2 nozzle.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "100" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json index 63d6bb3f21a..c27df74dbbb 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu ABS @BBL P1P.json @@ -8,9 +8,15 @@ "fan_max_speed": [ "20" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "16" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "100" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json index ccbfad93a50..f98e7469af8 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P 0.4 nozzle.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "11.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json index a0a6388bcc8..e18e63964a5 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PETG-CF @BBL P1P.json @@ -14,9 +14,15 @@ "fan_min_speed": [ "5" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "11.5" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "overhang_fan_speed": [ "100" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json index 01a5fab4a1e..ad0784193ba 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Marble @BBL P1P.json @@ -11,6 +11,12 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json index 469caee5cd2..c67fe1d5f81 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P 0.2 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "2" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json index fcfc07fd191..7a1fb8c2121 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA Matte @BBL P1P.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "22" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json index 500dacbbf33..af07fa05bac 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P 0.8 nozzle.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "18" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json index 640bb4af9a9..72bb17aa43a 100644 --- a/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Bambu PLA-CF @BBL P1P.json @@ -11,9 +11,15 @@ "fan_min_speed": [ "50" ], + "filament_long_retractions_when_cut": [ + "1" + ], "filament_max_volumetric_speed": [ "15" ], + "filament_retraction_distances_when_cut": [ + "18" + ], "hot_plate_temp": [ "65" ], diff --git a/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json index b09cbf6aee5..bfaee00f09a 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PA @BBL P1P.json @@ -6,6 +6,7 @@ "filament_id": "GFN99", "setting_id": "GFSN98_10", "instantiation": "true", + "description": "When printing this filament, there's a risk of warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "60" ], diff --git a/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json index 1e17c278ce2..92d4992a83f 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic PA-CF @BBL P1P.json @@ -6,6 +6,7 @@ "filament_id": "GFN98", "setting_id": "GFSN99_10", "instantiation": "true", + "description": "When printing this filament, there's a risk of nozzle clogging, oozing, warping and low layer adhesion strength. To get better results, please refer to this wiki: Printing Tips for High Temp / Engineering materials.", "fan_cooling_layer_time": [ "5" ], diff --git a/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json b/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json index effdb2d7f3c..11323400684 100644 --- a/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json +++ b/resources/profiles/BBL/filament/P1P/Generic TPU @BBL P1P.json @@ -6,6 +6,7 @@ "filament_id": "GFU99", "setting_id": "GFSR99_10", "instantiation": "true", + "description": "This filament is too soft and not compatible with the AMS. Printing it is of many requirements, and to get better printing quality, please refer to this wiki: TPU printing guide.", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_abs.json b/resources/profiles/BBL/filament/fdm_filament_abs.json index 74eb8715180..c01bfb694c3 100644 --- a/resources/profiles/BBL/filament/fdm_filament_abs.json +++ b/resources/profiles/BBL/filament/fdm_filament_abs.json @@ -5,6 +5,12 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ + "1" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ "0" ], "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/fdm_filament_asa.json b/resources/profiles/BBL/filament/fdm_filament_asa.json index a0da767a75c..ce1126adf55 100644 --- a/resources/profiles/BBL/filament/fdm_filament_asa.json +++ b/resources/profiles/BBL/filament/fdm_filament_asa.json @@ -5,6 +5,12 @@ "from": "system", "instantiation": "false", "activate_air_filtration": [ + "1" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ "0" ], "cool_plate_temp": [ diff --git a/resources/profiles/BBL/filament/fdm_filament_bvoh.json b/resources/profiles/BBL/filament/fdm_filament_bvoh.json index 2b481e35d88..10b86375bb8 100644 --- a/resources/profiles/BBL/filament/fdm_filament_bvoh.json +++ b/resources/profiles/BBL/filament/fdm_filament_bvoh.json @@ -67,6 +67,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_min_speed": [ "20" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_common.json b/resources/profiles/BBL/filament/fdm_filament_common.json index 6ec95db4a80..1e7a813c4b4 100644 --- a/resources/profiles/BBL/filament/fdm_filament_common.json +++ b/resources/profiles/BBL/filament/fdm_filament_common.json @@ -114,6 +114,21 @@ "full_fan_speed_layer": [ "0" ], + "filament_scarf_seam_type": [ + "none" + ], + "filament_scarf_height": [ + "10%" + ], + "filament_scarf_gap": [ + "0%" + ], + "filament_scarf_length": [ + "10" + ], + "filament_shrink": [ + "100%" + ], "hot_plate_temp": [ "60" ], @@ -138,6 +153,12 @@ "required_nozzle_HRC": [ "3" ], + "supertack_plate_temp": [ + "45" + ], + "supertack_plate_temp_initial_layer": [ + "45" + ], "slow_down_for_layer_cooling": [ "1" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_eva.json b/resources/profiles/BBL/filament/fdm_filament_eva.json index 1b2efe2999b..5eaf47fd3c5 100644 --- a/resources/profiles/BBL/filament/fdm_filament_eva.json +++ b/resources/profiles/BBL/filament/fdm_filament_eva.json @@ -6,5 +6,11 @@ "instantiation": "false", "filament_type": [ "EVA" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_hips.json b/resources/profiles/BBL/filament/fdm_filament_hips.json index 4d1b09d37af..c7c0ab7d2f7 100644 --- a/resources/profiles/BBL/filament/fdm_filament_hips.json +++ b/resources/profiles/BBL/filament/fdm_filament_hips.json @@ -16,6 +16,12 @@ "textured_plate_temp": [ "90" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp_initial_layer": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pa.json b/resources/profiles/BBL/filament/fdm_filament_pa.json index 1cd78ec77f6..5f0a1ca7fc2 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pa.json +++ b/resources/profiles/BBL/filament/fdm_filament_pa.json @@ -7,6 +7,12 @@ "activate_air_filtration": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pc.json b/resources/profiles/BBL/filament/fdm_filament_pc.json index 03bc9e5663f..313655fc8a3 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pc.json +++ b/resources/profiles/BBL/filament/fdm_filament_pc.json @@ -4,6 +4,12 @@ "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pctg.json b/resources/profiles/BBL/filament/fdm_filament_pctg.json index 1b38376293e..5c93c7d0d4a 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pctg.json +++ b/resources/profiles/BBL/filament/fdm_filament_pctg.json @@ -1,64 +1,70 @@ { - "type": "filament", - "name": "fdm_filament_pctg", - "inherits": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "eng_plate_temp": [ - "0" - ], - "eng_plate_temp_initial_layer": [ - "0" - ], - "fan_cooling_layer_time": [ - "20" - ], - "fan_min_speed": [ - "20" - ], - "filament_cost": [ - "30" - ], - "filament_density": [ - "1.27" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PCTG" - ], - "hot_plate_temp": [ - "80" - ], - "hot_plate_temp_initial_layer": [ - "80" - ], - "nozzle_temperature": [ - "255" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "temperature_vitrification": [ - "70" - ], - "textured_plate_temp": [ - "80" - ], - "textured_plate_temp_initial_layer": [ - "80" - ], - "filament_start_gcode": [ - "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" - ] + "type": "filament", + "name": "fdm_filament_pctg", + "inherits": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "eng_plate_temp": [ + "0" + ], + "eng_plate_temp_initial_layer": [ + "0" + ], + "fan_cooling_layer_time": [ + "20" + ], + "fan_min_speed": [ + "20" + ], + "filament_cost": [ + "30" + ], + "filament_density": [ + "1.27" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PCTG" + ], + "hot_plate_temp": [ + "80" + ], + "hot_plate_temp_initial_layer": [ + "80" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], + "temperature_vitrification": [ + "70" + ], + "textured_plate_temp": [ + "80" + ], + "textured_plate_temp_initial_layer": [ + "80" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S180\n{elsif (bed_temperature[current_extruder] >50)||(bed_temperature_initial_layer[current_extruder] >50)}M106 P3 S255\n{endif};Prevent PLA from jamming\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] } \ No newline at end of file diff --git a/resources/profiles/BBL/filament/fdm_filament_pe.json b/resources/profiles/BBL/filament/fdm_filament_pe.json index 8ce20df68a2..0808a35524c 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pe.json +++ b/resources/profiles/BBL/filament/fdm_filament_pe.json @@ -64,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pet.json b/resources/profiles/BBL/filament/fdm_filament_pet.json index 4a5f6085cae..ef13f4f8947 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pet.json +++ b/resources/profiles/BBL/filament/fdm_filament_pet.json @@ -49,6 +49,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "70" + ], + "supertack_plate_temp_initial_layer": [ + "70" + ], "temperature_vitrification": [ "70" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pha.json b/resources/profiles/BBL/filament/fdm_filament_pha.json index 82519f1b2e4..19d143f5a7c 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pha.json +++ b/resources/profiles/BBL/filament/fdm_filament_pha.json @@ -64,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pla.json b/resources/profiles/BBL/filament/fdm_filament_pla.json index a93b981098f..9321b9ecad6 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pla.json +++ b/resources/profiles/BBL/filament/fdm_filament_pla.json @@ -4,62 +4,56 @@ "inherits": "fdm_filament_common", "from": "system", "instantiation": "false", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_density": [ - "1.24" + "additional_cooling_fan_speed": [ + "70" ], - "filament_cost": [ - "20" + "close_fan_the_first_x_layers": [ + "1" ], "cool_plate_temp": [ "35" ], - "eng_plate_temp": [ - "0" - ], - "hot_plate_temp": [ - "55" - ], - "textured_plate_temp": [ - "55" - ], "cool_plate_temp_initial_layer": [ "35" ], + "eng_plate_temp": [ + "0" + ], "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer": [ - "55" + "fan_cooling_layer_time": [ + "100" ], - "textured_plate_temp_initial_layer": [ - "55" + "fan_min_speed": [ + "100" ], - "nozzle_temperature_initial_layer": [ - "220" + "filament_cost": [ + "20" ], - "reduce_fan_stop_start_freq": [ - "1" + "filament_density": [ + "1.24" ], - "fan_min_speed": [ - "100" + "filament_max_volumetric_speed": [ + "12" ], - "overhang_fan_threshold": [ - "50%" + "filament_scarf_seam_type": [ + "none" ], - "close_fan_the_first_x_layers": [ - "1" + "filament_scarf_gap": [ + "15%" + ], + "hot_plate_temp": [ + "55" + ], + "hot_plate_temp_initial_layer": [ + "55" ], "nozzle_temperature": [ "220" ], - "temperature_vitrification": [ - "45" + "nozzle_temperature_initial_layer": [ + "220" ], "nozzle_temperature_range_low": [ "190" @@ -67,14 +61,26 @@ "nozzle_temperature_range_high": [ "240" ], - "slow_down_min_speed": [ - "20" + "overhang_fan_threshold": [ + "50%" + ], + "reduce_fan_stop_start_freq": [ + "1" ], "slow_down_layer_time": [ "4" ], - "additional_cooling_fan_speed": [ - "70" + "slow_down_min_speed": [ + "20" + ], + "temperature_vitrification": [ + "45" + ], + "textured_plate_temp": [ + "55" + ], + "textured_plate_temp_initial_layer": [ + "55" ], "filament_start_gcode": [ "; filament start gcode\n{if (bed_temperature[current_extruder] >45)||(bed_temperature_initial_layer[current_extruder] >45)}M106 P3 S255\n{elsif(bed_temperature[current_extruder] >35)||(bed_temperature_initial_layer[current_extruder] >35)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" diff --git a/resources/profiles/BBL/filament/fdm_filament_pp.json b/resources/profiles/BBL/filament/fdm_filament_pp.json index 83a42782507..66927c186a9 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pp.json +++ b/resources/profiles/BBL/filament/fdm_filament_pp.json @@ -64,6 +64,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_ppa.json b/resources/profiles/BBL/filament/fdm_filament_ppa.json index 23b082b05ca..c45e713f340 100644 --- a/resources/profiles/BBL/filament/fdm_filament_ppa.json +++ b/resources/profiles/BBL/filament/fdm_filament_ppa.json @@ -7,6 +7,12 @@ "activate_air_filtration": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pps.json b/resources/profiles/BBL/filament/fdm_filament_pps.json index a3f104b6f3a..b8d366193eb 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pps.json +++ b/resources/profiles/BBL/filament/fdm_filament_pps.json @@ -7,6 +7,12 @@ "chamber_temperatures": [ "60" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp": [ "0" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_pva.json b/resources/profiles/BBL/filament/fdm_filament_pva.json index 7d0bdf1b4a7..2b00903a609 100644 --- a/resources/profiles/BBL/filament/fdm_filament_pva.json +++ b/resources/profiles/BBL/filament/fdm_filament_pva.json @@ -70,6 +70,12 @@ "reduce_fan_stop_start_freq": [ "1" ], + "supertack_plate_temp": [ + "35" + ], + "supertack_plate_temp_initial_layer": [ + "35" + ], "slow_down_layer_time": [ "4" ], diff --git a/resources/profiles/BBL/filament/fdm_filament_tpu.json b/resources/profiles/BBL/filament/fdm_filament_tpu.json index 8ec0a4fec3d..13a305e762e 100644 --- a/resources/profiles/BBL/filament/fdm_filament_tpu.json +++ b/resources/profiles/BBL/filament/fdm_filament_tpu.json @@ -10,6 +10,12 @@ "close_fan_the_first_x_layers": [ "1" ], + "supertack_plate_temp": [ + "0" + ], + "supertack_plate_temp_initial_layer": [ + "0" + ], "cool_plate_temp": [ "30" ], diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json index b198ff4dda6..a897bd8aaae 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json @@ -16,10 +16,11 @@ "Bambu PLA Basic @BBL A1" ], "default_print_profile": "0.20mm Standard @BBL A1", + "enable_long_retraction_when_cut": "2", "extruder_clearance_height_to_lid": "256", "extruder_clearance_height_to_rod": "25", "extruder_clearance_max_radius": "73", - "extruder_clearance_radius": "73", + "extruder_clearance_dist_to_rod": "56.5", "head_wrap_detect_zone": [ "226x224", "256x224", diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json index 2608b6b731f..5319a77f854 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json @@ -17,10 +17,11 @@ "Bambu PLA Basic @BBL A1M" ], "default_print_profile": "0.20mm Standard @BBL A1M", + "enable_long_retraction_when_cut": "2", "extruder_clearance_height_to_lid": "180", "extruder_clearance_height_to_rod": "25", "extruder_clearance_max_radius": "73", - "extruder_clearance_radius": "73", + "extruder_clearance_dist_to_rod": "56.5", "head_wrap_detect_zone": [ "156x152", "180x152", diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json index 8b9d063dbc5..5cee189af55 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S 0.4 nozzle.json @@ -29,7 +29,6 @@ "nozzle_height": "4.2", "nozzle_type": "stainless_steel", "scan_first_layer": "0", - "support_air_filtration": "1", "upward_compatible_machine": [ "Bambu Lab P1P 0.4 nozzle", "Bambu Lab X1 0.4 nozzle", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json index 9c1127eec43..2fa72d13f96 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.2 nozzle.json @@ -30,5 +30,5 @@ "Bambu Lab X1E 0.2 nozzle", "Bambu Lab A1 0.2 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20241023 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index a70b7c8f11d..90b3f201472 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -30,7 +30,6 @@ "nozzle_height": "4.2", "nozzle_type": "stainless_steel", "scan_first_layer": "1", - "support_air_filtration": "1", "upward_compatible_machine": [ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1P 0.4 nozzle", @@ -38,7 +37,7 @@ "Bambu Lab X1E 0.4 nozzle", "Bambu Lab A1 0.4 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n", + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240919 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json index ec5a3b1ea9c..5d5d0ea81a7 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.6 nozzle.json @@ -34,5 +34,5 @@ "Bambu Lab X1E 0.6 nozzle", "Bambu Lab A1 0.6 nozzle" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20240528 =====================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20241023 =====================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json index fd1aa6bf82e..e9002fed0c7 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.8 nozzle.json @@ -34,5 +34,5 @@ "Bambu Lab X1E 0.8 nozzle", "Bambu Lab A1 0.8 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20241023 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json index a0b54160a5c..fc3fbaced39 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.2 nozzle.json @@ -31,5 +31,5 @@ "Bambu Lab X1E 0.2 nozzle", "Bambu Lab A1 0.2 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20241023 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n\t{if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.160\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.080\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.080 K0.160\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.08 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.08}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json index 6577b3950ad..70baeeacec3 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.4 nozzle.json @@ -28,7 +28,6 @@ "machine_unload_filament_time": "28", "nozzle_height": "4.2", "scan_first_layer": "1", - "support_air_filtration": "1", "upward_compatible_machine": [ "Bambu Lab P1S 0.4 nozzle", "Bambu Lab P1P 0.4 nozzle", @@ -36,7 +35,7 @@ "Bambu Lab X1E 0.4 nozzle", "Bambu Lab A1 0.4 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4", + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240919 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", "machine_end_gcode": ";===== date: 20240528 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos\nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A49 B20 L100 C44 D20 M100 E41 F20 N100\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nM620.11 S0\n{endif}\nM400\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\n{if long_retractions_when_cut[previous_extruder]}\nM620.11 S1 I[previous_extruder] E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM628 S1\nG92 E0\nG1 E{retraction_distances_when_cut[previous_extruder]} F[old_filament_e_feedrate]\nM400\nM629 S1\n{else}\nM620.11 S0\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json index 2dffc6f94c6..02326f033f3 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.6 nozzle.json @@ -33,5 +33,5 @@ "Bambu Lab X1E 0.6 nozzle", "Bambu Lab A1 0.6 nozzle" ], - "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20240528 =====================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 =========================\n;===== date: 20241023 =====================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E25 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y15 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E1.166\nG0 X231 E1.166 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.333\n G0 F1200.0 X226 Y15 Z0.2 E0.495\n G0 F1200.0 X226 Y8 Z0.2 E0.691\n G0 F1200.0 X216 Y8 Z0.2 E0.988\n G0 F1200.0 X216 Y1.5 Z0.2 E0.642\n\n G0 X48.0 E20.56 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.56 F1200.0\n G0 X35.0 Y6.0 E1.75 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E16.9 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.030\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.015\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.9) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E23.9 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.015 K0.030\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.25000 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.015 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.015}\n M623\n\n G1 X140.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.56250 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json index 4e22e6bc784..2ccd165cb6e 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon 0.8 nozzle.json @@ -33,5 +33,5 @@ "Bambu Lab X1E 0.8 nozzle", "Bambu Lab A1 0.8 nozzle" ], - "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20240528 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n" + "machine_start_gcode": ";===== machine: X1 ====================\n;===== date: 20241023 ==================\n;===== start printer sound ================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A46 B10 L100 C43 D10 M70 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A43 B10 L100 C0 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A41 B10 L100 C0 D10 M100 E41 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E44 F10 N100\nM1006 A49 B10 L100 C0 D10 M100 E49 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A48 B10 L100 C44 D10 M60 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M90 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N100\nM1006 A46 B10 L100 C43 D10 M60 E39 F10 N100\nM1006 W\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nM290 X40 Y40 Z2.6666666\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S250 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y0.5 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X129 E15 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\nG0 X240 E15\nG0 Y11 E1.364 F{outer_wall_volumetric_speed/(0.3*1.0)/ 4 * 60}\nG0 X239.5\nG0 E0.3\nG0 Y1.5 E1.300\nG0 X231 E1.160 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n G0 F1200.0 X231 Y15 Z0.2 E1.482\n G0 F1200.0 X226 Y15 Z0.2 E0.550\n G0 F1200.0 X226 Y8 Z0.2 E0.768\n G0 F1200.0 X216 Y8 Z0.2 E1.098\n G0 F1200.0 X216 Y1.5 Z0.2 E0.714\n\n G0 X48.0 E25.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E1.70 F1200.0\n G0 X35.0 Y6.0 E1.90 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X110.000 E9.35441 F4800\n G0 X185.000 E9.35441 F4800\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.020\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.010\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X129 E14 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G0 X18 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.010 K0.020\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E2.4945 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X70.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X75.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X80.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X85.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X90.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X95.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X100.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X105.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X110.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X115.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X120.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X125.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X130.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X135.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.01 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14) *0.01}\n M623\n\n G1 X140.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X145.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X150.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X155.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X160.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X165.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X170.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X175.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X180.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X185.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X190.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X195.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X200.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X205.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X210.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X215.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n G1 X220.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) / 4 * 60}\n G1 X225.000 E0.6236 F{outer_wall_volumetric_speed/(0.3*1.0) * 60}\n M973 S4\n\nM623\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json index 3050ab385a0..4277bdf3dce 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1E 0.4 nozzle.json @@ -37,7 +37,7 @@ "Bambu Lab X1 Carbon 0.4 nozzle", "Bambu Lab A1 0.4 nozzle" ], - "machine_start_gcode": ";===== machine: X1E =========================\n;===== date: 20230815 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;==== if Chamber Cooling is necessary ==== \n\n{if (filament_type[initial_no_support_extruder]==\"PLA\") || (filament_type[initial_no_support_extruder]==\"PETG\") || (filament_type[initial_no_support_extruder]==\"TPU\") || (filament_type[initial_no_support_extruder]==\"PVA\") || (filament_type[initial_no_support_extruder]==\"PLA-CF\") || (filament_type[initial_no_support_extruder]==\"PETG-CF\")}\nM1002 gcode_claim_action : 29\nG28\nG90\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nG1 Z75\nM140 S0 ; stop heatbed from heating\nM106 P2 S255 ; open auxiliary fan for cooling\nM106 P3 S255 ; open chamber fan for cooling\nM191 S0 ; wait for chamber temp\nM106 P3 S0 ; reset chamber fan cmd\nM106 P2 S0; reset auxiliary fan cmd\n{endif}\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S290 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n\n;===== set chamber temperature ==========\n{if (overall_chamber_temperature >= 40)}\nM106 P2 S255 ; open big fan to help heating\nM141 S[overall_chamber_temperature] ; Let Chamber begin to heat\n{endif}\n\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;===== wait chamber temperature reaching the reference value =======\n{if (overall_chamber_temperature >= 40)}\nM191 S[overall_chamber_temperature] ; wait for chamber temp\nM106 P2 S0 ; reset chamber fan cmd\n{endif}\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X128.0 Y253.0 Z0.2 F24000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG0 X253 E6.4 F{outer_wall_volumetric_speed/(0.3*0.6) * 60}\nG0 Y128 E6.4\nG0 X252.5\nG0 Y252.5 E6.4\nG0 X128 E6.4\n\n", + "machine_start_gcode": ";===== machine: X1E =========================\n;===== date: 20240919 =====================\n;===== turn on the HB fan =================\nM104 S75 ;set extruder temp to turn on the HB fan and prevent filament oozing from nozzle\n;===== reset machine status =================\nG91\nM17 Z0.4 ; lower the z-motor current\nG380 S2 Z30 F300 ; G380 is same as G38; lower the hotbed , to prevent the nozzle is below the hotbed\nG380 S2 Z-25 F300 ;\nG1 Z5 F300;\nG90\nM17 X1.2 Y1.2 Z0.75 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 5\nM221 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\nG29.1 Z{+0.0} ; clear z-trim value first\nM204 S10000 ; init ACC set to 10m/s^2\n\n;==== if Chamber Cooling is necessary ==== \n\n{if (filament_type[initial_no_support_extruder]==\"PLA\") || (filament_type[initial_no_support_extruder]==\"PETG\") || (filament_type[initial_no_support_extruder]==\"TPU\") || (filament_type[initial_no_support_extruder]==\"PVA\") || (filament_type[initial_no_support_extruder]==\"PLA-CF\") || (filament_type[initial_no_support_extruder]==\"PETG-CF\")}\nM1002 gcode_claim_action : 29\nG28\nG90\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nG1 Z75\nM140 S0 ; stop heatbed from heating\nM106 P2 S255 ; open auxiliary fan for cooling\nM106 P3 S255 ; open chamber fan for cooling\nM191 S0 ; wait for chamber temp\nM106 P3 S0 ; reset chamber fan cmd\nM106 P2 S0; reset auxiliary fan cmd\n{endif}\n\n;===== heatbed preheat ====================\nM1002 gcode_claim_action : 2\nM140 S[bed_temperature_initial_layer_single] ;set bed temp\nM190 S[bed_temperature_initial_layer_single] ;wait for bed temp\n\n{if scan_first_layer}\n;=========register first layer scan=====\nM977 S1 P60\n{endif}\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {elsif (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\n;===== prepare print temperature and material ==========\nM104 S[nozzle_temperature_initial_layer] ;set extruder temp\nG91\nG0 Z10 F1200\nG90\nG28 X\nM975 S1 ; turn on\nG1 X60 F12000\nG1 Y245\nG1 Y265 F3000\nM620 M\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M109 S[nozzle_temperature_initial_layer]\n G1 X120 F12000\n\n G1 X20 Y50 F12000\n G1 Y-3\n T[initial_no_support_extruder]\n G1 X54 F12000\n G1 Y265\n M400\nM621 S[initial_no_support_extruder]A\nM620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n\nM412 S1 ; ===turn on filament runout detection===\n\nM109 S290 ;set nozzle to common flush temp\nM106 P1 S0\nG92 E0\nG1 E50 F200\nM400\nM104 S[nozzle_temperature_initial_layer]\nG92 E0\nG1 E50 F200\nM400\nM106 P1 S255\nG92 E0\nG1 E5 F300\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\nG92 E0\nG1 E-0.5 F300\n\nG1 X70 F9000\nG1 X76 F15000\nG1 X65 F15000\nG1 X76 F15000\nG1 X65 F15000; shake to put down garbage\nG1 X80 F6000\nG1 X95 F15000\nG1 X80 F15000\nG1 X165 F15000; wipe and shake\nM400\nM106 P1 S0\n\n;===== set chamber temperature ==========\n{if (overall_chamber_temperature >= 40)}\nM106 P2 S255 ; open big fan to help heating\nM141 S[overall_chamber_temperature] ; Let Chamber begin to heat\n{endif}\n\n;===== prepare print temperature and material end =====\n\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\nM106 S255\nG1 X65 Y230 F18000\nG1 Y264 F6000\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20}\nG1 X100 F18000 ; first wipe mouth\n\nG0 X135 Y253 F20000 ; move to exposed steel surface edge\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nG0 Z5 F20000\n\nG1 X60 Y265\nG92 E0\nG1 E-0.5 F300 ; retrack more\nG1 X100 F5000; second wipe mouth\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X100 F5000\nG1 X70 F15000\nG1 X90 F5000\nG0 X128 Y261 Z-1.5 F20000 ; move to exposed steel surface and stop the nozzle\nM104 S140 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM221 S; push soft endstop status\nM221 Z0 ;turn off Z axis endstop\nG0 Z0.5 F20000\nG0 X125 Y259.5 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y262.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y260.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.5\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 Z0.5 F20000\nG0 X125 Y261.0\nG0 Z-1.01\nG0 X131 F211\nG0 X124\nG0 X128\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\nG2 I0.5 J0 F300\n\nM109 S140 ; wait nozzle temp down to heatbed acceptable\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\nG2 I0.5 J0 F3000\n\nM221 R; pop softend status\nG1 Z10 F1200\nM400\nG1 Z10\nG1 F30000\nG1 X128 Y128\nG29.2 S1 ; turn on ABL\n;G28 ; home again after hard wipe mouth\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n;===== check scanner clarity ===========================\nG1 X128 Y128 F24000\nG28 Z P0\nM972 S5 P0\nG1 X230 Y15 F24000\n;===== check scanner clarity end =======================\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\nM622 J1\n\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\n\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n\n;=============turn on fans to prevent PLA jamming=================\n{if filament_type[initial_no_support_extruder]==\"PLA\"}\n {if (bed_temperature[initial_no_support_extruder] >45)||(bed_temperature_initial_layer[initial_no_support_extruder] >45)}\n M106 P3 S180\n {elsif (bed_temperature[initial_no_support_extruder] >50)||(bed_temperature_initial_layer[initial_no_support_extruder] >50)}\n M106 P3 S255\n {endif};Prevent PLA from jamming\n M142 P1 R35 S40\n{endif}\nM106 P2 S100 ; turn on big fan ,to cool down toolhead\n\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]} ; set extrude temp earlier, to reduce wait time\n\n;===== mech mode fast check============================\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q1 A7 B30 C80 H15 K0\nM974 Q1 S2 P0\n\nG1 X128 Y128 Z10 F20000\nM400 P200\nM970.3 Q0 A7 B30 C90 Q0 H15 K0\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X230 Y15\nG28 X ; re-home XY\n;===== mech mode fast check============================\n\n{if scan_first_layer}\n;start heatbed scan====================================\nM976 S2 P1\nG90\nG1 X128 Y128 F20000\nM976 S3 P2 ;register void printing detection\n{endif}\n\n;===== nozzle load line ===============================\nM975 S1\nG90\nM83\nT1000\nG1 X18.0 Y1.0 Z0.8 F18000;Move to start position\nM109 S{nozzle_temperature[initial_no_support_extruder]}\nG1 Z0.2\nG0 E2 F300\nG0 X240 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y11 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\nG0 X239.5\nG0 E0.2\nG0 Y1.5 E0.700\nG0 X231 E0.700 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.04} ; for Textured PEI Plate\n{endif}\n\n;===== draw extrinsic para cali paint =================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M1002 gcode_claim_action : 8\n\n T1000\n\n G0 F1200.0 X231 Y15 Z0.2 E0.741\n G0 F1200.0 X226 Y15 Z0.2 E0.275\n G0 F1200.0 X226 Y8 Z0.2 E0.384\n G0 F1200.0 X216 Y8 Z0.2 E0.549\n G0 F1200.0 X216 Y1.5 Z0.2 E0.357\n\n G0 X48.0 E12.0 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X48.0 Y14 E0.92 F1200.0\n G0 X35.0 Y6.0 E1.03 F1200.0\n\n ;=========== extruder cali extrusion ==================\n T1000\n M83\n {if default_acceleration > 0}\n {if outer_wall_acceleration > 0}\n M204 S[outer_wall_acceleration]\n {else}\n M204 S[default_acceleration]\n {endif}\n {endif}\n G0 X35.000 Y6.000 Z0.300 F30000 E0\n G1 F1500.000 E0.800\n M106 S0 ; turn off fan\n G0 X185.000 E9.35441 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X187 Z0\n G1 F1500.000 E-0.800\n G0 Z1\n G0 X180 Z0.3 F18000\n\n M900 L1000.0 M1.0\n M900 K0.040\n G0 X45.000 F30000\n G0 Y8.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.020\n G0 X45.000 F30000\n G0 Y10.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n M400\n\n G0 X45.000 F30000\n M900 K0.000\n G0 X45.000 F30000\n G0 Y12.000 F30000\n G1 F1500.000 E0.800\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 F1500.000 E-0.800\n G1 X183 Z0.15 F30000\n G1 X185\n G1 Z1.0\n G0 Y6.000 F30000 ; move y to clear pos\n G1 Z0.3\n\n G0 X45.000 F30000 ; move to start point\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\nM1002 judge_flag extrude_cali_flag\nM622 J0\n G0 X231 Y1.5 F30000\n G0 X18 E14.3 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nM623\n\nM104 S140\n\n\n;=========== laser and rgb calibration ===========\nM400\nM18 E\nM500 R\n\nM973 S3 P14\n\nG1 X120 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nT1100\nG1 X235.0 Y1.0 Z0.3 F18000.0;Move to first extrude line pos\nM400 P100\nM960 S1 P1\nM400 P100\nM973 S6 P0; use auto exposure for horizontal laser by xcam\nM960 S0 P0\n\nG1 X240.0 Y6.0 Z0.3 F18000.0;Move to vertical extrude line pos\nM960 S2 P1\nM400 P100\nM973 S6 P1; use auto exposure for vertical laser by xcam\nM960 S0 P0\n\n;=========== handeye calibration ======================\nM1002 judge_flag extrude_cali_flag\nM622 J1\n\n M973 S3 P1 ; camera start stream\n M400 P500\n M973 S1\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G0 F6000 X228.500 Y4.500 Z0.000\n M960 S0 P1\n M973 S1\n M400 P800\n M971 S6 P0\n M973 S2 P0\n M400 P500\n G0 Z0.000 F12000\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P200\n M971 S5 P1\n M973 S2 P1\n M400 P500\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P3\n G0 Z0.500 F12000\n M960 S0 P0\n M960 S2 P1\n G0 X228.5 Y11.0\n M400 P200\n M971 S5 P4\n M973 S2 P0\n M400 P500\n M960 S0 P0\n M960 S1 P1\n G0 X221.00 Y4.50\n M400 P500\n M971 S5 P2\n M963 S1\n M400 P1500\n M964\n T1100\n G1 Z3 F3000\n\n M400\n M500 ; save cali data\n\n M104 S{nozzle_temperature[initial_no_support_extruder]} ; rise nozzle temp now ,to reduce temp waiting time.\n\n T1100\n M400 P400\n M960 S0 P0\n G0 F30000.000 Y10.000 X65.000 Z0.000\n M400 P400\n M960 S1 P1\n M400 P50\n\n M969 S1 N3 A2000\n G0 F360.000 X181.000 Z0.000\n M980.3 A70.000 B{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60/4} C5.000 D{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*60} E5.000 F175.000 H1.000 I0.000 J0.020 K0.040\n M400 P100\n G0 F20000\n G0 Z1 ; rise nozzle up\n T1000 ; change to nozzle space\n G0 X45.000 Y4.000 F30000 ; move to test line pos\n M969 S0 ; turn off scanning\n M960 S0 P0\n\n\n G1 Z2 F20000\n T1000\n G0 X45.000 Y4.000 F30000 E0\n M109 S{nozzle_temperature[initial_no_support_extruder]}\n G0 Z0.3\n G1 F1500.000 E3.600\n G1 X65.000 E1.24726 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X70.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X75.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X80.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X85.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X90.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X95.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X100.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X105.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X110.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X115.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X120.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X125.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X130.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X135.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n\n ; see if extrude cali success, if not ,use default value\n M1002 judge_last_extrude_cali_success\n M622 J0\n M400\n M900 K0.02 M{outer_wall_volumetric_speed/(1.75*1.75/4*3.14)*0.02}\n M623\n\n G1 X140.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X145.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X150.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X155.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X160.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X165.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X170.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X175.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X180.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X185.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X190.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X195.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X200.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X205.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X210.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X215.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G1 X220.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5)/ 4 * 60}\n G1 X225.000 E0.31181 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n M973 S4\n\nM623\n\n;===== wait chamber temperature reaching the reference value =======\n{if (overall_chamber_temperature >= 40)}\nM191 S[overall_chamber_temperature] ; wait for chamber temp\nM106 P2 S0 ; reset chamber fan cmd\n{endif}\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM973 S4 ; turn off scanner\nM400 ; wait all motion done before implement the emprical L parameters\n;M900 L500.0 ; Empirical parameters\nM109 S[nozzle_temperature_initial_layer]\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n;===== purge line to wipe the nozzle ============================\nG1 E{-retraction_length[initial_no_support_extruder]} F1800\nG1 X18.0 Y2.5 Z0.8 F18000.0;Move to start position\nG1 E{retraction_length[initial_no_support_extruder]} F1800\nM109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG1 Z0.2\nG0 X239 E15 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 Y12 E0.7 F{outer_wall_volumetric_speed/(0.3*0.5)/4* 60}\n", "machine_end_gcode": ";===== date: 20240402 =====================\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X65 Y245 F12000 ; move to safe pos \nG1 Y265 F3000\n\nG1 X65 Y245 F12000\nG1 Y265 F3000\nM141 S0 ; turn off chamber \nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\nG1 X100 F12000 ; wipe\n; pull back filament to AMS\nM620 S255\nG1 X20 Y50 F12000\nG1 Y-3\nT255\nG1 X65 F12000\nG1 Y265\nG1 X100 F12000 ; wipe\nM621 S255\nM104 S0 ; turn off hotend\n\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\n M400 ; wait all motion done\n M991 S0 P-1 ;end smooth timelapse at safe pos\n M400 S3 ;wait for last picture to be taken\nM623; end of \"timelapse_record_flag\"\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 250}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z250 F600\n G1 Z248\n{endif}\nM400 P100\nM17 R ; restore z current\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\nM17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM960 S5 P0 ; turn off logo lamp\n\n", "change_filament_gcode": "M620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1 && (z_hop_types[current_extruder] == 0 || z_hop_types[current_extruder] == 3)}\nG17\nG2 Z{z_after_toolchange + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nG1 X70 F21000\nG1 Y245\nG1 Y265 F3000\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\nG1 X90 F3000\nG1 Y255 F4000\nG1 X100 F5000\nG1 X120 F15000\n{if long_retraction_when_cut && retraction_distance_when_cut > 2}\nG1 E-[retraction_distance_when_cut] F200\nM400\n{endif}\nG1 X20 Y50 F21000\nG1 Y-3\n{if toolchange_count == 2}\n; get travel path for change filament\nM620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\nM620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\nM620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\n{if next_extruder < 255}\nM400\n{if long_retraction_when_cut && retraction_distance_when_cut > 2}\nG1 E{retraction_distance_when_cut - 2} F200\nG1 E2 F20\nM400\n{endif}\nG92 E0\n{if flush_length_1 > 1}\nM83\n; FLUSH_START\n; always use highest temperature to flush\nM400\n{if filament_type[next_extruder] == \"PETG\"}\nM109 S260\n{elsif filament_type[next_extruder] == \"PVA\"}\nM109 S210\n{else}\nM109 S[nozzle_temperature_range_high]\n{endif}\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_4 > 1}\n\nG91\nG1 X3 F12000; move aside to extrude\nG90\nM83\n\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n; FLUSH_START\nM400\nM109 S[new_filament_temp]\nG1 E2 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\n; FLUSH_END\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM106 P1 S255\nM400 S3\n\nG1 X70 F5000\nG1 X90 F3000\nG1 Y255 F4000\nG1 X105 F5000\nG1 Y265 F5000\nG1 X70 F10000\nG1 X100 F5000\nG1 X70 F10000\nG1 X100 F5000\n\nG1 X70 F10000\nG1 X80 F15000\nG1 X60\nG1 X80\nG1 X60\nG1 X80 ; shake to put down garbage\nG1 X100 F5000\nG1 X165 F15000; wipe and shake\nG1 Y256 ; move Y to aside, prevent collision\nM400\nG1 Z{max_layer_z + 3.0} F3000\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/fdm_machine_common.json b/resources/profiles/BBL/machine/fdm_machine_common.json index 59c372c15fc..e0968ac56f5 100644 --- a/resources/profiles/BBL/machine/fdm_machine_common.json +++ b/resources/profiles/BBL/machine/fdm_machine_common.json @@ -79,9 +79,10 @@ "0.08" ], "printable_height": "250", - "extruder_clearance_radius": "65", "extruder_clearance_height_to_rod": "34", "extruder_clearance_height_to_lid": "140", + "extruder_clearance_max_radius": "65", + "extruder_clearance_dist_to_rod": "33", "printer_settings_id": "", "retraction_minimum_travel": [ "2" @@ -123,7 +124,5 @@ "upward_compatible_machine": [], "machine_start_gcode": "G0 Z20 F9000\nG92 E0; G1 E-10 F1200\nG28\nM970 Q1 A10 B10 C130 K0\nM970 Q1 A10 B131 C250 K1\nM974 Q1 S1 P0\nM970 Q0 A10 B10 C130 H20 K0\nM970 Q0 A10 B131 C250 K1\nM974 Q0 S1 P0\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nG29 ;Home\nG90;\nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position\nM109 S205;\nG1 X10.1 Y200.0 Z0.28 F1500.0 E15 ;Draw the first line\nG1 X10.4 Y200.0 Z0.28 F5000.0 ;Move to side a little\nG1 X10.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line\nG92 E0 ;Reset Extruder \nG1 X110 Y110 Z2.0 F3000 ;Move Z Axis up", "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end", - "change_filament_gcode": "", - "purge_in_prime_tower": "0", - "enable_filament_ramming": "0" + "change_filament_gcode": "" } \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json index 227fb04c57e..37a2a127773 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json @@ -8,7 +8,6 @@ "description": "It has a small layer height, and results in almost negligible layer lines and high printing quality. It is suitable for most general printing cases.", "elefant_foot_compensation": "0.15", "compatible_printers": [ - "Bambu Lab P1P 0.2 nozzle", - "Bambu Lab P1S 0.2 nozzle" + "Bambu Lab P1P 0.2 nozzle" ] } \ No newline at end of file diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json index 0857a48e0e3..364bcaa1ee4 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json @@ -12,6 +12,7 @@ "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", + "ironing_inset": "0.11", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json index 80670ce3b6b..52a1749075b 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json @@ -12,6 +12,7 @@ "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", + "ironing_inset": "0.11", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json index 9d54d14c185..020a3f9cc87 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json @@ -12,6 +12,7 @@ "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", + "ironing_inset": "0.11", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json index 9d35f2501e5..56aedfd03ed 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json @@ -12,6 +12,7 @@ "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", + "ironing_inset": "0.11", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json index 573669d4a5b..7c10c6c6730 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json @@ -12,6 +12,7 @@ "bridge_flow": "1", "line_width": "0.22", "outer_wall_line_width": "0.22", + "ironing_inset": "0.11", "initial_layer_line_width": "0.25", "sparse_infill_line_width": "0.22", "inner_wall_line_width": "0.22", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json index 0220f43a0d1..31c88af561e 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", + "ironing_inset": "0.31", "initial_layer_line_width": "0.62", "sparse_infill_line_width": "0.62", "inner_wall_line_width": "0.62", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json index 514e31759ac..ca621513421 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", + "ironing_inset": "0.31", "initial_layer_line_width": "0.62", "sparse_infill_line_width": "0.62", "inner_wall_line_width": "0.62", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json index 5fedaf53d63..88e1f680758 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", + "ironing_inset": "0.41", "initial_layer_line_width": "0.82", "sparse_infill_line_width": "0.82", "inner_wall_line_width": "0.82", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json index 26b39f37363..08476dbb784 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", + "ironing_inset": "0.31", "initial_layer_line_width": "0.62", "sparse_infill_line_width": "0.62", "inner_wall_line_width": "0.62", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json index 0f5913b2eb7..c1622d28f55 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", + "ironing_inset": "0.41", "initial_layer_line_width": "0.82", "sparse_infill_line_width": "0.82", "inner_wall_line_width": "0.82", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json index f94531fbe37..f9c917dfc58 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", + "ironing_inset": "0.31", "initial_layer_line_width": "0.62", "sparse_infill_line_width": "0.62", "inner_wall_line_width": "0.62", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json index 3e0d8b147ee..be6eb5944a3 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", + "ironing_inset": "0.41", "initial_layer_line_width": "0.82", "sparse_infill_line_width": "0.82", "inner_wall_line_width": "0.82", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json index 07120eef78d..d879b17b8b0 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.62", "outer_wall_line_width": "0.62", + "ironing_inset": "0.31", "initial_layer_line_width": "0.62", "sparse_infill_line_width": "0.62", "inner_wall_line_width": "0.62", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json index 3a77fbf006e..e9955abd55e 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", + "ironing_inset": "0.41", "initial_layer_line_width": "0.82", "sparse_infill_line_width": "0.82", "inner_wall_line_width": "0.82", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json index 3970ac5ac72..99fb6bf6e7d 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json @@ -9,6 +9,7 @@ "bridge_flow": "1", "line_width": "0.82", "outer_wall_line_width": "0.82", + "ironing_inset": "0.41", "initial_layer_line_width": "0.82", "sparse_infill_line_width": "0.82", "inner_wall_line_width": "0.82", diff --git a/resources/profiles/BBL/process/fdm_process_bbl_common.json b/resources/profiles/BBL/process/fdm_process_bbl_common.json index fc377a0b86a..d77980a29d8 100644 --- a/resources/profiles/BBL/process/fdm_process_bbl_common.json +++ b/resources/profiles/BBL/process/fdm_process_bbl_common.json @@ -59,6 +59,7 @@ "tree_support_branch_diameter": "2", "tree_support_branch_angle": "45", "tree_support_wall_count": "0", + "max_bridge_length": "0", "top_surface_pattern": "monotonicline", "top_surface_acceleration": "2000", "top_surface_speed": "200", diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json index c68411dbbe1..1723f8835ed 100644 --- a/resources/profiles/BBL/process/fdm_process_common.json +++ b/resources/profiles/BBL/process/fdm_process_common.json @@ -13,6 +13,7 @@ "bridge_no_support": "0", "elefant_foot_compensation": "0.1", "outer_wall_line_width": "0.42", + "ironing_inset": "0.21", "outer_wall_speed": "120", "line_width": "0.45", "infill_direction": "45", @@ -69,5 +70,6 @@ "xy_contour_compensation": "0", "compatible_printers": [], "smooth_coefficient": "80", - "overhang_totally_speed": "24" + "overhang_totally_speed": "19", + "scarf_angle_threshold": "155" } \ No newline at end of file diff --git a/resources/profiles/Creality/filament/Creality Generic TPU.json b/resources/profiles/Creality/filament/Creality Generic TPU.json index ff93417668e..497c9fa6543 100644 --- a/resources/profiles/Creality/filament/Creality Generic TPU.json +++ b/resources/profiles/Creality/filament/Creality Generic TPU.json @@ -16,10 +16,12 @@ "Creality K1 Max (0.4 nozzle)", "Creality K1 Max (0.6 nozzle)", "Creality K1 Max (0.8 nozzle)", - "Creality Sermoon V1 0.4 nozzle", + "Creality Sermoon V1 0.4 nozzle", "Creality CR-10 SE 0.2 nozzle", - "Creality CR-10 SE 0.4 nozzle", - "Creality CR-10 SE 0.6 nozzle", - "Creality CR-10 SE 0.8 nozzle" + "Creality CR-10 SE 0.4 nozzle", + "Creality CR-10 SE 0.6 nozzle", + "Creality CR-10 SE 0.8 nozzle", + "Creality Ender-3 S1 Pro 0.4 nozzle", + "Creality Ender-3 S1 0.4 nozzle" ] } diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json index 1ecafe3f8d0..4911adffb77 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.2 nozzle.json @@ -88,10 +88,10 @@ "2" ], "max_layer_height": [ - "0.32" + "0.16" ], "min_layer_height": [ - "0.08" + "0.04" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -125,4 +125,4 @@ "96x96", "300x300" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json index 5f56e1ff877..fbcb5d39214 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.6 nozzle.json @@ -88,10 +88,10 @@ "2" ], "max_layer_height": [ - "0.32" + "0.48" ], "min_layer_height": [ - "0.08" + "0.12" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -125,4 +125,4 @@ "96x96", "300x300" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json index 00d3f3ff443..71fa0f5db4f 100644 --- a/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality CR-10 SE 0.8 nozzle.json @@ -88,10 +88,10 @@ "2" ], "max_layer_height": [ - "0.32" + "0.64" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -125,4 +125,4 @@ "96x96", "300x300" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json index 84b0aa585b0..020a23436d6 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.2 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.16" ], "min_layer_height": [ - "0.08" + "0.04" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json index 3cd54106936..3ca555c0314 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.6 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.48" ], "min_layer_height": [ - "0.08" + "0.12" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json index 5d0f0b674f2..1f6e3c34efb 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 0.8 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.64" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json index 9cd139b34ea..bef8c38f3d9 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.2 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.16" ], "min_layer_height": [ - "0.08" + "0.04" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json index 759243c2b73..268a0633835 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.6 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.48" ], "min_layer_height": [ - "0.08" + "0.12" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json index e807d8f2f0f..b49092d49e8 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 Pro 0.8 nozzle.json @@ -81,10 +81,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.64" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json index 158e30b6e7d..b8fc2bc851a 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.2 nozzle.json @@ -78,10 +78,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.16" ], "min_layer_height": [ - "0.08" + "0.04" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling \nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json index 445e0b0bc34..f774ae2713a 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.6 nozzle.json @@ -78,10 +78,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.48" ], "min_layer_height": [ - "0.08" + "0.12" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -111,4 +111,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json index f8930b0d96e..bd4add3b081 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 S1 Plus 0.8 nozzle.json @@ -79,10 +79,10 @@ "0.4" ], "max_layer_height": [ - "0.36" + "0.64" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -112,4 +112,4 @@ "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S30 ; allow partial nozzle warmup\nG28 ; home all axis and restore leveling\nM420 S1; Enable mesh leveling\nG1 Z50 F240\nG1 X2.0 Y10 F3000\nM104 S[nozzle_temperature_initial_layer] ; set final nozzle temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp to stabilize\nM109 S[nozzle_temperature_initial_layer] ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 X2.0 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 Y140 F5000\nG92 E0\nG1 X2.3 Y10 E10 F1200 ; prime the nozzle\nG92 E0", "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", "scan_first_layer": "0" -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json index 5c8c2b73b6e..b9a5d7fc8b4 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.2 nozzle.json @@ -84,10 +84,10 @@ "0.4" ], "max_layer_height": [ - "0.32" + "0.16" ], "min_layer_height": [ - "0.08" + "0.04" ], "retraction_minimum_travel": [ "2" diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json index ccc53b8c906..ae639af95a5 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.6 nozzle.json @@ -84,10 +84,10 @@ "0.4" ], "max_layer_height": [ - "0.32" + "0.48" ], "min_layer_height": [ - "0.08" + "0.12" ], "retraction_minimum_travel": [ "2" diff --git a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json index f5e565f0cd6..8833fd9ecdc 100644 --- a/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality Ender-3 V3 SE 0.8 nozzle.json @@ -84,10 +84,10 @@ "0.4" ], "max_layer_height": [ - "0.32" + "0.64" ], "min_layer_height": [ - "0.08" + "0.16" ], "retraction_minimum_travel": [ "2" diff --git a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json index 2c980a66aa8..0a15d1d0d9f 100644 --- a/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 (0.8 nozzle).json @@ -86,7 +86,7 @@ "0.5" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -130,4 +130,4 @@ "100x100", "320x320" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json index e31c188086e..c7520321c5b 100644 --- a/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json +++ b/resources/profiles/Creality/machine/Creality K1 Max (0.8 nozzle).json @@ -87,7 +87,7 @@ "0.5" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -131,4 +131,4 @@ "100x100", "320x320" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json index 6788e0c5ecd..d96df6c6d3c 100644 --- a/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K1C 0.8 nozzle.json @@ -87,7 +87,7 @@ "0.5" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ @@ -131,4 +131,4 @@ "100x100", "320x320" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json index bdd7bb0473c..2461c907114 100644 --- a/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json +++ b/resources/profiles/Creality/machine/Creality K2 Plus 0.8 nozzle.json @@ -87,7 +87,7 @@ "0.56" ], "min_layer_height": [ - "0.08" + "0.16" ], "printer_settings_id": "Creality", "retraction_minimum_travel": [ diff --git a/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json b/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json index ec95e5dd99d..aea117419fd 100644 --- a/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json +++ b/resources/profiles/FlyingBear/filament/FlyingBear Generic PLA.json @@ -15,8 +15,11 @@ "slow_down_layer_time": [ "8" ], + "enable_pressure_advance": [ + "1" + ], "pressure_advance": [ - "0.084" + "0.032" ], "compatible_printers": [ "FlyingBear Reborn3 0.4 nozzle", diff --git a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json index 41577713953..e51861f40de 100644 --- a/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/FlyingBear PLA @S1.json @@ -15,8 +15,11 @@ "slow_down_layer_time": [ "8" ], + "enable_pressure_advance": [ + "1" + ], "pressure_advance": [ - "0.084" + "0.032" ], "compatible_printers": [ "FlyingBear S1 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json b/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json index e6e53290b3e..139d025b6b7 100644 --- a/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/Other PLA @S1.json @@ -15,8 +15,11 @@ "slow_down_layer_time": [ "8" ], + "enable_pressure_advance": [ + "1" + ], "pressure_advance": [ - "0.084" + "0.032" ], "compatible_printers": [ "FlyingBear S1 0.4 nozzle" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla @S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla @S1.json index c7b0cf5b7f0..0bbf0700f37 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla @S1.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper @S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper @S1.json index 0d863dbccfd..0efe00c7272 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper @S1.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper_other @S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper_other @S1.json index 84a6c7895bc..873af639ce7 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper_other @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_Hyper_other @S1.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_other @S1.json b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_other @S1.json index 89664508323..1bdc4879918 100644 --- a/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_other @S1.json +++ b/resources/profiles/FlyingBear/filament/S1/fdm_filament_pla_other @S1.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/filament/fdm_filament_pla.json b/resources/profiles/FlyingBear/filament/fdm_filament_pla.json index f1fe0ff99b5..3855f25b66a 100644 --- a/resources/profiles/FlyingBear/filament/fdm_filament_pla.json +++ b/resources/profiles/FlyingBear/filament/fdm_filament_pla.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/filament/fdm_filament_pla_Hyper.json b/resources/profiles/FlyingBear/filament/fdm_filament_pla_Hyper.json index 4a3150818ab..05c348ce5ed 100644 --- a/resources/profiles/FlyingBear/filament/fdm_filament_pla_Hyper.json +++ b/resources/profiles/FlyingBear/filament/fdm_filament_pla_Hyper.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json index e8452b5c249..ffc1a0bbe7b 100644 --- a/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json +++ b/resources/profiles/FlyingBear/machine/S1/FlyingBear S1 0.4 nozzle.json @@ -207,6 +207,6 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] } diff --git a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json index 7f2590d8d37..dba7278dd8f 100644 --- a/resources/profiles/FlyingBear/machine/fdm_klipper_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_klipper_common.json @@ -112,7 +112,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "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", + "machine_start_gcode": ";R3_V1.1.0-20241115\n\nM140 S[bed_temperature_initial_layer_single] \nM104 S135\nG28\nG4 P200\nM190 S[bed_temperature_initial_layer_single] \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": [ "0.28" ], diff --git a/resources/profiles/FlyingBear/machine/fdm_machine_common.json b/resources/profiles/FlyingBear/machine/fdm_machine_common.json index e11e4e47e01..e6119fa451f 100644 --- a/resources/profiles/FlyingBear/machine/fdm_machine_common.json +++ b/resources/profiles/FlyingBear/machine/fdm_machine_common.json @@ -113,7 +113,7 @@ "0" ], "machine_pause_gcode": "PAUSE", - "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", + "machine_start_gcode": ";R3_V1.1.0-20241115\n\nM140 S[bed_temperature_initial_layer_single] \nM104 S135\nG28\nG4 P200\nM190 S[bed_temperature_initial_layer_single] \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": [ "0.28" ], @@ -201,6 +201,6 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] } diff --git a/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json index 39001ee125a..124619ba7f9 100644 --- a/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.08mm Extra Fine @FlyingBear Reborn3.json @@ -5,7 +5,8 @@ "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - + + "inner_wall_acceleration": "3000", "bottom_shell_layers": "7", "overhang_1_4_speed": "60", "overhang_2_4_speed": "30", diff --git a/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json index 1000d06175a..f725af6340a 100644 --- a/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.12mm Fine @FlyingBear Reborn3.json @@ -5,7 +5,8 @@ "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - + + "inner_wall_acceleration": "3000", "bottom_shell_layers": "5", "overhang_1_4_speed": "50", "overhang_2_4_speed": "30", diff --git a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json index f24fa3ca22c..a5d9abd3a55 100644 --- a/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json +++ b/resources/profiles/FlyingBear/process/0.16mm Optimal @FlyingBear Reborn3.json @@ -5,7 +5,8 @@ "from": "system", "instantiation": "true", "inherits": "fdm_process_common", - + + "inner_wall_acceleration": "3000", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "top_shell_layers": "6", diff --git a/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json index 8fae3c93c62..e155b9a0928 100644 --- a/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.08mm Extra Fine @FlyingBear S1.json @@ -6,7 +6,8 @@ "from": "system", "instantiation": "true", "inherits": "fdm_process_common_S1", - + + "inner_wall_acceleration": "3000", "bottom_shell_layers": "7", "overhang_1_4_speed": "50", "overhang_2_4_speed": "30", diff --git a/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json index ca70860ca1f..8b72568142a 100644 --- a/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.12mm Fine @FlyingBear S1.json @@ -6,6 +6,7 @@ "instantiation": "true", "inherits": "fdm_process_common_S1", + "inner_wall_acceleration": "3000", "bottom_shell_layers": "5", "overhang_1_4_speed": "50", "overhang_2_4_speed": "30", diff --git a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json index d19bf468349..4e8e2777104 100644 --- a/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json +++ b/resources/profiles/FlyingBear/process/S1/0.16mm Optimal @FlyingBear S1.json @@ -5,7 +5,8 @@ "from": "system", "instantiation": "true", "inherits": "fdm_process_common_S1", - + + "inner_wall_acceleration": "3000", "overhang_2_4_speed": "50", "overhang_3_4_speed": "30", "top_shell_layers": "6", diff --git a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json index 0e5c4be0a92..b1ac2c11c47 100644 --- a/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json +++ b/resources/profiles/FlyingBear/process/S1/fdm_process_common_S1.json @@ -24,7 +24,7 @@ "default_jerk": "0", "detect_narrow_internal_solid_infill": "1", "detect_overhang_wall": "1", - "detect_thin_wall": "0", + "detect_thin_wall": "1", "draft_shield": "disabled", "elefant_foot_compensation": "0.15", "enable_arc_fitting": "0", @@ -123,6 +123,7 @@ "slice_closing_radius": "0.049", "slicing_mode": "regular", "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", "solid_infill_filament": "1", @@ -130,7 +131,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "spiral_mode": "0", "staggered_inner_seams": "0", diff --git a/resources/profiles/FlyingBear/process/fdm_process_common.json b/resources/profiles/FlyingBear/process/fdm_process_common.json index 656bbe92ed0..43b5ade20d8 100644 --- a/resources/profiles/FlyingBear/process/fdm_process_common.json +++ b/resources/profiles/FlyingBear/process/fdm_process_common.json @@ -24,7 +24,7 @@ "default_jerk": "0", "detect_narrow_internal_solid_infill": "1", "detect_overhang_wall": "1", - "detect_thin_wall": "0", + "detect_thin_wall": "1", "draft_shield": "disabled", "elefant_foot_compensation": "0.15", "enable_arc_fitting": "0", @@ -123,6 +123,7 @@ "slice_closing_radius": "0.049", "slicing_mode": "regular", "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", "solid_infill_filament": "1", @@ -130,7 +131,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "spiral_mode": "0", "staggered_inner_seams": "0", diff --git a/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json b/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json index 1dabc7caff9..50338fa1953 100644 --- a/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json +++ b/resources/profiles/InfiMech/filament/InfiMech Generic PLA.json @@ -15,8 +15,11 @@ "slow_down_layer_time": [ "8" ], + "enable_pressure_advance": [ + "1" + ], "pressure_advance": [ - "0.084" + "0.032" ], "compatible_printers": [ "InfiMech TX 0.4 nozzle" diff --git a/resources/profiles/InfiMech/filament/Other PLA.json b/resources/profiles/InfiMech/filament/Other PLA.json index d27fcad1649..c6c895475d6 100644 --- a/resources/profiles/InfiMech/filament/Other PLA.json +++ b/resources/profiles/InfiMech/filament/Other PLA.json @@ -15,8 +15,11 @@ "slow_down_layer_time": [ "8" ], + "enable_pressure_advance": [ + "1" + ], "pressure_advance": [ - "0.084" + "0.032" ], "compatible_printers": [ "InfiMech TX 0.4 nozzle" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_pla.json b/resources/profiles/InfiMech/filament/fdm_filament_pla.json index d93d3b72e69..dd528dfdeb2 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_pla.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_pla.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper.json b/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper.json index 97c8a80fde5..7fb27e2280b 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper_other.json b/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper_other.json index c29c200aae4..54ed13cd09a 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper_other.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_pla_Hyper_other.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/InfiMech/filament/fdm_filament_pla_other.json b/resources/profiles/InfiMech/filament/fdm_filament_pla_other.json index 075d9df6874..35c5da91752 100644 --- a/resources/profiles/InfiMech/filament/fdm_filament_pla_other.json +++ b/resources/profiles/InfiMech/filament/fdm_filament_pla_other.json @@ -41,7 +41,7 @@ "60" ], "hot_plate_temp_initial_layer" : [ - "65" + "60" ], "textured_plate_temp_initial_layer" : [ "60" diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json index 2d1e2aaa55b..3cd0c7ec030 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_klipper_common.json @@ -204,7 +204,7 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] diff --git a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json index 31eedc682c2..eb272f991ec 100644 --- a/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/HSN/fdm_machine_common.json @@ -201,6 +201,6 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] } diff --git a/resources/profiles/InfiMech/machine/fdm_klipper_common.json b/resources/profiles/InfiMech/machine/fdm_klipper_common.json index 23d50fef1ec..9d09be715d5 100644 --- a/resources/profiles/InfiMech/machine/fdm_klipper_common.json +++ b/resources/profiles/InfiMech/machine/fdm_klipper_common.json @@ -204,7 +204,7 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] diff --git a/resources/profiles/InfiMech/machine/fdm_machine_common.json b/resources/profiles/InfiMech/machine/fdm_machine_common.json index 00dca16a19e..ca2e420340b 100644 --- a/resources/profiles/InfiMech/machine/fdm_machine_common.json +++ b/resources/profiles/InfiMech/machine/fdm_machine_common.json @@ -201,6 +201,6 @@ "0.4" ], "z_hop_types": [ - "Auto Lift" + "Normal Lift" ] } diff --git a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json index 177a5918d49..e0ebf59dcea 100644 --- a/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json +++ b/resources/profiles/InfiMech/process/HSN/fdm_process_common_HSN.json @@ -23,7 +23,7 @@ "default_jerk": "0", "detect_narrow_internal_solid_infill": "1", "detect_overhang_wall": "1", - "detect_thin_wall": "0", + "detect_thin_wall": "1", "draft_shield": "disabled", "elefant_foot_compensation": "0.15", "enable_arc_fitting": "0", @@ -122,6 +122,7 @@ "slice_closing_radius": "0.049", "slicing_mode": "regular", "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", "solid_infill_filament": "1", @@ -129,7 +130,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "spiral_mode": "0", "staggered_inner_seams": "0", diff --git a/resources/profiles/InfiMech/process/fdm_process_common.json b/resources/profiles/InfiMech/process/fdm_process_common.json index f82c00298ce..40e0dcede3b 100644 --- a/resources/profiles/InfiMech/process/fdm_process_common.json +++ b/resources/profiles/InfiMech/process/fdm_process_common.json @@ -23,7 +23,7 @@ "default_jerk": "0", "detect_narrow_internal_solid_infill": "1", "detect_overhang_wall": "1", - "detect_thin_wall": "0", + "detect_thin_wall": "1", "draft_shield": "disabled", "elefant_foot_compensation": "0.15", "enable_arc_fitting": "0", @@ -122,6 +122,7 @@ "slice_closing_radius": "0.049", "slicing_mode": "regular", "slow_down_layers": "0", + "slowdown_for_curled_perimeters": "0", "small_perimeter_speed": "50%", "small_perimeter_threshold": "0", "solid_infill_filament": "1", @@ -129,7 +130,7 @@ "sparse_infill_density": "15%", "sparse_infill_filament": "1", "sparse_infill_line_width": "0.45", - "sparse_infill_pattern": "crosshatch", + "sparse_infill_pattern": "grid", "spiral_mode": "0", "staggered_inner_seams": "0", diff --git a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json index dd6e47980a4..3daf24d7d53 100644 --- a/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json +++ b/resources/profiles/Prusa/filament/Prusa Generic TPU @MK3.5.json @@ -7,7 +7,7 @@ "instantiation": "true", "inherits": "fdm_filament_tpu", "filament_max_volumetric_speed": [ - "1.35" + "1.8" ], "filament_flow_ratio": [ "1.15" @@ -28,8 +28,14 @@ "210" ], "filament_retraction_length": [ - "0" + "2" ], + "filament_retraction_speed": [ + "45" + ], + "filament_deretraction_speed": [ + "20" + ], "close_fan_the_first_x_layers": [ "3" ], diff --git a/resources/profiles/Prusa/process/process_detail_MK3.5.json b/resources/profiles/Prusa/process/process_detail_MK3.5.json index 134905069b2..3e9e82439cd 100644 --- a/resources/profiles/Prusa/process/process_detail_MK3.5.json +++ b/resources/profiles/Prusa/process/process_detail_MK3.5.json @@ -12,7 +12,7 @@ "support_speed": "60", "small_perimeter_speed": "40", "sparse_infill_speed": "100", - "internal_solid_infill_speed": "140", + "internal_solid_infill_speed": "120", "top_surface_speed": "60", "gap_infill_speed": "40", "default_acceleration": "1500", diff --git a/resources/profiles/Ratrig.json b/resources/profiles/Ratrig.json index 163d9817ad6..e983dbebe3b 100644 --- a/resources/profiles/Ratrig.json +++ b/resources/profiles/Ratrig.json @@ -110,6 +110,18 @@ "name": "0.25mm Quality Speed @RatRig V-Core 4 0.5", "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.5.json" }, + { + "name": "0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8", + "sub_path": "process/0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8.json" + }, + { + "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.8", + "sub_path": "process/0.30mm Big @RatRig V-Core 4 HYBRID 0.8.json" + }, + { + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.8", + "sub_path": "process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.8.json" + }, { "name": "0.25mm Quality Speed @RatRig V-Core 4 0.6", "sub_path": "process/0.25mm Quality Speed @RatRig V-Core 4 0.6.json" @@ -204,6 +216,10 @@ "name": "RatRig Generic PLA-CF", "sub_path": "filament/RatRig Generic PLA-CF.json" }, + { + "name": "RatRig Generic PCTG", + "sub_path": "filament/RatRig Generic PCTG.json" + }, { "name": "RatRig Generic PETG", "sub_path": "filament/RatRig Generic PETG.json" @@ -247,6 +263,26 @@ { "name": "RatRig PunkFil PETG", "sub_path": "filament/RatRig PunkFil PETG.json" + }, + { + "name": "RatRig BigNozzle ABS", + "sub_path": "filament/RatRig BigNozzle ABS.json" + }, + { + "name": "RatRig BigNozzle ASA", + "sub_path": "filament/RatRig BigNozzle ASA.json" + }, + { + "name": "RatRig BigNozzle PLA", + "sub_path": "filament/RatRig BigNozzle PLA.json" + }, + { + "name": "RatRig BigNozzle PETG", + "sub_path": "filament/RatRig BigNozzle PETG.json" + }, + { + "name": "RatRig BigNozzle PCTG", + "sub_path": "filament/RatRig BigNozzle PCTG.json" } ], "machine_list": [ diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json b/resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json new file mode 100644 index 00000000000..eb6226db698 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig BigNozzle ABS.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "RatRig BigNozzle ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "18" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.03" + ], + "hot_plate_temp_initial_layer" : [ + "108" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "30" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json b/resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json new file mode 100644 index 00000000000..31827e04c23 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig BigNozzle ASA.json @@ -0,0 +1,54 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "RatRig BigNozzle ASA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "19" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.033" + ], + "hot_plate_temp_initial_layer" : [ + "108" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "nozzle_temperature": [ + "265" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "290" + ], + "close_fan_the_first_x_layers": [ + "2" + ], + "fan_cooling_layer_time": [ + "10" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "28" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json b/resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json new file mode 100644 index 00000000000..480aa223962 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig BigNozzle PCTG.json @@ -0,0 +1,69 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "RatRig BigNozzle PCTG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "15" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.96" + ], + "filament_density": [ + "1.29" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "275" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "temperature_vitrification": [ + "90" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json b/resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json new file mode 100644 index 00000000000..da008803733 --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig BigNozzle PETG.json @@ -0,0 +1,63 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "RatRig BigNozzle PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "10" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "nozzle_temperature_range_low": [ + "230" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json b/resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json new file mode 100644 index 00000000000..f3121fe45db --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig BigNozzle PLA.json @@ -0,0 +1,39 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "RatRig BigNozzle PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.05" + ], + "slow_down_layer_time": [ + "8" + ], + "nozzle_temperature_initial_layer": [ + "230" + ], + "nozzle_temperature": [ + "235" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "nozzle_temperature_range_low": [ + "210" + ] +} diff --git a/resources/profiles/Ratrig/filament/RatRig Generic PCTG.json b/resources/profiles/Ratrig/filament/RatRig Generic PCTG.json new file mode 100644 index 00000000000..9f28df73abf --- /dev/null +++ b/resources/profiles/Ratrig/filament/RatRig Generic PCTG.json @@ -0,0 +1,66 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFCA04", + "name": "RatRig Generic PCTG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.94" + ], + "filament_density": [ + "1.29" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_z_hop": [ + "0" + ], + "enable_pressure_advance": [ + "1" + ], + "pressure_advance": [ + "0.045" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "nozzle_temperature": [ + "255" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "temperature_vitrification": [ + "90" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.8 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.8 nozzle.json new file mode 100644 index 00000000000..9cde1d77984 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 300 0.8 nozzle.json @@ -0,0 +1,59 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 300 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 300", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.12"], + "max_layer_height": ["0.5"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "300", + "time_lapse_gcode": "TIMELAPSE_TAKE_FRAME", + "thumbnails": [ + "64x64/PNG", + "100x100/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.8 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.8 nozzle.json new file mode 100644 index 00000000000..db7bb5ab3b9 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 400 0.8 nozzle.json @@ -0,0 +1,59 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 400 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 400", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.8" + ], + "printable_area": [ + "0x0", + "400x0", + "400x400", + "0x400" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.12"], + "max_layer_height": ["0.5"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "400", + "time_lapse_gcode": "TIMELAPSE_TAKE_FRAME", + "thumbnails": [ + "64x64/PNG", + "100x100/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.8 nozzle.json b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.8 nozzle.json new file mode 100644 index 00000000000..5c15020a7c4 --- /dev/null +++ b/resources/profiles/Ratrig/machine/RatRig V-Core 4 HYBRID 500 0.8 nozzle.json @@ -0,0 +1,59 @@ +{ + "type": "machine", + "setting_id": "GM002", + "name": "RatRig V-Core 4 HYBRID 500 0.8 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "RatRig V-Core 4 HYBRID 500", + "printer_variant": "0.8", + "nozzle_diameter": [ + "0.6" + ], + "printable_area": [ + "0x0", + "500x0", + "500x500", + "0x500" + ], + "machine_max_speed_x": ["500", "500"], + "machine_max_speed_y": ["500", "500"], + "machine_max_speed_z": ["200", "200"], + "machine_max_speed_e": ["120", "120"], + "machine_max_acceleration_x": ["20000", "20000"], + "machine_max_acceleration_y": ["20000", "20000"], + "machine_max_acceleration_z": ["200", "200"], + "machine_max_acceleration_e": ["5000", "5000"], + "machine_max_acceleration_extruding": ["20000", "20000"], + "machine_max_acceleration_retracting": ["20000", "20000"], + "machine_max_acceleration_travel": ["20000", "20000"], + "machine_max_jerk_x": ["5", "5"], + "machine_max_jerk_y": ["5", "5"], + "machine_max_jerk_z": ["0.4", "0.4"], + "machine_max_jerk_e": ["5", "5"], + "min_layer_height": ["0.12"], + "max_layer_height": ["0.5"], + "extruder_clearance_radius": "45", + "extruder_clearance_height_to_rod": "25", + "extruder_clearance_height_to_lid": "140", + "retract_lift_below": ["0.3"], + "retraction_length": ["0.8"], + "retraction_speed": ["120"], + "deretraction_speed": ["120"], + "wipe": ["1"], + "retract_before_wipe": ["70%"], + "z_hop": ["0.2"], + "machine_start_gcode": "START_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single] TOTAL_LAYER_COUNT={total_layer_count} X0={first_layer_print_min[0]} Y0={first_layer_print_min[1]} X1={first_layer_print_max[0]} Y1={first_layer_print_max[1]}", + "layer_change_gcode": ";AFTER_LAYER_CHANGE\n;[layer_z]", + "before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n_ON_LAYER_CHANGE LAYER={layer_num + 1}", + "change_filament_gcode": "M600", + "machine_pause_gcode": "PAUSE", + "printing_by_object_gcode": ";BETWEEN_OBJECTS\nG92 E0", + "printable_height": "500", + "time_lapse_gcode": "TIMELAPSE_TAKE_FRAME", + "thumbnails": [ + "64x64/PNG", + "100x100/PNG", + "400x300/PNG" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json index 24a7497b61b..adb0bcb43fe 100644 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.4.json @@ -57,6 +57,6 @@ "compatible_printers": [ "RatRig V-Core 4 HYBRID 300 0.4 nozzle", "RatRig V-Core 4 HYBRID 400 0.4 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.4 nozzle" + "RatRig V-Core 4 HYBRID 500 0.4 nozzle" ] } diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json index dbf3f1e9e4e..23d26712199 100644 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5.json @@ -1,62 +1,62 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.55", - "initial_layer_line_width": "0.7", - "inner_wall_line_width": "0.55", - "outer_wall_line_width": "0.52", - "sparse_infill_line_width": "0.55", - "internal_solid_infill_line_width": "0.55", - "top_surface_line_width": "0.55", - "support_line_width": "0.55", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.5 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json index 975e82da8ab..eaa07504fc7 100644 --- a/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json +++ b/resources/profiles/Ratrig/process/0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6.json @@ -1,62 +1,62 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "4", - "top_shell_layers": "4", - "bottom_shell_layers": "3", - "top_shell_thickness": "0", - "sparse_infill_density": "25%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "skirt_loops": "2", - "skirt_distance": "10", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "300", - "small_perimeter_speed": "250", - "outer_wall_speed": "250", - "sparse_infill_speed": "400", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "50", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "80", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "15000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "15000", - "line_width": "0.65", - "initial_layer_line_width": "0.84", - "inner_wall_line_width": "0.65", - "outer_wall_line_width": "0.65", - "sparse_infill_line_width": "0.65", - "internal_solid_infill_line_width": "0.65", - "top_surface_line_width": "0.65", - "support_line_width": "0.65", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBIRD 500 0.6 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Quality Speed @RatRig V-Core 4 HYBRID 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "4", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.65", + "initial_layer_line_width": "0.84", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.65", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json index 1ff1df93c80..83393ee7767 100644 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 0.6.json @@ -1,60 +1,60 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "400", - "small_perimeter_speed": "350", - "outer_wall_speed": "400", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "600", - "initial_layer_speed": "200", - "outer_wall_acceleration": "8000", - "inner_wall_acceleration": "10000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "10000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "15000", - "default_acceleration": "10000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 300 0.6 nozzle", - "RatRig V-Core 4 400 0.6 nozzle", - "RatRig V-Core 4 500 0.6 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "400", + "small_perimeter_speed": "350", + "outer_wall_speed": "400", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "200", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "10000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "10000", + "line_width": "0.65", + "initial_layer_line_width": "0.85", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.60", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 300 0.6 nozzle", + "RatRig V-Core 4 400 0.6 nozzle", + "RatRig V-Core 4 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json index d9351ba3b13..48e7577f3cb 100644 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.5.json @@ -1,60 +1,60 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "500", - "small_perimeter_speed": "500", - "outer_wall_speed": "500", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "800", - "initial_layer_speed": "200", - "outer_wall_acceleration": "15000", - "inner_wall_acceleration": "20000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "20000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "10000", - "default_acceleration": "20000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.5 nozzle", - "RatRig V-Core 4 HYBRID 400 0.5 nozzle", - "RatRig V-Core 4 HYBRID 500 0.5 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.5", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.55", + "initial_layer_line_width": "0.7", + "inner_wall_line_width": "0.55", + "outer_wall_line_width": "0.52", + "sparse_infill_line_width": "0.55", + "internal_solid_infill_line_width": "0.55", + "top_surface_line_width": "0.55", + "support_line_width": "0.55", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.5 nozzle", + "RatRig V-Core 4 HYBRID 400 0.5 nozzle", + "RatRig V-Core 4 HYBRID 500 0.5 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json index 00d6c2113fc..cc781e3f9e9 100644 --- a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.6.json @@ -1,60 +1,60 @@ -{ - "type": "process", - "setting_id": "GP006", - "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", - "from": "system", - "instantiation": "true", - "inherits": "fdm_process_ratrig_common", - "layer_height": "0.25", - "inital_layer_height": "0.3", - "wall_count": "2", - "top_shell_layers": "3", - "bottom_shell_layers": "2", - "top_shell_thickness": "0", - "sparse_infill_density": "10%", - "infill_anchor": "600%", - "infill_anchor_max": "5", - "infill_combination": "1", - "support_threshold_angle": "65", - "support_bottom_z_distance": "0.2", - "support_on_build_plate_only": "1", - "support_object_xy_distance": "60%", - "inner_wall_speed": "500", - "small_perimeter_speed": "500", - "outer_wall_speed": "500", - "sparse_infill_speed": "500", - "internal_solid_infill_speed": "100%", - "top_surface_speed": "100%", - "support_speed": "50", - "support_interface_speed": "100%", - "bridge_speed": "150", - "gap_infill_speed": "200", - "travel_speed": "800", - "initial_layer_speed": "200", - "outer_wall_acceleration": "15000", - "inner_wall_acceleration": "20000", - "top_surface_acceleration": "0", - "internal_solid_infill_acceleration": "0", - "sparse_infill_acceleration": "20000", - "bridge_acceleration": "5000", - "initial_layer_acceleration": "2500", - "travel_acceleration": "10000", - "default_acceleration": "20000", - "line_width": "0.45", - "initial_layer_line_width": "0.5", - "inner_wall_line_width": "0.45", - "outer_wall_line_width": "0.45", - "sparse_infill_line_width": "0.45", - "internal_solid_infill_line_width": "0.45", - "top_surface_line_width": "0.45", - "support_line_width": "0.45", - "infill_wall_overlap": "18%", - "bridge_flow": "0.85", - "resolution": "0.0125", - "elefant_foot_compensation": "0.1", - "compatible_printers": [ - "RatRig V-Core 4 HYBRID 300 0.6 nozzle", - "RatRig V-Core 4 HYBRID 400 0.6 nozzle", - "RatRig V-Core 4 HYBRID 500 0.6 nozzle" - ] -} +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.6", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.65", + "initial_layer_line_width": "0.9", + "inner_wall_line_width": "0.65", + "outer_wall_line_width": "0.60", + "sparse_infill_line_width": "0.65", + "internal_solid_infill_line_width": "0.65", + "top_surface_line_width": "0.65", + "support_line_width": "0.65", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.6 nozzle", + "RatRig V-Core 4 HYBRID 400 0.6 nozzle", + "RatRig V-Core 4 HYBRID 500 0.6 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.8.json b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.8.json new file mode 100644 index 00000000000..ba1e8c0cb1b --- /dev/null +++ b/resources/profiles/Ratrig/process/0.25mm Speed @RatRig V-Core 4 HYBRID 0.8.json @@ -0,0 +1,60 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.25mm Speed @RatRig V-Core 4 HYBRID 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.25", + "inital_layer_height": "0.3", + "wall_count": "2", + "top_shell_layers": "3", + "bottom_shell_layers": "2", + "top_shell_thickness": "0", + "sparse_infill_density": "10%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "500", + "small_perimeter_speed": "500", + "outer_wall_speed": "500", + "sparse_infill_speed": "500", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "150", + "gap_infill_speed": "200", + "travel_speed": "800", + "initial_layer_speed": "200", + "outer_wall_acceleration": "15000", + "inner_wall_acceleration": "20000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "20000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "10000", + "default_acceleration": "20000", + "line_width": "0.75", + "initial_layer_line_width": "1.1", + "inner_wall_line_width": "0.75", + "outer_wall_line_width": "0.70", + "sparse_infill_line_width": "0.75", + "internal_solid_infill_line_width": "0.75", + "top_surface_line_width": "0.75", + "support_line_width": "0.75", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.8 nozzle", + "RatRig V-Core 4 HYBRID 400 0.8 nozzle", + "RatRig V-Core 4 HYBRID 500 0.8 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.8.json b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.8.json new file mode 100644 index 00000000000..02512c0811f --- /dev/null +++ b/resources/profiles/Ratrig/process/0.30mm Big @RatRig V-Core 4 HYBRID 0.8.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.30mm Big @RatRig V-Core 4 HYBRID 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.3", + "inital_layer_height": "0.35", + "wall_count": "3", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "25%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "enable_overhang_speed": "1", + "overhang_1_4_speed": "20", + "overhang_2_4_speed": "45", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "100", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.75", + "initial_layer_line_width": "1.1", + "inner_wall_line_width": "0.75", + "outer_wall_line_width": "0.70", + "sparse_infill_line_width": "0.75", + "internal_solid_infill_line_width": "0.75", + "top_surface_line_width": "0.75", + "support_line_width": "0.75", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.8 nozzle", + "RatRig V-Core 4 HYBRID 400 0.8 nozzle", + "RatRig V-Core 4 HYBRID 500 0.8 nozzle" + ] +} diff --git a/resources/profiles/Ratrig/process/0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8.json b/resources/profiles/Ratrig/process/0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8.json new file mode 100644 index 00000000000..3f7ea6a00b1 --- /dev/null +++ b/resources/profiles/Ratrig/process/0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8.json @@ -0,0 +1,67 @@ +{ + "type": "process", + "setting_id": "GP006", + "name": "0.35mm Extra Big @RatRig V-Core 4 HYBRID 0.8", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_ratrig_common", + "layer_height": "0.35", + "inital_layer_height": "0.4", + "wall_count": "3", + "top_shell_layers": "4", + "bottom_shell_layers": "3", + "top_shell_thickness": "0", + "sparse_infill_density": "30%", + "infill_anchor": "600%", + "infill_anchor_max": "5", + "infill_combination": "1", + "skirt_loops": "2", + "skirt_distance": "10", + "support_threshold_angle": "65", + "support_bottom_z_distance": "0.2", + "support_on_build_plate_only": "1", + "support_object_xy_distance": "60%", + "inner_wall_speed": "300", + "small_perimeter_speed": "250", + "outer_wall_speed": "250", + "sparse_infill_speed": "400", + "internal_solid_infill_speed": "100%", + "top_surface_speed": "100%", + "support_speed": "50", + "support_interface_speed": "100%", + "bridge_speed": "50", + "gap_infill_speed": "200", + "travel_speed": "600", + "initial_layer_speed": "80", + "enable_overhang_speed": "1", + "overhang_1_4_speed": "20", + "overhang_2_4_speed": "45", + "overhang_3_4_speed": "80", + "overhang_4_4_speed": "100", + "outer_wall_acceleration": "8000", + "inner_wall_acceleration": "10000", + "top_surface_acceleration": "0", + "internal_solid_infill_acceleration": "0", + "sparse_infill_acceleration": "15000", + "bridge_acceleration": "5000", + "initial_layer_acceleration": "2500", + "travel_acceleration": "15000", + "default_acceleration": "15000", + "line_width": "0.75", + "initial_layer_line_width": "1.1", + "inner_wall_line_width": "0.75", + "outer_wall_line_width": "0.70", + "sparse_infill_line_width": "0.75", + "internal_solid_infill_line_width": "0.75", + "top_surface_line_width": "0.75", + "support_line_width": "0.75", + "infill_wall_overlap": "18%", + "bridge_flow": "0.85", + "resolution": "0.0125", + "elefant_foot_compensation": "0.1", + "compatible_printers": [ + "RatRig V-Core 4 HYBRID 300 0.8 nozzle", + "RatRig V-Core 4 HYBRID 400 0.8 nozzle", + "RatRig V-Core 4 HYBRID 500 0.8 nozzle" + ] +} diff --git a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json index 3057ca6026c..88ded0ba490 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 ACE 0.4 nozzle.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "fdm_machine_common", "printer_model": "Sovol SV06 ACE", - "default_print_profile": "0.20mm Standard @Sovol SV06 ACE", + "default_print_profile": "0.20mm Standard @Sovol SV06 ACE - official", "nozzle_diameter": [ "0.4" ], @@ -127,4 +127,4 @@ "default_filament_profile": [ "Sovol SV06 ACE PLA" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json index 928e6a0913e..2223662fc58 100644 --- a/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json +++ b/resources/profiles/Sovol/machine/Sovol SV06 Plus ACE 0.4 nozzle.json @@ -6,7 +6,7 @@ "instantiation": "true", "inherits": "fdm_machine_common", "printer_model": "Sovol SV06 Plus ACE", - "default_print_profile": "0.20mm Standard @Sovol SV06 Plus ACE", + "default_print_profile": "0.20mm Standard @Sovol SV06 Plus ACE - official", "nozzle_diameter": [ "0.4" ], @@ -130,4 +130,4 @@ "default_filament_profile": [ "Sovol SV06 Plus ACE PLA" ] -} \ No newline at end of file +} diff --git a/resources/profiles/Volumic.json b/resources/profiles/Volumic.json new file mode 100644 index 00000000000..373d7341a2e --- /dev/null +++ b/resources/profiles/Volumic.json @@ -0,0 +1,234 @@ +{ + "name": "Volumic", + "version": "02.01.01.00", + "force_update": "0", + "description": "VOLUMIC configurations", + "machine_model_list": [ + { + "name": "EXO42", + "sub_path": "machine/EXO42.json" + }, + { + "name": "EXO65", + "sub_path": "machine/EXO65.json" + }, + { + "name": "SH65", + "sub_path": "machine/SH65.json" + }, + { + "name": "VS30SC2", + "sub_path": "machine/VS30SC2.json" + }, + { + "name": "VS30MK3", + "sub_path": "machine/VS30MK3.json" + }, + { + "name": "VS30MK2", + "sub_path": "machine/VS30MK2.json" + }, + { + "name": "VS20MK2", + "sub_path": "machine/VS20MK2.json" + } + ], + "process_list": [ + { + "name": "fdm_process_volumic_common", + "sub_path": "process/fdm_process_volumic_common.json" + }, + { + "name": "Compatible speed - 0.10mm", + "sub_path": "process/Compatible speed - 0.10mm.json" + }, + { + "name": "Compatible speed - 0.15mm", + "sub_path": "process/Compatible speed - 0.15mm.json" + }, + { + "name": "Compatible speed - 0.20mm", + "sub_path": "process/Compatible speed - 0.20mm.json" + }, + { + "name": "Compatible speed - 0.25mm", + "sub_path": "process/Compatible speed - 0.25mm.json" + }, + { + "name": "Compatible speed - 0.30mm", + "sub_path": "process/Compatible speed - 0.30mm.json" + }, + { + "name": "High speed - 0.10mm", + "sub_path": "process/High speed - 0.10mm.json" + }, + { + "name": "High speed - 0.15mm", + "sub_path": "process/High speed - 0.15mm.json" + }, + { + "name": "High speed - 0.20mm", + "sub_path": "process/High speed - 0.20mm.json" + }, + { + "name": "High speed - 0.25mm", + "sub_path": "process/High speed - 0.25mm.json" + }, + { + "name": "High speed - 0.30mm", + "sub_path": "process/High speed - 0.30mm.json" + }, + { + "name": "Normal speed - 0.10mm", + "sub_path": "process/Normal speed - 0.10mm.json" + }, + { + "name": "Normal speed - 0.15mm", + "sub_path": "process/Normal speed - 0.15mm.json" + }, + { + "name": "Normal speed - 0.20mm", + "sub_path": "process/Normal speed - 0.20mm.json" + }, + { + "name": "Normal speed - 0.25mm", + "sub_path": "process/Normal speed - 0.25mm.json" + }, + { + "name": "Normal speed - 0.30mm", + "sub_path": "process/Normal speed - 0.30mm.json" + }, + { + "name": "Very high speed - 0.10mm", + "sub_path": "process/Very high speed - 0.10mm.json" + }, + { + "name": "Very high speed - 0.15mm", + "sub_path": "process/Very high speed - 0.15mm.json" + }, + { + "name": "Very high speed - 0.20mm", + "sub_path": "process/Very high speed - 0.20mm.json" + }, + { + "name": "Very high speed - 0.25mm", + "sub_path": "process/Very high speed - 0.25mm.json" + }, + { + "name": "Very high speed - 0.30mm", + "sub_path": "process/Very high speed - 0.30mm.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "Volumic ABS Ultra", + "sub_path": "filament/Volumic ABS Ultra.json" + }, + { + "name": "Volumic ASA Ultra", + "sub_path": "filament/Volumic ASA Ultra.json" + }, + { + "name": "Volumic FLEX93 Ultra", + "sub_path": "filament/Volumic FLEX93 Ultra.json" + }, + { + "name": "Volumic NYLON Ultra", + "sub_path": "filament/Volumic NYLON Ultra.json" + }, + { + "name": "Volumic PC", + "sub_path": "filament/Volumic PC.json" + }, + { + "name": "Volumic PETG Ultra carbone", + "sub_path": "filament/Volumic PETG Ultra carbone.json" + }, + { + "name": "Volumic PETG Ultra", + "sub_path": "filament/Volumic PETG Ultra.json" + }, + { + "name": "Volumic PLA Ultra", + "sub_path": "filament/Volumic PLA Ultra.json" + }, + { + "name": "Volumic PVA", + "sub_path": "filament/Volumic PVA.json" + }, + { + "name": "Volumic UNIVERSAL Ultra", + "sub_path": "filament/Volumic UNIVERSAL Ultra.json" + } + ], + "machine_list": [ + { + "name": "fdm_volumic_common", + "sub_path": "machine/fdm_volumic_common.json" + }, + { + "name": "EXO42 (0.4 nozzle)", + "sub_path": "machine/EXO42 (0.4 nozzle).json" + }, + { + "name": "EXO65 (0.6 nozzle)", + "sub_path": "machine/EXO65 (0.6 nozzle).json" + }, + { + "name": "SH65 (0.4 nozzle)", + "sub_path": "machine/SH65 (0.4 nozzle).json" + }, + { + "name": "VS30SC2 (0.4 nozzle)", + "sub_path": "machine/VS30SC2 (0.4 nozzle).json" + }, + { + "name": "VS30MK3 (0.4 nozzle)", + "sub_path": "machine/VS30MK3 (0.4 nozzle).json" + }, + { + "name": "VS30MK2 (0.4 nozzle)", + "sub_path": "machine/VS30MK2 (0.4 nozzle).json" + }, + { + "name": "VS20MK2 (0.4 nozzle)", + "sub_path": "machine/VS20MK2 (0.4 nozzle).json" + } + ] +} diff --git a/resources/profiles/Volumic/EXO42_bed.STL b/resources/profiles/Volumic/EXO42_bed.STL new file mode 100644 index 00000000000..2dd3e9a6e4a Binary files /dev/null and b/resources/profiles/Volumic/EXO42_bed.STL differ diff --git a/resources/profiles/Volumic/EXO42_cover.png b/resources/profiles/Volumic/EXO42_cover.png new file mode 100644 index 00000000000..ba85f6dadd5 Binary files /dev/null and b/resources/profiles/Volumic/EXO42_cover.png differ diff --git a/resources/profiles/Volumic/EXO65_bed.STL b/resources/profiles/Volumic/EXO65_bed.STL new file mode 100644 index 00000000000..1b960173f18 Binary files /dev/null and b/resources/profiles/Volumic/EXO65_bed.STL differ diff --git a/resources/profiles/Volumic/EXO65_cover.png b/resources/profiles/Volumic/EXO65_cover.png new file mode 100644 index 00000000000..2f081bc3ff5 Binary files /dev/null and b/resources/profiles/Volumic/EXO65_cover.png differ diff --git a/resources/profiles/Volumic/SH65_bed.STL b/resources/profiles/Volumic/SH65_bed.STL new file mode 100644 index 00000000000..ef2c2cf1ed6 Binary files /dev/null and b/resources/profiles/Volumic/SH65_bed.STL differ diff --git a/resources/profiles/Volumic/SH65_cover.png b/resources/profiles/Volumic/SH65_cover.png new file mode 100644 index 00000000000..635200cace0 Binary files /dev/null and b/resources/profiles/Volumic/SH65_cover.png differ diff --git a/resources/profiles/Volumic/VS20MK2_cover.png b/resources/profiles/Volumic/VS20MK2_cover.png new file mode 100644 index 00000000000..9da7bdfeb95 Binary files /dev/null and b/resources/profiles/Volumic/VS20MK2_cover.png differ diff --git a/resources/profiles/Volumic/VS20_bed.STL b/resources/profiles/Volumic/VS20_bed.STL new file mode 100644 index 00000000000..c9cdf046e12 Binary files /dev/null and b/resources/profiles/Volumic/VS20_bed.STL differ diff --git a/resources/profiles/Volumic/VS30MK2_cover.png b/resources/profiles/Volumic/VS30MK2_cover.png new file mode 100644 index 00000000000..d30c5a24044 Binary files /dev/null and b/resources/profiles/Volumic/VS30MK2_cover.png differ diff --git a/resources/profiles/Volumic/VS30MK3_cover.png b/resources/profiles/Volumic/VS30MK3_cover.png new file mode 100644 index 00000000000..47b86d1046d Binary files /dev/null and b/resources/profiles/Volumic/VS30MK3_cover.png differ diff --git a/resources/profiles/Volumic/VS30PRO_bed.STL b/resources/profiles/Volumic/VS30PRO_bed.STL new file mode 100644 index 00000000000..f525305e083 Binary files /dev/null and b/resources/profiles/Volumic/VS30PRO_bed.STL differ diff --git a/resources/profiles/Volumic/VS30SC2_cover.png b/resources/profiles/Volumic/VS30SC2_cover.png new file mode 100644 index 00000000000..1900d4fba4a Binary files /dev/null and b/resources/profiles/Volumic/VS30SC2_cover.png differ diff --git a/resources/profiles/Volumic/VS30U_bed.STL b/resources/profiles/Volumic/VS30U_bed.STL new file mode 100644 index 00000000000..57d41a0b819 Binary files /dev/null and b/resources/profiles/Volumic/VS30U_bed.STL differ diff --git a/resources/profiles/Volumic/filament/Volumic ABS Ultra.json b/resources/profiles/Volumic/filament/Volumic ABS Ultra.json new file mode 100644 index 00000000000..02c4875ca0c --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic ABS Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Volumic ABS Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "235" + ], + "hot_plate_temp" : [ + "75" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic ASA Ultra.json b/resources/profiles/Volumic/filament/Volumic ASA Ultra.json new file mode 100644 index 00000000000..cb9ad730a30 --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic ASA Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Volumic ASA Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.96" + ], + "nozzle_temperature": [ + "235" + ], + "hot_plate_temp" : [ + "85" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "30" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json new file mode 100644 index 00000000000..7f9ea4a66f9 --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic FLEX93 Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSR99", + "name": "Volumic FLEX93 Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_flow_ratio": [ + "1.20" + ], + "nozzle_temperature": [ + "235" + ], + "hot_plate_temp" : [ + "45" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "50" + ], + "filament_max_volumetric_speed": [ + "4" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json b/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json new file mode 100644 index 00000000000..d0096e8a35b --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic NYLON Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSN98", + "name": "Volumic NYLON Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "238" + ], + "hot_plate_temp" : [ + "65" + ], + "fan_max_speed": [ + "0" + ], + "fan_min_speed": [ + "0" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic PC.json b/resources/profiles/Volumic/filament/Volumic PC.json new file mode 100644 index 00000000000..bc79bd61fe2 --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic PC.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSC99", + "name": "Volumic PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "270" + ], + "hot_plate_temp" : [ + "115" + ], + "fan_max_speed": [ + "0" + ], + "fan_min_speed": [ + "0" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json new file mode 100644 index 00000000000..6f1ba0536dc --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra carbone.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFG98", + "setting_id": "GFSG50", + "name": "Volumic PETG Ultra carbone", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "230" + ], + "hot_plate_temp" : [ + "65" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "60" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic PETG Ultra.json b/resources/profiles/Volumic/filament/Volumic PETG Ultra.json new file mode 100644 index 00000000000..06ea14f51c0 --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic PETG Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSG99", + "name": "Volumic PETG Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "230" + ], + "hot_plate_temp" : [ + "60" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic PLA Ultra.json b/resources/profiles/Volumic/filament/Volumic PLA Ultra.json new file mode 100644 index 00000000000..aff528301dd --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic PLA Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "Volumic PLA Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "210" + ], + "hot_plate_temp" : [ + "50" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/Volumic PVA.json b/resources/profiles/Volumic/filament/Volumic PVA.json new file mode 100644 index 00000000000..b371382fcd9 --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic PVA.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSS99", + "name": "Volumic PVA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "210" + ], + "hot_plate_temp" : [ + "60" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} \ No newline at end of file diff --git a/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json new file mode 100644 index 00000000000..725fb5b866c --- /dev/null +++ b/resources/profiles/Volumic/filament/Volumic UNIVERSAL Ultra.json @@ -0,0 +1,36 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "Volumic UNIVERSAL Ultra", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "1.00" + ], + "nozzle_temperature": [ + "225" + ], + "hot_plate_temp" : [ + "50" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_abs.json b/resources/profiles/Volumic/filament/fdm_filament_abs.json new file mode 100644 index 00000000000..eb2c833b1ec --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_abs.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "90" + ], + "eng_plate_temp" : [ + "90" + ], + "hot_plate_temp" : [ + "90" + ], + "textured_plate_temp" : [ + "90" + ], + "cool_plate_temp_initial_layer" : [ + "90" + ], + "eng_plate_temp_initial_layer" : [ + "90" + ], + "hot_plate_temp_initial_layer" : [ + "90" + ], + "textured_plate_temp_initial_layer" : [ + "90" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "70" + ], + "nozzle_temperature": [ + "235" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_asa.json b/resources/profiles/Volumic/filament/fdm_filament_asa.json new file mode 100644 index 00000000000..6ec3d5be3b1 --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_asa.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "90" + ], + "hot_plate_temp" : [ + "90" + ], + "textured_plate_temp" : [ + "90" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "90" + ], + "hot_plate_temp_initial_layer" : [ + "90" + ], + "textured_plate_temp_initial_layer" : [ + "90" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "70" + ], + "nozzle_temperature": [ + "235" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_common.json b/resources/profiles/Volumic/filament/fdm_filament_common.json new file mode 100644 index 00000000000..2e62dadd837 --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_common.json @@ -0,0 +1,87 @@ +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "50" + ], + "eng_plate_temp" : [ + "50" + ], + "hot_plate_temp" : [ + "50" + ], + "textured_plate_temp" : [ + "50" + ], + "cool_plate_temp_initial_layer" : [ + "50" + ], + "eng_plate_temp_initial_layer" : [ + "50" + ], + "hot_plate_temp_initial_layer" : [ + "50" + ], + "textured_plate_temp_initial_layer" : [ + "50" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "37.50" + ], + "filament_density": [ + "1" + ], + "filament_diameter": [ + "1.75" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Volumic" + ], + "bed_type": [ + "Hot Plate" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "60" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "nozzle_temperature": [ + "210" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_pa.json b/resources/profiles/Volumic/filament/fdm_filament_pa.json new file mode 100644 index 00000000000..264d99b82b8 --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_pa.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "name": "fdm_filament_pa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "65" + ], + "eng_plate_temp" : [ + "65" + ], + "hot_plate_temp" : [ + "65" + ], + "textured_plate_temp" : [ + "65" + ], + "cool_plate_temp_initial_layer" : [ + "65" + ], + "eng_plate_temp_initial_layer" : [ + "65" + ], + "hot_plate_temp_initial_layer" : [ + "65" + ], + "textured_plate_temp_initial_layer" : [ + "65" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "4" + ], + "filament_max_volumetric_speed": [ + "20" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "238" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "50" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "50" + ], + "nozzle_temperature": [ + "235" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_pc.json b/resources/profiles/Volumic/filament/fdm_filament_pc.json new file mode 100644 index 00000000000..7a80cc0679d --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_pc.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "name": "fdm_filament_pc", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_speed": [ + "50" + ], + "nozzle_temperature": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_pet.json b/resources/profiles/Volumic/filament/fdm_filament_pet.json new file mode 100644 index 00000000000..1ab77c8ad5d --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_pet.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "235" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "30" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "230" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_pla.json b/resources/profiles/Volumic/filament/fdm_filament_pla.json new file mode 100644 index 00000000000..44309c3830d --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_pla.json @@ -0,0 +1,76 @@ +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "42" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "37.50" + ], + "cool_plate_temp" : [ + "50" + ], + "eng_plate_temp" : [ + "50" + ], + "hot_plate_temp" : [ + "50" + ], + "textured_plate_temp" : [ + "50" + ], + "cool_plate_temp_initial_layer" : [ + "50" + ], + "eng_plate_temp_initial_layer" : [ + "50" + ], + "hot_plate_temp_initial_layer" : [ + "50" + ], + "textured_plate_temp_initial_layer" : [ + "50" + ], + "nozzle_temperature_initial_layer": [ + "210" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "210" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_pva.json b/resources/profiles/Volumic/filament/fdm_filament_pva.json new file mode 100644 index 00000000000..d362a6de1b2 --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_pva.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pva", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_soluble": [ + "1" + ], + "filament_is_support": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "37.50" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "70" + ], + "fan_min_speed": [ + "40" + ], + "overhang_fan_speed": [ + "80" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ] +} diff --git a/resources/profiles/Volumic/filament/fdm_filament_tpu.json b/resources/profiles/Volumic/filament/fdm_filament_tpu.json new file mode 100644 index 00000000000..b0e6f8085ad --- /dev/null +++ b/resources/profiles/Volumic/filament/fdm_filament_tpu.json @@ -0,0 +1,70 @@ +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "45" + ], + "eng_plate_temp" : [ + "45" + ], + "hot_plate_temp" : [ + "45" + ], + "textured_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "30" + ], + "textured_plate_temp_initial_layer" : [ + "30" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "5" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "37.50" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "235" + ] +} diff --git a/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json b/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json new file mode 100644 index 00000000000..d7d1c6d4bb2 --- /dev/null +++ b/resources/profiles/Volumic/machine/EXO42 (0.4 nozzle).json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "EXO42 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "EXO42", + "default_print_profile": "Normal speed - 0.15mm", + "host_type": "esp3d", + "print_host": "192.168.0.60", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","420x0","420x420","0x420"], + "printable_height": "420", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.3"], + "min_layer_height": ["0.025"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y419 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y419 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/EXO42.json b/resources/profiles/Volumic/machine/EXO42.json new file mode 100644 index 00000000000..945524976de --- /dev/null +++ b/resources/profiles/Volumic/machine/EXO42.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "EXO42", + "model_id": "V420", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "EXO42_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json b/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json new file mode 100644 index 00000000000..c783bd7d30e --- /dev/null +++ b/resources/profiles/Volumic/machine/EXO65 (0.6 nozzle).json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "EXO65 (0.6 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "EXO65", + "default_print_profile": "Normal speed - 0.15mm", + "host_type": "esp3d", + "print_host": "192.168.0.60", + "nozzle_diameter": ["0.6"], + "printable_area": ["0x0","650x0","650x650","0x650"], + "printable_height": "650", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.5"], + "min_layer_height": ["0.05"], + "printer_variant": "0.6", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y649 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y649 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/EXO65.json b/resources/profiles/Volumic/machine/EXO65.json new file mode 100644 index 00000000000..946b5793aee --- /dev/null +++ b/resources/profiles/Volumic/machine/EXO65.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "EXO65", + "model_id": "V650", + "nozzle_diameter": "0.6", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "EXO65_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json b/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json new file mode 100644 index 00000000000..509e1e5d84e --- /dev/null +++ b/resources/profiles/Volumic/machine/SH65 (0.4 nozzle).json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "SH65 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "SH65", + "default_print_profile": "Normal speed - 0.15mm", + "host_type": "esp3d", + "print_host": "192.168.0.60", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","650x0","650x300","0x300"], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.3"], + "min_layer_height": ["0.025"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y299 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y299 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/SH65.json b/resources/profiles/Volumic/machine/SH65.json new file mode 100644 index 00000000000..8595be6afbf --- /dev/null +++ b/resources/profiles/Volumic/machine/SH65.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "SH65", + "model_id": "V650300", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "SH65_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/VS20MK2 (0.4 nozzle).json b/resources/profiles/Volumic/machine/VS20MK2 (0.4 nozzle).json new file mode 100644 index 00000000000..882a25b051a --- /dev/null +++ b/resources/profiles/Volumic/machine/VS20MK2 (0.4 nozzle).json @@ -0,0 +1,42 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "VS20MK2 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "VS20MK2", + "default_print_profile": "Compatible speed - 0.15mm", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","200x0","200x200","0x200"], + "printable_height": "220", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.275"], + "min_layer_height": ["0.05"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2"], + "retraction_speed": ["25"], + "deretraction_speed": ["25"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y199 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y199 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/VS20MK2.json b/resources/profiles/Volumic/machine/VS20MK2.json new file mode 100644 index 00000000000..312a794d0a7 --- /dev/null +++ b/resources/profiles/Volumic/machine/VS20MK2.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "VS20MK2", + "model_id": "V20", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "VS20_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/VS30MK2 (0.4 nozzle).json b/resources/profiles/Volumic/machine/VS30MK2 (0.4 nozzle).json new file mode 100644 index 00000000000..b93efe2ab2e --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30MK2 (0.4 nozzle).json @@ -0,0 +1,42 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "VS30MK2 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "VS30MK2", + "default_print_profile": "Compatible speed - 0.15mm", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","300x0","300x200","0x200"], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.275"], + "min_layer_height": ["0.05"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2"], + "retraction_speed": ["25"], + "deretraction_speed": ["25"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y299 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y299 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/VS30MK2.json b/resources/profiles/Volumic/machine/VS30MK2.json new file mode 100644 index 00000000000..cb068264cf5 --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30MK2.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "VS30MK2", + "model_id": "V30", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "VS30PRO_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/VS30MK3 (0.4 nozzle).json b/resources/profiles/Volumic/machine/VS30MK3 (0.4 nozzle).json new file mode 100644 index 00000000000..ba6f34aecfc --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30MK3 (0.4 nozzle).json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "VS30MK3 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "VS30MK3", + "default_print_profile": "Normal speed - 0.15mm", + "host_type": "esp3d", + "print_host": "192.168.0.60", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","300x0","300x200","0x200"], + "printable_height": "300", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.3"], + "min_layer_height": ["0.025"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y299 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y299 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/VS30MK3.json b/resources/profiles/Volumic/machine/VS30MK3.json new file mode 100644 index 00000000000..dfb2c15122b --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30MK3.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "VS30MK3", + "model_id": "V300A", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "VS30U_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/VS30SC2 (0.4 nozzle).json b/resources/profiles/Volumic/machine/VS30SC2 (0.4 nozzle).json new file mode 100644 index 00000000000..ae318a6f850 --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30SC2 (0.4 nozzle).json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "VS30SC2 (0.4 nozzle)", + "from": "system", + "instantiation": "true", + "inherits": "fdm_volumic_common", + "printer_model": "VS30SC2", + "default_print_profile": "Normal speed - 0.15mm", + "host_type": "esp3d", + "print_host": "192.168.0.60", + "nozzle_diameter": ["0.4"], + "printable_area": ["0x0","300x0","300x200","0x200"], + "printable_height": "310", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "gcode_flavor": "marlin", + "max_layer_height": ["0.3"], + "min_layer_height": ["0.025"], + "printer_variant": "0.4", + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "deretraction_speed": ["30"], + + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y199 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "before_layer_change_gcode": "G92 E0", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y199 F5000\nM84\nM300" +} \ No newline at end of file diff --git a/resources/profiles/Volumic/machine/VS30SC2.json b/resources/profiles/Volumic/machine/VS30SC2.json new file mode 100644 index 00000000000..faca3c35af7 --- /dev/null +++ b/resources/profiles/Volumic/machine/VS30SC2.json @@ -0,0 +1,10 @@ +{ + "type": "machine_model", + "name": "VS30SC2", + "model_id": "V300", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "VOLUMIC", + "bed_model": "VS30U_bed.STL", + "default_materials": "Volumic UNIVERSAL Ultra" +} diff --git a/resources/profiles/Volumic/machine/fdm_volumic_common.json b/resources/profiles/Volumic/machine/fdm_volumic_common.json new file mode 100644 index 00000000000..37f63f0ada3 --- /dev/null +++ b/resources/profiles/Volumic/machine/fdm_volumic_common.json @@ -0,0 +1,44 @@ +{ + "type": "machine", + "name": "fdm_volumic_common", + "from": "system", + "instantiation": "false", + "gcode_flavor": "marlin", + "emit_machine_limits_to_gcode": ["0"], + "machine_max_acceleration_e": ["0"], + "machine_max_acceleration_extruding": ["0"], + "machine_max_acceleration_retracting": ["0"], + "machine_max_acceleration_x": ["0"], + "machine_max_acceleration_y": ["0"], + "machine_max_acceleration_z": ["0"], + "machine_max_speed_e": ["0"], + "machine_max_speed_x": ["0"], + "machine_max_speed_y": ["0"], + "machine_max_speed_z": ["0"], + "machine_max_jerk_e": ["0"], + "machine_max_jerk_x": ["0"], + "machine_max_jerk_y": ["0"], + "machine_max_jerk_z": ["0"], + "printer_settings_id": "", + "printer_technology": "FFF", + "printer_variant": "0.4", + "retract_before_wipe": ["70%"], + "retract_when_changing_layer": ["1"], + "retract_length_toolchange": ["6"], + "z_hop": ["0"], + "retraction_minimum_travel": ["1"], + "retraction_length": ["2.4"], + "retraction_speed": ["30"], + "silent_mode": "0", + "single_extruder_multi_material": "1", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M601", + "wipe": ["1"], + "default_filament_profile": ["Volumic UNIVERSAL Ultra"], + "bed_exclude_area": ["0x0"], + "scan_first_layer": "0", + "nozzle_type": "undefine", + "machine_start_gcode": "M117 Demarrage\nM106 S0\nM140 S[first_layer_bed_temperature]\nM104 T0 S[first_layer_temperature]\nG28\nG90\nM82\nG92 E0\nG1 Z5 F600\nG1 X1 Y299 F6000\nM109 T0 S[first_layer_temperature]\nM300 P350\nG92 E0\nM117 Impression", + "machine_end_gcode": "M107\nM104 S0\nM140 S0\nG0 X1 Y299 F5000\nM84\nM300", + "before_layer_change_gcode": "G92 E0" +} diff --git a/resources/profiles/Volumic/process/Compatible speed - 0.10mm.json b/resources/profiles/Volumic/process/Compatible speed - 0.10mm.json new file mode 100644 index 00000000000..a08e8deb85e --- /dev/null +++ b/resources/profiles/Volumic/process/Compatible speed - 0.10mm.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Compatible speed - 0.10mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.1", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", + "outer_wall_speed": "40", + "inner_wall_speed": "60", + "internal_solid_infill_speed": "60", + "top_surface_speed": "60", + "gap_infill_speed": "60", + "sparse_infill_speed": "60", + "travel_speed": "60", + "support_speed": "60", + "support_interface_speed": "60", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Compatible speed - 0.15mm.json b/resources/profiles/Volumic/process/Compatible speed - 0.15mm.json new file mode 100644 index 00000000000..ff404ab5a90 --- /dev/null +++ b/resources/profiles/Volumic/process/Compatible speed - 0.15mm.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Compatible speed - 0.15mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.15", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", + "outer_wall_speed": "40", + "inner_wall_speed": "60", + "internal_solid_infill_speed": "60", + "top_surface_speed": "60", + "gap_infill_speed": "60", + "sparse_infill_speed": "60", + "travel_speed": "60", + "support_speed": "60", + "support_interface_speed": "60", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Compatible speed - 0.20mm.json b/resources/profiles/Volumic/process/Compatible speed - 0.20mm.json new file mode 100644 index 00000000000..21d23bf5735 --- /dev/null +++ b/resources/profiles/Volumic/process/Compatible speed - 0.20mm.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Compatible speed - 0.20mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "bottom_shell_layers": "5", + "top_shell_layers": "5", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", + "outer_wall_speed": "40", + "inner_wall_speed": "60", + "internal_solid_infill_speed": "60", + "top_surface_speed": "60", + "gap_infill_speed": "60", + "sparse_infill_speed": "60", + "travel_speed": "60", + "support_speed": "60", + "support_interface_speed": "60", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Compatible speed - 0.25mm.json b/resources/profiles/Volumic/process/Compatible speed - 0.25mm.json new file mode 100644 index 00000000000..6e6aaa4927d --- /dev/null +++ b/resources/profiles/Volumic/process/Compatible speed - 0.25mm.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Compatible speed - 0.25mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", + "outer_wall_speed": "40", + "inner_wall_speed": "60", + "internal_solid_infill_speed": "60", + "top_surface_speed": "60", + "gap_infill_speed": "60", + "sparse_infill_speed": "60", + "travel_speed": "60", + "support_speed": "60", + "support_interface_speed": "60", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Compatible speed - 0.30mm.json b/resources/profiles/Volumic/process/Compatible speed - 0.30mm.json new file mode 100644 index 00000000000..98ca4186666 --- /dev/null +++ b/resources/profiles/Volumic/process/Compatible speed - 0.30mm.json @@ -0,0 +1,32 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Compatible speed - 0.30mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "50", + "initial_layer_infill_speed": "50", + "outer_wall_speed": "40", + "inner_wall_speed": "60", + "internal_solid_infill_speed": "60", + "top_surface_speed": "60", + "gap_infill_speed": "60", + "sparse_infill_speed": "60", + "travel_speed": "60", + "support_speed": "60", + "support_interface_speed": "60", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)", + "VS30MK2 (0.4 nozzle)", + "VS20MK2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/High speed - 0.10mm.json b/resources/profiles/Volumic/process/High speed - 0.10mm.json new file mode 100644 index 00000000000..0b45c946b01 --- /dev/null +++ b/resources/profiles/Volumic/process/High speed - 0.10mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "High speed - 0.10mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.1", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "90", + "inner_wall_speed": "135", + "internal_solid_infill_speed": "135", + "top_surface_speed": "135", + "gap_infill_speed": "135", + "sparse_infill_speed": "135", + "travel_speed": "135", + "support_speed": "135", + "support_interface_speed": "135", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/High speed - 0.15mm.json b/resources/profiles/Volumic/process/High speed - 0.15mm.json new file mode 100644 index 00000000000..5d2d1885dcf --- /dev/null +++ b/resources/profiles/Volumic/process/High speed - 0.15mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "High speed - 0.15mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.15", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "90", + "inner_wall_speed": "135", + "internal_solid_infill_speed": "135", + "top_surface_speed": "135", + "gap_infill_speed": "135", + "sparse_infill_speed": "135", + "travel_speed": "135", + "support_speed": "135", + "support_interface_speed": "135", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/High speed - 0.20mm.json b/resources/profiles/Volumic/process/High speed - 0.20mm.json new file mode 100644 index 00000000000..69f413874c2 --- /dev/null +++ b/resources/profiles/Volumic/process/High speed - 0.20mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "High speed - 0.20mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "bottom_shell_layers": "5", + "top_shell_layers": "5", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "90", + "inner_wall_speed": "135", + "internal_solid_infill_speed": "135", + "top_surface_speed": "135", + "gap_infill_speed": "135", + "sparse_infill_speed": "135", + "travel_speed": "135", + "support_speed": "135", + "support_interface_speed": "135", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/High speed - 0.25mm.json b/resources/profiles/Volumic/process/High speed - 0.25mm.json new file mode 100644 index 00000000000..ac2edb9caa7 --- /dev/null +++ b/resources/profiles/Volumic/process/High speed - 0.25mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "High speed - 0.25mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "90", + "inner_wall_speed": "135", + "internal_solid_infill_speed": "135", + "top_surface_speed": "135", + "gap_infill_speed": "135", + "sparse_infill_speed": "135", + "travel_speed": "135", + "support_speed": "135", + "support_interface_speed": "135", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/High speed - 0.30mm.json b/resources/profiles/Volumic/process/High speed - 0.30mm.json new file mode 100644 index 00000000000..be775f91fd0 --- /dev/null +++ b/resources/profiles/Volumic/process/High speed - 0.30mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "High speed - 0.30mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "90", + "inner_wall_speed": "135", + "internal_solid_infill_speed": "135", + "top_surface_speed": "135", + "gap_infill_speed": "135", + "sparse_infill_speed": "135", + "travel_speed": "135", + "support_speed": "135", + "support_interface_speed": "135", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Normal speed - 0.10mm.json b/resources/profiles/Volumic/process/Normal speed - 0.10mm.json new file mode 100644 index 00000000000..bebbbfd4a90 --- /dev/null +++ b/resources/profiles/Volumic/process/Normal speed - 0.10mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Normal speed - 0.10mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.1", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "70", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "100", + "travel_speed": "135", + "support_speed": "100", + "support_interface_speed": "100", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Normal speed - 0.15mm.json b/resources/profiles/Volumic/process/Normal speed - 0.15mm.json new file mode 100644 index 00000000000..63bdf5290f1 --- /dev/null +++ b/resources/profiles/Volumic/process/Normal speed - 0.15mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Normal speed - 0.15mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.15", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "70", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "100", + "travel_speed": "135", + "support_speed": "100", + "support_interface_speed": "100", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Normal speed - 0.20mm.json b/resources/profiles/Volumic/process/Normal speed - 0.20mm.json new file mode 100644 index 00000000000..8c181ffd484 --- /dev/null +++ b/resources/profiles/Volumic/process/Normal speed - 0.20mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Normal speed - 0.20mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "bottom_shell_layers": "5", + "top_shell_layers": "5", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "70", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "100", + "travel_speed": "135", + "support_speed": "100", + "support_interface_speed": "100", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Normal speed - 0.25mm.json b/resources/profiles/Volumic/process/Normal speed - 0.25mm.json new file mode 100644 index 00000000000..410b7080583 --- /dev/null +++ b/resources/profiles/Volumic/process/Normal speed - 0.25mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Normal speed - 0.25mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "70", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "100", + "travel_speed": "135", + "support_speed": "100", + "support_interface_speed": "100", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Normal speed - 0.30mm.json b/resources/profiles/Volumic/process/Normal speed - 0.30mm.json new file mode 100644 index 00000000000..74ff4371db6 --- /dev/null +++ b/resources/profiles/Volumic/process/Normal speed - 0.30mm.json @@ -0,0 +1,30 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Normal speed - 0.30mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "70", + "inner_wall_speed": "100", + "internal_solid_infill_speed": "100", + "top_surface_speed": "100", + "gap_infill_speed": "100", + "sparse_infill_speed": "100", + "travel_speed": "135", + "support_speed": "100", + "support_interface_speed": "100", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30MK3 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Very high speed - 0.10mm.json b/resources/profiles/Volumic/process/Very high speed - 0.10mm.json new file mode 100644 index 00000000000..ea747e11156 --- /dev/null +++ b/resources/profiles/Volumic/process/Very high speed - 0.10mm.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Very high speed - 0.10mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.1", + "initial_layer_print_height": "0.1", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "110", + "inner_wall_speed": "170", + "internal_solid_infill_speed": "170", + "top_surface_speed": "170", + "gap_infill_speed": "170", + "sparse_infill_speed": "170", + "travel_speed": "170", + "support_speed": "170", + "support_interface_speed": "170", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Very high speed - 0.15mm.json b/resources/profiles/Volumic/process/Very high speed - 0.15mm.json new file mode 100644 index 00000000000..3ce8fad5f5a --- /dev/null +++ b/resources/profiles/Volumic/process/Very high speed - 0.15mm.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Very high speed - 0.15mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.15", + "initial_layer_print_height": "0.15", + "bottom_shell_layers": "8", + "top_shell_layers": "8", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "110", + "inner_wall_speed": "170", + "internal_solid_infill_speed": "170", + "top_surface_speed": "170", + "gap_infill_speed": "170", + "sparse_infill_speed": "170", + "travel_speed": "170", + "support_speed": "170", + "support_interface_speed": "170", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Very high speed - 0.20mm.json b/resources/profiles/Volumic/process/Very high speed - 0.20mm.json new file mode 100644 index 00000000000..0b78bdb9931 --- /dev/null +++ b/resources/profiles/Volumic/process/Very high speed - 0.20mm.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Very high speed - 0.20mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.2", + "initial_layer_print_height": "0.2", + "bottom_shell_layers": "5", + "top_shell_layers": "5", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "110", + "inner_wall_speed": "170", + "internal_solid_infill_speed": "170", + "top_surface_speed": "170", + "gap_infill_speed": "170", + "sparse_infill_speed": "170", + "travel_speed": "170", + "support_speed": "170", + "support_interface_speed": "170", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Very high speed - 0.25mm.json b/resources/profiles/Volumic/process/Very high speed - 0.25mm.json new file mode 100644 index 00000000000..1d24acf22f6 --- /dev/null +++ b/resources/profiles/Volumic/process/Very high speed - 0.25mm.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Very high speed - 0.25mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.25", + "initial_layer_print_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "110", + "inner_wall_speed": "170", + "internal_solid_infill_speed": "170", + "top_surface_speed": "170", + "gap_infill_speed": "170", + "sparse_infill_speed": "170", + "travel_speed": "170", + "support_speed": "170", + "support_interface_speed": "170", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/Very high speed - 0.30mm.json b/resources/profiles/Volumic/process/Very high speed - 0.30mm.json new file mode 100644 index 00000000000..3660103987f --- /dev/null +++ b/resources/profiles/Volumic/process/Very high speed - 0.30mm.json @@ -0,0 +1,29 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "Very high speed - 0.30mm", + "from": "system", + "inherits": "fdm_process_volumic_common", + "instantiation": "true", + "layer_height": "0.3", + "initial_layer_print_height": "0.3", + "bottom_shell_layers": "3", + "top_shell_layers": "3", + "initial_layer_speed": "80", + "initial_layer_infill_speed": "80", + "outer_wall_speed": "110", + "inner_wall_speed": "170", + "internal_solid_infill_speed": "170", + "top_surface_speed": "170", + "gap_infill_speed": "170", + "sparse_infill_speed": "170", + "travel_speed": "170", + "support_speed": "170", + "support_interface_speed": "170", + "compatible_printers": [ + "EXO42 (0.4 nozzle)", + "EXO65 (0.6 nozzle)", + "SH65 (0.4 nozzle)", + "VS30SC2 (0.4 nozzle)" + ] +} diff --git a/resources/profiles/Volumic/process/fdm_process_volumic_common.json b/resources/profiles/Volumic/process/fdm_process_volumic_common.json new file mode 100644 index 00000000000..a371e0fbad1 --- /dev/null +++ b/resources/profiles/Volumic/process/fdm_process_volumic_common.json @@ -0,0 +1,116 @@ +{ + "type": "process", + "name": "fdm_process_volumic_common", + "from": "system", + "instantiation": "false", + "default_acceleration": ["0"], + "outer_wall_acceleration": ["0"], + "inner_wall_acceleration": ["0"], + "bridge_acceleration": ["0"], + "sparse_infill_acceleration": ["0"], + "internal_solid_infill_acceleration": ["0"], + "initial_layer_acceleration": ["0"], + "top_surface_acceleration": ["0"], + "travel_acceleration": ["0"], + + "precise_outer_wall": "1", + "enable_overhang_speed": "1", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "1", + "max_travel_detour_distance": "0", + "extra_perimeters_on_overhangs": "1", + "overhang_reverse": "1", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "bridge_speed": "60", + "internal_bridge_speed": "100%", + "thick_bridges": "1", + "brim_type": "no_brim", + "brim_width": "0", + "brim_object_gap": "2", + "print_sequence": "by layer", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0", + "enable_arc_fitting": "0", + "outer_wall_line_width": "100%", + "line_width": "100%", + "initial_layer_line_width": "100%", + "sparse_infill_line_width": "100%", + "inner_wall_line_width": "100%", + "internal_solid_infill_line_width": "100%", + "support_line_width": "100%", + "top_surface_line_width": "100%", + "wall_infill_order": "inner wall/outer wall/infill", + "infill_direction": "45", + "sparse_infill_density": "25%", + "sparse_infill_pattern": "grid", + "infill_combination": "0", + "infill_anchor":"20%", + "infill_wall_overlap": "20%", + "interface_shells": "0", + "ironing_flow": "25%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "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": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "wall_loops": "3", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "support_on_buildplate_only": "1", + "skirt_loops": "1", + "minimum_sparse_infill_area": "15", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.01", + "support_type": "normal(auto)", + "support_style": "default", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.1", + "support_bottom_z_distance": "0.1", + "support_filament": "0", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "4", + "support_interface_bottom_layers": "4", + "support_interface_spacing": "0.5", + "support_bottom_interface_spacing": "0.5", + "support_base_pattern": "lightning", + "support_base_pattern_spacing": "2.5", + "support_angle": "45", + "support_threshold_angle": "50", + "support_object_xy_distance": "0.35", + "tree_support_branch_angle": "50", + "tree_support_wall_count": "0", + "detect_thin_wall": "0", + "top_surface_pattern": "monotonicline", + "top_shell_layers": "5", + "top_shell_thickness": "0", + "initial_layer_speed": "15", + "initial_layer_infill_speed": "20", + "outer_wall_speed": "60", + "inner_wall_speed": "80", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "50", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Voron.json b/resources/profiles/Voron.json index 7bfa7c66150..a821cfc7c0d 100644 --- a/resources/profiles/Voron.json +++ b/resources/profiles/Voron.json @@ -58,6 +58,10 @@ "name": "fdm_process_voron_common_0_2_5", "sub_path": "process/fdm_process_voron_common_0_2_5.json" }, + { + "name": "fdm_process_voron_common_0_5", + "sub_path": "process/fdm_process_voron_common_0_5.json" + }, { "name": "fdm_process_voron_common_0_6", "sub_path": "process/fdm_process_voron_common_0_6.json" @@ -205,6 +209,30 @@ { "name": "0.80mm Extra Draft 1.0 nozzle @Voron", "sub_path": "process/0.80mm Extra Draft 1.0 nozzle @Voron.json" + }, + { + "name": "0.10mm Extra Fine 0.5 nozzle @Voron", + "sub_path": "process/0.10mm Extra Fine 0.5 nozzle @Voron.json" + }, + { + "name": "0.15mm Fine 0.5 nozzle @Voron", + "sub_path": "process/0.15mm Fine 0.5 nozzle @Voron.json" + }, + { + "name": "0.20mm Optimal 0.5 nozzle @Voron", + "sub_path": "process/0.20mm Optimal 0.5 nozzle @Voron.json" + }, + { + "name": "0.25mm Standard 0.5 nozzle @Voron", + "sub_path": "process/0.25mm Standard 0.5 nozzle @Voron.json" + }, + { + "name": "0.30mm Draft 0.5 nozzle @Voron", + "sub_path": "process/0.30mm Draft 0.5 nozzle @Voron.json" + }, + { + "name": "0.35mm Extra Draft 0.5 nozzle @Voron", + "sub_path": "process/0.35mm Extra Draft 0.5 nozzle @Voron.json" } ], "filament_list": [ @@ -310,6 +338,10 @@ "name": "Voron 2.4 250 0.25 nozzle", "sub_path": "machine/Voron 2.4 250 0.25 nozzle.json" }, + { + "name": "Voron 2.4 250 0.5 nozzle", + "sub_path": "machine/Voron 2.4 250 0.5 nozzle.json" + }, { "name": "Voron 2.4 250 0.6 nozzle", "sub_path": "machine/Voron 2.4 250 0.6 nozzle.json" @@ -338,6 +370,10 @@ "name": "Voron 2.4 300 0.25 nozzle", "sub_path": "machine/Voron 2.4 300 0.25 nozzle.json" }, + { + "name": "Voron 2.4 300 0.5 nozzle", + "sub_path": "machine/Voron 2.4 300 0.5 nozzle.json" + }, { "name": "Voron 2.4 300 0.6 nozzle", "sub_path": "machine/Voron 2.4 300 0.6 nozzle.json" @@ -366,6 +402,10 @@ "name": "Voron 2.4 350 0.25 nozzle", "sub_path": "machine/Voron 2.4 350 0.25 nozzle.json" }, + { + "name": "Voron 2.4 350 0.5 nozzle", + "sub_path": "machine/Voron 2.4 350 0.5 nozzle.json" + }, { "name": "Voron 2.4 350 0.6 nozzle", "sub_path": "machine/Voron 2.4 350 0.6 nozzle.json" @@ -394,6 +434,10 @@ "name": "Voron Trident 250 0.25 nozzle", "sub_path": "machine/Voron Trident 250 0.25 nozzle.json" }, + { + "name": "Voron Trident 250 0.5 nozzle", + "sub_path": "machine/Voron Trident 250 0.5 nozzle.json" + }, { "name": "Voron Trident 250 0.6 nozzle", "sub_path": "machine/Voron Trident 250 0.6 nozzle.json" @@ -422,6 +466,10 @@ "name": "Voron Trident 300 0.25 nozzle", "sub_path": "machine/Voron Trident 300 0.25 nozzle.json" }, + { + "name": "Voron Trident 300 0.5 nozzle", + "sub_path": "machine/Voron Trident 300 0.5 nozzle.json" + }, { "name": "Voron Trident 300 0.6 nozzle", "sub_path": "machine/Voron Trident 300 0.6 nozzle.json" @@ -450,6 +498,10 @@ "name": "Voron Trident 350 0.25 nozzle", "sub_path": "machine/Voron Trident 350 0.25 nozzle.json" }, + { + "name": "Voron Trident 350 0.5 nozzle", + "sub_path": "machine/Voron Trident 350 0.5 nozzle.json" + }, { "name": "Voron Trident 350 0.6 nozzle", "sub_path": "machine/Voron Trident 350 0.6 nozzle.json" @@ -478,6 +530,10 @@ "name": "Voron 0.1 0.25 nozzle", "sub_path": "machine/Voron 0.1 0.25 nozzle.json" }, + { + "name": "Voron 0.1 0.5 nozzle", + "sub_path": "machine/Voron 0.1 0.5 nozzle.json" + }, { "name": "Voron 0.1 0.6 nozzle", "sub_path": "machine/Voron 0.1 0.6 nozzle.json" @@ -506,6 +562,10 @@ "name": "Voron Switchwire 250 0.25 nozzle", "sub_path": "machine/Voron Switchwire 250 0.25 nozzle.json" }, + { + "name": "Voron Switchwire 250 0.5 nozzle", + "sub_path": "machine/Voron Switchwire 250 0.5 nozzle.json" + }, { "name": "Voron Switchwire 250 0.6 nozzle", "sub_path": "machine/Voron Switchwire 250 0.6 nozzle.json" diff --git a/resources/profiles/Voron/filament/Voron Generic ABS.json b/resources/profiles/Voron/filament/Voron Generic ABS.json index a321511ad05..a93df9012fe 100644 --- a/resources/profiles/Voron/filament/Voron Generic ABS.json +++ b/resources/profiles/Voron/filament/Voron Generic ABS.json @@ -17,6 +17,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -24,6 +25,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -31,6 +33,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -38,6 +41,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -45,6 +49,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -52,6 +57,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -59,6 +65,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -66,6 +73,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic ASA.json b/resources/profiles/Voron/filament/Voron Generic ASA.json index 2e32235db16..2c323cb5255 100644 --- a/resources/profiles/Voron/filament/Voron Generic ASA.json +++ b/resources/profiles/Voron/filament/Voron Generic ASA.json @@ -17,6 +17,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -24,6 +25,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -31,6 +33,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -38,6 +41,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -45,6 +49,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -52,6 +57,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -59,6 +65,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -66,6 +73,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PA-CF.json b/resources/profiles/Voron/filament/Voron Generic PA-CF.json index 868ca5dba60..30e5136fd0c 100644 --- a/resources/profiles/Voron/filament/Voron Generic PA-CF.json +++ b/resources/profiles/Voron/filament/Voron Generic PA-CF.json @@ -23,6 +23,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -30,6 +31,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -37,6 +39,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -44,6 +47,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -51,6 +55,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -58,6 +63,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -65,6 +71,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -72,6 +79,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PA.json b/resources/profiles/Voron/filament/Voron Generic PA.json index 391f8717444..91790d2f80c 100644 --- a/resources/profiles/Voron/filament/Voron Generic PA.json +++ b/resources/profiles/Voron/filament/Voron Generic PA.json @@ -20,6 +20,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -27,6 +28,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -34,6 +36,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -41,6 +44,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -48,6 +52,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -55,6 +60,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -62,6 +68,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -69,6 +76,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PC.json b/resources/profiles/Voron/filament/Voron Generic PC.json index eec0beb6eb1..96de811416b 100644 --- a/resources/profiles/Voron/filament/Voron Generic PC.json +++ b/resources/profiles/Voron/filament/Voron Generic PC.json @@ -17,6 +17,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -24,6 +25,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -31,6 +33,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -38,6 +41,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -45,6 +49,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -52,6 +57,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -59,6 +65,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -66,6 +73,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PETG.json b/resources/profiles/Voron/filament/Voron Generic PETG.json index ddd396ff4c4..6238ed6a3cf 100644 --- a/resources/profiles/Voron/filament/Voron Generic PETG.json +++ b/resources/profiles/Voron/filament/Voron Generic PETG.json @@ -47,6 +47,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -54,6 +55,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -61,6 +63,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -68,6 +71,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -75,6 +79,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -82,6 +87,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -89,6 +95,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -96,6 +103,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PLA-CF.json b/resources/profiles/Voron/filament/Voron Generic PLA-CF.json index 9de164685b5..904e2327530 100644 --- a/resources/profiles/Voron/filament/Voron Generic PLA-CF.json +++ b/resources/profiles/Voron/filament/Voron Generic PLA-CF.json @@ -23,6 +23,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -30,6 +31,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -37,6 +39,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -44,6 +47,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -51,6 +55,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -58,6 +63,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -65,6 +71,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -72,6 +79,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PLA.json b/resources/profiles/Voron/filament/Voron Generic PLA.json index 699970bf687..1147466761f 100644 --- a/resources/profiles/Voron/filament/Voron Generic PLA.json +++ b/resources/profiles/Voron/filament/Voron Generic PLA.json @@ -20,6 +20,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -27,6 +28,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -34,6 +36,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -41,6 +44,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -48,6 +52,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -55,6 +60,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -62,6 +68,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -69,6 +76,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic PVA.json b/resources/profiles/Voron/filament/Voron Generic PVA.json index 631be1e27a0..75cb3f3b224 100644 --- a/resources/profiles/Voron/filament/Voron Generic PVA.json +++ b/resources/profiles/Voron/filament/Voron Generic PVA.json @@ -23,6 +23,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -30,6 +31,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -37,6 +39,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -44,6 +47,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -51,6 +55,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -58,6 +63,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -65,6 +71,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -72,6 +79,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/filament/Voron Generic TPU.json b/resources/profiles/Voron/filament/Voron Generic TPU.json index 891156cf1db..00ea690e72a 100644 --- a/resources/profiles/Voron/filament/Voron Generic TPU.json +++ b/resources/profiles/Voron/filament/Voron Generic TPU.json @@ -14,6 +14,7 @@ "Voron 2.4 250 0.15 nozzle", "Voron 2.4 250 0.2 nozzle", "Voron 2.4 250 0.25 nozzle", + "Voron 2.4 250 0.5 nozzle", "Voron 2.4 250 0.6 nozzle", "Voron 2.4 250 0.8 nozzle", "Voron 2.4 250 1.0 nozzle", @@ -21,6 +22,7 @@ "Voron 2.4 300 0.15 nozzle", "Voron 2.4 300 0.2 nozzle", "Voron 2.4 300 0.25 nozzle", + "Voron 2.4 300 0.5 nozzle", "Voron 2.4 300 0.6 nozzle", "Voron 2.4 300 0.8 nozzle", "Voron 2.4 300 1.0 nozzle", @@ -28,6 +30,7 @@ "Voron 2.4 350 0.15 nozzle", "Voron 2.4 350 0.2 nozzle", "Voron 2.4 350 0.25 nozzle", + "Voron 2.4 350 0.5 nozzle", "Voron 2.4 350 0.6 nozzle", "Voron 2.4 350 0.8 nozzle", "Voron 2.4 350 1.0 nozzle", @@ -35,6 +38,7 @@ "Voron Trident 250 0.15 nozzle", "Voron Trident 250 0.2 nozzle", "Voron Trident 250 0.25 nozzle", + "Voron Trident 250 0.5 nozzle", "Voron Trident 250 0.6 nozzle", "Voron Trident 250 0.8 nozzle", "Voron Trident 250 1.0 nozzle", @@ -42,6 +46,7 @@ "Voron Trident 300 0.15 nozzle", "Voron Trident 300 0.2 nozzle", "Voron Trident 300 0.25 nozzle", + "Voron Trident 300 0.5 nozzle", "Voron Trident 300 0.6 nozzle", "Voron Trident 300 0.8 nozzle", "Voron Trident 300 1.0 nozzle", @@ -49,6 +54,7 @@ "Voron Trident 350 0.15 nozzle", "Voron Trident 350 0.2 nozzle", "Voron Trident 350 0.25 nozzle", + "Voron Trident 350 0.5 nozzle", "Voron Trident 350 0.6 nozzle", "Voron Trident 350 0.8 nozzle", "Voron Trident 350 1.0 nozzle", @@ -56,6 +62,7 @@ "Voron 0.1 0.15 nozzle", "Voron 0.1 0.2 nozzle", "Voron 0.1 0.25 nozzle", + "Voron 0.1 0.5 nozzle", "Voron 0.1 0.6 nozzle", "Voron 0.1 0.8 nozzle", "Voron 0.1 1.0 nozzle", @@ -63,6 +70,7 @@ "Voron Switchwire 250 0.15 nozzle", "Voron Switchwire 250 0.2 nozzle", "Voron Switchwire 250 0.25 nozzle", + "Voron Switchwire 250 0.5 nozzle", "Voron Switchwire 250 0.6 nozzle", "Voron Switchwire 250 0.8 nozzle", "Voron Switchwire 250 1.0 nozzle" diff --git a/resources/profiles/Voron/machine/Voron 0.1 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron 0.1 0.5 nozzle.json new file mode 100644 index 00000000000..7efe30a3c81 --- /dev/null +++ b/resources/profiles/Voron/machine/Voron 0.1 0.5 nozzle.json @@ -0,0 +1,29 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron 0.1 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron 0.1", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "120x0", + "120x120", + "0x120" + ], + "printable_height": "120", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron 0.1.json b/resources/profiles/Voron/machine/Voron 0.1.json index d520c09d238..a773f78eda2 100644 --- a/resources/profiles/Voron/machine/Voron 0.1.json +++ b/resources/profiles/Voron/machine/Voron 0.1.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron 0.1", "model_id": "Voron0", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_120_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron 2.4 250 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron 2.4 250 0.5 nozzle.json new file mode 100644 index 00000000000..af60cbe29d2 --- /dev/null +++ b/resources/profiles/Voron/machine/Voron 2.4 250 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron 2.4 250 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron 2.4 250", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "250x0", + "250x250", + "0x250" + ], + "printable_height": "225", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron 2.4 250.json b/resources/profiles/Voron/machine/Voron 2.4 250.json index a0936a3a8fd..b032e4e7794 100644 --- a/resources/profiles/Voron/machine/Voron 2.4 250.json +++ b/resources/profiles/Voron/machine/Voron 2.4 250.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron 2.4 250", "model_id": "Voron2_250", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_250_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron 2.4 300 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron 2.4 300 0.5 nozzle.json new file mode 100644 index 00000000000..52fb046b562 --- /dev/null +++ b/resources/profiles/Voron/machine/Voron 2.4 300 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron 2.4 300 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron 2.4 300", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "275", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron 2.4 300.json b/resources/profiles/Voron/machine/Voron 2.4 300.json index 5291f7a2fff..094357baa46 100644 --- a/resources/profiles/Voron/machine/Voron 2.4 300.json +++ b/resources/profiles/Voron/machine/Voron 2.4 300.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron 2.4 300", "model_id": "Voron2_300", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_300_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron 2.4 350 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron 2.4 350 0.5 nozzle.json new file mode 100644 index 00000000000..856008d6b2a --- /dev/null +++ b/resources/profiles/Voron/machine/Voron 2.4 350 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron 2.4 350 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron 2.4 350", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "325", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron 2.4 350.json b/resources/profiles/Voron/machine/Voron 2.4 350.json index ae772b063d8..785831a3a15 100644 --- a/resources/profiles/Voron/machine/Voron 2.4 350.json +++ b/resources/profiles/Voron/machine/Voron 2.4 350.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron 2.4 350", "model_id": "Voron2_350", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_350_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron Switchwire 250 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron Switchwire 250 0.5 nozzle.json new file mode 100644 index 00000000000..5b8044a8dbf --- /dev/null +++ b/resources/profiles/Voron/machine/Voron Switchwire 250 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron Switchwire 250 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron Switchwire 250", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "250x0", + "250x210", + "0x210" + ], + "printable_height": "240", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron Switchwire 250.json b/resources/profiles/Voron/machine/Voron Switchwire 250.json index 6a3e3de7ccc..9955eaa057d 100644 --- a/resources/profiles/Voron/machine/Voron Switchwire 250.json +++ b/resources/profiles/Voron/machine/Voron Switchwire 250.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron Switchwire 250", "model_id": "Voron_Switchwire_250", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "", diff --git a/resources/profiles/Voron/machine/Voron Trident 250 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron Trident 250 0.5 nozzle.json new file mode 100644 index 00000000000..f7c94d5454c --- /dev/null +++ b/resources/profiles/Voron/machine/Voron Trident 250 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron Trident 250 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron Trident 250", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "250x0", + "250x250", + "0x250" + ], + "printable_height": "250", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron Trident 250.json b/resources/profiles/Voron/machine/Voron Trident 250.json index d3fe9e5b230..614aa804e2b 100644 --- a/resources/profiles/Voron/machine/Voron Trident 250.json +++ b/resources/profiles/Voron/machine/Voron Trident 250.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron Trident 250", "model_id": "Voron2_Trident_250", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_250_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron Trident 300 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron Trident 300 0.5 nozzle.json new file mode 100644 index 00000000000..b1e47991f0b --- /dev/null +++ b/resources/profiles/Voron/machine/Voron Trident 300 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron Trident 300 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron Trident 300", + "default_print_profile": "0.25mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "300x0", + "300x300", + "0x300" + ], + "printable_height": "250", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron Trident 300.json b/resources/profiles/Voron/machine/Voron Trident 300.json index 05bb448a2a8..9f5ca659ea2 100644 --- a/resources/profiles/Voron/machine/Voron Trident 300.json +++ b/resources/profiles/Voron/machine/Voron Trident 300.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron Trident 300", "model_id": "Voron2_Trident_300", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_300_build_plate.stl", diff --git a/resources/profiles/Voron/machine/Voron Trident 350 0.5 nozzle.json b/resources/profiles/Voron/machine/Voron Trident 350 0.5 nozzle.json new file mode 100644 index 00000000000..ef3fcbacd6c --- /dev/null +++ b/resources/profiles/Voron/machine/Voron Trident 350 0.5 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "machine", + "setting_id": "GM003", + "name": "Voron Trident 350 0.5 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_klipper_common", + "printer_model": "Voron Trident 350", + "default_print_profile": "0.30mm Standard 0.5 nozzle @Voron", + "max_layer_height": [ + "0.4" + ], + "min_layer_height": [ + "0.1" + ], + "nozzle_diameter": [ + "0.5" + ], + "printable_area": [ + "0x0", + "350x0", + "350x350", + "0x350" + ], + "printable_height": "250", + "printer_variant": "0.5" +} diff --git a/resources/profiles/Voron/machine/Voron Trident 350.json b/resources/profiles/Voron/machine/Voron Trident 350.json index 850c49bb970..7be86f54356 100644 --- a/resources/profiles/Voron/machine/Voron Trident 350.json +++ b/resources/profiles/Voron/machine/Voron Trident 350.json @@ -2,7 +2,7 @@ "type": "machine_model", "name": "Voron Trident 350", "model_id": "Voron2_Trident_350", - "nozzle_diameter": "0.4;0.15;0.2;0.25;0.6;0.8;1.0", + "nozzle_diameter": "0.4;0.15;0.2;0.25;0.5;0.6;0.8;1.0", "machine_tech": "FFF", "family": "VoronDesign", "bed_model": "Voron_350_build_plate.stl", diff --git a/resources/profiles/Voron/process/0.10mm Extra Fine 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.10mm Extra Fine 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..f55a77fbc4f --- /dev/null +++ b/resources/profiles/Voron/process/0.10mm Extra Fine 0.5 nozzle @Voron.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.10mm Extra Fine 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.10", + "bottom_shell_layers": "6", + "top_shell_layers": "8" +} diff --git a/resources/profiles/Voron/process/0.15mm Fine 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.15mm Fine 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..13c74e27249 --- /dev/null +++ b/resources/profiles/Voron/process/0.15mm Fine 0.5 nozzle @Voron.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.15mm Fine 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.15", + "bottom_shell_layers": "4", + "top_shell_layers": "6" +} diff --git a/resources/profiles/Voron/process/0.20mm Optimal 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.20mm Optimal 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..dd602f1201f --- /dev/null +++ b/resources/profiles/Voron/process/0.20mm Optimal 0.5 nozzle @Voron.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Optimal 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.20", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Voron/process/0.25mm Standard 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.25mm Standard 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..9dc9a48ef29 --- /dev/null +++ b/resources/profiles/Voron/process/0.25mm Standard 0.5 nozzle @Voron.json @@ -0,0 +1,11 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.25mm Standard 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.25", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Voron/process/0.30mm Draft 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.30mm Draft 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..5e56b9e0236 --- /dev/null +++ b/resources/profiles/Voron/process/0.30mm Draft 0.5 nozzle @Voron.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.30mm Draft 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.30", + "top_surface_line_width": "0.55", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Voron/process/0.35mm Extra Draft 0.5 nozzle @Voron.json b/resources/profiles/Voron/process/0.35mm Extra Draft 0.5 nozzle @Voron.json new file mode 100644 index 00000000000..4e21043a99b --- /dev/null +++ b/resources/profiles/Voron/process/0.35mm Extra Draft 0.5 nozzle @Voron.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.35mm Extra Draft 0.5 nozzle @Voron", + "from": "system", + "instantiation": "true", + "inherits": "fdm_process_voron_common_0_5", + "layer_height": "0.35", + "top_surface_line_width": "0.55", + "bottom_shell_layers": "3", + "top_shell_layers": "4" +} diff --git a/resources/profiles/Voron/process/fdm_process_voron_common_0_5.json b/resources/profiles/Voron/process/fdm_process_voron_common_0_5.json new file mode 100644 index 00000000000..57f5b7dc865 --- /dev/null +++ b/resources/profiles/Voron/process/fdm_process_voron_common_0_5.json @@ -0,0 +1,26 @@ +{ + "type": "process", + "name": "fdm_process_voron_common_0_5", + "from": "system", + "instantiation": "false", + "inherits": "fdm_process_voron_common", + "initial_layer_line_width": "0.52", + "initial_layer_print_height": "0.25", + "outer_wall_line_width": "0.52", + "line_width": "0.52", + "sparse_infill_line_width": "0.52", + "inner_wall_line_width": "0.52", + "internal_solid_infill_line_width": "0.52", + "support_line_width": "0.52", + "top_surface_line_width": "0.52", + "compatible_printers": [ + "Voron 0.1 0.5 nozzle", + "Voron 2.4 250 0.5 nozzle", + "Voron 2.4 300 0.5 nozzle", + "Voron 2.4 350 0.5 nozzle", + "Voron Trident 250 0.5 nozzle", + "Voron Trident 300 0.5 nozzle", + "Voron Trident 350 0.5 nozzle", + "Voron Switchwire 250 0.5 nozzle" + ] +} diff --git a/resources/web/guide/21/21.js b/resources/web/guide/21/21.js index 131420dbddb..d7a4d640dc8 100644 --- a/resources/web/guide/21/21.js +++ b/resources/web/guide/21/21.js @@ -303,12 +303,18 @@ function FilterModelList(keyword) { function SelectPrinterAll( sVendor ) { $("input[vendor='"+sVendor+"']").prop("checked", true); + $("input[vendor='"+sVendor+"']").each(function() { + CheckBoxOnclick(this); + }); } function SelectPrinterNone( sVendor ) { $("input[vendor='"+sVendor+"']").prop("checked", false); + $("input[vendor='"+sVendor+"']").each(function() { + CheckBoxOnclick(this); + }); } diff --git a/resources/web/guide/24/24.js b/resources/web/guide/24/24.js index bc3e33820de..611020f7040 100644 --- a/resources/web/guide/24/24.js +++ b/resources/web/guide/24/24.js @@ -303,12 +303,18 @@ function FilterModelList(keyword) { function SelectPrinterAll( sVendor ) { $("input[vendor='"+sVendor+"']").prop("checked", true); + $("input[vendor='"+sVendor+"']").each(function() { + CheckBoxOnclick(this); + }); } function SelectPrinterNone( sVendor ) { $("input[vendor='"+sVendor+"']").prop("checked", false); + $("input[vendor='"+sVendor+"']").each(function() { + CheckBoxOnclick(this); + }); } function OnExitFilter() { diff --git a/src/libslic3r/Algorithm/LineSplit.cpp b/src/libslic3r/Algorithm/LineSplit.cpp index c532e08349f..f63033c0261 100644 --- a/src/libslic3r/Algorithm/LineSplit.cpp +++ b/src/libslic3r/Algorithm/LineSplit.cpp @@ -264,7 +264,7 @@ SplittedLine do_split_line(const ClipperZUtils::ZPath& path, const ExPolygons& c } for (const auto segment : node) { for (const ClipperZUtils::ZPoint& sp : *segment) { - assert(!is_clip(sp.z())); + assert(!is_clip(sp)); result.emplace_back(to_point(sp), true, sp.z()); } result.back().clipped = false; // Mark the end of the clipped line diff --git a/src/libslic3r/Color.hpp b/src/libslic3r/Color.hpp index ad119d3c56c..c3c0d49e848 100644 --- a/src/libslic3r/Color.hpp +++ b/src/libslic3r/Color.hpp @@ -67,6 +67,7 @@ class ColorRGB static const ColorRGB YELLOW() { return { 1.0f, 1.0f, 0.0f }; } static const ColorRGB WHITE() { return { 1.0f, 1.0f, 1.0f }; } static const ColorRGB ORCA() { return {0.0f, 150.f / 255.0f, 136.0f / 255}; } + static const ColorRGB WARNING() { return {241.0f / 255, 117.f / 255.0f, 78.0f / 255}; } static const ColorRGB X() { return { 0.75f, 0.0f, 0.0f }; } static const ColorRGB Y() { return { 0.0f, 0.75f, 0.0f }; } diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index c9a2ef25499..29769752dac 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -1792,6 +1792,7 @@ enum BambuBedType { bbtEngineeringPlate = 2, bbtHighTemperaturePlate = 3, bbtTexturedPEIPlate = 4, + bbtSuperTackPlate = 5, }; static BambuBedType to_bambu_bed_type(BedType type) @@ -1807,6 +1808,8 @@ static BambuBedType to_bambu_bed_type(BedType type) bambu_bed_type = bbtTexturedPEIPlate; else if (type == btPCT) bambu_bed_type = bbtCoolPlate; + else if (type == btSuperTack) + bambu_bed_type = bbtSuperTackPlate; return bambu_bed_type; } @@ -1898,36 +1901,42 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato if (!print.config().small_area_infill_flow_compensation_model.empty()) m_small_area_infill_flow_compensator = make_unique(print.config()); - - file.write_format("; HEADER_BLOCK_START\n"); - // Write information on the generator. - file.write_format("; generated by %s on %s\n", Slic3r::header_slic3r_generated().c_str(), Slic3r::Utils::local_timestamp().c_str()); - if (is_bbl_printers) - file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str()); - //BBS: total layer number - file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Total_Layer_Number_Placeholder).c_str()); - m_enable_exclude_object = config().exclude_object; - //Orca: extra check for bbl printer - if (is_bbl_printers) { - if (print.calib_params().mode == CalibMode::Calib_None) { // Don't support skipping in cali mode - // list all label_object_id with sorted order here - m_enable_exclude_object = true; - m_label_objects_ids.clear(); - m_label_objects_ids.reserve(print.num_object_instances()); - for (const PrintObject *print_object : print.objects()) - for (const PrintInstance &print_instance : print_object->instances()) - m_label_objects_ids.push_back(print_instance.model_instance->get_labeled_id()); - - std::sort(m_label_objects_ids.begin(), m_label_objects_ids.end()); - - std::string objects_id_list = "; model label id: "; - for (auto it = m_label_objects_ids.begin(); it != m_label_objects_ids.end(); it++) - objects_id_list += (std::to_string(*it) + (it != m_label_objects_ids.end() - 1 ? "," : "\n")); - file.writeln(objects_id_list); - } else { - m_enable_exclude_object = false; - m_label_objects_ids.clear(); - } + // Orca: Don't output Header block if BTT thumbnail is identified in the list + // Get the thumbnails value as a string + std::string thumbnails_value = print.config().option("thumbnails")->value; + // search string for the BTT_TFT label + bool has_BTT_thumbnail = (thumbnails_value.find("BTT_TFT") != std::string::npos); + + if(!has_BTT_thumbnail){ + file.write_format("; HEADER_BLOCK_START\n"); + // Write information on the generator. + file.write_format("; generated by %s on %s\n", Slic3r::header_slic3r_generated().c_str(), Slic3r::Utils::local_timestamp().c_str()); + if (is_bbl_printers) + file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str()); + //BBS: total layer number + file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Total_Layer_Number_Placeholder).c_str()); + m_enable_exclude_object = config().exclude_object; + //Orca: extra check for bbl printer + if (is_bbl_printers) { + if (print.calib_params().mode == CalibMode::Calib_None) { // Don't support skipping in cali mode + // list all label_object_id with sorted order here + m_enable_exclude_object = true; + m_label_objects_ids.clear(); + m_label_objects_ids.reserve(print.num_object_instances()); + for (const PrintObject *print_object : print.objects()) + for (const PrintInstance &print_instance : print_object->instances()) + m_label_objects_ids.push_back(print_instance.model_instance->get_labeled_id()); + + std::sort(m_label_objects_ids.begin(), m_label_objects_ids.end()); + + std::string objects_id_list = "; model label id: "; + for (auto it = m_label_objects_ids.begin(); it != m_label_objects_ids.end(); it++) + objects_id_list += (std::to_string(*it) + (it != m_label_objects_ids.end() - 1 ? "," : "\n")); + file.writeln(objects_id_list); + } else { + m_enable_exclude_object = false; + m_label_objects_ids.clear(); + } } { @@ -1949,7 +1958,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato } file.write_format("; HEADER_BLOCK_END\n\n"); - + } // BBS: write global config at the beginning of gcode file because printer // need these config information diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 757939637ed..f1bae32ebc7 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -98,6 +98,8 @@ const std::vector GCodeProcessor::Reserved_Tags_compatible = { const std::string GCodeProcessor::Flush_Start_Tag = " FLUSH_START"; const std::string GCodeProcessor::Flush_End_Tag = " FLUSH_END"; +//Orca: External device purge tag +const std::string GCodeProcessor::External_Purge_Tag = " EXTERNAL_PURGE"; const float GCodeProcessor::Wipe_Width = 0.05f; const float GCodeProcessor::Wipe_Height = 0.05f; @@ -2289,6 +2291,24 @@ void GCodeProcessor::process_tags(const std::string_view comment, bool producers m_flushing = false; return; } + + // Orca: Integrate filament consumption for purging performed to an external device and controlled via macros + // (eg. Happy Hare) in the filament consumption stats. + if (boost::starts_with(comment, GCodeProcessor::External_Purge_Tag)) { + std::regex numberRegex(R"(\d+\.\d+)"); + std::smatch match; + std::string line(comment); + if (std::regex_search(line, match, numberRegex)) { + float filament_diameter = (static_cast(m_extruder_id) < m_result.filament_diameters.size()) ? m_result.filament_diameters[m_extruder_id] : m_result.filament_diameters.back(); + float filament_radius = 0.5f * filament_diameter; + float area_filament_cross_section = static_cast(M_PI) * sqr(filament_radius); + + float dE = std::stof(match.str()); + float volume_extruded_filament = area_filament_cross_section * dE; + m_used_filaments.update_flush_per_filament(m_extruder_id, volume_extruded_filament); + } + return; + } if (!producers_enabled || m_producer == EProducer::OrcaSlicer) { // height tag diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index 21403cc2053..e7b6e6f8833 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -272,6 +272,7 @@ class Print; static const std::vector Reserved_Tags_compatible; static const std::string Flush_Start_Tag; static const std::string Flush_End_Tag; + static const std::string External_Purge_Tag; public: enum class ETags : unsigned char { diff --git a/src/libslic3r/Geometry.cpp b/src/libslic3r/Geometry.cpp index 49e50a671dd..3e67d4e1ba4 100644 --- a/src/libslic3r/Geometry.cpp +++ b/src/libslic3r/Geometry.cpp @@ -717,6 +717,54 @@ Transformation Transformation::volume_to_bed_transformation(const Transformation return out; } +// For parsing a transformation matrix from 3MF / AMF. +Transform3d transform3d_from_string(const std::string& transform_str) +{ + assert(is_decimal_separator_point()); // for atof + Transform3d transform = Transform3d::Identity(); + + if (!transform_str.empty()) { + std::vector mat_elements_str; + boost::split(mat_elements_str, transform_str, boost::is_any_of(" "), boost::token_compress_on); + + const unsigned int size = (unsigned int)mat_elements_str.size(); + if (size == 16) { + unsigned int i = 0; + for (unsigned int r = 0; r < 4; ++r) { + for (unsigned int c = 0; c < 4; ++c) { + transform(r, c) = ::atof(mat_elements_str[i++].c_str()); + } + } + } + } + + return transform; +} + +Eigen::Quaterniond rotation_xyz_diff(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) +{ + return + // From the current coordinate system to world. + Eigen::AngleAxisd(rot_xyz_to.z(), Vec3d::UnitZ()) * Eigen::AngleAxisd(rot_xyz_to.y(), Vec3d::UnitY()) * Eigen::AngleAxisd(rot_xyz_to.x(), Vec3d::UnitX()) * + // From world to the initial coordinate system. + Eigen::AngleAxisd(-rot_xyz_from.x(), Vec3d::UnitX()) * Eigen::AngleAxisd(-rot_xyz_from.y(), Vec3d::UnitY()) * Eigen::AngleAxisd(-rot_xyz_from.z(), Vec3d::UnitZ()); +} + +// This should only be called if it is known, that the two rotations only differ in rotation around the Z axis. +double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) +{ + const Eigen::AngleAxisd angle_axis(rotation_xyz_diff(rot_xyz_from, rot_xyz_to)); + const Vec3d axis = angle_axis.axis(); + const double angle = angle_axis.angle(); +#ifndef NDEBUG + if (std::abs(angle) > 1e-8) { + assert(std::abs(axis.x()) < 1e-8); + assert(std::abs(axis.y()) < 1e-8); + } +#endif /* NDEBUG */ + return (axis.z() < 0) ? -angle : angle; +} + TransformationSVD::TransformationSVD(const Transform3d& trafo) { const auto &m0 = trafo.matrix().block<3, 3>(0, 0); @@ -764,52 +812,31 @@ TransformationSVD::TransformationSVD(const Transform3d& trafo) skew = false; } -// For parsing a transformation matrix from 3MF / AMF. -Transform3d transform3d_from_string(const std::string& transform_str) + Transformation mat_around_a_point_rotate(const Transformation &InMat, const Vec3d &pt, const Vec3d &axis, float rotate_theta_radian) { - assert(is_decimal_separator_point()); // for atof - Transform3d transform = Transform3d::Identity(); + auto xyz = InMat.get_offset(); + Transformation left; + left.set_offset(-xyz); // at world origin + auto curMat = left * InMat; - if (!transform_str.empty()) { - std::vector mat_elements_str; - boost::split(mat_elements_str, transform_str, boost::is_any_of(" "), boost::token_compress_on); + auto qua = Eigen::Quaterniond(Eigen::AngleAxisd(rotate_theta_radian, axis)); + qua.normalize(); + Transform3d cur_matrix; + Transformation rotateMat4; + rotateMat4.set_matrix(cur_matrix.fromPositionOrientationScale(Vec3d(0., 0., 0.), qua, Vec3d(1., 1., 1.))); - const unsigned int size = (unsigned int)mat_elements_str.size(); - if (size == 16) { - unsigned int i = 0; - for (unsigned int r = 0; r < 4; ++r) { - for (unsigned int c = 0; c < 4; ++c) { - transform(r, c) = ::atof(mat_elements_str[i++].c_str()); - } - } - } - } - - return transform; -} + curMat = rotateMat4 * curMat; // along_fix_axis + // rotate mat4 along fix pt + Transformation temp_world; + auto qua_world = Eigen::Quaterniond(Eigen::AngleAxisd(0, axis)); + qua_world.normalize(); + Transform3d cur_matrix_world; + temp_world.set_matrix(cur_matrix_world.fromPositionOrientationScale(pt, qua_world, Vec3d(1., 1., 1.))); + auto temp_xyz = temp_world.get_matrix().inverse() * xyz; + auto new_pos = temp_world.get_matrix() * (rotateMat4.get_matrix() * temp_xyz); + curMat.set_offset(new_pos); -Eigen::Quaterniond rotation_xyz_diff(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) -{ - return - // From the current coordinate system to world. - Eigen::AngleAxisd(rot_xyz_to.z(), Vec3d::UnitZ()) * Eigen::AngleAxisd(rot_xyz_to.y(), Vec3d::UnitY()) * Eigen::AngleAxisd(rot_xyz_to.x(), Vec3d::UnitX()) * - // From world to the initial coordinate system. - Eigen::AngleAxisd(-rot_xyz_from.x(), Vec3d::UnitX()) * Eigen::AngleAxisd(-rot_xyz_from.y(), Vec3d::UnitY()) * Eigen::AngleAxisd(-rot_xyz_from.z(), Vec3d::UnitZ()); -} - -// This should only be called if it is known, that the two rotations only differ in rotation around the Z axis. -double rotation_diff_z(const Vec3d &rot_xyz_from, const Vec3d &rot_xyz_to) -{ - const Eigen::AngleAxisd angle_axis(rotation_xyz_diff(rot_xyz_from, rot_xyz_to)); - const Vec3d axis = angle_axis.axis(); - const double angle = angle_axis.angle(); -#ifndef NDEBUG - if (std::abs(angle) > 1e-8) { - assert(std::abs(axis.x()) < 1e-8); - assert(std::abs(axis.y()) < 1e-8); - } -#endif /* NDEBUG */ - return (axis.z() < 0) ? -angle : angle; + return curMat; } }} // namespace Slic3r::Geometry diff --git a/src/libslic3r/Geometry.hpp b/src/libslic3r/Geometry.hpp index 2b027a231a8..8183dcb7e81 100644 --- a/src/libslic3r/Geometry.hpp +++ b/src/libslic3r/Geometry.hpp @@ -10,7 +10,7 @@ // Serialization through the Cereal library #include -namespace Slic3r { +namespace Slic3r { namespace ClipperLib { class PolyNode; @@ -544,6 +544,7 @@ inline bool is_rotation_ninety_degrees(const Vec3d &rotation) return is_rotation_ninety_degrees(rotation.x()) && is_rotation_ninety_degrees(rotation.y()) && is_rotation_ninety_degrees(rotation.z()); } +Transformation mat_around_a_point_rotate(const Transformation& innMat, const Vec3d &pt, const Vec3d &axis, float rotate_theta_radian); } } // namespace Slicer::Geometry #endif diff --git a/src/libslic3r/Measure.cpp b/src/libslic3r/Measure.cpp index c6f1276e83b..0100c1574e0 100644 --- a/src/libslic3r/Measure.cpp +++ b/src/libslic3r/Measure.cpp @@ -13,7 +13,27 @@ namespace Slic3r { namespace Measure { +bool get_point_projection_to_plane(const Vec3d &pt, const Vec3d &plane_origin, const Vec3d &plane_normal, Vec3d &intersection_pt) +{ + auto normal = plane_normal.normalized(); + auto BA = plane_origin - pt; + auto length = BA.dot(normal); + intersection_pt = pt + length * normal; + return true; +} +Vec3d get_one_point_in_plane(const Vec3d &plane_origin, const Vec3d &plane_normal) +{ + Vec3d dir(1, 0, 0); + float eps = 1e-3; + if (abs(plane_normal.dot(dir)) > 1 - eps) { + dir = Vec3d(0, 1, 0); + } + auto new_pt = plane_origin + dir; + Vec3d retult; + get_point_projection_to_plane(new_pt, plane_origin, plane_normal, retult); + return retult; +} constexpr double feature_hover_limit = 0.5; // how close to a feature the mouse must be to highlight it @@ -33,7 +53,7 @@ static std::tuple get_center_and_radius(const std::vector double error = std::numeric_limits::max(); auto circle = Geometry::circle_ransac(out, iter, &error); - + return std::make_tuple(trafo.inverse() * Vec3d(circle.center.x(), circle.center.y(), z), circle.radius, error); } @@ -69,16 +89,18 @@ class MeasuringImpl { bool features_extracted = false; }; - std::optional get_feature(size_t face_idx, const Vec3d& point); + std::optional get_feature(size_t face_idx, const Vec3d &point, const Transform3d &world_tran,bool only_select_plane); int get_num_of_planes() const; const std::vector& get_plane_triangle_indices(int idx) const; + std::vector* get_plane_tri_indices(int idx); const std::vector& get_plane_features(unsigned int plane_id); + std::vector* get_plane_features_pointer(unsigned int plane_id); const indexed_triangle_set& get_its() const; private: void update_planes(); void extract_features(int plane_idx); - + std::vector m_planes; std::vector m_face_to_plane; indexed_triangle_set m_its; @@ -158,7 +180,7 @@ void MeasuringImpl::update_planes() m_planes.back().normal = normal_ptr->cast(); std::sort(m_planes.back().facets.begin(), m_planes.back().facets.end()); } - + // Check that each facet is part of one of the planes. assert(std::none_of(m_face_to_plane.begin(), m_face_to_plane.end(), [](size_t val) { return val == size_t(-1); })); @@ -175,7 +197,7 @@ void MeasuringImpl::update_planes() const auto& facets = planes[plane_id].facets; planes[plane_id].borders.clear(); std::vector> visited(facets.size(), {false, false, false}); - + for (int face_id=0; face_id()); //Vertex_index target = sm.target(he); const Halfedge_index he_start = he; - + Face_index fi = he.face(); auto face_it = std::lower_bound(facets.begin(), facets.end(), int(fi)); assert(face_it != facets.end()); @@ -228,7 +250,7 @@ void MeasuringImpl::update_planes() he = sm.opposite(he); if (he.is_invalid()) goto PLANE_FAILURE; - + Face_index fi = he.face(); auto face_it = std::lower_bound(facets.begin(), facets.end(), int(fi)); if (face_it == facets.end() || *face_it != int(fi)) // This indicates a broken mesh. @@ -265,11 +287,6 @@ void MeasuringImpl::update_planes() m_planes.shrink_to_fit(); } - - - - - void MeasuringImpl::extract_features(int plane_idx) { assert(! m_planes[plane_idx].features_extracted); @@ -490,7 +507,7 @@ void MeasuringImpl::extract_features(int plane_idx) Vec3d cog = Vec3d::Zero(); size_t counter = 0; for (const std::vector& b : plane.borders) { - for (size_t i = 1; i < b.size(); ++i) { + for (size_t i = 0; i < b.size(); ++i) { cog += b[i]; ++counter; } @@ -505,14 +522,7 @@ void MeasuringImpl::extract_features(int plane_idx) plane.features_extracted = true; } - - - - - - - -std::optional MeasuringImpl::get_feature(size_t face_idx, const Vec3d& point) +std::optional MeasuringImpl::get_feature(size_t face_idx, const Vec3d &point, const Transform3d &world_tran,bool only_select_plane) { if (face_idx >= m_face_to_plane.size()) return std::optional(); @@ -521,7 +531,7 @@ std::optional MeasuringImpl::get_feature(size_t face_idx, const if (! plane.features_extracted) extract_features(m_face_to_plane[face_idx]); - + size_t closest_feature_idx = size_t(-1); double min_dist = std::numeric_limits::max(); @@ -530,40 +540,57 @@ std::optional MeasuringImpl::get_feature(size_t face_idx, const assert(plane.surface_features.empty() || plane.surface_features.back().get_type() == SurfaceFeatureType::Plane); - for (size_t i=0; idist; - if (dist < feature_hover_limit && dist < min_dist) { - min_dist = std::min(dist, min_dist); - closest_feature_idx = i; + if (!only_select_plane) { + for (size_t i = 0; i < plane.surface_features.size() - 1; ++i) { + // The -1 is there to prevent measuring distance to the plane itself, + // which is needless and relatively expensive. + res = get_measurement(plane.surface_features[i], point_sf); + if (res.distance_strict) { // TODO: this should become an assert after all combinations are implemented. + double dist = res.distance_strict->dist; + if (dist < feature_hover_limit && dist < min_dist) { + min_dist = std::min(dist, min_dist); + closest_feature_idx = i; + } } } - } - if (closest_feature_idx != size_t(-1)) { - const SurfaceFeature& f = plane.surface_features[closest_feature_idx]; - if (f.get_type() == SurfaceFeatureType::Edge) { - // If this is an edge, check if we are not close to the endpoint. If so, - // we will include the endpoint as well. Close = 10% of the lenghth of - // the edge, clamped between 0.025 and 0.5 mm. - const auto& [sp, ep] = f.get_edge(); - double len_sq = (ep-sp).squaredNorm(); - double limit_sq = std::max(0.025*0.025, std::min(0.5*0.5, 0.1 * 0.1 * len_sq)); - - if ((point-sp).squaredNorm() < limit_sq) - return std::make_optional(SurfaceFeature(sp)); - if ((point-ep).squaredNorm() < limit_sq) - return std::make_optional(SurfaceFeature(ep)); + if (closest_feature_idx != size_t(-1)) { + const SurfaceFeature &f = plane.surface_features[closest_feature_idx]; + if (f.get_type() == SurfaceFeatureType::Edge) { + // If this is an edge, check if we are not close to the endpoint. If so, + // we will include the endpoint as well. Close = 10% of the lenghth of + // the edge, clamped between 0.025 and 0.5 mm. + const auto &[sp, ep] = f.get_edge(); + double len_sq = (ep - sp).squaredNorm(); + double limit_sq = std::max(0.025 * 0.025, std::min(0.5 * 0.5, 0.1 * 0.1 * len_sq)); + if ((point - sp).squaredNorm() < limit_sq) { + SurfaceFeature local_f(sp); + local_f.origin_surface_feature = std::make_shared(local_f); + local_f.translate(world_tran); + return std::make_optional(local_f); + } + + if ((point - ep).squaredNorm() < limit_sq) { + SurfaceFeature local_f(ep); + local_f.origin_surface_feature = std::make_shared(local_f); + local_f.translate(world_tran); + return std::make_optional(local_f); + } + } + SurfaceFeature f_tran(f); + f_tran.origin_surface_feature = std::make_shared(f); + f_tran.translate(world_tran); + return std::make_optional(f_tran); } - return std::make_optional(f); } // Nothing detected, return the plane as a whole. assert(plane.surface_features.back().get_type() == SurfaceFeatureType::Plane); - return std::make_optional(plane.surface_features.back()); + auto cur_plane = const_cast(&plane); + SurfaceFeature f_tran(cur_plane->surface_features.back()); + f_tran.origin_surface_feature = std::make_shared(cur_plane->surface_features.back()); + f_tran.translate(world_tran); + return std::make_optional(f_tran); } @@ -583,6 +610,12 @@ const std::vector& MeasuringImpl::get_plane_triangle_indices(int idx) const return m_planes[idx].facets; } +std::vector* MeasuringImpl::get_plane_tri_indices(int idx) +{ + assert(idx >= 0 && idx < int(m_planes.size())); + return &m_planes[idx].facets; +} + const std::vector& MeasuringImpl::get_plane_features(unsigned int plane_id) { assert(plane_id < m_planes.size()); @@ -591,21 +624,18 @@ const std::vector& MeasuringImpl::get_plane_features(unsigned in return m_planes[plane_id].surface_features; } +std::vector* MeasuringImpl::get_plane_features_pointer(unsigned int plane_id) { + assert(plane_id < m_planes.size()); + if (!m_planes[plane_id].features_extracted) + extract_features(plane_id); + return &m_planes[plane_id].surface_features; +} + const indexed_triangle_set& MeasuringImpl::get_its() const { return this->m_its; } - - - - - - - - - - Measuring::Measuring(const indexed_triangle_set& its) : priv{std::make_unique(its)} {} @@ -614,9 +644,12 @@ Measuring::~Measuring() {} -std::optional Measuring::get_feature(size_t face_idx, const Vec3d& point) const +std::optional Measuring::get_feature(size_t face_idx, const Vec3d &point, const Transform3d &world_tran, bool only_select_plane) const { - return priv->get_feature(face_idx, point); + if (face_idx == 7516 || face_idx == 7517) { + std::cout << ""; + } + return priv->get_feature(face_idx, point, world_tran, only_select_plane); } @@ -796,13 +829,7 @@ static AngleAndEdges angle_plane_plane(const std::tuple& p1, return ret; } - - - - - - -MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& b, const Measuring* measuring) +MeasurementResult get_measurement(const SurfaceFeature &a, const SurfaceFeature &b, bool deal_circle_result) { assert(a.get_type() != SurfaceFeatureType::Undef && b.get_type() != SurfaceFeatureType::Undef); @@ -819,7 +846,7 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& if (f2.get_type() == SurfaceFeatureType::Point) { Vec3d diff = (f2.get_point() - f1.get_point()); result.distance_strict = std::make_optional(DistAndPoints{diff.norm(), f1.get_point(), f2.get_point()}); - result.distance_xyz = diff.cwiseAbs(); + result.distance_xyz = diff; /////////////////////////////////////////////////////////////////////////// } else if (f2.get_type() == SurfaceFeatureType::Edge) { @@ -849,13 +876,18 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& result.distance_strict = std::make_optional(DistAndPoints{ radius, c, p_on_circle }); } else { - const Eigen::Hyperplane circle_plane(n, c); - const Vec3d proj = circle_plane.projection(f1.get_point()); - const double dist = std::sqrt(std::pow((proj - c).norm() - radius, 2.) + - (f1.get_point() - proj).squaredNorm()); + if (deal_circle_result == false) { + const Eigen::Hyperplane circle_plane(n, c); + const Vec3d proj = circle_plane.projection(f1.get_point()); + const double dist = std::sqrt(std::pow((proj - c).norm() - radius, 2.) + (f1.get_point() - proj).squaredNorm()); - const Vec3d p_on_circle = c + radius * (proj - c).normalized(); - result.distance_strict = std::make_optional(DistAndPoints{ dist, f1.get_point(), p_on_circle }); // TODO + const Vec3d p_on_circle = c + radius * (proj - c).normalized(); + result.distance_strict = std::make_optional(DistAndPoints{dist, f1.get_point(), p_on_circle}); + } + else { + const double dist = (f1.get_point() - c).norm(); + result.distance_strict = std::make_optional(DistAndPoints{dist, f1.get_point(), c}); + } } /////////////////////////////////////////////////////////////////////////// } else if (f2.get_type() == SurfaceFeatureType::Plane) { @@ -903,31 +935,31 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& result.angle = angle_edge_edge(f1.get_edge(), f2.get_edge()); /////////////////////////////////////////////////////////////////////////// } else if (f2.get_type() == SurfaceFeatureType::Circle) { - const std::pair e = f1.get_edge(); - const auto& [center, radius, normal] = f2.get_circle(); - const Vec3d e1e2 = (e.second - e.first); - const Vec3d e1e2_unit = e1e2.normalized(); + const std::pair e = f1.get_edge(); + const auto &[center, radius, normal] = f2.get_circle(); + const Vec3d e1e2 = (e.second - e.first); + const Vec3d e1e2_unit = e1e2.normalized(); std::vector distances; distances.emplace_back(*get_measurement(SurfaceFeature(e.first), f2).distance_strict); distances.emplace_back(*get_measurement(SurfaceFeature(e.second), f2).distance_strict); - const Eigen::Hyperplane plane(e1e2_unit, center); - const Eigen::ParametrizedLine line = Eigen::ParametrizedLine::Through(e.first, e.second); - const Vec3d inter = line.intersectionPoint(plane); - const Vec3d e1inter = inter - e.first; - if (e1inter.dot(e1e2) >= 0.0 && e1inter.norm() < e1e2.norm()) - distances.emplace_back(*get_measurement(SurfaceFeature(inter), f2).distance_strict); + const Eigen::Hyperplane plane(e1e2_unit, center); + const Eigen::ParametrizedLine line = Eigen::ParametrizedLine::Through(e.first, e.second); + const Vec3d inter = line.intersectionPoint(plane); + const Vec3d e1inter = inter - e.first; + if (e1inter.dot(e1e2) >= 0.0 && e1inter.norm() < e1e2.norm()) distances.emplace_back(*get_measurement(SurfaceFeature(inter), f2).distance_strict); - auto it = std::min_element(distances.begin(), distances.end(), - [](const DistAndPoints& item1, const DistAndPoints& item2) { - return item1.dist < item2.dist; - }); - result.distance_infinite = std::make_optional(DistAndPoints{it->dist, it->from, it->to}); + auto it = std::min_element(distances.begin(), distances.end(), [](const DistAndPoints &item1, const DistAndPoints &item2) { return item1.dist < item2.dist; }); + if (deal_circle_result == false) { + result.distance_infinite = std::make_optional(DistAndPoints{it->dist, it->from, it->to}); + } + else{ + const double dist = (it->from - center).norm(); + result.distance_infinite = std::make_optional(DistAndPoints{dist, it->from, center}); + } /////////////////////////////////////////////////////////////////////////// } else if (f2.get_type() == SurfaceFeatureType::Plane) { - assert(measuring != nullptr); - const auto [from, to] = f1.get_edge(); const auto [idx, normal, origin] = f2.get_plane(); @@ -944,9 +976,9 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& result.distance_infinite = std::make_optional(DistAndPoints{ it->dist, it->from, it->to }); } else { - const std::vector& plane_features = measuring->get_plane_features(idx); + auto plane_features = f2.world_plane_features; std::vector distances; - for (const SurfaceFeature& sf : plane_features) { + for (const SurfaceFeature& sf : *plane_features) { if (sf.get_type() == SurfaceFeatureType::Edge) { const auto m = get_measurement(sf, f1); if (!m.distance_infinite.has_value()) { @@ -975,7 +1007,7 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& const auto [c0, r0, n0] = f1.get_circle(); const auto [c1, r1, n1] = f2.get_circle(); - // The following code is an adaptation of the algorithm found in: + // The following code is an adaptation of the algorithm found in: // https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/DistCircle3Circle3.h // and described in: // https://www.geometrictools.com/Documentation/DistanceToCircle3.pdf @@ -1120,7 +1152,7 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& } else { ClosestInfo& info = candidates[0]; - + const double N0dD = n0.dot(D); const Vec3d normProj = N0dD * n0; const Vec3d compProj = D - normProj; @@ -1185,22 +1217,26 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& } } - info.sqrDistance = distance * distance + N0dD * N0dD; + info.sqrDistance = distance * distance; + } + if (deal_circle_result == false) { + result.distance_infinite = std::make_optional( + DistAndPoints{std::sqrt(candidates[0].sqrDistance), candidates[0].circle0Closest, candidates[0].circle1Closest}); // TODO + } else { + const double dist = (c0 - c1).norm(); + result.distance_strict = std::make_optional(DistAndPoints{dist, c0, c1}); } - result.distance_infinite = std::make_optional(DistAndPoints{ std::sqrt(candidates[0].sqrDistance), candidates[0].circle0Closest, candidates[0].circle1Closest }); // TODO /////////////////////////////////////////////////////////////////////////// } else if (f2.get_type() == SurfaceFeatureType::Plane) { - assert(measuring != nullptr); - const auto [center, radius, normal1] = f1.get_circle(); const auto [idx2, normal2, origin2] = f2.get_plane(); const bool coplanar = are_parallel(normal1, normal2) && Eigen::Hyperplane(normal1, center).absDistance(origin2) < EPSILON; if (!coplanar) { - const std::vector& plane_features = measuring->get_plane_features(idx2); + auto plane_features = f2.world_plane_features; std::vector distances; - for (const SurfaceFeature& sf : plane_features) { + for (const SurfaceFeature& sf : *plane_features) { if (sf.get_type() == SurfaceFeatureType::Edge) { const auto m = get_measurement(sf, f1); if (!m.distance_infinite.has_value()) { @@ -1218,6 +1254,13 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& }); result.distance_infinite = std::make_optional(DistAndPoints{ it->dist, it->from, it->to }); } + else { + const Eigen::Hyperplane plane(normal2, origin2); + result.distance_infinite = std::make_optional(DistAndPoints{plane.absDistance(center), center, plane.projection(center)}); + } + } + else { + result.distance_strict = std::make_optional(DistAndPoints{0, center, origin2}); } } /////////////////////////////////////////////////////////////////////////// @@ -1229,23 +1272,159 @@ MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& if (are_parallel(normal1, normal2)) { // The planes are parallel, calculate distance. - const Eigen::Hyperplane plane(normal1, pt1); - result.distance_infinite = std::make_optional(DistAndPoints{ plane.absDistance(pt2), pt2, plane.projection(pt2) }); // TODO + const Eigen::Hyperplane plane(normal2, pt2); + result.distance_infinite = std::make_optional(DistAndPoints{ plane.absDistance(pt1), pt1, plane.projection(pt1) }); } else result.angle = angle_plane_plane(f1.get_plane(), f2.get_plane()); } - + + if (swap) { + auto swap_dist_and_points = [](DistAndPoints& dp) { + auto back = dp.to; + dp.to = dp.from; + dp.from = back; + }; + if (result.distance_infinite.has_value()) { + swap_dist_and_points(*result.distance_infinite); + } + if (result.distance_strict.has_value()) { + swap_dist_and_points(*result.distance_strict); + } + } return result; } +bool can_set_xyz_distance(const SurfaceFeature &a, const SurfaceFeature &b) { + const bool swap = int(a.get_type()) > int(b.get_type()); + const SurfaceFeature &f1 = swap ? b : a; + const SurfaceFeature &f2 = swap ? a : b; + if (f1.get_type() == SurfaceFeatureType::Point){ + if (f2.get_type() == SurfaceFeatureType::Point) { + return true; + } + } + else if (f1.get_type() == SurfaceFeatureType::Circle) { + if (f2.get_type() == SurfaceFeatureType::Circle) { + return true; + } + } + return false; +} +AssemblyAction get_assembly_action(const SurfaceFeature& a, const SurfaceFeature& b) +{ + AssemblyAction action; + const SurfaceFeature &f1 = a; + const SurfaceFeature &f2 = b; + if (f1.get_type() == SurfaceFeatureType::Plane) { + action.can_set_feature_1_reverse_rotation = true; + if (f2.get_type() == SurfaceFeatureType::Plane) { + const auto [idx1, normal1, pt1] = f1.get_plane(); + const auto [idx2, normal2, pt2] = f2.get_plane(); + action.can_set_to_center_coincidence = true; + action.can_set_feature_2_reverse_rotation = true; + if (are_parallel(normal1, normal2)) { + action.can_set_to_parallel = false; + action.has_parallel_distance = true; + action.can_around_center_of_faces = true; + Vec3d proj_pt2; + Measure::get_point_projection_to_plane(pt2, pt1, normal1, proj_pt2); + action.parallel_distance = (pt2 - proj_pt2).norm(); + if ((pt2 - proj_pt2).dot(normal1) < 0) { + action.parallel_distance = -action.parallel_distance; + } + action.angle_radian = 0; + + } else { + action.can_set_to_parallel = true; + action.has_parallel_distance = false; + action.can_around_center_of_faces = false; + action.parallel_distance = 0; + action.angle_radian = std::acos(std::clamp(normal2.dot(-normal1), -1.0, 1.0)); + } + } + } + return action; +} +void SurfaceFeature::translate(const Vec3d& displacement) { + switch (get_type()) { + case Measure::SurfaceFeatureType::Point: { + m_pt1 = m_pt1 + displacement; + break; + } + case Measure::SurfaceFeatureType::Edge: { + m_pt1 = m_pt1 + displacement; + m_pt2 = m_pt2 + displacement; + if (m_pt3.has_value()) { //extra_point() + m_pt3 = *m_pt3 + displacement; + } + break; + } + case Measure::SurfaceFeatureType::Plane: { + //m_pt1 is normal; + m_pt2 = m_pt2 + displacement; + break; + } + case Measure::SurfaceFeatureType::Circle: { + m_pt1 = m_pt1 + displacement; + // m_pt2 is normal; + break; + } + default: break; + } +} - - - - -} // namespace Measure +void SurfaceFeature::translate(const Transform3d &tran) +{ + switch (get_type()) { + case Measure::SurfaceFeatureType::Point: { + m_pt1 = tran * m_pt1; + break; + } + case Measure::SurfaceFeatureType::Edge: { + m_pt1 = tran * m_pt1; + m_pt2 = tran * m_pt2; + if (m_pt3.has_value()) { // extra_point() + m_pt3 = tran * *m_pt3; + } + break; + } + case Measure::SurfaceFeatureType::Plane: { + // m_pt1 is normal; + Vec3d temp_pt1 = m_pt2 + m_pt1; + temp_pt1 = tran * temp_pt1; + m_pt2 = tran * m_pt2; + m_pt1 = (temp_pt1 - m_pt2).normalized(); + break; + } + case Measure::SurfaceFeatureType::Circle: { + // m_pt1 is center; + // m_pt2 is normal; + auto local_normal = m_pt2; + auto local_center = m_pt1; + Vec3d temp_pt2 = local_normal + local_center; + temp_pt2 = tran * temp_pt2; + m_pt1 = tran * m_pt1; + auto world_center = m_pt1; + m_pt2 = (temp_pt2 - m_pt1).normalized(); + + auto calc_world_radius = [&local_center, &local_normal, &tran, &world_center](const Vec3d &pt, double &value) { + Vec3d intersection_pt; + get_point_projection_to_plane(pt, local_center, local_normal, intersection_pt); + auto local_radius_pt = (intersection_pt - local_center).normalized() * value + local_center; + auto radius_pt = tran * local_radius_pt; + value = (radius_pt - world_center).norm(); + }; + //m_value is radius + auto new_pt = get_one_point_in_plane(local_center, local_normal); + calc_world_radius(new_pt, m_value); + break; + } + default: break; + } +} + }//namespace Measure } // namespace Slic3r diff --git a/src/libslic3r/Measure.hpp b/src/libslic3r/Measure.hpp index 70f446afd99..614b4431316 100644 --- a/src/libslic3r/Measure.hpp +++ b/src/libslic3r/Measure.hpp @@ -6,18 +6,13 @@ #include "Point.hpp" - struct indexed_triangle_set; - - namespace Slic3r { class TriangleMesh; namespace Measure { - - enum class SurfaceFeatureType : int { Undef = 0, Point = 1 << 0, @@ -26,22 +21,44 @@ enum class SurfaceFeatureType : int { Plane = 1 << 3 }; -class SurfaceFeature { +bool get_point_projection_to_plane(const Vec3d &pt, const Vec3d &plane_origin, const Vec3d &plane_normal, Vec3d &intersection_pt); +Vec3d get_one_point_in_plane(const Vec3d &plane_origin, const Vec3d &plane_normal); + +class SurfaceFeature +{ public: SurfaceFeature(SurfaceFeatureType type, const Vec3d& pt1, const Vec3d& pt2, std::optional pt3 = std::nullopt, double value = 0.0) : m_type(type), m_pt1(pt1), m_pt2(pt2), m_pt3(pt3), m_value(value) {} - explicit SurfaceFeature(const Vec3d& pt) + SurfaceFeature(const Vec3d& pt) : m_type{SurfaceFeatureType::Point}, m_pt1{pt} {} + SurfaceFeature(const SurfaceFeature& sf){ + this->clone(sf); + volume = sf.volume; + plane_indices = sf.plane_indices; + world_tran = sf.world_tran; + world_plane_features = sf.world_plane_features; + origin_surface_feature = sf.origin_surface_feature; + } + + void clone(const SurfaceFeature &sf) + { + m_type = sf.get_type(); + m_pt1 = sf.get_pt1(); + m_pt2 = sf.get_pt2(); + m_pt3 = sf.get_pt3(); + m_value = sf.get_value(); + } + void translate(const Vec3d& displacement); + void translate(const Transform3d& tran); // Get type of this feature. SurfaceFeatureType get_type() const { return m_type; } // For points, return the point. Vec3d get_point() const { assert(m_type == SurfaceFeatureType::Point); return m_pt1; } - // For edges, return start and end. - std::pair get_edge() const { assert(m_type == SurfaceFeatureType::Edge); return std::make_pair(m_pt1, m_pt2); } + std::pair get_edge() const { assert(m_type == SurfaceFeatureType::Edge); return std::make_pair(m_pt1, m_pt2); } // For circles, return center, radius and normal. std::tuple get_circle() const { assert(m_type == SurfaceFeatureType::Circle); return std::make_tuple(m_pt1, m_value, m_pt2); } @@ -75,6 +92,17 @@ class SurfaceFeature { return !operator == (other); } + void* volume{nullptr}; + std::vector* plane_indices{nullptr}; + Transform3d world_tran; + std::shared_ptr> world_plane_features{nullptr}; + std::shared_ptr origin_surface_feature{nullptr}; + + Vec3d get_pt1() const{ return m_pt1; } + Vec3d get_pt2() const { return m_pt2; } + const std::optional& get_pt3() const { return m_pt3; } + double get_value() const { return m_value; } + private: SurfaceFeatureType m_type{ SurfaceFeatureType::Undef }; Vec3d m_pt1{ Vec3d::Zero() }; @@ -97,7 +125,7 @@ class Measuring { // Given a face_idx where the mouse cursor points, return a feature that // should be highlighted (if any). - std::optional get_feature(size_t face_idx, const Vec3d& point) const; + std::optional get_feature(size_t face_idx, const Vec3d& point, const Transform3d & world_tran,bool only_select_plane) const; // Return total number of planes. int get_num_of_planes() const; @@ -111,7 +139,7 @@ class Measuring { // Returns the mesh used for measuring const indexed_triangle_set& get_its() const; -private: +private: std::unique_ptr priv; }; @@ -152,7 +180,24 @@ struct MeasurementResult { }; // Returns distance/angle between two SurfaceFeatures. -MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& b, const Measuring* measuring = nullptr); +MeasurementResult get_measurement(const SurfaceFeature& a, const SurfaceFeature& b,bool deal_circle_result =false); +bool can_set_xyz_distance(const SurfaceFeature &a, const SurfaceFeature &b); + +struct AssemblyAction +{ + bool can_set_to_parallel{false}; + bool can_set_to_center_coincidence{false}; + bool can_set_feature_1_reverse_rotation{false}; + bool can_set_feature_2_reverse_rotation{false}; + bool can_around_center_of_faces{false}; + bool has_parallel_distance{false}; + float parallel_distance; + float angle_radian{0}; + Transform3d tran_for_parallel; + Transform3d tran_for_center_coincidence; + Transform3d tran_for_reverse_rotation; +}; +AssemblyAction get_assembly_action(const SurfaceFeature &a, const SurfaceFeature &b); inline Vec3d edge_direction(const Vec3d& from, const Vec3d& to) { return (to - from).normalized(); } inline Vec3d edge_direction(const std::pair& e) { return edge_direction(e.first, e.second); } diff --git a/src/libslic3r/MeasureUtils.hpp b/src/libslic3r/MeasureUtils.hpp index 0ab4ac121d8..2fdac524437 100644 --- a/src/libslic3r/MeasureUtils.hpp +++ b/src/libslic3r/MeasureUtils.hpp @@ -7,7 +7,7 @@ namespace Slic3r { namespace Measure { // Utility class used to calculate distance circle-circle -// Adaptation of code found in: +// Adaptation of code found in: // https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/Polynomial1.h class Polynomial1 @@ -174,7 +174,7 @@ inline Polynomial1 operator * (double scalar, const Polynomial1& p) } // Utility class used to calculate distance circle-circle -// Adaptation of code found in: +// Adaptation of code found in: // https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/RootsPolynomial.h class RootsPolynomial @@ -242,7 +242,7 @@ class RootsPolynomial return false; if (tmin >= tmax) - // Invalid ordering of interval endpoitns. + // Invalid ordering of interval endpoitns. return false; for (uint32_t i = 1; i <= maxIterations; ++i) { @@ -345,7 +345,7 @@ class RootsPolynomial } }; -// Adaptation of code found in: +// Adaptation of code found in: // https://github.com/davideberly/GeometricTools/blob/master/GTE/Mathematics/Vector.h // Construct a single vector orthogonal to the nonzero input vector. If diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index fe8ff61018a..d1e6d9b3bfc 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -2785,7 +2785,7 @@ std::vector ModelVolume::get_extruders_from_multi_material_painting() co if (!this->is_mm_painted()) return {}; - assert(static_cast(TriangleStateType::Extruder1) - 1 == 0); + assert(static_cast(EnforcerBlockerType::Extruder1) - 1 == 0); const TriangleSelector::TriangleSplittingData &data = this->mmu_segmentation_facets.get_data(); std::vector extruders; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 30c9bc230f7..4eb5c5e949c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -823,7 +823,7 @@ static std::vector s_Preset_filament_options { "filament_flow_ratio", "filament_density", "filament_cost", "filament_minimal_purge_on_wipe_tower", "nozzle_temperature", "nozzle_temperature_initial_layer", // BBS - "cool_plate_temp", "textured_cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer", + "cool_plate_temp", "textured_cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer", "textured_plate_temp_initial_layer", "supertack_plate_temp_initial_layer", "supertack_plate_temp", // "bed_type", //BBS:temperature_vitrification "temperature_vitrification", "reduce_fan_stop_start_freq","dont_slow_down_outer_wall", "slow_down_for_layer_cooling", "fan_min_speed", diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 92a8069e6e4..ae18f5f810e 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1851,6 +1851,26 @@ void PresetBundle::export_selections(AppConfig &config) } // BBS +void PresetBundle::set_num_filaments(unsigned int n, std::vector new_colors) { + int old_filament_count = this->filament_presets.size(); + if (n > old_filament_count && old_filament_count != 0) + filament_presets.resize(n, filament_presets.back()); + else { + filament_presets.resize(n); + } + ConfigOptionStrings* filament_color = project_config.option("filament_colour"); + filament_color->resize(n); + ams_multi_color_filment.resize(n); + // BBS set new filament color to new_color + if (old_filament_count < n) { + if (!new_colors.empty()) { + for (int i = old_filament_count; i < n; i++) { + filament_color->values[i] = new_colors[i - old_filament_count]; + } + } + } + update_multi_material_filament_presets(); +} void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) { int old_filament_count = this->filament_presets.size(); diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 976e654074c..29379379200 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -111,6 +111,7 @@ class PresetBundle void export_selections(AppConfig &config); // BBS + void set_num_filaments(unsigned int n, std::vector new_colors); void set_num_filaments(unsigned int n, std::string new_col = ""); unsigned int sync_ams_list(unsigned int & unknowns); //BBS: check whether this is the only edited filament diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index c07eaa70ac7..e825498bf61 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -129,6 +129,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n "sparse_infill_acceleration", "internal_solid_infill_acceleration", // BBS + "supertack_plate_temp_initial_layer", "cool_plate_temp_initial_layer", "textured_cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", @@ -270,6 +271,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n || opt_key == "gcode_flavor" || opt_key == "single_extruder_multi_material" || opt_key == "nozzle_temperature" + // BBS + || opt_key == "supertack_plate_temp" || opt_key == "cool_plate_temp" || opt_key == "textured_cool_plate_temp" || opt_key == "eng_plate_temp" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index d7812e6b420..ac992d1ef8f 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -350,6 +350,7 @@ CONFIG_OPTION_ENUM_DEFINE_STATIC_MAPS(OverhangFanThreshold) // BBS static const t_config_enum_values s_keys_map_BedType = { { "Default Plate", btDefault }, + { "Supertack Plate", btSuperTack }, { "Cool Plate", btPC }, { "Engineering Plate", btEP }, { "High Temp Plate", btPEI }, @@ -657,6 +658,16 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloatOrPercent(0., false)); // BBS + def = this->add("supertack_plate_temp", coInts); + def->label = L("Other layers"); + def->tooltip = L("Bed temperature for layers except the initial one. " + "Value 0 means the filament does not support to print on the Cool Plate"); + def->sidetext = "°C"; + def->full_label = L("Bed temperature"); + def->min = 0; + def->max = 120; + def->set_default_value(new ConfigOptionInts{35}); + def = this->add("cool_plate_temp", coInts); def->label = L("Other layers"); def->tooltip = L("Bed temperature for layers except the initial one. " @@ -707,6 +718,16 @@ void PrintConfigDef::init_fff_params() def->max = 300; def->set_default_value(new ConfigOptionInts{45}); + def = this->add("supertack_plate_temp_initial_layer", coInts); + def->label = L("Initial layer"); + def->full_label = L("Initial layer bed temperature"); + def->tooltip = L("Bed temperature of the initial layer. " + "Value 0 means the filament does not support to print on the Bambu Cool Plate SuperTack"); + def->sidetext = "°C"; + def->min = 0; + def->max = 120; + def->set_default_value(new ConfigOptionInts{ 35 }); + def = this->add("cool_plate_temp_initial_layer", coInts); def->label = L("Initial layer"); def->full_label = L("Initial layer bed temperature"); @@ -762,12 +783,14 @@ void PrintConfigDef::init_fff_params() def->mode = comSimple; def->enum_keys_map = &s_keys_map_BedType; // Orca: make sure the order of the values is the same as the BedType enum + def->enum_values.emplace_back("Supertack Plate"); def->enum_values.emplace_back("Cool Plate"); def->enum_values.emplace_back("Engineering Plate"); def->enum_values.emplace_back("High Temp Plate"); def->enum_values.emplace_back("Textured PEI Plate"); def->enum_values.emplace_back("Textured Cool Plate"); - def->enum_labels.emplace_back(L("Smooth Cool Plate")); + def->enum_labels.emplace_back(L("Bambu Cool Plate SuperTack")); + def->enum_labels.emplace_back(L("Smooth Cool Plate / PLA Plate")); def->enum_labels.emplace_back(L("Engineering Plate")); def->enum_labels.emplace_back(L("Smooth High Temp Plate")); def->enum_labels.emplace_back(L("Textured PEI Plate")); @@ -3757,7 +3780,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloats { 10. }); def = this->add("z_hop", coFloats); - def->label = L("Z hop when retract"); + def->label = L("Z-hop height"); def->tooltip = L("Whenever the retraction is done, the nozzle is lifted a little to create clearance between nozzle and the print. " "It prevents nozzle from hitting the print when travel move. " "Using spiral line to lift z can prevent stringing"); @@ -3785,7 +3808,7 @@ void PrintConfigDef::init_fff_params() def = this->add("z_hop_types", coEnums); - def->label = L("Z hop type"); + def->label = L("Z-hop type"); def->tooltip = L("Z hop type"); def->enum_keys_map = &ConfigOptionEnum::get_enum_values(); def->enum_values.push_back("Auto Lift"); @@ -5440,9 +5463,9 @@ void PrintConfigDef::init_extruder_option_keys() "retract_lift_above", "retract_lift_below", "retract_lift_enforce", + "retract_on_top_layer", "retract_restart_extra", "retract_when_changing_layer", - "retract_on_top_layer", "retraction_distances_when_cut", "retraction_length", "retraction_minimum_travel", diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index 18f007a40ad..ee522dab0de 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -254,6 +254,7 @@ enum OverhangFanThreshold { // BBS enum BedType { btDefault = 0, + btSuperTack, btPC, btEP, btPEI, @@ -322,6 +323,9 @@ static std::string bed_type_to_gcode_string(const BedType type) std::string type_str; switch (type) { + case btSuperTack: + type_str = "supertack_plate"; + break; case btPC: type_str = "cool_plate"; break; @@ -347,6 +351,9 @@ static std::string bed_type_to_gcode_string(const BedType type) static std::string get_bed_temp_key(const BedType type) { + if (type == btSuperTack) + return "supertack_plate_temp"; + if (type == btPC) return "cool_plate_temp"; @@ -367,6 +374,9 @@ static std::string get_bed_temp_key(const BedType type) static std::string get_bed_temp_1st_layer_key(const BedType type) { + if (type == btSuperTack) + return "supertack_plate_temp_initial_layer"; + if (type == btPC) return "cool_plate_temp_initial_layer"; @@ -1183,9 +1193,11 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE( ((ConfigOptionEnum, curr_bed_type)) ((ConfigOptionInts, cool_plate_temp)) ((ConfigOptionInts, textured_cool_plate_temp)) + ((ConfigOptionInts, supertack_plate_temp)) ((ConfigOptionInts, eng_plate_temp)) ((ConfigOptionInts, hot_plate_temp)) // hot is short for high temperature ((ConfigOptionInts, textured_plate_temp)) + ((ConfigOptionInts, supertack_plate_temp_initial_layer)) ((ConfigOptionInts, cool_plate_temp_initial_layer)) ((ConfigOptionInts, textured_cool_plate_temp_initial_layer)) ((ConfigOptionInts, eng_plate_temp_initial_layer)) diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 7d6b43eb451..01d7e242c97 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -31,6 +31,7 @@ #include #include +#include #include diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 8c9c3c6af54..d8fdbe43fcf 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -1259,14 +1259,15 @@ void PrintObject::apply_conical_overhang() { auto upper_poly = upper_layer->merged(float(SCALED_EPSILON)); upper_poly = union_ex(upper_poly); + // Merge layer for the same reason + auto current_poly = layer->merged(float(SCALED_EPSILON)); + current_poly = union_ex(current_poly); + // Avoid closing up of recessed holes in the base of a model. // Detects when a hole is completely covered by the layer above and removes the hole from the layer above before // adding it in. // This should have no effect any time a hole in a layer interacts with any polygon in the layer above if (scaled_max_hole_area > 0.0) { - // Merge layer for the same reason - auto current_poly = layer->merged(float(SCALED_EPSILON)); - current_poly = union_ex(current_poly); // Now go through all the holes in the current layer and check if they intersect anything in the layer above // If not, then they're the top of a hole and should be cut from the layer above before the union @@ -1301,10 +1302,25 @@ void PrintObject::apply_conical_overhang() { } // Calculate the scaled upper poly that belongs to current region - auto p = intersection_ex(upper_layer->m_regions[region_id]->slices.surfaces, upper_poly); - // And now union it + auto p = union_ex(intersection_ex(upper_layer->m_regions[region_id]->slices.surfaces, upper_poly)); + + // Remove all islands that have already been fully covered by current layer + p.erase(std::remove_if(p.begin(), p.end(), [¤t_poly](const ExPolygon& ex) { + return diff_ex(ex, current_poly).empty(); + }), p.end()); + + // And now union it with current region ExPolygons layer_polygons = to_expolygons(layer->m_regions[region_id]->slices.surfaces); layer->m_regions[region_id]->slices.set(union_ex(layer_polygons, p), stInternal); + + // Then remove it from all other regions, to avoid overlapping regions + for (size_t other_region = 0; other_region < this->num_printing_regions(); ++other_region) { + if (other_region == region_id) { + continue; + } + ExPolygons s = to_expolygons(layer->m_regions[other_region]->slices.surfaces); + layer->m_regions[other_region]->slices.set(diff_ex(s, p, ApplySafetyOffset::Yes), stInternal); + } } //layer->export_region_slices_to_svg_debug("layer_after_conical_overhang"); } diff --git a/src/libslic3r/ShortestPath.cpp b/src/libslic3r/ShortestPath.cpp index a2a2680f524..3aa99e2b76b 100644 --- a/src/libslic3r/ShortestPath.cpp +++ b/src/libslic3r/ShortestPath.cpp @@ -1910,14 +1910,15 @@ static inline void improve_ordering_by_two_exchanges_with_segment_flipping(Polyl for (const FlipEdge &edge : edges) { Polyline &pl = polylines[edge.source_index]; out.emplace_back(std::move(pl)); - if (edge.p2 == pl.first_point().cast()) { + if (edge.p2 == out.back().first_point().cast()) { // Polyline is flipped. out.back().reverse(); } else { // Polyline is not flipped. - assert(edge.p1 == pl.first_point().cast()); + assert(edge.p1 == out.back().first_point().cast()); } } + polylines = out; #ifndef NDEBUG double cost_final = cost(); diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 0c54d835ada..10d3f376480 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -145,6 +145,8 @@ set(SLIC3R_GUI_SOURCES #GUI/Gizmos/GLGizmoFaceDetector.hpp GUI/Gizmos/GLGizmoMeasure.cpp GUI/Gizmos/GLGizmoMeasure.hpp + GUI/Gizmos/GLGizmoAssembly.cpp + GUI/Gizmos/GLGizmoAssembly.hpp GUI/Gizmos/GLGizmoSeam.cpp GUI/Gizmos/GLGizmoSeam.hpp #GUI/Gizmos/GLGizmoText.cpp diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 89a922c3432..90708870520 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -675,12 +675,13 @@ std::vector GLVolumeCollection::load_object( int obj_idx, const std::vector &instance_idxs, const std::string &color_by, - bool opengl_initialized) + bool opengl_initialized, + bool need_raycaster) { std::vector volumes_idx; for (int volume_idx = 0; volume_idx < int(model_object->volumes.size()); ++volume_idx) for (int instance_idx : instance_idxs) - volumes_idx.emplace_back(this->GLVolumeCollection::load_object_volume(model_object, obj_idx, volume_idx, instance_idx, color_by, opengl_initialized)); + volumes_idx.emplace_back(this->GLVolumeCollection::load_object_volume(model_object, obj_idx, volume_idx, instance_idx, color_by, opengl_initialized, false, false, need_raycaster)); return volumes_idx; } @@ -693,7 +694,8 @@ int GLVolumeCollection::load_object_volume( const std::string &color_by, bool opengl_initialized, bool in_assemble_view, - bool use_loaded_id) + bool use_loaded_id, + bool need_raycaster) { const ModelVolume *model_volume = model_object->volumes[volume_idx]; const int extruder_id = model_volume->extruder_id(); @@ -711,7 +713,7 @@ int GLVolumeCollection::load_object_volume( v.model.init_from(mesh, true); #else v.model.init_from(*mesh); - v.mesh_raycaster = std::make_unique(mesh); + if (need_raycaster) { v.mesh_raycaster = std::make_unique(mesh); } #endif // ENABLE_SMOOTH_NORMALS v.composite_id = GLVolume::CompositeID(obj_idx, volume_idx, instance_idx); diff --git a/src/slic3r/GUI/3DScene.hpp b/src/slic3r/GUI/3DScene.hpp index cd89efa36ab..8e39c0febd4 100644 --- a/src/slic3r/GUI/3DScene.hpp +++ b/src/slic3r/GUI/3DScene.hpp @@ -439,7 +439,8 @@ class GLVolumeCollection int obj_idx, const std::vector &instance_idxs, const std::string &color_by, - bool opengl_initialized); + bool opengl_initialized, + bool need_raycaster = true); int load_object_volume( const ModelObject *model_object, @@ -449,7 +450,8 @@ class GLVolumeCollection const std::string &color_by, bool opengl_initialized, bool in_assemble_view = false, - bool use_loaded_id = false); + bool use_loaded_id = false, + bool need_raycaster = true); // Load SLA auxiliary GLVolumes (for support trees or pad). void load_object_auxiliary( const SLAPrintObject *print_object, diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 4161afc5736..7c790f2959a 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -543,16 +543,26 @@ static char* read_json_file(const std::string &preset_path) static std::string get_printer_nozzle_diameter(std::string printer_name) { - size_t index = printer_name.find(" nozzle"); + size_t index = printer_name.find(" nozzle)"); if (std::string::npos == index) { - return ""; - } - std::string nozzle = printer_name.substr(0, index); - size_t last_space_index = nozzle.find_last_of(" "); - if (std::string::npos == index) { - return ""; + size_t index = printer_name.find(" nozzle"); + if (std::string::npos == index) { + return ""; + } + std::string nozzle = printer_name.substr(0, index); + size_t last_space_index = nozzle.find_last_of(" "); + if (std::string::npos == index) { + return ""; + } + return nozzle.substr(last_space_index + 1); + } else { + std::string nozzle = printer_name.substr(0, index); + size_t last_bracket_index = nozzle.find_last_of("("); + if (std::string::npos == index) { + return ""; + } + return nozzle.substr(last_bracket_index + 1); } - return nozzle.substr(last_space_index + 1); } static void adjust_dialog_in_screen(DPIDialog* dialog) { @@ -1179,10 +1189,11 @@ wxArrayString CreateFilamentPresetDialog::get_filament_preset_choices() std::string preset_name = filament_preset->name; BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " filament_id: " << filament_preset->filament_id << " preset name: " << filament_preset->name; size_t index_at = preset_name.find(" @"); + std::string cur_preset_name = preset_name; if (std::string::npos != index_at) { - std::string cur_preset_name = preset_name.substr(0, index_at); - preset_name_set.insert(from_u8(cur_preset_name)); + cur_preset_name = preset_name.substr(0, index_at); } + preset_name_set.insert(from_u8(cur_preset_name)); } assert(1 == preset_name_set.size()); if (preset_name_set.size() > 1) { diff --git a/src/slic3r/GUI/Downloader.cpp b/src/slic3r/GUI/Downloader.cpp index 7757ca3ad67..c5a22ac6887 100644 --- a/src/slic3r/GUI/Downloader.cpp +++ b/src/slic3r/GUI/Downloader.cpp @@ -159,7 +159,7 @@ void Downloader::start_download(const std::string& full_url) size_t id = get_next_id(); std::string escaped_url = FileGet::escape_url(full_url.substr(results.length())); if (is_bambustudio_open(full_url) || (is_orca_open(full_url) && is_makerworld_link(full_url))) - plater->request_model_download(escaped_url); + plater->request_model_download(wxString::FromUTF8(escaped_url)); else { std::string text(escaped_url); m_downloads.emplace_back(std::make_unique(id, std::move(escaped_url), this, m_dest_folder)); @@ -254,4 +254,4 @@ void Downloader::set_download_state(int id, DownloadState state) } } -} \ No newline at end of file +} diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 4fd50ad189c..00b9685861b 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -3123,7 +3123,7 @@ void GCodeViewer::load_shells(const Print& print, bool initialized, bool force_p instance_ids.resize(instance_index); size_t current_volumes_count = m_shells.volumes.volumes.size(); - m_shells.volumes.load_object(model_obj, object_idx, instance_ids, "object", initialized); + m_shells.volumes.load_object(model_obj, object_idx, instance_ids, "object", initialized, false); // adjust shells' z if raft is present const SlicingParameters& slicing_parameters = obj->slicing_parameters(); diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 539cf687035..9724e8c241d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4445,7 +4445,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) logical_pos = logical_pos.cwiseQuotient(Vec2d(factor, factor)); #endif // ENABLE_RETINA_GL - if (!m_mouse.ignore_right_up) { + if (!m_mouse.ignore_right_up && m_gizmos.get_current_type() == GLGizmosManager::EType::Undefined) { //BBS post right click event if (!m_hover_plate_idxs.empty()) { post_event(RBtnPlateEvent(EVT_GLCANVAS_PLATE_RIGHT_CLICK, { logical_pos, m_hover_plate_idxs.front() })); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 2d67401d5f8..34e050c3690 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -743,6 +743,7 @@ class GLCanvas3D m_scene_raycaster.set_gizmos_on_top(value); } + float get_explosion_ratio() { return m_explosion_ratio; } void reset_explosion_ratio() { m_explosion_ratio = 1.0; } void on_change_color_mode(bool is_dark, bool reinit = true); const bool get_dark_mode_status() { return m_is_dark; } diff --git a/src/slic3r/GUI/GLModel.cpp b/src/slic3r/GUI/GLModel.cpp index 8f4546b6203..76d2711266c 100644 --- a/src/slic3r/GUI/GLModel.cpp +++ b/src/slic3r/GUI/GLModel.cpp @@ -1412,5 +1412,84 @@ GLModel::Geometry smooth_torus(unsigned int primary_resolution, unsigned int sec return data; } +GLModel::Geometry init_plane_data(const indexed_triangle_set& its, const std::vector& triangle_indices, float normal_offset) +{ + GLModel::Geometry init_data; + init_data.format = { GUI::GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 }; + init_data.reserve_indices(3 * triangle_indices.size()); + init_data.reserve_vertices(3 * triangle_indices.size()); + unsigned int i = 0; + for (int idx : triangle_indices) { + Vec3f v0 = its.vertices[its.indices[idx][0]]; + Vec3f v1 = its.vertices[its.indices[idx][1]]; + Vec3f v2 = its.vertices[its.indices[idx][2]]; + const Vec3f n = (v1 - v0).cross(v2 - v0).normalized(); + if (std::abs(normal_offset) > 0.0) { + v0 = v0 + n * normal_offset; + v1 = v1 + n * normal_offset; + v2 = v2 + n * normal_offset; + } + init_data.add_vertex(v0, n); + init_data.add_vertex(v1, n); + init_data.add_vertex(v2, n); + init_data.add_triangle(i, i + 1, i + 2); + i += 3; + } + + return init_data; +} + +GLModel::Geometry init_torus_data(unsigned int primary_resolution, + unsigned int secondary_resolution, + const Vec3f & center, + float radius, + float thickness, + const Vec3f & model_axis, + const Transform3f &world_trafo) +{ + const unsigned int torus_sector_count = std::max(4, primary_resolution); + const unsigned int section_sector_count = std::max(4, secondary_resolution); + const float torus_sector_step = 2.0f * float(M_PI) / float(torus_sector_count); + const float section_sector_step = 2.0f * float(M_PI) / float(section_sector_count); + + GLModel::Geometry data; + data.format = { GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 }; + data.reserve_vertices(torus_sector_count * section_sector_count); + data.reserve_indices(torus_sector_count * section_sector_count * 2 * 3); + + // vertices + const Transform3f local_to_world_matrix = world_trafo * Geometry::translation_transform(center.cast()).cast() * + Eigen::Quaternion::FromTwoVectors(Vec3f::UnitZ(), model_axis); + for (unsigned int i = 0; i < torus_sector_count; ++i) { + const float section_angle = torus_sector_step * i; + const Vec3f radius_dir(std::cos(section_angle), std::sin(section_angle), 0.0f); + const Vec3f local_section_center = radius * radius_dir; + const Vec3f world_section_center = local_to_world_matrix * local_section_center; + const Vec3f local_section_normal = local_section_center.normalized().cross(Vec3f::UnitZ()).normalized(); + const Vec3f world_section_normal = (Vec3f) (local_to_world_matrix.matrix().block(0, 0, 3, 3) * local_section_normal).normalized(); + const Vec3f base_v = thickness * radius_dir; + for (unsigned int j = 0; j < section_sector_count; ++j) { + const Vec3f v = Eigen::AngleAxisf(section_sector_step * j, world_section_normal) * base_v; + data.add_vertex(world_section_center + v, (Vec3f) v.normalized()); + } + } + + // triangles + for (unsigned int i = 0; i < torus_sector_count; ++i) { + const unsigned int ii = i * section_sector_count; + const unsigned int ii_next = ((i + 1) % torus_sector_count) * section_sector_count; + for (unsigned int j = 0; j < section_sector_count; ++j) { + const unsigned int j_next = (j + 1) % section_sector_count; + const unsigned int i0 = ii + j; + const unsigned int i1 = ii_next + j; + const unsigned int i2 = ii_next + j_next; + const unsigned int i3 = ii + j_next; + data.add_triangle(i0, i1, i2); + data.add_triangle(i0, i2, i3); + } + } + + return data; +} } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/GLModel.hpp b/src/slic3r/GUI/GLModel.hpp index 4511cc32a8c..bc43da61155 100644 --- a/src/slic3r/GUI/GLModel.hpp +++ b/src/slic3r/GUI/GLModel.hpp @@ -247,7 +247,15 @@ namespace GUI { // the origin of the torus is in its center GLModel::Geometry smooth_torus(unsigned int primary_resolution, unsigned int secondary_resolution, float radius, float thickness); -} // namespace GUI + GLModel::Geometry init_plane_data(const indexed_triangle_set &its, const std::vector &triangle_indices,float normal_offset = 0.0f); + GLModel::Geometry init_torus_data(unsigned int primary_resolution, + unsigned int secondary_resolution, + const Vec3f & center, + float radius, + float thickness, + const Vec3f & model_axis, + const Transform3f &world_trafo); + } // namespace GUI } // namespace Slic3r #endif // slic3r_GLModel_hpp_ diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 4415118af5d..72eed3e7c1c 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4280,7 +4280,6 @@ void GUI_App::check_new_version_sf(bool show_tips, int by_user) best_pre = tag_version; best_pre_url = root.get("html_url"); best_pre_content = root.get("body"); - best_pre.set_prerelease("Preview"); } } else { if (best_release < tag_version) { @@ -4302,7 +4301,6 @@ void GUI_App::check_new_version_sf(bool show_tips, int by_user) best_pre = tag_version; best_pre_url = json_version.second.get("html_url"); best_pre_content = json_version.second.get("body"); - best_pre.set_prerelease("Preview"); } } else { if (best_release < tag_version) { @@ -5647,7 +5645,8 @@ bool GUI_App::check_and_keep_current_preset_changes(const wxString& caption, con bool is_called_from_configwizard = postponed_apply_of_keeped_changes != nullptr; UnsavedChangesDialog dlg(caption, header, "", action_buttons); - if (dlg.ShowModal() == wxID_CANCEL) + bool no_need_change = dlg.getUpdateItemCount() == 0 ? true : false; + if (!no_need_change && dlg.ShowModal() == wxID_CANCEL) return false; auto reset_modifications = [this, is_called_from_configwizard]() { @@ -5662,7 +5661,7 @@ bool GUI_App::check_and_keep_current_preset_changes(const wxString& caption, con load_current_presets(false); }; - if (dlg.discard()) + if (dlg.discard() || no_need_change) reset_modifications(); else // save selected changes { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp new file mode 100644 index 00000000000..c20ec975c74 --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.cpp @@ -0,0 +1,167 @@ +#include "GLGizmoAssembly.hpp" +#include "slic3r/GUI/GLCanvas3D.hpp" +#include "slic3r/GUI/GUI_App.hpp" +#include "slic3r/GUI/Plater.hpp" +#include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" +#include "slic3r/Utils/UndoRedo.hpp" + +#include "libslic3r/PresetBundle.hpp" +#include "libslic3r/MeasureUtils.hpp" + +#include + +#include + +#include + +#include +#include +#include + +namespace Slic3r { +namespace GUI { + +GLGizmoAssembly::GLGizmoAssembly(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id) : + GLGizmoMeasure(parent, icon_filename, sprite_id) +{ + m_measure_mode = EMeasureMode::ONLY_ASSEMBLY; +} + +std::string GLGizmoAssembly::on_get_name() const +{ + if (!on_is_activable() && m_state == EState::Off) { + if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasAssembleView) { + return _u8L("Assemble") + ":\n" + _u8L("Please confirm explosion ratio = 1 and select at least two volumes."); + } + else { + return _u8L("Assemble") + ":\n" + _u8L("Please select at least two volumes."); + } + } else { + return _u8L("Assemble"); + } +} + +bool GLGizmoAssembly::on_is_activable() const +{ + const Selection& selection = m_parent.get_selection(); + if (selection.is_wipe_tower()) { + return false; + } + const int selection_volumes_count = 2; + if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasAssembleView) { + if (abs(m_parent.get_explosion_ratio() - 1.0f) < 1e-2 && selection.volumes_count() >= selection_volumes_count) { + return true; + } + return false; + } else { + return selection.volumes_count() >= selection_volumes_count; + } +} + +void GLGizmoAssembly::on_render_input_window(float x, float y, float bottom_limit) +{ + static std::optional last_feature; + static EMode last_mode = EMode::FeatureSelection; + static SelectedFeatures last_selected_features; + + static float last_y = 0.0f; + static float last_h = 0.0f; + + if (m_editing_distance) + return; + m_current_active_imgui_id = ImGui::GetActiveID(); + // adjust window position to avoid overlap the view toolbar + const float win_h = ImGui::GetWindowHeight(); + y = std::min(y, bottom_limit - win_h); + GizmoImguiSetNextWIndowPos(x, y, ImGuiCond_Always, 0.0f, 0.0f); + if (last_h != win_h || last_y != y) { + // ask canvas for another frame to render the window in the correct position + m_imgui->set_requires_extra_frame(); + if (last_h != win_h) + last_h = win_h; + if (last_y != y) + last_y = y; + } + // Orca + ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); + init_render_input_window(); + + float moving_size = m_imgui->calc_text_size(_L("(Moving)")).x; + float combox_content_size = m_imgui->calc_text_size(_L("Point and point assembly")).x*1.1 + ImGui::GetStyle().FramePadding.x * 18.0f; + float caption_size = moving_size + 2 * m_space_size; + if (render_assembly_mode_combo(caption_size + 0.5 * m_space_size, combox_content_size)) { + ; + } + show_selection_ui(); + show_face_face_assembly_common(); + ImGui::Separator(); + show_face_face_assembly_senior(); + show_distance_xyz_ui(); + render_input_window_warning(m_same_model_object); + ImGui::Separator(); + + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); + float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; + float caption_max = 0.f; + float total_text_max = 0.f; + for (const auto &t : std::array{"point_selection", "reset", "unselect"}) { + caption_max = std::max(caption_max, m_imgui->calc_text_size(m_desc[t + "_caption"]).x); + total_text_max = std::max(total_text_max, m_imgui->calc_text_size(m_desc[t]).x); + } + show_tooltip_information(caption_max, x, get_cur_y); + + float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); + ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); + + ImGui::PopStyleVar(2); + + if (last_feature != m_curr_feature || last_mode != m_mode || last_selected_features != m_selected_features) { + // the dialog may have changed its size, ask for an extra frame to render it properly + last_feature = m_curr_feature; + last_mode = m_mode; + last_selected_features = m_selected_features; + m_imgui->set_requires_extra_frame(); + } + m_last_active_item_imgui = m_current_active_imgui_id; + GizmoImguiEnd(); + // Orca + ImGuiWrapper::pop_toolbar_style(); +} + +void GLGizmoAssembly::render_input_window_warning(bool same_model_object) +{ + if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D) { + if (m_hit_different_volumes.size() == 2) { + if (same_model_object == false) { + m_imgui->warning_text(_L("Warning") + ": " + + _L("It is recommended to assemble the objects first,\nbecause the objects is restriced to bed \nand only parts can be lifted.")); + } + } + } +} + +bool GLGizmoAssembly::render_assembly_mode_combo(double label_width, float item_width) +{ + ImGui::AlignTextToFramePadding(); + int selection_idx = int(m_assembly_mode); + std::vector modes = {_u8L("Face and face assembly"), _u8L("Point and point assembly")}; + bool is_changed = false; + + ImGuiWrapper::push_combo_style(m_parent.get_scale()); + if (render_combo(_u8L("Mode"), modes, selection_idx, label_width, item_width)) { + is_changed = true; + switch_to_mode((AssemblyMode) selection_idx); + } + ImGuiWrapper::pop_combo_style(); + return is_changed; +} + +void GLGizmoAssembly::switch_to_mode(AssemblyMode new_mode) +{ + m_assembly_mode = new_mode; + reset_all_feature(); +} + +} // namespace GUI +} // namespace Slic3r diff --git a/src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp new file mode 100644 index 00000000000..7046337b606 --- /dev/null +++ b/src/slic3r/GUI/Gizmos/GLGizmoAssembly.hpp @@ -0,0 +1,43 @@ +#ifndef slic3r_GLGizmoAssembly_hpp_ +#define slic3r_GLGizmoAssembly_hpp_ + +#include "GLGizmoMeasure.hpp" + +namespace Slic3r { + +namespace GUI { +class GLGizmoAssembly : public GLGizmoMeasure +{ + +public: + GLGizmoAssembly(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id); + /// + /// Apply rotation on select plane + /// + /// Keep information about mouse click + /// Return True when use the information otherwise False. + //bool on_mouse(const wxMouseEvent &mouse_event) override; + //void data_changed(bool is_serializing) override; + //bool gizmo_event(SLAGizmoEventType action, const Vec2d &mouse_position, bool shift_down, bool alt_down, bool control_down) override; + + bool wants_enter_leave_snapshots() const override { return true; } + std::string get_gizmo_entering_text() const override { return _u8L("Entering Assembly gizmo"); } + std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Assembly gizmo"); } +protected: + //bool on_init() override; + std::string on_get_name() const override; + bool on_is_activable() const override; + //void on_render() override; + //void on_set_state() override; + virtual void on_render_input_window(float x, float y, float bottom_limit) override; + + void render_input_window_warning(bool same_model_object) override; + bool render_assembly_mode_combo(double label_width, float item_width); + + void switch_to_mode(AssemblyMode new_mode); +}; + +} // namespace GUI +} // namespace Slic3r + +#endif // slic3r_GLGizmoAssembly_hpp_ diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp index 0a219a5cc39..97875ee606c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.cpp @@ -194,6 +194,39 @@ void GLGizmoBase::Grabber::render(float size, const ColorRGBA& render_color) } } +bool GLGizmoBase::render_combo(const std::string &label, const std::vector &lines, int &selection_idx, float label_width, float item_width) +{ + ImGuiWrapper::push_combo_style(m_parent.get_scale()); + ImGui::AlignTextToFramePadding(); + m_imgui->text(label); + ImGui::SameLine(label_width); + ImGui::PushItemWidth(item_width); + + size_t selection_out = selection_idx; + + const char *selected_str = (selection_idx >= 0 && selection_idx < int(lines.size())) ? lines[selection_idx].c_str() : ""; + if (ImGui::BBLBeginCombo(("##" + label).c_str(), selected_str, 0)) { + for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { + ImGui::PushID(int(line_idx)); + if (ImGui::Selectable("", line_idx == selection_idx)) selection_out = line_idx; + + ImGui::SameLine(); + ImGui::Text("%s", lines[line_idx].c_str()); + ImGui::PopID(); + } + + ImGui::EndCombo(); + } + + bool is_changed = selection_idx != selection_out; + selection_idx = selection_out; + + //if (is_changed) update_connector_shape(); + ImGuiWrapper::pop_combo_style(); + + return is_changed; +} + GLGizmoBase::GLGizmoBase(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id) : m_parent(parent) , m_group_id(-1) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp index 4a177f02fc4..e78da31501a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoBase.hpp @@ -8,6 +8,7 @@ #include "slic3r/GUI/GLModel.hpp" #include "slic3r/GUI/MeshUtils.hpp" #include "slic3r/GUI/SceneRaycaster.hpp" +#include "slic3r/GUI/3DScene.hpp" #include @@ -148,6 +149,9 @@ class GLGizmoBase bool m_is_dark_mode = false; + bool render_combo(const std::string &label, const std::vector &lines, + int &selection_idx, float label_width, float item_width); + public: GLGizmoBase(GLCanvas3D& parent, const std::string& icon_filename, @@ -181,6 +185,13 @@ class GLGizmoBase virtual bool apply_clipping_plane() { return true; } + /// + /// Implement when want to process mouse events in gizmo + /// Click, Right click, move, drag, ... + /// + /// Keep information about mouse click + /// Return True when use the information and don't want to propagate it otherwise False. + virtual bool on_mouse(const wxMouseEvent &mouse_event) { return false; } unsigned int get_sprite_id() const { return m_sprite_id; } int get_hover_id() const { return m_hover_id; } @@ -209,14 +220,6 @@ class GLGizmoBase /// virtual void data_changed(bool is_serializing){}; - /// - /// Implement when want to process mouse events in gizmo - /// Click, Right click, move, drag, ... - /// - /// Keep information about mouse click - /// Return True when use the information and don't want to propagate it otherwise False. - virtual bool on_mouse(const wxMouseEvent &mouse_event) { return false; } - void register_raycasters_for_picking() { register_grabbers_for_picking(); on_register_raycasters_for_picking(); } void unregister_raycasters_for_picking() { unregister_grabbers_for_picking(); on_unregister_raycasters_for_picking(); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index c6fc3d445a6..53e1ab1cad2 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -520,40 +520,6 @@ bool GLGizmoCut3D::render_cut_mode_combo() return is_changed; } -bool GLGizmoCut3D::render_combo(const std::string& label, const std::vector& lines, int& selection_idx) -{ - ImGuiWrapper::push_combo_style(m_parent.get_scale()); - ImGui::AlignTextToFramePadding(); - m_imgui->text(label); - ImGui::SameLine(m_label_width); - ImGui::PushItemWidth(m_editing_window_width); - - size_t selection_out = selection_idx; - - const char* selected_str = (selection_idx >= 0 && selection_idx < int(lines.size())) ? lines[selection_idx].c_str() : ""; - if (ImGui::BBLBeginCombo(("##" + label).c_str(), selected_str, 0)) { - for (size_t line_idx = 0; line_idx < lines.size(); ++line_idx) { - ImGui::PushID(int(line_idx)); - if (ImGui::Selectable("", line_idx == selection_idx)) - selection_out = line_idx; - - ImGui::SameLine(); - ImGui::Text("%s", lines[line_idx].c_str()); - ImGui::PopID(); - } - - ImGui::EndCombo(); - } - - bool is_changed = selection_idx != selection_out; - selection_idx = selection_out; - - //if (is_changed) update_connector_shape(); - ImGuiWrapper::pop_combo_style(); - - return is_changed; -} - bool GLGizmoCut3D::render_double_input(const std::string& label, double& value_in) { ImGui::AlignTextToFramePadding(); @@ -2299,7 +2265,7 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo m_connector_style = int(CutConnectorStyle::Prism); apply_selected_connectors([this, &connectors](size_t idx) { connectors[idx].attribs.style = CutConnectorStyle(m_connector_style); }); } - if (render_combo(m_labels_map["Style"], m_connector_styles, m_connector_style)) + if (render_combo(m_labels_map["Style"], m_connector_styles, m_connector_style, m_label_width, m_editing_window_width)) apply_selected_connectors([this, &connectors](size_t idx) { connectors[idx].attribs.style = CutConnectorStyle(m_connector_style); }); m_imgui->disabled_end(); @@ -2308,7 +2274,7 @@ void GLGizmoCut3D::render_connectors_input_window(CutConnectors &connectors, flo m_connector_shape_id = int(CutConnectorShape::Circle); apply_selected_connectors([this, &connectors](size_t idx) { connectors[idx].attribs.shape = CutConnectorShape(m_connector_shape_id); }); } - if (render_combo(m_labels_map["Shape"], m_connector_shapes, m_connector_shape_id)) + if (render_combo(m_labels_map["Shape"], m_connector_shapes, m_connector_shape_id, m_label_width, m_editing_window_width)) apply_selected_connectors([this, &connectors](size_t idx) { connectors[idx].attribs.shape = CutConnectorShape(m_connector_shape_id); }); m_imgui->disabled_end(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index f09ca7a4b88..47a6d47f39c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -335,7 +335,6 @@ class GLGizmoCut3D : public GLGizmoBase void set_center(const Vec3d¢er, bool update_tbb = false); void switch_to_mode(size_t new_mode); bool render_cut_mode_combo(); - bool render_combo(const std::string&label, const std::vector&lines, int&selection_idx); bool render_double_input(const std::string& label, double& value_in); bool render_slider_double_input(const std::string& label, float& value_in, float& tolerance_in, float min_val = -0.1f, float max_tolerance = -0.1f); void render_move_center_input(int axis); diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp index 276699beef5..e513fdb03ff 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.cpp @@ -3,7 +3,7 @@ #include "slic3r/GUI/GUI_App.hpp" #include "slic3r/GUI/Plater.hpp" #include "slic3r/GUI/Gizmos/GizmoObjectManipulation.hpp" - +#include "slic3r/Utils/UndoRedo.hpp" #include "libslic3r/PresetBundle.hpp" #include "libslic3r/MeasureUtils.hpp" @@ -20,45 +20,21 @@ namespace Slic3r { namespace GUI { - -static const Slic3r::ColorRGBA SELECTED_1ST_COLOR = { 0.25f, 0.75f, 0.75f, 1.0f }; -static const Slic3r::ColorRGBA SELECTED_2ND_COLOR = { 0.75f, 0.25f, 0.75f, 1.0f }; -static const Slic3r::ColorRGBA NEUTRAL_COLOR = {0.5f, 0.5f, 0.5f, 1.0f}; -static const Slic3r::ColorRGBA HOVER_COLOR = ColorRGBA::GREEN(); - -static const int POINT_ID = 100; -static const int EDGE_ID = 200; -static const int CIRCLE_ID = 300; -static const int PLANE_ID = 400; -static const int SEL_SPHERE_1_ID = 501; -static const int SEL_SPHERE_2_ID = 502; - -static const float TRIANGLE_BASE = 10.0f; -static const float TRIANGLE_HEIGHT = TRIANGLE_BASE * 1.618033f; - -static const std::string CTRL_STR = -#ifdef __APPLE__ -"⌘" -#else -"Ctrl" -#endif //__APPLE__ -; - -static std::string format_double(double value) +std::string GLGizmoMeasure::format_double(double value) { char buf[1024]; sprintf(buf, "%.3f", value); return std::string(buf); } -static std::string format_vec3(const Vec3d& v) +std::string GLGizmoMeasure::format_vec3(const Vec3d &v) { char buf[1024]; sprintf(buf, "X: %.3f, Y: %.3f, Z: %.3f", v.x(), v.y(), v.z()); return std::string(buf); } -static std::string surface_feature_type_as_string(Measure::SurfaceFeatureType type) +std::string GLGizmoMeasure::surface_feature_type_as_string(Measure::SurfaceFeatureType type) { switch (type) { @@ -71,7 +47,7 @@ static std::string surface_feature_type_as_string(Measure::SurfaceFeatureType ty } } -static std::string point_on_feature_type_as_string(Measure::SurfaceFeatureType type, int hover_id) +std::string GLGizmoMeasure::point_on_feature_type_as_string(Measure::SurfaceFeatureType type, int hover_id) { std::string ret; switch (type) { @@ -84,7 +60,7 @@ static std::string point_on_feature_type_as_string(Measure::SurfaceFeatureType t return ret; } -static std::string center_on_feature_type_as_string(Measure::SurfaceFeatureType type) +std::string GLGizmoMeasure::center_on_feature_type_as_string(Measure::SurfaceFeatureType type) { std::string ret; switch (type) { @@ -95,84 +71,13 @@ static std::string center_on_feature_type_as_string(Measure::SurfaceFeatureType return ret; } -static GLModel::Geometry init_plane_data(const indexed_triangle_set& its, const std::vector& triangle_indices) -{ - GLModel::Geometry init_data; - init_data.format = { GUI::GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 }; - init_data.reserve_indices(3 * triangle_indices.size()); - init_data.reserve_vertices(3 * triangle_indices.size()); - unsigned int i = 0; - for (int idx : triangle_indices) { - const Vec3f& v0 = its.vertices[its.indices[idx][0]]; - const Vec3f& v1 = its.vertices[its.indices[idx][1]]; - const Vec3f& v2 = its.vertices[its.indices[idx][2]]; - - const Vec3f n = (v1 - v0).cross(v2 - v0).normalized(); - init_data.add_vertex(v0, n); - init_data.add_vertex(v1, n); - init_data.add_vertex(v2, n); - init_data.add_triangle(i, i + 1, i + 2); - i += 3; - } - - return init_data; -} - -static GLModel::Geometry init_torus_data(unsigned int primary_resolution, unsigned int secondary_resolution, const Vec3f& center, - float radius, float thickness, const Vec3f& model_axis, const Transform3f& world_trafo) -{ - const unsigned int torus_sector_count = std::max(4, primary_resolution); - const unsigned int section_sector_count = std::max(4, secondary_resolution); - const float torus_sector_step = 2.0f * float(M_PI) / float(torus_sector_count); - const float section_sector_step = 2.0f * float(M_PI) / float(section_sector_count); - - GLModel::Geometry data; - data.format = { GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 }; - data.reserve_vertices(torus_sector_count * section_sector_count); - data.reserve_indices(torus_sector_count * section_sector_count * 2 * 3); - - // vertices - const Transform3f local_to_world_matrix = world_trafo * Geometry::translation_transform(center.cast()).cast() * - Eigen::Quaternion::FromTwoVectors(Vec3f::UnitZ(), model_axis); - for (unsigned int i = 0; i < torus_sector_count; ++i) { - const float section_angle = torus_sector_step * i; - const Vec3f radius_dir(std::cos(section_angle), std::sin(section_angle), 0.0f); - const Vec3f local_section_center = radius * radius_dir; - const Vec3f world_section_center = local_to_world_matrix * local_section_center; - const Vec3f local_section_normal = local_section_center.normalized().cross(Vec3f::UnitZ()).normalized(); - const Vec3f world_section_normal = (Vec3f)(local_to_world_matrix.matrix().block(0, 0, 3, 3) * local_section_normal).normalized(); - const Vec3f base_v = thickness * radius_dir; - for (unsigned int j = 0; j < section_sector_count; ++j) { - const Vec3f v = Eigen::AngleAxisf(section_sector_step * j, world_section_normal) * base_v; - data.add_vertex(world_section_center + v, (Vec3f)v.normalized()); - } - } - - // triangles - for (unsigned int i = 0; i < torus_sector_count; ++i) { - const unsigned int ii = i * section_sector_count; - const unsigned int ii_next = ((i + 1) % torus_sector_count) * section_sector_count; - for (unsigned int j = 0; j < section_sector_count; ++j) { - const unsigned int j_next = (j + 1) % section_sector_count; - const unsigned int i0 = ii + j; - const unsigned int i1 = ii_next + j; - const unsigned int i2 = ii_next + j_next; - const unsigned int i3 = ii + j_next; - data.add_triangle(i0, i1, i2); - data.add_triangle(i0, i2, i3); - } - } - - return data; -} - -static bool is_feature_with_center(const Measure::SurfaceFeature& feature) +bool GLGizmoMeasure::is_feature_with_center(const Measure::SurfaceFeature &feature) { const Measure::SurfaceFeatureType type = feature.get_type(); return (type == Measure::SurfaceFeatureType::Circle || (type == Measure::SurfaceFeatureType::Edge && feature.get_extra_point().has_value())); } -static Vec3d get_feature_offset(const Measure::SurfaceFeature& feature) +Vec3d GLGizmoMeasure::get_feature_offset(const Measure::SurfaceFeature &feature) { Vec3d ret; switch (feature.get_type()) @@ -197,82 +102,76 @@ static Vec3d get_feature_offset(const Measure::SurfaceFeature& feature) } default: { assert(false); } } - return ret; } -class TransformHelper -{ - struct Cache - { - std::array viewport; - Matrix4d ndc_to_ss_matrix; - Transform3d ndc_to_ss_matrix_inverse; - }; - - static Cache s_cache; - -public: - static Vec3d model_to_world(const Vec3d& model, const Transform3d& world_matrix) { - return world_matrix * model; - } +Vec3d TransformHelper::model_to_world(const Vec3d &model, const Transform3d &world_matrix) { + return world_matrix * model; +} - static Vec4d world_to_clip(const Vec3d& world, const Matrix4d& projection_view_matrix) { - return projection_view_matrix * Vec4d(world.x(), world.y(), world.z(), 1.0); - } +Vec4d TransformHelper::world_to_clip(const Vec3d &world, const Matrix4d &projection_view_matrix) +{ + return projection_view_matrix * Vec4d(world.x(), world.y(), world.z(), 1.0); +} - static Vec3d clip_to_ndc(const Vec4d& clip) { - return Vec3d(clip.x(), clip.y(), clip.z()) / clip.w(); - } +Vec3d TransformHelper::clip_to_ndc(const Vec4d &clip) { + return Vec3d(clip.x(), clip.y(), clip.z()) / clip.w(); +} - static Vec2d ndc_to_ss(const Vec3d& ndc, const std::array& viewport) { - const double half_w = 0.5 * double(viewport[2]); - const double half_h = 0.5 * double(viewport[3]); - return { half_w * ndc.x() + double(viewport[0]) + half_w, half_h * ndc.y() + double(viewport[1]) + half_h }; - }; +Vec2d TransformHelper::ndc_to_ss(const Vec3d &ndc, const std::array &viewport) +{ + const double half_w = 0.5 * double(viewport[2]); + const double half_h = 0.5 * double(viewport[3]); + return { half_w * ndc.x() + double(viewport[0]) + half_w, half_h * ndc.y() + double(viewport[1]) + half_h }; +}; - static Vec4d model_to_clip(const Vec3d& model, const Transform3d& world_matrix, const Matrix4d& projection_view_matrix) { - return world_to_clip(model_to_world(model, world_matrix), projection_view_matrix); - } +Vec4d TransformHelper::model_to_clip(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix) +{ + return world_to_clip(model_to_world(model, world_matrix), projection_view_matrix); +} - static Vec3d model_to_ndc(const Vec3d& model, const Transform3d& world_matrix, const Matrix4d& projection_view_matrix) { - return clip_to_ndc(world_to_clip(model_to_world(model, world_matrix), projection_view_matrix)); - } +Vec3d TransformHelper::model_to_ndc(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix) +{ + return clip_to_ndc(world_to_clip(model_to_world(model, world_matrix), projection_view_matrix)); +} - static Vec2d model_to_ss(const Vec3d& model, const Transform3d& world_matrix, const Matrix4d& projection_view_matrix, const std::array& viewport) { - return ndc_to_ss(clip_to_ndc(world_to_clip(model_to_world(model, world_matrix), projection_view_matrix)), viewport); - } +Vec2d TransformHelper::model_to_ss(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix, const std::array &viewport) +{ + return ndc_to_ss(clip_to_ndc(world_to_clip(model_to_world(model, world_matrix), projection_view_matrix)), viewport); +} - static Vec2d world_to_ss(const Vec3d& world, const Matrix4d& projection_view_matrix, const std::array& viewport) { - return ndc_to_ss(clip_to_ndc(world_to_clip(world, projection_view_matrix)), viewport); - } +Vec2d TransformHelper::world_to_ss(const Vec3d &world, const Matrix4d &projection_view_matrix, const std::array &viewport) +{ + return ndc_to_ss(clip_to_ndc(world_to_clip(world, projection_view_matrix)), viewport); +} - static const Matrix4d& ndc_to_ss_matrix(const std::array& viewport) { - update(viewport); - return s_cache.ndc_to_ss_matrix; - } +const Matrix4d &TransformHelper::ndc_to_ss_matrix(const std::array &viewport) +{ + update(viewport); + return s_cache.ndc_to_ss_matrix; +} - static const Transform3d ndc_to_ss_matrix_inverse(const std::array& viewport) { - update(viewport); - return s_cache.ndc_to_ss_matrix_inverse; - } +const Transform3d TransformHelper::ndc_to_ss_matrix_inverse(const std::array &viewport) +{ + update(viewport); + return s_cache.ndc_to_ss_matrix_inverse; +} -private: - static void update(const std::array& viewport) { - if (s_cache.viewport == viewport) - return; +void TransformHelper::update(const std::array &viewport) +{ + if (s_cache.viewport == viewport) + return; - const double half_w = 0.5 * double(viewport[2]); - const double half_h = 0.5 * double(viewport[3]); - s_cache.ndc_to_ss_matrix << half_w, 0.0, 0.0, double(viewport[0]) + half_w, - 0.0, half_h, 0.0, double(viewport[1]) + half_h, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0; + const double half_w = 0.5 * double(viewport[2]); + const double half_h = 0.5 * double(viewport[3]); + s_cache.ndc_to_ss_matrix << half_w, 0.0, 0.0, double(viewport[0]) + half_w, + 0.0, half_h, 0.0, double(viewport[1]) + half_h, + 0.0, 0.0, 1.0, 0.0, + 0.0, 0.0, 0.0, 1.0; - s_cache.ndc_to_ss_matrix_inverse = s_cache.ndc_to_ss_matrix.inverse(); - s_cache.viewport = viewport; - } -}; + s_cache.ndc_to_ss_matrix_inverse = s_cache.ndc_to_ss_matrix.inverse(); + s_cache.viewport = viewport; +} TransformHelper::Cache TransformHelper::s_cache = { { 0, 0, 0, 0 }, Matrix4d::Identity(), Transform3d::Identity() }; @@ -282,23 +181,23 @@ GLGizmoMeasure::GLGizmoMeasure(GLCanvas3D& parent, const std::string& icon_filen GLModel::Geometry sphere_geometry = smooth_sphere(16, 7.5f); m_sphere.mesh_raycaster = std::make_unique(std::make_shared(sphere_geometry.get_as_indexed_triangle_set())); m_sphere.model.init_from(std::move(sphere_geometry)); + m_gripper_id_raycast_map[GripperType::POINT] = std::make_shared(POINT_ID, *m_sphere.mesh_raycaster); GLModel::Geometry cylinder_geometry = smooth_cylinder(16, 5.0f, 1.0f); m_cylinder.mesh_raycaster = std::make_unique(std::make_shared(cylinder_geometry.get_as_indexed_triangle_set())); m_cylinder.model.init_from(std::move(cylinder_geometry)); + m_gripper_id_raycast_map[GripperType::EDGE] = std::make_shared(EDGE_ID, *m_cylinder.mesh_raycaster); } bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) { - m_mouse_pos = { double(mouse_event.GetX()), double(mouse_event.GetY()) }; - if (mouse_event.Moving()) { - // only for sure + // only for sure m_mouse_left_down = false; return false; } else if (mouse_event.Dragging()) { - // Enable/Disable panning/rotating the 3D scene + // Enable/Disable panning/rotating the 3D scene // Ctrl is pressed or the mouse is not hovering a selected volume bool unlock_dragging = mouse_event.CmdDown() || (m_hover_id == -1 && !m_parent.get_selection().contains_volume(m_parent.get_first_hover_volume_idx())); // mode is not center selection or mouse is not hovering a center @@ -312,7 +211,7 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) if (m_hover_id != -1) { m_mouse_left_down = true; - + m_mouse_left_down_mesh_deal = true; auto detect_current_item = [this]() { SelectedFeatures::Item item; if (m_hover_id == SEL_SPHERE_1_ID) { @@ -341,7 +240,13 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) switch (m_mode) { case EMode::FeatureSelection: { item = { false, m_curr_feature, m_curr_feature }; break; } - case EMode::PointSelection: { item = { false, m_curr_feature, Measure::SurfaceFeature(*m_curr_point_on_feature_position) }; break; } + case EMode::PointSelection: { + item = { false, m_curr_feature, Measure::SurfaceFeature(*m_curr_point_on_feature_position)}; + auto local_pt = m_curr_feature->world_tran.inverse() * (*m_curr_point_on_feature_position); + item.feature->origin_surface_feature = std::make_shared(local_pt); + item.feature->world_tran = m_curr_feature->world_tran; + item.feature->volume = m_curr_feature->volume; + break; } } } return item; @@ -358,7 +263,13 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) }; if (m_selected_features.first.feature.has_value()) { + reset_feature2_render(); const SelectedFeatures::Item item = detect_current_item(); + if (!is_pick_meet_assembly_mode(item)) { // assembly deal + m_selected_wrong_feature_waring_tip = true; + return true; + } + m_selected_wrong_feature_waring_tip = false; if (m_selected_features.first != item) { bool processed = false; if (item.is_center) { @@ -388,14 +299,18 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) if (!processed) { remove_selected_sphere_raycaster(SEL_SPHERE_2_ID); - if (m_selected_features.second == item) + if (m_selected_features.second == item) { // 2nd feature deselection - m_selected_features.second.reset(); + // m_selected_features.second.reset(); + reset_feature2(); + } else { // 2nd feature selection m_selected_features.second = item; - if (requires_sphere_raycaster_for_picking(item)) - m_selected_sphere_raycasters.push_back(m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, SEL_SPHERE_2_ID, *m_sphere.mesh_raycaster)); + if (requires_sphere_raycaster_for_picking(item)) { + auto pick = std::make_shared(SEL_SPHERE_2_ID, *m_sphere.mesh_raycaster); + m_gripper_id_raycast_map[GripperType::SPHERE_2] = pick; + } } } } @@ -403,29 +318,36 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) remove_selected_sphere_raycaster(SEL_SPHERE_1_ID); if (m_selected_features.second.feature.has_value()) { // promote 2nd feature to 1st feature - remove_selected_sphere_raycaster(SEL_SPHERE_2_ID); - m_selected_features.first = m_selected_features.second; - if (requires_sphere_raycaster_for_picking(m_selected_features.first)) - m_selected_sphere_raycasters.push_back(m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, SEL_SPHERE_1_ID, *m_sphere.mesh_raycaster)); - m_selected_features.second.reset(); - } - else + reset_feature1(); + if (requires_sphere_raycaster_for_picking(m_selected_features.first)) { + auto pick = std::make_shared(SEL_SPHERE_1_ID, *m_sphere.mesh_raycaster); + m_gripper_id_raycast_map[GripperType::SPHERE_1] = pick; + } + } else { // 1st feature deselection - m_selected_features.first.reset(); + reset_feature1(); + } } } else { // 1st feature selection + reset_feature1_render(); const SelectedFeatures::Item item = detect_current_item(); + if (!is_pick_meet_assembly_mode(item)) {//assembly deal + m_selected_wrong_feature_waring_tip = true; + return true; + } + m_selected_wrong_feature_waring_tip = false; m_selected_features.first = item; - if (requires_sphere_raycaster_for_picking(item)) - m_selected_sphere_raycasters.push_back(m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, SEL_SPHERE_1_ID, *m_sphere.mesh_raycaster)); + if (requires_sphere_raycaster_for_picking(item)) { + auto pick = std::make_shared(SEL_SPHERE_1_ID, *m_sphere.mesh_raycaster); + m_gripper_id_raycast_map[GripperType::SPHERE_1] = pick; + } } update_measurement_result(); m_imgui->set_requires_extra_frame(); - return true; } else @@ -459,22 +381,27 @@ bool GLGizmoMeasure::on_mouse(const wxMouseEvent &mouse_event) return false; } + void GLGizmoMeasure::data_changed(bool is_serializing) { - m_parent.toggle_sla_auxiliaries_visibility(false, nullptr, -1); + wxBusyCursor wait; - update_if_needed(); - - m_last_inv_zoom = 0.0f; - m_last_plane_idx = -1; - if (m_pending_scale) { + if (m_pending_scale > 0) { + update_if_needed(); + register_single_mesh_pick(); update_measurement_result(); - m_pending_scale = false; + m_pending_scale --; + } + else { + m_parent.toggle_selected_volume_visibility(true); + reset_all_pick(); + update_if_needed(); + register_single_mesh_pick(); + reset_all_feature(); } - else - m_selected_features.reset(); - m_selected_sphere_raycasters.clear(); - m_editing_distance = false; + m_last_inv_zoom = 0.0f; + m_last_plane_idx = -1; + m_editing_distance = false; m_is_editing_distance_first_frame = true; } @@ -493,8 +420,7 @@ bool GLGizmoMeasure::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_po restore_scene_raycasters_state(); } else if (action == SLAGizmoEventType::Delete) { - m_selected_features.reset(); - m_selected_sphere_raycasters.clear(); + reset_all_feature(); m_parent.request_extra_frame(); } else if (action == SLAGizmoEventType::Escape) { @@ -504,18 +430,13 @@ bool GLGizmoMeasure::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_po } else { if (m_selected_features.second.feature.has_value()) { - remove_selected_sphere_raycaster(SEL_SPHERE_2_ID); - m_selected_features.second.feature.reset(); + reset_feature2(); } else { - remove_selected_sphere_raycaster(SEL_SPHERE_1_ID); - m_selected_features.first.feature.reset(); + reset_feature1(); } - - update_measurement_result(); } } - return true; } @@ -523,14 +444,13 @@ bool GLGizmoMeasure::on_init() { m_shortcut_key = WXK_CONTROL_U; - m_desc["feature_selection_caption"] = _L("ShiftLeft mouse button"); m_desc["feature_selection"] = _L("Select feature"); m_desc["point_selection_caption"] = _L("Shift + Left mouse button"); m_desc["point_selection"] = _L("Select point"); m_desc["reset_caption"] = _L("Delete"); m_desc["reset"] = _L("Restart selection"); m_desc["unselect_caption"] = _L("Esc"); - m_desc["unselect"] = _L("Unselect"); + m_desc["unselect"] = _L("Cancel a feature until exit"); return true; } @@ -538,46 +458,101 @@ bool GLGizmoMeasure::on_init() void GLGizmoMeasure::on_set_state() { if (m_state == Off) { - m_parent.toggle_sla_auxiliaries_visibility(true, nullptr, -1); + m_parent.toggle_selected_volume_visibility(false); m_shift_kar_filter.reset_count(); m_curr_feature.reset(); m_curr_point_on_feature_position.reset(); restore_scene_raycasters_state(); m_editing_distance = false; m_is_editing_distance_first_frame = true; - m_measuring.reset(); - m_raycaster.reset(); + std::map>().swap(m_mesh_measure_map); } else { m_mode = EMode::FeatureSelection; - // store current state of scene raycaster for later use - m_scene_raycasters.clear(); - auto scene_raycasters = m_parent.get_raycasters_for_picking(SceneRaycaster::EType::Volume); - if (scene_raycasters != nullptr) { - m_scene_raycasters.reserve(scene_raycasters->size()); - for (auto r : *scene_raycasters) { - SceneRaycasterState state = { r, r->is_active() }; - m_scene_raycasters.emplace_back(state); - } - } + m_hover_id = -1; + m_show_reset_first_tip = false; + m_only_select_plane = false; + m_distance = Vec3d::Zero(); } } std::string GLGizmoMeasure::on_get_name() const { - return _u8L("Measure"); + if (!on_is_activable() && m_state == EState::Off) { + if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasAssembleView) { + return _u8L("Measure") + ":\n" + _u8L("Please confirm explosion ratio = 1,and please select at least one object"); + } + else { + return _u8L("Measure") + ":\n" + _u8L("Please select at least one object."); + } + } else { + return _u8L("Measure"); + } } bool GLGizmoMeasure::on_is_activable() const { const Selection& selection = m_parent.get_selection(); - bool res = (wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptSLA) ? - selection.is_single_full_instance() : - selection.is_single_full_instance() || selection.is_single_volume() || selection.is_single_modifier(); - if (res) - res &= !selection.contains_sinking_volumes(); + if (selection.is_wipe_tower()) { + return false; + } + if (wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasAssembleView) { + if (abs(m_parent.get_explosion_ratio() - 1.0f) < 1e-2 && selection.volumes_count() > 0) { + return true; + } + return false; + } else { + return selection.volumes_count() > 0; + } +} - return res; +void GLGizmoMeasure::init_circle_glmodel(GripperType gripper_type, const Measure::SurfaceFeature &feature, CircleGLModel &circle_gl_model,float inv_zoom) +{ + const auto [center, radius, normal] = feature.get_circle(); + auto cur_feature =const_cast(&feature); + if (circle_gl_model.inv_zoom != inv_zoom) { + if (circle_gl_model.last_circle_feature) { + const auto [last_center, last_radius, last_normal] = circle_gl_model.last_circle_feature->get_circle(); + float eps = 1e-2; + if ((last_center - center).norm() < eps && (last_normal - normal).norm() < eps && abs(last_radius - radius) < eps){ + return; + } + } + reset_gripper_pick(gripper_type); + circle_gl_model.circle.reset(); + GLModel::Geometry circle_geometry = init_torus_data(64, 16, center.cast(), float(radius), 5.0f * inv_zoom, normal.cast(), Transform3f::Identity()); + circle_gl_model.circle.mesh_raycaster = std::make_unique(std::make_shared(circle_geometry.get_as_indexed_triangle_set())); + circle_gl_model.circle.model.init_from(std::move(circle_geometry)); + if (circle_gl_model.circle.model.is_initialized()) { + m_gripper_id_raycast_map[gripper_type] = std::make_shared(CIRCLE_ID, *m_curr_circle.circle.mesh_raycaster); + } + circle_gl_model.last_circle_feature = cur_feature; + circle_gl_model.inv_zoom = inv_zoom; + } +} +const float MEASURE_PLNE_NORMAL_OFFSET = 0.05; +void GLGizmoMeasure::init_plane_glmodel(GripperType gripper_type, const Measure::SurfaceFeature &feature, PlaneGLModel &plane_gl_model) +{ + if (!feature.volume) { return; } + Selection& selection = m_parent.get_selection(); + auto volume = static_cast(feature.volume); + const ModelObject* obj = selection.get_model()->objects[volume->object_idx()]; + const ModelVolume* vol = obj->volumes[volume->volume_idx()]; + auto mesh = vol->mesh_ptr(); + const auto &[idx, normal, pt] = feature.get_plane(); + if (plane_gl_model.plane_idx != idx) { + plane_gl_model.plane.reset(); + } + if (!plane_gl_model.plane.model.is_initialized()) { + plane_gl_model.plane_idx = idx; + reset_gripper_pick(gripper_type); + GLModel::Geometry init_data = init_plane_data(mesh->its, *feature.plane_indices, MEASURE_PLNE_NORMAL_OFFSET); + plane_gl_model.plane.mesh_raycaster = std::make_unique(std::make_shared(init_data.get_as_indexed_triangle_set())); + plane_gl_model.plane.model.init_from(std::move(init_data)); + if (plane_gl_model.plane.model.is_initialized()) { + m_gripper_id_raycast_map[gripper_type] = std::make_shared(PLANE_ID, *plane_gl_model.plane.mesh_raycaster, feature.world_tran); + } + } } void GLGizmoMeasure::on_render() @@ -586,91 +561,166 @@ void GLGizmoMeasure::on_render() render_debug_dialog(); #endif // ENABLE_MEASURE_GIZMO_DEBUG -// // do not render if the user is panning/rotating the 3d scene -// if (m_parent.is_mouse_dragging()) -// return; - + Vec2d mouse_position = m_parent.get_local_mouse_position(); update_if_needed(); const Camera& camera = wxGetApp().plater()->get_camera(); const float inv_zoom = (float)camera.get_inv_zoom(); + bool mouse_on_gripper = false; + bool mouse_on_object =false; + { + if (!m_editing_distance) { + Vec3f hit = Vec3f::Zero(); + double closest_hit_squared_distance = std::numeric_limits::max(); + for (auto item : m_gripper_id_raycast_map) { + + auto world_tran = item.second->get_transform(); + Vec3f normal_on_gripper; + if (item.second->get_raycaster()->closest_hit(mouse_position, item.second->get_transform(), camera, hit, normal_on_gripper)) { + double hit_squared_distance = (camera.get_position() - world_tran * hit.cast()).squaredNorm(); + if (hit_squared_distance < closest_hit_squared_distance) { + closest_hit_squared_distance = hit_squared_distance; + if (item.second->get_id() > 0) { + m_hover_id = item.second->get_id(); + mouse_on_gripper = true; + } + } + } + } + } + } + Vec3d position_on_model; + Vec3d direction_on_model; + size_t model_facet_idx = -1; + double closest_hit_distance = std::numeric_limits::max(); + { + if (!m_editing_distance) { + for (auto item : m_mesh_raycaster_map) { + auto raycaster = item.second->get_raycaster(); + auto world_tran = item.second->get_transform(); + Vec3f normal = Vec3f::Zero(); + Vec3f hit = Vec3f::Zero(); + size_t facet = 0; + if (raycaster->unproject_on_mesh(mouse_position, world_tran, camera, hit, normal, nullptr, &facet)) { + // Is this hit the closest to the camera so far? + double hit_squared_distance = (camera.get_position() - world_tran * hit.cast()).norm(); + if (hit_squared_distance < closest_hit_distance) { + closest_hit_distance = hit_squared_distance; + mouse_on_object = true; + model_facet_idx = facet; + position_on_model = hit.cast(); + m_last_hit_volume = item.first; + m_curr_measuring = m_mesh_measure_map[m_last_hit_volume]; + } + } + } + } - Vec3f position_on_model; - Vec3f normal_on_model; - size_t model_facet_idx; - const bool mouse_on_object = m_raycaster->unproject_on_mesh(m_mouse_pos, Transform3d::Identity(), camera, position_on_model, normal_on_model, nullptr, &model_facet_idx); - const bool is_hovering_on_feature = m_mode == EMode::PointSelection && m_hover_id != -1; - - auto update_circle = [this, inv_zoom]() { - if (m_last_inv_zoom != inv_zoom || m_last_circle != m_curr_feature) { - m_last_inv_zoom = inv_zoom; - m_last_circle = m_curr_feature; - m_circle.reset(); - const auto [center, radius, normal] = m_curr_feature->get_circle(); - GLModel::Geometry circle_geometry = init_torus_data(64, 16, center.cast(), float(radius), 5.0f * inv_zoom, normal.cast(), Transform3f::Identity()); - m_circle.mesh_raycaster = std::make_unique(std::make_shared(circle_geometry.get_as_indexed_triangle_set())); - m_circle.model.init_from(std::move(circle_geometry)); - return true; + if (!(mouse_on_gripper || mouse_on_object)) { + m_hover_id = -1; + m_last_plane_idx = -1; + reset_gripper_pick(GripperType::PLANE); + reset_gripper_pick(GripperType::CIRCLE); } - return false; - }; + if (m_mouse_left_down_mesh_deal && m_hover_id >= 0) { + m_mouse_left_down_mesh_deal = false; + if (m_selected_features.second.feature.has_value()) { + if (m_hit_order_volumes.size() == 1) { + m_hit_order_volumes.push_back(m_last_hit_volume); + } else { + m_hit_order_volumes[1] = m_last_hit_volume; + } + // deal hit_different_volumes + if (m_hit_different_volumes.size() >= 1) { + if (m_last_hit_volume == m_hit_different_volumes[0]) { + if (m_hit_different_volumes.size() == 2) {//hit same volume + m_hit_different_volumes.erase(m_hit_different_volumes.begin() + 1); + } + } else { + if (m_hit_different_volumes.size() == 2) { + m_hit_different_volumes[1] = m_last_hit_volume; + } else { + m_hit_different_volumes.push_back(m_last_hit_volume); + } + } + } + } + else if (m_selected_features.first.feature.has_value()) { + if (m_hit_order_volumes.size() == 0) { + m_hit_order_volumes.push_back(m_last_hit_volume); + } else { + m_hit_order_volumes[0] = m_last_hit_volume; + } + //deal hit_different_volumes + if (m_hit_different_volumes.size() == 0) { + m_hit_different_volumes.push_back(m_last_hit_volume); + } + } + } + } + //const bool mouse_on_object = m_raycaster->unproject_on_mesh(mouse_position, Transform3d::Identity(), camera, position_on_model, normal_on_model, nullptr, &model_facet_idx); + const bool is_hovering_on_feature = m_mode == EMode::PointSelection && m_hover_id != -1; if (m_mode == EMode::FeatureSelection || m_mode == EMode::PointSelection) { if (m_hover_id == SEL_SPHERE_1_ID || m_hover_id == SEL_SPHERE_2_ID) { // Skip feature detection if hovering on a selected point/center - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, POINT_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, EDGE_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, PLANE_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, CIRCLE_ID); + //reset_gripper_pick(GripperType::UNDEFINE, true); m_curr_feature.reset(); m_curr_point_on_feature_position.reset(); } else { - std::optional curr_feature = wxGetMouseState().LeftIsDown() ? m_curr_feature : - mouse_on_object ? m_measuring->get_feature(model_facet_idx, position_on_model.cast()) : std::nullopt; - + std::optional curr_feature = std::nullopt; + if (m_curr_measuring) { + curr_feature = wxGetMouseState().LeftIsDown() ? m_curr_feature : + mouse_on_object ? m_curr_measuring->get_feature(model_facet_idx, position_on_model, + m_mesh_raycaster_map[m_last_hit_volume]->get_transform(), m_only_select_plane) : + std::nullopt; + } + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + if (curr_feature->get_type() != Measure::SurfaceFeatureType::Plane) { + curr_feature.reset(); + } + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + if (!(curr_feature->get_type() == Measure::SurfaceFeatureType::Point || + curr_feature->get_type() == Measure::SurfaceFeatureType::Circle || + (m_mode == EMode::PointSelection && (curr_feature->get_type() == Measure::SurfaceFeatureType::Plane || curr_feature->get_type() == Measure::SurfaceFeatureType::Edge)))) { + curr_feature.reset(); + } + } + } if (m_curr_feature != curr_feature || (curr_feature.has_value() && curr_feature->get_type() == Measure::SurfaceFeatureType::Circle && (m_curr_feature != curr_feature || m_last_inv_zoom != inv_zoom))) { - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, POINT_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, EDGE_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, PLANE_ID); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, CIRCLE_ID); - m_raycasters.clear(); + reset_gripper_pick(GripperType::UNDEFINE, true); + m_curr_feature = curr_feature; if (!m_curr_feature.has_value()) return; + m_curr_feature->volume = m_last_hit_volume; + m_curr_feature->world_tran = m_mesh_raycaster_map[m_last_hit_volume]->get_transform(); switch (m_curr_feature->get_type()) { default: { assert(false); break; } case Measure::SurfaceFeatureType::Point: { - m_raycasters.insert({ POINT_ID, m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, POINT_ID, *m_sphere.mesh_raycaster) }); + m_gripper_id_raycast_map[GripperType::POINT] = std::make_shared(POINT_ID, *m_sphere.mesh_raycaster); break; } case Measure::SurfaceFeatureType::Edge: { - m_raycasters.insert({ EDGE_ID, m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, EDGE_ID, *m_cylinder.mesh_raycaster) }); + m_gripper_id_raycast_map[GripperType::EDGE] = std::make_shared(EDGE_ID, *m_cylinder.mesh_raycaster); break; } - case Measure::SurfaceFeatureType::Circle: - { - update_circle(); - m_raycasters.insert({ CIRCLE_ID, m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, CIRCLE_ID, *m_circle.mesh_raycaster) }); + case Measure::SurfaceFeatureType::Circle: { + m_curr_circle.last_circle_feature = nullptr; + m_curr_circle.inv_zoom = 0; + init_circle_glmodel(GripperType::CIRCLE, *m_curr_feature, m_curr_circle,inv_zoom); break; } - case Measure::SurfaceFeatureType::Plane: - { - const auto [idx, normal, point] = m_curr_feature->get_plane(); - if (m_last_plane_idx != idx) { - m_last_plane_idx = idx; - const indexed_triangle_set& its = m_measuring->get_its(); - const std::vector& plane_triangles = m_measuring->get_plane_triangle_indices(idx); - GLModel::Geometry init_data = init_plane_data(its, plane_triangles); - m_plane.reset(); - m_plane.mesh_raycaster = std::make_unique(std::make_shared(init_data.get_as_indexed_triangle_set())); - } - - m_raycasters.insert({ PLANE_ID, m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, PLANE_ID, *m_plane.mesh_raycaster) }); + case Measure::SurfaceFeatureType::Plane: { + update_world_plane_features(m_curr_measuring.get(), *m_curr_feature); + m_curr_plane.plane_idx = -1; + init_plane_glmodel(GripperType::PLANE, *m_curr_feature, m_curr_plane); break; } } @@ -678,16 +728,17 @@ void GLGizmoMeasure::on_render() } } - if (m_mode != EMode::PointSelection) + if (m_mode != EMode::PointSelection) { m_curr_point_on_feature_position.reset(); + } else if (is_hovering_on_feature) { - auto position_on_feature = [this](int feature_type_id, const Camera& camera, std::function callback = nullptr) -> Vec3d { - auto it = m_raycasters.find(feature_type_id); - if (it != m_raycasters.end() && it->second != nullptr) { + auto position_on_feature = [this, &mouse_position](int feature_type_id, const Camera &camera, std::function callback = nullptr) -> Vec3d { + auto it = m_gripper_id_raycast_map.find((GripperType) feature_type_id); // m_raycasters.find(feature_type_id); + if (it != m_gripper_id_raycast_map.end() && it->second != nullptr) { Vec3f p; Vec3f n; const Transform3d& trafo = it->second->get_transform(); - bool res = it->second->get_raycaster()->closest_hit(m_mouse_pos, trafo, camera, p, n); + bool res = it->second->get_raycaster()->closest_hit(mouse_position, trafo, camera, p, n); if (res) { if (callback) p = callback(p); @@ -696,7 +747,6 @@ void GLGizmoMeasure::on_render() } return Vec3d(DBL_MAX, DBL_MAX, DBL_MAX); }; - if (m_curr_feature.has_value()) { switch (m_curr_feature->get_type()) { @@ -709,10 +759,10 @@ void GLGizmoMeasure::on_render() case Measure::SurfaceFeatureType::Edge: { const std::optional extra = m_curr_feature->get_extra_point(); - if (extra.has_value() && m_hover_id == POINT_ID) + if (extra.has_value() && m_hover_id == GripperType::POINT) m_curr_point_on_feature_position = *extra; else { - const Vec3d pos = position_on_feature(EDGE_ID, camera, [](const Vec3f& v) { return Vec3f(0.0f, 0.0f, v.z()); }); + const Vec3d pos = position_on_feature(GripperType::EDGE, camera, [](const Vec3f &v) { return Vec3f(0.0f, 0.0f, v.z()); }); if (!pos.isApprox(Vec3d(DBL_MAX, DBL_MAX, DBL_MAX))) m_curr_point_on_feature_position = pos; } @@ -720,7 +770,7 @@ void GLGizmoMeasure::on_render() } case Measure::SurfaceFeatureType::Plane: { - m_curr_point_on_feature_position = position_on_feature(PLANE_ID, camera); + m_curr_point_on_feature_position = position_on_feature(GripperType::PLANE, camera); break; } case Measure::SurfaceFeatureType::Circle: @@ -729,7 +779,7 @@ void GLGizmoMeasure::on_render() if (m_hover_id == POINT_ID) m_curr_point_on_feature_position = center; else { - const Vec3d world_pof = position_on_feature(CIRCLE_ID, camera, [](const Vec3f& v) { return v; }); + const Vec3d world_pof = position_on_feature(GripperType::CIRCLE, camera, [](const Vec3f &v) { return v; }); const Eigen::Hyperplane plane(normal, center); const Transform3d local_to_model_matrix = Geometry::translation_transform(center) * Eigen::Quaternion::FromTwoVectors(Vec3d::UnitZ(), normal); const Vec3d local_proj = local_to_model_matrix.inverse() * plane.projection(world_pof); @@ -747,19 +797,11 @@ void GLGizmoMeasure::on_render() } else { m_curr_point_on_feature_position.reset(); - if (m_curr_feature.has_value() && m_curr_feature->get_type() == Measure::SurfaceFeatureType::Circle) { - if (update_circle()) { - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, CIRCLE_ID); - auto it = m_raycasters.find(CIRCLE_ID); - if (it != m_raycasters.end()) - m_raycasters.erase(it); - m_raycasters.insert({ CIRCLE_ID, m_parent.add_raycaster_for_picking(SceneRaycaster::EType::Gizmo, CIRCLE_ID, *m_circle.mesh_raycaster) }); - } - } } - if (!m_curr_feature.has_value() && !m_selected_features.first.feature.has_value()) + if (!m_curr_feature.has_value() && !m_selected_features.first.feature.has_value()) { return; + } GLShaderProgram* shader = wxGetApp().get_shader("gouraud_light"); if (shader == nullptr) @@ -787,21 +829,27 @@ void GLGizmoMeasure::on_render() hover ? 0.5f : 0.25f); }; - auto render_feature = [this, set_matrix_uniforms, set_emission_uniform](const Measure::SurfaceFeature& feature, const std::vector& colors, - float inv_zoom, bool hover, bool update_raycasters_transform) { + auto render_glmodel = [set_matrix_uniforms, set_emission_uniform](PickingModel& model, const ColorRGBA& color, const Transform3d& model_matrix, bool hover) { + set_matrix_uniforms(model_matrix); + set_emission_uniform(color, hover); + model.model.set_color(color); + model.model.render(); + }; + + auto render_feature = + [this, render_glmodel](const Measure::SurfaceFeature& feature, const std::vector& colors, + float inv_zoom, bool hover, bool update_raycasters_transform,int featura_index = -1) { switch (feature.get_type()) { default: { assert(false); break; } case Measure::SurfaceFeatureType::Point: { - const Transform3d feature_matrix = Geometry::translation_transform(feature.get_point()) * Geometry::scale_transform(inv_zoom); - set_matrix_uniforms(feature_matrix); - set_emission_uniform(colors.front(), hover); - m_sphere.model.set_color(colors.front()); - m_sphere.model.render(); + const Transform3d feature_matrix = Geometry::translation_transform(feature.get_point()) * Geometry::scale_transform(inv_zoom); + Geometry::Transformation tran(feature_matrix); + render_glmodel(m_sphere, colors.front(), tran.get_matrix(), hover); if (update_raycasters_transform) { - auto it = m_raycasters.find(POINT_ID); - if (it != m_raycasters.end() && it->second != nullptr) + auto it = m_gripper_id_raycast_map.find(GripperType::POINT); + if (it != m_gripper_id_raycast_map.end() && it->second != nullptr) it->second->set_transform(feature_matrix); } break; @@ -810,33 +858,29 @@ void GLGizmoMeasure::on_render() { const auto& [center, radius, normal] = feature.get_circle(); // render circle - const Transform3d circle_matrix = Transform3d::Identity(); - set_matrix_uniforms(circle_matrix); - if (update_raycasters_transform) { - set_emission_uniform(colors.front(), hover); - m_circle.model.set_color(colors.front()); - m_circle.model.render(); - auto it = m_raycasters.find(CIRCLE_ID); - if (it != m_raycasters.end() && it->second != nullptr) - it->second->set_transform(circle_matrix); + const Transform3d circle_matrix = Transform3d::Identity(); + //set_matrix_uniforms(circle_matrix); + Geometry::Transformation tran(circle_matrix); + if (featura_index == -1) { + init_circle_glmodel(GripperType::CIRCLE, feature, m_curr_circle, inv_zoom); + render_glmodel(m_curr_circle.circle, colors.front(), tran.get_matrix(), hover); } - else { - GLModel circle; - GLModel::Geometry circle_geometry = init_torus_data(64, 16, center.cast(), float(radius), 5.0f * inv_zoom, normal.cast(), Transform3f::Identity()); - circle.init_from(std::move(circle_geometry)); - set_emission_uniform(colors.front(), hover); - circle.set_color(colors.front()); - circle.render(); + // render plane feature1 or feature2 + if (featura_index == 0) { // feature1 + init_circle_glmodel(GripperType::CIRCLE_1, feature, m_feature_circle_first, inv_zoom); + render_glmodel(m_feature_circle_first.circle, colors.front(), tran.get_matrix(), hover); + } else if (featura_index == 1) { // feature2 + init_circle_glmodel(GripperType::CIRCLE_2, feature, m_feature_circle_second, inv_zoom); + render_glmodel(m_feature_circle_second.circle, colors.front(), tran.get_matrix(), hover); } // render center if (colors.size() > 1) { const Transform3d center_matrix = Geometry::translation_transform(center) * Geometry::scale_transform(inv_zoom); - set_matrix_uniforms(center_matrix); - set_emission_uniform(colors.back(), hover); - m_sphere.model.set_color(colors.back()); - m_sphere.model.render(); - auto it = m_raycasters.find(POINT_ID); - if (it != m_raycasters.end() && it->second != nullptr) + render_glmodel(m_sphere, colors.back(), center_matrix, hover); + + Geometry::Transformation tran(center_matrix); + auto it = m_gripper_id_raycast_map.find(GripperType::POINT); + if (it != m_gripper_id_raycast_map.end() && it->second != nullptr) it->second->set_transform(center_matrix); } break; @@ -845,47 +889,46 @@ void GLGizmoMeasure::on_render() { const auto& [from, to] = feature.get_edge(); // render edge - const Transform3d edge_matrix = Geometry::translation_transform(from) * + const Transform3d edge_matrix = Geometry::translation_transform(from) * Eigen::Quaternion::FromTwoVectors(Vec3d::UnitZ(), to - from) * Geometry::scale_transform({ (double)inv_zoom, (double)inv_zoom, (to - from).norm() }); - set_matrix_uniforms(edge_matrix); - set_emission_uniform(colors.front(), hover); - m_cylinder.model.set_color(colors.front()); - m_cylinder.model.render(); + + Geometry::Transformation tran(edge_matrix); + render_glmodel(m_cylinder, colors.front(), tran.get_matrix(), hover); if (update_raycasters_transform) { - auto it = m_raycasters.find(EDGE_ID); - if (it != m_raycasters.end() && it->second != nullptr) + auto it = m_gripper_id_raycast_map.find(GripperType::EDGE); + if (it != m_gripper_id_raycast_map.end() && it->second != nullptr){ it->second->set_transform(edge_matrix); + } } - // render extra point if (colors.size() > 1) { const std::optional extra = feature.get_extra_point(); if (extra.has_value()) { const Transform3d point_matrix = Geometry::translation_transform(*extra) * Geometry::scale_transform(inv_zoom); - set_matrix_uniforms(point_matrix); - set_emission_uniform(colors.back(), hover); - m_sphere.model.set_color(colors.back()); - m_sphere.model.render(); - auto it = m_raycasters.find(POINT_ID); - if (it != m_raycasters.end() && it->second != nullptr) + Geometry::Transformation tran(point_matrix); + render_glmodel(m_sphere, colors.back(), tran.get_matrix(), hover); + + auto it = m_gripper_id_raycast_map.find(GripperType::POINT); + if (it != m_gripper_id_raycast_map.end() && it->second != nullptr) { it->second->set_transform(point_matrix); + } } } break; } - case Measure::SurfaceFeatureType::Plane: - { - const auto& [idx, normal, pt] = feature.get_plane(); - assert(idx < m_plane_models_cache.size()); - set_matrix_uniforms(Transform3d::Identity()); - set_emission_uniform(colors.front(), hover); - m_plane_models_cache[idx].set_color(colors.front()); - m_plane_models_cache[idx].render(); - if (update_raycasters_transform) { - auto it = m_raycasters.find(PLANE_ID); - if (it != m_raycasters.end() && it->second != nullptr) - it->second->set_transform(Transform3d::Identity()); + case Measure::SurfaceFeatureType::Plane: { + if (featura_index == -1) { + render_glmodel(m_curr_plane.plane, colors.back(), feature.world_tran, hover); + break; + } + //render plane feature1 or feature2 + if (featura_index == 0) {//feature1 + init_plane_glmodel(GripperType::PLANE_1, feature, m_feature_plane_first); + render_glmodel(m_feature_plane_first.plane, colors.back(), feature.world_tran, hover); + } else if (featura_index == 1) {//feature2 + init_plane_glmodel(GripperType::PLANE_2, feature, m_feature_plane_second); + render_glmodel(m_feature_plane_second.plane, colors.back(), feature.world_tran, hover); } break; } @@ -904,7 +947,6 @@ void GLGizmoMeasure::on_render() if (m_curr_feature.has_value()) { // render hovered feature - std::vector colors; if (m_selected_features.first.feature.has_value() && *m_curr_feature == *m_selected_features.first.feature) { // hovering over the 1st selected feature @@ -983,13 +1025,13 @@ void GLGizmoMeasure::on_render() requires_raycaster_update = m_selected_features.first.feature->get_type() == Measure::SurfaceFeatureType::Point; } - render_feature(*feature_to_render, colors, inv_zoom, m_hover_id == SEL_SPHERE_1_ID, false); + render_feature(*feature_to_render, colors, inv_zoom, m_hover_id == SEL_SPHERE_1_ID, false, 0); if (requires_raycaster_update) { - auto it = std::find_if(m_selected_sphere_raycasters.begin(), m_selected_sphere_raycasters.end(), - [](std::shared_ptr item) { return SceneRaycaster::decode_id(SceneRaycaster::EType::Gizmo, item->get_id()) == SEL_SPHERE_1_ID; }); - if (it != m_selected_sphere_raycasters.end()) - (*it)->set_transform(Geometry::translation_transform(get_feature_offset(*m_selected_features.first.feature)) * Geometry::scale_transform(inv_zoom)); + if (m_gripper_id_raycast_map.find(GripperType::SPHERE_1) != m_gripper_id_raycast_map.end()) { + m_gripper_id_raycast_map[GripperType::SPHERE_1]->set_transform(Geometry::translation_transform(get_feature_offset(*m_selected_features.first.feature)) * + Geometry::scale_transform(inv_zoom)); + } } } @@ -1017,13 +1059,13 @@ void GLGizmoMeasure::on_render() requires_raycaster_update = m_selected_features.second.feature->get_type() == Measure::SurfaceFeatureType::Point; } - render_feature(*feature_to_render, colors, inv_zoom, m_hover_id == SEL_SPHERE_2_ID, false); + render_feature(*feature_to_render, colors, inv_zoom, m_hover_id == SEL_SPHERE_2_ID, false, 1); if (requires_raycaster_update) { - auto it = std::find_if(m_selected_sphere_raycasters.begin(), m_selected_sphere_raycasters.end(), - [](std::shared_ptr item) { return SceneRaycaster::decode_id(SceneRaycaster::EType::Gizmo, item->get_id()) == SEL_SPHERE_2_ID; }); - if (it != m_selected_sphere_raycasters.end()) - (*it)->set_transform(Geometry::translation_transform(get_feature_offset(*m_selected_features.second.feature)) * Geometry::scale_transform(inv_zoom)); + if (m_gripper_id_raycast_map.find(GripperType::SPHERE_2) != m_gripper_id_raycast_map.end()) { + m_gripper_id_raycast_map[GripperType::SPHERE_2]->set_transform(Geometry::translation_transform(get_feature_offset(*m_selected_features.first.feature)) * + Geometry::scale_transform(inv_zoom)); + } } } @@ -1031,11 +1073,10 @@ void GLGizmoMeasure::on_render() if (m_hover_id != POINT_ID) { // render point on feature while SHIFT is pressed const Transform3d matrix = Geometry::translation_transform(*m_curr_point_on_feature_position) * Geometry::scale_transform(inv_zoom); - set_matrix_uniforms(matrix); const ColorRGBA color = hover_selection_color(); - set_emission_uniform(color, true); - m_sphere.model.set_color(color); - m_sphere.model.render(); + + Geometry::Transformation tran(matrix); + render_glmodel(m_sphere, color, tran.get_matrix(), true); } } @@ -1049,88 +1090,54 @@ void GLGizmoMeasure::on_render() void GLGizmoMeasure::update_if_needed() { - auto update_plane_models_cache = [this](const indexed_triangle_set& its) { - m_plane_models_cache.clear(); - m_plane_models_cache.resize(m_measuring->get_num_of_planes(), GLModel()); - - auto& plane_models_cache = m_plane_models_cache; - const auto& measuring = m_measuring; - - //for (int idx = 0; idx < m_measuring->get_num_of_planes(); ++idx) { - tbb::parallel_for(tbb::blocked_range(0, m_measuring->get_num_of_planes()), - [&plane_models_cache, &measuring, &its](const tbb::blocked_range& range) { - for (size_t idx = range.begin(); idx != range.end(); ++idx) { - GLModel::Geometry init_data = init_plane_data(its, measuring->get_plane_triangle_indices(idx)); - plane_models_cache[idx].init_from(std::move(init_data)); - } - }); - }; - - auto do_update = [this, update_plane_models_cache](const std::vector& volumes_cache, const Selection& selection) { - TriangleMesh composite_mesh; - for (const auto& vol : volumes_cache) { -// if (selection.is_single_full_instance() && vol.volume->is_modifier()) -// continue; - - TriangleMesh volume_mesh = vol.volume->mesh(); - volume_mesh.transform(vol.world_trafo); - - if (vol.world_trafo.matrix().determinant() < 0.0) - volume_mesh.flip_triangles(); - - composite_mesh.merge(volume_mesh); - } - - m_measuring.reset(new Measure::Measuring(composite_mesh.its)); - update_plane_models_cache(m_measuring->get_its()); - m_raycaster.reset(new MeshRaycaster(std::make_shared(composite_mesh))); - m_volumes_cache = volumes_cache; - }; - - const Selection& selection = m_parent.get_selection(); - if (selection.is_empty()) - return; - - const Selection::IndicesList& idxs = selection.get_volume_idxs(); - std::vector volumes_cache; - volumes_cache.reserve(idxs.size()); - for (unsigned int idx : idxs) { - const GLVolume* v = selection.get_volume(idx); - const int volume_idx = v->volume_idx(); - if (volume_idx < 0) - continue; - - const ModelObject* obj = selection.get_model()->objects[v->object_idx()]; - const ModelInstance* inst = obj->instances[v->instance_idx()]; - const ModelVolume* vol = obj->volumes[volume_idx]; - const VolumeCacheItem item = { - obj, inst, vol, - Geometry::translation_transform(selection.get_first_volume()->get_sla_shift_z() * Vec3d::UnitZ()) * inst->get_matrix() * vol->get_matrix() - }; - volumes_cache.emplace_back(item); - } - - if (m_state != On || volumes_cache.empty()) - return; - - if (m_measuring == nullptr || m_volumes_cache != volumes_cache) - do_update(volumes_cache, selection); + //const Selection& selection = m_parent.get_selection(); + //if (selection.is_empty()) + // return; + + //const Selection::IndicesList& idxs = selection.get_volume_idxs(); + //std::vector volumes_cache; + //volumes_cache.reserve(idxs.size()); + //for (unsigned int idx : idxs) { + // const GLVolume* v = selection.get_volume(idx); + // const int volume_idx = v->volume_idx(); + // if (volume_idx < 0) + // continue; + + // const ModelObject* obj = selection.get_model()->objects[v->object_idx()]; + // const ModelInstance* inst = obj->instances[v->instance_idx()]; + // const ModelVolume* vol = obj->volumes[volume_idx]; + // const VolumeCacheItem item = { + // obj, inst, vol, + // Geometry::translation_transform(selection.get_first_volume()->get_sla_shift_z() * Vec3d::UnitZ()) * inst->get_matrix() * vol->get_matrix() + // }; + // volumes_cache.emplace_back(item); + //} + + //if (m_state != On || volumes_cache.empty()) + // return; + + //if (m_volumes_cache != volumes_cache) { + // m_volumes_cache = volumes_cache; + //} } void GLGizmoMeasure::disable_scene_raycasters() { - for (auto r : m_scene_raycasters) { - r.raycaster->set_active(false); + for(auto iter:m_gripper_id_raycast_map) + { + iter.second->set_active(false); } } void GLGizmoMeasure::restore_scene_raycasters_state() { - for (auto r : m_scene_raycasters) { - r.raycaster->set_active(r.state); + for(auto iter:m_gripper_id_raycast_map) + { + iter.second->set_active(true); } } + void GLGizmoMeasure::render_dimensioning() { static SelectedFeatures last_selected_features; @@ -1145,8 +1152,8 @@ void GLGizmoMeasure::render_dimensioning() if (shader == nullptr) return; - auto point_point = [this, &shader](const Vec3d& v1, const Vec3d& v2, float distance) { - if ((v2 - v1).squaredNorm() < 0.000001 || distance < 0.001f) + auto point_point = [this, &shader](const Vec3d &v1, const Vec3d &v2, float distance, const ColorRGBA &color, bool show_label = true, bool show_first_tri = true) { + if ((v2 - v1).squaredNorm() < 0.000001 || abs(distance) < 0.001f) return; const Camera& camera = wxGetApp().plater()->get_camera(); @@ -1193,12 +1200,11 @@ void GLGizmoMeasure::render_dimensioning() else #endif // ENABLE_GL_CORE_PROFILE glsafe(::glLineWidth(2.0f)); - // stem shader->set_uniform("view_model_matrix", overlap ? ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q12ss * Geometry::translation_transform(-2.0 * TRIANGLE_HEIGHT * Vec3d::UnitX()) * Geometry::scale_transform({ v12ss_len + 4.0 * TRIANGLE_HEIGHT, 1.0f, 1.0f }) : ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q12ss * Geometry::scale_transform({ v12ss_len, 1.0f, 1.0f })); - m_dimensioning.line.set_color(ColorRGBA::WHITE()); + m_dimensioning.line.set_color(color); m_dimensioning.line.render(); #if ENABLE_GL_CORE_PROFILE @@ -1216,11 +1222,12 @@ void GLGizmoMeasure::render_dimensioning() glsafe(::glLineWidth(1.0f)); // arrow 1 - shader->set_uniform("view_model_matrix", overlap ? - ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q12ss : - ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q21ss); - m_dimensioning.triangle.render(); - + if (show_first_tri) { + shader->set_uniform("view_model_matrix", overlap ? + ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q12ss : + ss_to_ndc_matrix * Geometry::translation_transform(v1ss_3) * q21ss); + m_dimensioning.triangle.render(); + } // arrow 2 shader->set_uniform("view_model_matrix", overlap ? ss_to_ndc_matrix * Geometry::translation_transform(v2ss_3) * q21ss : @@ -1239,7 +1246,7 @@ void GLGizmoMeasure::render_dimensioning() m_imgui->set_next_window_pos(label_position.x(), viewport[3] - label_position.y(), ImGuiCond_Always, 0.0f, 1.0f); m_imgui->set_next_window_bg_alpha(0.0f); - if (!m_editing_distance) { + if (!m_editing_distance && show_label) { ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 1.0f, 1.0f }); @@ -1251,15 +1258,18 @@ void GLGizmoMeasure::render_dimensioning() const std::string txt = curr_value_str + " " + units; ImVec2 txt_size = ImGui::CalcTextSize(txt.c_str()); const ImGuiStyle& style = ImGui::GetStyle(); - draw_list->AddRectFilled({ pos.x - style.FramePadding.x, pos.y + style.FramePadding.y }, { pos.x + txt_size.x + 2.0f * style.FramePadding.x , pos.y + txt_size.y + 2.0f * style.FramePadding.y }, - ImGuiWrapper::to_ImU32(ColorRGBA(1.0f, 1.0f, 1.0f, 0.5f))); + draw_list->AddRectFilled({pos.x - style.FramePadding.x, pos.y + style.FramePadding.y}, + {pos.x + txt_size.x + 2.0f * style.FramePadding.x, pos.y + txt_size.y + 2.0f * style.FramePadding.y}, + ImGuiWrapper::to_ImU32({1.0f, 1.0f, 1.0f, 0.5f})); ImGui::SetCursorScreenPos({ pos.x + style.FramePadding.x, pos.y }); m_imgui->text(txt); - ImGui::SameLine(); - if (m_imgui->image_button(ImGui::SliderFloatEditBtnIcon, _L("Edit to scale"))) { - m_editing_distance = true; - edit_value = curr_value; - m_imgui->requires_extra_frame(); + if (m_hit_different_volumes.size() < 2 && wxGetApp().plater()->canvas3D()->get_canvas_type() == GLCanvas3D::ECanvasType::CanvasView3D) { + ImGui::SameLine(); + if (m_imgui->image_button(ImGui::SliderFloatEditBtnIcon, _L("Edit to scale"))) { + m_editing_distance = true; + edit_value = curr_value; + m_imgui->requires_extra_frame(); + } } m_imgui->end(); ImGui::PopStyleVar(3); @@ -1272,63 +1282,13 @@ void GLGizmoMeasure::render_dimensioning() ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f); ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, { 1.0f, 1.0f }); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, { 4.0f, 0.0f }); - if (ImGui::BeginPopupModal("distance_popup", nullptr, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDecoration)) { - auto perform_scale = [this](double new_value, double old_value) { + if (show_label && ImGui::BeginPopupModal("distance_popup", nullptr, ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoDecoration)) { + auto perform_scale = [this](double new_value, double old_value,bool scale_single_volume) { if (new_value == old_value || new_value <= 0.0) return; const double ratio = new_value / old_value; - wxGetApp().plater()->take_snapshot(_u8L("Scale")); - - struct TrafoData - { - double ratio; - Vec3d old_pivot; - Vec3d new_pivot; - Transform3d scale_matrix; - - TrafoData(double ratio, const Vec3d& old_pivot, const Vec3d& new_pivot) { - this->ratio = ratio; - this->scale_matrix = Geometry::scale_transform(ratio); - this->old_pivot = old_pivot; - this->new_pivot = new_pivot; - } - - Vec3d transform(const Vec3d& point) const { return this->scale_matrix * (point - this->old_pivot) + this->new_pivot; } - }; - - auto scale_feature = [](Measure::SurfaceFeature& feature, const TrafoData& trafo_data) { - switch (feature.get_type()) - { - case Measure::SurfaceFeatureType::Point: - { - feature = Measure::SurfaceFeature(trafo_data.transform(feature.get_point())); - break; - } - case Measure::SurfaceFeatureType::Edge: - { - const auto [from, to] = feature.get_edge(); - const std::optional extra = feature.get_extra_point(); - const std::optional new_extra = extra.has_value() ? trafo_data.transform(*extra) : extra; - feature = Measure::SurfaceFeature(Measure::SurfaceFeatureType::Edge, trafo_data.transform(from), trafo_data.transform(to), new_extra); - break; - } - case Measure::SurfaceFeatureType::Circle: - { - const auto [center, radius, normal] = feature.get_circle(); - feature = Measure::SurfaceFeature(Measure::SurfaceFeatureType::Circle, trafo_data.transform(center), normal, std::nullopt, trafo_data.ratio * radius); - break; - } - case Measure::SurfaceFeatureType::Plane: - { - const auto [idx, normal, origin] = feature.get_plane(); - feature = Measure::SurfaceFeature(Measure::SurfaceFeatureType::Plane, normal, trafo_data.transform(origin), std::nullopt, idx); - break; - } - default: { break; } - } - }; - + wxGetApp().plater()->take_snapshot(_u8L("Scale"), UndoRedo::SnapshotType::GizmoAction); // apply scale TransformationType type; type.set_world(); @@ -1337,29 +1297,30 @@ void GLGizmoMeasure::render_dimensioning() // scale selection Selection& selection = m_parent.get_selection(); - const Vec3d old_center = selection.get_bounding_box().center(); selection.setup_cache(); - selection.scale(ratio * Vec3d::Ones(), type); - wxGetApp().plater()->canvas3D()->do_scale(""); // avoid storing another snapshot + if (scale_single_volume && m_hit_different_volumes.size()==1) { + //todo//update_single_mesh_pick(m_hit_different_volumes[0]) + } else { + selection.scale(ratio * Vec3d::Ones(), type); + wxGetApp().plater()->canvas3D()->do_scale(""); // avoid storing another snapshot + register_single_mesh_pick(); + } wxGetApp().obj_manipul()->set_dirty(); - // scale dimensioning - const Vec3d new_center = selection.get_bounding_box().center(); - const TrafoData trafo_data(ratio, old_center, new_center); - scale_feature(*m_selected_features.first.feature, trafo_data); + update_feature_by_tran(*m_selected_features.first.feature); if (m_selected_features.second.feature.has_value()) - scale_feature(*m_selected_features.second.feature, trafo_data); - + update_feature_by_tran(*m_selected_features.second.feature); // update measure on next call to data_changed() - m_pending_scale = true; + m_pending_scale = 1; + }; auto action_exit = [this]() { m_editing_distance = false; m_is_editing_distance_first_frame = true; ImGui::CloseCurrentPopup(); }; - auto action_scale = [perform_scale, action_exit](double new_value, double old_value) { - perform_scale(new_value, old_value); + auto action_scale = [perform_scale, action_exit](double new_value, double old_value, bool scale_single_volume) { + perform_scale(new_value, old_value, scale_single_volume); action_exit(); }; @@ -1377,14 +1338,17 @@ void GLGizmoMeasure::render_dimensioning() // handle keys input if (ImGui::IsKeyPressedMap(ImGuiKey_Enter) || ImGui::IsKeyPressedMap(ImGuiKey_KeyPadEnter)) - action_scale(edit_value, curr_value); + action_scale(edit_value, curr_value, false); else if (ImGui::IsKeyPressedMap(ImGuiKey_Escape)) action_exit(); ImGui::SameLine(); ImGuiWrapper::push_confirm_button_style(); - if (m_imgui->button(_CTX(L_CONTEXT("Scale", "Verb"), "Verb"))) - action_scale(edit_value, curr_value); + //if (m_imgui->button(_CTX(L_CONTEXT("Scale part", "Verb"), "Verb"))) + //action_scale(edit_value, curr_value, true); + //ImGui::SameLine(); + if (m_imgui->button(_CTX(L_CONTEXT("Scale all", "Verb"), "Verb"))) + action_scale(edit_value, curr_value, false); ImGuiWrapper::pop_confirm_button_style(); ImGui::SameLine(); ImGuiWrapper::push_cancel_button_style(); @@ -1459,15 +1423,15 @@ void GLGizmoMeasure::render_dimensioning() if (!m_dimensioning.arc.is_initialized()) { GLModel::Geometry init_data; init_data.format = { GLModel::Geometry::EPrimitiveType::LineStrip, GLModel::Geometry::EVertexLayout::P3 }; - init_data.color = ColorRGBA::WHITE(); + init_data.color = ColorRGBA::WHITE(); init_data.reserve_vertices(resolution + 1); init_data.reserve_indices(resolution + 1); // vertices + indices for (unsigned int i = 0; i <= resolution; ++i) { const double a = step * double(i); - const Vec3d v = draw_radius * (Eigen::Quaternion(Eigen::AngleAxisd(a, normal)) * e1_unit); - init_data.add_vertex((Vec3f)v.cast()); + const Vec3d v = draw_radius * (Eigen::Quaternion(Eigen::AngleAxisd(a, normal)) * e1_unit); + init_data.add_vertex((Vec3f) v.cast()); init_data.add_index(i); } @@ -1535,6 +1499,7 @@ void GLGizmoMeasure::render_dimensioning() const Vec3d e11e12 = e1.second - e1.first; const Vec3d e11center = center - e1.first; const double e11center_len = e11center.norm(); + if (e11center_len > EPSILON && e11center.dot(e11e12) < 0.0) { shader->set_uniform("view_model_matrix", camera.get_view_matrix() * Geometry::translation_transform(center) * Eigen::Quaternion::FromTwoVectors(Vec3d::UnitX(), Measure::edge_direction(e1.first, e1.second)) * @@ -1575,8 +1540,9 @@ void GLGizmoMeasure::render_dimensioning() const std::string txt = format_double(Geometry::rad2deg(angle)) + "°"; ImVec2 txt_size = ImGui::CalcTextSize(txt.c_str()); const ImGuiStyle& style = ImGui::GetStyle(); - draw_list->AddRectFilled({ pos.x - style.FramePadding.x, pos.y + style.FramePadding.y }, { pos.x + txt_size.x + 2.0f * style.FramePadding.x , pos.y + txt_size.y + 2.0f * style.FramePadding.y }, - ImGuiWrapper::to_ImU32(ColorRGBA(1.0f, 1.0f, 1.0f, 0.5f))); + ColorRGBA color{1.0f, 1.0f, 1.0f, 0.5f}; + draw_list->AddRectFilled({ pos.x - style.FramePadding.x, pos.y + style.FramePadding.y }, { pos.x + txt_size.x + 2.0f * style.FramePadding.x, + pos.y + txt_size.y + 2.0f * style.FramePadding.y}, ImGuiWrapper::to_ImU32(color)); ImGui::SetCursorScreenPos({ pos.x + style.FramePadding.x, pos.y }); m_imgui->text(txt); m_imgui->end(); @@ -1621,7 +1587,7 @@ void GLGizmoMeasure::render_dimensioning() if (!m_dimensioning.line.is_initialized()) { GLModel::Geometry init_data; init_data.format = { GLModel::Geometry::EPrimitiveType::Lines, GLModel::Geometry::EVertexLayout::P3 }; - init_data.color = ColorRGBA::WHITE(); + init_data.color = ColorRGBA::WHITE(); init_data.reserve_vertices(2); init_data.reserve_indices(2); @@ -1638,7 +1604,7 @@ void GLGizmoMeasure::render_dimensioning() if (!m_dimensioning.triangle.is_initialized()) { GLModel::Geometry init_data; init_data.format = { GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3 }; - init_data.color = ColorRGBA::WHITE(); + init_data.color = ColorRGBA::WHITE(); init_data.reserve_vertices(3); init_data.reserve_indices(3); @@ -1700,7 +1666,18 @@ void GLGizmoMeasure::render_dimensioning() const Measure::DistAndPoints& dap = m_measurement_result.distance_infinite.has_value() ? *m_measurement_result.distance_infinite : *m_measurement_result.distance_strict; - point_point(dap.from, dap.to, dap.dist); + if (m_selected_features.second.feature.has_value() && + !(m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_assembly_mode == AssemblyMode::FACE_FACE)) { + auto x_to = dap.from; + x_to[0] = dap.to[0]; + point_point(dap.from, x_to, x_to[0] - dap.from[0], ColorRGBA::RED(), false, false); + auto y_to = x_to; + y_to[1] = dap.to[1]; + point_point(x_to, y_to, y_to[1] - x_to[1], ColorRGBA::GREEN(), false, false); + point_point(y_to, dap.to, dap.to[2] - y_to[2], ColorRGBA::BLUE(), false, false); + } + + point_point(dap.from, dap.to, dap.dist, ColorRGBA::WHITE()); } glsafe(::glEnable(GL_DEPTH_TEST)); @@ -1812,98 +1789,136 @@ void GLGizmoMeasure::render_debug_dialog() } #endif // ENABLE_MEASURE_GIZMO_DEBUG -void GLGizmoMeasure::on_render_input_window(float x, float y, float bottom_limit) +void GLGizmoMeasure::show_selection_ui() { - static std::optional last_feature; - static EMode last_mode = EMode::FeatureSelection; - static SelectedFeatures last_selected_features; - - static float last_y = 0.0f; - static float last_h = 0.0f; - - if (m_editing_distance) - return; - - // adjust window position to avoid overlap the view toolbar - const float win_h = ImGui::GetWindowHeight(); - y = std::min(y, bottom_limit - win_h); - GizmoImguiSetNextWIndowPos(x, y, ImGuiCond_Always, 0.0f, 0.0f); - if (last_h != win_h || last_y != y) { - // ask canvas for another frame to render the window in the correct position - m_imgui->set_requires_extra_frame(); - if (last_h != win_h) - last_h = win_h; - if (last_y != y) - last_y = y; - } - - // Orca - ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); - - GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); - - float caption_max = 0.f; - float total_text_max = 0.f; - for (const auto &t : std::array{"feature_selection", "point_selection", "reset", "unselect"}) { - caption_max = std::max(caption_max, m_imgui->calc_text_size(m_desc[t + "_caption"]).x); - total_text_max = std::max(total_text_max, m_imgui->calc_text_size(m_desc[t]).x); - } - - const bool use_inches = wxGetApp().app_config->get_bool("use_inches"); - const std::string units = use_inches ? " " + _u8L("in") : " " + _u8L("mm"); - + auto space_size = m_space_size; // Show selection { - auto format_item_text = [this, use_inches, &units](const SelectedFeatures::Item& item) { - if (!item.feature.has_value()) - return _u8L("None"); + auto format_item_text = [this](const SelectedFeatures::Item &item) { + if (!item.feature.has_value()) return _u8L("None"); std::string text = (item.source == item.feature) ? surface_feature_type_as_string(item.feature->get_type()) : - item.is_center ? center_on_feature_type_as_string(item.source->get_type()) : point_on_feature_type_as_string(item.source->get_type(), m_hover_id); + item.is_center ? center_on_feature_type_as_string(item.source->get_type()) : + point_on_feature_type_as_string(item.source->get_type(), m_hover_id); if (item.feature.has_value() && item.feature->get_type() == Measure::SurfaceFeatureType::Circle) { auto [center, radius, normal] = item.feature->get_circle(); - const Vec3d on_circle = center + radius * Measure::get_orthogonal(normal, true); - radius = (on_circle - center).norm(); - if (use_inches) + const Vec3d on_circle = center + radius * Measure::get_orthogonal(normal, true); + radius = (on_circle - center).norm(); + if (m_use_inches) radius = GizmoObjectManipulation::mm_to_in * radius; - text += " (" + _u8L("Diameter") + ": " + format_double(2.0 * radius) + units + ")"; - } - else if (item.feature.has_value() && item.feature->get_type() == Measure::SurfaceFeatureType::Edge) { + text += " (" + _u8L("Diameter") + ": " + format_double(2.0 * radius) + m_units + ")"; + } else if (item.feature.has_value() && item.feature->get_type() == Measure::SurfaceFeatureType::Edge) { auto [start, end] = item.feature->get_edge(); - double length = (end - start).norm(); - if (use_inches) + double length = (end - start).norm(); + if (m_use_inches) length = GizmoObjectManipulation::mm_to_in * length; - text += " (" + _u8L("Length") + ": " + format_double(length) + units + ")"; + text += " (" + _u8L("Length") + ": " + format_double(length) + m_units + ")"; } return text; }; - const float selection_cap_length = ImGui::CalcTextSize((_u8L("Selection") + " 1").c_str()).x * 2; - + float selection_cap_length; + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + selection_cap_length = ImGui::CalcTextSize((_u8L("Selection") + " 1" + _u8L(" (Moving)")).c_str()).x * 1.2; + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + selection_cap_length = ImGui::CalcTextSize((_u8L("Selection") + " 1" + _u8L(" (Moving)")).c_str()).x * 1.2; + } + } + else { + selection_cap_length = ImGui::CalcTextSize((_u8L("Selection") + " 1").c_str()).x * 1.2; + } + auto feature_first_text = format_item_text(m_selected_features.first); + const float feature_first_text_length = ImGui::CalcTextSize((_u8L(feature_first_text)).c_str()).x; ImGui::AlignTextToFramePadding(); + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + m_only_select_plane = m_assembly_mode == AssemblyMode::FACE_FACE ? true : false; + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + m_imgui->text(_u8L("Select 2 faces on objects and \n make objects assemble together.")); // tip + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + m_imgui->text(_u8L("Select 2 points or circles on objects and \n specify distance between them.")); // tip + } + } ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(SELECTED_1ST_COLOR)); - m_imgui->text(_u8L("Selection") + " 1"); - ImGui::SameLine(selection_cap_length); - m_imgui->text(format_item_text(m_selected_features.first)); + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + m_imgui->text(_u8L("Face") + " 1" + _u8L(" (Fixed)")); + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + m_imgui->text(_u8L("Point") + " 1" + _u8L(" (Fixed)")); + } + } + else { + m_imgui->text(_u8L("Selection") + " 1"); + } + ImGui::SameLine(selection_cap_length + space_size); + ImGui::PushItemWidth(feature_first_text_length); + m_imgui->text(feature_first_text); + if (m_selected_features.first.feature.has_value()) { + ImGui::SameLine(selection_cap_length + feature_first_text_length + space_size * 2); + ImGui::PushItemWidth(space_size * 2); + ImGui::PushID("Reset1"); // for image_button + if (m_imgui->image_button(m_is_dark_mode ? ImGui::RevertBtn : ImGui::RevertBtn, _L("Reset"))) { reset_feature1(); } + ImGui::PopID(); + } ImGui::PopStyleColor(); + auto feature_second_text = format_item_text(m_selected_features.second); + const float feature_second_text_length = ImGui::CalcTextSize((_u8L(feature_second_text)).c_str()).x; ImGui::AlignTextToFramePadding(); ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(SELECTED_2ND_COLOR)); - m_imgui->text(_u8L("Selection") + " 2"); - ImGui::SameLine(selection_cap_length); - m_imgui->text(format_item_text(m_selected_features.second)); + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + m_imgui->text(_u8L("Face") + " 2"+ _u8L(" (Moving)")); + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + m_imgui->text(_u8L("Point") + " 2"+ _u8L(" (Moving)")); + } + } else { + m_imgui->text(_u8L("Selection") + " 2"); + } + ImGui::SameLine(selection_cap_length + space_size); + ImGui::PushItemWidth(feature_second_text_length); + m_imgui->text(feature_second_text); + if (m_selected_features.first.feature.has_value() && m_selected_features.second.feature.has_value()) { + m_show_reset_first_tip = false; + ImGui::SameLine(selection_cap_length + feature_second_text_length + space_size * 2); + ImGui::PushItemWidth(space_size * 2); + ImGui::PushID("Reset2"); + if (m_imgui->image_button(m_is_dark_mode ? ImGui::RevertBtn : ImGui::RevertBtn, _L("Reset"))) { reset_feature2(); } + ImGui::PopID(); + } ImGui::PopStyleColor(); } - m_imgui->disabled_begin(!m_selected_features.first.feature.has_value()); - if (m_imgui->button(_L("Restart selection"))) { - m_selected_features.reset(); - m_selected_sphere_raycasters.clear(); - m_imgui->set_requires_extra_frame(); + /*m_imgui->disabled_begin(!m_selected_features.first.feature.has_value()); + if (m_imgui->button(_L("Restart selection"))) { + reset_all_feature(); + m_imgui->set_requires_extra_frame(); + } + m_imgui->disabled_end();*/ + + if (m_show_reset_first_tip) { + m_imgui->text(_L("Feature 1 has been reset, \nfeature 2 has been feature 1")); + } + if (m_selected_wrong_feature_waring_tip) { + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE) { + m_imgui->warning_text(_L("Warning:please select Plane's feature.")); + } else if (m_assembly_mode == AssemblyMode::POINT_POINT) { + m_imgui->warning_text(_L("Warning:please select Point's or Circle's feature.")); + } } - m_imgui->disabled_end(); + } + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_hit_different_volumes.size() == 1) { + m_imgui->warning_text(_L("Warning:please select two different mesh.")); + } +} - auto add_measure_row_to_table = [this](const std::string& col_1, const ImVec4& col_1_color, const std::string& col_2, const ImVec4& col_2_color) { +void GLGizmoMeasure::show_distance_xyz_ui() +{ + if (m_measure_mode == EMeasureMode::ONLY_MEASURE) { + m_imgui->text(_u8L("Measure")); + } + auto add_measure_row_to_table = [this](const std::string &col_1, const ImVec4 &col_1_color, const std::string &col_2, const ImVec4 &col_2_color) { ImGui::TableNextRow(); ImGui::TableSetColumnIndex(0); m_imgui->text_colored(col_1_color, col_1); @@ -1916,76 +1931,241 @@ void GLGizmoMeasure::on_render_input_window(float x, float y, float bottom_limit wxTheClipboard->Close(); } }; - - ImGui::Separator(); - m_imgui->text(_u8L("Measure")); - + auto add_edit_distance_xyz_box = [this](Vec3d &distance) { + m_imgui->disabled_begin(m_hit_different_volumes.size() == 1); + { + if (m_measure_mode == EMeasureMode::ONLY_MEASURE) { + m_can_set_xyz_distance = false; + } + m_imgui->disabled_begin(!m_can_set_xyz_distance); + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + m_imgui->text_colored(ImGuiWrapper::COL_RED, "X:"); + ImGui::TableSetColumnIndex(1); + ImGui::PushItemWidth(m_input_size_max); + ImGui::BBLInputDouble("##measure_distance_x", &m_buffered_distance[0], 0.0f, 0.0f, "%.2f"); + + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + m_imgui->text_colored(ImGuiWrapper::COL_GREEN, "Y:"); + ImGui::TableSetColumnIndex(1); + ImGui::BBLInputDouble("##measure_distance_y", &m_buffered_distance[1], 0.0f, 0.0f, "%.2f"); + m_imgui->disabled_end(); + + m_imgui->disabled_begin(!(m_same_model_object && m_can_set_xyz_distance)); + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + m_imgui->text_colored(ImGuiWrapper::COL_BLUE, "Z:"); + ImGui::TableSetColumnIndex(1); + ImGui::BBLInputDouble("##measure_distance_z", &m_buffered_distance[2], 0.0f, 0.0f, "%.2f"); + m_imgui->disabled_end(); + } + m_imgui->disabled_end(); + if (m_last_active_item_imgui != m_current_active_imgui_id && m_hit_different_volumes.size() == 2) { + Vec3d displacement = Vec3d::Zero(); + if (std::abs(m_buffered_distance[0] - distance[0]) > EPSILON) { + displacement[0] = m_buffered_distance[0] - distance[0]; + distance[0] = m_buffered_distance[0]; + } else if (std::abs(m_buffered_distance[1] - distance[1]) > EPSILON) { + displacement[1] = m_buffered_distance[1] - distance[1]; + distance[1] = m_buffered_distance[1]; + } else if (std::abs(m_buffered_distance[2] - distance[2]) > EPSILON) { + displacement[2] = m_buffered_distance[2] - distance[2]; + distance[2] = m_buffered_distance[2]; + } + if (displacement.norm() > 0.0f) { set_distance(m_same_model_object, displacement); } + } + }; const unsigned int max_measure_row_count = 2; - unsigned int measure_row_count = 0; + unsigned int measure_row_count = 0; if (ImGui::BeginTable("Measure", 4)) { if (m_selected_features.second.feature.has_value()) { - const Measure::MeasurementResult& measure = m_measurement_result; - if (measure.angle.has_value()) { + const Measure::MeasurementResult &measure = m_measurement_result; + if (measure.angle.has_value() && m_measure_mode == EMeasureMode::ONLY_MEASURE) + { ImGui::PushID("ClipboardAngle"); add_measure_row_to_table(_u8L("Angle"), ImGuiWrapper::COL_ORCA, format_double(Geometry::rad2deg(measure.angle->angle)) + "°", - ImGui::GetStyleColorVec4(ImGuiCol_Text)); + ImGui::GetStyleColorVec4(ImGuiCol_Text)); ++measure_row_count; ImGui::PopID(); } const bool show_strict = measure.distance_strict.has_value() && - (!measure.distance_infinite.has_value() || std::abs(measure.distance_strict->dist - measure.distance_infinite->dist) > EPSILON); + (!measure.distance_infinite.has_value() || std::abs(measure.distance_strict->dist - measure.distance_infinite->dist) > EPSILON); - if (measure.distance_infinite.has_value()) { + if (measure.distance_infinite.has_value() && m_measure_mode == EMeasureMode::ONLY_MEASURE) { double distance = measure.distance_infinite->dist; - if (use_inches) - distance = GizmoObjectManipulation::mm_to_in * distance; + if (m_use_inches) distance = GizmoObjectManipulation::mm_to_in * distance; ImGui::PushID("ClipboardDistanceInfinite"); - add_measure_row_to_table(show_strict ? _u8L("Perpendicular distance") : _u8L("Distance"), ImGuiWrapper::COL_ORCA, format_double(distance) + units, - ImGui::GetStyleColorVec4(ImGuiCol_Text)); + add_measure_row_to_table(show_strict ? _u8L("Perpendicular distance") : _u8L("Distance"), ImGuiWrapper::COL_ORCA, format_double(distance) + m_units, + ImGui::GetStyleColorVec4(ImGuiCol_Text)); ++measure_row_count; ImGui::PopID(); } - if (show_strict) { + if (show_strict && + (m_measure_mode == EMeasureMode::ONLY_MEASURE || + (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_assembly_mode == AssemblyMode::POINT_POINT))) + { double distance = measure.distance_strict->dist; - if (use_inches) + if (m_use_inches) distance = GizmoObjectManipulation::mm_to_in * distance; ImGui::PushID("ClipboardDistanceStrict"); - add_measure_row_to_table(_u8L("Direct distance"), ImGuiWrapper::COL_ORCA, format_double(distance) + units, - ImGui::GetStyleColorVec4(ImGuiCol_Text)); + add_measure_row_to_table(_u8L("Direct distance"), ImGuiWrapper::COL_ORCA, format_double(distance) + m_units, ImGui::GetStyleColorVec4(ImGuiCol_Text)); ++measure_row_count; ImGui::PopID(); } - if (measure.distance_xyz.has_value() && measure.distance_xyz->norm() > EPSILON) { + if (measure.distance_xyz.has_value() && m_measure_mode == EMeasureMode::ONLY_MEASURE) { Vec3d distance = *measure.distance_xyz; - if (use_inches) - distance = GizmoObjectManipulation::mm_to_in * distance; - ImGui::PushID("ClipboardDistanceXYZ"); - add_measure_row_to_table(_u8L("Distance XYZ"), ImGuiWrapper::COL_ORCA, format_vec3(distance), - ImGui::GetStyleColorVec4(ImGuiCol_Text)); - ++measure_row_count; - ImGui::PopID(); + if (m_use_inches) distance = GizmoObjectManipulation::mm_to_in * distance; + if (measure.distance_xyz->norm() > EPSILON) { + ImGui::PushID("ClipboardDistanceXYZ"); + add_measure_row_to_table(_u8L("Distance XYZ"), ImGuiWrapper::COL_ORCA, format_vec3(distance), ImGui::GetStyleColorVec4(ImGuiCol_Text)); + ++measure_row_count; + ImGui::PopID(); + } } - } + if (m_distance.norm() > 0.01) { + if (!(m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_assembly_mode == AssemblyMode::FACE_FACE)) { + add_edit_distance_xyz_box(m_distance); + } + } + } // add dummy rows to keep dialog size fixed - for (unsigned int i = measure_row_count; i < max_measure_row_count; ++i) { + /*for (unsigned int i = measure_row_count; i < max_measure_row_count; ++i) { add_strings_row_to_table(*m_imgui, " ", ImGuiWrapper::COL_ORCA, " ", ImGui::GetStyleColorVec4(ImGuiCol_Text)); - } + }*/ ImGui::EndTable(); } +} + +//void GLGizmoMeasure::show_point_point_assembly() +//{ +//} + +void GLGizmoMeasure::show_face_face_assembly_common() { + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_hit_different_volumes.size() == 2 && + m_selected_features.first.feature->get_type() == Measure::SurfaceFeatureType::Plane && + m_selected_features.second.feature->get_type() == Measure::SurfaceFeatureType::Plane) { + auto &action = m_assembly_action; + auto set_to_parallel_size = m_imgui->calc_button_size(_L("Parallel")).x; + auto set_to_center_coincidence_size = m_imgui->calc_button_size(_L("Center coincidence")).x; + + m_imgui->disabled_begin(!(action.can_set_to_center_coincidence)); + { + ImGui::PushItemWidth(set_to_center_coincidence_size); + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(0 / 255.0, 150 / 255.0, 136 / 255.0, 1.0)); + ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(38 / 255.0f, 166 / 255.0f, 154 / 255.0f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(0 / 255.0f, 137 / 255.0f, 123 / 255.0f, 1.00f)); + ImGui::PushStyleColor(ImGuiCol_Text, ImVec4(254 / 255.0f, 254 / 255.0f, 254 / 255.0f, 1.00f)); + if (m_imgui->button(_L("Center coincidence"))) { + set_to_center_coincidence(m_same_model_object); + } + ImGui::PopStyleColor(4); + ImGui::SameLine(set_to_center_coincidence_size + m_space_size * 2); + } + m_imgui->disabled_end(); + + m_imgui->disabled_begin(!action.can_set_to_parallel); + { + if (m_imgui->button(_L("Parallel"))) { set_to_parallel(m_same_model_object); } + } + m_imgui->disabled_end(); + } +} + +void GLGizmoMeasure::show_face_face_assembly_senior() +{ + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY && m_hit_different_volumes.size() == 2 && + m_selected_features.first.feature->get_type() == Measure::SurfaceFeatureType::Plane && + m_selected_features.second.feature->get_type() == Measure::SurfaceFeatureType::Plane) { + auto &action = m_assembly_action; + auto feature_text_size = m_imgui->calc_button_size(_L("Featue 1")).x + m_imgui->calc_button_size(":").x; + auto set_to_reverse_rotation_size = m_imgui->calc_button_size(_L("Reverse rotation")).x; + auto rotate_around_center_size = m_imgui->calc_button_size(_L("Rotate around center:")).x; + auto parallel_distance_size = m_imgui->calc_button_size(_L("Parallel distance:")).x; + + if (m_imgui->bbl_checkbox(_L("Flip by Face 2"), m_flip_volume_2)) { + set_to_reverse_rotation(m_same_model_object, 1); + } + + if (action.has_parallel_distance) { + m_imgui->text(_u8L("Parallel distance:")); + ImGui::SameLine(parallel_distance_size + m_space_size); + ImGui::PushItemWidth(m_input_size_max); + ImGui::BBLInputDouble("##parallel_distance_z", &m_buffered_parallel_distance, 0.0f, 0.0f, "%.2f"); + if (m_last_active_item_imgui != m_current_active_imgui_id && std::abs(m_buffered_parallel_distance - action.parallel_distance) > EPSILON) { + set_parallel_distance(m_same_model_object, m_buffered_parallel_distance); + } + } + if (action.can_around_center_of_faces) { + m_imgui->text(_u8L("Rotate around center:")); + ImGui::SameLine(rotate_around_center_size + m_space_size); + ImGui::PushItemWidth(m_input_size_max); + ImGui::BBLInputDouble("##rotate_around_center", &m_buffered_around_center, 0.0f, 0.0f, "%.2f"); + if (m_last_active_item_imgui != m_current_active_imgui_id && std::abs(m_buffered_around_center) > EPSILON) { + set_to_around_center_of_faces(m_same_model_object, m_buffered_around_center); + m_buffered_around_center = 0; + } + ImGui::SameLine(rotate_around_center_size + m_space_size + m_input_size_max + m_space_size / 2.0f); + m_imgui->text(_L("°")); + } + } +} +void GLGizmoMeasure::init_render_input_window() +{ + m_use_inches = wxGetApp().app_config->get_bool("use_inches"); + m_units = m_use_inches ? " " + _u8L("in") : " " + _u8L("mm"); + m_space_size = ImGui::CalcTextSize(" ").x * 2; + m_input_size_max = ImGui::CalcTextSize("-100.00").x * 1.2; + m_same_model_object = is_two_volume_in_same_model_object(); +} + +void GLGizmoMeasure::on_render_input_window(float x, float y, float bottom_limit) +{ + static std::optional last_feature; + static EMode last_mode = EMode::FeatureSelection; + static SelectedFeatures last_selected_features; + + static float last_y = 0.0f; + static float last_h = 0.0f; + + if (m_editing_distance) + return; + m_current_active_imgui_id = ImGui::GetActiveID(); + // adjust window position to avoid overlap the view toolbar + const float win_h = ImGui::GetWindowHeight(); + y = std::min(y, bottom_limit - win_h); + GizmoImguiSetNextWIndowPos(x, y, ImGuiCond_Always, 0.0f, 0.0f); + if (last_h != win_h || last_y != y) { + // ask canvas for another frame to render the window in the correct position + m_imgui->set_requires_extra_frame(); + if (last_h != win_h) + last_h = win_h; + if (last_y != y) + last_y = y; + } + ImGuiWrapper::push_toolbar_style(m_parent.get_scale()); + GizmoImguiBegin(get_name(), ImGuiWindowFlags_NoMove | ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoTitleBar); + + init_render_input_window(); + show_selection_ui(); + + ImGui::Separator(); + show_distance_xyz_ui(); ImGui::Separator(); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(6.0f, 10.0f)); float get_cur_y = ImGui::GetContentRegionMax().y + ImGui::GetFrameHeight() + y; + float caption_max = 0.f; + float total_text_max = 0.f; + for (const auto &t : std::array{"point_selection", "reset", "unselect"}) { + caption_max = std::max(caption_max, m_imgui->calc_text_size(m_desc[t + "_caption"]).x); + total_text_max = std::max(total_text_max, m_imgui->calc_text_size(m_desc[t]).x); + } show_tooltip_information(caption_max, x, get_cur_y); - - float f_scale =m_parent.get_gizmos_manager().get_layout_scale(); - ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(6.0f, 4.0f * f_scale)); - - ImGui::PopStyleVar(2); - + ImGui::PopStyleVar(1); if (last_feature != m_curr_feature || last_mode != m_mode || last_selected_features != m_selected_features) { // the dialog may have changed its size, ask for an extra frame to render it properly last_feature = m_curr_feature; @@ -1993,44 +2173,49 @@ void GLGizmoMeasure::on_render_input_window(float x, float y, float bottom_limit last_selected_features = m_selected_features; m_imgui->set_requires_extra_frame(); } - + m_last_active_item_imgui = m_current_active_imgui_id; GizmoImguiEnd(); - // Orca ImGuiWrapper::pop_toolbar_style(); } -void GLGizmoMeasure::on_register_raycasters_for_picking() +void GLGizmoMeasure::render_input_window_warning(bool same_model_object) { - // the features are rendered on top of the scene, so the raytraced picker should take it into account - m_parent.set_raycaster_gizmos_on_top(true); -} - -void GLGizmoMeasure::on_unregister_raycasters_for_picking() -{ - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo); - m_parent.set_raycaster_gizmos_on_top(false); - m_raycasters.clear(); - m_selected_sphere_raycasters.clear(); } void GLGizmoMeasure::remove_selected_sphere_raycaster(int id) { - auto it = std::find_if(m_selected_sphere_raycasters.begin(), m_selected_sphere_raycasters.end(), - [id](std::shared_ptr item) { return SceneRaycaster::decode_id(SceneRaycaster::EType::Gizmo, item->get_id()) == id; }); - if (it != m_selected_sphere_raycasters.end()) - m_selected_sphere_raycasters.erase(it); - m_parent.remove_raycasters_for_picking(SceneRaycaster::EType::Gizmo, id); + reset_gripper_pick(id == SEL_SPHERE_1_ID ? GripperType::SPHERE_1 : GripperType::SPHERE_2); } void GLGizmoMeasure::update_measurement_result() { - if (!m_selected_features.first.feature.has_value()) + if (!m_selected_features.first.feature.has_value()) { m_measurement_result = Measure::MeasurementResult(); - else if (m_selected_features.second.feature.has_value()) - m_measurement_result = Measure::get_measurement(*m_selected_features.first.feature, *m_selected_features.second.feature, m_measuring.get()); + m_assembly_action = Measure::AssemblyAction(); + } + else if (m_selected_features.second.feature.has_value()) { + m_measurement_result = Measure::get_measurement(*m_selected_features.first.feature, *m_selected_features.second.feature, true); + m_assembly_action = Measure::get_assembly_action(*m_selected_features.first.feature, *m_selected_features.second.feature); + m_can_set_xyz_distance = Measure::can_set_xyz_distance(*m_selected_features.first.feature, *m_selected_features.second.feature); + //update buffer + const Measure::MeasurementResult &measure = m_measurement_result; + m_distance = Vec3d::Zero(); + if (measure.distance_xyz.has_value() && measure.distance_xyz->norm() > EPSILON) { + m_distance = *measure.distance_xyz; + } else if (measure.distance_infinite.has_value()) { + m_distance = measure.distance_infinite->to - measure.distance_infinite->from; + } else if (measure.distance_strict.has_value()) { + m_distance = measure.distance_strict->to - measure.distance_strict->from; + } + if (wxGetApp().app_config->get_bool("use_inches")) m_distance = GizmoObjectManipulation::mm_to_in * m_distance; + m_buffered_distance = m_distance; + if (m_assembly_action.has_parallel_distance) { + m_buffered_parallel_distance = m_assembly_action.parallel_distance; + } + } else if (!m_selected_features.second.feature.has_value() && m_selected_features.first.feature->get_type() == Measure::SurfaceFeatureType::Circle) - m_measurement_result = Measure::get_measurement(*m_selected_features.first.feature, Measure::SurfaceFeature(std::get<0>(m_selected_features.first.feature->get_circle())), m_measuring.get()); + m_measurement_result = Measure::get_measurement(*m_selected_features.first.feature, Measure::SurfaceFeature(std::get<0>(m_selected_features.first.feature->get_circle()))); } void GLGizmoMeasure::show_tooltip_information(float caption_max, float x, float y) @@ -2038,7 +2223,7 @@ void GLGizmoMeasure::show_tooltip_information(float caption_max, float x, float ImTextureID normal_id = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP); ImTextureID hover_id = m_parent.get_gizmos_manager().get_icon_texture_id(GLGizmosManager::MENU_ICON_NAME::IC_TOOLBAR_TOOLTIP_HOVER); - caption_max += m_imgui->calc_text_size(std::string_view{": "}).x + 35.f; + caption_max += m_imgui->calc_text_size(": "sv).x + 35.f; float scale = m_parent.get_scale(); ImVec2 button_size = ImVec2(25 * scale, 25 * scale); // ORCA: Use exact resolution will prevent blur on icon @@ -2054,11 +2239,448 @@ void GLGizmoMeasure::show_tooltip_information(float caption_max, float x, float m_imgui->text_colored(ImGuiWrapper::COL_WINDOW_BG, text); }; - for (const auto &t : std::array{"feature_selection", "point_selection", "reset", "unselect"}) draw_text_with_caption(m_desc.at(t + "_caption") + ": ", m_desc.at(t)); + for (const auto &t : std::array{"point_selection", "reset", "unselect"}) + draw_text_with_caption(m_desc.at(t + "_caption") + ": ", m_desc.at(t)); ImGui::EndTooltip(); } ImGui::PopStyleVar(2); } +void GLGizmoMeasure::reset_all_pick() +{ + std::map>().swap(m_mesh_raycaster_map); + reset_gripper_pick(GripperType::UNDEFINE,true); +} + +void GLGizmoMeasure::reset_gripper_pick(GripperType id, bool is_all) +{ + if (m_gripper_id_raycast_map.find(id) != m_gripper_id_raycast_map.end()) { + m_gripper_id_raycast_map[id].reset(); + m_gripper_id_raycast_map.erase(id); + } + if (id == GripperType ::UNDEFINE && is_all) { + reset_gripper_pick(GripperType::POINT); + reset_gripper_pick(GripperType::EDGE); + reset_gripper_pick(GripperType::PLANE); + reset_gripper_pick(GripperType::PLANE_1); + reset_gripper_pick(GripperType::PLANE_2); + reset_gripper_pick(GripperType::CIRCLE); + reset_gripper_pick(GripperType::CIRCLE_1); + reset_gripper_pick(GripperType::CIRCLE_2); + } +} + +void GLGizmoMeasure::register_single_mesh_pick() +{ + Selection& selection = m_parent.get_selection(); + const Selection::IndicesList &idxs = selection.get_volume_idxs(); + if (idxs.size() > 0) { + for (unsigned int idx : idxs) { + GLVolume *v = const_cast(selection.get_volume(idx)); + auto world_tran = v->get_instance_transformation() * v->get_volume_transformation(); + if (m_mesh_raycaster_map.find(v) != m_mesh_raycaster_map.end()) { + m_mesh_raycaster_map[v]->set_transform(world_tran.get_matrix()); + } else { + const ModelObject* obj = selection.get_model()->objects[v->object_idx()]; + const ModelVolume* vol = obj->volumes[v->volume_idx()]; + auto mesh = vol->mesh_ptr(); + m_mesh_raycaster_map[v] = std::make_shared(-1, *v->mesh_raycaster, world_tran.get_matrix()); + m_mesh_raycaster_map[v]->set_transform(world_tran.get_matrix()); + m_mesh_measure_map[v] = std::make_shared(mesh->its); + } + } + } +} + +//void GLGizmoMeasure::update_single_mesh_pick(GLVolume *v) +//{ +// if (m_mesh_raycaster_map.find(v) != m_mesh_raycaster_map.end()) { +// auto world_tran = v->get_instance_transformation() * v->get_volume_transformation(); +// m_mesh_raycaster_map[v]->world_tran.set_from_transform(world_tran.get_matrix()); +// } +//} + + void GLGizmoMeasure::reset_all_feature() { + reset_feature2(); + reset_feature1(); + m_show_reset_first_tip = false; + m_hit_different_volumes.clear(); + m_hit_order_volumes.clear(); + m_last_hit_volume = nullptr; + } + +void GLGizmoMeasure::reset_feature1_render() +{ + if (m_feature_plane_first.plane.model.is_initialized()) { + m_feature_plane_first.plane.model.reset(); + m_feature_plane_first.plane_idx = -1; + } + if (m_feature_circle_first.circle.model.is_initialized()) { + m_feature_circle_first.circle.model.reset(); + m_feature_circle_first.last_circle_feature = nullptr; + m_feature_circle_first.inv_zoom = 0; + } +} + +void GLGizmoMeasure::reset_feature2_render() +{ + if (m_feature_plane_second.plane.model.is_initialized()) { + m_feature_plane_second.plane.model.reset(); + m_feature_plane_second.plane_idx = -1; + } + if (m_feature_circle_second.circle.model.is_initialized()) { + m_feature_circle_second.circle.model.reset(); + m_feature_circle_second.last_circle_feature = nullptr; + m_feature_circle_second.inv_zoom = 0; + } +} + +void GLGizmoMeasure::reset_feature1() +{ + m_selected_wrong_feature_waring_tip = false; + reset_feature1_render(); + if (m_selected_features.second.feature.has_value()) { + if (m_hit_different_volumes.size() == 2) { + m_hit_different_volumes[0] = m_hit_different_volumes[1]; + } + if (m_hit_order_volumes.size() == 2) { + m_hit_order_volumes[0] = m_hit_order_volumes[1]; + } + m_selected_features.first = m_selected_features.second; + reset_feature2(); + m_show_reset_first_tip = true; + } else { + remove_selected_sphere_raycaster(SEL_SPHERE_1_ID); + m_selected_features.first.feature.reset(); + m_show_reset_first_tip = false; + if (m_hit_different_volumes.size() == 1) { + m_hit_different_volumes.clear(); + } + if (m_hit_order_volumes.size() == 1) { + m_hit_order_volumes.clear(); + } + reset_gripper_pick(GripperType::PLANE_1); + reset_gripper_pick(GripperType::CIRCLE_1); + reset_gripper_pick(GripperType::SPHERE_1); + } + update_measurement_result(); + } + +void GLGizmoMeasure::reset_feature2() +{ + reset_feature2_render(); + if (m_hit_different_volumes.size() == 2) { + m_hit_different_volumes.erase(m_hit_different_volumes.begin() + 1); + } + if (m_hit_order_volumes.size() == 2) { + m_hit_order_volumes.erase(m_hit_order_volumes.begin() + 1); + } + remove_selected_sphere_raycaster(SEL_SPHERE_2_ID); + m_selected_features.second.reset(); + m_show_reset_first_tip = false; + m_selected_wrong_feature_waring_tip = false; + reset_gripper_pick(GripperType::PLANE_2); + reset_gripper_pick(GripperType::CIRCLE_2); + reset_gripper_pick(GripperType::SPHERE_2); + + update_measurement_result(); +} + +bool Slic3r::GUI::GLGizmoMeasure::is_two_volume_in_same_model_object() +{ + if (m_hit_different_volumes.size() == 2) { + if (m_hit_different_volumes[0]->composite_id.object_id == m_hit_different_volumes[1]->composite_id.object_id) { + return true; + } + } + return false; +} + +Measure::Measuring *GLGizmoMeasure::get_measuring_of_mesh(GLVolume *v, Transform3d &tran) +{ + for (auto glvolume:m_hit_order_volumes) { + if (glvolume == v) { + tran = m_mesh_raycaster_map[glvolume]->get_transform(); + return m_mesh_measure_map[glvolume].get(); + } + } + return nullptr; +} + +void GLGizmoMeasure::update_world_plane_features(Measure::Measuring *cur_measuring, Measure::SurfaceFeature& feautre) +{ + if (cur_measuring) { + const auto &[idx, normal, pt] = feautre.get_plane(); + feautre.plane_indices = const_cast *>(&cur_measuring->get_plane_triangle_indices(idx)); + auto cur_plane_features = const_cast *>(&cur_measuring->get_plane_features(idx)); + if (cur_plane_features) { + if (!feautre.world_plane_features) { + feautre.world_plane_features = std::make_shared>(); + } + feautre.world_plane_features->clear(); // resize(cur_plane_features->size()); + for (size_t i = 0; i < cur_plane_features->size(); i++) { + Measure::SurfaceFeature temp(cur_plane_features->at(i)); + temp.translate(feautre.world_tran); + feautre.world_plane_features->push_back(std::move(temp)); + } + } + } +} + +void GLGizmoMeasure::update_feature_by_tran(Measure::SurfaceFeature &feature) +{ + if (!feature.volume) { return; } + auto volume = static_cast(feature.volume); + Measure::Measuring *cur_measuring = get_measuring_of_mesh(volume, feature.world_tran); + switch (feature.get_type()) { + case Measure::SurfaceFeatureType::Point: + case Measure::SurfaceFeatureType::Edge: + case Measure::SurfaceFeatureType::Circle: + case Measure::SurfaceFeatureType::Plane: { + feature.clone(*feature.origin_surface_feature); + feature.translate(feature.world_tran); + if (feature.get_type() == Measure::SurfaceFeatureType::Circle) { + m_feature_circle_first.last_circle_feature = nullptr; + m_feature_circle_first.inv_zoom = 0; + m_feature_circle_second.last_circle_feature = nullptr; + m_feature_circle_second.inv_zoom = 0; + } + if (feature.get_type() == Measure::SurfaceFeatureType::Plane) { + if (cur_measuring) { + update_world_plane_features(cur_measuring, feature); + } + } + break; + } + default: { + break; + } + } +} + +void GLGizmoMeasure::set_distance(bool same_model_object, const Vec3d &displacement, bool take_shot) +{ + if (m_hit_different_volumes.size() == 2 && displacement.norm() > 0.0f) { + auto v = m_hit_different_volumes[1]; + auto selection = const_cast(&m_parent.get_selection()); + selection->setup_cache(); + if (take_shot) { + wxGetApp().plater()->take_snapshot("MoveInMeasure", UndoRedo::SnapshotType::GizmoAction); // avoid storing another snapshot + } + selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); + m_pending_scale ++; + if (same_model_object == false) { + auto object_displacement = v->get_instance_transformation().get_matrix_no_offset().inverse() * displacement; + v->set_instance_transformation(v->get_instance_transformation().get_matrix() * Geometry::translation_transform(object_displacement)); + } else { + Geometry::Transformation tran(v->world_matrix()); + auto local_displacement = tran.get_matrix_no_offset().inverse() * displacement; + v->set_volume_transformation(v->get_volume_transformation().get_matrix() * Geometry::translation_transform(local_displacement)); + } + wxGetApp().plater()->canvas3D()->do_move(""); + register_single_mesh_pick(); + if (same_model_object ) { + update_feature_by_tran(*m_selected_features.first.feature); + } + update_feature_by_tran(*m_selected_features.second.feature); + } +} + +void GLGizmoMeasure::set_to_parallel(bool same_model_object, bool take_shot, bool is_anti_parallel) +{ + if (m_hit_different_volumes.size() == 2) { + auto &action = m_assembly_action; + auto v = m_hit_different_volumes[1]; + auto selection = const_cast(&m_parent.get_selection()); + selection->setup_cache(); + if (take_shot) { + wxGetApp().plater()->take_snapshot("RotateInMeasure", UndoRedo::SnapshotType::GizmoAction); // avoid storing another snapshot + } + selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); + const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane(); + const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); + if ((is_anti_parallel && normal1.dot(normal2) > -1 + 1e-3) || + (is_anti_parallel == false && (normal1.dot(normal2) < 1 - 1e-3))) { + m_pending_scale ++; + Vec3d axis; + double angle; + Matrix3d rotation_matrix; + Geometry::rotation_from_two_vectors(normal2, -normal1, axis, angle, &rotation_matrix); + Transform3d r_m = (Transform3d) rotation_matrix; + if (same_model_object == false) { + auto new_rotation_tran = r_m * v->get_instance_transformation().get_rotation_matrix(); + Vec3d rotation = Geometry::extract_euler_angles(new_rotation_tran); + v->set_instance_rotation(rotation); + selection->rotate(v->object_idx(), v->instance_idx(), v->get_instance_transformation().get_matrix()); + } else { + Geometry::Transformation world_tran(v->world_matrix()); + auto new_tran = r_m * world_tran.get_rotation_matrix(); + Transform3d volume_rotation_tran = v->get_instance_transformation().get_rotation_matrix().inverse() * new_tran; + Vec3d rotation = Geometry::extract_euler_angles(volume_rotation_tran); + v->set_volume_rotation(rotation); + selection->rotate(v->object_idx(), v->instance_idx(), v->volume_idx(), v->get_volume_transformation().get_matrix()); + } + wxGetApp().plater()->canvas3D()->do_rotate(""); + register_single_mesh_pick(); + if (same_model_object) { + update_feature_by_tran(*m_selected_features.first.feature); + } + update_feature_by_tran(*m_selected_features.second.feature); + } + } +} + +void GLGizmoMeasure::set_to_reverse_rotation(bool same_model_object, int feature_index) +{ + if (m_hit_different_volumes.size() == 2 && feature_index < 2) { + auto &action = m_assembly_action; + auto v = m_hit_different_volumes[feature_index]; + auto selection = const_cast(&m_parent.get_selection()); + selection->setup_cache(); + wxGetApp().plater()->take_snapshot("ReverseRotateInMeasure", UndoRedo::SnapshotType::GizmoAction); // avoid storing another snapshot + + selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); + m_pending_scale = 1; + Vec3d plane_normal,plane_center; + if (feature_index ==0) {//feature 1 + const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane(); + plane_normal = normal1; + plane_center = pt1; + } + else { // feature 2 + const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); + plane_normal = normal2; + plane_center = pt2; + } + auto new_pt = Measure::get_one_point_in_plane(plane_center, plane_normal); + Vec3d axis = (new_pt - plane_center).normalized(); + if (axis.norm() < 0.1) { + throw; + } + if (same_model_object == false) { + Geometry::Transformation inMat(v->get_instance_transformation()); + Geometry::Transformation outMat = Geometry::mat_around_a_point_rotate(inMat, plane_center, axis, PI); + selection->rotate(v->object_idx(), v->instance_idx(), outMat.get_matrix()); + } else { + Geometry::Transformation inMat(v->world_matrix()); + Geometry::Transformation outMat = Geometry::mat_around_a_point_rotate(inMat, plane_center, axis, PI); + Transform3d volume_tran = v->get_instance_transformation().get_matrix().inverse() * outMat.get_matrix(); + selection->rotate(v->object_idx(), v->instance_idx(), v->volume_idx(), volume_tran); + } + wxGetApp().plater()->canvas3D()->do_rotate(""); + register_single_mesh_pick(); + if (same_model_object == false) { + if (feature_index == 0) { // feature 1 + update_feature_by_tran(*m_selected_features.first.feature); + } else { // feature 2 + update_feature_by_tran(*m_selected_features.second.feature); + } + } + else { + update_feature_by_tran(*m_selected_features.first.feature); + update_feature_by_tran(*m_selected_features.second.feature); + } + } +} + +void GLGizmoMeasure::set_to_around_center_of_faces(bool same_model_object, float rotate_degree) +{ + if (m_hit_different_volumes.size() == 2 ) { + auto &action = m_assembly_action; + auto v = m_hit_different_volumes[1]; + auto selection = const_cast(&m_parent.get_selection()); + selection->setup_cache(); + wxGetApp().plater()->take_snapshot("ReverseRotateInMeasure", UndoRedo::SnapshotType::GizmoAction); // avoid storing another snapshot + + selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); + m_pending_scale = 1; + + auto radian = Geometry::deg2rad(rotate_degree); + Vec3d plane_normal, plane_center; + const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); + plane_normal = normal2; + plane_center = pt2; + + if (same_model_object == false) { + Geometry::Transformation inMat(v->get_instance_transformation()); + Geometry::Transformation outMat = Geometry::mat_around_a_point_rotate(inMat, plane_center, plane_normal, radian); + selection->rotate(v->object_idx(), v->instance_idx(), outMat.get_matrix()); + } else { + Geometry::Transformation inMat(v->world_matrix()); + Geometry::Transformation outMat = Geometry::mat_around_a_point_rotate(inMat, plane_center, plane_normal, radian); + Transform3d volume_tran = v->get_instance_transformation().get_matrix().inverse() * outMat.get_matrix(); + selection->rotate(v->object_idx(), v->instance_idx(), v->volume_idx(), volume_tran); + } + wxGetApp().plater()->canvas3D()->do_rotate(""); + register_single_mesh_pick(); + if (same_model_object) { + update_feature_by_tran(*m_selected_features.first.feature); + } + update_feature_by_tran(*m_selected_features.second.feature); + } +} + +void GLGizmoMeasure::set_to_center_coincidence(bool same_model_object) { + auto v = m_hit_different_volumes[1]; + wxGetApp().plater()->take_snapshot("RotateThenMoveInMeasure", UndoRedo::SnapshotType::GizmoAction); + set_to_parallel(same_model_object, false,true); + + const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane(); + const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); + set_distance(same_model_object, pt1 - pt2, false); + m_set_center_coincidence = true; +} + +void GLGizmoMeasure::set_parallel_distance(bool same_model_object, float dist) +{ + if (m_hit_different_volumes.size() == 2 && abs(dist) >= 0.0f) { + auto v = m_hit_different_volumes[1]; + auto selection = const_cast(&m_parent.get_selection()); + selection->setup_cache(); + + wxGetApp().plater()->take_snapshot("SetParallelDistanceInMeasure", UndoRedo::SnapshotType::GizmoAction); // avoid storing another snapshot + + selection->set_mode(same_model_object ? Selection::Volume : Selection::Instance); + m_pending_scale = 1; + + const auto [idx1, normal1, pt1] = m_selected_features.first.feature->get_plane(); + const auto [idx2, normal2, pt2] = m_selected_features.second.feature->get_plane(); + Vec3d proj_pt2; + Measure::get_point_projection_to_plane(pt2, pt1, normal1, proj_pt2); + auto new_pt2 = proj_pt2 + normal1 * dist; + + Vec3d displacement = new_pt2 - pt2; + + if (same_model_object == false) { + selection->translate(v->object_idx(), v->instance_idx(), displacement); + } else { + selection->translate(v->object_idx(), v->instance_idx(), v->volume_idx(), displacement); + } + wxGetApp().plater()->canvas3D()->do_move(""); + register_single_mesh_pick(); + if (same_model_object) { + update_feature_by_tran(*m_selected_features.first.feature); + } + update_feature_by_tran(*m_selected_features.second.feature); + } +} + +bool GLGizmoMeasure::is_pick_meet_assembly_mode(const SelectedFeatures::Item &item) { + if (m_measure_mode == EMeasureMode::ONLY_ASSEMBLY) { + if (m_assembly_mode == AssemblyMode::FACE_FACE && item.feature->get_type() == Measure::SurfaceFeatureType::Plane) { + return true; + } + if (m_assembly_mode == AssemblyMode::POINT_POINT && + (item.feature->get_type() == Measure::SurfaceFeatureType::Point|| + item.feature->get_type() == Measure::SurfaceFeatureType::Circle)) { + return true; + } + return false; + } + else { + return true; + } +} + } // namespace GUI } // namespace Slic3r diff --git a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp index 79829136534..7fd54603f31 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoMeasure.hpp @@ -12,16 +12,85 @@ namespace Slic3r { enum class ModelVolumeType : int; - namespace Measure { class Measuring; } - - namespace GUI { enum class SLAGizmoEventType : unsigned char; +enum class EMeasureMode : unsigned char { + ONLY_MEASURE, + ONLY_ASSEMBLY +}; +enum class AssemblyMode : unsigned char { + FACE_FACE, + POINT_POINT, +}; +static const Slic3r::ColorRGBA SELECTED_1ST_COLOR = {0.25f, 0.75f, 0.75f, 1.0f}; +static const Slic3r::ColorRGBA SELECTED_2ND_COLOR = {0.75f, 0.25f, 0.75f, 1.0f}; +static const Slic3r::ColorRGBA NEUTRAL_COLOR = {0.5f, 0.5f, 0.5f, 1.0f}; +static const Slic3r::ColorRGBA HOVER_COLOR = ColorRGBA::GREEN(); + +static const int POINT_ID = 100; +static const int EDGE_ID = 200; +static const int CIRCLE_ID = 300; +static const int PLANE_ID = 400; +static const int SEL_SPHERE_1_ID = 501; +static const int SEL_SPHERE_2_ID = 502; + +static const float TRIANGLE_BASE = 10.0f; +static const float TRIANGLE_HEIGHT = TRIANGLE_BASE * 1.618033f; + +static const std::string CTRL_STR = +#ifdef __APPLE__ + "⌘" +#else + "Ctrl" +#endif //__APPLE__ + ; + +class TransformHelper +{ + struct Cache + { + std::array viewport; + Matrix4d ndc_to_ss_matrix; + Transform3d ndc_to_ss_matrix_inverse; + }; + static Cache s_cache; + +public: + static Vec3d model_to_world(const Vec3d &model, const Transform3d &world_matrix); + static Vec4d world_to_clip(const Vec3d &world, const Matrix4d &projection_view_matrix); + static Vec3d clip_to_ndc(const Vec4d &clip); + static Vec2d ndc_to_ss(const Vec3d &ndc, const std::array &viewport); + static Vec4d model_to_clip(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix); + static Vec3d model_to_ndc(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix); + static Vec2d model_to_ss(const Vec3d &model, const Transform3d &world_matrix, const Matrix4d &projection_view_matrix, const std::array &viewport); + static Vec2d world_to_ss(const Vec3d &world, const Matrix4d &projection_view_matrix, const std::array &viewport); + static const Matrix4d & ndc_to_ss_matrix(const std::array &viewport); + static const Transform3d ndc_to_ss_matrix_inverse(const std::array &viewport); + +private: + static void update(const std::array &viewport); +}; class GLGizmoMeasure : public GLGizmoBase { +protected: + using PickRaycaster = SceneRaycasterItem; + enum GripperType { + UNDEFINE, + POINT, + EDGE, + CIRCLE, + CIRCLE_1, + CIRCLE_2, + PLANE, + PLANE_1, + PLANE_2, + SPHERE_1, + SPHERE_2, + }; + enum class EMode : unsigned char { FeatureSelection, @@ -69,30 +138,50 @@ class GLGizmoMeasure : public GLGizmoBase } }; - struct VolumeCacheItem - { - const ModelObject* object{ nullptr }; - const ModelInstance* instance{ nullptr }; - const ModelVolume* volume{ nullptr }; - Transform3d world_trafo; - - bool operator == (const VolumeCacheItem& other) const { - return this->object == other.object && this->instance == other.instance && this->volume == other.volume && - this->world_trafo.isApprox(other.world_trafo); - } - }; + //struct VolumeCacheItem + //{ + // const ModelObject* object{ nullptr }; + // const ModelInstance* instance{ nullptr }; + // const ModelVolume* volume{ nullptr }; + // Transform3d world_trafo; + + // bool operator == (const VolumeCacheItem& other) const { + // return this->object == other.object && this->instance == other.instance && this->volume == other.volume && + // this->world_trafo.isApprox(other.world_trafo); + // } + //}; - std::vector m_volumes_cache; + //std::vector m_volumes_cache; EMode m_mode{ EMode::FeatureSelection }; Measure::MeasurementResult m_measurement_result; + Measure::AssemblyAction m_assembly_action; + std::map> m_mesh_measure_map; + std::shared_ptr m_curr_measuring{nullptr}; - std::unique_ptr m_measuring; // PIMPL - + //first feature PickingModel m_sphere; PickingModel m_cylinder; - PickingModel m_circle; - PickingModel m_plane; + struct CircleGLModel + { + PickingModel circle; + Measure::SurfaceFeature *last_circle_feature{nullptr}; + float inv_zoom{0}; + }; + CircleGLModel m_curr_circle; + CircleGLModel m_feature_circle_first; + CircleGLModel m_feature_circle_second; + void init_circle_glmodel(GripperType gripper_type, const Measure::SurfaceFeature &feature, CircleGLModel &circle_gl_model, float inv_zoom); + + struct PlaneGLModel { + int plane_idx{0}; + PickingModel plane; + }; + PlaneGLModel m_curr_plane; + PlaneGLModel m_feature_plane_first; + PlaneGLModel m_feature_plane_second; + void init_plane_glmodel(GripperType gripper_type, const Measure::SurfaceFeature &feature, PlaneGLModel &plane_gl_model); + struct Dimensioning { GLModel line; @@ -101,40 +190,38 @@ class GLGizmoMeasure : public GLGizmoBase }; Dimensioning m_dimensioning; - // Uses a standalone raycaster and not the shared one because of the - // difference in how the mesh is updated - std::unique_ptr m_raycaster; - - std::vector m_plane_models_cache; - std::map> m_raycasters; + std::map> m_mesh_raycaster_map; + std::map> m_gripper_id_raycast_map; + std::vector m_hit_different_volumes; + std::vector m_hit_order_volumes; + GLVolume* m_last_hit_volume; + //std::vector> m_plane_models_cache; + unsigned int m_last_active_item_imgui{0}; + Vec3d m_buffered_distance; + Vec3d m_distance; + double m_buffered_parallel_distance{0}; + double m_buffered_around_center{0}; // used to keep the raycasters for point/center spheres - std::vector> m_selected_sphere_raycasters; + //std::vector> m_selected_sphere_raycasters; std::optional m_curr_feature; std::optional m_curr_point_on_feature_position; - struct SceneRaycasterState - { - std::shared_ptr raycaster{ nullptr }; - bool state{true}; - - }; - std::vector m_scene_raycasters; // These hold information to decide whether recalculation is necessary: float m_last_inv_zoom{ 0.0f }; - std::optional m_last_circle; + std::optional m_last_circle_feature; int m_last_plane_idx{ -1 }; bool m_mouse_left_down{ false }; // for detection left_up of this gizmo - - Vec2d m_mouse_pos{ Vec2d::Zero() }; + bool m_mouse_left_down_mesh_deal{false};//for pick mesh KeyAutoRepeatFilter m_shift_kar_filter; SelectedFeatures m_selected_features; - bool m_pending_scale{ false }; + int m_pending_scale{ 0 }; + bool m_set_center_coincidence{false}; bool m_editing_distance{ false }; bool m_is_editing_distance_first_frame{ true }; - + bool m_can_set_xyz_distance{false}; void update_if_needed(); void disable_scene_raycasters(); @@ -148,7 +235,6 @@ class GLGizmoMeasure : public GLGizmoBase public: GLGizmoMeasure(GLCanvas3D& parent, const std::string& icon_filename, unsigned int sprite_id); - /// /// Apply rotation on select plane /// @@ -158,12 +244,12 @@ class GLGizmoMeasure : public GLGizmoBase void data_changed(bool is_serializing) override; - bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position, bool shift_down, bool alt_down, bool control_down); + virtual bool gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_position, bool shift_down, bool alt_down, bool control_down); bool wants_enter_leave_snapshots() const override { return true; } std::string get_gizmo_entering_text() const override { return _u8L("Entering Measure gizmo"); } std::string get_gizmo_leaving_text() const override { return _u8L("Leaving Measure gizmo"); } - std::string get_action_snapshot_name() const override { return _u8L("Measure gizmo editing"); } + //std::string get_action_snapshot_name() const override { return _u8L("Measure gizmo editing"); } protected: bool on_init() override; @@ -172,20 +258,66 @@ class GLGizmoMeasure : public GLGizmoBase void on_render() override; void on_set_state() override; + //virtual void on_render_for_picking() override; + void show_selection_ui(); + void show_distance_xyz_ui(); + //void show_point_point_assembly(); + void show_face_face_assembly_common(); + void show_face_face_assembly_senior(); + void init_render_input_window(); virtual void on_render_input_window(float x, float y, float bottom_limit) override; - virtual void on_register_raycasters_for_picking() override; - virtual void on_unregister_raycasters_for_picking() override; + virtual void render_input_window_warning(bool same_model_object); void remove_selected_sphere_raycaster(int id); void update_measurement_result(); - // Orca void show_tooltip_information(float caption_max, float x, float y); - -private: + void reset_all_pick(); + void reset_gripper_pick(GripperType id,bool is_all = false); + void register_single_mesh_pick(); + //void update_single_mesh_pick(GLVolume* v); + + std::string format_double(double value); + std::string format_vec3(const Vec3d &v); + std::string surface_feature_type_as_string(Measure::SurfaceFeatureType type); + std::string point_on_feature_type_as_string(Measure::SurfaceFeatureType type, int hover_id); + std::string center_on_feature_type_as_string(Measure::SurfaceFeatureType type); + bool is_feature_with_center(const Measure::SurfaceFeature &feature); + Vec3d get_feature_offset(const Measure::SurfaceFeature &feature); + + void reset_all_feature(); + void reset_feature1_render(); + void reset_feature2_render(); + void reset_feature1(); + void reset_feature2(); + bool is_two_volume_in_same_model_object(); + Measure::Measuring* get_measuring_of_mesh(GLVolume *v, Transform3d &tran); + void update_world_plane_features(Measure::Measuring *cur_measuring, Measure::SurfaceFeature &feautre); + void update_feature_by_tran(Measure::SurfaceFeature & feature); + void set_distance(bool same_model_object, const Vec3d &displacement, bool take_shot = true); + void set_to_parallel(bool same_model_object, bool take_shot = true, bool is_anti_parallel = false); + void set_to_reverse_rotation(bool same_model_object,int feature_index); + void set_to_around_center_of_faces(bool same_model_object,float rotate_degree); + void set_to_center_coincidence(bool same_model_object); + void set_parallel_distance(bool same_model_object,float dist); + + bool is_pick_meet_assembly_mode(const SelectedFeatures::Item& item); + protected: // This map holds all translated description texts, so they can be easily referenced during layout calculations // etc. When language changes, GUI is recreated and this class constructed again, so the change takes effect. std::map m_desc; + bool m_show_reset_first_tip{false}; + bool m_selected_wrong_feature_waring_tip{false}; + EMeasureMode m_measure_mode{EMeasureMode::ONLY_MEASURE}; + AssemblyMode m_assembly_mode{AssemblyMode::FACE_FACE}; + bool m_flip_volume_2{false}; + float m_space_size; + float m_input_size_max; + bool m_use_inches; + bool m_only_select_plane{false}; + std::string m_units; + mutable bool m_same_model_object; + mutable unsigned int m_current_active_imgui_id; }; } // namespace GUI diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp index 319c5c75f28..e379ea2f902 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp @@ -23,8 +23,8 @@ #include "slic3r/GUI/Gizmos/GLGizmoSimplify.hpp" #include "slic3r/GUI/Gizmos/GLGizmoEmboss.hpp" #include "slic3r/GUI/Gizmos/GLGizmoSVG.hpp" -#include "slic3r/GUI/Gizmos/GLGizmoMeasure.hpp" #include "slic3r/GUI/Gizmos/GLGizmoMeshBoolean.hpp" +#include "slic3r/GUI/Gizmos/GLGizmoAssembly.hpp" #include "libslic3r/format.hpp" #include "libslic3r/Model.hpp" @@ -61,7 +61,9 @@ std::vector GLGizmosManager::get_selectable_idxs() const out.reserve(m_gizmos.size()); if (m_parent.get_canvas_type() == GLCanvas3D::CanvasAssembleView) { for (size_t i = 0; i < m_gizmos.size(); ++i) - if (m_gizmos[i]->get_sprite_id() == (unsigned int)MmuSegmentation) + if (m_gizmos[i]->get_sprite_id() == (unsigned int) Measure || + m_gizmos[i]->get_sprite_id() == (unsigned int) Assembly || + m_gizmos[i]->get_sprite_id() == (unsigned int) MmuSegmentation) out.push_back(i); } else { @@ -158,9 +160,12 @@ void GLGizmosManager::switch_gizmos_icon_filename() case(EType::MeshBoolean): gizmo->set_icon_filename(m_is_dark ? "toolbar_meshboolean_dark.svg" : "toolbar_meshboolean.svg"); break; - case(EType::Measure): + case (EType::Measure): gizmo->set_icon_filename(m_is_dark ? "toolbar_measure_dark.svg" : "toolbar_measure.svg"); break; + case (EType::Assembly): + gizmo->set_icon_filename(m_is_dark ? "toolbar_assembly_dark.svg" : "toolbar_assembly.svg"); + break; } } @@ -199,6 +204,7 @@ bool GLGizmosManager::init() m_gizmos.emplace_back(new GLGizmoEmboss(m_parent, m_is_dark ? "toolbar_text_dark.svg" : "toolbar_text.svg", EType::Emboss)); m_gizmos.emplace_back(new GLGizmoSVG(m_parent)); m_gizmos.emplace_back(new GLGizmoMeasure(m_parent, m_is_dark ? "toolbar_measure_dark.svg" : "toolbar_measure.svg", EType::Measure)); + m_gizmos.emplace_back(new GLGizmoAssembly(m_parent, m_is_dark ? "toolbar_assembly_dark.svg" : "toolbar_assembly.svg", EType::Assembly)); m_gizmos.emplace_back(new GLGizmoSimplify(m_parent, "reduce_triangles.svg", EType::Simplify)); //m_gizmos.emplace_back(new GLGizmoSlaSupports(m_parent, "sla_supports.svg", sprite_id++)); //m_gizmos.emplace_back(new GLGizmoFaceDetector(m_parent, "face recognition.svg", sprite_id++)); @@ -342,6 +348,8 @@ bool GLGizmosManager::check_gizmos_closed_except(EType type) const void GLGizmosManager::set_hover_id(int id) { + // Measure and assembly handles hover by itself + if (m_current == EType::Measure || m_current == EType::Assembly) { return; } if (!m_enabled || m_current == Undefined) return; @@ -435,7 +443,9 @@ bool GLGizmosManager::gizmo_event(SLAGizmoEventType action, const Vec2d& mouse_p else if (m_current == MmuSegmentation) return dynamic_cast(m_gizmos[MmuSegmentation].get())->gizmo_event(action, mouse_position, shift_down, alt_down, control_down); else if (m_current == Measure) - return dynamic_cast(m_gizmos[Measure].get())->gizmo_event(action, mouse_position, shift_down, alt_down, control_down); + return dynamic_cast(m_gizmos[Measure].get())->gizmo_event(action, mouse_position, shift_down, alt_down, control_down); + else if (m_current == Assembly) + return dynamic_cast(m_gizmos[Assembly].get())->gizmo_event(action, mouse_position, shift_down, alt_down, control_down); else if (m_current == Cut) return dynamic_cast(m_gizmos[Cut].get())->gizmo_event(action, mouse_position, shift_down, alt_down, control_down); else if (m_current == MeshBoolean) @@ -656,6 +666,11 @@ bool GLGizmosManager::on_mouse(const wxMouseEvent &mouse_event) // &m_gizmos[m_current]->on_mouse != &GLGizmoBase::on_mouse && m_gizmos[m_current]->on_mouse(mouse_event)) return true; + + if (mouse_event.RightUp() && m_current != EType::Undefined && !m_parent.is_mouse_dragging()) { + // Prevent default right context menu in gizmos + return true; + } return false; } @@ -693,7 +708,7 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) case WXK_ESCAPE: { if (m_current != Undefined) { - if (m_current == Measure && gizmo_event(SLAGizmoEventType::Escape)) { + if ((m_current == Measure || m_current == Assembly) && gizmo_event(SLAGizmoEventType::Escape)) { // do nothing } else //if ((m_current != SlaSupports) || !gizmo_event(SLAGizmoEventType::DiscardChanges)) @@ -703,14 +718,7 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) } break; } - case WXK_BACK: - case WXK_DELETE: - { - if ((m_current == Cut || m_current == Measure) && gizmo_event(SLAGizmoEventType::Delete)) - processed = true; - - break; - } + //skip some keys when gizmo case 'A': case 'a': { @@ -737,14 +745,12 @@ bool GLGizmosManager::on_char(wxKeyEvent& evt) //} - //case WXK_BACK: - //case WXK_DELETE: - //{ - // if ((m_current == SlaSupports || m_current == Hollow) && gizmo_event(SLAGizmoEventType::Delete)) - // processed = true; - - // break; - //} + case WXK_BACK: + case WXK_DELETE: { + if ((m_current == Cut || m_current == Measure || m_current == Assembly) && gizmo_event(SLAGizmoEventType::Delete)) + processed = true; + break; + } //case 'A': //case 'a': //{ @@ -839,13 +845,12 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt) processed = true; } }*/ - if (m_current == Measure) { + if (m_current == Measure || m_current == Assembly) { if (keyCode == WXK_CONTROL) gizmo_event(SLAGizmoEventType::CtrlUp, Vec2d::Zero(), evt.ShiftDown(), evt.AltDown(), evt.CmdDown()); else if (keyCode == WXK_SHIFT) gizmo_event(SLAGizmoEventType::ShiftUp, Vec2d::Zero(), evt.ShiftDown(), evt.AltDown(), evt.CmdDown()); } - // if (processed) // m_parent.set_cursor(GLCanvas3D::Standard); } @@ -927,8 +932,7 @@ bool GLGizmosManager::on_key(wxKeyEvent& evt) // force extra frame to automatically update window size wxGetApp().imgui()->set_requires_extra_frame(); } - } - else if (m_current == Measure) { + } else if (m_current == Measure || m_current == Assembly) { if (keyCode == WXK_CONTROL) gizmo_event(SLAGizmoEventType::CtrlDown, Vec2d::Zero(), evt.ShiftDown(), evt.AltDown(), evt.CmdDown()); else if (keyCode == WXK_SHIFT) diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp index 4511f021194..305c767f432 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.hpp @@ -86,6 +86,7 @@ class GLGizmosManager : public Slic3r::ObjectBase Emboss, Svg, Measure, + Assembly, Simplify, //SlaSupports, // BBS diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp index 2595d3804d5..39f2da71dac 100644 --- a/src/slic3r/GUI/ImGuiWrapper.cpp +++ b/src/slic3r/GUI/ImGuiWrapper.cpp @@ -161,7 +161,9 @@ const ImVec4 ImGuiWrapper::COL_BUTTON_HOVERED = COL_ORANGE_LIGHT; const ImVec4 ImGuiWrapper::COL_BUTTON_ACTIVE = COL_BUTTON_HOVERED; //BBS - +const ImVec4 ImGuiWrapper::COL_RED = ImVec4(1.0f, 0.0f, 0.0f, 1.0f); +const ImVec4 ImGuiWrapper::COL_GREEN = ImVec4(0.0f, 1.0f, 0.0f, 1.0f); +const ImVec4 ImGuiWrapper::COL_BLUE = ImVec4(0.0f, 0.0f, 1.0f, 1.0f); const ImVec4 ImGuiWrapper::COL_BLUE_LIGHT = ImVec4(0.122f, 0.557f, 0.918f, 1.0f); const ImVec4 ImGuiWrapper::COL_GREEN_LIGHT = { 0.f, 156 / 255.f, 136 / 255.f, 0.25f }; // ORCA used on various places like text selection bg. Replaced with orca color const ImVec4 ImGuiWrapper::COL_HOVER = { 0.933f, 0.933f, 0.933f, 1.0f }; @@ -856,6 +858,10 @@ bool ImGuiWrapper::radio_button(const wxString &label, bool active) return ImGui::RadioButton(label_utf8.c_str(), active); } +ImVec4 ImGuiWrapper::to_ImVec4(const ColorRGB &color) { + return {color.r(), color.g(), color.b(), 1.0}; +} + bool ImGuiWrapper::input_double(const std::string &label, const double &value, const std::string &format) { return ImGui::InputDouble(label.c_str(), const_cast(&value), 0.0f, 0.0f, format.c_str(), ImGuiInputTextFlags_CharsDecimal); @@ -943,6 +949,19 @@ void ImGuiWrapper::text(const wxString &label) ImGuiWrapper::text(label_utf8.c_str()); } +void ImGuiWrapper::warning_text(const char *label) +{ + ImGui::PushStyleColor(ImGuiCol_Text, ImGuiWrapper::to_ImVec4(ColorRGB::WARNING())); + this->text(label); + ImGui::PopStyleColor(); +} + +void ImGuiWrapper::warning_text(const wxString &all_text) +{ + auto label_utf8 = into_u8(all_text); + warning_text(label_utf8.c_str()); +} + void ImGuiWrapper::text_colored(const ImVec4& color, const char* label) { ImGui::TextColored(color, "%s", label); diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp index ec492ed58c8..7ecf5bbe65b 100644 --- a/src/slic3r/GUI/ImGuiWrapper.hpp +++ b/src/slic3r/GUI/ImGuiWrapper.hpp @@ -134,6 +134,7 @@ class ImGuiWrapper bool button(const wxString& label, float width, float height); bool button(const wxString& label, const ImVec2 &size, bool enable); // default size = ImVec2(0.f, 0.f) bool radio_button(const wxString &label, bool active); + static ImVec4 to_ImVec4(const ColorRGB &color); bool input_double(const std::string &label, const double &value, const std::string &format = "%.3f"); bool input_double(const wxString &label, const double &value, const std::string &format = "%.3f"); bool input_vec3(const std::string &label, const Vec3d &value, float width, const std::string &format = "%.3f"); @@ -144,6 +145,8 @@ class ImGuiWrapper static void text(const char *label); static void text(const std::string &label); static void text(const wxString &label); + void warning_text(const char *all_text); + void warning_text(const wxString &all_text); static void text_colored(const ImVec4& color, const char* label); static void text_colored(const ImVec4& color, const std::string& label); static void text_colored(const ImVec4& color, const wxString& label); @@ -323,6 +326,9 @@ class ImGuiWrapper static const ImVec4 COL_BUTTON_ACTIVE; //BBS add more colors + static const ImVec4 COL_RED; + static const ImVec4 COL_GREEN; + static const ImVec4 COL_BLUE; static const ImVec4 COL_BLUE_LIGHT; static const ImVec4 COL_GREEN_LIGHT; static const ImVec4 COL_HOVER; diff --git a/src/slic3r/GUI/Mouse3DController.cpp b/src/slic3r/GUI/Mouse3DController.cpp index 9ee6342ae45..22825593694 100644 --- a/src/slic3r/GUI/Mouse3DController.cpp +++ b/src/slic3r/GUI/Mouse3DController.cpp @@ -29,7 +29,7 @@ static const std::vector _3DCONNEXION_VENDORS = 0x256F // 3DCONNECTION = 9583 // 3Dconnexion }; -// See: https://github.com/FreeSpacenav/spacenavd/blob/a9eccf34e7cac969ee399f625aef827f4f4aaec6/src/dev.c#L202 +// See: https://github.com/FreeSpacenav/spacenavd/blob/39856625a6de1e8c4b57c5938e1bf29d13cf1a9f/src/dev.c#L63 static const std::vector _3DCONNEXION_DEVICES = { 0xc603, /* 50691 spacemouse plus XT */ @@ -43,6 +43,7 @@ static const std::vector _3DCONNEXION_DEVICES = 0xc628, /* 50728 space navigator for notebooks*/ 0xc629, /* 50729 space pilot pro*/ 0xc62b, /* 50731 space mouse pro*/ + 0xc640, /* 50752 nulooq */ 0xc62e, /* 50734 spacemouse wireless (USB cable) *TESTED* */ 0xc62f, /* 50735 spacemouse wireless receiver */ 0xc631, /* 50737 spacemouse pro wireless *TESTED* */ @@ -50,7 +51,7 @@ static const std::vector _3DCONNEXION_DEVICES = 0xc633, /* 50739 spacemouse enterprise */ 0xc635, /* 50741 spacemouse compact *TESTED* */ 0xc636, /* 50742 spacemouse module */ - 0xc640, /* 50752 nulooq */ + 0xc63a, /* 60060 spacemouse wireless (Bluetooth) */ 0xc652, /* 50770 3Dconnexion universal receiver *TESTED* */ }; diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index db8b4856a52..1f052706c98 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -5499,7 +5499,9 @@ void PartPlateList::BedTextureInfo::reset() void PartPlateList::init_bed_type_info() { BedTextureInfo::TexturePart pct_part_left(10, 130, 10, 110, "orca_bed_pct_left.svg"); - BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); + BedTextureInfo::TexturePart st_part1(9, 70, 12.5, 170, "bbl_bed_st_left.svg"); + BedTextureInfo::TexturePart st_part2(74, -10, 148, 12, "bbl_bed_st_bottom.svg"); + BedTextureInfo::TexturePart pc_part1(10, 130, 10, 110, "bbl_bed_pc_left.svg"); BedTextureInfo::TexturePart pc_part2(74, -10, 148, 12, "bbl_bed_pc_bottom.svg"); BedTextureInfo::TexturePart ep_part1(7.5, 90, 12.5, 150, "bbl_bed_ep_left.svg"); BedTextureInfo::TexturePart ep_part2(74, -10, 148, 12, "bbl_bed_ep_bottom.svg"); @@ -5511,6 +5513,8 @@ void PartPlateList::init_bed_type_info() bed_texture_info[i].reset(); bed_texture_info[i].parts.clear(); } + bed_texture_info[btSuperTack].parts.push_back(st_part1); + bed_texture_info[btSuperTack].parts.push_back(st_part2); bed_texture_info[btPC].parts.push_back(pc_part1); bed_texture_info[btPC].parts.push_back(pc_part2); bed_texture_info[btPCT].parts.push_back(pct_part_left); diff --git a/src/slic3r/GUI/ReleaseNote.cpp b/src/slic3r/GUI/ReleaseNote.cpp index 617397f32f1..331711a823c 100644 --- a/src/slic3r/GUI/ReleaseNote.cpp +++ b/src/slic3r/GUI/ReleaseNote.cpp @@ -502,21 +502,20 @@ std::vector UpdateVersionDialog::splitWithStl(std::string str,std:: void UpdateVersionDialog::update_version_info(wxString release_note, wxString version) { //bbs check whether the web display is used - bool use_web_link = false; - url_line = ""; - auto split_array = splitWithStl(release_note.ToStdString(), "###"); - - if (split_array.size() >= 3) { - for (auto i = 0; i < split_array.size(); i++) { - std::string url = split_array[i]; - if (std::strstr(url.c_str(), "http://") != NULL || std::strstr(url.c_str(), "https://") != NULL) { - use_web_link = true; - url_line = url; - break; - } - } - } - + bool use_web_link = false; + url_line = ""; + // Orca: not used in Orca Slicer + // auto split_array = splitWithStl(release_note.ToStdString(), "###"); + // if (split_array.size() >= 3) { + // for (auto i = 0; i < split_array.size(); i++) { + // std::string url = split_array[i]; + // if (std::strstr(url.c_str(), "http://") != NULL || std::strstr(url.c_str(), "https://") != NULL) { + // use_web_link = true; + // url_line = url; + // break; + // } + // } + // } if (use_web_link) { m_brand->Hide(); diff --git a/src/slic3r/GUI/SceneRaycaster.hpp b/src/slic3r/GUI/SceneRaycaster.hpp index 8102e20de4e..5b36efc0eac 100644 --- a/src/slic3r/GUI/SceneRaycaster.hpp +++ b/src/slic3r/GUI/SceneRaycaster.hpp @@ -21,6 +21,9 @@ class SceneRaycasterItem Transform3d m_trafo; public: + SceneRaycasterItem(int id, const MeshRaycaster& raycaster) + : m_id(id), m_raycaster(&raycaster), m_trafo(Transform3d::Identity()), m_use_back_faces(false) + {} SceneRaycasterItem(int id, const MeshRaycaster& raycaster, const Transform3d& trafo, bool use_back_faces = false) : m_id(id), m_raycaster(&raycaster), m_trafo(trafo), m_use_back_faces(use_back_faces) {} diff --git a/src/slic3r/GUI/Selection.cpp b/src/slic3r/GUI/Selection.cpp index 187ec03eb72..79feb0e1fcc 100644 --- a/src/slic3r/GUI/Selection.cpp +++ b/src/slic3r/GUI/Selection.cpp @@ -1720,6 +1720,66 @@ void Selection::translate(unsigned int object_idx, unsigned int instance_idx, co this->set_bounding_boxes_dirty(); } +void Selection::translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement) { + if (!m_valid) return; + + for (unsigned int i : m_list) { + GLVolume &v = *(*m_volumes)[i]; + if (v.object_idx() == (int) object_idx && v.instance_idx() == (int) instance_idx && v.volume_idx() == (int) volume_idx) + v.set_volume_offset(v.get_volume_offset() + displacement); + } + + this->set_bounding_boxes_dirty(); +} + +void Selection::rotate(unsigned int object_idx, unsigned int instance_idx, const Transform3d &overwrite_tran) +{ + if (!m_valid) return; + + for (unsigned int i : m_list) { + GLVolume &v = *(*m_volumes)[i]; + if (v.object_idx() == (int) object_idx && v.instance_idx() == (int) instance_idx) { + v.set_instance_transformation(overwrite_tran); + } + } + + std::set done; // prevent processing volumes twice + done.insert(m_list.begin(), m_list.end()); + for (unsigned int i : m_list) { + if (done.size() == m_volumes->size()) break; + + int object_idx = (*m_volumes)[i]->object_idx(); + if (object_idx >= 1000) continue; + + // Process unselected volumes of the object. + for (unsigned int j = 0; j < (unsigned int) m_volumes->size(); ++j) { + if (done.size() == m_volumes->size()) break; + + if (done.find(j) != done.end()) continue; + + GLVolume &v = *(*m_volumes)[j]; + if (v.object_idx() != object_idx || v.instance_idx() != (int) instance_idx) + continue; + + v.set_instance_transformation(overwrite_tran); + done.insert(j); + } + } + this->set_bounding_boxes_dirty(); +} +void Selection::rotate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Transform3d &overwrite_tran) +{ + if (!m_valid) return; + + for (unsigned int i : m_list) { + GLVolume &v = *(*m_volumes)[i]; + if (v.object_idx() == (int) object_idx && v.instance_idx() == (int) instance_idx && v.volume_idx() == (int) volume_idx) { + v.set_volume_transformation(overwrite_tran); + } + } + this->set_bounding_boxes_dirty(); +} + //BBS: add partplate related logic void Selection::notify_instance_update(int object_idx, int instance_idx) { diff --git a/src/slic3r/GUI/Selection.hpp b/src/slic3r/GUI/Selection.hpp index 8fc0f8bc66c..0e95b410098 100644 --- a/src/slic3r/GUI/Selection.hpp +++ b/src/slic3r/GUI/Selection.hpp @@ -344,6 +344,10 @@ class Selection void translate(unsigned int object_idx, const Vec3d& displacement); void translate(unsigned int object_idx, unsigned int instance_idx, const Vec3d& displacement); + void translate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Vec3d &displacement); + + void rotate(unsigned int object_idx, unsigned int instance_idx, const Transform3d &overwrite_tran); + void rotate(unsigned int object_idx, unsigned int instance_idx, unsigned int volume_idx, const Transform3d &overwrite_tran); //BBS: add partplate related logic void notify_instance_update(int object_idx, int instance_idx); // BBS diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8d5cbf1c7e5..9ec397be776 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1649,7 +1649,14 @@ void Tab::on_value_change(const std::string& opt_key, const boost::any& value) //Orca: sync filament num if it's a multi tool printer if (opt_key == "extruders_count" && !m_config->opt_bool("single_extruder_multi_material")){ auto num_extruder = boost::any_cast(value); - wxGetApp().preset_bundle->set_num_filaments(num_extruder); + int old_filament_size = wxGetApp().preset_bundle->filament_presets.size(); + std::vector new_colors; + for (int i = old_filament_size; i < num_extruder; ++i) { + wxColour new_col = Plater::get_next_color_for_filament(); + std::string new_color = new_col.GetAsString(wxC2S_HTML_SYNTAX).ToStdString(); + new_colors.push_back(new_color); + } + wxGetApp().preset_bundle->set_num_filaments(num_extruder, new_colors); wxGetApp().plater()->on_filaments_change(num_extruder); wxGetApp().get_tab(Preset::TYPE_PRINT)->update(); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); @@ -2116,19 +2123,19 @@ void TabPrint::build() optgroup->append_single_option_line("detect_thin_wall"); optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell"); - optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface"); optgroup->append_single_option_line("top_shell_layers"); optgroup->append_single_option_line("top_shell_thickness"); - optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface"); + optgroup->append_single_option_line("top_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface"); optgroup->append_single_option_line("bottom_shell_layers"); optgroup->append_single_option_line("bottom_shell_thickness"); + optgroup->append_single_option_line("bottom_surface_pattern", "fill-patterns#Infill of the top surface and bottom surface"); optgroup->append_single_option_line("top_bottom_infill_wall_overlap"); optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density"); optgroup->append_single_option_line("sparse_infill_pattern", "fill-patterns#infill types and their properties of sparse"); - optgroup->append_single_option_line("infill_anchor"); optgroup->append_single_option_line("infill_anchor_max"); + optgroup->append_single_option_line("infill_anchor"); optgroup->append_single_option_line("internal_solid_infill_pattern"); optgroup->append_single_option_line("gap_fill_target"); optgroup->append_single_option_line("filter_out_gap_fill"); @@ -2313,8 +2320,8 @@ void TabPrint::build() page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Skirt"), L"param_skirt"); - optgroup->append_single_option_line("skirt_type"); optgroup->append_single_option_line("skirt_loops"); + optgroup->append_single_option_line("skirt_type"); optgroup->append_single_option_line("min_skirt_length"); optgroup->append_single_option_line("skirt_distance"); optgroup->append_single_option_line("skirt_start_angle"); @@ -3328,7 +3335,12 @@ void TabFilament::build() optgroup->append_line(line); optgroup = page->new_optgroup(L("Bed temperature"), L"param_bed_temp"); - line = { L("Cool plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; + line = {L("Bambu Cool Plate SuperTack"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Bambu Cool Plate SuperTack")}; + line.append_option(optgroup->get_option("supertack_plate_temp_initial_layer")); + line.append_option(optgroup->get_option("supertack_plate_temp")); + optgroup->append_line(line); + + line = { L("Cool Plate / PLA Plate"), L("Bed temperature when cool plate is installed. Value 0 means the filament does not support to print on the Cool Plate") }; line.append_option(optgroup->get_option("cool_plate_temp_initial_layer")); line.append_option(optgroup->get_option("cool_plate_temp")); optgroup->append_line(line); @@ -3618,6 +3630,12 @@ void TabFilament::toggle_options() bool is_pellet_printer = cfg.opt_bool("pellet_modded_printer"); toggle_line("pellet_flow_coefficient", is_pellet_printer); toggle_line("filament_diameter", !is_pellet_printer); + + bool support_chamber_temp_control = this->m_preset_bundle->printers.get_edited_preset().config.opt_bool("support_chamber_temp_control"); + toggle_line("chamber_temperatures", support_chamber_temp_control); + + for (auto el : {"supertack_plate_temp", "supertack_plate_temp_initial_layer", "cool_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp", "eng_plate_temp_initial_layer", "textured_plate_temp", "textured_plate_temp_initial_layer"}) + toggle_line(el, is_BBL_printer); } if (m_active_page->title() == L("Setting Overrides")) update_filament_overrides_page(&cfg); @@ -4315,9 +4333,6 @@ if (is_marlin_flavor) optgroup = page->new_optgroup(L("Retraction"), L"param_retraction"); optgroup->append_single_option_line("retraction_length", "", extruder_idx); optgroup->append_single_option_line("retract_restart_extra", "", extruder_idx); - optgroup->append_single_option_line("z_hop", "", extruder_idx); - optgroup->append_single_option_line("z_hop_types", "", extruder_idx); - optgroup->append_single_option_line("travel_slope", "", extruder_idx); optgroup->append_single_option_line("retraction_speed", "", extruder_idx); optgroup->append_single_option_line("deretraction_speed", "", extruder_idx); optgroup->append_single_option_line("retraction_minimum_travel", "", extruder_idx); @@ -4327,10 +4342,13 @@ if (is_marlin_flavor) optgroup->append_single_option_line("wipe_distance", "", extruder_idx); optgroup->append_single_option_line("retract_before_wipe", "", extruder_idx); - optgroup = page->new_optgroup(L("Lift Z Enforcement"), L"param_extruder_lift_enforcement"); + optgroup = page->new_optgroup(L("Z-Hop"), L"param_extruder_lift_enforcement"); + optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx); + optgroup->append_single_option_line("z_hop_types", "", extruder_idx); + optgroup->append_single_option_line("z_hop", "", extruder_idx); + optgroup->append_single_option_line("travel_slope", "", extruder_idx); optgroup->append_single_option_line("retract_lift_above", "", extruder_idx); optgroup->append_single_option_line("retract_lift_below", "", extruder_idx); - optgroup->append_single_option_line("retract_lift_enforce", "", extruder_idx); optgroup = page->new_optgroup(L("Retraction when switching material"), L"param_retraction_material_change"); optgroup->append_single_option_line("retract_length_toolchange", "", extruder_idx); @@ -5097,8 +5115,14 @@ bool Tab::select_preset(std::string preset_name, bool delete_current /*=false*/, // Orca: update presets for the selected printer if (m_type == Preset::TYPE_PRINTER && wxGetApp().app_config->get_bool("remember_printer_config")) { - m_preset_bundle->update_selections(*wxGetApp().app_config); - wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); + m_preset_bundle->update_selections(*wxGetApp().app_config); + int extruders_count = m_preset_bundle->printers.get_edited_preset().config.opt("nozzle_diameter")->values.size(); + if (extruders_count > 1) { + // multi tool + wxGetApp().plater()->sidebar().on_filaments_change(extruders_count); + } else { + wxGetApp().plater()->sidebar().on_filaments_change(m_preset_bundle->filament_presets.size()); + } } load_current_preset(); @@ -6080,8 +6104,9 @@ void Page::update_visibility(ConfigOptionMode mode, bool update_contolls_visibil #ifdef __WXMSW__ if (!m_show) return; // BBS: fix field control position - wxTheApp->CallAfter([this]() { - for (auto group : m_optgroups) { + auto groups = this->m_optgroups; + wxTheApp->CallAfter([groups]() { + for (auto group : groups) { if (group->custom_ctrl) group->custom_ctrl->fixup_items_positions(); } }); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index b47f3c0389c..85b718d0b8c 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1664,17 +1664,19 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres // process changes of extruders count if (type == Preset::TYPE_PRINTER && old_pt == ptFFF && - old_config.opt("extruder_colour")->values.size() != new_config.opt("extruder_colour")->values.size()) { + old_config.opt("nozzle_diameter")->values.size() != new_config.opt("nozzle_diameter")->values.size()) { wxString local_label = _L("Extruders count"); - wxString old_val = from_u8((boost::format("%1%") % old_config.opt("extruder_colour")->values.size()).str()); - wxString new_val = from_u8((boost::format("%1%") % new_config.opt("extruder_colour")->values.size()).str()); + wxString old_val = from_u8((boost::format("%1%") % old_config.opt("nozzle_diameter")->values.size()).str()); + wxString new_val = from_u8((boost::format("%1%") % new_config.opt("nozzle_diameter")->values.size()).str()); //BBS: the page "General" changed to "Basic information" instead //m_tree->Append("extruders_count", type, _L("General"), _L("Capabilities"), local_label, old_val, new_val, category_icon_map.at("Basic information")); //m_tree->Append("extruders_count", type, _L("General"), _L("Capabilities"), local_label, old_val, new_val, category_icon_map.at("General")); - PresetItem pi = {type, "extruders_count", _L("General"), _L("Capabilities"), local_label, old_val, new_val}; - m_presetitems.push_back(pi); + if (old_val != new_val) { + PresetItem pi = {type, "extruders_count", _L("General"), _L("Capabilities"), local_label, old_val, new_val}; + m_presetitems.push_back(pi); + } } for (const std::string& opt_key : dirty_options) { @@ -1822,11 +1824,11 @@ FullCompareDialog::FullCompareDialog(const wxString& option_name, const wxString static PresetCollection* get_preset_collection(Preset::Type type, PresetBundle* preset_bundle = nullptr) { if (!preset_bundle) preset_bundle = wxGetApp().preset_bundle; - return type == Preset::Type::TYPE_PRINT ? &preset_bundle->prints : - type == Preset::Type::TYPE_SLA_PRINT ? &preset_bundle->sla_prints : + return type == Preset::Type::TYPE_PRINTER ? &preset_bundle->printers : type == Preset::Type::TYPE_FILAMENT ? &preset_bundle->filaments : type == Preset::Type::TYPE_SLA_MATERIAL ? &preset_bundle->sla_materials : - type == Preset::Type::TYPE_PRINTER ? &preset_bundle->printers : + type == Preset::Type::TYPE_PRINT ? &preset_bundle->prints : + type == Preset::Type::TYPE_SLA_PRINT ? &preset_bundle->sla_prints : nullptr; } @@ -1842,7 +1844,7 @@ void DiffPresetDialog::create_presets_sizer() { m_presets_sizer = new wxBoxSizer(wxVERTICAL); - for (auto new_type : { Preset::TYPE_PRINT, Preset::TYPE_SLA_PRINT, Preset::TYPE_FILAMENT, Preset::TYPE_SLA_MATERIAL, Preset::TYPE_PRINTER }) + for (auto new_type : { Preset::TYPE_PRINTER, Preset::TYPE_FILAMENT, Preset::TYPE_SLA_MATERIAL, Preset::TYPE_PRINT, Preset::TYPE_SLA_PRINT }) { const PresetCollection* collection = get_preset_collection(new_type); wxBoxSizer* sizer = new wxBoxSizer(wxHORIZONTAL); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.hpp b/src/slic3r/GUI/UnsavedChangesDialog.hpp index f91fa844f49..c6dbd205057 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.hpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.hpp @@ -312,6 +312,8 @@ class UnsavedChangesDialog : public DPIDialog { } }; +public: + int getUpdateItemCount() { return m_presetitems.size(); } private: std::vector m_presetitems;