mirror of
https://git.mirrors.martin98.com/https://github.com/SoftFever/OrcaSlicer.git
synced 2025-08-13 15:39:01 +08:00
commit
166890db53
@ -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 ""
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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ó"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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 "継ぎ目位置"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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"
|
||||
|
||||
|
@ -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.
@ -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": [
|
||||
|
353
resources/profiles/BBL/bbl-3dp-logo_cali_lines.svg
Normal file
353
resources/profiles/BBL/bbl-3dp-logo_cali_lines.svg
Normal 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
@ -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;"
|
||||
}
|
||||
|
@ -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;"
|
||||
}
|
||||
|
@ -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",
|
||||
|
33
resources/web/orca/missing_connection.html
Normal file
33
resources/web/orca/missing_connection.html
Normal 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>
|
BIN
resources/web/orca/setup_connection.gif
Normal file
BIN
resources/web/orca/setup_connection.gif
Normal file
Binary file not shown.
After Width: | Height: | Size: 738 KiB |
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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.
|
||||
|
@ -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",
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
@ -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");
|
||||
|
@ -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))
|
||||
|
||||
)
|
||||
|
@ -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*/)
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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; };
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
Loading…
x
Reference in New Issue
Block a user