Merge pull request #633 from SoftFever/SoftFever

More changes for 1.6
This commit is contained in:
SoftFever 2023-04-03 21:48:29 +08:00 committed by GitHub
commit 166890db53
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 756 additions and 130 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -6832,6 +6832,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7271,6 +7277,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr ""

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: Heiko Liebscher <hliebschergmail.com>\n"
"Language-Team: \n"
@ -7659,6 +7659,12 @@ msgstr ""
"kompatibel mit der Einzeldruckerdüsen-Mehrmaterial-Konfiguration und mit der "
"Option zum Wischen in das Objekt / in den Innenfüllbereich."
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr "ausführlicher G-Code"
@ -8177,6 +8183,9 @@ msgstr ""
"Firmware das Zurückziehen zu handhaben.Dies wird nur von aktuellen Marlin-"
"Firmware unterstützt."
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Nahtposition"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@ -7130,6 +7130,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7611,6 +7617,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Seam position"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -7230,6 +7230,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7722,6 +7728,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Posición de la costura"

View File

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: 2023-02-21 21:56+0200\n"
"Last-Translator: 5axes <5axes@free.fr>\n"
"Language-Team: 5axes\n"
@ -7556,6 +7556,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -8078,6 +8084,9 @@ msgstr ""
"Ce réglage expérimental utilise les commandes G10 et G11 pour que le "
"firmware gère la rétraction. Ceci n'est supporté que dans les Marlin récents."
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Position de la jointure"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -7194,6 +7194,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7686,6 +7692,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Varrat pozíció"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -7130,6 +7130,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7611,6 +7617,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Posizione giunzione"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
@ -7117,6 +7117,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7586,6 +7592,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "継ぎ目位置"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -7241,6 +7241,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7737,6 +7743,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Naad positie"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Orca Slicer\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -7124,6 +7124,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr ""
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr ""
msgid "Verbose G-code"
msgstr ""
@ -7610,6 +7616,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr ""
msgid "Seam position"
msgstr "Söm position"

View File

@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Slic3rPE\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-03-29 23:15+0800\n"
"PO-Revision-Date: 2023-01-16 11:26+0800\n"
"POT-Creation-Date: 2023-04-02 11:05+0800\n"
"PO-Revision-Date: 2023-04-01 13:21+0800\n"
"Last-Translator: Jiang Yue <maze1024@gmail.com>\n"
"Language-Team: \n"
"Language: zh_CN\n"
@ -7001,6 +7001,12 @@ msgid ""
"setup and Wipe into Object / Wipe into Infill."
msgstr ""
msgid "Exclude objects"
msgstr "对象排除"
msgid "Enable this option to add EXCLUDE OBJECT command in g-code"
msgstr "开启此选项以支持对象排除"
msgid "Verbose G-code"
msgstr "注释G-code"
@ -7458,6 +7464,9 @@ msgid ""
"handle the retraction. This is only supported in recent Marlin."
msgstr ""
msgid "Show auto-calibration marks"
msgstr "显示雷达标定线"
msgid "Seam position"
msgstr "接缝位置"

Binary file not shown.

View File

@ -1,7 +1,7 @@
{
"name": "Bambulab",
"url": "http://www.bambulab.com/Parameters/vendor/BBL.json",
"version": "01.05.00.20",
"version": "01.06.00.01",
"force_update": "0",
"description": "the initial version of BBL configurations",
"machine_model_list": [

View File

@ -0,0 +1,353 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="988"
height="1026"
viewBox="0 0 988 1026"
fill="none"
version="1.1"
id="svg151"
sodipodi:docname="bbl-3dp-logo_cali_lines.svg"
inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs155" />
<sodipodi:namedview
id="namedview153"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
showgrid="false"
inkscape:zoom="0.70710678"
inkscape:cx="462.44783"
inkscape:cy="709.2281"
inkscape:window-width="1718"
inkscape:window-height="1360"
inkscape:window-x="-7"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg151"
inkscape:snap-global="true"
inkscape:showpageshadow="2"
inkscape:deskcolor="#d1d1d1" />
<rect
x="23.5083"
y="47.3984"
width="35.2051"
height="238.804"
fill="#444646"
id="rect83" />
<path
d="M529.093 987.289L502.234 1014.01H509.927L536.652 987.289H529.093Z"
fill="#CFD2D3"
id="path85"
style="fill:#000000" />
<path
d="M544.207 987.289L517.483 1014.01H525.041L551.901 987.289H544.207Z"
fill="#CFD2D3"
id="path87"
style="fill:#000000" />
<path
d="M559.461 987.289L532.736 1014.01H540.43L567.154 987.289H559.461Z"
fill="#CFD2D3"
id="path89"
style="fill:#000000" />
<path
d="M574.849 987.289L547.989 1014.01H555.683L582.407 987.289H574.849Z"
fill="#CFD2D3"
id="path91"
style="fill:#000000" />
<path
d="M590.098 987.289L563.374 1014.01H570.932L597.792 987.289H590.098Z"
fill="#CFD2D3"
id="path93"
style="fill:#000000" />
<path
d="M605.487 987.289L578.627 1014.01H586.32L613.045 987.289H605.487Z"
fill="#CFD2D3"
id="path95"
style="fill:#000000" />
<path
d="M620.74 987.289L594.015 1014.01H601.574L628.433 987.289H620.74Z"
fill="#CFD2D3"
id="path97"
style="fill:#000000" />
<path
d="M635.989 987.289L609.264 1014.01H616.823L643.682 987.289H635.989Z"
fill="#CFD2D3"
id="path99"
style="fill:#000000" />
<path
d="M651.377 987.289L624.518 1014.01H632.211L658.936 987.289H651.377Z"
fill="#CFD2D3"
id="path101"
style="fill:#000000" />
<path
d="M666.631 987.289L639.771 1014.01H647.464L674.324 987.289H666.631Z"
fill="#CFD2D3"
id="path103"
style="fill:#000000" />
<path
d="M375.627 987.289L348.767 1014.01H356.461L383.32 987.289H375.627Z"
fill="#CFD2D3"
id="path105"
style="fill:#000000" />
<path
d="M390.745 987.289L364.021 1014.01H371.579L398.439 987.289H390.745Z"
fill="#CFD2D3"
id="path107"
style="fill:#000000" />
<path
d="M406.133 987.289L379.273 1014.01H386.967L413.691 987.289H406.133Z"
fill="#CFD2D3"
id="path109"
style="fill:#000000" />
<path
d="M421.382 987.289L394.658 1014.01H402.216L429.076 987.289H421.382Z"
fill="#CFD2D3"
id="path111"
style="fill:#000000" />
<path
d="M436.636 987.289L409.911 1014.01H417.605L444.329 987.289H436.636Z"
fill="#CFD2D3"
id="path113"
style="fill:#000000" />
<path
d="M452.024 987.289L425.164 1014.01H432.858L459.582 987.289H452.024Z"
fill="#CFD2D3"
id="path115"
style="fill:#000000" />
<path
d="M467.273 987.289L440.548 1014.01H448.107L474.966 987.289H467.273Z"
fill="#CFD2D3"
id="path117"
style="fill:#000000" />
<path
d="M482.526 987.289L455.802 1014.01H463.495L490.22 987.289H482.526Z"
fill="#CFD2D3"
id="path119"
style="fill:#000000" />
<path
d="M497.915 987.289L471.055 1014.01H478.749L505.473 987.289H497.915Z"
fill="#CFD2D3"
id="path121"
style="fill:#000000" />
<path
d="M513.164 987.289L486.439 1014.01H493.997L520.857 987.289H513.164Z"
fill="#CFD2D3"
id="path123"
style="fill:#000000" />
<path
d="M662.848 1014.02L678.1 998.764V991.07L655.155 1014.02H662.848Z"
fill="#CFD2D3"
id="path125"
style="fill:#000000" />
<path
d="M678.102 1014.02V1006.46L670.409 1014.02H678.102Z"
fill="#CFD2D3"
id="path127"
style="fill:#000000" />
<path
d="M358.352 987.289L343.1 1002.54V1010.23L366.045 987.289H358.352Z"
fill="#CFD2D3"
id="path129"
style="fill:#000000" />
<path
d="M48.4548 139.256V114.691H30.5034V119.55H44.0007C44.2706 119.55 44.5406 119.82 44.5406 120.09V126.569C44.5406 126.839 44.2706 127.109 44.0007 127.109H30.5034V131.968H44.0007C44.2706 131.968 44.5406 132.238 44.5406 132.508V138.986C44.5406 139.256 44.2706 139.526 44.0007 139.526H30.5034V144.385H43.4608C46.2952 143.98 48.4548 141.956 48.4548 139.256Z"
fill="#CFD2D3"
id="path131" />
<path
d="M34.9575 190.278C34.6876 190.278 34.4176 190.008 34.4176 189.738V178.131C34.4176 177.861 34.6876 177.591 34.9575 177.591H48.4548V173.137H35.4974C32.798 173.137 30.5034 175.296 30.5034 177.996V190.008C30.5034 192.708 32.663 194.867 35.4974 194.867H48.4548V190.413H34.9575V190.278Z"
fill="#CFD2D3"
id="path133" />
<path
d="M48.4555 105.513V88.1015L44.5413 89.5862V105.378C44.5413 105.648 44.2713 105.918 44.0014 105.918H41.7068V91.7457C41.7068 89.0463 39.5473 86.8867 36.7129 86.8867H35.3631C32.6637 86.8867 30.3691 89.0463 30.3691 91.7457V110.372H43.3265C46.2959 110.372 48.4555 108.212 48.4555 105.513ZM34.4183 105.783V91.8807C34.4183 91.6108 34.6883 91.3408 34.9582 91.3408H37.5227C37.7926 91.3408 38.0626 91.6108 38.0626 91.8807V105.783H34.4183Z"
fill="#CFD2D3"
id="path135" />
<path
d="M48.4548 164.228V152.89H52.9089V148.031H30.5034V153.025V164.363C30.5034 167.062 32.663 169.222 35.4974 169.222H43.4608C46.2952 169.087 48.4548 166.927 48.4548 164.228ZM34.9575 164.228C34.6876 164.228 34.4176 163.958 34.4176 163.688V152.89H44.5406V163.688C44.5406 163.958 44.2706 164.228 44.0007 164.228H34.9575Z"
fill="#CFD2D3"
id="path137" />
<path
d="M37.9269 83.246C39.6816 83.1111 41.1663 82.3012 42.246 80.9515C43.1909 81.6264 44.4056 82.0313 45.7553 82.1663C45.8903 82.1663 47.1051 82.1663 47.24 82.1663C51.0193 81.8963 53.8537 78.2521 53.8537 73.9329C53.8537 73.9329 53.8537 68.3991 53.8537 64.0799H49.8045L47.9149 59.0859H30.5034V76.9023C30.5034 76.9023 30.5034 77.1723 30.5034 77.3072C30.7734 80.4116 33.3378 82.9761 36.5772 83.1111C36.8471 83.246 37.657 83.246 37.9269 83.246ZM49.8045 64.0799V74.6078C49.8045 74.8777 49.6695 75.1477 49.6695 75.5526C49.2646 76.4974 48.3198 77.3072 47.1051 77.3072C47.1051 77.3072 46.7001 77.3072 46.5652 77.3072C45.6204 77.1723 44.9455 76.6324 44.6756 75.8225C44.5406 75.4176 44.4056 75.1477 44.4056 74.7428V64.3499H49.8045V64.0799ZM34.4176 75.2827V64.0799H40.3564V75.2827C40.3564 76.9023 39.0067 78.1171 37.387 78.1171C35.7674 78.2521 34.4176 76.9023 34.4176 75.2827Z"
fill="#CFD2D3"
id="path139" />
<path
d="M53.8545 64.0739H58.7135L56.6889 59.2148H51.9648L53.8545 64.0739Z"
fill="#CFD2D3"
id="path141" />
<path
d="M34.8225 214.976H52.9089V210.117H30.5034V228.204L34.8225 226.584V214.976Z"
fill="#CFD2D3"
id="path143" />
<path
d="M48.4555 249.126V231.715L44.5413 233.199V248.991C44.5413 249.261 44.2713 249.531 44.0014 249.531H41.7068V235.359C41.7068 232.66 39.5473 230.5 36.7129 230.5H35.3631C32.6637 230.5 30.3691 232.66 30.3691 235.359V253.985H43.3265C46.2959 253.985 48.4555 251.826 48.4555 249.126ZM34.4183 249.531V235.629C34.4183 235.359 34.6883 235.089 34.9582 235.089H37.5227C37.7926 235.089 38.0626 235.359 38.0626 235.629V249.531H34.4183Z"
fill="#CFD2D3"
id="path145" />
<path
d="M48.4548 274.636V263.299H52.9089V263.164V258.305H30.5034V263.299V274.636C30.5034 277.336 32.663 279.495 35.4974 279.495H43.4608C46.2952 279.495 48.4548 277.336 48.4548 274.636ZM34.9575 274.636C34.6876 274.636 34.4176 274.366 34.4176 274.096V263.299H44.5406V274.096C44.5406 274.366 44.2706 274.636 44.0007 274.636H34.9575Z"
fill="#CFD2D3"
id="path147" />
<path
d="M343.1 987.289V994.983L350.793 987.289H343.1Z"
fill="#CFD2D3"
id="path149"
style="fill:#000000" />
<rect
style="fill:#ffffff;stroke-width:0.948129"
id="rect4422"
width="520.87512"
height="5.0491347"
x="173.5874"
y="877.83923" />
<rect
style="fill:#ffffff;stroke-width:0.947788"
id="rect4422-6"
width="520.49933"
height="5.0491347"
x="173.90875"
y="885.52362" />
<rect
style="fill:#ffffff;stroke-width:0.947457"
id="rect4422-6-4"
width="520.13898"
height="5.0491347"
x="173.70341"
y="893.6759"
transform="skewY(-0.05141323)" />
<rect
style="fill:#ffffff;stroke-width:1.09463"
id="rect4422-9"
width="694.28546"
height="5.0491347"
x="174.02068"
y="908.36542" />
<rect
style="fill:#ffffff;stroke-width:0.999197"
id="rect4422-9-6"
width="578.5025"
height="5.0491347"
x="135.24561"
y="900.79169" />
<rect
style="fill:#ffffff;stroke-width:0.944614"
id="rect4616"
width="858.28522"
height="5.0844736"
x="69.781494"
y="964.92517" />
<rect
style="fill:#ffffff;stroke-width:0.982088"
id="rect4739"
width="5.922822"
height="38.830326"
x="922.14795"
y="929.78229" />
<rect
style="fill:#ffffff;stroke-width:0.806464"
id="rect4741"
width="3.7179213"
height="97.910393"
x="107.06094"
y="800.4068" />
<rect
style="fill:#ffffff;stroke-width:0.738357"
id="rect4765"
width="1.0621638"
height="113.25417"
x="119.2979"
y="785.06305" />
<rect
style="fill:#ffffff;stroke-width:0.856916"
id="rect4765-5"
width="1.4595615"
height="111.01154"
x="184.3526"
y="784.43365" />
<rect
style="fill:#ffffff;stroke-width:1.41712"
id="rect4767"
width="9.5877419"
height="1.5024685"
x="110.75843"
y="896.81476" />
<rect
style="fill:#ffffff;stroke-width:0.901159"
id="rect4769"
width="1.1886613"
height="79.032463"
x="114.86578"
y="816.19232" />
<rect
style="fill:#ffffff;stroke-width:1.0071"
id="rect4894"
width="78.958275"
height="1.4536686"
x="114.8727"
y="814.78186" />
<rect
style="fill:#ffffff;stroke-width:0.996906"
id="rect4894-0"
width="77.36702"
height="1.4536686"
x="114.86713"
y="841.6106" />
<rect
style="fill:#ffffff;stroke-width:0.955464"
id="rect4894-0-9"
width="71.068466"
height="1.4536686"
x="114.85016"
y="895.22485" />
<rect
style="fill:#ffffff;stroke-width:0.886329"
id="rect5083"
width="1.6320368"
height="27.423662"
x="192.23419"
y="815.61792" />
<rect
style="fill:#ffffff;stroke-width:0.650632"
id="rect5187"
width="26.083197"
height="1.0183905"
x="119.32064"
y="784.00677" />
<rect
style="fill:#ffffff;stroke-width:0.806941"
id="rect5189"
width="22.089027"
height="1.1687242"
x="163.21539"
y="784.42859" />
<rect
style="fill:#ffffff;stroke-width:0.798828"
id="rect5191"
width="1.6710807"
height="42.574242"
x="163.20799"
y="743.01849" />
<rect
style="fill:#ffffff;stroke-width:0.906734"
id="rect5193"
width="1.7119948"
height="41.752552"
x="143.69186"
y="743.27118" />
<rect
style="fill:#ffffff;stroke-width:0.900121"
id="rect5195"
width="21.177448"
height="0.96902961"
x="143.69186"
y="742.39026" />
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Layer 2" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

View File

@ -7,7 +7,7 @@
"machine_tech": "FFF",
"family": "BBL-3DP",
"bed_model": "bbl-3dp-X1.stl",
"bed_texture": "bbl-3dp-logo.svg",
"bed_texture": "bbl-3dp-logo_cali_lines.svg",
"hotend_model": "bbl-3dp-hotend.stl",
"default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1C;Bambu PLA Basic @BBL X1C;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1C;Bambu TPU 95A @BBL X1C;PolyTerra PLA @BBL X1C;PolyLite PLA @BBL X1C;"
}

View File

@ -7,7 +7,7 @@
"machine_tech": "FFF",
"family": "BBL-3DP",
"bed_model": "bbl-3dp-X1.stl",
"bed_texture": "bbl-3dp-logo.svg",
"bed_texture": "bbl-3dp-logo_cali_lines.svg",
"hotend_model": "bbl-3dp-hotend.stl",
"default_materials": "Generic PLA Silk;Generic PLA;Bambu PLA Matte @BBL X1;Bambu PLA Basic @BBL X1;Bambu ABS @BBL X1C;Bambu PC @BBL X1C;Bambu Support W @BBL X1;Bambu TPU 95A @BBL X1;PolyTerra PLA @BBL X1;PolyLite PLA @BBL X1;"
}

View File

@ -110,8 +110,7 @@
"0.08"
],
"printable_height": "250",
"extruder_clearance_radius": "57",
"extruder_clearance_max_radius": "68",
"extruder_clearance_radius": "68",
"extruder_clearance_height_to_rod": "36",
"extruder_clearance_height_to_lid": "90",
"nozzle_volume": "107",

View File

@ -0,0 +1,33 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Printer Connection Required</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #272727;
}
.container {
text-align: center;
background-color: #272727;
padding: 30px;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(39, 39, 39, 0.1);
}
</style>
</head>
<body>
<div class="container">
<h1>Printer Connection</h1>
<p>Please set up your printer connection to view the device.</p>
<img src="setup_connection.gif" alt="Printer connection setup demonstration" style="max-width: 100%; height: auto; display: block;"/>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 738 KiB

View File

@ -5494,7 +5494,8 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
date = date.substr(0, 10);
metadata_item_map[BBL_CREATION_DATE_TAG] = date;
metadata_item_map[BBL_MODIFICATION_TAG] = date;
metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % SLIC3R_APP_KEY % SLIC3R_VERSION).str();
//SoftFever: write BambuStudio tag to keep it compatible
metadata_item_map[BBL_APPLICATION_TAG] = (boost::format("%1%-%2%") % "BambuStudio" % SLIC3R_VERSION).str();
}
metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF);

View File

@ -1530,12 +1530,6 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
print.config().nozzle_temperature_initial_layer.get_at(0));
file.write("; CONFIG_BLOCK_END\n\n");
} else {
file.write_format("; hack-fix: write fake slicer info here so that "
"preprocess_cancellation can process.\n");
file.write_format("; %s\n\n", std::string(std::string("generated by SuperSlicer " SoftFever_VERSION " on ") +
Slic3r::Utils::local_timestamp())
.c_str());
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); },
@ -1563,6 +1557,10 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
}
file.write_format("; EXECUTABLE_BLOCK_START\n");
// SoftFever
file.write(set_object_info(&print));
// adds tags for time estimators
file.write_format(";%s\n", GCodeProcessor::reserved_tag(GCodeProcessor::ETags::First_Line_M73_Placeholder).c_str());
@ -1791,13 +1789,6 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
// Write the custom start G-code
file.writeln(machine_start_gcode);
if (print.config().gcode_flavor == gcfKlipper) {
this->_print_first_layer_bed_temperature(file, print, "",
initial_extruder_id, true);
this->_print_first_layer_extruder_temperatures(
file, print, "", initial_extruder_id, false);
}
//BBS: gcode writer doesn't know where the real position of extruder is after inserting custom gcode
m_writer.set_current_position_clear(false);
@ -1810,7 +1801,8 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
file.writeln(this->placeholder_parser_process("filament_start_gcode", print.config().filament_start_gcode.values[initial_extruder_id], initial_extruder_id, &config));
}
*/
this->_print_first_layer_extruder_temperatures(file, print, machine_start_gcode, initial_extruder_id, true);
if (is_bbl_printers)
this->_print_first_layer_extruder_temperatures(file, print, machine_start_gcode, initial_extruder_id, true);
print.throw_if_canceled();
// Set other general things.
@ -2670,6 +2662,14 @@ namespace Skirt {
} // namespace Skirt
inline std::string get_instance_name(const PrintObject *object, const PrintInstance &inst) {
return (boost::format("%1%_id_%2%_copy_%3%") % object->model_object()->name % object->get_id() % inst.id).str();
}
inline std::string get_instance_name(const PrintObject *object, size_t inst_id) {
return (boost::format("%1%_id_%2%_copy_%3%") % object->model_object()->name % object->get_id() % inst_id).str();
}
// In sequential mode, process_layer is called once per each object and its copy,
// therefore layers will contain a single entry and single_object_instance_idx will point to the copy of the object.
// In non-sequential mode, process_layer is called per each print_z height with all object and support layers accumulated.
@ -3172,6 +3172,7 @@ GCode::LayerResult GCode::process_layer(
if (is_anything_overridden && print_wipe_extrusions == 0)
gcode+="; PURGING FINISHED\n";
for (InstanceToPrint &instance_to_print : instances_to_print) {
const auto& inst = instance_to_print.print_object.instances()[instance_to_print.instance_id];
const LayerToPrint &layer_to_print = layers[instance_to_print.layer_id];
// To control print speed of the 1st object layer printed over raft interface.
bool object_layer_over_raft = layer_to_print.object_layer && layer_to_print.object_layer->id() > 0 &&
@ -3181,15 +3182,23 @@ GCode::LayerResult GCode::process_layer(
m_object_layer_over_raft = object_layer_over_raft;
if (m_config.reduce_crossing_wall)
m_avoid_crossing_perimeters.init_layer(*m_layer);
bool reset_e = false;
if (this->config().gcode_label_objects) {
gcode += std::string("; printing object ") + instance_to_print.print_object.model_object()->name + " id:" + std::to_string(instance_to_print.layer_id) + " copy " + std::to_string(instance_to_print.instance_id) + "\n";
if (!m_config.use_relative_e_distances)
gcode += m_writer.reset_e(true);
gcode += std::string("; printing object ") + instance_to_print.print_object.model_object()->name + " id:" + std::to_string(instance_to_print.print_object.get_id()) + " copy " + std::to_string(inst.id) + "\n";
reset_e = true;
}
if (this->config().exclude_object && print.config().gcode_flavor.value == gcfKlipper) {
gcode += std::string("EXCLUDE_OBJECT_START NAME=") +
get_instance_name(&instance_to_print.print_object, inst.id) + "\n";
reset_e = true;
}
// ref to: https://github.com/SoftFever/OrcaSlicer/pull/205/commits/7f1fe0bd544077626080aa1a9a0576aa735da1a4#r1083470162
if (reset_e && !m_config.use_relative_e_distances)
gcode += m_writer.reset_e(true);
m_extrusion_quality_estimator.set_current_object(&instance_to_print.print_object);
// When starting a new object, use the external motion planner for the first travel move.
const Point &offset = instance_to_print.print_object.instances()[instance_to_print.instance_id].shift;
const Point &offset = inst.shift;
std::pair<const PrintObject*, Point> this_object_copy(&instance_to_print.print_object, offset);
if (m_last_obj_copy != this_object_copy)
m_avoid_crossing_perimeters.use_external_mp_once();
@ -3274,10 +3283,16 @@ GCode::LayerResult GCode::process_layer(
gcode += this->extrude_infill(print,by_region_specific, true);
}
if (this->config().gcode_label_objects) {
gcode += std::string("; stop printing object ") + instance_to_print.print_object.model_object()->name + " id:" + std::to_string(instance_to_print.layer_id) + " copy " + std::to_string(instance_to_print.instance_id) + "\n";
if (!m_config.use_relative_e_distances)
gcode += m_writer.reset_e(true);
gcode += std::string("; stop printing object ") + instance_to_print.print_object.model_object()->name + " id:" + std::to_string(instance_to_print.print_object.get_id()) + " copy " + std::to_string(inst.id) + "\n";
reset_e = true;
}
if (this->config().exclude_object && print.config().gcode_flavor.value == gcfKlipper) {
gcode += std::string("EXCLUDE_OBJECT_END NAME=") +
get_instance_name(&instance_to_print.print_object, inst.id) + "\n";
reset_e = true;
}
if (reset_e && !m_config.use_relative_e_distances)
gcode += m_writer.reset_e(true);
}
}
}
@ -4591,6 +4606,37 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z)
return gcode;
}
inline std::string polygon_to_string(const Polygon &polygon) {
std::ostringstream gcode;
gcode << "[";
for (const Point &p : polygon.points) {
gcode << "[" << unscaled(p.x()) << "," << unscaled(p.y()) << "],";
}
gcode << "[" << unscaled(polygon.points.front().x()) << "," << unscaled(polygon.points.front().y()) << "]";
gcode << "]";
return gcode.str();
}
// this function iterator PrintObject and assign a seqential id to each object.
// this id is used to generate unique object id for each object.
std::string GCode::set_object_info(Print* print) {
std::ostringstream gcode;
size_t object_id = 0;
for (PrintObject* object : print->objects()) {
object->set_id(object_id++);
size_t inst_id = 0;
for (PrintInstance &inst : object->instances()) {
inst.id = inst_id++;
if (this->config().exclude_object && print->config().gcode_flavor.value == gcfKlipper) {
auto bbox = inst.get_bounding_box();
gcode << "EXCLUDE_OBJECT_DEFINE NAME=" << get_instance_name(object, inst)
<< " CENTER=" << bbox.center().x() << "," << bbox.center().y()
<< " POLYGON=" << polygon_to_string(inst.get_convex_hull_2d()) << "\n";
}
}
}
return gcode.str();
}
// convert a model-space scaled point into G-code coordinates
Vec2d GCode::point_to_gcode(const Point &point) const
{
@ -4714,4 +4760,9 @@ void GCode::ObjectByExtruder::Island::Region::append(const Type type, const Extr
}
}
} // namespace Slic3r
// Index into std::vector<LayerToPrint>, which contains Object and Support layers for the current print_z, collected for
// a single object, or for possibly multiple objects with multiple instances.
} // namespace Slic3r

View File

@ -202,6 +202,9 @@ public:
std::string unretract() { return m_writer.unlift() + m_writer.unretract(); }
std::string set_extruder(unsigned int extruder_id, double print_z);
// SoftFever
std::string set_object_info(Print* print);
// append full config to the given string
static void append_full_config(const Print& print, std::string& str);

View File

@ -1286,18 +1286,21 @@ const BoundingBoxf3& ModelObject::raw_bounding_box() const
}
// This returns an accurate snug bounding box of the transformed object instance, without the translation applied.
BoundingBoxf3 ModelObject::instance_bounding_box(size_t instance_idx, bool dont_translate) const
{
BoundingBoxf3 bb;
const Transform3d& inst_matrix = this->instances[instance_idx]->get_transformation().get_matrix(dont_translate);
for (ModelVolume *v : this->volumes)
{
if (v->is_model_part())
bb.merge(v->mesh().transformed_bounding_box(inst_matrix * v->get_matrix()));
}
return bb;
BoundingBoxf3 ModelObject::instance_bounding_box(size_t instance_idx, bool dont_translate) const {
return instance_bounding_box(*this->instances[instance_idx], dont_translate);
}
BoundingBoxf3 ModelObject::instance_bounding_box(const ModelInstance &instance, bool dont_translate) const {
BoundingBoxf3 bbox;
const auto& inst_mat = instance.get_transformation().get_matrix(dont_translate);
for (auto vol : this->volumes) {
if (vol->is_model_part())
bbox.merge(vol->mesh().transformed_bounding_box(inst_mat * vol->get_matrix()));
}
return bbox;
}
//BBS: add convex bounding box
BoundingBoxf3 ModelObject::instance_convex_hull_bounding_box(size_t instance_idx, bool dont_translate) const
{

View File

@ -345,6 +345,8 @@ public:
const BoundingBoxf3& raw_bounding_box() const;
// A snug bounding box around the transformed non-modifier object volumes.
BoundingBoxf3 instance_bounding_box(size_t instance_idx, bool dont_translate = false) const;
BoundingBoxf3 instance_bounding_box(const ModelInstance& instance, bool dont_translate = false) const;
// A snug bounding box of non-transformed (non-rotated, non-scaled, non-translated) sum of non-modifier object volumes.
const BoundingBoxf3& raw_mesh_bounding_box() const;
// A snug bounding box of non-transformed (non-rotated, non-scaled, non-translated) sum of all object volumes.

View File

@ -755,7 +755,8 @@ static std::vector<std::string> s_Preset_print_options {
"role_based_wipe_speed", "wipe_speed", "accel_to_decel_enable", "accel_to_decel_factor", "wipe_on_loops",
"bridge_density", "precise_outer_wall", "overhang_speed_classic", "bridge_acceleration",
"sparse_infill_acceleration", "internal_solid_infill_acceleration", "tree_support_adaptive_layer_height", "tree_support_auto_brim",
"tree_support_brim_width", "gcode_comments", "gcode_label_objects", "initial_layer_travel_speed"
"tree_support_brim_width", "gcode_comments", "gcode_label_objects",
"initial_layer_travel_speed", "exclude_object"
};
@ -795,7 +796,7 @@ static std::vector<std::string> s_Preset_printer_options {
"printer_technology",
"printable_area", "bed_exclude_area","bed_custom_texture", "bed_custom_model", "gcode_flavor",
"single_extruder_multi_material", "machine_start_gcode", "machine_end_gcode", "before_layer_change_gcode", "layer_change_gcode", "change_filament_gcode",
"printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_max_radius","extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
"printer_model", "printer_variant", "printable_height", "extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod",
"default_print_profile", "inherits",
"silent_mode",
// BBS
@ -805,9 +806,8 @@ static std::vector<std::string> s_Preset_printer_options {
"host_type", "print_host", "printhost_apikey",
"print_host_webui",
"printhost_cafile","printhost_port","printhost_authorization_type",
"printhost_user", "printhost_password", "printhost_ssl_ignore_revoke",
"thumbnails", "use_firmware_retraction", "use_relative_e_distances"
};
"printhost_user", "printhost_password", "printhost_ssl_ignore_revoke", "thumbnails",
"use_firmware_retraction", "use_relative_e_distances", "bbl_calib_mark_logo"};
static std::vector<std::string> s_Preset_sla_print_options {
"layer_height",

View File

@ -3512,9 +3512,9 @@ std::vector<std::string> PresetBundle::export_current_configs(const std::string
std::string file = path + "/" + preset->name + ".json";
if (boost::filesystem::exists(file) && overwrite < 2) {
overwrite = override_confirm(preset->name);
if (overwrite == 0 || overwrite == 2)
continue;
}
if (overwrite == 0 || overwrite == 2)
continue;
preset->config.save_to_json(file, preset->name, "", preset->version.to_string());
result.push_back(file);
}

View File

@ -88,7 +88,6 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"extruder_clearance_height_to_rod",
"extruder_clearance_height_to_lid",
"extruder_clearance_radius",
"extruder_clearance_max_radius",
"extruder_colour",
"extruder_offset",
"filament_flow_ratio",
@ -159,7 +158,8 @@ bool Print::invalidate_state_by_config_options(const ConfigOptionResolver & /* n
"accel_to_decel_factor",
"wipe_on_loops",
"gcode_comments",
"gcode_label_objects"
"gcode_label_objects",
"exclude_object"
};
static std::unordered_set<std::string> steps_ignore;
@ -491,7 +491,7 @@ StringObjectException Print::sequential_print_clearance_valid(const Print &print
convex_hull = offset(convex_hull_no_offset,
// Shrink the extruder_clearance_radius a tiny bit, so that if the object arrangement algorithm placed the objects
// exactly by satisfying the extruder_clearance_radius, this test will not trigger collision.
float(scale_(0.5 * print.config().extruder_clearance_max_radius.value - EPSILON)),
float(scale_(0.5 * print.config().extruder_clearance_radius.value - EPSILON)),
jtRound, scale_(0.1)).front();
// instance.shift is a position of a centered object, while model object may not be centered.
// Convert the shift from the PrintObject's coordinates into ModelObject's coordinates by removing the centering offset.
@ -3329,4 +3329,14 @@ int Print::load_cached_data(const std::string& directory)
return ret;
}
BoundingBoxf3 PrintInstance::get_bounding_box() {
return print_object->model_object()->instance_bounding_box(*model_instance, false);
}
Polygon PrintInstance::get_convex_hull_2d() {
Polygon poly = print_object->model_object()->convex_hull_2d(model_instance->get_matrix());
poly.douglas_peucker(0.1);
return poly;
}
} // namespace Slic3r

View File

@ -191,6 +191,13 @@ struct PrintInstance
const ModelInstance *model_instance;
// Shift of this instance's center into the world coordinates.
Point shift;
BoundingBoxf3 get_bounding_box();
Polygon get_convex_hull_2d();
// SoftFever
//
// instance id
size_t id;
};
typedef std::vector<PrintInstance> PrintInstances;
@ -292,6 +299,7 @@ public:
Transform3d trafo_centered() const
{ Transform3d t = this->trafo(); t.pretranslate(Vec3d(- unscale<double>(m_center_offset.x()), - unscale<double>(m_center_offset.y()), 0)); return t; }
const PrintInstances& instances() const { return m_instances; }
PrintInstances &instances() { return m_instances; }
// Whoever will get a non-const pointer to PrintObject will be able to modify its layers.
LayerPtrs& layers() { return m_layers; }
@ -417,7 +425,12 @@ public:
// BBS: Boundingbox of the first layer
BoundingBox firstLayerObjectBrimBoundingBox;
private:
// SoftFever
size_t get_id() const { return m_id; }
void set_id(size_t id) { m_id = id; }
private:
// to be called from Print only.
friend class Print;
@ -501,6 +514,12 @@ private:
PrintObject* m_shared_object{ nullptr };
// SoftFever
//
// object id
size_t m_id;
public:
//BBS: When printing multi-material objects, this settings will make slicer to clip the overlapping object parts one by the other.
//(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc).

View File

@ -1146,14 +1146,6 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(40));
def = this->add("extruder_clearance_max_radius", coFloat);
def->label = L("Max Radius");
def->tooltip = L("Max clearance radius around extruder. Used for collision avoidance in by-object printing.");
def->sidetext = L("mm");
def->min = 0;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(68));
def = this->add("extruder_colour", coStrings);
def->label = L("Extruder Color");
def->tooltip = L("Only used as a visual help on UI");
@ -1236,14 +1228,14 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Default filament color");
def->gui_type = ConfigOptionDef::GUIType::color;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionStrings{""});
def->set_default_value(new ConfigOptionStrings{"#F2754E"});
def = this->add("filament_colour", coStrings);
def->label = L("Color");
def->tooltip = L("Only used as a visual help on UI");
def->gui_type = ConfigOptionDef::GUIType::color;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionStrings{ "#009688" });
def->set_default_value(new ConfigOptionStrings{ "#F2754E" });
//bbs
def = this->add("required_nozzle_HRC", coInts);
@ -1813,7 +1805,13 @@ void PrintConfigDef::init_fff_params()
"Single Extruder Multi Material setup and Wipe into Object / Wipe into Infill.");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(1));
def = this->add("exclude_object", coBool);
def->label = L("Exclude objects");
def->tooltip = L("Enable this option to add EXCLUDE OBJECT command in g-code");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(1));
def = this->add("gcode_comments", coBool);
def->label = L("Verbose G-code");
def->tooltip = L("Enable this to get a commented G-code file, with each line explained by a descriptive text. "
@ -2202,7 +2200,7 @@ void PrintConfigDef::init_fff_params()
def->enum_values.push_back("repetier");
def->enum_values.push_back("mks");
def->enum_labels.push_back("PrusaLink");
def->enum_labels.push_back("OctoPrint");
def->enum_labels.push_back("Octo/Klipper");
def->enum_labels.push_back("Duet");
def->enum_labels.push_back("FlashAir");
def->enum_labels.push_back("AstroBox");
@ -2218,7 +2216,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("Volume of nozzle between the cutter and the end of nozzle");
def->sidetext = L("mm³");
def->mode = comAdvanced;
def->readonly = true;
def->readonly = false;
def->set_default_value(new ConfigOptionFloat { 0.0 });
def = this->add("start_end_points", coPoints);
@ -2497,6 +2495,12 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(false));
def = this->add("bbl_calib_mark_logo", coBool);
def->label = L("Show auto-calibration marks");
def->tooltip = "";
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionBool(true));
def = this->add("seam_position", coEnum);
def->label = L("Seam position");
def->category = L("Quality");

View File

@ -881,6 +881,7 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionBool, accel_to_decel_enable))
((ConfigOptionPercent, accel_to_decel_factor))
((ConfigOptionFloatOrPercent, initial_layer_travel_speed))
((ConfigOptionBool, bbl_calib_mark_logo))
)
@ -917,7 +918,6 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
((ConfigOptionFloat, extruder_clearance_height_to_rod))//BBs
((ConfigOptionFloat, extruder_clearance_height_to_lid))//BBS
((ConfigOptionFloat, extruder_clearance_radius))
((ConfigOptionFloat, extruder_clearance_max_radius))
((ConfigOptionStrings, extruder_colour))
((ConfigOptionPoints, extruder_offset))
((ConfigOptionBools, reduce_fan_stop_start_freq))
@ -1003,6 +1003,7 @@ PRINT_CONFIG_CLASS_DERIVED_DEFINE(
// SoftFever
((ConfigOptionPercents, filament_shrink))
((ConfigOptionBool, gcode_label_objects))
((ConfigOptionBool, exclude_object))
((ConfigOptionBool, gcode_comments))
)

View File

@ -697,6 +697,9 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
toggle_line(el, gcflavor == gcfKlipper);
if(gcflavor == gcfKlipper)
toggle_field("accel_to_decel_factor", config->opt_bool("accel_to_decel_enable"));
toggle_line("exclude_object", gcflavor == gcfKlipper);
}
void ConfigManipulation::update_print_sla_config(DynamicPrintConfig* config, const bool is_global_config/* = false*/)

View File

@ -3059,12 +3059,15 @@ void GLCanvas3D::on_char(wxKeyEvent& evt)
case WXK_BACK: { post_event(SimpleEvent(EVT_GLTOOLBAR_DELETE)); break; }
#endif
case WXK_ESCAPE: { deselect_all(); break; }
//case WXK_F5: {
// if ((wxGetApp().is_editor() && !wxGetApp().plater()->model().objects.empty()) ||
// (wxGetApp().is_gcode_viewer() && !wxGetApp().plater()->get_last_loaded_gcode().empty()))
// post_event(SimpleEvent(EVT_GLCANVAS_RELOAD_FROM_DISK));
// break;
//}
case WXK_F5: {
if (wxGetApp().mainframe->is_printer_view())
wxGetApp().mainframe->load_printer_url();
//if ((wxGetApp().is_editor() && !wxGetApp().plater()->model().objects.empty()) ||
// (wxGetApp().is_gcode_viewer() && !wxGetApp().plater()->get_last_loaded_gcode().empty()))
// post_event(SimpleEvent(EVT_GLCANVAS_RELOAD_FROM_DISK));
break;
}
// BBS: use keypad to change extruder
case '1':
@ -4968,7 +4971,7 @@ void GLCanvas3D::update_sequential_clearance()
// the results are then cached for following displacements
if (m_sequential_print_clearance_first_displacement) {
m_sequential_print_clearance.m_hull_2d_cache.clear();
float shrink_factor = static_cast<float>(scale_(0.5 * fff_print()->config().extruder_clearance_max_radius.value - EPSILON));
float shrink_factor = static_cast<float>(scale_(0.5 * fff_print()->config().extruder_clearance_radius.value - EPSILON));
double mitter_limit = scale_(0.1);
m_sequential_print_clearance.m_hull_2d_cache.reserve(m_model->objects.size());
for (size_t i = 0; i < m_model->objects.size(); ++i) {

View File

@ -389,7 +389,7 @@ void ArrangeJob::prepare()
params.clearance_height_to_rod = print.config().extruder_clearance_height_to_rod.value;
params.clearance_height_to_lid = print.config().extruder_clearance_height_to_lid.value;
params.cleareance_radius = print.config().extruder_clearance_max_radius.value;
params.cleareance_radius = print.config().extruder_clearance_radius.value;
params.printable_height = print.config().printable_height.value;
params.allow_rotations = settings.enable_rotation;
params.allow_multi_materials_on_same_plate = settings.allow_multi_materials_on_same_plate;

View File

@ -864,13 +864,13 @@ void MainFrame::show_option(bool show)
}
}
void MainFrame::init_tabpanel()
{
// wxNB_NOPAGETHEME: Disable Windows Vista theme for the Notebook background. The theme performance is terrible on Windows 10
// with multiple high resolution displays connected.
// BBS
wxBoxSizer* side_tools = create_side_tools();
m_tabpanel = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, side_tools, wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME);
void MainFrame::init_tabpanel() {
// wxNB_NOPAGETHEME: Disable Windows Vista theme for the Notebook background. The theme performance is terrible on
// Windows 10 with multiple high resolution displays connected.
// BBS
wxBoxSizer *side_tools = create_side_tools();
m_tabpanel = new Notebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, side_tools,
wxNB_TOP | wxTAB_TRAVERSAL | wxNB_NOPAGETHEME);
m_tabpanel->SetBackgroundColour(*wxWHITE);
#ifndef __WXOSX__ // Don't call SetFont under OSX to avoid name cutting in ObjectList
@ -879,21 +879,32 @@ void MainFrame::init_tabpanel()
m_tabpanel->Hide();
m_settings_dialog.set_tabpanel(m_tabpanel);
m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGING, [this](wxBookCtrlEvent& e) {
int old_sel = e.GetOldSelection();
int new_sel = e.GetSelection();
if (wxGetApp().preset_bundle &&
wxGetApp().preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(wxGetApp().preset_bundle) &&
new_sel == tpMonitor) {
if (!wxGetApp().getAgent()) {
e.Veto();
BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins")%old_sel %new_sel;
if (m_plater) {
wxCommandEvent *evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
wxQueueEvent(m_plater, evt);
}
}
m_tabpanel->Bind(wxEVT_NOTEBOOK_PAGE_CHANGING, [this](wxBookCtrlEvent &e) {
int old_sel = e.GetOldSelection();
int new_sel = e.GetSelection();
if (wxGetApp().preset_bundle &&
wxGetApp().preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(wxGetApp().preset_bundle) &&
new_sel == tpMonitor) {
if (!wxGetApp().getAgent()) {
e.Veto();
BOOST_LOG_TRIVIAL(info) << boost::format("skipped tab switch from %1% to %2%, lack of network plugins") %
old_sel % new_sel;
if (m_plater) {
wxCommandEvent *evt = new wxCommandEvent(EVT_INSTALL_PLUGIN_HINT);
wxQueueEvent(m_plater, evt);
}
}
} else {
if (new_sel == tpMonitor && wxGetApp().preset_bundle != nullptr) {
auto cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host")
: cfg.opt_string("print_host_webui");
if (url.empty()) {
wxString url = wxString::Format("file://%s/web/orca/missing_connection.html", from_u8(resources_dir()));
m_printer_view->load_url(url);
}
}
}
});
#ifdef __WXMSW__
@ -3240,6 +3251,27 @@ void MainFrame::load_printer_url(wxString url)
evt->SetString(url);
wxQueueEvent(this, evt);
}
void MainFrame::load_printer_url()
{
PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
if (preset_bundle.printers.get_edited_preset().is_bbl_vendor_preset(&preset_bundle))
return;
auto cfg = preset_bundle.printers.get_edited_preset().config;
wxString url =
cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
if (!url.empty()) {
if (!url.Lower().starts_with("http"))
url = wxString::Format("http://%s", url);
load_printer_url(url);
}
}
bool MainFrame::is_printer_view() const { return m_tabpanel->GetSelection() == TabPosition::tpMonitor; }
void MainFrame::refresh_plugin_tips()
{
if (m_webview != nullptr)

View File

@ -325,6 +325,8 @@ public:
//BBS
void load_url(wxString url);
void load_printer_url(wxString url);
void load_printer_url();
bool is_printer_view() const;
void refresh_plugin_tips();
void RunScript(wxString js);

View File

@ -1562,7 +1562,7 @@ void PartPlate::generate_plate_name_texture()
auto text = m_name.empty()? _L("Untitled") : m_name;
wxCoord w, h;
auto* font = &Label::Head_48;
wxColour foreground(0x0, 0x96, 0x88, 0xff);
wxColour foreground(0xf2, 0x75, 0x4e, 0xff);
if (!m_name_texture.generate_from_text_string(text.ToStdString(), *font, *wxBLACK, foreground))
BOOST_LOG_TRIVIAL(error) << "PartPlate::generate_plate_name_texture(): generate_from_text_string() failed";
auto bed_ext = get_extents(m_shape);
@ -2779,7 +2779,7 @@ void PartPlateList::generate_icon_textures()
else
file_name = std::to_string(i+1);
wxColour foreground(0x0, 0x96, 0x88, 0xff);
wxColour foreground(0xf2, 0x75, 0x4e, 0xff);
if (!m_idx_textures[i].generate_from_text_string(file_name, *font, *wxBLACK, foreground)) {
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(":load file %1% failed") % file_name;
}

View File

@ -256,7 +256,7 @@ public:
// SoftFever
//get the plate's name
std::string get_plate_name() { return m_name; }
std::string get_plate_name() const { return m_name; }
void generate_plate_name_texture();
//set the plate's name
void set_plate_name(const std::string& name);
@ -640,6 +640,7 @@ public:
int get_curr_plate_index() const { return m_current_plate; }
PartPlate* get_curr_plate() { return m_plate_list[m_current_plate]; }
const PartPlate* get_curr_plate() const { return m_plate_list[m_current_plate]; }
std::vector<PartPlate*>& get_plate_list() { return m_plate_list; };

View File

@ -2217,8 +2217,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame)
//BBS: add bed_exclude_area
, config(Slic3r::DynamicPrintConfig::new_from_defaults_keys({
"printable_area", "bed_exclude_area", "bed_custom_texture", "bed_custom_model", "print_sequence",
"extruder_clearance_radius", "extruder_clearance_max_radius",
"extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_distance",
"extruder_clearance_radius", "extruder_clearance_height_to_lid", "extruder_clearance_height_to_rod", "skirt_loops", "skirt_distance",
"brim_width", "brim_object_gap", "brim_type", "nozzle_diameter", "single_extruder_multi_material",
"enable_prime_tower", "wipe_tower_x", "wipe_tower_y", "prime_tower_width", "prime_tower_brim_width", "prime_volume",
"extruder_colour", "filament_colour", "material_colour", "printable_height", "printer_model", "printer_technology",
@ -6568,8 +6567,12 @@ wxString Plater::priv::get_project_filename(const wxString& extension) const
wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool only_filename, bool export_all) const
{
std::string plate_index_str;
if (partplate_list.get_plate_count() > 1)
auto plate_name = partplate_list.get_curr_plate()->get_plate_name();
if (!plate_name.empty())
plate_index_str = (boost::format("_%1%") % plate_name).str();
else if (partplate_list.get_plate_count() > 1)
plate_index_str = (boost::format("_plate_%1%") % std::to_string(partplate_list.get_curr_plate_index() + 1)).str();
if (!m_project_folder.empty()) {
if (!only_filename) {
if (export_all) {
@ -6587,7 +6590,7 @@ wxString Plater::priv::get_export_gcode_filename(const wxString& extension, bool
}
} else {
if (only_filename) {
if(m_project_name == L"Untitled")
if(m_project_name == _L("Untitled"))
return fs::path(model.objects.front()->name).replace_extension().c_str() + wxString(plate_index_str) + extension;
if (export_all)

View File

@ -1644,8 +1644,10 @@ void Tab::on_presets_changed()
wxGetApp().plater()->sidebar().update_presets(m_type);
bool is_bbl_vendor_preset = wxGetApp().preset_bundle->printers.get_edited_preset().is_bbl_vendor_preset(wxGetApp().preset_bundle);
auto& printer_cfg = wxGetApp().preset_bundle->printers.get_edited_preset().config;
if (is_bbl_vendor_preset)
wxGetApp().plater()->get_partplate_list().set_render_option(true, true);
wxGetApp().plater()->get_partplate_list().set_render_option(
!printer_cfg.option<ConfigOptionBool>("bbl_calib_mark_logo")->value, true);
else
wxGetApp().plater()->get_partplate_list().set_render_option(false, true);
@ -2058,6 +2060,7 @@ void TabPrint::build()
optgroup->append_single_option_line("gcode_add_line_number");
optgroup->append_single_option_line("gcode_comments");
optgroup->append_single_option_line("gcode_label_objects");
optgroup->append_single_option_line("exclude_object");
Option option = optgroup->get_option("filename_format");
// option.opt.full_width = true;
option.opt.is_code = true;
@ -2817,14 +2820,17 @@ void TabFilament::toggle_options()
m_preset_bundle);
}
if (m_active_page->title() == "Cooling")
{
bool cooling = m_config->opt_bool("slow_down_for_layer_cooling", 0);
toggle_option("slow_down_min_speed", cooling);
if (m_active_page->title() == "Cooling") {
bool cooling = m_config->opt_bool("slow_down_for_layer_cooling", 0);
toggle_option("slow_down_min_speed", cooling);
bool has_enable_overhang_bridge_fan = m_config->opt_bool("enable_overhang_bridge_fan", 0);
for (auto el : { "overhang_fan_speed", "overhang_fan_threshold" })
bool has_enable_overhang_bridge_fan = m_config->opt_bool("enable_overhang_bridge_fan", 0);
for (auto el : {"overhang_fan_speed", "overhang_fan_threshold"})
toggle_option(el, has_enable_overhang_bridge_fan);
toggle_option(
"additional_cooling_fan_speed",
m_preset_bundle->printers.get_edited_preset().config.option<ConfigOptionBool>("auxiliary_fan")->value);
}
if (m_active_page->title() == "Filament")
{
@ -2937,6 +2943,7 @@ void TabPrinter::build_fff()
optgroup->append_single_option_line(option);
// optgroup->append_single_option_line("printable_area");
optgroup->append_single_option_line("printable_height");
optgroup->append_single_option_line("bbl_calib_mark_logo");
optgroup->append_single_option_line("nozzle_volume");
// BBS
#if 0
@ -3602,8 +3609,6 @@ void TabPrinter::toggle_options()
//}
if (m_active_page->title() == "Basic information") {
toggle_option("single_extruder_multi_material", have_multiple_extruders);
// Hide relative extrusion option for BBL printers
toggle_line("use_relative_e_distances", !is_BBL_printer);
auto flavor = m_config->option<ConfigOptionEnum<GCodeFlavor>>("gcode_flavor")->value;
bool is_marlin_flavor = flavor == gcfMarlinLegacy || flavor == gcfMarlinFirmware;
@ -3615,14 +3620,12 @@ void TabPrinter::toggle_options()
// SoftFever: hide BBL specific settings
for (auto el :
{"scan_first_layer", "machine_load_filament_time",
"machine_unload_filament_time", "nozzle_type"})
{"scan_first_layer", "machine_load_filament_time", "machine_unload_filament_time", "nozzle_type", "bbl_calib_mark_logo"})
toggle_line(el, is_BBL_printer);
// SoftFever: hide non-BBL settings
for (auto el :
{ "use_firmware_retraction" })
toggle_line(el, !is_BBL_printer);
for (auto el : {"use_firmware_retraction", "use_relative_e_distances"})
toggle_line(el, !is_BBL_printer);
}
wxString extruder_number;

View File

@ -302,7 +302,7 @@ void TabCtrl::doRender(wxDC& dc)
#else
dc.SetPen(wxPen(border_color.colorForStates(states), border_width));
dc.DrawLine(0, size.y - BS2, size.x, size.y - BS2);
wxColor c(0x968800);
wxColour c(0xf2, 0x75, 0x4e, 0xff);
dc.SetPen(wxPen(c, 1));
dc.SetBrush(c);
dc.DrawRoundedRectangle(x1 - radius, size.y - BS2 - border_width * 3, x2 + radius * 2 - x1, border_width * 3, radius);

View File

@ -161,7 +161,7 @@ bool OctoPrint::test(wxString &msg) const
wxString OctoPrint::get_test_ok_msg () const
{
return _(L("Connection to OctoPrint works correctly."));
return _(L("Connection to OctoPrint/Klipper works correctly."));
}
wxString OctoPrint::get_test_failed_msg (wxString &msg) const

View File

@ -10,5 +10,5 @@ endif()
if(NOT DEFINED BBL_INTERNAL_TESTING)
set(BBL_INTERNAL_TESTING "1")
endif()
set(SoftFever_VERSION "1.5.0")
set(SoftFever_VERSION "1.6.0")
set(SLIC3R_VERSION "01.05.00.61")