Merge branch 'main' into enh-port-edit-gcode-dlg
11
README.md
|
@ -22,10 +22,15 @@ Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr
|
||||||
|
|
||||||
# How to install
|
# How to install
|
||||||
**Windows**:
|
**Windows**:
|
||||||
1. Install and run
|
1. Download the installer for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
|
||||||
|
- *For convenience there is also a portable build available.*
|
||||||
- *If you have troubles to run the build, you might need to install following runtimes:*
|
- *If you have troubles to run the build, you might need to install following runtimes:*
|
||||||
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
- [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
|
||||||
|
- [Details of this runtime](https://aka.ms/webview2)
|
||||||
|
- [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
|
||||||
- [vcredist2019_x64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
- [vcredist2019_x64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
|
||||||
|
- [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
|
||||||
|
- This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
|
||||||
|
|
||||||
**Mac**:
|
**Mac**:
|
||||||
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
|
||||||
|
@ -51,9 +56,12 @@ Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr
|
||||||
**Linux(Ubuntu)**:
|
**Linux(Ubuntu)**:
|
||||||
1. If you run into trouble to execute it, try this command in terminal:
|
1. If you run into trouble to execute it, try this command in terminal:
|
||||||
`chmod +x /path_to_appimage/OrcaSlicer_ubu64.AppImage`
|
`chmod +x /path_to_appimage/OrcaSlicer_ubu64.AppImage`
|
||||||
|
|
||||||
# How to compile
|
# How to compile
|
||||||
- Windows 64-bit
|
- Windows 64-bit
|
||||||
- Tools needed: Visual Studio 2019, Cmake, git, Strawberry Perl.
|
- Tools needed: Visual Studio 2019, Cmake, git, Strawberry Perl.
|
||||||
|
- You will require cmake version 3.14 or later, which is available [on their website](https://cmake.org/download/).
|
||||||
|
- Strawberry Perl is [available on their github repository](https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/).
|
||||||
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
|
- Run `build_release.bat` in `x64 Native Tools Command Prompt for VS 2019`
|
||||||
|
|
||||||
- Mac 64-bit
|
- Mac 64-bit
|
||||||
|
@ -61,6 +69,7 @@ Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr
|
||||||
- run `build_release_macos.sh`
|
- run `build_release_macos.sh`
|
||||||
|
|
||||||
- Ubuntu
|
- Ubuntu
|
||||||
|
- Dependencies **Will be auto installed with the shell script**: `libmspack-dev libgstreamerd-3-dev libsecret-1-dev libwebkit2gtk-4.0-dev libosmesa6-dev libssl-dev libcurl4-openssl-dev eglexternalplatform-dev libudev-dev libdbus-1-dev extra-cmake-modules libgtk2.0-dev libglew-dev libudev-dev libdbus-1-dev cmake git`
|
||||||
- run 'sudo ./BuildLinux.sh -u'
|
- run 'sudo ./BuildLinux.sh -u'
|
||||||
- run './BuildLinux.sh -dsir'
|
- run './BuildLinux.sh -dsir'
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ msgstr ""
|
||||||
"Project-Id-Version: OrcaSlicer\n"
|
"Project-Id-Version: OrcaSlicer\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-12-29 22:55+0800\n"
|
"POT-Creation-Date: 2023-12-29 22:55+0800\n"
|
||||||
"PO-Revision-Date: 2023-12-29 22:35+0300\n"
|
"PO-Revision-Date: 2024-01-01 00:01+0300\n"
|
||||||
"Last-Translator: Olcay ÖREN\n"
|
"Last-Translator: Olcay ÖREN\n"
|
||||||
"Language-Team: Türkçe\n"
|
"Language-Team: Türkçe\n"
|
||||||
"Language: tr_TR\n"
|
"Language: tr_TR\n"
|
||||||
|
@ -884,13 +884,13 @@ msgid "Unset italic"
|
||||||
msgstr "Yatık ayarı kaldır"
|
msgstr "Yatık ayarı kaldır"
|
||||||
|
|
||||||
msgid "Set italic"
|
msgid "Set italic"
|
||||||
msgstr "Yatık olarak ayarla"
|
msgstr "Yatık"
|
||||||
|
|
||||||
msgid "Unset bold"
|
msgid "Unset bold"
|
||||||
msgstr "Kalın ayarı kaldır"
|
msgstr "Kalın ayarı kaldır"
|
||||||
|
|
||||||
msgid "Set bold"
|
msgid "Set bold"
|
||||||
msgstr "Kalın olarak ayarla"
|
msgstr "Kalın"
|
||||||
|
|
||||||
msgid "Revert text size."
|
msgid "Revert text size."
|
||||||
msgstr "Metin boyutunu geri döndür."
|
msgstr "Metin boyutunu geri döndür."
|
||||||
|
@ -946,7 +946,7 @@ msgstr "Hizalamayı geri al."
|
||||||
|
|
||||||
#. TRN EmbossGizmo: font units
|
#. TRN EmbossGizmo: font units
|
||||||
msgid "points"
|
msgid "points"
|
||||||
msgstr "noktalar"
|
msgstr "punto"
|
||||||
|
|
||||||
msgid "Revert gap between characters"
|
msgid "Revert gap between characters"
|
||||||
msgstr "Karakterler arasındaki boşluğu geri döndür"
|
msgstr "Karakterler arasındaki boşluğu geri döndür"
|
||||||
|
@ -994,7 +994,7 @@ msgid "Select from True Type Collection."
|
||||||
msgstr "True Type Koleksiyonundan seçim yapın."
|
msgstr "True Type Koleksiyonundan seçim yapın."
|
||||||
|
|
||||||
msgid "Set text to face camera"
|
msgid "Set text to face camera"
|
||||||
msgstr "Metni yüz kamerasına ayarla"
|
msgstr "Metni bana çevir"
|
||||||
|
|
||||||
msgid "Orient the text towards the camera."
|
msgid "Orient the text towards the camera."
|
||||||
msgstr "Metni kameraya doğru yönlendirin."
|
msgstr "Metni kameraya doğru yönlendirin."
|
||||||
|
@ -1048,7 +1048,7 @@ msgstr "Satır boşluğu"
|
||||||
|
|
||||||
#. TRN - Input label. Be short as possible
|
#. TRN - Input label. Be short as possible
|
||||||
msgid "Boldness"
|
msgid "Boldness"
|
||||||
msgstr "Boldness"
|
msgstr "Kalınlık"
|
||||||
|
|
||||||
#. TRN - Input label. Be short as possible
|
#. TRN - Input label. Be short as possible
|
||||||
#. Like Font italic
|
#. Like Font italic
|
||||||
|
@ -1269,7 +1269,7 @@ msgid "Center of circle"
|
||||||
msgstr "Çemberin merkezi"
|
msgstr "Çemberin merkezi"
|
||||||
|
|
||||||
msgid "ShiftLeft mouse button"
|
msgid "ShiftLeft mouse button"
|
||||||
msgstr "Shift Sol fare düğmesi"
|
msgstr "Shift + Sol fare düğmesi"
|
||||||
|
|
||||||
msgid "Select feature"
|
msgid "Select feature"
|
||||||
msgstr "Özellik seçin"
|
msgstr "Özellik seçin"
|
||||||
|
@ -1278,10 +1278,10 @@ msgid "Select point"
|
||||||
msgstr "Nokta seç"
|
msgstr "Nokta seç"
|
||||||
|
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Sil"
|
msgstr "Delete"
|
||||||
|
|
||||||
msgid "Restart selection"
|
msgid "Restart selection"
|
||||||
msgstr "Seçimi yeniden başlat"
|
msgstr "Seçimi sıfırla"
|
||||||
|
|
||||||
msgid "Esc"
|
msgid "Esc"
|
||||||
msgstr "Esc"
|
msgstr "Esc"
|
||||||
|
@ -13831,7 +13831,7 @@ msgid "For more information, please check out Wiki"
|
||||||
msgstr "Daha fazla bilgi için lütfen Wiki'ye göz atın"
|
msgstr "Daha fazla bilgi için lütfen Wiki'ye göz atın"
|
||||||
|
|
||||||
msgid "Collapse"
|
msgid "Collapse"
|
||||||
msgstr "Çökme"
|
msgstr "Daralt"
|
||||||
|
|
||||||
msgid "Daily Tips"
|
msgid "Daily Tips"
|
||||||
msgstr "Günlük İpuçları"
|
msgstr "Günlük İpuçları"
|
||||||
|
|
|
@ -23,16 +23,16 @@ msgid "Supports Painting"
|
||||||
msgstr "Малювання підтримки"
|
msgstr "Малювання підтримки"
|
||||||
|
|
||||||
msgid "Alt + Mouse wheel"
|
msgid "Alt + Mouse wheel"
|
||||||
msgstr "Alt + Коліщатко миші"
|
msgstr "Alt + коліщатко миші"
|
||||||
|
|
||||||
msgid "Section view"
|
msgid "Section view"
|
||||||
msgstr "Вигляд у розрізі"
|
msgstr "Вигляд у розрізі"
|
||||||
|
|
||||||
msgid "Reset direction"
|
msgid "Reset direction"
|
||||||
msgstr "Напрямок скидання"
|
msgstr "Скинути напрямок"
|
||||||
|
|
||||||
msgid "Ctrl + Mouse wheel"
|
msgid "Ctrl + Mouse wheel"
|
||||||
msgstr "Ctrl + Коліщатко миші"
|
msgstr "Ctrl + коліщатко миші"
|
||||||
|
|
||||||
msgid "Pen size"
|
msgid "Pen size"
|
||||||
msgstr "Розмір пера"
|
msgstr "Розмір пера"
|
||||||
|
@ -53,7 +53,7 @@ msgid "Shift + Left mouse button"
|
||||||
msgstr "Shift + Ліва кнопка миші"
|
msgstr "Shift + Ліва кнопка миші"
|
||||||
|
|
||||||
msgid "Erase"
|
msgid "Erase"
|
||||||
msgstr "Ластик"
|
msgstr "Гумка"
|
||||||
|
|
||||||
msgid "Erase all painting"
|
msgid "Erase all painting"
|
||||||
msgstr "Стерти всі малюнки"
|
msgstr "Стерти всі малюнки"
|
||||||
|
@ -74,13 +74,13 @@ msgid "Tool type"
|
||||||
msgstr "Тип інструменту"
|
msgstr "Тип інструменту"
|
||||||
|
|
||||||
msgid "Smart fill angle"
|
msgid "Smart fill angle"
|
||||||
msgstr "Розумний кут заливки"
|
msgstr "Розумний кут заповнення"
|
||||||
|
|
||||||
msgid "On overhangs only"
|
msgid "On overhangs only"
|
||||||
msgstr "Тільки на звисах"
|
msgstr "Тільки на виступах"
|
||||||
|
|
||||||
msgid "Auto support threshold angle: "
|
msgid "Auto support threshold angle: "
|
||||||
msgstr "Кут порога автоматичної підтримки: "
|
msgstr "Пороговий кут автоматичної підтримки: "
|
||||||
|
|
||||||
msgid "Circle"
|
msgid "Circle"
|
||||||
msgstr "Коло"
|
msgstr "Коло"
|
||||||
|
@ -118,8 +118,8 @@ msgid ""
|
||||||
"Filament count exceeds the maximum number that painting tool supports. only "
|
"Filament count exceeds the maximum number that painting tool supports. only "
|
||||||
"the first %1% filaments will be available in painting tool."
|
"the first %1% filaments will be available in painting tool."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Кількість філаменту перевищує максимальну кількість, яка підтримуєінструмент "
|
"Кількість філаменту перевищує максимальну кількість, яку підтримує інструмент "
|
||||||
"для фарбування. тільки перші %1% ниток будуть доступні у засобі забарвлення."
|
"малювання. Лише перші %1% філаменту будуть доступні в інструменті малювання."
|
||||||
|
|
||||||
msgid "Color Painting"
|
msgid "Color Painting"
|
||||||
msgstr "Кольорове малювання"
|
msgstr "Кольорове малювання"
|
||||||
|
@ -149,34 +149,34 @@ msgid "Brush"
|
||||||
msgstr "Пензель"
|
msgstr "Пензель"
|
||||||
|
|
||||||
msgid "Smart fill"
|
msgid "Smart fill"
|
||||||
msgstr "Інтелектуальне заливання"
|
msgstr "Інтелектуальне заповнення"
|
||||||
|
|
||||||
msgid "Bucket fill"
|
msgid "Bucket fill"
|
||||||
msgstr "Заливка відра"
|
msgstr "Заповнення відром"
|
||||||
|
|
||||||
msgid "Height range"
|
msgid "Height range"
|
||||||
msgstr "Діапазон висот"
|
msgstr "Діапазон висот"
|
||||||
|
|
||||||
msgid "Alt + Shift + Enter"
|
msgid "Alt + Shift + Enter"
|
||||||
msgstr ""
|
msgstr "Alt + Shift + Enter"
|
||||||
|
|
||||||
msgid "Toggle Wireframe"
|
msgid "Toggle Wireframe"
|
||||||
msgstr "Переключення каркасу"
|
msgstr "Переключення каркасу"
|
||||||
|
|
||||||
msgid "Shortcut Key "
|
msgid "Shortcut Key "
|
||||||
msgstr "Поєднання клавіш "
|
msgstr "Комбінація клавіш "
|
||||||
|
|
||||||
msgid "Triangle"
|
msgid "Triangle"
|
||||||
msgstr "Трикутник"
|
msgstr "Трикутник"
|
||||||
|
|
||||||
msgid "Height Range"
|
msgid "Height Range"
|
||||||
msgstr "Переключити каркас"
|
msgstr "Діапазон висот"
|
||||||
|
|
||||||
msgid "Vertical"
|
msgid "Vertical"
|
||||||
msgstr ""
|
msgstr "Вертикальний"
|
||||||
|
|
||||||
msgid "Horizontal"
|
msgid "Horizontal"
|
||||||
msgstr ""
|
msgstr "Горизонтальний"
|
||||||
|
|
||||||
msgid "Remove painted color"
|
msgid "Remove painted color"
|
||||||
msgstr "Видалити зафарбований колір"
|
msgstr "Видалити зафарбований колір"
|
||||||
|
@ -201,7 +201,7 @@ msgid "Optimize orientation"
|
||||||
msgstr "Оптимізувати орієнтацію"
|
msgstr "Оптимізувати орієнтацію"
|
||||||
|
|
||||||
msgid "Apply"
|
msgid "Apply"
|
||||||
msgstr "Готово"
|
msgstr "Застосувати"
|
||||||
|
|
||||||
msgid "Scale"
|
msgid "Scale"
|
||||||
msgstr "Масштаб"
|
msgstr "Масштаб"
|
||||||
|
@ -475,7 +475,7 @@ msgid "Keep"
|
||||||
msgstr "Тримати"
|
msgstr "Тримати"
|
||||||
|
|
||||||
msgid "Flip"
|
msgid "Flip"
|
||||||
msgstr "Переверніть"
|
msgstr "Перевернути"
|
||||||
|
|
||||||
msgid "After cut"
|
msgid "After cut"
|
||||||
msgstr "Після вирізування"
|
msgstr "Після вирізування"
|
||||||
|
@ -790,7 +790,7 @@ msgid "OK"
|
||||||
msgstr "ОК"
|
msgstr "ОК"
|
||||||
|
|
||||||
msgid "Rename style"
|
msgid "Rename style"
|
||||||
msgstr ""
|
msgstr "Перейменувати стиль"
|
||||||
|
|
||||||
msgid "Rename current style."
|
msgid "Rename current style."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -818,13 +818,13 @@ msgid "Only valid font can be added to style."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Add style to my list."
|
msgid "Add style to my list."
|
||||||
msgstr ""
|
msgstr "Додати стиль до мого списку."
|
||||||
|
|
||||||
msgid "Save as new style."
|
msgid "Save as new style."
|
||||||
msgstr ""
|
msgstr "Зберегти як новий стиль."
|
||||||
|
|
||||||
msgid "Remove style"
|
msgid "Remove style"
|
||||||
msgstr ""
|
msgstr "Видалити стиль"
|
||||||
|
|
||||||
msgid "Can't remove the last existing style."
|
msgid "Can't remove the last existing style."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1241,7 +1241,7 @@ msgid "Edge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Plane"
|
msgid "Plane"
|
||||||
msgstr ""
|
msgstr "Площина"
|
||||||
|
|
||||||
msgid "Point on edge"
|
msgid "Point on edge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -1809,13 +1809,13 @@ msgid "Mirror object"
|
||||||
msgstr "Дзеркальний об'єкт"
|
msgstr "Дзеркальний об'єкт"
|
||||||
|
|
||||||
msgid "Edit text"
|
msgid "Edit text"
|
||||||
msgstr ""
|
msgstr "Редагувати текст"
|
||||||
|
|
||||||
msgid "Ability to change text, font, size, ..."
|
msgid "Ability to change text, font, size, ..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Edit SVG"
|
msgid "Edit SVG"
|
||||||
msgstr ""
|
msgstr "Редагувати SVG"
|
||||||
|
|
||||||
msgid "Change SVG source file, projection, size, ..."
|
msgid "Change SVG source file, projection, size, ..."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -2995,7 +2995,7 @@ msgid ""
|
||||||
"The AMS will automatically read the filament information when inserting a "
|
"The AMS will automatically read the filament information when inserting a "
|
||||||
"new Bambu Lab filament. This takes about 20 seconds."
|
"new Bambu Lab filament. This takes about 20 seconds."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"AMS автоматично зчитує інформацію про філаментає при вставці новогоФіламент "
|
"AMS автоматично зчитає інформацію про філамент при вставці нового філаменту "
|
||||||
"Bambu Lab. Це займає близько 20 секунд."
|
"Bambu Lab. Це займає близько 20 секунд."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
|
@ -3009,11 +3009,11 @@ msgid ""
|
||||||
"When inserting a new filament, the AMS will not automatically read its "
|
"When inserting a new filament, the AMS will not automatically read its "
|
||||||
"information, leaving it blank for you to enter manually."
|
"information, leaving it blank for you to enter manually."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"При вставці нової нитки AMS не автоматично зчитуватиме її\n"
|
"При вставці новогр філаменту, AMS не ьуде автоматично зчитувати \n"
|
||||||
"інформацію, залишивши поле порожнім для введення вручну."
|
"інформацію про нього, залишивши поле порожнім для введення вручну."
|
||||||
|
|
||||||
msgid "Power on update"
|
msgid "Power on update"
|
||||||
msgstr "Оновлення під час увімкнення"
|
msgstr "Оновлення після ввімкнення"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"The AMS will automatically read the information of inserted filament on "
|
"The AMS will automatically read the information of inserted filament on "
|
||||||
|
@ -3028,9 +3028,9 @@ msgid ""
|
||||||
"during startup and will continue to use the information recorded before the "
|
"during startup and will continue to use the information recorded before the "
|
||||||
"last shutdown."
|
"last shutdown."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"AMS не буде автоматично зчитувати інформацію з вставленої нитки.\n"
|
"AMS не буде автоматично зчитувати інформацію про вставлений філамент\n"
|
||||||
"під час запуску і продовжуватиме використовувати інформацію, записану до\n"
|
"під час запуску і продовжуватиме використовувати інформацію, записану до\n"
|
||||||
"останнє вимкнення."
|
"останнтого вимкнення."
|
||||||
|
|
||||||
msgid "Update remaining capacity"
|
msgid "Update remaining capacity"
|
||||||
msgstr "Оновити ємність, що залишилася"
|
msgstr "Оновити ємність, що залишилася"
|
||||||
|
@ -3683,7 +3683,7 @@ msgid "Total"
|
||||||
msgstr "Загальний"
|
msgstr "Загальний"
|
||||||
|
|
||||||
msgid "Tower"
|
msgid "Tower"
|
||||||
msgstr ""
|
msgstr "Вежа"
|
||||||
|
|
||||||
msgid "Total Estimation"
|
msgid "Total Estimation"
|
||||||
msgstr "Загальна оцінка"
|
msgstr "Загальна оцінка"
|
||||||
|
@ -3692,7 +3692,7 @@ msgid "Total time"
|
||||||
msgstr "Загальний час"
|
msgstr "Загальний час"
|
||||||
|
|
||||||
msgid "Total cost"
|
msgid "Total cost"
|
||||||
msgstr ""
|
msgstr "Загальна вартість"
|
||||||
|
|
||||||
msgid "up to"
|
msgid "up to"
|
||||||
msgstr "аж до"
|
msgstr "аж до"
|
||||||
|
@ -4067,7 +4067,7 @@ msgid "Application is closing"
|
||||||
msgstr "Додаток закривається"
|
msgstr "Додаток закривається"
|
||||||
|
|
||||||
msgid "Closing Application while some presets are modified."
|
msgid "Closing Application while some presets are modified."
|
||||||
msgstr "Закриття програми при зміні деяких пресетів."
|
msgstr "Закриття програми під чвс зміни деяких налаштувань."
|
||||||
|
|
||||||
msgid "Logging"
|
msgid "Logging"
|
||||||
msgstr "Ведення журналу"
|
msgstr "Ведення журналу"
|
||||||
|
@ -4082,7 +4082,7 @@ msgid "Device"
|
||||||
msgstr "Пристрій"
|
msgstr "Пристрій"
|
||||||
|
|
||||||
msgid "Project"
|
msgid "Project"
|
||||||
msgstr "Проект"
|
msgstr "Проєкт"
|
||||||
|
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Так"
|
msgstr "Так"
|
||||||
|
@ -4091,7 +4091,7 @@ msgid "No"
|
||||||
msgstr "Ні"
|
msgstr "Ні"
|
||||||
|
|
||||||
msgid "will be closed before creating a new model. Do you want to continue?"
|
msgid "will be closed before creating a new model. Do you want to continue?"
|
||||||
msgstr "буде закрито перед створенням нової моделі. Ви хочете продовжувати?"
|
msgstr "буде закрито перед створенням нової моделі. Ви хочете продовжити?"
|
||||||
|
|
||||||
msgid "Slice plate"
|
msgid "Slice plate"
|
||||||
msgstr "Нарізати моделі"
|
msgstr "Нарізати моделі"
|
||||||
|
@ -4929,7 +4929,7 @@ msgid "Rate the Print Profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Comment"
|
msgid "Comment"
|
||||||
msgstr ""
|
msgstr "Коментувати"
|
||||||
|
|
||||||
msgid "Rate this print"
|
msgid "Rate this print"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -5213,10 +5213,10 @@ msgstr "Верх"
|
||||||
|
|
||||||
msgctxt "Layers"
|
msgctxt "Layers"
|
||||||
msgid "Bottom"
|
msgid "Bottom"
|
||||||
msgstr "Ніз"
|
msgstr "Низ"
|
||||||
|
|
||||||
msgid "Enable AI monitoring of printing"
|
msgid "Enable AI monitoring of printing"
|
||||||
msgstr "Увімкнути ІІ-моніторинг друку"
|
msgstr "Увімкнути ШІ-моніторинг друку"
|
||||||
|
|
||||||
msgid "Sensitivity of pausing is"
|
msgid "Sensitivity of pausing is"
|
||||||
msgstr "Чутливість паузи"
|
msgstr "Чутливість паузи"
|
||||||
|
@ -5771,20 +5771,20 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Private protection"
|
msgid "Private protection"
|
||||||
msgstr ""
|
msgstr "Приватний захист"
|
||||||
|
|
||||||
msgid "Is the printer ready? Is the print sheet in place, empty and clean?"
|
msgid "Is the printer ready? Is the print sheet in place, empty and clean?"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Upload and Print"
|
msgid "Upload and Print"
|
||||||
msgstr ""
|
msgstr "Завантажити і друкувати"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Print By Object: \n"
|
"Print By Object: \n"
|
||||||
"Suggest to use auto-arrange to avoid collisions when printing."
|
"Suggest to use auto-arrange to avoid collisions when printing."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Друк об'єктом: \n"
|
"Друк за об'єктом: \n"
|
||||||
"Запропонуйте використовувати автоматичне розташування, щоб уникнути "
|
"Рекомендовано використовувати автоматичне розташування, щоб уникнути "
|
||||||
"колізій під час друку."
|
"колізій під час друку."
|
||||||
|
|
||||||
msgid "Send G-code"
|
msgid "Send G-code"
|
||||||
|
@ -6468,7 +6468,7 @@ msgid ""
|
||||||
"printer firmware to support AMS slot assignment."
|
"printer firmware to support AMS slot assignment."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Філамент %s не відповідає філаменту в слоті AMS %s. Будь ласка, оновіть "
|
"Філамент %s не відповідає філаменту в слоті AMS %s. Будь ласка, оновіть "
|
||||||
"Прошивка принтера для підтримки призначення слотів AMS."
|
"прошивку принтера для підтримки перепризначення слотів AMS."
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Filament does not match the filament in AMS slot. Please update the printer "
|
"Filament does not match the filament in AMS slot. Please update the printer "
|
||||||
|
@ -6484,10 +6484,10 @@ msgstr ""
|
||||||
"Прошивка принтера підтримує лише послідовне зіставлення філаменту => AMS слот."
|
"Прошивка принтера підтримує лише послідовне зіставлення філаменту => AMS слот."
|
||||||
|
|
||||||
msgid "An SD card needs to be inserted before printing."
|
msgid "An SD card needs to be inserted before printing."
|
||||||
msgstr "Перед печаткою необхідно вставити картку SD."
|
msgstr "Перед початком друку необхідно вставити картку SD."
|
||||||
|
|
||||||
msgid "The selected printer is incompatible with the chosen printer presets."
|
msgid "The selected printer is incompatible with the chosen printer presets."
|
||||||
msgstr ""
|
msgstr "Вибраний принтер несумісний зі встановленими налаштуваннями."
|
||||||
|
|
||||||
msgid "An SD card needs to be inserted to record timelapse."
|
msgid "An SD card needs to be inserted to record timelapse."
|
||||||
msgstr "SD-карта повинна бути вставлена для запису таймлапсу."
|
msgstr "SD-карта повинна бути вставлена для запису таймлапсу."
|
||||||
|
@ -6644,7 +6644,7 @@ msgid "Would you like to log in this printer with current account?"
|
||||||
msgstr "Ви хочете увійти до цього принтера з поточним обліковим записом?"
|
msgstr "Ви хочете увійти до цього принтера з поточним обліковим записом?"
|
||||||
|
|
||||||
msgid "Check the reason"
|
msgid "Check the reason"
|
||||||
msgstr ""
|
msgstr "Перевірте причину"
|
||||||
|
|
||||||
msgid "Read and accept"
|
msgid "Read and accept"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -6893,7 +6893,7 @@ msgid "Post-processing Scripts"
|
||||||
msgstr "Сценарії постобробки"
|
msgstr "Сценарії постобробки"
|
||||||
|
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr "Примітки"
|
||||||
|
|
||||||
msgid "Frequent"
|
msgid "Frequent"
|
||||||
msgstr "Частий"
|
msgstr "Частий"
|
||||||
|
@ -7039,10 +7039,10 @@ msgid "Complete print"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "Filament start G-code"
|
msgid "Filament start G-code"
|
||||||
msgstr "G-код початку Філаменту"
|
msgstr "G-код початку філаменту"
|
||||||
|
|
||||||
msgid "Filament end G-code"
|
msgid "Filament end G-code"
|
||||||
msgstr "G-код кінця Філаменту"
|
msgstr "G-код кінця філаменту"
|
||||||
|
|
||||||
msgid "Multimaterial"
|
msgid "Multimaterial"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -10571,7 +10571,7 @@ msgstr ""
|
||||||
"конфігурації шляхом читання змінних середовища."
|
"конфігурації шляхом читання змінних середовища."
|
||||||
|
|
||||||
msgid "Printer notes"
|
msgid "Printer notes"
|
||||||
msgstr ""
|
msgstr "Нотатки для принтера"
|
||||||
|
|
||||||
msgid "You can put your notes regarding the printer here."
|
msgid "You can put your notes regarding the printer here."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
"compatible_printers": [
|
"compatible_printers": [
|
||||||
"Bambu Lab X1 Carbon 0.8 nozzle",
|
"Bambu Lab X1 Carbon 0.8 nozzle",
|
||||||
"Bambu Lab X1 0.8 nozzle",
|
"Bambu Lab X1 0.8 nozzle",
|
||||||
"Bambu Lab P1S 0.6 nozzle",
|
"Bambu Lab P1S 0.8 nozzle",
|
||||||
"Bambu Lab X1E 0.8 nozzle"
|
"Bambu Lab X1E 0.8 nozzle"
|
||||||
]
|
]
|
||||||
}
|
}
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 10 KiB |
|
@ -110,12 +110,17 @@
|
||||||
"0.1"
|
"0.1"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
|
"manual_filament_change": "1",
|
||||||
"change_filament_gcode": "PAUSE",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Creality Generic PLA @Ender-3V3-all"
|
"Creality Generic PLA @Ender-3V3-all"
|
||||||
],
|
],
|
||||||
"machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nG1 X-2.0 Y20 Z0.28 F5000.0 ;Move to start position \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 X-2.0 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-1.7 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-1.7 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800",
|
"machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nG1 X-2.0 Y20 Z0.28 F5000.0 ;Move to start position \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 X-2.0 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-1.7 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-1.7 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800",
|
||||||
"machine_end_gcode": "G91 ;Relative positionning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z5 ;Raise Z more \nG90 ;Absolute positionning \n \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \n \nM84 X Y E ;Disable all steppers but Z",
|
"machine_end_gcode": "G91 ;Relative positionning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z5 ;Raise Z more \nG90 ;Absolute positionning \n \nG1 X2 Y218 F3000 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \n \nM84 X Y E ;Disable all steppers but Z",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -107,6 +107,7 @@
|
||||||
"30"
|
"30"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
|
"manual_filament_change": "1",
|
||||||
"change_filament_gcode": "M600",
|
"change_filament_gcode": "M600",
|
||||||
"machine_pause_gcode": "M25",
|
"machine_pause_gcode": "M25",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
|
@ -114,5 +115,9 @@
|
||||||
],
|
],
|
||||||
"machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \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 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800",
|
"machine_start_gcode": "M220 S100 ;Reset Feedrate \nM221 S100 ;Reset Flowrate \n \nM140 S[bed_temperature_initial_layer_single] ;Set final bed temp \nG28 ;Home \n \nG92 E0 ;Reset Extruder \nG1 Z2.0 F3000 ;Move Z Axis up \nM104 S[nozzle_temperature_initial_layer] ;Set final nozzle temp \nG1 X-2.1 Y20 Z0.28 F5000.0 ;Move to start position \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 X-2.1 Y145.0 Z0.28 F1500.0 E15 ;Draw the first line \nG1 X-2.4 Y145.0 Z0.28 F5000.0 ;Move to side a little \nG1 X-2.4 Y20 Z0.28 F1500.0 E30 ;Draw the second line \nG92 E0 ;Reset Extruder \nG1 E-1.0000 F1800 ;Retract a bit \nG1 Z2.0 F3000 ;Move Z Axis up \nG1 E0.0000 F1800",
|
||||||
"machine_end_gcode": "G91 ;Relative positionning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z10 ;Raise Z more \nG90 ;Absolute positionning \n \nG1 X0 Y0 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \n \nM84 X Y E ;Disable all steppers but Z",
|
"machine_end_gcode": "G91 ;Relative positionning \nG1 E-2 F2700 ;Retract a bit \nG1 E-2 Z0.2 F2400 ;Retract and raise Z \nG1 X5 Y5 F3000 ;Wipe out \nG1 Z10 ;Raise Z more \nG90 ;Absolute positionning \n \nG1 X0 Y0 ;Present print \nM106 S0 ;Turn-off fan \nM104 S0 ;Turn-off hotend \nM140 S0 ;Turn-off bed \n \nM84 X Y E ;Disable all steppers but Z",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -36,13 +36,22 @@
|
||||||
"retract_before_wipe": ["70%"],
|
"retract_before_wipe": ["70%"],
|
||||||
"retraction_length": ["0.5"],
|
"retraction_length": ["0.5"],
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,12 +38,20 @@
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
"retraction_speed": ["40"],
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,13 +36,22 @@
|
||||||
"retract_before_wipe": ["70%"],
|
"retract_before_wipe": ["70%"],
|
||||||
"retraction_length": ["0.5"],
|
"retraction_length": ["0.5"],
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,13 +37,22 @@
|
||||||
"retract_before_wipe": ["70%"],
|
"retract_before_wipe": ["70%"],
|
||||||
"retraction_length": ["0.5"],
|
"retraction_length": ["0.5"],
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,13 +37,22 @@
|
||||||
"retract_before_wipe": ["70%"],
|
"retract_before_wipe": ["70%"],
|
||||||
"retraction_length": ["0.5"],
|
"retraction_length": ["0.5"],
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,13 +37,22 @@
|
||||||
"retract_before_wipe": ["70%"],
|
"retract_before_wipe": ["70%"],
|
||||||
"retraction_length": ["0.5"],
|
"retraction_length": ["0.5"],
|
||||||
"retract_length_toolchange": ["1"],
|
"retract_length_toolchange": ["1"],
|
||||||
|
"retraction_speed": ["40"],
|
||||||
"deretraction_speed": ["40"],
|
"deretraction_speed": ["40"],
|
||||||
"z_hop": ["0.4"],
|
"extruder_clearance_height_to_lid": "101",
|
||||||
|
"extruder_clearance_height_to_rod": "45",
|
||||||
|
"extruder_clearance_radius": "45",
|
||||||
|
"z_hop": ["0.2"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"manual_filament_change": "1",
|
||||||
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "PAUSE",
|
"machine_pause_gcode": "PAUSE",
|
||||||
"default_filament_profile": ["Creality Generic PLA"],
|
"default_filament_profile": ["Creality Generic PLA"],
|
||||||
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
"machine_start_gcode": "M140 S0\nM104 S0 \nSTART_PRINT EXTRUDER_TEMP=[nozzle_temperature_initial_layer] BED_TEMP=[bed_temperature_initial_layer_single]",
|
||||||
"machine_end_gcode": "END_PRINT",
|
"machine_end_gcode": "END_PRINT",
|
||||||
"scan_first_layer": "0"
|
"scan_first_layer": "0",
|
||||||
|
"thumbnails": [
|
||||||
|
"96x96",
|
||||||
|
"300x300"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,8 @@
|
||||||
"1"
|
"1"
|
||||||
],
|
],
|
||||||
"z_hop_types": "Normal Lift",
|
"z_hop_types": "Normal Lift",
|
||||||
|
"support_air_filtration": "0",
|
||||||
|
"support_chamber_temp_control": "0",
|
||||||
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
|
||||||
"default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle",
|
"default_print_profile": "0.16mm Optimal @Bambu Lab X1 Carbon 0.4 nozzle",
|
||||||
"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_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",
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
"support_interface_spacing": "0.5",
|
"support_interface_spacing": "0.5",
|
||||||
"support_interface_speed": "100%",
|
"support_interface_speed": "100%",
|
||||||
"support_interface_pattern": "auto",
|
"support_interface_pattern": "auto",
|
||||||
"support_base_pattern": "default",
|
"support_base_pattern": "rectilinear",
|
||||||
"support_base_pattern_spacing": "2.5",
|
"support_base_pattern_spacing": "2.5",
|
||||||
"support_speed": "50",
|
"support_speed": "50",
|
||||||
"support_threshold_angle": "25",
|
"support_threshold_angle": "25",
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
"support_interface_spacing": "0.5",
|
"support_interface_spacing": "0.5",
|
||||||
"support_interface_speed": "100%",
|
"support_interface_speed": "100%",
|
||||||
"support_interface_pattern": "auto",
|
"support_interface_pattern": "auto",
|
||||||
"support_base_pattern": "default",
|
"support_base_pattern": "rectilinear",
|
||||||
"support_base_pattern_spacing": "2.5",
|
"support_base_pattern_spacing": "2.5",
|
||||||
"support_speed": "50",
|
"support_speed": "50",
|
||||||
"support_threshold_angle": "25",
|
"support_threshold_angle": "25",
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
"support_interface_spacing": "0.5",
|
"support_interface_spacing": "0.5",
|
||||||
"support_interface_speed": "100%",
|
"support_interface_speed": "100%",
|
||||||
"support_interface_pattern": "auto",
|
"support_interface_pattern": "auto",
|
||||||
"support_base_pattern": "default",
|
"support_base_pattern": "rectilinear",
|
||||||
"support_base_pattern_spacing": "2.5",
|
"support_base_pattern_spacing": "2.5",
|
||||||
"support_speed": "50",
|
"support_speed": "50",
|
||||||
"support_threshold_angle": "25",
|
"support_threshold_angle": "25",
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.2 nozzle"
|
"Elegoo Generic PLA @0.2 nozzle"
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.4 nozzle"
|
"Elegoo Generic PLA @0.4 nozzle"
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.6 nozzle"
|
"Elegoo Generic PLA @0.6 nozzle"
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.8 nozzle"
|
"Elegoo Generic PLA @0.8 nozzle"
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.2 nozzle"
|
"Elegoo Generic PLA @0.2 nozzle"
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.4 nozzle"
|
"Elegoo Generic PLA @0.4 nozzle"
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.6 nozzle"
|
"Elegoo Generic PLA @0.6 nozzle"
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.8 nozzle"
|
"Elegoo Generic PLA @0.8 nozzle"
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.2 nozzle"
|
"Elegoo Generic PLA @0.2 nozzle"
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.4 nozzle"
|
"Elegoo Generic PLA @0.4 nozzle"
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.6 nozzle"
|
"Elegoo Generic PLA @0.6 nozzle"
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
"wipe_distance": ["1"],
|
"wipe_distance": ["1"],
|
||||||
"z_hop": ["0.4"],
|
"z_hop": ["0.4"],
|
||||||
"z_hop_types": ["Normal Lift"],
|
"z_hop_types": ["Normal Lift"],
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.8 nozzle"
|
"Elegoo Generic PLA @0.8 nozzle"
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.2 nozzle"
|
"Elegoo Generic PLA @0.2 nozzle"
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
"45"
|
"45"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA @0.4 nozzle"
|
"Elegoo Generic PLA @0.4 nozzle"
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
"retract_length_toolchange": ["2"],
|
"retract_length_toolchange": ["2"],
|
||||||
"deretraction_speed": ["45"],
|
"deretraction_speed": ["45"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": ["Elegoo Generic PLA @0.6 nozzle"],
|
"default_filament_profile": ["Elegoo Generic PLA @0.6 nozzle"],
|
||||||
"machine_start_gcode": "M413 S0 ; disable Power Loss Recovery\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\n;G29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\n\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_start_gcode": "M413 S0 ; disable Power Loss Recovery\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\n;G29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\n\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",
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
"retract_length_toolchange": ["2"],
|
"retract_length_toolchange": ["2"],
|
||||||
"deretraction_speed": ["45"],
|
"deretraction_speed": ["45"],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": ["Elegoo Generic PLA @0.8 nozzle"],
|
"default_filament_profile": ["Elegoo Generic PLA @0.8 nozzle"],
|
||||||
"machine_start_gcode": "M413 S0 ; disable Power Loss Recovery\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\n;G29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\n\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_start_gcode": "M413 S0 ; disable Power Loss Recovery\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S120 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set final bed temp\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\n;G29 ; run abl mesh\nM420 S1 ; load mesh\nG1 Z50 F240\nG1 X2 Y10 F3000\n\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",
|
||||||
|
|
|
@ -101,7 +101,7 @@
|
||||||
"40"
|
"40"
|
||||||
],
|
],
|
||||||
"single_extruder_multi_material": "1",
|
"single_extruder_multi_material": "1",
|
||||||
"change_filament_gcode": "",
|
"change_filament_gcode": "PAUSE",
|
||||||
"machine_pause_gcode": "M0",
|
"machine_pause_gcode": "M0",
|
||||||
"default_filament_profile": [
|
"default_filament_profile": [
|
||||||
"Elegoo Generic PLA"
|
"Elegoo Generic PLA"
|
||||||
|
|
|
@ -439,6 +439,9 @@ var LangText = {
|
||||||
t92: "Cabane de Noël Bambu",
|
t92: "Cabane de Noël Bambu",
|
||||||
t93: "Connexion à l'imprimante",
|
t93: "Connexion à l'imprimante",
|
||||||
t94: "Veuillez configurer la connexion de votre imprimante pour afficher l'interface.",
|
t94: "Veuillez configurer la connexion de votre imprimante pour afficher l'interface.",
|
||||||
|
t109: "Filaments du système",
|
||||||
|
t110: "Filaments personnalisés",
|
||||||
|
t111: "Créer un nouveau filament",
|
||||||
wk1: "Démarrage rapide",
|
wk1: "Démarrage rapide",
|
||||||
wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.",
|
wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.",
|
||||||
wk3: "Workflow basé sur des projets",
|
wk3: "Workflow basé sur des projets",
|
||||||
|
@ -454,7 +457,7 @@ var LangText = {
|
||||||
wk13: "Format STEP",
|
wk13: "Format STEP",
|
||||||
wk14: "Par rapport au format STL, le format STEP apporte des informations plus efficaces. Grâce à la grande précision de ce format, de nombreuses trajectoires d'extrusion peuvent être générées sous forme d'arcs. Il inclut également la relation d'assemblage de chaque pièce d'un modèle, qui peut être utilisée pour restaurer la vue d'assemblage après la coupe d'un modèle.",
|
wk14: "Par rapport au format STL, le format STEP apporte des informations plus efficaces. Grâce à la grande précision de ce format, de nombreuses trajectoires d'extrusion peuvent être générées sous forme d'arcs. Il inclut également la relation d'assemblage de chaque pièce d'un modèle, qui peut être utilisée pour restaurer la vue d'assemblage après la coupe d'un modèle.",
|
||||||
wk15: "Texte 3D",
|
wk15: "Texte 3D",
|
||||||
wk16: "Avec l'outil Texte 3D, les utilisateurs peuvent facilement créer diverses formes de texte 3D dans le projet, ce qui rend le modèle plus personnalisé. Orca Slicer fournit des dizaines de polices et prend en charge les styles gras et italique pour donner au texte une plus grande flexibilité.",
|
wk16: "Avec l'outil Texte 3D, les utilisateurs peuvent facilement créer diverses formes de texte 3D dans le projet, ce qui rend le modèle plus personnalisé. Orca Slicer fournit des dizaines de polices et prend en charge les styles gras et italique pour donner au texte une plus grande flexibilité."
|
||||||
},
|
},
|
||||||
zh_CN: {
|
zh_CN: {
|
||||||
t1: "欢迎使用Orca Slicer",
|
t1: "欢迎使用Orca Slicer",
|
||||||
|
|
|
@ -44,6 +44,8 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const
|
||||||
if (junctions.size() <= min_path_size)
|
if (junctions.size() <= min_path_size)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// TODO: allow for the first point to be removed in case of simplifying closed Extrusionlines.
|
||||||
|
|
||||||
/* ExtrusionLines are treated as (open) polylines, so in case an ExtrusionLine is actually a closed polygon, its
|
/* ExtrusionLines are treated as (open) polylines, so in case an ExtrusionLine is actually a closed polygon, its
|
||||||
* starting and ending points will be equal (or almost equal). Therefore, the simplification of the ExtrusionLine
|
* starting and ending points will be equal (or almost equal). Therefore, the simplification of the ExtrusionLine
|
||||||
* should not touch the first and last points. As a result, start simplifying from point at index 1.
|
* should not touch the first and last points. As a result, start simplifying from point at index 1.
|
||||||
|
@ -52,16 +54,12 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const
|
||||||
// Starting junction should always exist in the simplified path
|
// Starting junction should always exist in the simplified path
|
||||||
new_junctions.emplace_back(junctions.front());
|
new_junctions.emplace_back(junctions.front());
|
||||||
|
|
||||||
ExtrusionJunction previous = junctions.front();
|
/* Initially, previous_previous is always the same as previous because, for open ExtrusionLines the last junction
|
||||||
/* For open ExtrusionLines the last junction cannot be taken into consideration when checking the points at index 1.
|
* cannot be taken into consideration when checking the points at index 1. For closed ExtrusionLines, the first and
|
||||||
* For closed ExtrusionLines, the first and last junctions are the same, so use the prior to last juction.
|
* last junctions are anyway the same.
|
||||||
* */
|
* */
|
||||||
ExtrusionJunction previous_previous = this->is_closed ? junctions[junctions.size() - 2] : junctions.front();
|
ExtrusionJunction previous_previous = junctions.front();
|
||||||
|
ExtrusionJunction previous = junctions.front();
|
||||||
/* TODO: When deleting, combining, or modifying junctions, it would
|
|
||||||
* probably be good to set the new junction's width to a weighted average
|
|
||||||
* of the junctions it is derived from.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* When removing a vertex, we check the height of the triangle of the area
|
/* When removing a vertex, we check the height of the triangle of the area
|
||||||
being removed from the original polygon by the simplification. However,
|
being removed from the original polygon by the simplification. However,
|
||||||
|
@ -78,20 +76,16 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const
|
||||||
From this area we compute the height of the representative triangle using
|
From this area we compute the height of the representative triangle using
|
||||||
the standard formula for a triangle area: A = .5*b*h
|
the standard formula for a triangle area: A = .5*b*h
|
||||||
*/
|
*/
|
||||||
const ExtrusionJunction& initial = junctions[1];
|
const ExtrusionJunction& initial = junctions.at(1);
|
||||||
int64_t accumulated_area_removed = int64_t(previous.p.x()) * int64_t(initial.p.y()) - int64_t(previous.p.y()) * int64_t(initial.p.x()); // Twice the Shoelace formula for area of polygon per line segment.
|
int64_t accumulated_area_removed = int64_t(previous.p.x()) * int64_t(initial.p.y()) - int64_t(previous.p.y()) * int64_t(initial.p.x()); // Twice the Shoelace formula for area of polygon per line segment.
|
||||||
|
|
||||||
// For a closed polygon we process the last point, which is the same as the first point.
|
for (size_t point_idx = 1; point_idx < junctions.size() - 1; point_idx++)
|
||||||
for (size_t point_idx = 1; point_idx < junctions.size() - (this->is_closed ? 0 : 1); point_idx++)
|
|
||||||
{
|
{
|
||||||
// For the last point of a closed polygon, use the first point of the new polygon in case we modified it.
|
const ExtrusionJunction& current = junctions[point_idx];
|
||||||
const bool is_last = point_idx + 1 == junctions.size();
|
|
||||||
const ExtrusionJunction& current = is_last ? new_junctions[0] : junctions[point_idx];
|
|
||||||
|
|
||||||
// Spill over in case of overflow, unless the [next] vertex will then be equal to [previous].
|
// Spill over in case of overflow, unless the [next] vertex will then be equal to [previous].
|
||||||
const bool spill_over = this->is_closed && point_idx + 2 >= junctions.size() &&
|
const bool spill_over = point_idx + 1 == junctions.size() && new_junctions.size() > 1;
|
||||||
point_idx + 2 - junctions.size() < new_junctions.size();
|
ExtrusionJunction& next = spill_over ? new_junctions[0] : junctions[point_idx + 1];
|
||||||
ExtrusionJunction& next = spill_over ? new_junctions[point_idx + 2 - junctions.size()] : junctions[point_idx + 1];
|
|
||||||
|
|
||||||
const int64_t removed_area_next = int64_t(current.p.x()) * int64_t(next.p.y()) - int64_t(current.p.y()) * int64_t(next.p.x()); // Twice the Shoelace formula for area of polygon per line segment.
|
const int64_t removed_area_next = int64_t(current.p.x()) * int64_t(next.p.y()) - int64_t(current.p.y()) * int64_t(next.p.x()); // Twice the Shoelace formula for area of polygon per line segment.
|
||||||
const int64_t negative_area_closing = int64_t(next.p.x()) * int64_t(previous.p.y()) - int64_t(next.p.y()) * int64_t(previous.p.x()); // Area between the origin and the short-cutting segment
|
const int64_t negative_area_closing = int64_t(next.p.x()) * int64_t(previous.p.y()) - int64_t(next.p.y()) * int64_t(previous.p.x()); // Area between the origin and the short-cutting segment
|
||||||
|
@ -139,18 +133,12 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const
|
||||||
// We should instead move this point to a location where both edges are kept and then remove the previous point that we wanted to keep.
|
// We should instead move this point to a location where both edges are kept and then remove the previous point that we wanted to keep.
|
||||||
// By taking the intersection of these two lines, we get a point that preserves the direction (so it makes the corner a bit more pointy).
|
// By taking the intersection of these two lines, we get a point that preserves the direction (so it makes the corner a bit more pointy).
|
||||||
// We just need to be sure that the intersection point does not introduce an artifact itself.
|
// We just need to be sure that the intersection point does not introduce an artifact itself.
|
||||||
// o < prev_prev
|
|
||||||
// |
|
|
||||||
// o < prev
|
|
||||||
// \ < short segment
|
|
||||||
// intersection > + o-------------------o < next
|
|
||||||
// ^ current
|
|
||||||
Point intersection_point;
|
Point intersection_point;
|
||||||
bool has_intersection = Line(previous_previous.p, previous.p).intersection_infinite(Line(current.p, next.p), &intersection_point);
|
bool has_intersection = Line(previous_previous.p, previous.p).intersection_infinite(Line(current.p, next.p), &intersection_point);
|
||||||
if (!has_intersection
|
if (!has_intersection
|
||||||
|| Line::distance_to_infinite_squared(intersection_point, previous.p, current.p) > double(allowed_error_distance_squared)
|
|| Line::distance_to_infinite_squared(intersection_point, previous.p, current.p) > double(allowed_error_distance_squared)
|
||||||
|| (intersection_point - previous.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared // The intersection point is way too far from the 'previous'
|
|| (intersection_point - previous.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared // The intersection point is way too far from the 'previous'
|
||||||
|| (intersection_point - current.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared) // and 'current' points, so it shouldn't replace 'current'
|
|| (intersection_point - next.p).cast<int64_t>().squaredNorm() > smallest_line_segment_squared) // and 'next' points, so it shouldn't replace 'current'
|
||||||
{
|
{
|
||||||
// We can't find a better spot for it, but the size of the line is more than 5 micron.
|
// We can't find a better spot for it, but the size of the line is more than 5 micron.
|
||||||
// So the only thing we can do here is leave it in...
|
// So the only thing we can do here is leave it in...
|
||||||
|
@ -186,14 +174,15 @@ void ExtrusionLine::simplify(const int64_t smallest_line_segment_squared, const
|
||||||
new_junctions.push_back(current);
|
new_junctions.push_back(current);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this->is_closed) {
|
|
||||||
/* The first and last points should be the same for a closed polygon.
|
|
||||||
* We processed the last point above, so copy it into the first point.
|
|
||||||
*/
|
|
||||||
new_junctions.front().p = new_junctions.back().p;
|
|
||||||
} else {
|
|
||||||
// Ending junction (vertex) should always exist in the simplified path
|
// Ending junction (vertex) should always exist in the simplified path
|
||||||
new_junctions.emplace_back(junctions.back());
|
new_junctions.emplace_back(junctions.back());
|
||||||
|
|
||||||
|
/* In case this is a closed polygon (instead of a poly-line-segments), the invariant that the first and last points are the same should be enforced.
|
||||||
|
* Since one of them didn't move, and the other can't have been moved further than the constraints, if originally equal, they can simply be equated.
|
||||||
|
*/
|
||||||
|
if ((junctions.front().p - junctions.back().p).cast<int64_t>().squaredNorm() == 0)
|
||||||
|
{
|
||||||
|
new_junctions.back().p = junctions.front().p;
|
||||||
}
|
}
|
||||||
|
|
||||||
junctions = new_junctions;
|
junctions = new_junctions;
|
||||||
|
|
|
@ -85,8 +85,6 @@ set(lisbslic3r_sources
|
||||||
ExtrusionEntity.hpp
|
ExtrusionEntity.hpp
|
||||||
ExtrusionEntityCollection.cpp
|
ExtrusionEntityCollection.cpp
|
||||||
ExtrusionEntityCollection.hpp
|
ExtrusionEntityCollection.hpp
|
||||||
ExtrusionRole.cpp
|
|
||||||
ExtrusionRole.hpp
|
|
||||||
ExtrusionSimulator.cpp
|
ExtrusionSimulator.cpp
|
||||||
ExtrusionSimulator.hpp
|
ExtrusionSimulator.hpp
|
||||||
FileParserError.hpp
|
FileParserError.hpp
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
///|/ Copyright (c) Prusa Research 2023 Pavel Mikuš @Godrak, Oleksandra Iushchenko @YuSanka, Vojtěch Bubník @bubnikv
|
|
||||||
///|/
|
|
||||||
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
|
||||||
///|/
|
|
||||||
#include "ExtrusionRole.hpp"
|
|
||||||
#include "I18N.hpp"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <string_view>
|
|
||||||
#include <cassert>
|
|
||||||
|
|
||||||
|
|
||||||
namespace Slic3r {
|
|
||||||
|
|
||||||
// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole.
|
|
||||||
// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer,
|
|
||||||
GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role)
|
|
||||||
{
|
|
||||||
if (role == erNone) return GCodeExtrusionRole::None;
|
|
||||||
if (role == erOverhangPerimeter) return GCodeExtrusionRole::OverhangPerimeter;
|
|
||||||
if (role == erExternalPerimeter) return GCodeExtrusionRole::ExternalPerimeter;
|
|
||||||
if (role == erPerimeter) return GCodeExtrusionRole::Perimeter;
|
|
||||||
if (role == erInternalInfill) return GCodeExtrusionRole::InternalInfill;
|
|
||||||
if (role == erSolidInfill) return GCodeExtrusionRole::SolidInfill;
|
|
||||||
if (role == erTopSolidInfill) return GCodeExtrusionRole::TopSolidInfill;
|
|
||||||
if (role == erIroning) return GCodeExtrusionRole::Ironing;
|
|
||||||
if (role == erBridgeInfill) return GCodeExtrusionRole::BridgeInfill;
|
|
||||||
if (role == erGapFill) return GCodeExtrusionRole::GapFill;
|
|
||||||
if (role == erSkirt) return GCodeExtrusionRole::Skirt;
|
|
||||||
if (role == erSupportMaterial) return GCodeExtrusionRole::SupportMaterial;
|
|
||||||
if (role == erSupportMaterialInterface) return GCodeExtrusionRole::SupportMaterialInterface;
|
|
||||||
if (role == erWipeTower) return GCodeExtrusionRole::WipeTower;
|
|
||||||
assert(false);
|
|
||||||
return GCodeExtrusionRole::None;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role)
|
|
||||||
{
|
|
||||||
switch (role) {
|
|
||||||
case GCodeExtrusionRole::None : return L("Unknown");
|
|
||||||
case GCodeExtrusionRole::Perimeter : return L("Perimeter");
|
|
||||||
case GCodeExtrusionRole::ExternalPerimeter : return L("External perimeter");
|
|
||||||
case GCodeExtrusionRole::OverhangPerimeter : return L("Overhang perimeter");
|
|
||||||
case GCodeExtrusionRole::InternalInfill : return L("Internal infill");
|
|
||||||
case GCodeExtrusionRole::SolidInfill : return L("Solid infill");
|
|
||||||
case GCodeExtrusionRole::TopSolidInfill : return L("Top solid infill");
|
|
||||||
case GCodeExtrusionRole::Ironing : return L("Ironing");
|
|
||||||
case GCodeExtrusionRole::BridgeInfill : return L("Bridge infill");
|
|
||||||
case GCodeExtrusionRole::GapFill : return L("Gap fill");
|
|
||||||
case GCodeExtrusionRole::Skirt : return L("Skirt/Brim");
|
|
||||||
case GCodeExtrusionRole::SupportMaterial : return L("Support material");
|
|
||||||
case GCodeExtrusionRole::SupportMaterialInterface : return L("Support material interface");
|
|
||||||
case GCodeExtrusionRole::WipeTower : return L("Wipe tower");
|
|
||||||
case GCodeExtrusionRole::Custom : return L("Custom");
|
|
||||||
default : assert(false);
|
|
||||||
}
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role)
|
|
||||||
{
|
|
||||||
if (role == L("Perimeter"))
|
|
||||||
return GCodeExtrusionRole::Perimeter;
|
|
||||||
else if (role == L("External perimeter"))
|
|
||||||
return GCodeExtrusionRole::ExternalPerimeter;
|
|
||||||
else if (role == L("Overhang perimeter"))
|
|
||||||
return GCodeExtrusionRole::OverhangPerimeter;
|
|
||||||
else if (role == L("Internal infill"))
|
|
||||||
return GCodeExtrusionRole::InternalInfill;
|
|
||||||
else if (role == L("Solid infill"))
|
|
||||||
return GCodeExtrusionRole::SolidInfill;
|
|
||||||
else if (role == L("Top solid infill"))
|
|
||||||
return GCodeExtrusionRole::TopSolidInfill;
|
|
||||||
else if (role == L("Ironing"))
|
|
||||||
return GCodeExtrusionRole::Ironing;
|
|
||||||
else if (role == L("Bridge infill"))
|
|
||||||
return GCodeExtrusionRole::BridgeInfill;
|
|
||||||
else if (role == L("Gap fill"))
|
|
||||||
return GCodeExtrusionRole::GapFill;
|
|
||||||
else if (role == L("Skirt") || role == L("Skirt/Brim")) // "Skirt" is for backward compatibility with 2.3.1 and earlier
|
|
||||||
return GCodeExtrusionRole::Skirt;
|
|
||||||
else if (role == L("Support material"))
|
|
||||||
return GCodeExtrusionRole::SupportMaterial;
|
|
||||||
else if (role == L("Support material interface"))
|
|
||||||
return GCodeExtrusionRole::SupportMaterialInterface;
|
|
||||||
else if (role == L("Wipe tower"))
|
|
||||||
return GCodeExtrusionRole::WipeTower;
|
|
||||||
else if (role == L("Custom"))
|
|
||||||
return GCodeExtrusionRole::Custom;
|
|
||||||
else
|
|
||||||
return GCodeExtrusionRole::None;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
///|/ Copyright (c) 2023 Robert Schiele @schiele
|
|
||||||
///|/ Copyright (c) Prusa Research 2023 Vojtěch Bubník @bubnikv
|
|
||||||
///|/
|
|
||||||
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
|
||||||
///|/
|
|
||||||
#ifndef slic3r_ExtrusionRole_hpp_
|
|
||||||
#define slic3r_ExtrusionRole_hpp_
|
|
||||||
|
|
||||||
#include "enum_bitmask.hpp"
|
|
||||||
#include "ExtrusionEntity.hpp"
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
#include <string_view>
|
|
||||||
#include <cstdint>
|
|
||||||
|
|
||||||
namespace Slic3r {
|
|
||||||
|
|
||||||
enum class ExtrusionRoleModifier : uint16_t {
|
|
||||||
// 1) Extrusion types
|
|
||||||
// Perimeter (external, inner, ...)
|
|
||||||
Perimeter,
|
|
||||||
// Infill (top / bottom / solid inner / sparse inner / bridging inner ...)
|
|
||||||
Infill,
|
|
||||||
// Variable width extrusion
|
|
||||||
Thin,
|
|
||||||
// Support material extrusion
|
|
||||||
Support,
|
|
||||||
Skirt,
|
|
||||||
Wipe,
|
|
||||||
// 2) Extrusion modifiers
|
|
||||||
External,
|
|
||||||
Solid,
|
|
||||||
Ironing,
|
|
||||||
Bridge,
|
|
||||||
// 3) Special types
|
|
||||||
// Indicator that the extrusion role was mixed from multiple differing extrusion roles,
|
|
||||||
// for example from Support and SupportInterface.
|
|
||||||
Mixed,
|
|
||||||
// Stopper, there should be maximum 16 modifiers defined for uint16_t bit mask.
|
|
||||||
Count
|
|
||||||
};
|
|
||||||
// There should be maximum 16 modifiers defined for uint16_t bit mask.
|
|
||||||
static_assert(int(ExtrusionRoleModifier::Count) <= 16, "ExtrusionRoleModifier: there must be maximum 16 modifiers defined to fit a 16 bit bitmask");
|
|
||||||
|
|
||||||
using ExtrusionRoleModifiers = enum_bitmask<ExtrusionRoleModifier>;
|
|
||||||
ENABLE_ENUM_BITMASK_OPERATORS(ExtrusionRoleModifier);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Be careful when editing this list as many parts of the code depend
|
|
||||||
// on the values of these ordinars, for example
|
|
||||||
// GCodeViewer::Extrusion_Role_Colors
|
|
||||||
enum class GCodeExtrusionRole : uint8_t {
|
|
||||||
None,
|
|
||||||
Perimeter,
|
|
||||||
ExternalPerimeter,
|
|
||||||
OverhangPerimeter,
|
|
||||||
InternalInfill,
|
|
||||||
SolidInfill,
|
|
||||||
TopSolidInfill,
|
|
||||||
Ironing,
|
|
||||||
BridgeInfill,
|
|
||||||
GapFill,
|
|
||||||
Skirt,
|
|
||||||
SupportMaterial,
|
|
||||||
SupportMaterialInterface,
|
|
||||||
WipeTower,
|
|
||||||
// Custom (user defined) G-code block, for example start / end G-code.
|
|
||||||
Custom,
|
|
||||||
// Stopper to count number of enums.
|
|
||||||
Count
|
|
||||||
};
|
|
||||||
|
|
||||||
// Convert a rich bitmask based ExtrusionRole to a less expressive ordinal GCodeExtrusionRole.
|
|
||||||
// GCodeExtrusionRole is to be serialized into G-code and deserialized by G-code viewer,
|
|
||||||
GCodeExtrusionRole extrusion_role_to_gcode_extrusion_role(ExtrusionRole role);
|
|
||||||
|
|
||||||
std::string gcode_extrusion_role_to_string(GCodeExtrusionRole role);
|
|
||||||
GCodeExtrusionRole string_to_gcode_extrusion_role(const std::string_view role);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // slic3r_ExtrusionRole_hpp_
|
|
|
@ -4177,7 +4177,7 @@ LayerResult GCode::process_layer(
|
||||||
m_last_obj_copy = this_object_copy;
|
m_last_obj_copy = this_object_copy;
|
||||||
this->set_origin(unscale(offset));
|
this->set_origin(unscale(offset));
|
||||||
//FIXME the following code prints regions in the order they are defined, the path is not optimized in any way.
|
//FIXME the following code prints regions in the order they are defined, the path is not optimized in any way.
|
||||||
bool is_infill_first =print.config().is_infill_first;
|
bool is_infill_first =m_config.is_infill_first;
|
||||||
|
|
||||||
auto has_infill = [](const std::vector<ObjectByExtruder::Island::Region> &by_region) {
|
auto has_infill = [](const std::vector<ObjectByExtruder::Island::Region> &by_region) {
|
||||||
for (auto region : by_region) {
|
for (auto region : by_region) {
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
///|/
|
///|/
|
||||||
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
///|/ PrusaSlicer is released under the terms of the AGPLv3 or higher
|
||||||
///|/
|
///|/
|
||||||
|
#include <iostream>
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <cfloat>
|
#include <cfloat>
|
||||||
|
@ -45,7 +46,7 @@ PressureEqualizer::PressureEqualizer(const Slic3r::GCodeConfig &config) : m_use_
|
||||||
m_current_extruder = 0;
|
m_current_extruder = 0;
|
||||||
// Zero the position of the XYZE axes + the current feed
|
// Zero the position of the XYZE axes + the current feed
|
||||||
memset(m_current_pos, 0, sizeof(float) * 5);
|
memset(m_current_pos, 0, sizeof(float) * 5);
|
||||||
m_current_extrusion_role = GCodeExtrusionRole::None;
|
m_current_extrusion_role = ExtrusionRole::erNone;
|
||||||
// Expect the first command to fill the nozzle (deretract).
|
// Expect the first command to fill the nozzle (deretract).
|
||||||
m_retracted = true;
|
m_retracted = true;
|
||||||
|
|
||||||
|
@ -74,7 +75,7 @@ PressureEqualizer::PressureEqualizer(const Slic3r::GCodeConfig &config) : m_use_
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't regulate the pressure before and after ironing.
|
// Don't regulate the pressure before and after ironing.
|
||||||
for (const GCodeExtrusionRole er : {GCodeExtrusionRole::Ironing}) {
|
for (const ExtrusionRole er : {ExtrusionRole::erIroning}) {
|
||||||
m_max_volumetric_extrusion_rate_slopes[size_t(er)].negative = 0;
|
m_max_volumetric_extrusion_rate_slopes[size_t(er)].negative = 0;
|
||||||
m_max_volumetric_extrusion_rate_slopes[size_t(er)].positive = 0;
|
m_max_volumetric_extrusion_rate_slopes[size_t(er)].positive = 0;
|
||||||
}
|
}
|
||||||
|
@ -260,7 +261,7 @@ bool PressureEqualizer::process_line(const char *line, const char *line_end, GCo
|
||||||
if (strncmp(line, EXTRUSION_ROLE_TAG.data(), EXTRUSION_ROLE_TAG.length()) == 0) {
|
if (strncmp(line, EXTRUSION_ROLE_TAG.data(), EXTRUSION_ROLE_TAG.length()) == 0) {
|
||||||
line += EXTRUSION_ROLE_TAG.length();
|
line += EXTRUSION_ROLE_TAG.length();
|
||||||
int role = atoi(line);
|
int role = atoi(line);
|
||||||
m_current_extrusion_role = GCodeExtrusionRole(role);
|
m_current_extrusion_role = ExtrusionRole(role);
|
||||||
#ifdef PRESSURE_EQUALIZER_DEBUG
|
#ifdef PRESSURE_EQUALIZER_DEBUG
|
||||||
++line_idx;
|
++line_idx;
|
||||||
#endif
|
#endif
|
||||||
|
@ -589,8 +590,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
if (line_idx == fist_line_idx || !m_gcode_lines[line_idx].extruding())
|
if (line_idx == fist_line_idx || !m_gcode_lines[line_idx].extruding())
|
||||||
// Nothing to do, the last move is not extruding.
|
// Nothing to do, the last move is not extruding.
|
||||||
return;
|
return;
|
||||||
|
std::array<float, size_t(ExtrusionRole::erCount)> feedrate_per_extrusion_role{};
|
||||||
std::array<float, size_t(GCodeExtrusionRole::Count)> feedrate_per_extrusion_role{};
|
|
||||||
feedrate_per_extrusion_role.fill(std::numeric_limits<float>::max());
|
feedrate_per_extrusion_role.fill(std::numeric_limits<float>::max());
|
||||||
feedrate_per_extrusion_role[int(m_gcode_lines[line_idx].extrusion_role)] = m_gcode_lines[line_idx].volumetric_extrusion_rate_start;
|
feedrate_per_extrusion_role[int(m_gcode_lines[line_idx].extrusion_role)] = m_gcode_lines[line_idx].volumetric_extrusion_rate_start;
|
||||||
|
|
||||||
|
@ -600,7 +600,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
if (!m_gcode_lines[idx_prev].extruding())
|
if (!m_gcode_lines[idx_prev].extruding())
|
||||||
break;
|
break;
|
||||||
// Don't decelerate before ironing.
|
// Don't decelerate before ironing.
|
||||||
if (m_gcode_lines[line_idx].extrusion_role == GCodeExtrusionRole::Ironing) { line_idx = idx_prev;
|
if (m_gcode_lines[line_idx].extrusion_role == ExtrusionRole::erIroning) { line_idx = idx_prev;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
// Volumetric extrusion rate at the start of the succeding segment.
|
// Volumetric extrusion rate at the start of the succeding segment.
|
||||||
|
@ -609,10 +609,10 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
line_idx = idx_prev;
|
line_idx = idx_prev;
|
||||||
GCodeLine &line = m_gcode_lines[line_idx];
|
GCodeLine &line = m_gcode_lines[line_idx];
|
||||||
|
|
||||||
for (size_t iRole = 1; iRole < size_t(GCodeExtrusionRole::Count); ++ iRole) {
|
for (size_t iRole = 1; iRole < size_t(ExtrusionRole::erCount); ++ iRole) {
|
||||||
const float &rate_slope = m_max_volumetric_extrusion_rate_slopes[iRole].negative;
|
const float &rate_slope = m_max_volumetric_extrusion_rate_slopes[iRole].negative;
|
||||||
if (rate_slope == 0 || feedrate_per_extrusion_role[iRole] == std::numeric_limits<float>::max())
|
if (rate_slope == 0 || feedrate_per_extrusion_role[iRole] == std::numeric_limits<float>::max())
|
||||||
continue; // The negative rate is unlimited or the rate for GCodeExtrusionRole iRole is unlimited.
|
continue; // The negative rate is unlimited or the rate for ExtrusionRole iRole is unlimited.
|
||||||
|
|
||||||
float rate_end = feedrate_per_extrusion_role[iRole];
|
float rate_end = feedrate_per_extrusion_role[iRole];
|
||||||
if (iRole == size_t(line.extrusion_role) && rate_succ < rate_end)
|
if (iRole == size_t(line.extrusion_role) && rate_succ < rate_end)
|
||||||
|
@ -620,7 +620,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
rate_end = rate_succ;
|
rate_end = rate_succ;
|
||||||
|
|
||||||
// don't alter the flow rate for these extrusion types
|
// don't alter the flow rate for these extrusion types
|
||||||
if (!line.adjustable_flow || line.extrusion_role == GCodeExtrusionRole::BridgeInfill || line.extrusion_role == GCodeExtrusionRole::Ironing) {
|
if (!line.adjustable_flow || line.extrusion_role == ExtrusionRole::erBridgeInfill || line.extrusion_role == ExtrusionRole::erIroning) {
|
||||||
rate_end = line.volumetric_extrusion_rate_end;
|
rate_end = line.volumetric_extrusion_rate_end;
|
||||||
} else if (line.volumetric_extrusion_rate_end > rate_end) {
|
} else if (line.volumetric_extrusion_rate_end > rate_end) {
|
||||||
line.volumetric_extrusion_rate_end = rate_end;
|
line.volumetric_extrusion_rate_end = rate_end;
|
||||||
|
@ -644,7 +644,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
}
|
}
|
||||||
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start;
|
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_start : rate_start;
|
||||||
// Don't store feed rate for ironing
|
// Don't store feed rate for ironing
|
||||||
if (line.extrusion_role != GCodeExtrusionRole::Ironing)
|
if (line.extrusion_role != ExtrusionRole::erIroning)
|
||||||
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start;
|
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_start;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -659,7 +659,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
if (!m_gcode_lines[idx_next].extruding())
|
if (!m_gcode_lines[idx_next].extruding())
|
||||||
break;
|
break;
|
||||||
// Don't accelerate after ironing.
|
// Don't accelerate after ironing.
|
||||||
if (m_gcode_lines[line_idx].extrusion_role == GCodeExtrusionRole::Ironing) {
|
if (m_gcode_lines[line_idx].extrusion_role == ExtrusionRole::erIroning) {
|
||||||
line_idx = idx_next;
|
line_idx = idx_next;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -668,14 +668,14 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
line_idx = idx_next;
|
line_idx = idx_next;
|
||||||
GCodeLine &line = m_gcode_lines[line_idx];
|
GCodeLine &line = m_gcode_lines[line_idx];
|
||||||
|
|
||||||
for (size_t iRole = 1; iRole < size_t(GCodeExtrusionRole::Count); ++ iRole) {
|
for (size_t iRole = 1; iRole < size_t(ExtrusionRole::erCount); ++ iRole) {
|
||||||
const float &rate_slope = m_max_volumetric_extrusion_rate_slopes[iRole].positive;
|
const float &rate_slope = m_max_volumetric_extrusion_rate_slopes[iRole].positive;
|
||||||
if (rate_slope == 0 || feedrate_per_extrusion_role[iRole] == std::numeric_limits<float>::max())
|
if (rate_slope == 0 || feedrate_per_extrusion_role[iRole] == std::numeric_limits<float>::max())
|
||||||
continue; // The positive rate is unlimited or the rate for GCodeExtrusionRole iRole is unlimited.
|
continue; // The positive rate is unlimited or the rate for ExtrusionRole iRole is unlimited.
|
||||||
|
|
||||||
float rate_start = feedrate_per_extrusion_role[iRole];
|
float rate_start = feedrate_per_extrusion_role[iRole];
|
||||||
// don't alter the flow rate for these extrusion types
|
// don't alter the flow rate for these extrusion types
|
||||||
if (!line.adjustable_flow || line.extrusion_role == GCodeExtrusionRole::BridgeInfill || line.extrusion_role == GCodeExtrusionRole::Ironing) {
|
if (!line.adjustable_flow || line.extrusion_role == ExtrusionRole::erBridgeInfill || line.extrusion_role == ExtrusionRole::erIroning) {
|
||||||
rate_start = line.volumetric_extrusion_rate_start;
|
rate_start = line.volumetric_extrusion_rate_start;
|
||||||
} else if (iRole == size_t(line.extrusion_role) && rate_prec < rate_start)
|
} else if (iRole == size_t(line.extrusion_role) && rate_prec < rate_start)
|
||||||
rate_start = rate_prec;
|
rate_start = rate_prec;
|
||||||
|
@ -701,7 +701,7 @@ void PressureEqualizer::adjust_volumetric_rate(const size_t fist_line_idx, const
|
||||||
}
|
}
|
||||||
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end;
|
// feedrate_per_extrusion_role[iRole] = (iRole == line.extrusion_role) ? line.volumetric_extrusion_rate_end : rate_end;
|
||||||
// Don't store feed rate for ironing
|
// Don't store feed rate for ironing
|
||||||
if (line.extrusion_role != GCodeExtrusionRole::Ironing)
|
if (line.extrusion_role != ExtrusionRole::erIroning)
|
||||||
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end;
|
feedrate_per_extrusion_role[iRole] = line.volumetric_extrusion_rate_end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -785,7 +785,7 @@ void PressureEqualizer::push_line_to_output(const size_t line_idx, const float n
|
||||||
GCodeG1Formatter feedrate_formatter;
|
GCodeG1Formatter feedrate_formatter;
|
||||||
feedrate_formatter.emit_f(new_feedrate);
|
feedrate_formatter.emit_f(new_feedrate);
|
||||||
feedrate_formatter.emit_string(std::string(EXTRUDE_SET_SPEED_TAG.data(), EXTRUDE_SET_SPEED_TAG.length()));
|
feedrate_formatter.emit_string(std::string(EXTRUDE_SET_SPEED_TAG.data(), EXTRUDE_SET_SPEED_TAG.length()));
|
||||||
if (line.extrusion_role == GCodeExtrusionRole::ExternalPerimeter)
|
if (line.extrusion_role == ExtrusionRole::erExternalPerimeter)
|
||||||
feedrate_formatter.emit_string(std::string(EXTERNAL_PERIMETER_TAG.data(), EXTERNAL_PERIMETER_TAG.length()));
|
feedrate_formatter.emit_string(std::string(EXTERNAL_PERIMETER_TAG.data(), EXTERNAL_PERIMETER_TAG.length()));
|
||||||
push_to_output(feedrate_formatter);
|
push_to_output(feedrate_formatter);
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@
|
||||||
|
|
||||||
#include "../libslic3r.h"
|
#include "../libslic3r.h"
|
||||||
#include "../PrintConfig.hpp"
|
#include "../PrintConfig.hpp"
|
||||||
#include "../ExtrusionRole.hpp"
|
|
||||||
|
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
|
||||||
|
@ -70,7 +69,7 @@ private:
|
||||||
float positive;
|
float positive;
|
||||||
float negative;
|
float negative;
|
||||||
};
|
};
|
||||||
ExtrusionRateSlope m_max_volumetric_extrusion_rate_slopes[size_t(GCodeExtrusionRole::Count)];
|
ExtrusionRateSlope m_max_volumetric_extrusion_rate_slopes[size_t(ExtrusionRole::erCount)];
|
||||||
float m_max_volumetric_extrusion_rate_slope_positive;
|
float m_max_volumetric_extrusion_rate_slope_positive;
|
||||||
float m_max_volumetric_extrusion_rate_slope_negative;
|
float m_max_volumetric_extrusion_rate_slope_negative;
|
||||||
|
|
||||||
|
@ -82,7 +81,7 @@ private:
|
||||||
// X,Y,Z,E,F
|
// X,Y,Z,E,F
|
||||||
float m_current_pos[5];
|
float m_current_pos[5];
|
||||||
size_t m_current_extruder;
|
size_t m_current_extruder;
|
||||||
GCodeExtrusionRole m_current_extrusion_role;
|
ExtrusionRole m_current_extrusion_role;
|
||||||
bool m_retracted;
|
bool m_retracted;
|
||||||
bool m_use_relative_e_distances;
|
bool m_use_relative_e_distances;
|
||||||
|
|
||||||
|
@ -158,7 +157,7 @@ private:
|
||||||
// Index of the active extruder.
|
// Index of the active extruder.
|
||||||
size_t extruder_id;
|
size_t extruder_id;
|
||||||
// Extrusion role of this segment.
|
// Extrusion role of this segment.
|
||||||
GCodeExtrusionRole extrusion_role;
|
ExtrusionRole extrusion_role;
|
||||||
|
|
||||||
// Current volumetric extrusion rate.
|
// Current volumetric extrusion rate.
|
||||||
float volumetric_extrusion_rate;
|
float volumetric_extrusion_rate;
|
||||||
|
|
|
@ -1047,7 +1047,7 @@ float WipingExtrusions::mark_wiping_extrusions(const Print& print, unsigned int
|
||||||
if (!object->config().flush_into_infill && !object->config().flush_into_objects && !object->config().flush_into_support)
|
if (!object->config().flush_into_infill && !object->config().flush_into_objects && !object->config().flush_into_support)
|
||||||
continue;
|
continue;
|
||||||
bool wipe_into_infill_only = !object->config().flush_into_objects && object->config().flush_into_infill;
|
bool wipe_into_infill_only = !object->config().flush_into_objects && object->config().flush_into_infill;
|
||||||
bool is_infill_first = print.config().is_infill_first;
|
bool is_infill_first = region.config().is_infill_first;
|
||||||
if (is_infill_first != perimeters_done || wipe_into_infill_only) {
|
if (is_infill_first != perimeters_done || wipe_into_infill_only) {
|
||||||
for (const ExtrusionEntity* ee : layerm->fills.entities) { // iterate through all infill Collections
|
for (const ExtrusionEntity* ee : layerm->fills.entities) { // iterate through all infill Collections
|
||||||
auto* fill = dynamic_cast<const ExtrusionEntityCollection*>(ee);
|
auto* fill = dynamic_cast<const ExtrusionEntityCollection*>(ee);
|
||||||
|
@ -1160,7 +1160,7 @@ void WipingExtrusions::ensure_perimeters_infills_order(const Print& print)
|
||||||
if (!object->config().flush_into_infill && !object->config().flush_into_objects)
|
if (!object->config().flush_into_infill && !object->config().flush_into_objects)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
bool is_infill_first = print.config().is_infill_first;
|
bool is_infill_first = region.config().is_infill_first;
|
||||||
for (const ExtrusionEntity* ee : layerm->fills.entities) { // iterate through all infill Collections
|
for (const ExtrusionEntity* ee : layerm->fills.entities) { // iterate through all infill Collections
|
||||||
auto* fill = dynamic_cast<const ExtrusionEntityCollection*>(ee);
|
auto* fill = dynamic_cast<const ExtrusionEntityCollection*>(ee);
|
||||||
|
|
||||||
|
|
|
@ -1731,7 +1731,7 @@ void PerimeterGenerator::process_classic()
|
||||||
// if brim will be printed, reverse the order of perimeters so that
|
// if brim will be printed, reverse the order of perimeters so that
|
||||||
// we continue inwards after having finished the brim
|
// we continue inwards after having finished the brim
|
||||||
// TODO: add test for perimeter order
|
// TODO: add test for perimeter order
|
||||||
bool is_outer_wall_first = this->object_config->wall_sequence == WallSequence::OuterInner;
|
bool is_outer_wall_first = this->config->wall_sequence == WallSequence::OuterInner;
|
||||||
if (is_outer_wall_first ||
|
if (is_outer_wall_first ||
|
||||||
//BBS: always print outer wall first when there indeed has brim.
|
//BBS: always print outer wall first when there indeed has brim.
|
||||||
(this->layer_id == 0 &&
|
(this->layer_id == 0 &&
|
||||||
|
@ -1739,7 +1739,7 @@ void PerimeterGenerator::process_classic()
|
||||||
this->object_config->brim_width.value > 0))
|
this->object_config->brim_width.value > 0))
|
||||||
entities.reverse();
|
entities.reverse();
|
||||||
// SoftFever: sandwich mode
|
// SoftFever: sandwich mode
|
||||||
else if (this->object_config->wall_sequence == WallSequence::InnerOuterInner)
|
else if (this->config->wall_sequence == WallSequence::InnerOuterInner)
|
||||||
if (entities.entities.size() > 1){
|
if (entities.entities.size() > 1){
|
||||||
int last_outer=0;
|
int last_outer=0;
|
||||||
int outer = 0;
|
int outer = 0;
|
||||||
|
@ -2036,12 +2036,12 @@ void PerimeterGenerator::process_arachne()
|
||||||
int direction = -1;
|
int direction = -1;
|
||||||
|
|
||||||
bool is_outer_wall_first =
|
bool is_outer_wall_first =
|
||||||
this->object_config->wall_sequence == WallSequence::OuterInner ||
|
this->config->wall_sequence == WallSequence::OuterInner ||
|
||||||
this->object_config->wall_sequence == WallSequence::InnerOuterInner;
|
this->config->wall_sequence == WallSequence::InnerOuterInner;
|
||||||
|
|
||||||
if (layer_id == 0){ // disable inner outer inner algorithm after the first layer
|
if (layer_id == 0){ // disable inner outer inner algorithm after the first layer
|
||||||
is_outer_wall_first =
|
is_outer_wall_first =
|
||||||
this->object_config->wall_sequence == WallSequence::OuterInner;
|
this->config->wall_sequence == WallSequence::OuterInner;
|
||||||
}
|
}
|
||||||
if (is_outer_wall_first) {
|
if (is_outer_wall_first) {
|
||||||
start_perimeter = 0;
|
start_perimeter = 0;
|
||||||
|
@ -2169,7 +2169,7 @@ void PerimeterGenerator::process_arachne()
|
||||||
}
|
}
|
||||||
|
|
||||||
// printf("New Layer: Layer ID %d\n",layer_id); //debug - new layer
|
// printf("New Layer: Layer ID %d\n",layer_id); //debug - new layer
|
||||||
if (this->object_config->wall_sequence == WallSequence::InnerOuterInner && layer_id > 0) { // only enable inner outer inner algorithm after first layer
|
if (this->config->wall_sequence == WallSequence::InnerOuterInner && layer_id > 0) { // only enable inner outer inner algorithm after first layer
|
||||||
if (ordered_extrusions.size() > 2) { // 3 walls minimum needed to do inner outer inner ordering
|
if (ordered_extrusions.size() > 2) { // 3 walls minimum needed to do inner outer inner ordering
|
||||||
int position = 0; // index to run the re-ordering for multiple external perimeters in a single island.
|
int position = 0; // index to run the re-ordering for multiple external perimeters in a single island.
|
||||||
int arr_i, arr_j = 0; // indexes to run through the walls in the for loops
|
int arr_i, arr_j = 0; // indexes to run through the walls in the for loops
|
||||||
|
|
|
@ -753,7 +753,6 @@ PRINT_CONFIG_CLASS_DEFINE(
|
||||||
// BBS
|
// BBS
|
||||||
((ConfigOptionBool, flush_into_infill))
|
((ConfigOptionBool, flush_into_infill))
|
||||||
((ConfigOptionBool, flush_into_support))
|
((ConfigOptionBool, flush_into_support))
|
||||||
((ConfigOptionEnum<WallSequence>, wall_sequence))
|
|
||||||
// BBS
|
// BBS
|
||||||
((ConfigOptionFloat, tree_support_branch_distance))
|
((ConfigOptionFloat, tree_support_branch_distance))
|
||||||
((ConfigOptionFloat, tree_support_tip_diameter))
|
((ConfigOptionFloat, tree_support_tip_diameter))
|
||||||
|
@ -903,6 +902,9 @@ PRINT_CONFIG_CLASS_DEFINE(
|
||||||
((ConfigOptionBool, overhang_reverse))
|
((ConfigOptionBool, overhang_reverse))
|
||||||
((ConfigOptionBool, overhang_reverse_internal_only))
|
((ConfigOptionBool, overhang_reverse_internal_only))
|
||||||
((ConfigOptionFloatOrPercent, overhang_reverse_threshold))
|
((ConfigOptionFloatOrPercent, overhang_reverse_threshold))
|
||||||
|
|
||||||
|
((ConfigOptionEnum<WallSequence>, wall_sequence))
|
||||||
|
((ConfigOptionBool, is_infill_first))
|
||||||
)
|
)
|
||||||
|
|
||||||
PRINT_CONFIG_CLASS_DEFINE(
|
PRINT_CONFIG_CLASS_DEFINE(
|
||||||
|
@ -1179,7 +1181,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
|
||||||
|
|
||||||
((ConfigOptionBools, activate_chamber_temp_control))
|
((ConfigOptionBools, activate_chamber_temp_control))
|
||||||
((ConfigOptionInts , chamber_temperature))
|
((ConfigOptionInts , chamber_temperature))
|
||||||
((ConfigOptionBool, is_infill_first))
|
|
||||||
|
|
||||||
((ConfigOptionFloat, preferred_orientation))
|
((ConfigOptionFloat, preferred_orientation))
|
||||||
|
|
||||||
|
|
|
@ -916,6 +916,7 @@ bool PrintObject::invalidate_state_by_config_options(
|
||||||
|| opt_key == "min_width_top_surface"
|
|| opt_key == "min_width_top_surface"
|
||||||
|| opt_key == "only_one_wall_first_layer"
|
|| opt_key == "only_one_wall_first_layer"
|
||||||
|| opt_key == "extra_perimeters_on_overhangs"
|
|| opt_key == "extra_perimeters_on_overhangs"
|
||||||
|
|| opt_key == "detect_overhang_wall"
|
||||||
|| opt_key == "initial_layer_line_width"
|
|| opt_key == "initial_layer_line_width"
|
||||||
|| opt_key == "inner_wall_line_width"
|
|| opt_key == "inner_wall_line_width"
|
||||||
|| opt_key == "infill_wall_overlap"
|
|| opt_key == "infill_wall_overlap"
|
||||||
|
|
|
@ -4504,16 +4504,17 @@ void GCodeViewer::render_legend(float &legend_height, int canvas_width, int canv
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
|
|
||||||
auto calculate_offsets = [max_width, window_padding](const std::vector<std::pair<std::string, std::vector<::string>>>& title_columns, float extra_size = 0.0f) {
|
auto calculate_offsets = [&imgui, max_width, window_padding](const std::vector<std::pair<std::string, std::vector<::string>>>& title_columns, float extra_size = 0.0f) {
|
||||||
const ImGuiStyle& style = ImGui::GetStyle();
|
const ImGuiStyle& style = ImGui::GetStyle();
|
||||||
std::vector<float> offsets;
|
std::vector<float> offsets;
|
||||||
offsets.push_back(max_width(title_columns[0].second, title_columns[0].first, extra_size) + 3.0f * style.ItemSpacing.x);
|
offsets.push_back(max_width(title_columns[0].second, title_columns[0].first, extra_size) + 3.0f * style.ItemSpacing.x);
|
||||||
for (size_t i = 1; i < title_columns.size() - 1; i++)
|
for (size_t i = 1; i < title_columns.size() - 1; i++)
|
||||||
offsets.push_back(offsets.back() + max_width(title_columns[i].second, title_columns[i].first) + style.ItemSpacing.x);
|
offsets.push_back(offsets.back() + max_width(title_columns[i].second, title_columns[i].first) + style.ItemSpacing.x);
|
||||||
if (title_columns.back().first == _u8L("Display")) {
|
if (title_columns.back().first == _u8L("Display")) {
|
||||||
const auto preferred_offset = ImGui::GetWindowWidth() - ImGui::CalcTextSize(_u8L("Display").c_str()).x - ImGui::GetFrameHeight() / 2 - 2 * window_padding;
|
const auto preferred_offset = ImGui::GetWindowWidth() - ImGui::CalcTextSize(_u8L("Display").c_str()).x - ImGui::GetFrameHeight() / 2 - 2 * window_padding - ImGui::GetStyle().ScrollbarSize;
|
||||||
if (preferred_offset > offsets.back()) {
|
if (preferred_offset > offsets.back()) {
|
||||||
offsets.back() = preferred_offset;
|
offsets.back() = preferred_offset;
|
||||||
|
imgui.set_requires_extra_frame();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,9 @@ void SelectionInfo::on_update()
|
||||||
|
|
||||||
m_model_object = nullptr;
|
m_model_object = nullptr;
|
||||||
|
|
||||||
if (selection.is_single_full_instance()) {
|
// BBS still keep object pointer when selection is volume
|
||||||
|
// if (selection.is_single_full_instance()) {
|
||||||
|
if (!selection.is_empty()) {
|
||||||
m_model_object = selection.get_model()->objects[selection.get_object_idx()];
|
m_model_object = selection.get_model()->objects[selection.get_object_idx()];
|
||||||
m_z_shift = selection.get_first_volume()->get_sla_shift_z();
|
m_z_shift = selection.get_first_volume()->get_sla_shift_z();
|
||||||
}
|
}
|
||||||
|
|
|
@ -272,8 +272,8 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
|
||||||
wxBoxSizer* connection_sizer_V = new wxBoxSizer(wxVERTICAL);
|
wxBoxSizer* connection_sizer_V = new wxBoxSizer(wxVERTICAL);
|
||||||
wxBoxSizer* connection_sizer_H = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer* connection_sizer_H = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
// m_hyperlink = new wxHyperlinkCtrl(m_connection_info, wxID_ANY, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
m_hyperlink = new wxHyperlinkCtrl(m_connection_info, wxID_ANY, _L("Failed to connect to the server"), wxT("https://wiki.bambulab.com/en/software/bambu-studio/failed-to-connect-printer"), wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE);
|
||||||
// m_hyperlink->SetBackgroundColour(wxColour(255, 111, 0));
|
m_hyperlink->SetBackgroundColour(wxColour(255, 111, 0));
|
||||||
|
|
||||||
m_more_err_open = ScalableBitmap(this, "monitir_err_open", 16);
|
m_more_err_open = ScalableBitmap(this, "monitir_err_open", 16);
|
||||||
m_more_err_close = ScalableBitmap(this, "monitir_err_close", 16);
|
m_more_err_close = ScalableBitmap(this, "monitir_err_close", 16);
|
||||||
|
@ -302,7 +302,7 @@ SideTools::SideTools(wxWindow *parent, wxWindowID id, const wxPoint &pos, const
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// connection_sizer_H->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5);
|
connection_sizer_H->Add(m_hyperlink, 0, wxALIGN_CENTER | wxALL, 5);
|
||||||
connection_sizer_H->Add(m_more_button, 0, wxALIGN_CENTER | wxALL, 3);
|
connection_sizer_H->Add(m_more_button, 0, wxALIGN_CENTER | wxALL, 3);
|
||||||
connection_sizer_V->Add(connection_sizer_H, 0, wxALIGN_CENTER, 0);
|
connection_sizer_V->Add(connection_sizer_H, 0, wxALIGN_CENTER, 0);
|
||||||
|
|
||||||
|
|