Merge branch 'SoftFever' into feature/small_perimeter

This commit is contained in:
SoftFever 2022-10-24 14:53:58 +08:00
commit 397e0f0a29
151 changed files with 7256 additions and 357 deletions

136
README.md
View file

@ -1,5 +1,139 @@
![image](https://user-images.githubusercontent.com/106916061/179006347-497d24c0-9bd6-45b7-8c49-d5cc8ecfe5d7.png)
# Bambu Studio - SoftFever
A modified version of Bambu Studio with many handy features.
It's fully compatible with Bambulab X1/X1-C printers.
It also supports Voron and Prusa MK3S printers.
You can download it here: https://github.com/SoftFever/BambuStudio-SoftFever/releases
## BambuStudio SoftFever change notes:
### [V1.3.1 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.3.1-sf):
1. Support change bed size and nozzle diameter
2. Allow users to specify the bridge infill direction
3. bridge_infill_direction1
4. bridge_infill_direction2
5. Change to ISO view angle for preview image
6. Add an option to change Z Hop action: NormalLift/SpiralLift
7. Optimise g-code generation for both Bambu printers and 3rd party printers
8. Support Klipper Exclude Objects
9. Better support for Moonraker's metadata.
### [V1.2.5.3 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.2.5.3-sf):
1. Label objects to support Klipper Exclude Objects feature
2. Allow users to change output file name format
3. Fix a bug that pressure advance value was not saved in the profile
4. Optimize non-Bambu printer profiles
5. Remove M900 S0 which is not necessary.
### [V1.2.5 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.2.5-sf):
1. Add options to adjust jerk for different line types
2. Add an option to adjust acceleration for travel. Higher acceleration for travel and lower acceleration for the outer wall makes it possible to print faster and nicer.
3. Add an option to manually override the Pressure Advance / Linear Advance for each filament.
### [V1.2.4 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.2.4-sf):
1. Allow users to adjust accelerations for inner/outer walls separately.
2. Allow users to adjust the bottom surface flow-rate
3. Fix an issue that bed temperature for other layers is not set properly. This bug exists in the upstream as well. My PR here(bambulab#319)
### [V1.2 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.2-sf):
1. Allow user to change machine limits
2. Allow users to adjust the top surface flow-rate.
3. Unlock some cool hidden features in BambuStudio.
4. Fix an issue that the software connected to Bambulab's staging server by default. (Only Bambulab machines were affected)
### [V1.1 changes](https://github.com/SoftFever/BambuStudio-SoftFever/releases/tag/v1.1):
1. Support third-party printers:
- Voron 2.4
- Voron Trident
- Voron 0.1
- Prusa MK3S
2. Export to to .gcode file.
3. Send gcode file to printer
4. Support single wall mode on first layer
5. Support Chamber temperature. This setting can be use in machine start G-Gcode
6. Support thumbview for third-party printers
Demo video: https://youtu.be/vSNE9iGj2II
## NOTE:
## - 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)
- [vcredist2019_x64](https://github.com/SoftFever/BambuStudio-SoftFever/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
## - BambuStudio use G2/G3 commands by default. You need to turn on ARC support in your printer's firmware use with this slicer.
- For Voron and any Klipper based printers:
You can enable gcode_arcs(G2/G3) support by adding following section into you printer.cfg file:
```
[gcode_arcs]
resolution: 0.1
[gcode_macro m201]
gcode:
{% if 'X' in params or 'Y' in params %}
{% set accel = (params.X|default(params.Y)|float,
params.Y|default(params.X)|float)|min %}
SET_VELOCITY_LIMIT ACCEL={accel} ACCEL_TO_DECEL={accel * 0.5}
{% else %}
SET_VELOCITY_LIMIT
{% endif %}
[gcode_macro m203]
gcode:
{% if 'X' in params or 'Y' in params %}
{% set speed = (params.X|default(params.Y)|float,
params.Y|default(params.X)|float)|min %}
SET_VELOCITY_LIMIT VELOCITY={speed}
{% else %}
SET_VELOCITY_LIMIT
{% endif %}
[gcode_macro M205]
gcode:
{% if 'X' in params or 'Y' in params %}
{% set corner_speed = (params.X|default(params.Y)|float,
params.Y|default(params.X)|float)|min %}
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY={corner_speed}
{% else %}
SET_VELOCITY_LIMIT
{% endif %}
[gcode_macro M900]
gcode:
SET_PRESSURE_ADVANCE ADVANCE={params.K}
```
It's also recommended to add followinging dummy macros to make Klipper happy
```
# Make BambuStudio happy
[gcode_macro G17]
gcode:
```
- For Prusa MK3S:
ARC movement are supported by default.
# Gallery
![image](./SoftFever_doc/accelerations.png)
![image](./SoftFever_doc/printers1.png)
![image](./SoftFever_doc/printers2.png)
![image](./SoftFever_doc/printers3.png)
![image](./SoftFever_doc/printers4.png)
![image](./SoftFever_doc/voron.png)
Image credits:
1. Voron 2.4 and Trident: vorondesign.com
3. Voron 0.1: myself
4. Prusa MK3S: Prusa3d
=========================SPLIT=========================
![image](https://user-images.githubusercontent.com/106916061/179006347-497d24c0-9bd6-45b7-8c49-d5cc8ecfe5d7.png)
# BambuStudio # BambuStudio
Bambu Studio is a cutting-edge, feature-rich slicing software. Bambu Studio is a cutting-edge, feature-rich slicing software.
It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphic interface, bringing users an incredibly smooth printing experience. It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphic interface, bringing users an incredibly smooth printing experience.

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
SoftFever_doc/printers1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
SoftFever_doc/printers2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

BIN
SoftFever_doc/printers3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
SoftFever_doc/printers4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

BIN
SoftFever_doc/voron.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

View file

@ -5140,6 +5140,20 @@ msgstr ""
msgid "Bridge flow" msgid "Bridge flow"
msgstr "" msgstr ""
msgid "Top surface flow ratio"
msgstr ""
msgid "Bottom surface flow ratio"
msgstr ""
msgid "This factor affects the amount of material for bottom solid infill"
msgstr ""
msgid ""
"This factor affects the amount of material for top solid infill. "
"You can decrease it slightly to have smooth surface finish"
msgstr ""
msgid "" msgid ""
"Decrease this value slightly(for example 0.9) to reduce the amount of " "Decrease this value slightly(for example 0.9) to reduce the amount of "
"material for bridge, to improve sag" "material for bridge, to improve sag"
@ -5148,11 +5162,19 @@ msgstr ""
msgid "Only one wall on top surfaces" msgid "Only one wall on top surfaces"
msgstr "" msgstr ""
msgid "Only one wall on first layer"
msgstr ""
msgid "" msgid ""
"Use only one wall on flat top surface, to give more space to the top infill " "Use only one wall on flat top surface, to give more space to the top infill "
"pattern" "pattern"
msgstr "" msgstr ""
msgid ""
"Use only one wall on first layer, to give more space to the bottom infill "
"pattern"
msgstr ""
msgid "Slow down for overhang" msgid "Slow down for overhang"
msgstr "" msgstr ""

View file

@ -3065,7 +3065,7 @@ msgid "Click to edit preset"
msgstr "点击编辑配置" msgstr "点击编辑配置"
msgid "Connection" msgid "Connection"
msgstr "" msgstr "连接打印机"
msgid "Bed type" msgid "Bed type"
msgstr "热床类型" msgstr "热床类型"
@ -5267,19 +5267,41 @@ msgstr ""
msgid "Bridge flow" msgid "Bridge flow"
msgstr "桥接流量" msgstr "桥接流量"
msgid "Top surface flow ratio"
msgstr "顶面流量"
msgid "Bottom surface flow ratio"
msgstr "首层流量"
msgid "This factor affects the amount of material for bottom solid infill"
msgstr "首层流量调整系数默认为1.0"
msgid ""
"This factor affects the amount of material for top solid infill. "
"You can decrease it slightly to have smooth surface finish"
msgstr "稍微减小这个数值比如0.97)可以来改善顶面的光滑程度。"
msgid "" msgid ""
"Decrease this value slightly(for example 0.9) to reduce the amount of " "Decrease this value slightly(for example 0.9) to reduce the amount of "
"material for bridge, to improve sag" "material for bridge, to improve sag"
msgstr "稍微减小这个数值比如0.9)可以减小桥接的材料量,来改善下垂。" msgstr "稍微减小这个数值比如0.9)可以减小桥接的材料量,来改善下垂。"
msgid "Only one wall on top surfaces" msgid "Only one wall on first layer"
msgstr "顶面单层墙" msgstr "首层单层墙"
msgid "" msgid ""
"Use only one wall on flat top surface, to give more space to the top infill " "Use only one wall on flat top surface, to give more space to the top infill "
"pattern" "pattern"
msgstr "顶面只使用单层墙,从而更多的空间能够使用顶部填充图案" msgstr "顶面只使用单层墙,从而更多的空间能够使用顶部填充图案"
msgid "Only one wall on top surfaces"
msgstr "顶面单层墙"
msgid ""
"Use only one wall on first layer, to give more space to the bottom infill "
"pattern"
msgstr "首层只使用单层墙,从而更多的空间能够使用底部填充图案"
msgid "Slow down for overhang" msgid "Slow down for overhang"
msgstr "悬垂降速" msgstr "悬垂降速"
@ -5655,6 +5677,9 @@ msgstr "(未定义)"
msgid "Infill direction" msgid "Infill direction"
msgstr "填充方向" msgstr "填充方向"
msgid "Bridge infill direction"
msgstr "拉桥填充方向"
msgid "" msgid ""
"Angle for sparse infill pattern, which controls the start or main direction " "Angle for sparse infill pattern, which controls the start or main direction "
"of line" "of line"
@ -5707,6 +5732,45 @@ msgid ""
"adhensive" "adhensive"
msgstr "首层加速度。使用较低值可以改善和构建板的粘接。" msgstr "首层加速度。使用较低值可以改善和构建板的粘接。"
msgid "Acceleration of outer walls"
msgstr "外墙的加速度。它通常使用比内壁速度慢的加速度,以获得更好的质量"
msgid "Acceleration of inner walls"
msgstr "内圈墙加速度,使用较低值可以改善质量。"
msgid "Acceleration of travel moves"
msgstr "空驶加速度"
msgid "Jerk(XY)"
msgstr "抖动XY"
msgid "Jerk of outer walls"
msgstr "外墙抖动值"
msgid "Jerk of inner walls"
msgstr "内墙抖动值"
msgid "Jerk for top surface"
msgstr "顶面抖动值"
msgid "Jerk for initial layer"
msgstr "首层抖动值"
msgid "Jerk for travel"
msgstr "空驶抖动值"
msgid "Enable pressure advance"
msgstr "启用压力提前"
msgid "Pressure advance"
msgstr "压力提前"
msgid "Pressure advnce(Klipper) AKA Linear advance factor(Marlin)"
msgstr "压力提前(Klipper)或者线性提前(Marlin)"
msgid "Enable pressure advance, auto calibration result will be overwriten once enabled."
msgstr "启用压力提前,一旦启用会覆盖自动检测的结果"
msgid "Line width of initial layer" msgid "Line width of initial layer"
msgstr "首层的线宽" msgstr "首层的线宽"
@ -5831,6 +5895,9 @@ msgstr "如果机器有辅助部件冷却风扇,勾选该选项"
msgid "G-code flavor" msgid "G-code flavor"
msgstr "G-code风格" msgstr "G-code风格"
msgid "G-code thumbnails"
msgstr "G-code缩略图尺寸"
msgid "What kind of gcode the printer is compatible with" msgid "What kind of gcode the printer is compatible with"
msgstr "打印机兼容的G-code风格'" msgstr "打印机兼容的G-code风格'"
@ -6210,6 +6277,15 @@ msgstr ""
msgid "Z hop when retract" msgid "Z hop when retract"
msgstr "回抽时抬升Z" msgstr "回抽时抬升Z"
msgid "Z hop type"
msgstr "抬Z类型"
msgid "NormalLift"
msgstr "直接抬Z"
msgid "SpiralLift"
msgstr "螺旋抬Z"
msgid "" msgid ""
"Whenever the retraction is done, the nozzle is lifted a little to create " "Whenever the retraction is done, the nozzle is lifted a little to create "
"clearance between nozzle and the print. It prevents nozzle from hitting the " "clearance between nozzle and the print. It prevents nozzle from hitting the "
@ -6539,6 +6615,9 @@ msgstr "除首层外的其它层的喷嘴温度"
msgid "Nozzle temperature" msgid "Nozzle temperature"
msgstr "喷嘴温度" msgstr "喷嘴温度"
msgid "Chamber temperature"
msgstr "机箱温度"
msgid "Bed temperature difference" msgid "Bed temperature difference"
msgstr "热床温差" msgstr "热床温差"

14
build_release.bat Normal file
View file

@ -0,0 +1,14 @@
set WP=%CD%
cd deps
mkdir build
cd build
set DEPS=%CD%/BambuStudio_dep
cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/BambuStudio_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
cd %WP%
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -DBBL_RELEASE_TO_PUBLIC=0 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
cmake --build . --config Release --target ALL_BUILD -- -m
cmake --build . --target install --config Release

20
build_release_macos.sh Executable file
View file

@ -0,0 +1,20 @@
#!/bin/sh
WD=$(pwd)
cd deps
mkdir -p build
cd build
DEPS=$PWD/BambuStudio_dep
mkdir -p $DEPS
cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-$(uname -m)-cc" -DCMAKE_BUILD_TYPE=Release
make -j10
cd $WD
mkdir -p build
cd build
cmake .. -DBBL_RELEASE_TO_PUBLIC=0 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON
cmake --build . --config Release --target all -j10
cmake --build . --target install --config Release -j10
cd BambuStudio-SoftFever
cp -r bin/BambuStudio.app/Contents/MacOS BambuStudio.app/Contents
cp -r bin/BambuStudio.app/Contents/Info.plist BambuStudio.app/Contents/

14
build_relwithdebinfo.bat Normal file
View file

@ -0,0 +1,14 @@
set WP=%CD%
cd deps
mkdir build
cd build
set DEPS=%CD%/BambuStudio_dep
cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/BambuStudio_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
cd %WP%
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -DBBL_RELEASE_TO_PUBLIC=0 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
cmake --build . --config RelWithDebInfo --target ALL_BUILD -- -m
@REM cmake --build . --target install --config RelWithDebInfo

Binary file not shown.

22
resources/images/add.svg Normal file
View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 128 128" enable-background="new 0 0 128 128" xml:space="preserve">
<g id="ADD">
<path fill="#FFFFFF" d="M72.3,117.5H10.5v-75h75v23.27c1.61-0.56,3.28-0.99,5-1.29V41.04l27-27V72.3c1.89,1.71,3.57,3.65,5,5.76V8
c0-0.05-0.01-0.1-0.02-0.15c0-0.06-0.01-0.11-0.02-0.17c-0.03-0.22-0.08-0.43-0.15-0.62c0,0,0-0.01,0-0.01c0,0,0,0,0,0
c-0.01-0.03-0.03-0.05-0.04-0.08c-0.05-0.11-0.11-0.21-0.17-0.31c-0.03-0.04-0.05-0.08-0.08-0.11c-0.06-0.08-0.13-0.16-0.2-0.24
c-0.03-0.03-0.06-0.07-0.09-0.1c-0.09-0.09-0.19-0.17-0.3-0.25c-0.01-0.01-0.02-0.02-0.04-0.03c-0.12-0.08-0.24-0.15-0.38-0.2
c-0.04-0.02-0.09-0.03-0.13-0.05c-0.1-0.04-0.2-0.07-0.3-0.09c-0.05-0.01-0.09-0.02-0.14-0.03c-0.15-0.03-0.3-0.05-0.45-0.05H48
c-0.57,0-1.12,0.19-1.56,0.55l-40,32c-0.03,0.03-0.06,0.06-0.09,0.09c-0.07,0.06-0.13,0.12-0.19,0.19
c-0.05,0.06-0.1,0.12-0.15,0.18c-0.05,0.07-0.09,0.13-0.14,0.2c-0.04,0.07-0.08,0.14-0.12,0.21c-0.03,0.07-0.07,0.15-0.09,0.22
c-0.03,0.08-0.05,0.16-0.07,0.24c-0.02,0.08-0.04,0.15-0.05,0.23c-0.01,0.09-0.02,0.18-0.03,0.27c0,0.04-0.01,0.08-0.01,0.13v80
c0,1.38,1.12,2.5,2.5,2.5h70.06C75.95,121.07,74.01,119.39,72.3,117.5z M48.88,10.5h65.09l-27,27H15.13L48.88,10.5z"/>
<g>
<path fill="#ED6B21" d="M96,69.5c-14.61,0-26.5,11.89-26.5,26.5s11.89,26.5,26.5,26.5s26.5-11.89,26.5-26.5S110.61,69.5,96,69.5z
M96,117.5c-11.86,0-21.5-9.64-21.5-21.5S84.14,74.5,96,74.5s21.5,9.64,21.5,21.5S107.86,117.5,96,117.5z"/>
<path fill="#ED6B21" d="M112,93.5H98.5V80c0-1.38-1.12-2.5-2.5-2.5s-2.5,1.12-2.5,2.5v13.5H80c-1.38,0-2.5,1.12-2.5,2.5
s1.12,2.5,2.5,2.5h13.5V112c0,1.38,1.12,2.5,2.5,2.5s2.5-1.12,2.5-2.5V98.5H112c1.38,0,2.5-1.12,2.5-2.5S113.38,93.5,112,93.5z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<g id="add_x5F_copies">
<g>
<path fill="#808080" d="M8,2c3.31,0,6,2.69,6,6s-2.69,6-6,6s-6-2.69-6-6S4.69,2,8,2 M8,1C4.13,1,1,4.13,1,8s3.13,7,7,7s7-3.13,7-7
S11.87,1,8,1L8,1z"/>
</g>
<g>
<path fill="#ED6B21" d="M12,8.75H4C3.59,8.75,3.25,8.41,3.25,8S3.59,7.25,4,7.25h8c0.41,0,0.75,0.34,0.75,0.75S12.41,8.75,12,8.75
z"/>
</g>
<g>
<path fill="#ED6B21" d="M8,12.75c-0.41,0-0.75-0.34-0.75-0.75V4c0-0.41,0.34-0.75,0.75-0.75S8.75,3.59,8.75,4v8
C8.75,12.41,8.41,12.75,8,12.75z"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 846 B

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<g id="browse">
<path fill="#ED6B21" d="M8.49,2.43c-1.71-1.71-4.49-1.71-6.2,0s-1.71,4.49,0,6.2c1.59,1.59,4.1,1.7,5.82,0.34l1.48,1.48
c0,0-0.36,0.36,0,0.73s3.65,3.65,3.65,3.65s0.36,0.36,0.73,0c0.36-0.36,0.73-0.73,0.73-0.73s0.36-0.36,0-0.73s-3.65-3.65-3.65-3.65
c-0.36-0.36-0.73,0-0.73,0L8.83,8.25C10.19,6.52,10.08,4.02,8.49,2.43z M8.1,8.25c-1.5,1.5-3.93,1.5-5.43,0s-1.5-3.93,0-5.43
s3.93-1.5,5.43,0S9.6,6.75,8.1,8.25z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 777 B

View file

@ -0,0 +1,110 @@
{
"name": "Anycubic",
"version": "01.02.00.03",
"force_update": "0",
"description": "Anycubic configurations",
"machine_model_list": [
{
"name": "Anycubic 4Max Pro",
"sub_path": "machine/Anycubic 4Max Pro.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "0.20mm Standard @4MaxPro",
"sub_path": "process/0.20mm Standard @4MaxPro.json"
}
],
"filament_list": [
{
"name": "fdm_filament_common",
"sub_path": "filament/fdm_filament_common.json"
},
{
"name": "fdm_filament_pla",
"sub_path": "filament/fdm_filament_pla.json"
},
{
"name": "fdm_filament_tpu",
"sub_path": "filament/fdm_filament_tpu.json"
},
{
"name": "fdm_filament_pet",
"sub_path": "filament/fdm_filament_pet.json"
},
{
"name": "fdm_filament_abs",
"sub_path": "filament/fdm_filament_abs.json"
},
{
"name": "fdm_filament_pc",
"sub_path": "filament/fdm_filament_pc.json"
},
{
"name": "fdm_filament_asa",
"sub_path": "filament/fdm_filament_asa.json"
},
{
"name": "fdm_filament_pva",
"sub_path": "filament/fdm_filament_pva.json"
},
{
"name": "fdm_filament_pa",
"sub_path": "filament/fdm_filament_pa.json"
},
{
"name": "Anycubic Generic PLA",
"sub_path": "filament/Anycubic Generic PLA.json"
},
{
"name": "Anycubic Generic PLA-CF",
"sub_path": "filament/Anycubic Generic PLA-CF.json"
},
{
"name": "Anycubic Generic PETG",
"sub_path": "filament/Anycubic Generic PETG.json"
},
{
"name": "Anycubic Generic ABS",
"sub_path": "filament/Anycubic Generic ABS.json"
},
{
"name": "Anycubic Generic TPU",
"sub_path": "filament/Anycubic Generic TPU.json"
},
{
"name": "Anycubic Generic ASA",
"sub_path": "filament/Anycubic Generic ASA.json"
},
{
"name": "Anycubic Generic PC",
"sub_path": "filament/Anycubic Generic PC.json"
},
{
"name": "Anycubic Generic PVA",
"sub_path": "filament/Anycubic Generic PVA.json"
},
{
"name": "Anycubic Generic PA",
"sub_path": "filament/Anycubic Generic PA.json"
},
{
"name": "Anycubic Generic PA-CF",
"sub_path": "filament/Anycubic Generic PA-CF.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "Anycubic 4Max Pro 0.4 nozzle",
"sub_path": "machine/Anycubic 4Max Pro 0.4 nozzle.json"
}
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB99",
"setting_id": "GFSB99",
"name": "Anycubic Generic ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.926"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB98",
"setting_id": "GFSB98",
"name": "Anycubic Generic ASA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_asa",
"filament_flow_ratio": [
"0.93"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFN98",
"setting_id": "GFSN99",
"name": "Anycubic Generic PA-CF",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pa",
"filament_type": [
"PA-CF"
],
"nozzle_temperature_initial_layer": [
"280"
],
"nozzle_temperature": [
"280"
],
"filament_max_volumetric_speed": [
"8"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFN99",
"setting_id": "GFSN98",
"name": "Anycubic Generic PA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pa",
"nozzle_temperature_initial_layer": [
"280"
],
"nozzle_temperature": [
"280"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFC99",
"setting_id": "GFSC99",
"name": "Anycubic Generic PC",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pc",
"filament_max_volumetric_speed": [
"12"
],
"filament_flow_ratio": [
"0.94"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,48 @@
{
"type": "filament",
"filament_id": "GFG99",
"setting_id": "GFSG99",
"name": "Anycubic Generic PETG",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pet",
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_cooling_layer_time": [
"30"
],
"overhang_fan_speed": [
"90"
],
"overhang_fan_threshold": [
"25%"
],
"fan_max_speed": [
"90"
],
"fan_min_speed": [
"40"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"8"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"10"
],
"filament_start_gcode": [
"; filament start gcode\n"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFL98",
"setting_id": "GFSL98",
"name": "Anycubic Generic PLA-CF",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_flow_ratio": [
"0.95"
],
"filament_type": [
"PLA-CF"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"7"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFL99",
"setting_id": "GFSL99",
"name": "Anycubic Generic PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"8"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFS99",
"setting_id": "GFSS99",
"name": "Anycubic Generic PVA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pva",
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"7"
],
"slow_down_min_speed": [
"20"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,15 @@
{
"type": "filament",
"filament_id": "GFU99",
"setting_id": "GFSR99",
"name": "Anycubic Generic TPU",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_tpu",
"filament_max_volumetric_speed": [
"3.2"
],
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_abs",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ABS"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"3"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_asa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"35"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ASA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"3"
]
}

View file

@ -0,0 +1,135 @@
{
"type": "filament",
"name": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"60"
],
"hot_plate_temp" : [
"60"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"60"
],
"hot_plate_temp_initial_layer" : [
"60"
],
"overhang_fan_threshold": [
"95%"
],
"overhang_fan_speed": [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"filament_end_gcode": [
"; filament end gcode \n"
],
"filament_flow_ratio": [
"1"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_cooling_layer_time": [
"60"
],
"filament_cost": [
"0"
],
"filament_density": [
"0"
],
"filament_deretraction_speed": [
"nil"
],
"filament_diameter": [
"1.75"
],
"filament_max_volumetric_speed": [
"0"
],
"filament_minimal_purge_on_wipe_tower": [
"15"
],
"filament_retraction_minimum_travel": [
"nil"
],
"filament_retract_before_wipe": [
"nil"
],
"filament_retract_when_changing_layer": [
"nil"
],
"filament_retraction_length": [
"nil"
],
"filament_z_hop": [
"nil"
],
"filament_retract_restart_extra": [
"nil"
],
"filament_retraction_speed": [
"nil"
],
"filament_settings_id": [
""
],
"filament_soluble": [
"0"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_wipe": [
"nil"
],
"filament_wipe_distance": [
"nil"
],
"bed_type": [
"Cool Plate"
],
"nozzle_temperature_initial_layer": [
"200"
],
"full_fan_speed_layer": [
"0"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"35"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"8"
],
"filament_start_gcode": [
"; Filament gcode\n"
],
"nozzle_temperature": [
"200"
],
"temperature_vitrification": [
"100"
]
}

View file

@ -0,0 +1,79 @@
{
"type": "filament",
"name": "fdm_filament_pa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"100"
],
"hot_plate_temp" : [
"100"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"100"
],
"hot_plate_temp_initial_layer" : [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"4"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_type": [
"PA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"290"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"0"
],
"overhang_fan_speed": [
"30"
],
"nozzle_temperature": [
"290"
],
"temperature_vitrification": [
"108"
],
"nozzle_temperature_range_low": [
"270"
],
"nozzle_temperature_range_high": [
"300"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"2"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_pc",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"110"
],
"hot_plate_temp" : [
"110"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"110"
],
"hot_plate_temp_initial_layer" : [
"110"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"23.2"
],
"filament_type": [
"PC"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"270"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"60"
],
"nozzle_temperature": [
"280"
],
"temperature_vitrification": [
"140"
],
"nozzle_temperature_range_low": [
"260"
],
"nozzle_temperature_range_high": [
"280"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"2"
]
}

View file

@ -0,0 +1,76 @@
{
"type": "filament",
"name": "fdm_filament_pet",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"80"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"80"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"20"
],
"filament_max_volumetric_speed": [
"25"
],
"filament_type": [
"PETG"
],
"filament_density": [
"1.27"
],
"filament_cost": [
"30"
],
"nozzle_temperature_initial_layer": [
"255"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"20"
],
"overhang_fan_speed": [
"100"
],
"nozzle_temperature": [
"255"
],
"temperature_vitrification": [
"80"
],
"nozzle_temperature_range_low": [
"220"
],
"nozzle_temperature_range_high": [
"260"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,88 @@
{
"type": "filament",
"name": "fdm_filament_pla",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"12"
],
"filament_type": [
"PLA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"230"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,94 @@
{
"type": "filament",
"name": "fdm_filament_pva",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_soluble": [
"1"
],
"filament_is_support": [
"1"
],
"filament_type": [
"PVA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"50"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"250"
],
"slow_down_min_speed": [
"50"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_tpu",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"30"
],
"eng_plate_temp" : [
"30"
],
"hot_plate_temp" : [
"35"
],
"cool_plate_temp_initial_layer" : [
"30"
],
"eng_plate_temp_initial_layer" : [
"30"
],
"hot_plate_temp_initial_layer" : [
"35"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_type": [
"TPU"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"filament_retraction_length": [
"0.4"
],
"nozzle_temperature_initial_layer": [
"240"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"additional_cooling_fan_speed": [
"70"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"240"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"200"
],
"nozzle_temperature_range_high": [
"250"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,30 @@
{
"type": "machine",
"setting_id": "GM003",
"name": "Anycubic 4Max Pro 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "Anycubic 4Max Pro",
"default_print_profile": "0.20mm Standard @4MaxPro",
"nozzle_diameter": [
"0.4"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"0x0",
"270x0",
"270x205",
"0x205"
],
"printable_height": "200",
"machine_start_gcode": ";M190 S0\n;M104 S0\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n; You can use following code instead if your PRINT_START macro support Chamber and print area bedmesh\n; PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single] Chamber=[chamber_temperature] PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}",
"machine_end_gcode": "PRINT_END",
"layer_change_gcode": "",
"scan_first_layer": "0",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}

View file

@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Anycubic 4Max Pro",
"model_id": "AC-4maxpro",
"nozzle_diameter": "0.4",
"machine_tech": "FFF",
"family": "Anycubic",
"bed_model": "",
"bed_texture": "",
"hotend_model": "bbl-3dp-hotend.stl",
"default_materials": "Anycubic Generic ABS;Anycubic Generic PLA;Anycubic Generic PLA-CF;Anycubic Generic PETG;Anycubic Generic TPU;Anycubic Generic ASA;Anycubic Generic PC;Anycubic Generic PVA;Anycubic Generic PA;Anycubic Generic PA-CF"
}

View file

@ -0,0 +1,139 @@
{
"type": "machine",
"name": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "marlin",
"machine_start_gcode": "",
"machine_end_gcode": "",
"extruder_colour": [
"#018001"
],
"extruder_offset": [
"0x0"
],
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"2000",
"2000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"3000",
"3000"
],
"machine_max_acceleration_x": [
"2000",
"2000"
],
"machine_max_acceleration_y": [
"2000",
"2000"
],
"machine_max_acceleration_z": [
"300",
"200"
],
"machine_max_speed_e": [
"25",
"25"
],
"machine_max_speed_x": [
"300",
"200"
],
"machine_max_speed_y": [
"300",
"200"
],
"machine_max_speed_z": [
"12",
"12"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"0.2",
"0.4"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"max_layer_height": [
"0.3"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"nozzle_diameter": [
"0.4"
],
"printer_settings_id": "",
"printer_technology": "FFF",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"1"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"0.8"
],
"retract_length_toolchange": [
"2"
],
"z_hop": [
"0.4"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"30"
],
"deretraction_speed": [
"30"
],
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"layer_change_gcode": "",
"machine_pause_gcode": "M400 U1\n",
"wipe": [
"1"
],
"z_lift_type": "NormalLift"
}

View file

@ -0,0 +1,20 @@
{
"type": "process",
"setting_id": "Anycubic-1",
"name": "0.20mm Standard @4MaxPro",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"initial_layer_speed": "40",
"initial_layer_infill_speed": "50",
"outer_wall_speed": "35",
"inner_wall_speed": "60",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"top_surface_speed": "50",
"gap_infill_speed": "40",
"travel_speed": "180",
"compatible_printers": [
"Anycubic 4Max Pro 0.4 nozzle"
]
}

View file

@ -0,0 +1,107 @@
{
"type": "process",
"name": "fdm_process_common",
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
"reduce_crossing_wall": "0",
"max_travel_detour_distance": "0",
"bottom_surface_pattern": "monotonic",
"bottom_shell_thickness": "0",
"bridge_speed": "50",
"brim_width": "5",
"brim_object_gap": "0.1",
"compatible_printers": [],
"compatible_printers_condition": "",
"print_sequence": "by layer",
"default_acceleration": "1000",
"initial_layer_acceleration": "500",
"top_surface_acceleration": "800",
"travel_acceleration": "1000",
"inner_wall_acceleration": "900",
"outer_wall_acceleration": "700",
"bridge_no_support": "0",
"draft_shield": "disabled",
"elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4",
"infill_direction": "45",
"sparse_infill_density": "15%",
"sparse_infill_pattern": "grid",
"initial_layer_line_width": "0.5",
"initial_layer_print_height": "0.2",
"infill_combination": "0",
"sparse_infill_line_width": "0.45",
"infill_wall_overlap": "25%",
"interface_shells": "0",
"ironing_flow": "10%",
"ironing_spacing": "0.15",
"ironing_speed": "30",
"ironing_type": "no ironing",
"reduce_infill_retraction": "1",
"filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
"detect_overhang_wall": "1",
"overhang_1_4_speed": "0",
"overhang_2_4_speed": "50",
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "2",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",
"skirt_distance": "2",
"skirt_height": "1",
"skirt_loops": "0",
"minimum_sparse_infill_area": "15",
"internal_solid_infill_line_width": "0.4",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
"enable_support": "0",
"resolution": "0.012",
"support_type": "normal(auto)",
"support_on_build_plate_only": "0",
"support_top_z_distance": "0.2",
"support_filament": "0",
"support_line_width": "0.4",
"support_interface_loop_pattern": "0",
"support_interface_filament": "0",
"support_interface_top_layers": "2",
"support_interface_bottom_layers": "2",
"support_interface_spacing": "0.5",
"support_interface_speed": "80",
"support_base_pattern": "rectilinear",
"support_base_pattern_spacing": "2.5",
"support_speed": "150",
"support_threshold_angle": "30",
"support_object_xy_distance": "0.35",
"tree_support_branch_angle": "30",
"tree_support_wall_count": "0",
"tree_support_with_infill": "0",
"detect_thin_wall": "0",
"top_surface_pattern": "monotonicline",
"top_surface_line_width": "0.4",
"top_shell_thickness": "0.8",
"enable_prime_tower": "1",
"wipe_tower_no_sparse_layers": "0",
"prime_tower_width": "35",
"xy_hole_compensation": "0",
"xy_contour_compensation": "0",
"layer_height": "0.2",
"bottom_shell_layers": "3",
"top_shell_layers": "4",
"bridge_flow": "1",
"initial_layer_speed": "45",
"initial_layer_infill_speed": "45",
"outer_wall_speed": "45",
"inner_wall_speed": "80",
"sparse_infill_speed": "150",
"internal_solid_infill_speed": "150",
"top_surface_speed": "50",
"gap_infill_speed": "30",
"travel_speed": "200",
"enable_arc_fitting": "0"
}

View file

@ -1,6 +1,6 @@
{ {
"name": "Creality", "name": "Creality",
"version": "01.02.01.03", "version": "01.02.01.04",
"force_update": "0", "force_update": "0",
"description": "Creality configurations", "description": "Creality configurations",
"machine_model_list": [ "machine_model_list": [

View file

@ -102,7 +102,7 @@
"2" "2"
], ],
"z_hop": [ "z_hop": [
"0" "0.4"
], ],
"retract_restart_extra": [ "retract_restart_extra": [
"0" "0"

View file

@ -110,6 +110,7 @@
"wipe": [ "wipe": [
"1" "1"
], ],
"z_lift_type": "NormalLift",
"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",
"machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end" "machine_end_gcode": "M400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-4.0 F3600; retract \nG91\nG1 Z3;\nM104 S0 ; turn off hotend\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nG90 \nG0 X110 Y200 F3600 \nprint_end"

View file

@ -0,0 +1,110 @@
{
"name": "Prusa",
"version": "01.02.00.02",
"force_update": "0",
"description": "Prusa configurations",
"machine_model_list": [
{
"name": "Prusa MK3S",
"sub_path": "machine/Prusa MK3S.json"
}
],
"process_list": [
{
"name": "fdm_process_common",
"sub_path": "process/fdm_process_common.json"
},
{
"name": "0.20mm Standard @MK3S",
"sub_path": "process/0.20mm Standard @MK3S.json"
}
],
"filament_list": [
{
"name": "fdm_filament_common",
"sub_path": "filament/fdm_filament_common.json"
},
{
"name": "fdm_filament_pla",
"sub_path": "filament/fdm_filament_pla.json"
},
{
"name": "fdm_filament_tpu",
"sub_path": "filament/fdm_filament_tpu.json"
},
{
"name": "fdm_filament_pet",
"sub_path": "filament/fdm_filament_pet.json"
},
{
"name": "fdm_filament_abs",
"sub_path": "filament/fdm_filament_abs.json"
},
{
"name": "fdm_filament_pc",
"sub_path": "filament/fdm_filament_pc.json"
},
{
"name": "fdm_filament_asa",
"sub_path": "filament/fdm_filament_asa.json"
},
{
"name": "fdm_filament_pva",
"sub_path": "filament/fdm_filament_pva.json"
},
{
"name": "fdm_filament_pa",
"sub_path": "filament/fdm_filament_pa.json"
},
{
"name": "Prusa Generic PLA",
"sub_path": "filament/Prusa Generic PLA.json"
},
{
"name": "Prusa Generic PLA-CF",
"sub_path": "filament/Prusa Generic PLA-CF.json"
},
{
"name": "Prusa Generic PETG",
"sub_path": "filament/Prusa Generic PETG.json"
},
{
"name": "Prusa Generic ABS",
"sub_path": "filament/Prusa Generic ABS.json"
},
{
"name": "Prusa Generic TPU",
"sub_path": "filament/Prusa Generic TPU.json"
},
{
"name": "Prusa Generic ASA",
"sub_path": "filament/Prusa Generic ASA.json"
},
{
"name": "Prusa Generic PC",
"sub_path": "filament/Prusa Generic PC.json"
},
{
"name": "Prusa Generic PVA",
"sub_path": "filament/Prusa Generic PVA.json"
},
{
"name": "Prusa Generic PA",
"sub_path": "filament/Prusa Generic PA.json"
},
{
"name": "Prusa Generic PA-CF",
"sub_path": "filament/Prusa Generic PA-CF.json"
}
],
"machine_list": [
{
"name": "fdm_machine_common",
"sub_path": "machine/fdm_machine_common.json"
},
{
"name": "Prusa MK3S 0.4 nozzle",
"sub_path": "machine/Prusa MK3S 0.4 nozzle.json"
}
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB99",
"setting_id": "GFSB99",
"name": "Prusa Generic ABS",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_abs",
"filament_flow_ratio": [
"0.926"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFB98",
"setting_id": "GFSB98",
"name": "Prusa Generic ASA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_asa",
"filament_flow_ratio": [
"0.93"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFN98",
"setting_id": "GFSN99",
"name": "Prusa Generic PA-CF",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pa",
"filament_type": [
"PA-CF"
],
"nozzle_temperature_initial_layer": [
"280"
],
"nozzle_temperature": [
"280"
],
"filament_max_volumetric_speed": [
"8"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFN99",
"setting_id": "GFSN98",
"name": "Prusa Generic PA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pa",
"nozzle_temperature_initial_layer": [
"280"
],
"nozzle_temperature": [
"280"
],
"filament_max_volumetric_speed": [
"12"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,18 @@
{
"type": "filament",
"filament_id": "GFC99",
"setting_id": "GFSC99",
"name": "Prusa Generic PC",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pc",
"filament_max_volumetric_speed": [
"12"
],
"filament_flow_ratio": [
"0.94"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,48 @@
{
"type": "filament",
"filament_id": "GFG99",
"setting_id": "GFSG99",
"name": "Prusa Generic PETG",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pet",
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_cooling_layer_time": [
"30"
],
"overhang_fan_speed": [
"90"
],
"overhang_fan_threshold": [
"25%"
],
"fan_max_speed": [
"90"
],
"fan_min_speed": [
"40"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"8"
],
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"10"
],
"filament_start_gcode": [
"; filament start gcode\n"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFL98",
"setting_id": "GFSL98",
"name": "Prusa Generic PLA-CF",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_flow_ratio": [
"0.95"
],
"filament_type": [
"PLA-CF"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"7"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,21 @@
{
"type": "filament",
"filament_id": "GFL99",
"setting_id": "GFSL99",
"name": "Prusa Generic PLA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pla",
"filament_flow_ratio": [
"0.98"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"8"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,24 @@
{
"type": "filament",
"filament_id": "GFS99",
"setting_id": "GFSS99",
"name": "Prusa Generic PVA",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_pva",
"filament_flow_ratio": [
"0.95"
],
"filament_max_volumetric_speed": [
"12"
],
"slow_down_layer_time": [
"7"
],
"slow_down_min_speed": [
"20"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,15 @@
{
"type": "filament",
"filament_id": "GFU99",
"setting_id": "GFSR99",
"name": "Prusa Generic TPU",
"from": "system",
"instantiation": "true",
"inherits": "fdm_filament_tpu",
"filament_max_volumetric_speed": [
"3.2"
],
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_abs",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ABS"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"3"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_asa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"105"
],
"eng_plate_temp" : [
"105"
],
"hot_plate_temp" : [
"105"
],
"cool_plate_temp_initial_layer" : [
"105"
],
"eng_plate_temp_initial_layer" : [
"105"
],
"hot_plate_temp_initial_layer" : [
"105"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"35"
],
"filament_max_volumetric_speed": [
"28.6"
],
"filament_type": [
"ASA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"260"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"80"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"80"
],
"nozzle_temperature": [
"260"
],
"temperature_vitrification": [
"110"
],
"nozzle_temperature_range_low": [
"240"
],
"nozzle_temperature_range_high": [
"270"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"3"
]
}

View file

@ -0,0 +1,135 @@
{
"type": "filament",
"name": "fdm_filament_common",
"from": "system",
"instantiation": "false",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"60"
],
"hot_plate_temp" : [
"60"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"60"
],
"hot_plate_temp_initial_layer" : [
"60"
],
"overhang_fan_threshold": [
"95%"
],
"overhang_fan_speed": [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"filament_end_gcode": [
"; filament end gcode \n"
],
"filament_flow_ratio": [
"1"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_cooling_layer_time": [
"60"
],
"filament_cost": [
"0"
],
"filament_density": [
"0"
],
"filament_deretraction_speed": [
"nil"
],
"filament_diameter": [
"1.75"
],
"filament_max_volumetric_speed": [
"0"
],
"filament_minimal_purge_on_wipe_tower": [
"15"
],
"filament_retraction_minimum_travel": [
"nil"
],
"filament_retract_before_wipe": [
"nil"
],
"filament_retract_when_changing_layer": [
"nil"
],
"filament_retraction_length": [
"nil"
],
"filament_z_hop": [
"nil"
],
"filament_retract_restart_extra": [
"nil"
],
"filament_retraction_speed": [
"nil"
],
"filament_settings_id": [
""
],
"filament_soluble": [
"0"
],
"filament_type": [
"PLA"
],
"filament_vendor": [
"Generic"
],
"filament_wipe": [
"nil"
],
"filament_wipe_distance": [
"nil"
],
"bed_type": [
"Cool Plate"
],
"nozzle_temperature_initial_layer": [
"200"
],
"full_fan_speed_layer": [
"0"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"35"
],
"slow_down_min_speed": [
"10"
],
"slow_down_layer_time": [
"8"
],
"filament_start_gcode": [
"; Filament gcode\n"
],
"nozzle_temperature": [
"200"
],
"temperature_vitrification": [
"100"
]
}

View file

@ -0,0 +1,79 @@
{
"type": "filament",
"name": "fdm_filament_pa",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"100"
],
"hot_plate_temp" : [
"100"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"100"
],
"hot_plate_temp_initial_layer" : [
"100"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"4"
],
"filament_max_volumetric_speed": [
"8"
],
"filament_type": [
"PA"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"290"
],
"reduce_fan_stop_start_freq": [
"0"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"0"
],
"overhang_fan_speed": [
"30"
],
"nozzle_temperature": [
"290"
],
"temperature_vitrification": [
"108"
],
"nozzle_temperature_range_low": [
"270"
],
"nozzle_temperature_range_high": [
"300"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"2"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_pc",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"0"
],
"eng_plate_temp" : [
"110"
],
"hot_plate_temp" : [
"110"
],
"cool_plate_temp_initial_layer" : [
"0"
],
"eng_plate_temp_initial_layer" : [
"110"
],
"hot_plate_temp_initial_layer" : [
"110"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"30"
],
"filament_max_volumetric_speed": [
"23.2"
],
"filament_type": [
"PC"
],
"filament_density": [
"1.04"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"270"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"60"
],
"fan_min_speed": [
"10"
],
"overhang_fan_threshold": [
"25%"
],
"overhang_fan_speed": [
"60"
],
"nozzle_temperature": [
"280"
],
"temperature_vitrification": [
"140"
],
"nozzle_temperature_range_low": [
"260"
],
"nozzle_temperature_range_high": [
"280"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"2"
]
}

View file

@ -0,0 +1,76 @@
{
"type": "filament",
"name": "fdm_filament_pet",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"60"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"80"
],
"cool_plate_temp_initial_layer" : [
"60"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"80"
],
"slow_down_for_layer_cooling": [
"1"
],
"close_fan_the_first_x_layers": [
"3"
],
"fan_cooling_layer_time": [
"20"
],
"filament_max_volumetric_speed": [
"25"
],
"filament_type": [
"PETG"
],
"filament_density": [
"1.27"
],
"filament_cost": [
"30"
],
"nozzle_temperature_initial_layer": [
"255"
],
"reduce_fan_stop_start_freq": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"20"
],
"overhang_fan_speed": [
"100"
],
"nozzle_temperature": [
"255"
],
"temperature_vitrification": [
"80"
],
"nozzle_temperature_range_low": [
"220"
],
"nozzle_temperature_range_high": [
"260"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,88 @@
{
"type": "filament",
"name": "fdm_filament_pla",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"12"
],
"filament_type": [
"PLA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"230"
],
"slow_down_min_speed": [
"20"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,94 @@
{
"type": "filament",
"name": "fdm_filament_pva",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"35"
],
"eng_plate_temp" : [
"0"
],
"hot_plate_temp" : [
"45"
],
"cool_plate_temp_initial_layer" : [
"35"
],
"eng_plate_temp_initial_layer" : [
"0"
],
"hot_plate_temp_initial_layer" : [
"45"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_soluble": [
"1"
],
"filament_is_support": [
"1"
],
"filament_type": [
"PVA"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"nozzle_temperature_initial_layer": [
"220"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"overhang_fan_threshold": [
"50%"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"220"
],
"temperature_vitrification": [
"50"
],
"nozzle_temperature_range_low": [
"190"
],
"nozzle_temperature_range_high": [
"250"
],
"slow_down_min_speed": [
"50"
],
"slow_down_layer_time": [
"4"
],
"additional_cooling_fan_speed": [
"70"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,82 @@
{
"type": "filament",
"name": "fdm_filament_tpu",
"from": "system",
"instantiation": "false",
"inherits": "fdm_filament_common",
"cool_plate_temp" : [
"30"
],
"eng_plate_temp" : [
"30"
],
"hot_plate_temp" : [
"35"
],
"cool_plate_temp_initial_layer" : [
"30"
],
"eng_plate_temp_initial_layer" : [
"30"
],
"hot_plate_temp_initial_layer" : [
"35"
],
"fan_cooling_layer_time": [
"100"
],
"filament_max_volumetric_speed": [
"15"
],
"filament_type": [
"TPU"
],
"filament_density": [
"1.24"
],
"filament_cost": [
"20"
],
"filament_retraction_length": [
"0.4"
],
"nozzle_temperature_initial_layer": [
"240"
],
"reduce_fan_stop_start_freq": [
"1"
],
"slow_down_for_layer_cooling": [
"1"
],
"fan_max_speed": [
"100"
],
"fan_min_speed": [
"100"
],
"overhang_fan_speed": [
"100"
],
"additional_cooling_fan_speed": [
"70"
],
"close_fan_the_first_x_layers": [
"1"
],
"nozzle_temperature": [
"240"
],
"temperature_vitrification": [
"60"
],
"nozzle_temperature_range_low": [
"200"
],
"nozzle_temperature_range_high": [
"250"
],
"filament_start_gcode": [
"; filament start gcode\n"
]
}

View file

@ -0,0 +1,34 @@
{
"type": "machine",
"setting_id": "GM003",
"name": "Prusa MK3S 0.4 nozzle",
"from": "system",
"instantiation": "true",
"inherits": "fdm_machine_common",
"printer_model": "Prusa MK3S",
"default_filament_profile": [
"Prusa Generic PLA"
],
"default_print_profile": "0.20mm Standard @MK3S",
"nozzle_diameter": [
"0.4"
],
"bed_exclude_area": [
"0x0"
],
"printable_area": [
"0x0",
"250x0",
"250x210",
"0x210"
],
"printable_height": "210",
"machine_start_gcode": "M862.3 P \"[printer_model]\" ; printer model check\nG90 ; use absolute coordinates\nM83 ; extruder relative mode\nM104 S170 ; set extruder temp for bed leveling\nM140 S[bed_temperature_initial_layer_single] ; set bed temp\nM109 R170 ; wait for bed leveling temp\nM190 S[bed_temperature_initial_layer_single] ; wait for bed temp\nM204 T1250 ; set travel acceleration\nG28 ; home all without mesh bed level\nG29 ; mesh bed leveling \nM204 T[machine_max_acceleration_travel] ; restore travel acceleration\nM104 S[nozzle_temperature_initial_layer] ; set extruder temp\nG92 E0\nG1 Y-2 X179 F2400\nG1 Z3 F720\nM109 S[nozzle_temperature_initial_layer] ; wait for extruder temp\n\n; intro line\nG1 X170 F1000\nG1 Z0.2 F720\nG1 X110 E8 F900\nG1 X40 E10 F700\nG92 E0\n\nM221 S95 ; set flow",
"machine_end_gcode": "G1 E-1 F2100 ; retract\n{if max_layer_z < 210}G1 Z{min(max_layer_z+2, 210)} F720 ; Move print head up{endif}\nG1 X178 Y178 F4200 ; park print head\n{if max_layer_z < 210}G1 Z{min(max_layer_z+30, 210)} F720 ; Move print head further up{endif}\nG4 ; wait\nM104 S0 ; turn off temperature\nM140 S0 ; turn off heatbed\nM107 ; turn off fan\nM221 S100 ; reset flow\nM900 K0 ; reset LA\nM84 ; disable motors",
"layer_change_gcode": "",
"scan_first_layer": "0",
"machine_load_filament_time": "17",
"machine_unload_filament_time": "16",
"nozzle_type": "hardened_steel",
"auxiliary_fan": "0"
}

View file

@ -0,0 +1,12 @@
{
"type": "machine_model",
"name": "Prusa MK3S",
"model_id": "MK3S",
"nozzle_diameter": "0.4",
"machine_tech": "FFF",
"family": "Prusa",
"bed_model": "mk3_bed.stl",
"bed_texture": "mk3.svg",
"hotend_model": "bbl-3dp-hotend.stl",
"default_materials": "Prusa Generic ABS;Prusa Generic PLA;Prusa Generic PLA-CF;Prusa Generic PETG;Prusa Generic TPU;Prusa Generic ASA;Prusa Generic PC;Prusa Generic PVA;Prusa Generic PA;Prusa Generic PA-CF"
}

View file

@ -0,0 +1,137 @@
{
"type": "machine",
"name": "fdm_machine_common",
"from": "system",
"instantiation": "false",
"gcode_flavor": "marlin",
"machine_start_gcode": "",
"machine_end_gcode": "",
"extruder_colour": [
"#018001"
],
"extruder_offset": [
"0x0"
],
"machine_max_acceleration_e": [
"5000",
"5000"
],
"machine_max_acceleration_extruding": [
"2000",
"2000"
],
"machine_max_acceleration_retracting": [
"5000",
"5000"
],
"machine_max_acceleration_travel": [
"3000",
"3000"
],
"machine_max_acceleration_x": [
"2000",
"2000"
],
"machine_max_acceleration_y": [
"2000",
"2000"
],
"machine_max_acceleration_z": [
"300",
"200"
],
"machine_max_speed_e": [
"25",
"25"
],
"machine_max_speed_x": [
"300",
"200"
],
"machine_max_speed_y": [
"300",
"200"
],
"machine_max_speed_z": [
"12",
"12"
],
"machine_max_jerk_e": [
"2.5",
"2.5"
],
"machine_max_jerk_x": [
"9",
"9"
],
"machine_max_jerk_y": [
"9",
"9"
],
"machine_max_jerk_z": [
"0.2",
"0.4"
],
"machine_min_extruding_rate": [
"0",
"0"
],
"machine_min_travel_rate": [
"0",
"0"
],
"max_layer_height": [
"0.3"
],
"min_layer_height": [
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "65",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "140",
"nozzle_diameter": [
"0.4"
],
"printer_settings_id": "",
"printer_technology": "FFF",
"printer_variant": "0.4",
"retraction_minimum_travel": [
"1"
],
"retract_before_wipe": [
"70%"
],
"retract_when_changing_layer": [
"1"
],
"retraction_length": [
"0.8"
],
"retract_length_toolchange": [
"2"
],
"z_hop": [
"0.4"
],
"retract_restart_extra": [
"0"
],
"retract_restart_extra_toolchange": [
"0"
],
"retraction_speed": [
"30"
],
"deretraction_speed": [
"30"
],
"silent_mode": "0",
"single_extruder_multi_material": "1",
"change_filament_gcode": "",
"layer_change_gcode": "",
"machine_pause_gcode": "M400 U1\n",
"wipe": [
"1"
]
}

View file

@ -0,0 +1,930 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
width="710.08"
height="596.69"
viewBox="0 0 710.08 596.69"
version="1.1"
id="svg3128">
<metadata
id="metadata3134">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>MK3_bottom</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3132" />
<title
id="title2792">MK3_bottom</title>
<line
x1="0.71"
y1="0.71"
x2="0.71"
y2="595.98"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2794"
style="stroke-width:1.42;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="142.44833"
y1="0.71833557"
x2="142.44833"
y2="595.61292"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.43667"
id="line2796"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="284.16168"
y1="0.71833557"
x2="284.16168"
y2="595.61292"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.43667"
id="line2798"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="709.37"
y1="595.97998"
x2="709.37"
y2="0.70999998"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.43721"
id="line2800"
style="stroke-width:1.42;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.1709223"
y1="581.81"
x2="709.37"
y2="581.81"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.4333"
id="line2802" />
<line
x1="0.71"
y1="595.98"
x2="709.37"
y2="595.98"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2804" />
<line
x1="1.1709223"
y1="440.07999"
x2="709.37"
y2="440.07999"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.4333"
id="line2806" />
<line
x1="1.1709223"
y1="298.35001"
x2="709.37"
y2="298.35001"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.4333"
id="line2808" />
<line
x1="1.1709223"
y1="156.61"
x2="709.37"
y2="156.61"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.4333"
id="line2810" />
<line
x1="1.1709223"
y1="14.88"
x2="709.37"
y2="14.88"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.4333"
id="line2812" />
<line
x1="709.37"
y1="0.71"
x2="0.71"
y2="0.71"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2814" />
<line
x1="425.91"
y1="0.71"
x2="425.91"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2816"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="425.91"
y1="522.54852"
x2="425.91"
y2="595.72882"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.11117"
id="line2818"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="567.64"
y1="0.71"
x2="567.64"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2820"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="567.64"
y1="522.54"
x2="567.64"
y2="527.69"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.42"
id="line2822"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="567.64001"
y1="548.59186"
x2="567.64001"
y2="595.39081"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="1.67836"
id="line2824"
style="stroke-width:1.433;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="85.751419"
y1="0.71222502"
x2="85.751419"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2826" />
<line
x1="114.09101"
y1="0.71222502"
x2="114.09101"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2828" />
<line
x1="170.79019"
y1="0.71222502"
x2="170.79019"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2830" />
<line
x1="199.12981"
y1="0.71222502"
x2="199.12981"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2832" />
<line
x1="227.47939"
y1="0.71222502"
x2="227.47939"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2834" />
<line
x1="255.82899"
y1="0.71222502"
x2="255.82899"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2836" />
<line
x1="312.51816"
y1="0.71222502"
x2="312.51816"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2838" />
<line
x1="340.86777"
y1="0.71222502"
x2="340.86777"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2840" />
<line
x1="681.02002"
y1="0.71449536"
x2="681.02002"
y2="595.93481"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.374468"
id="line2842" />
<line
x1="29.062225"
y1="0.71222502"
x2="29.062225"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2844"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="57.401821"
y1="0.71222502"
x2="57.401821"
y2="595.883"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37445"
id="line2846" />
<line
x1="1.4567798"
y1="468.42999"
x2="709.37"
y2="468.42999"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2848"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="496.76999"
x2="709.37"
y2="496.76999"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2850"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="525.12"
x2="709.37"
y2="525.12"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2852"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="553.46002"
x2="709.37"
y2="553.46002"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2854"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="411.73001"
x2="709.37"
y2="411.73001"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2856"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="383.39001"
x2="709.37"
y2="383.39001"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2858"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="355.04001"
x2="709.37"
y2="355.04001"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2860"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="326.69"
x2="709.37"
y2="326.69"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2862"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="270"
x2="709.37"
y2="270"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2864"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="241.64999"
x2="709.37"
y2="241.64999"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2866"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="213.31"
x2="709.37"
y2="213.31"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2868"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="184.96001"
x2="709.37"
y2="184.96001"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2870"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="128.27"
x2="709.37"
y2="128.27"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2872"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="99.919998"
x2="709.37"
y2="99.919998"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2874"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="71.57"
x2="709.37"
y2="71.57"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2876"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="1.4567798"
y1="43.23"
x2="709.37"
y2="43.23"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.373389"
id="line2878"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="369.21"
y1="0.71"
x2="369.21"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2880"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="369.23029"
y1="522.5603"
x2="369.23029"
y2="595.6524"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.41059"
id="line2882"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="397.56"
y1="0.71"
x2="397.56"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2884"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="397.5397"
y1="522.5603"
x2="397.5397"
y2="595.6524"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.41059"
id="line2886"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="454.25"
y1="0.71"
x2="454.25"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2888"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="454.27032"
y1="522.5603"
x2="454.27032"
y2="595.61359"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.410677"
id="line2890"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="482.6"
y1="0.71"
x2="482.6"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2892"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="482.60678"
y1="522.5603"
x2="482.60678"
y2="595.61359"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.410677"
id="line2894"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="510.94"
y1="0.71"
x2="510.94"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2896"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="510.93323"
y1="522.5603"
x2="510.93323"
y2="595.61359"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.410677"
id="line2898"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="539.29"
y1="0.71"
x2="539.29"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2900"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="539.26965"
y1="522.5603"
x2="539.26965"
y2="595.61359"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.410677"
id="line2902"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="595.98"
y1="0.71"
x2="595.98"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2904"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="624.33"
y1="0.71"
x2="624.33"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2906"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="652.68"
y1="0.71"
x2="652.68"
y2="499.35"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2908"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="652.68"
y1="522.54"
x2="652.68"
y2="527.69"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2910"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="652.64447"
y1="548.34552"
x2="652.64447"
y2="595.99268"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.440987"
id="line2912"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="624.33"
y1="522.54"
x2="624.33"
y2="527.69"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2914"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="624.33002"
y1="548.34552"
x2="624.33002"
y2="595.99268"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.440987"
id="line2916"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="595.98"
y1="522.54"
x2="595.98"
y2="527.69"
fill="none"
stroke="#fff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.37"
id="line2918"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<line
x1="596.0155"
y1="548.34552"
x2="596.0155"
y2="595.99268"
fill="none"
stroke="#ffffff"
stroke-linecap="round"
stroke-linejoin="round"
stroke-width="0.440987"
id="line2920"
style="stroke-width:0.374;stroke-miterlimit:4;stroke-dasharray:none" />
<path
d="M377.71,502.59a8,8,0,0,1,3.44.72,7.6,7.6,0,0,1,2.58,1.95,8.78,8.78,0,0,1,1.62,2.85,10.85,10.85,0,0,1,0,6.94,8.67,8.67,0,0,1-1.62,2.85,7.45,7.45,0,0,1-2.58,1.94,8.71,8.71,0,0,1-6.89,0,7.64,7.64,0,0,1-2.58-1.94,8.67,8.67,0,0,1-1.62-2.85,11,11,0,0,1,0-6.94,8.78,8.78,0,0,1,1.62-2.85,7.8,7.8,0,0,1,2.58-1.95A8,8,0,0,1,377.71,502.59Zm0,2.45a4.94,4.94,0,0,0-2.37.55,4.7,4.7,0,0,0-1.62,1.48,6.87,6.87,0,0,0-.92,2.1,9.75,9.75,0,0,0,0,4.8,6.87,6.87,0,0,0,.92,2.1,4.7,4.7,0,0,0,1.62,1.48,4.94,4.94,0,0,0,2.37.55,4.87,4.87,0,0,0,2.36-.55,4.7,4.7,0,0,0,1.62-1.48,6.64,6.64,0,0,0,.92-2.1,9.45,9.45,0,0,0,0-4.8,6.64,6.64,0,0,0-.92-2.1,4.7,4.7,0,0,0-1.62-1.48A4.87,4.87,0,0,0,377.71,505Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3068" />
<path
d="M388.65,503h8.18a6.32,6.32,0,0,1,4.25,1.23,4.23,4.23,0,0,1,1.42,3.4,5,5,0,0,1-.36,2,4.42,4.42,0,0,1-.84,1.3,3.4,3.4,0,0,1-.95.71c-.31.14-.54.23-.68.28V512a2.88,2.88,0,0,1,.82.24,2.38,2.38,0,0,1,.83.61,3.38,3.38,0,0,1,.64,1.09,4.82,4.82,0,0,1,.25,1.69,15.32,15.32,0,0,0,.23,2.74,3.59,3.59,0,0,0,.71,1.77h-3.22a2.88,2.88,0,0,1-.4-1.23c0-.44-.06-.88-.06-1.29a12,12,0,0,0-.14-2,3.57,3.57,0,0,0-.53-1.42,2.18,2.18,0,0,0-1-.82,4.53,4.53,0,0,0-1.69-.27h-4.42v7.06h-3Zm3,7.8h4.92a3.17,3.17,0,0,0,2.19-.68,2.68,2.68,0,0,0,.74-2.05,3.21,3.21,0,0,0-.24-1.34,1.94,1.94,0,0,0-.66-.8,2.39,2.39,0,0,0-1-.38,5.83,5.83,0,0,0-1.12-.1h-4.87Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3070" />
<path
d="M405.55,503h3v17.14h-3Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3072" />
<path
d="M427.17,520.14h-1.92l-.46-2a7.15,7.15,0,0,1-2.4,1.9,6.83,6.83,0,0,1-2.76.53,8.11,8.11,0,0,1-3.44-.71,7.45,7.45,0,0,1-2.58-1.94,8.67,8.67,0,0,1-1.62-2.85,11,11,0,0,1,0-6.94,8.78,8.78,0,0,1,1.62-2.85,7.6,7.6,0,0,1,2.58-1.95,8,8,0,0,1,3.44-.72,9.3,9.3,0,0,1,2.66.38,6.89,6.89,0,0,1,2.24,1.1,6.1,6.1,0,0,1,1.63,1.83,6.49,6.49,0,0,1,.82,2.55h-2.93a3.73,3.73,0,0,0-1.51-2.55,4.42,4.42,0,0,0-1.35-.64,5.3,5.3,0,0,0-1.56-.22,4.87,4.87,0,0,0-2.36.55,4.7,4.7,0,0,0-1.62,1.48,6.64,6.64,0,0,0-.92,2.1,9.75,9.75,0,0,0,0,4.8,6.64,6.64,0,0,0,.92,2.1,4.7,4.7,0,0,0,1.62,1.48,4.87,4.87,0,0,0,2.36.55,5.84,5.84,0,0,0,2-.3,3.91,3.91,0,0,0,2.43-2.44,6.11,6.11,0,0,0,.33-2h-4.56v-2.28h7.3Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3074" />
<path
d="M430.43,503h3v17.14h-3Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3076" />
<path
d="M437,503h3.16L448,515.63h0V503h2.85v17.14h-3.17l-7.8-12.6h-.07v12.6H437Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3078" />
<path
d="M459,503h3.19l6.6,17.14h-3.22L464,515.6h-6.84l-1.61,4.54h-3.1ZM458,513.32h5.23L460.63,506h-.08Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3080" />
<path
d="M470.44,503h3v14.55h8.71v2.59H470.44Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3082" />
<path
d="M490.89,503h7.56a7.15,7.15,0,0,1,3,.53,4.61,4.61,0,0,1,1.78,1.32,4.38,4.38,0,0,1,.85,1.73,6.93,6.93,0,0,1,.23,1.73,6.78,6.78,0,0,1-.23,1.71,4.4,4.4,0,0,1-.85,1.72,4.59,4.59,0,0,1-1.78,1.31,7.34,7.34,0,0,1-3,.51h-4.56v6.58h-3Zm3,8.11h4.39a3.7,3.7,0,0,0,1-.14,3,3,0,0,0,1-.47,2.45,2.45,0,0,0,.72-.86,3,3,0,0,0,.27-1.36,3.5,3.5,0,0,0-.24-1.39,2.18,2.18,0,0,0-.65-.88,2.35,2.35,0,0,0-.93-.44,5.09,5.09,0,0,0-1.13-.12h-4.44Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3084" />
<path
d="M506.9,503h8.18a6.34,6.34,0,0,1,4.25,1.23,4.26,4.26,0,0,1,1.42,3.4,4.78,4.78,0,0,1-.37,2,4.41,4.41,0,0,1-.83,1.3,3.55,3.55,0,0,1-.95.71c-.31.14-.54.23-.69.28V512a2.94,2.94,0,0,1,.83.24,2.47,2.47,0,0,1,.83.61,3.38,3.38,0,0,1,.64,1.09,5.06,5.06,0,0,1,.25,1.69,15.36,15.36,0,0,0,.22,2.74,3.68,3.68,0,0,0,.71,1.77h-3.21a2.75,2.75,0,0,1-.4-1.23c0-.44-.06-.88-.06-1.29a13.09,13.09,0,0,0-.14-2,3.72,3.72,0,0,0-.53-1.42,2.23,2.23,0,0,0-1-.82,4.59,4.59,0,0,0-1.7-.27H509.9v7.06h-3Zm3,7.8h4.92a3.13,3.13,0,0,0,2.18-.68,2.64,2.64,0,0,0,.75-2.05,3.21,3.21,0,0,0-.24-1.34,2,2,0,0,0-.67-.8,2.33,2.33,0,0,0-1-.38,5.73,5.73,0,0,0-1.11-.1H509.9Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3086" />
<path
d="M523.6,503h3v10c0,.58,0,1.17.08,1.76a4,4,0,0,0,.49,1.59,3,3,0,0,0,1.2,1.17,5.93,5.93,0,0,0,4.53,0,3,3,0,0,0,1.2-1.17,3.94,3.94,0,0,0,.48-1.59,17.44,17.44,0,0,0,.09-1.76V503h3v11a7.48,7.48,0,0,1-.51,2.88,5.38,5.38,0,0,1-1.43,2,5.87,5.87,0,0,1-2.22,1.24,10.32,10.32,0,0,1-5.76,0,6,6,0,0,1-2.22-1.24,5.47,5.47,0,0,1-1.42-2,7.48,7.48,0,0,1-.51-2.88Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3088" />
<path
d="M543.09,514.43a3.93,3.93,0,0,0,.33,1.68,3.17,3.17,0,0,0,.94,1.14,4,4,0,0,0,1.38.64,6.47,6.47,0,0,0,1.69.21,5.45,5.45,0,0,0,1.68-.23,3.34,3.34,0,0,0,1.13-.59,2,2,0,0,0,.62-.83,2.41,2.41,0,0,0,.2-.94,2,2,0,0,0-.45-1.46,2.54,2.54,0,0,0-1-.66c-.61-.22-1.32-.43-2.12-.63s-1.81-.46-3-.78a6.41,6.41,0,0,1-1.84-.76,4.38,4.38,0,0,1-1.16-1,3.63,3.63,0,0,1-.61-1.23,4.89,4.89,0,0,1-.18-1.32,4.45,4.45,0,0,1,.54-2.24,4.68,4.68,0,0,1,1.43-1.57,6.18,6.18,0,0,1,2-.93,8.81,8.81,0,0,1,2.28-.3,9,9,0,0,1,2.53.35,6.3,6.3,0,0,1,2.09,1,5.17,5.17,0,0,1,1.43,1.72,5.11,5.11,0,0,1,.53,2.37h-3a2.88,2.88,0,0,0-1.13-2.34,4.45,4.45,0,0,0-2.57-.69,5.82,5.82,0,0,0-1.08.11,3.37,3.37,0,0,0-1,.36,2.22,2.22,0,0,0-.75.68,1.86,1.86,0,0,0-.3,1.08,1.82,1.82,0,0,0,.56,1.43,3.54,3.54,0,0,0,1.48.78l.75.21,1.48.39,1.59.42,1.12.3a5.1,5.1,0,0,1,1.46.72,4.55,4.55,0,0,1,1.05,1.05,4.11,4.11,0,0,1,.62,1.26,4.41,4.41,0,0,1,.21,1.34,4.87,4.87,0,0,1-.59,2.46,5.06,5.06,0,0,1-1.55,1.67,6.81,6.81,0,0,1-2.18,1,11,11,0,0,1-2.5.3,10.23,10.23,0,0,1-2.76-.36,6.63,6.63,0,0,1-2.26-1.11,5.37,5.37,0,0,1-1.53-1.91,6.15,6.15,0,0,1-.6-2.74Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3090" />
<path
d="M561.26,503h3.19l6.6,17.14h-3.22l-1.61-4.54h-6.84l-1.6,4.54h-3.1Zm-1.06,10.32h5.23L562.86,506h-.07Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3092" />
<path
d="M579,503h2.74v2.59H579Zm0,4.73h2.74v12.41H579Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3094" />
<path
d="M588.78,510.3a6.82,6.82,0,0,0,1.35-.1,3.71,3.71,0,0,0,1.2-.42,2.33,2.33,0,0,0,.85-.83,2.38,2.38,0,0,0,.32-1.29,2.19,2.19,0,0,0-.73-1.73,2.74,2.74,0,0,0-1.88-.65,2.59,2.59,0,0,0-1.25.29,2.63,2.63,0,0,0-.88.78,3.57,3.57,0,0,0-.51,1.1,4.44,4.44,0,0,0-.15,1.26h-2.73a7,7,0,0,1,.45-2.27,6.06,6.06,0,0,1,1.12-1.81,4.93,4.93,0,0,1,1.72-1.2,5.87,5.87,0,0,1,2.28-.43,6.69,6.69,0,0,1,1.93.29,5.51,5.51,0,0,1,1.7.84,4.08,4.08,0,0,1,1.21,1.4,4,4,0,0,1,.46,2,4.13,4.13,0,0,1-.58,2.22,3.28,3.28,0,0,1-1.8,1.38v.05a3.49,3.49,0,0,1,2.25,1.43,4.72,4.72,0,0,1,.8,2.77,4.65,4.65,0,0,1-.48,2.14,4.84,4.84,0,0,1-1.29,1.61,6.09,6.09,0,0,1-1.9,1,7.71,7.71,0,0,1-4.84-.06,4.88,4.88,0,0,1-1.82-1.19,5.12,5.12,0,0,1-1.12-1.84,7.54,7.54,0,0,1-.4-2.4h2.73a3.78,3.78,0,0,0,.76,2.55,2.87,2.87,0,0,0,2.41,1,3.42,3.42,0,0,0,2.29-.78,2.74,2.74,0,0,0,.93-2.22,2.77,2.77,0,0,0-.39-1.56,2.44,2.44,0,0,0-1-.87,3.85,3.85,0,0,0-1.4-.37,12.06,12.06,0,0,0-1.6,0Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3096" />
<path
d="M548.43,531.91h2.06v4.75h0a3.05,3.05,0,0,1,.52-.61,3.13,3.13,0,0,1,.68-.46,3.58,3.58,0,0,1,.77-.29,3.19,3.19,0,0,1,.8-.1,4.42,4.42,0,0,1,1.92.39,3.77,3.77,0,0,1,1.36,1.06,4.64,4.64,0,0,1,.81,1.58,6.65,6.65,0,0,1,.27,1.92,6.89,6.89,0,0,1-.24,1.82,4.89,4.89,0,0,1-.74,1.56,3.57,3.57,0,0,1-3,1.48,7.57,7.57,0,0,1-.95-.06,3.93,3.93,0,0,1-.91-.24,3.06,3.06,0,0,1-.78-.47,2.28,2.28,0,0,1-.59-.76h0v1.28h-2Zm7.17,8.21a5.06,5.06,0,0,0-.16-1.23,3.27,3.27,0,0,0-.49-1,2.6,2.6,0,0,0-.81-.74,2.17,2.17,0,0,0-1.12-.28,2.26,2.26,0,0,0-1.95.9,4,4,0,0,0-.66,2.4,4.54,4.54,0,0,0,.18,1.3,2.89,2.89,0,0,0,.51,1,2.69,2.69,0,0,0,.82.68,2.26,2.26,0,0,0,1.1.25,2.21,2.21,0,0,0,1.19-.29,2.47,2.47,0,0,0,.8-.74,3.09,3.09,0,0,0,.45-1.05A5.3,5.3,0,0,0,555.6,540.12Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3098" />
<path
d="M558.35,535.45h2.25L563,542.4h0l2.36-6.95h2.14l-3.64,9.81c-.17.42-.33.83-.49,1.21a4.62,4.62,0,0,1-.59,1,2.61,2.61,0,0,1-.87.7,3,3,0,0,1-1.32.26,9.73,9.73,0,0,1-1.43-.11v-1.73l.49.08a2.63,2.63,0,0,0,.49,0,1.66,1.66,0,0,0,.59-.09,1,1,0,0,0,.39-.26,1.69,1.69,0,0,0,.26-.41,3.65,3.65,0,0,0,.2-.54l.23-.72Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3100" />
<path
d="M580.94,540.62a9.81,9.81,0,0,1-.14,1.64,3.52,3.52,0,0,1-.59,1.42,3,3,0,0,1-1.28,1,5.47,5.47,0,0,1-2.22.38,4.33,4.33,0,0,1-1.74-.32,3.29,3.29,0,0,1-1.19-.86,3.57,3.57,0,0,1-.69-1.31,6.08,6.08,0,0,1-.21-1.64v-.68h2.25v.67a3.25,3.25,0,0,0,.37,1.7,1.49,1.49,0,0,0,1.39.6,2.08,2.08,0,0,0,.89-.16,1.31,1.31,0,0,0,.56-.48,2,2,0,0,0,.28-.78,6.81,6.81,0,0,0,.07-1.06v-8.84h2.25Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3102" />
<path
d="M587.66,545a5,5,0,0,1-2-.37,4.1,4.1,0,0,1-1.48-1,4.46,4.46,0,0,1-.92-1.55,6,6,0,0,1-.31-2,5.88,5.88,0,0,1,.31-2,4.37,4.37,0,0,1,.92-1.55,4.25,4.25,0,0,1,1.48-1,5.51,5.51,0,0,1,4,0,4.25,4.25,0,0,1,1.48,1,4.37,4.37,0,0,1,.92,1.55,5.88,5.88,0,0,1,.31,2,6,6,0,0,1-.31,2,4.46,4.46,0,0,1-.92,1.55,4.1,4.1,0,0,1-1.48,1A5,5,0,0,1,587.66,545Zm0-1.62a2.25,2.25,0,0,0,1.18-.29,2.4,2.4,0,0,0,.83-.75,3.2,3.2,0,0,0,.48-1.06,4.73,4.73,0,0,0,.15-1.19,4.85,4.85,0,0,0-.15-1.19,3,3,0,0,0-.48-1,2.4,2.4,0,0,0-.83-.75,2.57,2.57,0,0,0-2.37,0,2.49,2.49,0,0,0-.83.75,3,3,0,0,0-.48,1,4.85,4.85,0,0,0-.15,1.19,4.73,4.73,0,0,0,.15,1.19,3.2,3.2,0,0,0,.48,1.06,2.49,2.49,0,0,0,.83.75A2.26,2.26,0,0,0,587.66,543.39Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3104" />
<path
d="M595.61,541.77a1.54,1.54,0,0,0,.69,1.26,2.68,2.68,0,0,0,1.42.36,5.25,5.25,0,0,0,.65,0,3.12,3.12,0,0,0,.7-.17,1.45,1.45,0,0,0,.53-.37,1,1,0,0,0-.1-1.29,2.11,2.11,0,0,0-.69-.41,9,9,0,0,0-1-.26l-1.09-.23a9,9,0,0,1-1.11-.31,3.75,3.75,0,0,1-1-.48A2.34,2.34,0,0,1,594,539a2.44,2.44,0,0,1-.25-1.17,2.08,2.08,0,0,1,.37-1.27,2.66,2.66,0,0,1,.93-.83,4,4,0,0,1,1.26-.44,6.88,6.88,0,0,1,1.33-.13,6.12,6.12,0,0,1,1.37.15,3.84,3.84,0,0,1,1.19.5,2.88,2.88,0,0,1,.88.89,3,3,0,0,1,.44,1.32h-2.14a1.27,1.27,0,0,0-.67-1,3,3,0,0,0-1.22-.25,3.44,3.44,0,0,0-.51,0,2.42,2.42,0,0,0-.56.13,1.21,1.21,0,0,0-.44.29.7.7,0,0,0-.18.5.8.8,0,0,0,.26.61,2.14,2.14,0,0,0,.69.38,6.55,6.55,0,0,0,1,.27l1.12.23a9.92,9.92,0,0,1,1.1.31,3.66,3.66,0,0,1,1,.48,2.47,2.47,0,0,1,.69.78,2.36,2.36,0,0,1,.26,1.15,2.5,2.5,0,0,1-.38,1.4,2.94,2.94,0,0,1-1,.94,4.68,4.68,0,0,1-1.35.52,6.66,6.66,0,0,1-1.46.16,6.44,6.44,0,0,1-1.63-.2,3.79,3.79,0,0,1-1.3-.6,2.91,2.91,0,0,1-.87-1,3.18,3.18,0,0,1-.33-1.43Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3106" />
<path
d="M605,540.64a3.58,3.58,0,0,0,.15,1,2.54,2.54,0,0,0,.46.88,2.11,2.11,0,0,0,.77.61,2.6,2.6,0,0,0,1.12.22A2.46,2.46,0,0,0,609,543a2.27,2.27,0,0,0,.82-1.16h1.94a3.71,3.71,0,0,1-.56,1.35,3.78,3.78,0,0,1-.95,1,3.93,3.93,0,0,1-1.25.61,5,5,0,0,1-1.45.21,4.9,4.9,0,0,1-1.94-.36,3.91,3.91,0,0,1-1.44-1,4.25,4.25,0,0,1-.88-1.54,6.23,6.23,0,0,1-.29-2,5.68,5.68,0,0,1,.31-1.89,4.83,4.83,0,0,1,.9-1.56,4.23,4.23,0,0,1,3.29-1.47,4.15,4.15,0,0,1,2,.46,4.4,4.4,0,0,1,1.45,1.22,4.87,4.87,0,0,1,.83,1.73,5.31,5.31,0,0,1,.14,2Zm4.79-1.35a3.67,3.67,0,0,0-.21-.94,2.54,2.54,0,0,0-.47-.78,2.43,2.43,0,0,0-.72-.54,2.09,2.09,0,0,0-.94-.21,2.43,2.43,0,0,0-1,.19,2.34,2.34,0,0,0-.75.52,2.68,2.68,0,0,0-.51.79,2.8,2.8,0,0,0-.2,1Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3108" />
<path
d="M612.5,535.45H614v-.77a4,4,0,0,1,.22-1.43,2,2,0,0,1,.58-.85,1.79,1.79,0,0,1,.82-.39,4.22,4.22,0,0,1,1-.1A6.16,6.16,0,0,1,618,532v1.61a2.59,2.59,0,0,0-.42-.09l-.53,0a1.22,1.22,0,0,0-.72.2.88.88,0,0,0-.29.77v1h1.74V537h-1.74v7.78H614V537H612.5Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3110" />
<path
d="M624.38,531.91h5.67a5.47,5.47,0,0,1,2.23.39,3.68,3.68,0,0,1,1.33,1,3.51,3.51,0,0,1,.64,1.3,5.74,5.74,0,0,1,.17,1.3,5.57,5.57,0,0,1-.17,1.28,3.55,3.55,0,0,1-.64,1.29,3.45,3.45,0,0,1-1.33,1,5.47,5.47,0,0,1-2.23.39h-3.42v4.93h-2.25Zm2.25,6.08h3.29a2.61,2.61,0,0,0,.77-.11,2.14,2.14,0,0,0,.73-.35,1.83,1.83,0,0,0,.54-.65,2.16,2.16,0,0,0,.21-1,2.67,2.67,0,0,0-.18-1,1.7,1.7,0,0,0-1.19-1,3.73,3.73,0,0,0-.84-.09h-3.33Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3112" />
<path
d="M636.09,535.45H638v1.8h0a2,2,0,0,1,.36-.73,3.26,3.26,0,0,1,.63-.66,3,3,0,0,1,.81-.48,2.47,2.47,0,0,1,.92-.18l.5,0,.28,0v2l-.44-.06a3.39,3.39,0,0,0-.45,0,2.25,2.25,0,0,0-1.78.81,3,3,0,0,0-.54,1,4.44,4.44,0,0,0-.2,1.37v4.43h-2Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3114" />
<path
d="M650.6,544.76h-2v-1.3h0a2.79,2.79,0,0,1-1.13,1.13,3,3,0,0,1-1.52.42,3.39,3.39,0,0,1-2.65-.91,4,4,0,0,1-.82-2.74v-5.91h2.05v5.71a2.54,2.54,0,0,0,.47,1.73,1.72,1.72,0,0,0,1.31.5,2.48,2.48,0,0,0,1.08-.2,1.88,1.88,0,0,0,.7-.53,2.06,2.06,0,0,0,.39-.8,4.05,4.05,0,0,0,.12-1v-5.4h2.05Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3116" />
<path
d="M654.31,541.77A1.56,1.56,0,0,0,655,543a2.7,2.7,0,0,0,1.42.36,5.29,5.29,0,0,0,.66,0,2.91,2.91,0,0,0,.69-.17,1.41,1.41,0,0,0,.54-.37.9.9,0,0,0,.18-.64.89.89,0,0,0-.28-.65,2.06,2.06,0,0,0-.7-.41,8.18,8.18,0,0,0-1-.26l-1.1-.23a9.34,9.34,0,0,1-1.1-.31,3.6,3.6,0,0,1-1-.48,2.23,2.23,0,0,1-.67-.79,2.44,2.44,0,0,1-.26-1.17,2.14,2.14,0,0,1,.37-1.27,2.78,2.78,0,0,1,.94-.83,4,4,0,0,1,1.26-.44,6.86,6.86,0,0,1,1.32-.13,6.21,6.21,0,0,1,1.38.15,4,4,0,0,1,1.19.5,3,3,0,0,1,.88.89,3.17,3.17,0,0,1,.44,1.32h-2.14a1.28,1.28,0,0,0-.68-1,2.9,2.9,0,0,0-1.21-.25,3.46,3.46,0,0,0-.52,0,2.45,2.45,0,0,0-.55.13,1.13,1.13,0,0,0-.44.29.7.7,0,0,0-.18.5.77.77,0,0,0,.26.61,2.09,2.09,0,0,0,.68.38,7.08,7.08,0,0,0,1,.27l1.12.23a10.57,10.57,0,0,1,1.1.31,3.82,3.82,0,0,1,1,.48,2.33,2.33,0,0,1,.68.78,2.25,2.25,0,0,1,.26,1.15,2.42,2.42,0,0,1-.38,1.4,2.94,2.94,0,0,1-1,.94,4.51,4.51,0,0,1-1.34.52,6.73,6.73,0,0,1-1.46.16,6.52,6.52,0,0,1-1.64-.2,3.74,3.74,0,0,1-1.29-.6,2.91,2.91,0,0,1-.87-1,3.18,3.18,0,0,1-.33-1.43Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3118" />
<path
d="M669.9,542.69a1.05,1.05,0,0,0,.1.54.4.4,0,0,0,.38.16h.22l.29,0v1.42l-.28.08-.35.08-.36,0a1.84,1.84,0,0,1-.31,0,1.93,1.93,0,0,1-1-.25,1.23,1.23,0,0,1-.54-.88,3.69,3.69,0,0,1-1.51.86,5.86,5.86,0,0,1-1.72.27,4.3,4.3,0,0,1-1.2-.17,3.13,3.13,0,0,1-1-.5,2.52,2.52,0,0,1-.7-.85,2.65,2.65,0,0,1-.26-1.2,2.77,2.77,0,0,1,.31-1.4,2.42,2.42,0,0,1,.83-.85,3.87,3.87,0,0,1,1.15-.44,11.51,11.51,0,0,1,1.29-.2,8.81,8.81,0,0,1,1.06-.16,5,5,0,0,0,.89-.15,1.42,1.42,0,0,0,.62-.33.93.93,0,0,0,.22-.68,1,1,0,0,0-.19-.65,1.26,1.26,0,0,0-.47-.38,2,2,0,0,0-.62-.18,5,5,0,0,0-.65,0,2.58,2.58,0,0,0-1.42.36,1.41,1.41,0,0,0-.63,1.12h-2a3.19,3.19,0,0,1,.43-1.5,3,3,0,0,1,1-.95,3.74,3.74,0,0,1,1.32-.5,7.51,7.51,0,0,1,1.51-.15,6.07,6.07,0,0,1,1.35.15,3.94,3.94,0,0,1,1.2.46,2.62,2.62,0,0,1,.85.84,2.26,2.26,0,0,1,.33,1.25Zm-2.06-2.59a2.6,2.6,0,0,1-1.15.37,13.25,13.25,0,0,0-1.37.19,3.6,3.6,0,0,0-.63.15,1.71,1.71,0,0,0-.54.27,1.16,1.16,0,0,0-.36.45,1.51,1.51,0,0,0-.14.67.89.89,0,0,0,.2.58,1.35,1.35,0,0,0,.48.37,2.29,2.29,0,0,0,.61.19,4.54,4.54,0,0,0,.6,0,3.39,3.39,0,0,0,.74-.09,2.68,2.68,0,0,0,.75-.3,2.17,2.17,0,0,0,.58-.55,1.39,1.39,0,0,0,.23-.82Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3120" />
<path
d="M606.38,507.28h3.16l3.55,10.07h0l3.45-10.07h3.13v12.86h-2.14v-9.92h0L614,520.14h-1.85l-3.57-9.92h0v9.92h-2.14Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3122" />
<path
d="M622.41,507.28h2.25v5.85l5.73-5.85h2.77L628,512.41l5.49,7.73h-2.81L626.5,514l-1.84,1.82v4.32h-2.25Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3124" />
<path
d="M637.48,512.76a4.92,4.92,0,0,0,1-.08,2.9,2.9,0,0,0,.9-.31,1.81,1.81,0,0,0,.64-.62,1.86,1.86,0,0,0,.24-1,1.64,1.64,0,0,0-.55-1.3,2.07,2.07,0,0,0-1.41-.49,2,2,0,0,0-.94.22,1.84,1.84,0,0,0-.65.59,2.39,2.39,0,0,0-.39.82,3,3,0,0,0-.11.95h-2.05a5.19,5.19,0,0,1,.34-1.7,4.1,4.1,0,0,1,.84-1.36,3.54,3.54,0,0,1,1.28-.9,4.27,4.27,0,0,1,1.71-.33,5,5,0,0,1,1.45.22,4,4,0,0,1,1.28.63,3.18,3.18,0,0,1,.91,1.05,3.07,3.07,0,0,1,.34,1.47,3.15,3.15,0,0,1-.43,1.67,2.52,2.52,0,0,1-1.35,1v0a2.57,2.57,0,0,1,1.68,1.07,3.46,3.46,0,0,1,.61,2.08,3.53,3.53,0,0,1-.36,1.61,3.67,3.67,0,0,1-1,1.2,4.41,4.41,0,0,1-1.42.77,5.37,5.37,0,0,1-1.71.27,5.27,5.27,0,0,1-1.91-.32,3.54,3.54,0,0,1-1.37-.89,3.71,3.71,0,0,1-.84-1.38,6,6,0,0,1-.31-1.8H636a2.82,2.82,0,0,0,.56,1.91,2.18,2.18,0,0,0,1.81.77,2.56,2.56,0,0,0,1.72-.59,2.05,2.05,0,0,0,.69-1.66,2.11,2.11,0,0,0-.28-1.17,1.93,1.93,0,0,0-.76-.66,3.12,3.12,0,0,0-1.05-.28,11.87,11.87,0,0,0-1.2,0Z"
transform="translate(0.14 0.14)"
fill="#fff"
id="path3126" />
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

View file

@ -0,0 +1,20 @@
{
"type": "process",
"setting_id": "MK3S-2",
"name": "0.20mm Standard @MK3S",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_common",
"initial_layer_speed": "20",
"initial_layer_infill_speed": "25",
"outer_wall_speed": "35",
"inner_wall_speed": "60",
"sparse_infill_speed": "200",
"internal_solid_infill_speed": "200",
"top_surface_speed": "50",
"gap_infill_speed": "40",
"travel_speed": "180",
"compatible_printers": [
"Prusa MK3S 0.4 nozzle"
]
}

View file

@ -0,0 +1,105 @@
{
"type": "process",
"name": "fdm_process_common",
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
"reduce_crossing_wall": "0",
"max_travel_detour_distance": "0",
"bottom_surface_pattern": "monotonic",
"bottom_shell_thickness": "0",
"bridge_speed": "50",
"brim_width": "5",
"brim_object_gap": "0.1",
"compatible_printers": [],
"compatible_printers_condition": "",
"print_sequence": "by layer",
"default_acceleration": "1000",
"initial_layer_acceleration": "500",
"top_surface_acceleration": "1000",
"travel_acceleration": "1000",
"inner_wall_acceleration": "1000",
"outer_wall_acceleration": "700",
"bridge_no_support": "0",
"draft_shield": "disabled",
"elefant_foot_compensation": "0",
"enable_arc_fitting": "1",
"outer_wall_line_width": "0.4",
"wall_infill_order": "inner wall/outer wall/infill",
"line_width": "0.4",
"infill_direction": "45",
"sparse_infill_density": "15%",
"sparse_infill_pattern": "grid",
"initial_layer_line_width": "0.5",
"initial_layer_print_height": "0.2",
"infill_combination": "0",
"sparse_infill_line_width": "0.45",
"infill_wall_overlap": "25%",
"interface_shells": "0",
"ironing_flow": "10%",
"ironing_spacing": "0.15",
"ironing_speed": "30",
"ironing_type": "no ironing",
"reduce_infill_retraction": "1",
"filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
"detect_overhang_wall": "1",
"overhang_1_4_speed": "0",
"overhang_2_4_speed": "50",
"overhang_3_4_speed": "30",
"overhang_4_4_speed": "10",
"inner_wall_line_width": "0.45",
"wall_loops": "2",
"print_settings_id": "",
"raft_layers": "0",
"seam_position": "aligned",
"skirt_distance": "2",
"skirt_height": "1",
"skirt_loops": "0",
"minimum_sparse_infill_area": "15",
"internal_solid_infill_line_width": "0.4",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
"enable_support": "0",
"resolution": "0.012",
"support_type": "normal(auto)",
"support_on_build_plate_only": "0",
"support_top_z_distance": "0.2",
"support_filament": "0",
"support_line_width": "0.4",
"support_interface_loop_pattern": "0",
"support_interface_filament": "0",
"support_interface_top_layers": "2",
"support_interface_bottom_layers": "2",
"support_interface_spacing": "0.5",
"support_interface_speed": "80",
"support_base_pattern": "rectilinear",
"support_base_pattern_spacing": "2.5",
"support_speed": "150",
"support_threshold_angle": "30",
"support_object_xy_distance": "0.35",
"tree_support_branch_angle": "30",
"tree_support_wall_count": "0",
"tree_support_with_infill": "0",
"detect_thin_wall": "0",
"top_surface_pattern": "monotonicline",
"top_surface_line_width": "0.4",
"top_shell_thickness": "0.8",
"enable_prime_tower": "1",
"wipe_tower_no_sparse_layers": "0",
"prime_tower_width": "35",
"xy_hole_compensation": "0",
"xy_contour_compensation": "0",
"layer_height": "0.2",
"bottom_shell_layers": "3",
"top_shell_layers": "4",
"bridge_flow": "1",
"initial_layer_speed": "45",
"initial_layer_infill_speed": "45",
"outer_wall_speed": "45",
"inner_wall_speed": "80",
"sparse_infill_speed": "150",
"internal_solid_infill_speed": "150",
"top_surface_speed": "50",
"gap_infill_speed": "30",
"travel_speed": "200"
}

View file

@ -116,6 +116,7 @@
"deretraction_speed": [ "deretraction_speed": [
"30" "30"
], ],
"z_lift_type": "NormalLift",
"silent_mode": "0", "silent_mode": "0",
"single_extruder_multi_material": "1", "single_extruder_multi_material": "1",
"change_filament_gcode": "", "change_filament_gcode": "",
@ -130,9 +131,10 @@
"bed_exclude_area": [ "bed_exclude_area": [
"0x0" "0x0"
], ],
"machine_start_gcode": "; M190 S0\n; M104 S0\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n; You can use following code instead if your PRINT_START macro support Chamber and print area bedmesh\n; PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single] PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}", "machine_start_gcode": ";M190 S0\n;M104 S0\nPRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single]\n; You can use following code instead if your PRINT_START macro support Chamber and print area bedmesh\n; PRINT_START EXTRUDER=[nozzle_temperature_initial_layer] BED=[bed_temperature_initial_layer_single] Chamber=[chamber_temperature] PRINT_MIN={first_layer_print_min[0]},{first_layer_print_min[1]} PRINT_MAX={first_layer_print_max[0]},{first_layer_print_max[1]}",
"machine_end_gcode": "PRINT_END", "machine_end_gcode": "PRINT_END",
"layer_change_gcode": "", "layer_change_gcode": "",
"before_layer_change_gcode": ";BEFORE_LAYER_CHANGE\n;[layer_z]\nG92 E0\n",
"scan_first_layer": "0", "scan_first_layer": "0",
"nozzle_type": "undefine", "nozzle_type": "undefine",
"auxiliary_fan": "0" "auxiliary_fan": "0"

View file

@ -0,0 +1,35 @@
{
"type": "process",
"setting_id": "GP008",
"name": "0.20mm Bambu Support W @Voron",
"from": "system",
"instantiation": "true",
"inherits": "fdm_process_bbl_0.20",
"enable_support": "1",
"support_interface_top_layers": "3",
"support_top_z_distance": "0.2",
"support_interface_loop_pattern": "1",
"support_interface_spacing": "0",
"support_interface_speed": "80",
"support_filament": "0",
"support_interface_filament": "0",
"enable_prime_tower": "1",
"initial_layer_speed": "50",
"initial_layer_infill_speed": "105",
"outer_wall_speed": "120",
"inner_wall_speed": "200",
"sparse_infill_speed": "300",
"internal_solid_infill_speed": "200",
"top_surface_speed": "100",
"gap_infill_speed": "100",
"travel_speed": "350",
"compatible_printers": [
"Voron 2.4 250 0.4 nozzle",
"Voron 2.4 300 0.4 nozzle",
"Voron 2.4 350 0.4 nozzle",
"Voron Trident 250 0.4 nozzle",
"Voron Trident 300 0.4 nozzle",
"Voron Trident 350 0.4 nozzle",
"Voron 0.1 0.4 nozzle"
]
}

View file

@ -16,8 +16,11 @@
"brim_object_gap": "0.1", "brim_object_gap": "0.1",
"compatible_printers_condition": "", "compatible_printers_condition": "",
"print_sequence": "by layer", "print_sequence": "by layer",
"default_acceleration": "7000", "default_acceleration": "5000",
"top_surface_acceleration": "3000", "top_surface_acceleration": "3000",
"travel_acceleration": "7000",
"inner_wall_acceleration": "5000",
"outer_wall_acceleration": "3000",
"bridge_no_support": "0", "bridge_no_support": "0",
"draft_shield": "disabled", "draft_shield": "disabled",
"elefant_foot_compensation": "0", "elefant_foot_compensation": "0",
@ -99,6 +102,7 @@
"prime_tower_width": "35", "prime_tower_width": "35",
"xy_hole_compensation": "0", "xy_hole_compensation": "0",
"xy_contour_compensation": "0", "xy_contour_compensation": "0",
"enable_arc_fitting": "0",
"compatible_printers": [ "compatible_printers": [
"Voron 2.4 250 0.4 nozzle", "Voron 2.4 250 0.4 nozzle",
"Voron 2.4 300 0.4 nozzle", "Voron 2.4 300 0.4 nozzle",

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View file

@ -65,19 +65,19 @@ std::string AppConfig::get_hms_host()
{ {
std::string sel = get("iot_environment"); std::string sel = get("iot_environment");
std::string host = ""; std::string host = "";
#if !BBL_RELEASE_TO_PUBLIC // #if !BBL_RELEASE_TO_PUBLIC
if (sel == ENV_DEV_HOST) // if (sel == ENV_DEV_HOST)
host = "e-dev.bambu-lab.com"; // host = "e-dev.bambu-lab.com";
else if (sel == ENV_QAT_HOST) // else if (sel == ENV_QAT_HOST)
host = "e-qa.bambu-lab.com"; // host = "e-qa.bambu-lab.com";
else if (sel == ENV_PRE_HOST) // else if (sel == ENV_PRE_HOST)
host = "e-pre.bambu-lab.com"; // host = "e-pre.bambu-lab.com";
else if (sel == ENV_PRODUCT_HOST) // else if (sel == ENV_PRODUCT_HOST)
host = "e.bambulab.com"; // host = "e.bambulab.com";
return host; // return host;
#else // #else
return "e.bambulab.com"; return "e.bambulab.com";
#endif // #endif
} }
void AppConfig::reset() void AppConfig::reset()
@ -293,15 +293,15 @@ void AppConfig::set_defaults()
set("curr_bed_type", "0"); set("curr_bed_type", "0");
} }
#if BBL_RELEASE_TO_PUBLIC // #if BBL_RELEASE_TO_PUBLIC
if (get("iot_environment").empty()) { if (get("iot_environment").empty()) {
set("iot_environment", "3"); set("iot_environment", "3");
} }
#else // #else
if (get("iot_environment").empty()) { // if (get("iot_environment").empty()) {
set("iot_environment", "1"); // set("iot_environment", "1");
} // }
#endif // #endif
// Remove legacy window positions/sizes // Remove legacy window positions/sizes
erase("app", "main_frame_maximized"); erase("app", "main_frame_maximized");
@ -1030,29 +1030,29 @@ void AppConfig::update_last_backup_dir(const std::string& dir)
std::string AppConfig::get_region() std::string AppConfig::get_region()
{ {
#if BBL_RELEASE_TO_PUBLIC // #if BBL_RELEASE_TO_PUBLIC
return this->get("region"); return this->get("region");
#else // #else
std::string sel = get("iot_environment"); // std::string sel = get("iot_environment");
std::string region; // std::string region;
if (sel == ENV_DEV_HOST) // if (sel == ENV_DEV_HOST)
region = "ENV_CN_DEV"; // region = "ENV_CN_DEV";
else if (sel == ENV_QAT_HOST) // else if (sel == ENV_QAT_HOST)
region = "ENV_CN_QA"; // region = "ENV_CN_QA";
else if (sel == ENV_PRE_HOST) // else if (sel == ENV_PRE_HOST)
region = "ENV_CN_PRE"; // region = "ENV_CN_PRE";
if (region.empty()) // if (region.empty())
return this->get("region"); // return this->get("region");
return region; // return region;
#endif // #endif
} }
std::string AppConfig::get_country_code() std::string AppConfig::get_country_code()
{ {
std::string region = get_region(); std::string region = get_region();
#if !BBL_RELEASE_TO_PUBLIC // #if !BBL_RELEASE_TO_PUBLIC
if (is_engineering_region()) { return region; } // if (is_engineering_region()) { return region; }
#endif // #endif
if (region == "CHN" || region == "China") if (region == "CHN" || region == "China")
return "CN"; return "CN";
else if (region == "USA") else if (region == "USA")

View file

@ -55,6 +55,16 @@ inline bool is_perimeter(ExtrusionRole role)
|| role == erOverhangPerimeter; || role == erOverhangPerimeter;
} }
inline bool is_internal_perimeter(ExtrusionRole role)
{
return role == erPerimeter;
}
inline bool is_external_perimeter(ExtrusionRole role)
{
return role == erExternalPerimeter;
}
inline bool is_infill(ExtrusionRole role) inline bool is_infill(ExtrusionRole role)
{ {
return role == erBridgeInfill return role == erBridgeInfill

View file

@ -92,7 +92,7 @@ struct SurfaceFillParams
this->overlap == rhs.overlap && this->overlap == rhs.overlap &&
this->angle == rhs.angle && this->angle == rhs.angle &&
this->bridge == rhs.bridge && this->bridge == rhs.bridge &&
// this->bridge_angle == rhs.bridge_angle && this->bridge_angle == rhs.bridge_angle &&
this->density == rhs.density && this->density == rhs.density &&
// this->dont_adjust == rhs.dont_adjust && // this->dont_adjust == rhs.dont_adjust &&
this->anchor_length == rhs.anchor_length && this->anchor_length == rhs.anchor_length &&

View file

@ -14,7 +14,7 @@
#include "libslic3r.h" #include "libslic3r.h"
#include "LocalesUtils.hpp" #include "LocalesUtils.hpp"
#include "libslic3r/format.hpp" #include "libslic3r/format.hpp"
#include "Time.hpp"
#include <algorithm> #include <algorithm>
#include <cstdlib> #include <cstdlib>
#include <chrono> #include <chrono>
@ -79,7 +79,7 @@ static const float g_min_purge_volume = 100.f;
static const float g_purge_volume_one_time = 135.f; static const float g_purge_volume_one_time = 135.f;
static const int g_max_flush_count = 4; static const int g_max_flush_count = 4;
bool GCode::gcode_label_objects = false; bool GCode::gcode_label_objects = true;
// Only add a newline in case the current G-code does not end with a newline. // Only add a newline in case the current G-code does not end with a newline.
static inline void check_add_eol(std::string& gcode) static inline void check_add_eol(std::string& gcode)
@ -908,6 +908,11 @@ void GCode::do_export(Print* print, const char* path, GCodeProcessorResult* resu
BOOST_LOG_TRIVIAL(info) << boost::format("Will export G-code to %1% soon")%path; BOOST_LOG_TRIVIAL(info) << boost::format("Will export G-code to %1% soon")%path;
print->set_started(psGCodeExport); print->set_started(psGCodeExport);
if (print->is_BBL_printer())
gcode_label_objects = false;
else
gcode_label_objects = true;
// check if any custom gcode contains keywords used by the gcode processor to // check if any custom gcode contains keywords used by the gcode processor to
// produce time estimation and gcode toolpaths // produce time estimation and gcode toolpaths
std::vector<std::pair<std::string, std::string>> validation_res = DoExport::validate_custom_gcode(*print); std::vector<std::pair<std::string, std::string>> validation_res = DoExport::validate_custom_gcode(*print);
@ -1164,10 +1169,10 @@ namespace DoExport {
print_statistics.clear(); print_statistics.clear();
print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges); print_statistics.total_toolchanges = std::max(0, wipe_tower_data.number_of_toolchanges);
if (! extruders.empty()) { if (! extruders.empty()) {
//std::pair<std::string, unsigned int> out_filament_used_mm ("; filament used [mm] = ", 0); std::pair<std::string, unsigned int> out_filament_used_mm ("; filament used [mm] = ", 0);
//std::pair<std::string, unsigned int> out_filament_used_cm3("; filament used [cm3] = ", 0); std::pair<std::string, unsigned int> out_filament_used_cm3("; filament used [cm3] = ", 0);
//std::pair<std::string, unsigned int> out_filament_used_g ("; filament used [g] = ", 0); std::pair<std::string, unsigned int> out_filament_used_g ("; filament used [g] = ", 0);
//std::pair<std::string, unsigned int> out_filament_cost ("; filament cost = ", 0); std::pair<std::string, unsigned int> out_filament_cost ("; filament cost = ", 0);
for (const Extruder &extruder : extruders) { for (const Extruder &extruder : extruders) {
double used_filament = extruder.used_filament() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] : 0.f); double used_filament = extruder.used_filament() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] : 0.f);
double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter double extruded_volume = extruder.extruded_volume() + (has_wipe_tower ? wipe_tower_data.used_filament[extruder.id()] * 2.4052f : 0.f); // assumes 1.75mm filament diameter
@ -1187,14 +1192,14 @@ namespace DoExport {
dst.first += buf; dst.first += buf;
++ dst.second; ++ dst.second;
}; };
//append(out_filament_used_mm, "%.2lf", used_filament); append(out_filament_used_mm, "%.2lf", used_filament);
//append(out_filament_used_cm3, "%.2lf", extruded_volume * 0.001); append(out_filament_used_cm3, "%.2lf", extruded_volume * 0.001);
if (filament_weight > 0.) { if (filament_weight > 0.) {
print_statistics.total_weight = print_statistics.total_weight + filament_weight; print_statistics.total_weight = print_statistics.total_weight + filament_weight;
//append(out_filament_used_g, "%.2lf", filament_weight); append(out_filament_used_g, "%.2lf", filament_weight);
if (filament_cost > 0.) { if (filament_cost > 0.) {
print_statistics.total_cost = print_statistics.total_cost + filament_cost; print_statistics.total_cost = print_statistics.total_cost + filament_cost;
//append(out_filament_cost, "%.2lf", filament_cost); append(out_filament_cost, "%.2lf", filament_cost);
} }
} }
print_statistics.total_used_filament += used_filament; print_statistics.total_used_filament += used_filament;
@ -1202,12 +1207,12 @@ namespace DoExport {
print_statistics.total_wipe_tower_filament += has_wipe_tower ? used_filament - extruder.used_filament() : 0.; print_statistics.total_wipe_tower_filament += has_wipe_tower ? used_filament - extruder.used_filament() : 0.;
print_statistics.total_wipe_tower_cost += has_wipe_tower ? (extruded_volume - extruder.extruded_volume())* extruder.filament_density() * 0.001 * extruder.filament_cost() * 0.001 : 0.; print_statistics.total_wipe_tower_cost += has_wipe_tower ? (extruded_volume - extruder.extruded_volume())* extruder.filament_density() * 0.001 * extruder.filament_cost() * 0.001 : 0.;
} }
//filament_stats_string_out += out_filament_used_mm.first; filament_stats_string_out += out_filament_used_mm.first;
//filament_stats_string_out += "\n" + out_filament_used_cm3.first; filament_stats_string_out += "\n" + out_filament_used_cm3.first;
//if (out_filament_used_g.second) if (out_filament_used_g.second)
//filament_stats_string_out += "\n" + out_filament_used_g.first; filament_stats_string_out += "\n" + out_filament_used_g.first;
//if (out_filament_cost.second) if (out_filament_cost.second)
// filament_stats_string_out += "\n" + out_filament_cost.first; filament_stats_string_out += "\n" + out_filament_cost.first;
} }
return filament_stats_string_out; return filament_stats_string_out;
} }
@ -1285,7 +1290,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
// modifies m_silent_time_estimator_enabled // modifies m_silent_time_estimator_enabled
DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled); DoExport::init_gcode_processor(print.config(), m_processor, m_silent_time_estimator_enabled);
const bool is_bbl_printers = print.is_BBL_printer();
// resets analyzer's tracking data // resets analyzer's tracking data
m_last_height = 0.f; m_last_height = 0.f;
m_last_layer_z = 0.f; m_last_layer_z = 0.f;
@ -1349,30 +1354,65 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str()); file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder).c_str());
file.write_format("; HEADER_BLOCK_END\n\n"); file.write_format("; HEADER_BLOCK_END\n\n");
//BBS: write global config at the beginning of gcode file because printer need these config information
// Append full config, delimited by two 'phony' configuration keys CONFIG_BLOCK_START and CONFIG_BLOCK_END. // BBS: write global config at the beginning of gcode file because printer
// The delimiters are structured as configuration key / value pairs to be parsable by older versions of PrusaSlicer G-code viewer. // need these config information
// Append full config, delimited by two 'phony' configuration keys
// CONFIG_BLOCK_START and CONFIG_BLOCK_END. The delimiters are structured
// as configuration key / value pairs to be parsable by older versions of
// PrusaSlicer G-code viewer.
{ {
if (is_bbl_printers) {
file.write("; CONFIG_BLOCK_START\n"); file.write("; CONFIG_BLOCK_START\n");
std::string full_config; std::string full_config;
append_full_config(print, full_config); append_full_config(print, full_config);
if (!full_config.empty()) if (!full_config.empty())
file.write(full_config); file.write(full_config);
// SoftFever: write compatiple image
std::vector<int> temps_per_bed;
int first_layer_bed_temperature = 0;
get_bed_temperature(0, true, temps_per_bed,
first_layer_bed_temperature);
file.write_format("; first_layer_bed_temperature = %d\n",
first_layer_bed_temperature);
file.write_format(
"; first_layer_temperature = %d\n",
print.config().nozzle_temperature_initial_layer.get_at(0));
file.write("; CONFIG_BLOCK_END\n\n"); file.write("; CONFIG_BLOCK_END\n\n");
} else {
file.write_format("; hack-fix: write fake slicer info here so that "
"Moonraker will extract thumbs.\n");
file.write_format(
"; %s\n\n",
std::string(
std::string("generated by SuperSlicer " SLIC3R_VERSION " on ") +
Slic3r::Utils::utc_timestamp())
.c_str());
// BBS: add plate id into thumbnail render logic
// if (const auto [thumbnails, thumbnails_format] = std::make_pair(
// print.full_print_config().option<ConfigOptionPoints>("thumbnails"),
// print.full_print_config().option<ConfigOptionEnum<GCodeThumbnailsFormat>>("thumbnails_format"));
// thumbnails)
// GCodeThumbnails::export_thumbnails_to_file(
// thumbnail_cb, thumbnails->values, thumbnails_format ? thumbnails_format->value : GCodeThumbnailsFormat::PNG,
// [&file](const char* sz) { file.write(sz); },
// [&print]() { print.throw_if_canceled(); });
DoExport::export_thumbnails_to_file(
thumbnail_cb, print.get_plate_index(), print.full_print_config().option<ConfigOptionPoints>("thumbnails")->values,
[&file](const char *sz) { file.write(sz); },
[&print]() { print.throw_if_canceled(); });
}
} }
//BBS: add plate id into thumbnail render logic
//DoExport::export_thumbnails_to_file(thumbnail_cb, print.get_plate_index(), THUMBNAIL_SIZE,
// [&file](const char* sz) { file.write(sz); },
// [&print]() { print.throw_if_canceled(); });
// Write some terse information on the slicing parameters. // Write some terse information on the slicing parameters.
const PrintObject *first_object = print.objects().front(); const PrintObject *first_object = print.objects().front();
const double layer_height = first_object->config().layer_height.value; const double layer_height = first_object->config().layer_height.value;
const double initial_layer_print_height = print.config().initial_layer_print_height.value; const double initial_layer_print_height = print.config().initial_layer_print_height.value;
//BBS: remove useless information in gcode file
#if 0
for (size_t region_id = 0; region_id < print.num_print_regions(); ++ region_id) { for (size_t region_id = 0; region_id < print.num_print_regions(); ++ region_id) {
const PrintRegion &region = print.get_print_region(region_id); const PrintRegion &region = print.get_print_region(region_id);
file.write_format("; external perimeters extrusion width = %.2fmm\n", region.flow(*first_object, frExternalPerimeter, layer_height).width()); file.write_format("; external perimeters extrusion width = %.2fmm\n", region.flow(*first_object, frExternalPerimeter, layer_height).width());
@ -1386,8 +1426,6 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
file.write_format("; first layer extrusion width = %.2fmm\n", region.flow(*first_object, frPerimeter, initial_layer_print_height, true).width()); file.write_format("; first layer extrusion width = %.2fmm\n", region.flow(*first_object, frPerimeter, initial_layer_print_height, true).width());
file.write_format("\n"); file.write_format("\n");
} }
print.throw_if_canceled();
#endif
file.write_format("; EXECUTABLE_BLOCK_START\n"); file.write_format("; EXECUTABLE_BLOCK_START\n");
// adds tags for time estimators // adds tags for time estimators
@ -1512,7 +1550,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
m_placeholder_parser.set("first_layer_print_max", new ConfigOptionFloats({ bbox.max.x(), bbox.max.y() })); m_placeholder_parser.set("first_layer_print_max", new ConfigOptionFloats({ bbox.max.x(), bbox.max.y() }));
m_placeholder_parser.set("first_layer_print_size", new ConfigOptionFloats({ bbox.size().x(), bbox.size().y() })); m_placeholder_parser.set("first_layer_print_size", new ConfigOptionFloats({ bbox.size().x(), bbox.size().y() }));
} }
float outer_wall_volumetric_speed = 0.0f;
{ {
int curr_bed_type = m_config.curr_bed_type.getInt(); int curr_bed_type = m_config.curr_bed_type.getInt();
@ -1524,6 +1562,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
m_placeholder_parser.set("bed_temperature", new ConfigOptionInts(*bed_temp_opt)); m_placeholder_parser.set("bed_temperature", new ConfigOptionInts(*bed_temp_opt));
m_placeholder_parser.set("bed_temperature_initial_layer_single", new ConfigOptionInt(first_bed_temp_opt->get_at(initial_extruder_id))); m_placeholder_parser.set("bed_temperature_initial_layer_single", new ConfigOptionInt(first_bed_temp_opt->get_at(initial_extruder_id)));
m_placeholder_parser.set("bed_temperature_initial_layer_vector", new ConfigOptionString("")); m_placeholder_parser.set("bed_temperature_initial_layer_vector", new ConfigOptionString(""));
m_placeholder_parser.set("chamber_temperature",new ConfigOptionInt(m_config.chamber_temperature));
//BBS: calculate the volumetric speed of outer wall. Ignore pre-object setting and multi-filament, and just use the default setting //BBS: calculate the volumetric speed of outer wall. Ignore pre-object setting and multi-filament, and just use the default setting
{ {
@ -1535,7 +1574,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
} }
Flow outer_wall_flow = Flow(outer_wall_line_width, m_config.layer_height, m_config.nozzle_diameter.get_at(initial_extruder_id)); Flow outer_wall_flow = Flow(outer_wall_line_width, m_config.layer_height, m_config.nozzle_diameter.get_at(initial_extruder_id));
float outer_wall_speed = print.default_region_config().outer_wall_speed.value; float outer_wall_speed = print.default_region_config().outer_wall_speed.value;
float outer_wall_volumetric_speed = outer_wall_speed * outer_wall_flow.mm3_per_mm(); outer_wall_volumetric_speed = outer_wall_speed * outer_wall_flow.mm3_per_mm();
if (outer_wall_volumetric_speed > filament_max_volumetric_speed) if (outer_wall_volumetric_speed > filament_max_volumetric_speed)
outer_wall_volumetric_speed = filament_max_volumetric_speed; outer_wall_volumetric_speed = filament_max_volumetric_speed;
m_placeholder_parser.set("outer_wall_volumetric_speed", new ConfigOptionFloat(outer_wall_volumetric_speed)); m_placeholder_parser.set("outer_wall_volumetric_speed", new ConfigOptionFloat(outer_wall_volumetric_speed));
@ -1598,8 +1637,23 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
if (this->m_objsWithBrim.empty() && this->m_objSupportsWithBrim.empty()) m_brim_done = true; if (this->m_objsWithBrim.empty() && this->m_objSupportsWithBrim.empty()) m_brim_done = true;
//BBS: open spaghetti detector //BBS: open spaghetti detector
// if (print.config().spaghetti_detector.value) if (is_bbl_printers) {
file.write("M981 S1 P20000 ;open spaghetti detector\n"); // if (print.config().spaghetti_detector.value)
file.write("M981 S1 P20000 ;open spaghetti detector\n");
file.write_format("M900 K%.3f M%0.3f ; Override pressure advance value\n",
m_config.pressure_advance.values.front(),
outer_wall_volumetric_speed / (1.75 * 1.75 / 4 * 3.14) *
m_config.pressure_advance.values.front());
} else {
if (m_config.enable_pressure_advance.value) {
if(print.config().gcode_flavor.value == gcfKlipper)
file.write_format("SET_PRESSURE_ADVANCE ADVANCE=%.3f ; Override pressure advance value\n",
m_config.pressure_advance.values.front());
else
file.write_format("M900 K%.3f ; Override pressure advance value\n",
m_config.pressure_advance.values.front());
}
}
// Do all objects for each layer. // Do all objects for each layer.
if (print.config().print_sequence == PrintSequence::ByObject) { if (print.config().print_sequence == PrintSequence::ByObject) {
@ -1663,7 +1717,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
this->process_layers(print, tool_ordering, collect_layers_to_print(object), *print_object_instance_sequential_active - object.instances().data(), file, prime_extruder); this->process_layers(print, tool_ordering, collect_layers_to_print(object), *print_object_instance_sequential_active - object.instances().data(), file, prime_extruder);
//BBS: close powerlost recovery //BBS: close powerlost recovery
{ {
if (m_second_layer_things_done) { if (is_bbl_printers && m_second_layer_things_done) {
file.write("; close powerlost recovery\n"); file.write("; close powerlost recovery\n");
file.write("M1003 S0\n"); file.write("M1003 S0\n");
} }
@ -1734,7 +1788,7 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
this->process_layers(print, tool_ordering, print_object_instances_ordering, layers_to_print, file); this->process_layers(print, tool_ordering, print_object_instances_ordering, layers_to_print, file);
//BBS: close powerlost recovery //BBS: close powerlost recovery
{ {
if (m_second_layer_things_done) { if (is_bbl_printers && m_second_layer_things_done) {
file.write("; close powerlost recovery\n"); file.write("; close powerlost recovery\n");
file.write("M1003 S0\n"); file.write("M1003 S0\n");
} }
@ -1754,10 +1808,12 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
file.write(m_writer.set_fan(0)); file.write(m_writer.set_fan(0));
//BBS: make sure the additional fan is closed when end //BBS: make sure the additional fan is closed when end
file.write(m_writer.set_additional_fan(0)); file.write(m_writer.set_additional_fan(0));
//BBS: close spaghetti detector if (is_bbl_printers) {
//Note: M981 is also used to tell xcam the last layer is finished, so we need always send it even if spaghetti option is disabled. //BBS: close spaghetti detector
//if (print.config().spaghetti_detector.value) //Note: M981 is also used to tell xcam the last layer is finished, so we need always send it even if spaghetti option is disabled.
file.write("M981 S0 P20000 ; close spaghetti detector\n"); //if (print.config().spaghetti_detector.value)
file.write("M981 S0 P20000 ; close spaghetti detector\n");
}
// adds tag for processor // adds tag for processor
file.write_format(";%s%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role).c_str(), ExtrusionEntity::role_to_string(erCustom).c_str()); file.write_format(";%s%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Role).c_str(), ExtrusionEntity::role_to_string(erCustom).c_str());
@ -1800,11 +1856,41 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
m_writer.extruders(), m_writer.extruders(),
// Modifies // Modifies
print.m_print_statistics)); print.m_print_statistics));
//file.write("\n"); if (!is_bbl_printers) {
//file.write_format("; total filament weight [g] = %.2lf\n", print.m_print_statistics.total_weight); file.write("\n");
//file.write_format("; total filament cost = %.2lf\n", print.m_print_statistics.total_cost); file.write("; CONFIG_BLOCK_START\n");
//if (print.m_print_statistics.total_toolchanges > 0) std::string full_config;
// file.write_format("; total filament change = %i\n", print.m_print_statistics.total_toolchanges); append_full_config(print, full_config);
if (!full_config.empty())
file.write(full_config);
// SoftFever: write compatiple info
std::vector<int> temps_per_bed;
int first_layer_bed_temperature = 0;
get_bed_temperature(0, true, temps_per_bed, first_layer_bed_temperature);
file.write_format("; first_layer_bed_temperature = %d\n",
first_layer_bed_temperature);
file.write_format(
"; first_layer_temperature = %d\n",
print.config().nozzle_temperature_initial_layer.get_at(0));
file.write("; CONFIG_BLOCK_END\n\n");
file.write_format("; total filament used [g] = %.2lf\n",
print.m_print_statistics.total_weight);
file.write_format("; total filament cost = %.2lf\n",
print.m_print_statistics.total_cost);
if (print.m_print_statistics.total_toolchanges > 0)
file.write_format("; total filament change = %i\n",
print.m_print_statistics.total_toolchanges);
file.write_format("; total layers count = %i\n", m_layer_count);
file.write_format(
";%s\n",
GCodeProcessor::reserved_tag(
GCodeProcessor::ETags::Estimated_Printing_Time_Placeholder)
.c_str());
}
file.write("\n");
print.throw_if_canceled(); print.throw_if_canceled();
} }
@ -2501,28 +2587,41 @@ GCode::LayerResult GCode::process_layer(
double acceleration = m_config.initial_layer_acceleration.value; double acceleration = m_config.initial_layer_acceleration.value;
gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5)); gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5));
} }
if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) {
double jerk = m_config.initial_layer_jerk.value;
gcode += m_writer.set_jerk_xy((unsigned int)floor(jerk + 0.5));
}
} }
if (! first_layer && ! m_second_layer_things_done) { if (! first_layer && ! m_second_layer_things_done) {
//BBS: open powerlost recovery if (print.is_BBL_printer()) {
// BBS: open powerlost recovery
{ {
gcode += "; open powerlost recovery\n"; gcode += "; open powerlost recovery\n";
gcode += "M1003 S1\n"; gcode += "M1003 S1\n";
} }
// BBS: open first layer inspection at second layer // BBS: open first layer inspection at second layer
if (print.config().scan_first_layer.value) { if (print.config().scan_first_layer.value) {
// BBS: retract first to avoid droping when scan model // BBS: retract first to avoid droping when scan model
gcode += this->retract(); gcode += this->retract();
gcode += "M976 S1 P1 ; scan model before printing 2nd layer\n"; gcode += "M976 S1 P1 ; scan model before printing 2nd layer\n";
gcode += "M400 P100\n"; gcode += "M400 P100\n";
gcode += this->unretract(); gcode += this->unretract();
} }
}
//BBS: reset acceleration at sencond layer //BBS: reset acceleration at sencond layer
if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) { if (m_config.default_acceleration.value > 0 && m_config.initial_layer_acceleration.value > 0) {
double acceleration = m_config.default_acceleration.value; double acceleration = m_config.default_acceleration.value;
gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5)); gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5));
} }
if (m_config.default_jerk.value > 0 && m_config.initial_layer_jerk.value > 0) {
double jerk = m_config.default_jerk.value;
gcode += m_writer.set_jerk_xy((unsigned int)floor(jerk + 0.5));
}
// Transition from 1st to 2nd layer. Adjust nozzle temperatures as prescribed by the nozzle dependent // Transition from 1st to 2nd layer. Adjust nozzle temperatures as prescribed by the nozzle dependent
// nozzle_temperature_initial_layer vs. temperature settings. // nozzle_temperature_initial_layer vs. temperature settings.
for (const Extruder &extruder : m_writer.extruders()) { for (const Extruder &extruder : m_writer.extruders()) {
@ -3237,9 +3336,13 @@ std::string GCode::extrude_loop(ExtrusionLoop loop, std::string description, dou
} }
//BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value.
if (!this->on_first_layer()) if (!this->on_first_layer()){
// reset acceleration // reset acceleration
gcode += m_writer.set_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5)); if(m_config.default_acceleration.value > 0)
gcode += m_writer.set_acceleration((unsigned int)(m_config.default_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0)
gcode += m_writer.set_jerk_xy((unsigned int)(m_config.default_jerk.value + 0.5));
}
// BBS // BBS
if (m_wipe.enable) { if (m_wipe.enable) {
@ -3312,9 +3415,12 @@ std::string GCode::extrude_multi_path(ExtrusionMultiPath multipath, std::string
m_wipe.path.reverse(); m_wipe.path.reverse();
} }
//BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value.
if (!this->on_first_layer()) if (!this->on_first_layer()) {
// reset acceleration // reset acceleration
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0)
gcode += m_writer.set_jerk_xy((unsigned int)floor(m_config.default_jerk.value + 0.5));
}
return gcode; return gcode;
} }
@ -3340,9 +3446,13 @@ std::string GCode::extrude_path(ExtrusionPath path, std::string description, dou
m_wipe.path.reverse(); m_wipe.path.reverse();
} }
//BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value. //BBS: don't reset acceleration when printing first layer. During first layer, acceleration is always same value.
if (!this->on_first_layer()) if (!this->on_first_layer()){
// reset acceleration // reset acceleration
gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5)); gcode += m_writer.set_acceleration((unsigned int)floor(m_config.default_acceleration.value + 0.5));
if(m_config.default_jerk.value > 0)
gcode += m_writer.set_jerk_xy((unsigned int)floor(m_config.default_jerk.value + 0.5));
}
return gcode; return gcode;
} }
@ -3541,6 +3651,10 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
} else if (m_config.perimeter_acceleration.value > 0 && is_perimeter(path.role())) { } else if (m_config.perimeter_acceleration.value > 0 && is_perimeter(path.role())) {
acceleration = m_config.perimeter_acceleration.value; acceleration = m_config.perimeter_acceleration.value;
#endif #endif
} else if (m_config.outer_wall_acceleration.value > 0 && is_external_perimeter(path.role())) {
acceleration = m_config.outer_wall_acceleration.value;
} else if (m_config.inner_wall_acceleration.value > 0 && is_internal_perimeter(path.role())) {
acceleration = m_config.inner_wall_acceleration.value;
} else if (m_config.top_surface_acceleration.value > 0 && is_top_surface(path.role())) { } else if (m_config.top_surface_acceleration.value > 0 && is_top_surface(path.role())) {
acceleration = m_config.top_surface_acceleration.value; acceleration = m_config.top_surface_acceleration.value;
} else { } else {
@ -3549,6 +3663,23 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5)); gcode += m_writer.set_acceleration((unsigned int)floor(acceleration + 0.5));
} }
// adjust X Y jerk
if (m_config.default_jerk.value > 0) {
double jerk;
if (this->on_first_layer() && m_config.initial_layer_jerk.value > 0) {
jerk = m_config.initial_layer_jerk.value;
} else if (m_config.outer_wall_jerk.value > 0 && is_external_perimeter(path.role())) {
jerk = m_config.outer_wall_jerk.value;
} else if (m_config.inner_wall_jerk.value > 0 && is_internal_perimeter(path.role())) {
jerk = m_config.inner_wall_jerk.value;
} else if (m_config.top_surface_jerk.value > 0 && is_top_surface(path.role())) {
jerk = m_config.top_surface_jerk.value;
} else {
jerk = m_config.default_jerk.value;
}
gcode += m_writer.set_jerk_xy((unsigned int)floor(jerk + 0.5));
}
// calculate extrusion length per distance unit // calculate extrusion length per distance unit
double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm; double e_per_mm = m_writer.extruder()->e_per_mm3() * path.mm3_per_mm;
@ -3761,7 +3892,34 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
bool could_be_wipe_disabled = false; bool could_be_wipe_disabled = false;
// Save state of use_external_mp_once for the case that will be needed to call twice m_avoid_crossing_perimeters.travel_to. // Save state of use_external_mp_once for the case that will be needed to call twice m_avoid_crossing_perimeters.travel_to.
const bool used_external_mp_once = m_avoid_crossing_perimeters.used_external_mp_once(); const bool used_external_mp_once = m_avoid_crossing_perimeters.used_external_mp_once();
std::string gcode;
// SoftFever
if (this->on_first_layer()) {
if(m_config.default_acceleration.value > 0)
{
auto jerk = (unsigned int)floor(m_config.initial_layer_jerk.value + 0.5);
auto accel = (unsigned int)floor(m_config.initial_layer_acceleration.value + 0.5);
if(jerk > 0)
gcode += m_writer.set_jerk_xy(jerk);
if(accel > 0)
gcode += m_writer.set_acceleration(accel);
}
}
else
{
if(m_config.default_jerk.value > 0)
{
auto jerk = (unsigned int)floor(m_config.travel_jerk.value + 0.5);
auto accel = (unsigned int)floor(m_config.travel_acceleration.value + 0.5);
if(jerk > 0)
gcode += m_writer.set_jerk_xy(jerk);
if(accel > 0)
gcode += m_writer.set_acceleration(accel);
}
}
// if a retraction would be needed, try to use reduce_crossing_wall to plan a // if a retraction would be needed, try to use reduce_crossing_wall to plan a
// multi-hop travel path inside the configuration space // multi-hop travel path inside the configuration space
if (needs_retraction if (needs_retraction
@ -3777,7 +3935,6 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
m_avoid_crossing_perimeters.reset_once_modifiers(); m_avoid_crossing_perimeters.reset_once_modifiers();
// generate G-code for the travel move // generate G-code for the travel move
std::string gcode;
if (needs_retraction) { if (needs_retraction) {
if (m_config.reduce_crossing_wall && could_be_wipe_disabled) if (m_config.reduce_crossing_wall && could_be_wipe_disabled)
m_wipe.reset_path(); m_wipe.reset_path();
@ -3808,9 +3965,9 @@ std::string GCode::travel_to(const Point &point, ExtrusionRole role, std::string
if (i == travel.size() - 1 && !m_spiral_vase) { if (i == travel.size() - 1 && !m_spiral_vase) {
Vec2d dest2d = this->point_to_gcode(travel.points[i]); Vec2d dest2d = this->point_to_gcode(travel.points[i]);
Vec3d dest3d(dest2d(0), dest2d(1), m_nominal_z); Vec3d dest3d(dest2d(0), dest2d(1), m_nominal_z);
gcode += m_writer.travel_to_xyz(dest3d, comment); gcode += m_writer.travel_to_xyz(dest3d, comment+" travel_to_xyz");
} else { } else {
gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment); gcode += m_writer.travel_to_xy(this->point_to_gcode(travel.points[i]), comment+" travel_to_xy");
} }
} }
this->set_last_pos(travel.points.back()); this->set_last_pos(travel.points.back());
@ -3884,7 +4041,11 @@ std::string GCode::retract(bool toolchange, bool is_last_retraction)
if (m_writer.extruder()->retraction_length() > 0) { if (m_writer.extruder()->retraction_length() > 0) {
// BBS: don't do lazy_lift when enable spiral vase // BBS: don't do lazy_lift when enable spiral vase
size_t extruder_id = m_writer.extruder()->id(); size_t extruder_id = m_writer.extruder()->id();
gcode += m_writer.lift(!m_spiral_vase ? LiftType::SpiralLift : LiftType::NormalLift); auto _lift = m_config.z_lift_type.value;
if(m_spiral_vase)
_lift = NormalLift;
gcode += m_writer.lift(_lift);
} }
return gcode; return gcode;

View file

@ -453,10 +453,7 @@ void GCodeProcessor::TimeProcessor::post_process(const std::string& filename, st
PrintEstimatedStatistics::ETimeMode mode = static_cast<PrintEstimatedStatistics::ETimeMode>(i); PrintEstimatedStatistics::ETimeMode mode = static_cast<PrintEstimatedStatistics::ETimeMode>(i);
if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) { if (mode == PrintEstimatedStatistics::ETimeMode::Normal || machine.enabled) {
char buf[128]; char buf[128];
//sprintf(buf, "; estimated printing time (%s mode) = %s\n", sprintf(buf, "; estimated printing time: %s\n", get_time_dhms(machine.time).c_str());
// (mode == PrintEstimatedStatistics::ETimeMode::Normal) ? "normal" : "silent",
// get_time_dhms(machine.time).c_str());
sprintf(buf, "; total estimated time: %s\n", get_time_dhms(machine.time).c_str());
ret += buf; ret += buf;
} }
} }

View file

@ -99,8 +99,7 @@ public:
} }
WipeTowerWriter& disable_linear_advance() { WipeTowerWriter& disable_linear_advance() {
m_gcode += (m_gcode_flavor == gcfRepRapSprinter || m_gcode_flavor == gcfRepRapFirmware m_gcode += (m_gcode_flavor == gcfKlipper ? (std::string("SET_PRESSURE_ADVANCE ADVANCE=0\n"))
? (std::string("M572 D") + std::to_string(m_current_tool) + " S0\n")
: std::string("M900 K0\n")); : std::string("M900 K0\n"));
return *this; return *this;
} }

View file

@ -15,15 +15,16 @@
namespace Slic3r { namespace Slic3r {
const bool GCodeWriter::full_gcode_comment = false; const bool GCodeWriter::full_gcode_comment = true;
const double GCodeWriter::slope_threshold = 3 * PI / 180; const double GCodeWriter::slope_threshold = 3 * PI / 180;
void GCodeWriter::apply_print_config(const PrintConfig &print_config) void GCodeWriter::apply_print_config(const PrintConfig &print_config)
{ {
this->config.apply(print_config, true); this->config.apply(print_config, true);
m_single_extruder_multi_material = print_config.single_extruder_multi_material.value; m_single_extruder_multi_material = print_config.single_extruder_multi_material.value;
bool is_marlin = print_config.gcode_flavor.value == gcfMarlinLegacy || print_config.gcode_flavor.value == gcfMarlinFirmware; bool is_marlin = print_config.gcode_flavor.value == gcfMarlinLegacy || print_config.gcode_flavor.value == gcfMarlinFirmware || print_config.gcode_flavor.value == gcfKlipper;
m_max_acceleration = std::lrint(is_marlin ? print_config.machine_max_acceleration_extruding.values.front() : 0); m_max_acceleration = std::lrint(is_marlin ? print_config.machine_max_acceleration_extruding.values.front() : 0);
m_max_jerk = std::lrint(is_marlin ? std::min(print_config.machine_max_jerk_x.values.front(), print_config.machine_max_jerk_y.values.front()) : 0);
} }
void GCodeWriter::set_extruders(std::vector<unsigned int> extruder_ids) void GCodeWriter::set_extruders(std::vector<unsigned int> extruder_ids)
@ -54,7 +55,8 @@ std::string GCodeWriter::preamble()
FLAVOR_IS(gcfMarlinFirmware) || FLAVOR_IS(gcfMarlinFirmware) ||
FLAVOR_IS(gcfTeacup) || FLAVOR_IS(gcfTeacup) ||
FLAVOR_IS(gcfRepetier) || FLAVOR_IS(gcfRepetier) ||
FLAVOR_IS(gcfSmoothie)) FLAVOR_IS(gcfSmoothie) ||
FLAVOR_IS(gcfKlipper))
{ {
if (RELATIVE_E_AXIS) { if (RELATIVE_E_AXIS) {
gcode << "M83 ; only support relative e\n"; gcode << "M83 ; only support relative e\n";
@ -183,6 +185,30 @@ std::string GCodeWriter::set_acceleration(unsigned int acceleration)
return gcode.str(); return gcode.str();
} }
std::string GCodeWriter::set_jerk_xy(unsigned int jerk)
{
// Clamp the jerk to the allowed maximum.
if (m_max_jerk > 0 && jerk > m_max_jerk)
jerk = m_max_jerk;
if (jerk < 1 || jerk == m_last_jerk)
return std::string();
m_last_jerk = jerk;
std::ostringstream gcode;
if(FLAVOR_IS(gcfKlipper))
gcode << "SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=" << jerk;
else
gcode << "M205 X" << jerk << " Y" << jerk;
if (GCodeWriter::full_gcode_comment) gcode << " ; adjust jerk";
gcode << "\n";
return gcode.str();
}
std::string GCodeWriter::reset_e(bool force) std::string GCodeWriter::reset_e(bool force)
{ {
if (FLAVOR_IS(gcfMach3) if (FLAVOR_IS(gcfMach3)

View file

@ -11,12 +11,6 @@
namespace Slic3r { namespace Slic3r {
enum class LiftType {
NormalLift,
LazyLift,
SpiralLift
};
class GCodeWriter { class GCodeWriter {
public: public:
GCodeConfig config; GCodeConfig config;
@ -26,6 +20,7 @@ public:
multiple_extruders(false), m_extruder(nullptr), multiple_extruders(false), m_extruder(nullptr),
m_single_extruder_multi_material(false), m_single_extruder_multi_material(false),
m_last_acceleration(0), m_max_acceleration(0), m_last_acceleration(0), m_max_acceleration(0),
m_last_jerk(0), m_max_jerk(0),
/*m_last_bed_temperature(0), */m_last_bed_temperature_reached(true), /*m_last_bed_temperature(0), */m_last_bed_temperature_reached(true),
m_lifted(0), m_lifted(0),
m_to_lift(0), m_to_lift(0),
@ -51,6 +46,7 @@ public:
// BBS // BBS
std::string set_bed_temperature(std::vector<int> temps_per_bed, int default_temp, bool wait = false); std::string set_bed_temperature(std::vector<int> temps_per_bed, int default_temp, bool wait = false);
std::string set_acceleration(unsigned int acceleration); std::string set_acceleration(unsigned int acceleration);
std::string set_jerk_xy(unsigned int jerk);
std::string reset_e(bool force = false); std::string reset_e(bool force = false);
std::string update_progress(unsigned int num, unsigned int tot, bool allow_100 = false) const; std::string update_progress(unsigned int num, unsigned int tot, bool allow_100 = false) const;
// return false if this extruder was already selected // return false if this extruder was already selected
@ -104,6 +100,13 @@ private:
// Limit for setting the acceleration, to respect the machine limits set for the Marlin firmware. // Limit for setting the acceleration, to respect the machine limits set for the Marlin firmware.
// If set to zero, the limit is not in action. // If set to zero, the limit is not in action.
unsigned int m_max_acceleration; unsigned int m_max_acceleration;
unsigned int m_max_jerk;
unsigned int m_last_jerk;
unsigned int m_travel_acceleration;
unsigned int m_travel_jerk;
//BBS //BBS
unsigned int m_last_additional_fan_speed; unsigned int m_last_additional_fan_speed;
// BBS // BBS

View file

@ -296,8 +296,10 @@ void LayerRegion::process_external_surfaces(const Layer *lower_layer, const Poly
printf("Processing bridge at layer %zu:\n", this->layer()->id()); printf("Processing bridge at layer %zu:\n", this->layer()->id());
#endif #endif
//BBS: use 0 as custom angle to enable auto detection all the time //BBS: use 0 as custom angle to enable auto detection all the time
double custom_angle = Geometry::deg2rad(0.0); double custom_angle = Geometry::deg2rad(this->region().config().bridge_angle.value);
if (bd.detect_angle(custom_angle)) { if(custom_angle > 0)
bridges[idx_last].bridge_angle = custom_angle;
else if (bd.detect_angle(custom_angle)) {
bridges[idx_last].bridge_angle = bd.angle; bridges[idx_last].bridge_angle = bd.angle;
if (this->layer()->object()->has_support()) { if (this->layer()->object()->has_support()) {
// polygons_append(this->bridged, bd.coverage()); // polygons_append(this->bridged, bd.coverage());

View file

@ -412,6 +412,8 @@ void PerimeterGenerator::process()
for (const Surface &surface : this->slices->surfaces) { for (const Surface &surface : this->slices->surfaces) {
// detect how many perimeters must be generated for this island // detect how many perimeters must be generated for this island
int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops int loop_number = this->config->wall_loops + surface.extra_perimeters - 1; // 0-indexed loops
if (this->layer_id == 0 && this->config->only_one_wall_first_layer)
loop_number = 0;
//BBS: set the topmost layer to be one wall //BBS: set the topmost layer to be one wall
if (loop_number > 0 && config->only_one_wall_top && this->upper_slices == nullptr) if (loop_number > 0 && config->only_one_wall_top && this->upper_slices == nullptr)
loop_number = 0; loop_number = 0;

View file

@ -697,8 +697,9 @@ static std::vector<std::string> s_Preset_print_options {
#endif /* HAS_PRESSURE_EQUALIZER */ #endif /* HAS_PRESSURE_EQUALIZER */
"inner_wall_speed", "outer_wall_speed", "small_perimeter_speed", "sparse_infill_speed", "internal_solid_infill_speed", "inner_wall_speed", "outer_wall_speed", "small_perimeter_speed", "sparse_infill_speed", "internal_solid_infill_speed",
"top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed", "top_surface_speed", "support_speed", "support_object_xy_distance", "support_interface_speed",
"bridge_speed", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed", "bridge_speed", "bridge_angle", "gap_infill_speed", "travel_speed", "travel_speed_z", "initial_layer_speed",
"initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield", "outer_wall_acceleration", "inner_wall_acceleration", "initial_layer_acceleration", "top_surface_acceleration", "default_acceleration", "travel_acceleration", "skirt_loops", "skirt_distance", "skirt_height", "draft_shield",
"default_jerk", "outer_wall_jerk", "inner_wall_jerk", "top_surface_jerk", "initial_layer_jerk","travel_jerk",
"brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers", "brim_width", "brim_object_gap", "brim_type", "enable_support", "support_type", "support_threshold_angle", "enforce_support_layers",
"raft_layers", "raft_first_layer_density", "raft_first_layer_expansion", "raft_contact_distance", "raft_expansion", "raft_layers", "raft_first_layer_density", "raft_first_layer_expansion", "raft_contact_distance", "raft_expansion",
"support_base_pattern", "support_base_pattern_spacing", "support_style", "support_base_pattern", "support_base_pattern_spacing", "support_style",
@ -722,14 +723,17 @@ static std::vector<std::string> s_Preset_print_options {
"detect_narrow_internal_solid_infill", "detect_narrow_internal_solid_infill",
"gcode_add_line_number", "enable_arc_fitting", "infill_combination", "adaptive_layer_height", "gcode_add_line_number", "enable_arc_fitting", "infill_combination", "adaptive_layer_height",
"support_bottom_interface_spacing", "enable_overhang_speed", "overhang_1_4_speed", "overhang_2_4_speed", "overhang_3_4_speed", "overhang_4_4_speed", "support_bottom_interface_spacing", "enable_overhang_speed", "overhang_1_4_speed", "overhang_2_4_speed", "overhang_3_4_speed", "overhang_4_4_speed",
"initial_layer_infill_speed", "only_one_wall_top", "initial_layer_infill_speed", "only_one_wall_top", "only_one_wall_first_layer",
"timelapse_type" "timelapse_type",
//SoftFever
"top_solid_infill_flow_ratio","bottom_solid_infill_flow_ratio"
}; };
static std::vector<std::string> s_Preset_filament_options { static std::vector<std::string> s_Preset_filament_options {
/*"filament_colour", */"filament_diameter", "filament_type", "filament_soluble", "filament_is_support", "filament_max_volumetric_speed", /*"filament_colour", */"filament_diameter", "filament_type", "filament_soluble", "filament_is_support", "filament_max_volumetric_speed",
"filament_flow_ratio", "filament_density", "filament_cost", "filament_minimal_purge_on_wipe_tower", "filament_flow_ratio", "enable_pressure_advance", "pressure_advance", "filament_density", "filament_cost", "filament_minimal_purge_on_wipe_tower",
"nozzle_temperature", "nozzle_temperature_initial_layer", "chamber_temperature", "nozzle_temperature", "nozzle_temperature_initial_layer",
// BBS // BBS
"cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer", "cool_plate_temp", "eng_plate_temp", "hot_plate_temp", "textured_plate_temp", "cool_plate_temp_initial_layer", "eng_plate_temp_initial_layer", "hot_plate_temp_initial_layer","textured_plate_temp_initial_layer",
// "bed_type", // "bed_type",
@ -757,18 +761,20 @@ static std::vector<std::string> s_Preset_machine_limits_options {
static std::vector<std::string> s_Preset_printer_options { static std::vector<std::string> s_Preset_printer_options {
"printer_technology", "printer_technology",
"printable_area", "bed_exclude_area", "gcode_flavor", "printable_area", "bed_exclude_area", "gcode_flavor","z_lift_type",
"single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "layer_change_gcode", "change_filament_gcode", "single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "layer_change_gcode", "change_filament_gcode",
"printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
"default_print_profile", "inherits", "default_print_profile", "inherits",
"silent_mode", "silent_mode",
// BBS // BBS
"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "machine_pause_gcode", "template_custom_gcode", "scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "machine_pause_gcode", "template_custom_gcode",
"nozzle_type", "auxiliary_fan", "nozzle_volume", "nozzle_type", "nozzle_diameter", "auxiliary_fan", "nozzle_volume",
//SoftFever //SoftFever
"host_type", "print_host", "printhost_apikey", "host_type", "print_host", "printhost_apikey",
"printhost_cafile","printhost_port","printhost_authorization_type", "printhost_cafile","printhost_port","printhost_authorization_type",
"printhost_user", "printhost_password", "printhost_ssl_ignore_revoke" "printhost_user",
"printhost_password",
"printhost_ssl_ignore_revoke", "thumbnails"
}; };
static std::vector<std::string> s_Preset_sla_print_options { static std::vector<std::string> s_Preset_sla_print_options {
@ -2238,6 +2244,21 @@ void add_correct_opts_to_diff(const std::string &opt_key, t_config_option_keys&
} }
} }
// template<class T>
// void add_correct_opt_to_diff(const std::string &opt_key, t_config_option_keys& vec, const ConfigBase &other, const ConfigBase &this_c)
// {
// const T* opt_init = static_cast<const T*>(other.option(opt_key));
// const T* opt_cur = static_cast<const T*>(this_c.option(opt_key));
// int opt_init_max_id = opt_init->values.size() - 1;
// for (int i = 0; i < int(opt_cur->values.size()); i++)
// {
// int init_id = i <= opt_init_max_id ? i : 0;
// if (opt_cur->values[i] != opt_init->values[init_id])
// vec.emplace_back(opt_key + "#" + std::to_string(i));
// }
// }
// Use deep_diff to correct return of changed options, considering individual options for each extruder. // Use deep_diff to correct return of changed options, considering individual options for each extruder.
inline t_config_option_keys deep_diff(const ConfigBase &config_this, const ConfigBase &config_other) inline t_config_option_keys deep_diff(const ConfigBase &config_this, const ConfigBase &config_other)
{ {
@ -2248,7 +2269,7 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi
if (this_opt != nullptr && other_opt != nullptr && *this_opt != *other_opt) if (this_opt != nullptr && other_opt != nullptr && *this_opt != *other_opt)
{ {
//BBS: add bed_exclude_area //BBS: add bed_exclude_area
if (opt_key == "printable_area" || opt_key == "bed_exclude_area" || opt_key == "compatible_prints" || opt_key == "compatible_printers") { if (opt_key == "printable_area" || opt_key == "bed_exclude_area" || opt_key == "compatible_prints" || opt_key == "compatible_printers" || opt_key == "thumbnails") {
// Scalar variable, or a vector variable, which is independent from number of extruders, // Scalar variable, or a vector variable, which is independent from number of extruders,
// thus the vector is presented to the user as a single input. // thus the vector is presented to the user as a single input.
diff.emplace_back(opt_key); diff.emplace_back(opt_key);
@ -2261,6 +2282,7 @@ inline t_config_option_keys deep_diff(const ConfigBase &config_this, const Confi
case coBools: add_correct_opts_to_diff<ConfigOptionBools >(opt_key, diff, config_other, config_this); break; case coBools: add_correct_opts_to_diff<ConfigOptionBools >(opt_key, diff, config_other, config_this); break;
case coFloats: add_correct_opts_to_diff<ConfigOptionFloats >(opt_key, diff, config_other, config_this); break; case coFloats: add_correct_opts_to_diff<ConfigOptionFloats >(opt_key, diff, config_other, config_this); break;
case coStrings: add_correct_opts_to_diff<ConfigOptionStrings >(opt_key, diff, config_other, config_this); break; case coStrings: add_correct_opts_to_diff<ConfigOptionStrings >(opt_key, diff, config_other, config_this); break;
// case coString: add_correct_opts_to_diff<ConfigOptionString >(opt_key, diff, config_other, config_this); break;
case coPercents:add_correct_opts_to_diff<ConfigOptionPercents >(opt_key, diff, config_other, config_this); break; case coPercents:add_correct_opts_to_diff<ConfigOptionPercents >(opt_key, diff, config_other, config_this); break;
case coPoints: add_correct_opts_to_diff<ConfigOptionPoints >(opt_key, diff, config_other, config_this); break; case coPoints: add_correct_opts_to_diff<ConfigOptionPoints >(opt_key, diff, config_other, config_this); break;
// BBS // BBS
@ -2741,6 +2763,8 @@ void PhysicalPrinterCollection::load_printers(
// see https://github.com/prusa3d/PrusaSlicer/issues/732 // see https://github.com/prusa3d/PrusaSlicer/issues/732
boost::filesystem::path dir = boost::filesystem::absolute(boost::filesystem::path(dir_path) / subdir).make_preferred(); boost::filesystem::path dir = boost::filesystem::absolute(boost::filesystem::path(dir_path) / subdir).make_preferred();
m_dir_path = dir.string(); m_dir_path = dir.string();
if(!boost::filesystem::exists(dir))
return;
std::string errors_cummulative; std::string errors_cummulative;
// Store the loaded printers into a new vector, otherwise the binary search for already existing presets would be broken. // Store the loaded printers into a new vector, otherwise the binary search for already existing presets would be broken.
std::deque<PhysicalPrinter> printers_loaded; std::deque<PhysicalPrinter> printers_loaded;

View file

@ -38,9 +38,9 @@ static std::vector<std::string> s_project_options {
"wipe_tower_y", "wipe_tower_y",
"wipe_tower_rotation_angle", "wipe_tower_rotation_angle",
"curr_bed_type", "curr_bed_type",
#if !BBL_RELEASE_TO_PUBLIC // #if !BBL_RELEASE_TO_PUBLIC
"flush_multiplier", "flush_multiplier",
#endif // #endif
}; };
//BBS: add BBL as default //BBS: add BBL as default
@ -90,7 +90,7 @@ PresetBundle::PresetBundle()
for (size_t i = 0; i < 1; ++i) { for (size_t i = 0; i < 1; ++i) {
// The following ugly switch is to avoid printers.preset(0) to return the edited instance, as the 0th default is the current one. // The following ugly switch is to avoid printers.preset(0) to return the edited instance, as the 0th default is the current one.
Preset &preset = this->printers.default_preset(i); Preset &preset = this->printers.default_preset(i);
for (const char *key : {"printer_settings_id", "printer_model", "printer_variant"}) preset.config.optptr(key, true); for (const char *key : {"printer_settings_id", "printer_model", "printer_variant", "thumbnails"}) preset.config.optptr(key, true);
//if (i == 0) { //if (i == 0) {
preset.config.optptr("default_print_profile", true); preset.config.optptr("default_print_profile", true);
preset.config.option<ConfigOptionStrings>("default_filament_profile", true); preset.config.option<ConfigOptionStrings>("default_filament_profile", true);
@ -1419,8 +1419,10 @@ DynamicPrintConfig PresetBundle::full_config() const
DynamicPrintConfig PresetBundle::full_config_secure() const DynamicPrintConfig PresetBundle::full_config_secure() const
{ {
DynamicPrintConfig config = this->full_config(); DynamicPrintConfig config = this->full_config();
//BBS example: config.erase("print_host"); //FIXME legacy, the keys should not be there after conversion to a Physical Printer profile.
return config; config.erase("print_host");
config.erase("printhost_apikey");
config.erase("printhost_cafile"); return config;
} }
const std::set<std::string> ignore_settings_list ={ const std::set<std::string> ignore_settings_list ={
@ -2960,7 +2962,7 @@ std::pair<PresetsConfigSubstitutions, size_t> PresetBundle::load_vendor_configs_
//parse error //parse error
std::string subfile_path = path + "/" + vendor_name + "/" + subfile.second; std::string subfile_path = path + "/" + vendor_name + "/" + subfile.second;
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(", got error when parse process setting from %1%") % subfile_path; BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(", got error when parse process setting from %1%") % subfile_path;
throw ConfigurationError((boost::format("Failed loading configuration file %1%\nSuggest cleaning the directory %2% firstly") % subfile_path %vendor_system_path).str()); throw ConfigurationError((boost::format("Failed loading configuration file %1%\nSuggest cleaning the directory %2% firstly.\nReason: %3%") % subfile_path %vendor_system_path %reason).str());
} }
} }
@ -3435,4 +3437,4 @@ void PresetBundle::set_default_suppressed(bool default_suppressed)
printers.set_default_suppressed(default_suppressed); printers.set_default_suppressed(default_suppressed);
} }
} // namespace Slic3r } // namespace Slic3r

View file

@ -68,7 +68,9 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
//BBS: add bed_exclude_area //BBS: add bed_exclude_area
"bed_exclude_area", "bed_exclude_area",
"before_layer_change_gcode", "before_layer_change_gcode",
"enable_overhang_bridge_fan" "enable_pressure_advance",
"pressure_advance",
"enable_overhang_bridge_fan",
"overhang_fan_speed", "overhang_fan_speed",
"overhang_fan_threshold", "overhang_fan_threshold",
"slow_down_for_layer_cooling", "slow_down_for_layer_cooling",
@ -90,8 +92,11 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"filament_diameter", "filament_diameter",
"filament_density", "filament_density",
"filament_cost", "filament_cost",
"outer_wall_acceleration",
"inner_wall_acceleration",
"initial_layer_acceleration", "initial_layer_acceleration",
"top_surface_acceleration", "top_surface_acceleration",
"travel_acceleration",
// BBS // BBS
"cool_plate_temp_initial_layer", "cool_plate_temp_initial_layer",
"eng_plate_temp_initial_layer", "eng_plate_temp_initial_layer",
@ -124,10 +129,13 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"filament_start_gcode", "filament_start_gcode",
"change_filament_gcode", "change_filament_gcode",
"wipe", "wipe",
"z_lift_type",
// BBS // BBS
"wipe_distance", "wipe_distance",
"curr_bed_type", "curr_bed_type",
"nozzle_volume" "nozzle_volume",
"chamber_temperature",
"thumbnails"
}; };
static std::unordered_set<std::string> steps_ignore; static std::unordered_set<std::string> steps_ignore;
@ -164,6 +172,7 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
} else if ( } else if (
opt_key == "print_sequence" opt_key == "print_sequence"
|| opt_key == "filament_type" || opt_key == "filament_type"
|| opt_key == "chamber_temperature"
|| opt_key == "nozzle_temperature_initial_layer" || opt_key == "nozzle_temperature_initial_layer"
|| opt_key == "filament_minimal_purge_on_wipe_tower" || opt_key == "filament_minimal_purge_on_wipe_tower"
|| opt_key == "filament_max_volumetric_speed" || opt_key == "filament_max_volumetric_speed"

Some files were not shown because too many files have changed in this diff Show more