From 3cb573dcb91b3153db2720ca94398bd25621a715 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 26 Jan 2024 20:18:10 +0800 Subject: [PATCH] Feature/merge 1.8.4 (#3827) * FIX: the logic of buried points that were not buried JIRA: none Signed-off-by: Kunlong Ma Change-Id: Id95174659c5fce7feba409eb5e14916608745fa4 * ci: update network module based on commit bc7ca98 Change-Id: I923526f0bf9ce5a288144fa1f9b0f2fc640f41b7 * Fix Firefox Co-authored-by: hadess * FIX: cali: custom created filament from AMS displayed as incompatible jira: new remove the condition: is_system Change-Id: Ib1366966bbdbe01bc9e2483d9914d270ebefa976 * FIX: duplicated items in comboBox at calibration completed page jira: new Change-Id: I4749a2206df16c438e0d3098e36274b2a20f313e * ENH:update support for P1S plus jira:[for p1s plus] Change-Id: Id577d4e94e2162cb0045d261dfaa5f396ecded2f * ENH: CLI: add mk information support JIRA: no jira Change-Id: Idd89b143d439de50d9f52eb8aec95b262d66875d * ENH:calibration support p1p plus jira:[plus] Change-Id: Ia290d3a8a8b9adaac7a6ee26d9a8b5ea0c1b3aee * FIX: add log for base_id and filament_id github: #3087 Change-Id: Iebfbd0f224fce49f33fc81c71e6108f6e3abb5ff * FIX: sync whole preset vendor directory Change-Id: I191dbe979a87ff35d38cab1149b7975664344838 Jira: STUDIO-5534 (cherry picked from commit 628866608116336453804aa1217dd55db04d47ad) * FIX: use t_utc for debug only Change-Id: Ia05d8969d4de3dd38908980d6e17a3ebb11ca279 Github 3045 Change-Id: I77935df53bbf2772b1146e5c330c537165a3a2e6 * FIX:make sort_volumes right Jira: STUDIO-5645 Change-Id: If324c9115bfaaf0c1b7b4be7c7ee96ba6b8ac890 * ENH:keep an unload logic jira:[for unload] Change-Id: Id30ec71ffa5b2dac89346ea47ca48a62479e3ab1 * FIX: several problems with mesh boolean 1. Cut with multiple volumes are OK now. 2. Close mesh boolean fail error with new object or open object 3. Fix wrong name and config of boolean resulting object github: #3118 jira: none Change-Id: If2c9dbfb36cbdfe4917a2371217923891bb7909c (cherry picked from commit 982c0ecb92cf7c2b5ae5972ab900a6b10e7dda50) * NEW:limit the length of project name jira:[project name] Change-Id: I955620f7073b3b7fda280d1118524f561d047751 * ENH:adjusting the warning level of timelpase jira:[STUDIO-5662] Change-Id: I4902b22d316f5e09a97a62c88b8a98e55c405434 * FIX: 3mf specification: change namespace form slic3rpe to BambuStudio Jira: XXXX Change-Id: Id705affc875ef23fdf2ac6d79f0cb0aafc4f7050 * NEW: Open MakerWorld With BambuStudio GetParam JIRA: none Change-Id: I0d65b364f1cd2d634a88882ab072c3e61ea89167 (cherry picked from commit 8eaf45e5359439a7c796fd79876c86775abcf48e) * FIX: Filament issue generated when creating a printer Jira: XXXX Change-Id: I976770b69b47641bd54aa7a9c56fba7f58d1ab68 (cherry picked from commit ba42188b93c58b3954234d72acdd9769a68e3d3c) * FIX: Blank page appears when editing presets Jira: 5563 Change-Id: I4c49e05515b1beff55991e92f8079c4499c27eab (cherry picked from commit e86517d290f4cd0765a230d811b0ddf2c9f34c17) * FIX: context menu didn't update UI jira: STUDIO-5691 Change-Id: Ia66b8623d832eba805aff5320941233a68ff258b * FIX: crash of "filling bed" "get_arrange_settings() const" gets trapped in infinite recursive calling. Now we delete this function. jira: STUDIO-5688 Change-Id: Ia39974734bb37b2a2f06b5bf78185f01be726872 * FIX: boolean hangs in the middle of color painting Can't do splits in combine_mesh_fff, as do_boolean of mcut will split meshes. jira: STUDIO-5693 Change-Id: Idddb7d20dd7ca386c39ddd3d87d9defc3136aa5d (cherry picked from commit 6c67d015941458e37faaf0015b6509b5a0eadc0e) * Fix: Fix a number of compilation problems issues found when using gcc version 13.2.0 (GCC) in a Flatpak sandbox github : https://github.com/bambulab/BambuStudio/issues/3074 github pull request: https://github.com/bambulab/BambuStudio/pull/3096 Change-Id: I08aeac593eb1ce7675894df72e8489200bae713d (cherry picked from commit 069d133d66bfa682de4a860e379d5dc16b3d907c) * fix: macos icns issue when icon was not attached github pull request:https://github.com/bambulab/BambuStudio/pull/3116 Change-Id: I49072ad49f3af7669a6d307c791594ade210da50 (cherry picked from commit c977e5582e3a30ad16dd267810037423aad9a53c) * FIX: Add flush_length for change_filament_gcode Change-Id: I30f4b97d3d61c2a57f0e92f157cbd31c38aa7265 Jira: XXXX (cherry picked from commit 92eb2bac977a0c4095b316cbbc6580fb5228b710) * FIX: edit preset dialog can't close on mac Jira: 5696 Change-Id: Ib33dfd07cc588ddd3805e3490a4d8c36dcd890ac * ENH: add dev_ota_version in ssdp JIRA: STUDIO-5740 Change-Id: Ic80e6d4b9bf82813fdc4a76604a3d36213d12b03 Signed-off-by: Stone Li * NEW:Adapt to multicolour and gradient colour JIRA:xxxx Change-Id: I8084cab603d5681cbcaf2d6f5e0d7ad5419cb2af * NEW:Adaptation of semi transparent materials JIRA: XXXX Change-Id: Ie32d8ce67c37b85eb6d7d6594cb514a696307e68 * FIX: disable flush options if prime tower is unchecked jira: STUDIO-5639 Change-Id: I25081584d430bc7d062e14bcc2cdbf7522cf9d99 * ENH: refine GetVersion for HMS query JIRA: STUDIO-5763 Change-Id: Ia3ccc07d79cc0736eb12e9782da50211abb74772 Signed-off-by: Stone Li * FIX: Prefer old selection when sync AMS not compatible Change-Id: I6b18db51887132a997cf78d70fff9a92e23bc44a Jira: STUDIO-5416 (cherry picked from commit 077fae29823cf4f3071d408b1b40f55ee0cb33c6) * FIX: The flushing was not auto-calc when sync ams list JIRA: STUDIO-5551 1. flushing volume auto-calc when sync ams list 2. flushing volume takes the larger calculation value when filament has multi-colors Signed-off-by: Kunlong Ma Change-Id: I72e6f9780ea56103a44c2da6068440a4615c254d * FIX:fixed invalid links jira:[fixed link] Change-Id: I036a38b6e8e94da762f93805bd7be706538771fe * FIX: Prompt to delete problematic presets Jira: XXXX Change-Id: Ic43f7bb782794d7ab0b6acbffbb5d73e94f6ed73 * FIX:fixed incorrect HMS content jira:[STUDIO-5818] Change-Id: Ia2896d6f0ab1ffedbc850e54168acece8e47bdbb * FIX:external transparent material display error JIRA: STUDIO-5845 Change-Id: I0a4f05ac5d5c0ac49d85a704ee65a7221c5f1e1d * FIX: [5846] Custom Filament Page show System Filament Simultaneously solve: When downloading Preset from the cloud, the filament_id of the preset in m_preset is null. Jira: 5846 Change-Id: I6ba1b46fe92e345614b6a4af3fffa87d81fa2456 * FIX:A1 and p1 series do not support custom materials JIRA:XXXX Change-Id: Ib0459273d1f9a7152a5563757204634a8d0cd6f5 * FIX: exception when comparing profiles jira:[NEW] Signed-off-by: XunZhangBambu Change-Id: I946b5fcd35f779d271df2b3de731fdcada5aab29 (cherry picked from commit 00e739570812e5c4be3e0f7702ce8c72c0f9e72b) * FIX: hide_id_middle_string Change-Id: I28f32ec526b443d31d7992971b80ab1cb737deb6 Github: STUDIO-5825 * ENH: modify some logs level JIRA: STUDIO-5958 Change-Id: I5a8592dfb8ffa9a81952535cb30944f867aa0e22 Signed-off-by: Stone Li * NEW:build plate marker detect Change-Id: I70f03efea688bb6ce71c3f5990bb3c50605ab184 * FIX: Studio UI Freeze when saving user preset github: #3335 Change-Id: Idaf53f673a3e46408826c06bdde2c592395d358b * update bbl plugin version * fix build errors * update bbl profiles * update color --------- Signed-off-by: Kunlong Ma Signed-off-by: Stone Li Co-authored-by: Kunlong Ma Co-authored-by: gerrit Co-authored-by: liz.li Co-authored-by: tao wang Co-authored-by: lane.wei Co-authored-by: maosheng.wei Co-authored-by: chunmao.guo Co-authored-by: zhou.xu Co-authored-by: Arthur Co-authored-by: Bastien Nocera Co-authored-by: zhimin.zeng Co-authored-by: hu.wang Co-authored-by: Stone Li Co-authored-by: XunZhangBambu --- cmake/modules/MacOSXBundleInfo.plist.in | 21 +- resources/images/transparent_ams_lib.svg | 2 +- resources/images/transparent_color_picker.svg | 2 +- resources/printers/N1.json | 1 - resources/printers/N2S.json | 1 - resources/printers/version.txt | 2 +- resources/profiles/BBL.json | 126 +++++++++++- .../BBL/filament/Bambu PETG Basic @base.json | 5 +- ...u PETG Translucent @BBL A1 0.8 nozzle.json | 27 +++ .../Bambu PETG Translucent @BBL A1.json | 17 ++ ... PETG Translucent @BBL A1M 0.8 nozzle.json | 27 +++ .../Bambu PETG Translucent @BBL A1M.json | 17 ++ ... PETG Translucent @BBL X1C 0.8 nozzle.json | 35 ++++ .../Bambu PETG Translucent @BBL X1C.json | 21 ++ .../Bambu PETG Translucent @base.json | 80 ++++++++ .../BBL/filament/Bambu TPU 95A HF @base.json | 3 + .../BBL/filament/Generic PETG @base.json | 3 + .../BBL/filament/Generic PLA @0.2 nozzle.json | 2 +- .../Generic PLA @BBL A1 0.2 nozzle.json | 2 +- .../Generic PLA @BBL A1M 0.2 nozzle.json | 2 +- ...Overture Matte PLA @BBL A1 0.2 nozzle.json | 2 +- ...verture Matte PLA @BBL A1M 0.2 nozzle.json | 2 +- ...verture Matte PLA @BBL P1P 0.2 nozzle.json | 2 +- ...verture Matte PLA @BBL X1C 0.2 nozzle.json | 2 +- .../Overture PLA @BBL A1 0.2 nozzle.json | 2 +- .../Overture PLA @BBL A1M 0.2 nozzle.json | 8 +- .../Overture PLA @BBL P1P 0.2 nozzle.json | 2 +- .../Overture PLA @BBL X1C 0.2 nozzle.json | 2 +- .../P1P/Generic PLA @BBL P1P 0.2 nozzle.json | 2 +- .../P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json | 2 +- .../PolyTerra PLA @BBL P1P 0.2 nozzle.json | 2 +- .../P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json | 2 +- .../BBL/filament/PolyLite PETG @base.json | 3 + .../PolyLite PLA @BBL A1 0.2 nozzle.json | 2 +- .../PolyLite PLA @BBL A1M 0.2 nozzle.json | 2 +- .../PolyLite PLA @BBL X1C 0.2 nozzle.json | 2 +- .../PolyTerra PLA @BBL A1 0.2 nozzle.json | 2 +- .../PolyTerra PLA @BBL A1M 0.2 nozzle.json | 2 +- .../PolyTerra PLA @BBL X1C 0.2 nozzle.json | 2 +- .../eSUN PLA+ @BBL A1 0.2 nozzle.json | 2 +- .../eSUN PLA+ @BBL A1M 0.2 nozzle.json | 2 +- .../eSUN PLA+ @BBL X1C 0.2 nozzle.json | 2 +- .../BBL/machine/Bambu Lab A1 0.4 nozzle.json | 7 +- .../machine/Bambu Lab A1 mini 0.4 nozzle.json | 10 +- .../BBL/machine/Bambu Lab A1 mini.json | 1 + .../profiles/BBL/machine/Bambu Lab A1.json | 1 + .../profiles/BBL/machine/Bambu Lab P1P.json | 1 + .../profiles/BBL/machine/Bambu Lab P1S.json | 1 + .../BBL/machine/Bambu Lab X1 0.4 nozzle.json | 2 +- .../BBL/machine/Bambu Lab X1 Carbon.json | 1 + .../profiles/BBL/machine/Bambu Lab X1.json | 1 + .../profiles/BBL/machine/Bambu Lab X1E.json | 1 + .../0.06mm Fine @BBL A1 0.2 nozzle.json | 1 + .../0.06mm Fine @BBL P1P 0.2 nozzle.json | 1 + ....06mm High Quality @BBL A1 0.2 nozzle.json | 19 ++ ...06mm High Quality @BBL A1M 0.2 nozzle.json | 18 ++ ...06mm High Quality @BBL P1P 0.2 nozzle.json | 16 ++ ...06mm High Quality @BBL X1C 0.2 nozzle.json | 19 ++ .../0.06mm Standard @BBL X1C 0.2 nozzle.json | 1 + .../process/0.08mm Extra Fine @BBL A1.json | 1 + ....08mm High Quality @BBL A1 0.2 nozzle.json | 19 ++ .../process/0.08mm High Quality @BBL A1.json | 22 +++ ...08mm High Quality @BBL A1M 0.2 nozzle.json | 18 ++ .../process/0.08mm High Quality @BBL A1M.json | 22 +++ ...08mm High Quality @BBL P1P 0.2 nozzle.json | 16 ++ .../process/0.08mm High Quality @BBL P1P.json | 21 ++ ...08mm High Quality @BBL X1C 0.2 nozzle.json | 19 ++ .../process/0.08mm High Quality @BBL X1C.json | 23 +++ .../0.08mm Optimal @BBL A1 0.2 nozzle.json | 1 + .../0.08mm Optimal @BBL P1P 0.2 nozzle.json | 1 + .../0.08mm Standard @BBL X1C 0.2 nozzle.json | 1 + ....10mm High Quality @BBL A1 0.2 nozzle.json | 19 ++ ...10mm High Quality @BBL A1M 0.2 nozzle.json | 19 ++ ...10mm High Quality @BBL P1P 0.2 nozzle.json | 16 ++ ...10mm High Quality @BBL X1C 0.2 nozzle.json | 19 ++ .../0.10mm Standard @BBL A1 0.2 nozzle.json | 1 + .../0.10mm Standard @BBL A1M 0.2 nozzle.json | 1 + .../0.10mm Standard @BBL X1C 0.2 nozzle.json | 1 + .../0.12mm Draft @BBL A1 0.2 nozzle.json | 1 + .../0.12mm Draft @BBL P1P 0.2 nozzle.json | 1 + .../BBL/process/0.12mm Fine @BBL A1.json | 1 + .../process/0.12mm High Quality @BBL A1.json | 22 +++ .../process/0.12mm High Quality @BBL A1M.json | 22 +++ .../process/0.12mm High Quality @BBL P1P.json | 20 ++ .../process/0.12mm High Quality @BBL X1C.json | 23 +++ .../0.12mm Standard @BBL X1C 0.2 nozzle.json | 1 + ...0.14mm Extra Draft @BBL A1 0.2 nozzle.json | 1 + ....14mm Extra Draft @BBL P1P 0.2 nozzle.json | 1 + .../0.14mm Standard @BBL X1C 0.2 nozzle.json | 1 + .../process/0.16mm High Quality @BBL A1.json | 22 +++ .../process/0.16mm High Quality @BBL A1M.json | 22 +++ .../process/0.16mm High Quality @BBL P1P.json | 20 ++ .../process/0.16mm High Quality @BBL X1C.json | 23 +++ .../BBL/process/0.16mm Optimal @BBL A1.json | 1 + .../0.18mm Fine @BBL A1 0.6 nozzle.json | 1 + .../0.18mm Fine @BBL P1P 0.6 nozzle.json | 1 + .../0.18mm Standard @BBL X1C 0.6 nozzle.json | 1 + .../BBL/process/0.20mm Standard @BBL A1.json | 1 + .../BBL/process/0.20mm Strength @BBL A1.json | 1 + .../BBL/process/0.24mm Draft @BBL A1.json | 1 + .../0.24mm Fine @BBL A1 0.8 nozzle.json | 1 + .../0.24mm Fine @BBL P1P 0.8 nozzle.json | 1 + .../0.24mm Optimal @BBL A1 0.6 nozzle.json | 1 + .../0.24mm Optimal @BBL P1P 0.6 nozzle.json | 1 + .../0.24mm Standard @BBL X1C 0.6 nozzle.json | 1 + .../0.24mm Standard @BBL X1C 0.8 nozzle.json | 1 + .../process/0.28mm Extra Draft @BBL A1.json | 1 + .../0.30mm Standard @BBL A1 0.6 nozzle.json | 1 + .../0.30mm Standard @BBL A1M 0.6 nozzle.json | 1 + .../0.30mm Standard @BBL X1 0.6 nozzle.json | 1 + .../0.30mm Standard @BBL X1C 0.6 nozzle.json | 1 + .../0.30mm Strength @BBL A1 0.6 nozzle.json | 1 + .../0.30mm Strength @BBL P1P 0.6 nozzle.json | 3 +- .../0.30mm Strength @BBL X1C 0.6 nozzle.json | 3 +- .../0.32mm Optimal @BBL A1 0.8 nozzle.json | 1 + .../0.32mm Optimal @BBL P1P 0.8 nozzle.json | 1 + .../0.32mm Standard @BBL X1C 0.8 nozzle.json | 1 + .../0.36mm Draft @BBL A1 0.6 nozzle.json | 1 + .../0.36mm Draft @BBL P1P 0.6 nozzle.json | 1 + .../0.36mm Standard @BBL X1C 0.6 nozzle.json | 1 + .../0.40mm Standard @BBL A1 0.8 nozzle.json | 1 + .../0.40mm Standard @BBL A1M 0.8 nozzle.json | 1 + .../0.40mm Standard @BBL X1 0.8 nozzle.json | 1 + .../0.40mm Standard @BBL X1C 0.8 nozzle.json | 1 + ...0.42mm Extra Draft @BBL A1 0.6 nozzle.json | 1 + ....42mm Extra Draft @BBL P1P 0.6 nozzle.json | 1 + .../0.42mm Standard @BBL X1C 0.6 nozzle.json | 1 + .../0.48mm Draft @BBL A1 0.8 nozzle.json | 1 + .../0.48mm Draft @BBL P1P 0.8 nozzle.json | 1 + .../0.48mm Standard @BBL X1C 0.8 nozzle.json | 3 +- ...0.56mm Extra Draft @BBL A1 0.8 nozzle.json | 1 + ....56mm Extra Draft @BBL P1P 0.8 nozzle.json | 1 + .../0.56mm Standard @BBL X1C 0.8 nozzle.json | 1 + src/OrcaSlicer.cpp | 19 +- src/libslic3r/ArcFitter.cpp | 1 + src/libslic3r/Brim.cpp | 2 + src/libslic3r/BuildVolume.cpp | 1 + src/libslic3r/Config.cpp | 2 + src/libslic3r/FaceDetector.cpp | 1 + src/libslic3r/Format/STEP.cpp | 6 + src/libslic3r/Format/bbs_3mf.cpp | 17 +- src/libslic3r/GCode.cpp | 4 + src/libslic3r/Layer.hpp | 1 + src/libslic3r/MeshBoolean.cpp | 176 ++++------------- src/libslic3r/MeshBoolean.hpp | 5 +- src/libslic3r/Model.cpp | 7 + src/libslic3r/Model.hpp | 4 + src/libslic3r/ObjectID.hpp | 1 + src/libslic3r/Preset.cpp | 66 ++++--- src/libslic3r/Preset.hpp | 5 +- src/libslic3r/PresetBundle.cpp | 23 ++- src/libslic3r/PresetBundle.hpp | 1 + src/libslic3r/PrintConfig.cpp | 12 ++ src/libslic3r/Utils.hpp | 1 + src/platform/osx/Info.plist.in | 23 ++- src/platform/unix/OrcaSlicer.desktop | 2 +- src/slic3r/GUI/AMSMaterialsSetting.cpp | 84 ++++++-- src/slic3r/GUI/AMSMaterialsSetting.hpp | 6 + src/slic3r/GUI/BindDialog.cpp | 2 +- src/slic3r/GUI/BitmapCache.cpp | 72 +++++++ src/slic3r/GUI/BitmapCache.hpp | 2 + .../GUI/CalibrationWizardPresetPage.cpp | 5 +- src/slic3r/GUI/CalibrationWizardSavePage.cpp | 8 +- src/slic3r/GUI/CreatePresetsDialog.cpp | 73 +++---- src/slic3r/GUI/CreatePresetsDialog.hpp | 2 + src/slic3r/GUI/DeviceManager.cpp | 58 ++---- src/slic3r/GUI/DeviceManager.hpp | 5 +- src/slic3r/GUI/GLCanvas3D.hpp | 11 -- src/slic3r/GUI/GUI_App.cpp | 57 +++--- src/slic3r/GUI/GUI_App.hpp | 1 + src/slic3r/GUI/GUI_Factories.cpp | 16 +- src/slic3r/GUI/GUI_ObjectList.cpp | 45 ++--- src/slic3r/GUI/HMS.cpp | 37 ++-- src/slic3r/GUI/HMS.hpp | 5 +- src/slic3r/GUI/Jobs/ArrangeJob.cpp | 6 +- src/slic3r/GUI/Jobs/BindJob.cpp | 8 +- src/slic3r/GUI/Jobs/BindJob.hpp | 3 +- src/slic3r/GUI/Jobs/FillBedJob.cpp | 3 +- src/slic3r/GUI/Jobs/PrintJob.cpp | 10 +- src/slic3r/GUI/MainFrame.cpp | 2 + src/slic3r/GUI/MediaFilePanel.cpp | 6 +- src/slic3r/GUI/MediaPlayCtrl.cpp | 26 ++- src/slic3r/GUI/ObjectDataViewModel.hpp | 19 +- src/slic3r/GUI/Plater.cpp | 183 ++++++++++++++---- src/slic3r/GUI/Preferences.cpp | 1 + src/slic3r/GUI/PresetComboBoxes.cpp | 2 +- src/slic3r/GUI/Printer/PrinterFileSystem.cpp | 23 --- src/slic3r/GUI/Printer/PrinterFileSystem.h | 2 - src/slic3r/GUI/SelectMachine.cpp | 60 ++++-- src/slic3r/GUI/StatusPanel.cpp | 14 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 3 + src/slic3r/GUI/WebGuideDialog.cpp | 51 +++-- src/slic3r/GUI/WebViewDialog.cpp | 22 +-- src/slic3r/GUI/Widgets/AMSControl.cpp | 124 ++++++++++-- src/slic3r/GUI/Widgets/AMSControl.hpp | 4 + src/slic3r/GUI/Widgets/WebView.cpp | 4 +- src/slic3r/GUI/WipeTowerDialog.cpp | 39 +++- src/slic3r/GUI/wxExtensions.cpp | 34 +++- src/slic3r/GUI/wxExtensions.hpp | 14 +- src/slic3r/GUI/wxMediaCtrl2.cpp | 2 +- src/slic3r/Utils/PresetUpdater.cpp | 29 +-- src/slic3r/Utils/bambu_networking.hpp | 29 ++- version.inc | 3 +- 203 files changed, 1990 insertions(+), 620 deletions(-) create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json create mode 100644 resources/profiles/BBL/filament/Bambu PETG Translucent @base.json create mode 100644 resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json create mode 100644 resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json create mode 100644 resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json create mode 100644 resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json create mode 100644 resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json create mode 100644 resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json create mode 100644 resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json create mode 100644 resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json create mode 100644 resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json create mode 100644 resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json diff --git a/cmake/modules/MacOSXBundleInfo.plist.in b/cmake/modules/MacOSXBundleInfo.plist.in index 13e53179cf9..f453a8a8449 100644 --- a/cmake/modules/MacOSXBundleInfo.plist.in +++ b/cmake/modules/MacOSXBundleInfo.plist.in @@ -26,6 +26,17 @@ ???? CFBundleVersion ${MACOSX_BUNDLE_BUNDLE_VERSION} + CFBundleURLTypes + + + CFBundleURLName + orcasliceropen url + CFBundleURLSchemes + + orcasliceropen + + + CFBundleDocumentTypes @@ -35,7 +46,7 @@ STL CFBundleTypeIconFile - stl.icns + images/stl.icns CFBundleTypeName STL CFBundleTypeRole @@ -52,7 +63,7 @@ OBJ CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName STL CFBundleTypeRole @@ -69,7 +80,7 @@ AMF CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName AMF CFBundleTypeRole @@ -86,7 +97,7 @@ 3MF CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName 3MF CFBundleTypeRole @@ -103,7 +114,7 @@ GCODE CFBundleTypeIconFile - gcode.icns + images/gcode.icns CFBundleTypeName GCODE CFBundleTypeRole diff --git a/resources/images/transparent_ams_lib.svg b/resources/images/transparent_ams_lib.svg index fa2a0b65f22..404028e0709 100644 --- a/resources/images/transparent_ams_lib.svg +++ b/resources/images/transparent_ams_lib.svg @@ -1,4 +1,4 @@ - + diff --git a/resources/images/transparent_color_picker.svg b/resources/images/transparent_color_picker.svg index 5a41befa3f4..e0918cda1f2 100644 --- a/resources/images/transparent_color_picker.svg +++ b/resources/images/transparent_color_picker.svg @@ -1,4 +1,4 @@ - + diff --git a/resources/printers/N1.json b/resources/printers/N1.json index 85da862315c..8bcd035a5ef 100644 --- a/resources/printers/N1.json +++ b/resources/printers/N1.json @@ -28,7 +28,6 @@ "support_print_all":false, "support_print_without_sd":false, "support_flow_calibration":true, - "support_build_plate_marker_detect":false, "support_lidar_calibration":false, "support_ai_monitoring":false, "support_first_layer_inspect":false, diff --git a/resources/printers/N2S.json b/resources/printers/N2S.json index e287cd1fab9..2857bb17ebe 100644 --- a/resources/printers/N2S.json +++ b/resources/printers/N2S.json @@ -28,7 +28,6 @@ "support_print_all":false, "support_print_without_sd":false, "support_flow_calibration":true, - "support_build_plate_marker_detect":false, "support_lidar_calibration":false, "support_ai_monitoring":false, "support_first_layer_inspect":false, diff --git a/resources/printers/version.txt b/resources/printers/version.txt index 5db99ab5409..0ba31624a9b 100644 --- a/resources/printers/version.txt +++ b/resources/printers/version.txt @@ -1 +1 @@ -01.08.02.01 \ No newline at end of file +01.08.03.01 \ No newline at end of file diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json index 21e4ba68939..68b86183479 100644 --- a/resources/profiles/BBL.json +++ b/resources/profiles/BBL.json @@ -1,7 +1,7 @@ { "name": "Bambulab", "url": "http://www.bambulab.com/Parameters/vendor/BBL.json", - "version": "01.08.00.13", + "version": "01.08.00.18", "force_update": "0", "description": "the initial version of BBL configurations", "machine_model_list": [ @@ -143,6 +143,22 @@ "name": "0.08mm Extra Fine @BBL A1", "sub_path": "process/0.08mm Extra Fine @BBL A1.json" }, + { + "name": "0.08mm High Quality @BBL X1C", + "sub_path": "process/0.08mm High Quality @BBL X1C.json" + }, + { + "name": "0.08mm High Quality @BBL P1P", + "sub_path": "process/0.08mm High Quality @BBL P1P.json" + }, + { + "name": "0.08mm High Quality @BBL A1M", + "sub_path": "process/0.08mm High Quality @BBL A1M.json" + }, + { + "name": "0.08mm High Quality @BBL A1", + "sub_path": "process/0.08mm High Quality @BBL A1.json" + }, { "name": "0.10mm Standard @BBL X1C 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL X1C 0.2 nozzle.json" @@ -155,6 +171,22 @@ "name": "0.10mm Standard @BBL A1 0.2 nozzle", "sub_path": "process/0.10mm Standard @BBL A1 0.2 nozzle.json" }, + { + "name": "0.10mm High Quality @BBL X1C 0.2 nozzle", + "sub_path": "process/0.10mm High Quality @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.10mm High Quality @BBL P1P 0.2 nozzle", + "sub_path": "process/0.10mm High Quality @BBL P1P 0.2 nozzle.json" + }, + { + "name": "0.10mm High Quality @BBL A1M 0.2 nozzle", + "sub_path": "process/0.10mm High Quality @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.10mm High Quality @BBL A1 0.2 nozzle", + "sub_path": "process/0.10mm High Quality @BBL A1 0.2 nozzle.json" + }, { "name": "0.40mm Standard @BBL X1C 0.8 nozzle", "sub_path": "process/0.40mm Standard @BBL X1C 0.8 nozzle.json" @@ -219,6 +251,22 @@ "name": "0.12mm Fine @BBL A1", "sub_path": "process/0.12mm Fine @BBL A1.json" }, + { + "name": "0.12mm High Quality @BBL X1C", + "sub_path": "process/0.12mm High Quality @BBL X1C.json" + }, + { + "name": "0.12mm High Quality @BBL P1P", + "sub_path": "process/0.12mm High Quality @BBL P1P.json" + }, + { + "name": "0.12mm High Quality @BBL A1M", + "sub_path": "process/0.12mm High Quality @BBL A1M.json" + }, + { + "name": "0.12mm High Quality @BBL A1", + "sub_path": "process/0.12mm High Quality @BBL A1.json" + }, { "name": "0.16mm Optimal @BBL X1C", "sub_path": "process/0.16mm Optimal @BBL X1C.json" @@ -235,6 +283,22 @@ "name": "0.16mm Optimal @BBL A1", "sub_path": "process/0.16mm Optimal @BBL A1.json" }, + { + "name": "0.16mm High Quality @BBL X1C", + "sub_path": "process/0.16mm High Quality @BBL X1C.json" + }, + { + "name": "0.16mm High Quality @BBL P1P", + "sub_path": "process/0.16mm High Quality @BBL P1P.json" + }, + { + "name": "0.16mm High Quality @BBL A1M", + "sub_path": "process/0.16mm High Quality @BBL A1M.json" + }, + { + "name": "0.16mm High Quality @BBL A1", + "sub_path": "process/0.16mm High Quality @BBL A1.json" + }, { "name": "0.20mm Standard @BBL X1C", "sub_path": "process/0.20mm Standard @BBL X1C.json" @@ -307,6 +371,22 @@ "name": "0.06mm Fine @BBL A1 0.2 nozzle", "sub_path": "process/0.06mm Fine @BBL A1 0.2 nozzle.json" }, + { + "name": "0.06mm High Quality @BBL X1C 0.2 nozzle", + "sub_path": "process/0.06mm High Quality @BBL X1C 0.2 nozzle.json" + }, + { + "name": "0.06mm High Quality @BBL P1P 0.2 nozzle", + "sub_path": "process/0.06mm High Quality @BBL P1P 0.2 nozzle.json" + }, + { + "name": "0.06mm High Quality @BBL A1M 0.2 nozzle", + "sub_path": "process/0.06mm High Quality @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.06mm High Quality @BBL A1 0.2 nozzle", + "sub_path": "process/0.06mm High Quality @BBL A1 0.2 nozzle.json" + }, { "name": "0.08mm Standard @BBL X1C 0.2 nozzle", "sub_path": "process/0.08mm Standard @BBL X1C 0.2 nozzle.json" @@ -323,6 +403,22 @@ "name": "0.08mm Optimal @BBL A1 0.2 nozzle", "sub_path": "process/0.08mm Optimal @BBL A1 0.2 nozzle.json" }, + { + "name": "0.08mm High Quality @BBL A1 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL A1 0.2 nozzle.json" + }, + { + "name": "0.08mm High Quality @BBL A1M 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL A1M 0.2 nozzle.json" + }, + { + "name": "0.08mm High Quality @BBL P1P 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL P1P 0.2 nozzle.json" + }, + { + "name": "0.08mm High Quality @BBL X1C 0.2 nozzle", + "sub_path": "process/0.08mm High Quality @BBL X1C 0.2 nozzle.json" + }, { "name": "0.12mm Standard @BBL X1C 0.2 nozzle", "sub_path": "process/0.12mm Standard @BBL X1C 0.2 nozzle.json" @@ -681,6 +777,10 @@ "name": "PolyLite PETG @base", "sub_path": "filament/PolyLite PETG @base.json" }, + { + "name": "Bambu PETG Translucent @base", + "sub_path": "filament/Bambu PETG Translucent @base.json" + }, { "name": "Bambu ABS @base", "sub_path": "filament/Bambu ABS @base.json" @@ -1553,6 +1653,30 @@ "name": "PolyLite PETG @BBL A1 0.2 nozzle", "sub_path": "filament/PolyLite PETG @BBL A1 0.2 nozzle.json" }, + { + "name": "Bambu PETG Translucent @BBL X1C", + "sub_path": "filament/Bambu PETG Translucent @BBL X1C.json" + }, + { + "name": "Bambu PETG Translucent @BBL X1C 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1M", + "sub_path": "filament/Bambu PETG Translucent @BBL A1M.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1M 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1 0.8 nozzle", + "sub_path": "filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json" + }, + { + "name": "Bambu PETG Translucent @BBL A1", + "sub_path": "filament/Bambu PETG Translucent @BBL A1.json" + }, { "name": "Bambu ABS @BBL X1C", "sub_path": "filament/Bambu ABS @BBL X1C.json" diff --git a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json index 02ca4846f8c..b187cac1922 100644 --- a/resources/profiles/BBL/filament/Bambu PETG Basic @base.json +++ b/resources/profiles/BBL/filament/Bambu PETG Basic @base.json @@ -51,7 +51,7 @@ "270" ], "nozzle_temperature_range_low": [ - "240" + "230" ], "overhang_fan_speed": [ "90" @@ -59,6 +59,9 @@ "overhang_fan_threshold": [ "10%" ], + "slow_down_layer_time": [ + "12" + ], "textured_plate_temp": [ "70" ], diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json new file mode 100644 index 00000000000..fc6643dfc6c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1 0.8 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL A1 0.8 nozzle", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_04", + "instantiation": "true", + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retraction_length": [ + "0.2" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 0.8 nozzle", + "Bambu Lab A1 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json new file mode 100644 index 00000000000..fd65b8f27af --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL A1", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_05", + "instantiation": "true", + "filament_retraction_length": [ + "0.3" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json new file mode 100644 index 00000000000..5785e725ca1 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M 0.8 nozzle.json @@ -0,0 +1,27 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL A1M 0.8 nozzle", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_03", + "instantiation": "true", + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retraction_length": [ + "0.2" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.6 nozzle", + "Bambu Lab A1 mini 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json new file mode 100644 index 00000000000..fc1271284b0 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL A1M.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL A1M", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_02", + "instantiation": "true", + "filament_retraction_length": [ + "0.3" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json new file mode 100644 index 00000000000..39a4bfb3f8c --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C 0.8 nozzle.json @@ -0,0 +1,35 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL X1C 0.8 nozzle", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_01", + "instantiation": "true", + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "20" + ], + "filament_max_volumetric_speed": [ + "16" + ], + "filament_retraction_length": [ + "0.2" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.6 nozzle", + "Bambu Lab X1 Carbon 0.8 nozzle", + "Bambu Lab X1 0.6 nozzle", + "Bambu Lab X1 0.8 nozzle", + "Bambu Lab P1P 0.6 nozzle", + "Bambu Lab P1P 0.8 nozzle", + "Bambu Lab P1S 0.6 nozzle", + "Bambu Lab P1S 0.8 nozzle", + "Bambu Lab X1E 0.6 nozzle", + "Bambu Lab X1E 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json new file mode 100644 index 00000000000..386ef5eab80 --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @BBL X1C.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @BBL X1C", + "inherits": "Bambu PETG Translucent @base", + "from": "system", + "setting_id": "GFSG01_00", + "instantiation": "true", + "filament_retraction_length": [ + "0.3" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1P 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json new file mode 100644 index 00000000000..174052635cd --- /dev/null +++ b/resources/profiles/BBL/filament/Bambu PETG Translucent @base.json @@ -0,0 +1,80 @@ +{ + "type": "filament", + "name": "Bambu PETG Translucent @base", + "inherits": "fdm_filament_pet", + "from": "system", + "filament_id": "GFG01", + "instantiation": "false", + "cool_plate_temp": [ + "0" + ], + "cool_plate_temp_initial_layer": [ + "0" + ], + "eng_plate_temp": [ + "70" + ], + "eng_plate_temp_initial_layer": [ + "70" + ], + "fan_cooling_layer_time": [ + "30" + ], + "fan_max_speed": [ + "30" + ], + "fan_min_speed": [ + "10" + ], + "filament_cost": [ + "24.99" + ], + "filament_density": [ + "1.25" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "6" + ], + "filament_vendor": [ + "Bambu Lab" + ], + "hot_plate_temp": [ + "70" + ], + "hot_plate_temp_initial_layer": [ + "70" + ], + "nozzle_temperature": [ + "245" + ], + "nozzle_temperature_initial_layer": [ + "250" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "nozzle_temperature_range_low": [ + "230" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "10%" + ], + "slow_down_layer_time": [ + "12" + ], + "textured_plate_temp": [ + "70" + ], + "textured_plate_temp_initial_layer": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n{if (bed_temperature[current_extruder] >80)||(bed_temperature_initial_layer[current_extruder] >80)}M106 P3 S255\n{elsif (bed_temperature[current_extruder] >60)||(bed_temperature_initial_layer[current_extruder] >60)}M106 P3 S180\n{endif}\n\n{if activate_air_filtration[current_extruder] && support_air_filtration}\nM106 P3 S{during_print_exhaust_fan_speed_num[current_extruder]} \n{endif}" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json index 8e012b89dc6..0445791bfc6 100644 --- a/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json +++ b/resources/profiles/BBL/filament/Bambu TPU 95A HF @base.json @@ -14,6 +14,9 @@ "filament_max_volumetric_speed": [ "12" ], + "filament_retraction_length": [ + "0.8" + ], "filament_vendor": [ "Bambu Lab" ], diff --git a/resources/profiles/BBL/filament/Generic PETG @base.json b/resources/profiles/BBL/filament/Generic PETG @base.json index 6e25c129fc6..29734e7a95b 100644 --- a/resources/profiles/BBL/filament/Generic PETG @base.json +++ b/resources/profiles/BBL/filament/Generic PETG @base.json @@ -47,6 +47,9 @@ "overhang_fan_threshold": [ "10%" ], + "slow_down_layer_time": [ + "12" + ], "slow_down_min_speed": [ "20" ], diff --git a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json index d80a580773b..e904863bd08 100644 --- a/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA @0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL99_00", "instantiation": "true", "filament_max_volumetric_speed": [ - "2" + "1.6" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Generic PLA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @BBL A1 0.2 nozzle.json index 09fcf5e6adf..b8a5916bc36 100644 --- a/resources/profiles/BBL/filament/Generic PLA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "2" + "1.6" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json index 16f0ee48606..5d3c65d9061 100644 --- a/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Generic PLA @BBL A1M 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "2" + "1.6" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1 0.2 nozzle.json index 58472767d2f..a5f3c4665ce 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json index dd372d83b21..ba57483ccb2 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL A1M 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL05_06", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.8" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json index 8b51a32b048..796db32d7ca 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL P1P 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL05_04", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.8" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json index 4ffd147c385..2fb98ad95b2 100644 --- a/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture Matte PLA @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL05_01", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.8" ], "compatible_printers": [ "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL A1 0.2 nozzle.json index b04b23e3468..de9052fdb2b 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ], "slow_down_layer_time": [ "8" diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json index cfc3357e355..0c5657ceb52 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL A1M 0.2 nozzle.json @@ -6,13 +6,7 @@ "setting_id": "GFSL04_06", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" - ], - "textured_plate_temp": [ - "65" - ], - "textured_plate_temp_initial_layer": [ - "65" + "1.6" ], "compatible_printers": [ "Bambu Lab A1 mini 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json index f8de6aa1994..4731f4ad127 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL P1P 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL04_04", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.6" ], "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json index 80f5acd18e5..4148df18ae8 100644 --- a/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/Overture PLA @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL04_02", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.6" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json index 7e5aa202ae2..463dcb0cbf2 100644 --- a/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/Generic PLA @BBL P1P 0.2 nozzle.json @@ -12,7 +12,7 @@ "50" ], "filament_max_volumetric_speed": [ - "2" + "1.6" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json index 70619f52840..8e45c3ef8e0 100644 --- a/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/PolyLite PLA @BBL P1P 0.2 nozzle.json @@ -12,7 +12,7 @@ "50" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json index 789062def6b..a81f9a94628 100644 --- a/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/PolyTerra PLA @BBL P1P 0.2 nozzle.json @@ -12,7 +12,7 @@ "50" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json index 154a347fd13..04a2322723d 100644 --- a/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/P1P/eSUN PLA+ @BBL P1P 0.2 nozzle.json @@ -12,7 +12,7 @@ "50" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/PolyLite PETG @base.json b/resources/profiles/BBL/filament/PolyLite PETG @base.json index 60c9451a576..d93701f41d0 100644 --- a/resources/profiles/BBL/filament/PolyLite PETG @base.json +++ b/resources/profiles/BBL/filament/PolyLite PETG @base.json @@ -44,6 +44,9 @@ "overhang_fan_threshold": [ "10%" ], + "slow_down_layer_time": [ + "12" + ], "slow_down_min_speed": [ "20" ], diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1 0.2 nozzle.json index e1a0176f398..8f74b11f71f 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json index b3d0a8bb8a7..e4370afe239 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL A1M 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.6" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json index e8a41572287..c9bec6b3eb4 100644 --- a/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyLite PLA @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL25", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.6" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1 0.2 nozzle.json index f92353d7992..8d2f7468e5c 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json index f37463b1a5f..e0d6699dfc9 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL A1M 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json index ed5b54fb101..bcbf2c8af94 100644 --- a/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/PolyTerra PLA @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL24", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.8" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json index e8455eef5cb..d6e8e925bdc 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "65" diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json index ee4e65d4241..ced8418038a 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL A1M 0.2 nozzle.json @@ -15,7 +15,7 @@ "60" ], "filament_max_volumetric_speed": [ - "1" + "1.8" ], "hot_plate_temp": [ "60" diff --git a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json index b05b011f21b..8e11933f41d 100644 --- a/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/filament/eSUN PLA+ @BBL X1C 0.2 nozzle.json @@ -6,7 +6,7 @@ "setting_id": "GFSL03_01", "instantiation": "true", "filament_max_volumetric_speed": [ - "1" + "1.8" ], "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json index 0e156db2f3d..7feaa0a6a35 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 0.4 nozzle.json @@ -60,10 +60,9 @@ "255" ], "scan_first_layer": "0", - "upward_compatible_machine": [], - "machine_start_gcode": ";===== machine: A1 =========================\n;===== date: 20231211 =====================\nG392 S0\n;M400\n;M73 P1.717\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\n\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A43 B10 L100 C46 D10 M70 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C43 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C41 D10 M80 E41 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E44 F10 N80\nM1006 A0 B10 L100 C49 D10 M80 E49 F10 N80\nM1006 A0 B10 L100 C0 D10 M80 E0 F10 N80\nM1006 A44 B10 L100 C48 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A43 B10 L100 C46 D10 M60 E39 F10 N80\nM1006 W\nM18\n;=====start printer sound ===================\n\n;=====avoid end stop =================\nG91\nG380 S2 Z40 F1200\nG380 S2 Z-15 F1200\nG90\n\n;===== reset machine status =================\n;M290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.65 Y1.2 Z0.6 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M211 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\nM1002 gcode_claim_action : 13\n\nG28 X\nG91\nG1 Z5 F1200\nG90\nG0 X128 Y0 F30000\nG91\nG1 Z-5 F1200\n\nM109 S10 H140\n\nM17 E0.3\nM83\nG1 E10 F1200\nG1 E-0.5 F30\nM17 D\n\nG28 Z P0 T140; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;M400\n;M73 P1.717\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 24\n\nM400\n;G392 S1\nM211 X0 Y0 Z0 ;turn off soft endstop\nM975 S1 ; turn on\n\nG90\nG1 X-28.5 F30000\nG1 X-48.2 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-48.2 F3000\n M400\n\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM621 S[initial_no_support_extruder]A\n\nM109 S{nozzle_temperature_range_high[initial_no_support_extruder]} H300\nG92 E0\nG1 E50 F200 ; lower extrusion speed to avoid clog\nM400\nM106 P1 S178\nG92 E0\nG1 E5 F200\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG92 E0\nG1 E-0.5 F300\n\nG1 X-28.5 F30000\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\n\n;G392 S0\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n;M400\n;M73 P1.717\n\n;===== auto extrude cali start =========================\nM975 S1\n;G392 S1\n\nG90\nM83\nT1000\nG1 X-48.2 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\n\nM622 J1\n M1002 gcode_claim_action : 8\n\n M109 S{nozzle_temperature[initial_extruder]}\n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;G392 S0\n;===== auto extrude cali end ========================\n\n;M400\n;M73 P1.717\n\nM104 S170 ; prepare to wipe nozzle\nM106 S255 ; turn on fan\n\n;===== mech mode fast check start =====================\nM1002 gcode_claim_action : 3\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q1 A5 K0 O3\nM974 Q1 S2 P0\n\nM970.2 Q1 K1 W58 Z0.11\nM974 S2\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q0 A10 K0 O1\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X0 Y5\nG28 X ; re-home XY\n\n;===== mech mode fast check end =======================\n\n;M400\n;M73 P1.717\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\n\nM975 S1\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\n;===== remove waste by touching start =====\n\nM104 S170 ; set temp down to heatbed acceptable\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nG0 X108 Y-0.5 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X110 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X112 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X114 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X116 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X118 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X120 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X122 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X124 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X126 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X128 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X130 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X132 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X134 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X136 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X138 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X140 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X142 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X144 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X146 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X148 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;===== remove waste by touching end =====\n\nG1 Z10 F1200\nG0 X118 Y261 F30000\nG1 Z5 F1200\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-50}\n\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S140 ; prepare to abl\nG0 Z5 F20000\n\nG0 X128 Y261 F20000 ; move to exposed steel surface\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z10 F1200\n\n;===== brush material wipe nozzle =====\n\nG90\nG1 Y250 F30000\nG1 X55\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X-35 F30000\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Z5.000 F1200\n\nG90\nG1 X30 Y250.000 F30000\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X35 F30000\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Z10.000 F1200\n\n;===== brush material wipe nozzle end =====\n\nG90\n;G0 X128 Y261 F20000 ; move to exposed steel surface\nG1 Y250 F30000\nG1 X138\nG1 Y261\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nM109 S140\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM211 R; pop softend status\n\n;===== wipe nozzle end ================================\n\n;M400\n;M73 P1.717\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\n\nG90\nG1 Z5 F1200\nG1 X0 Y0 F30000\nG29.2 S1 ; turn on ABL\n\nM190 S[bed_temperature_initial_layer_single]; ensure bed temp\nM109 S140\nM106 S0 ; turn off fan , too noisy\n\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\n;M400\n;M73 P1.717\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; prepare to print\n\n;===== nozzle load line ===============================\n;G90\n;M83\n;G1 Z5 F1200\n;G1 X88 Y-0.5 F20000\n;G1 Z0.3 F1200\n\n;M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;G1 E2 F300\n;G1 X168 E4.989 F6000\n;G1 Z1 F1200\n;===== noozle load line end ===========================\n\n;===== extrude cali test ===============================\n\nM400\n M900 S\n\n M900 C\n G90\n M83\n G1 X78.000 Y-0.500 F30000\n G1 Z0.300 F1200\n\n M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n G1 E3 F300\n\n G1 X83.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X88.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X93.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X98.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X103.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X108.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X113.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X118.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X123.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X128.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X133.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X138.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X143.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X148.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X153.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X158.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X163.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X168.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X173.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X178.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X179 Z0\n G1 X183\n G1 Z1\n M400\n\n M900 R\n G90\n M83\n G1 X78.000 Y4.500 F30000\n G1 Z0.300 F1200\n G1 E0.5 F300\n G1 X83.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X88.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X93.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X98.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X103.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X108.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X113.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X118.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X123.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X128.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X133.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X138.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X143.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X148.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X153.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X158.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X163.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X168.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X173.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X178.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X179 Z0\n G1 X183\n G1 Z1\n M400\n\nG1 Z0.2\n\n;M400\n;M73 P1.717\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n;G392 S1 ; turn on clog detection\nG29.4\n", - "machine_end_gcode": ";===== date: 20230922 =====================\n;turn off nozzle clog detect\nG392 S0\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X267 F15000\nT255\nG1 X-28.5 F18000\nG1 X-48.5 F3000\nG1 X-28.5 F18000\nG1 X-48.5 F3000\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 256}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z256 F600\n G1 Z256\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-48 Y180 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A44 B20 L100 C49 D20 M80 E41 F20 N80\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N80\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n;=====printer finish sound=========\n\n;M17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM400\nM18\n", + "machine_start_gcode": ";===== machine: A1 =========================\n;===== date: 20240104 =====================\nG392 S0\n;M400\n;M73 P1.717\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S140\nM140 S[bed_temperature_initial_layer_single]\n\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B10 L100 C37 D10 M60 E37 F10 N60\nM1006 A0 B10 L100 C41 D10 M60 E41 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A43 B10 L100 C46 D10 M70 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C43 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C41 D10 M80 E41 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E44 F10 N80\nM1006 A0 B10 L100 C49 D10 M80 E49 F10 N80\nM1006 A0 B10 L100 C0 D10 M80 E0 F10 N80\nM1006 A44 B10 L100 C48 D10 M60 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A0 B10 L100 C44 D10 M80 E39 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A43 B10 L100 C46 D10 M60 E39 F10 N80\nM1006 W\nM18\n;=====start printer sound ===================\n\n;=====avoid end stop =================\nG91\nG380 S2 Z40 F1200\nG380 S2 Z-15 F1200\nG90\n\n;===== reset machine status =================\n;M290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.65 Y1.2 Z0.6 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;M211 X0 Y0 Z0 ; turn off soft endstop to prevent protential logic problem\n\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\nM1002 gcode_claim_action : 13\n\nG28 X\nG91\nG1 Z5 F1200\nG90\nG0 X128 F30000\nG0 Y254 F3000\nG91\nG1 Z-5 F1200\n\nM109 S10 H140\n\nM17 E0.3\nM83\nG1 E10 F1200\nG1 E-0.5 F30\nM17 D\n\nG28 Z P0 T140; home z with low precision,permit 300deg temperature\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\n\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n G90\n G1 Z5 F1200\nM623\n\n;M400\n;M73 P1.717\n\n;===== prepare print temperature and material ==========\nM1002 gcode_claim_action : 24\n\nM400\n;G392 S1\nM211 X0 Y0 Z0 ;turn off soft endstop\nM975 S1 ; turn on\n\nG90\nG1 X-28.5 F30000\nG1 X-48.2 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-48.2 F3000\n M400\n\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM621 S[initial_no_support_extruder]A\n\nM109 S{nozzle_temperature_range_high[initial_no_support_extruder]} H300\nG92 E0\nG1 E50 F200 ; lower extrusion speed to avoid clog\nM400\nM106 P1 S178\nG92 E0\nG1 E5 F200\nM104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]}\nG92 E0\nG1 E-0.5 F300\n\nG1 X-28.5 F30000\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\nG1 X-28.5 F30000 ;wipe and shake\nG1 X-48.2 F3000\n\n;G392 S0\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n;M400\n;M73 P1.717\n\n;===== auto extrude cali start =========================\nM975 S1\n;G392 S1\n\nG90\nM83\nT1000\nG1 X-48.2 Y0 Z10 F10000\nM400\nM1002 set_filament_type:UNKNOWN\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\n\nM622 J1\n M1002 gcode_claim_action : 8\n\n M109 S{nozzle_temperature[initial_extruder]}\n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n G1 X-48.2 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S255\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000 ;wipe and shake\n G1 X-48.2 F3000\n G1 X-28.5 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-48.2 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4}\n M106 P1 S178\n M400 S5\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000\n G1 X-48.2 F3000\n G1 X-28.5 F18000\n M400\n M106 P1 S0\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;G392 S0\n;===== auto extrude cali end ========================\n\n;M400\n;M73 P1.717\n\nM104 S170 ; prepare to wipe nozzle\nM106 S255 ; turn on fan\n\n;===== mech mode fast check start =====================\nM1002 gcode_claim_action : 3\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q1 A5 K0 O3\nM974 Q1 S2 P0\n\nM970.2 Q1 K1 W58 Z0.11\nM974 S2\n\nG1 X128 Y128 F20000\nG1 Z5 F1200\nM400 P200\nM970.3 Q0 A10 K0 O1\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X0 Y5\nG28 X ; re-home XY\n\n;===== mech mode fast check end =======================\n\n;M400\n;M73 P1.717\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\n\nM975 S1\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\n;===== remove waste by touching start =====\n\nM104 S170 ; set temp down to heatbed acceptable\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nG0 X108 Y-0.5 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X110 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X112 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X114 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X116 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X118 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X120 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X122 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X124 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X126 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X128 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X130 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X132 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X134 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X136 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X138 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X140 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X142 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X144 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X146 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X148 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;===== remove waste by touching end =====\n\nG1 Z10 F1200\nG0 X118 Y261 F30000\nG1 Z5 F1200\nM109 S{nozzle_temperature_initial_layer[initial_extruder]-50}\n\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S140 ; prepare to abl\nG0 Z5 F20000\n\nG0 X128 Y261 F20000 ; move to exposed steel surface\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z10 F1200\n\n;===== brush material wipe nozzle =====\n\nG90\nG1 Y250 F30000\nG1 X55\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X-35 F30000\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Z5.000 F1200\n\nG90\nG1 X30 Y250.000 F30000\nG1 Z1.300 F1200\nG1 Y262.5 F6000\nG91\nG1 X35 F30000\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Y-0.5\nG1 X45\nG1 Y-0.5\nG1 X-45\nG1 Z10.000 F1200\n\n;===== brush material wipe nozzle end =====\n\nG90\n;G0 X128 Y261 F20000 ; move to exposed steel surface\nG1 Y250 F30000\nG1 X138\nG1 Y261\nG0 Z-1.01 F1200 ; stop the nozzle\n\nG91\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nM109 S140\nM106 S255 ; turn on fan (G28 has turn off fan)\n\nM211 R; pop softend status\n\n;===== wipe nozzle end ================================\n\n;M400\n;M73 P1.717\n\n;===== bed leveling ==================================\nM1002 judge_flag g29_before_print_flag\n\nG90\nG1 Z5 F1200\nG1 X0 Y0 F30000\nG29.2 S1 ; turn on ABL\n\nM190 S[bed_temperature_initial_layer_single]; ensure bed temp\nM109 S140\nM106 S0 ; turn off fan , too noisy\n\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28\n\nM623\n\n;===== home after wipe mouth end =======================\n\n;M400\n;M73 P1.717\n\nM104 S{nozzle_temperature_initial_layer[initial_extruder]} ; prepare to print\n\n;===== nozzle load line ===============================\n;G90\n;M83\n;G1 Z5 F1200\n;G1 X88 Y-0.5 F20000\n;G1 Z0.3 F1200\n\n;M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n\n;G1 E2 F300\n;G1 X168 E4.989 F6000\n;G1 Z1 F1200\n;===== noozle load line end ===========================\n\n;===== extrude cali test ===============================\n\nM400\n M900 S\n\n M900 C\n G90\n M83\n G1 X78.000 Y-0.500 F30000\n G1 Z0.300 F1200\n\n M109 S{nozzle_temperature_initial_layer[initial_extruder]}\n G1 E3 F300\n\n G1 X83.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X88.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X93.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X98.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X103.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X108.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X113.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X118.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X123.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X128.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X133.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X138.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X143.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X148.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X153.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X158.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X163.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X168.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X173.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X178.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X179 Z0\n G1 X183\n G1 Z1\n M400\n\n M900 R\n G90\n M83\n G1 X78.000 Y4.500 F30000\n G1 Z0.300 F1200\n G1 E0.5 F300\n G1 X83.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X88.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X93.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X98.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X103.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X108.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X113.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X118.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X123.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X128.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X133.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X138.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X143.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X148.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X153.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X158.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X163.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X168.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X173.000 E0.3118 F{outer_wall_volumetric_speed*0.4 /(0.3*0.5) * 60}\n G1 X178.000 E0.3118 F{outer_wall_volumetric_speed*1.0 /(0.3*0.5) * 60}\n G1 X179 Z0\n G1 X183\n G1 Z1\n M400\n\nG1 Z0.2\n\n;M400\n;M73 P1.717\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\nM400\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\n;G392 S1 ; turn on clog detection\nM1007 S1 ; turn on mass estimation\nG29.4\n", + "machine_end_gcode": ";===== date: 20231229 =====================\nG392 S0 ;turn off nozzle clog detect\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X267 F15000\nT255\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nG1 X-28.5 F18000\nG1 X-48.2 F3000\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 256}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z256 F600\n G1 Z256\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-48 Y180 F3600\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M40 E42 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C46 D10 M80 E46 F10 N80\nM1006 A44 B20 L100 C39 D20 M60 E48 F20 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C44 D10 M60 E44 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C39 D10 M60 E39 F10 N60\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N60\nM1006 A0 B10 L100 C48 D10 M60 E44 F10 N80\nM1006 A0 B10 L100 C0 D10 M60 E0 F10 N80\nM1006 A44 B20 L100 C49 D20 M80 E41 F20 N80\nM1006 A0 B20 L100 C0 D20 M60 E0 F20 N80\nM1006 A0 B20 L100 C37 D20 M30 E37 F20 N60\nM1006 W\n;=====printer finish sound=========\n\n;M17 X0.8 Y0.8 Z0.5 ; lower motor current to 45% power\nM400\nM18 X Y Z\n\n", "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change", "time_lapse_gcode": ";===================== date: 20231107 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-48.2 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\n; enable nozzle clog detect at 3rd layer\n{if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X-4.2 Y240 F20000\n M400 P200\n G39 S1\n G0 Z2 F4000\n G0 X128 Y128 F30000\n{endif}\n{endif}", - "change_filament_gcode": ";===== machine: A1 =========================\n;===== date: 20231012 =======================\nG392 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X267 F18000\n;{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n;{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\nG1 Y128 F9000\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E6 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nG1 X-48.5 F3000\nG1 X-38.5 F18000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\nG392 S1\n" + "change_filament_gcode": ";===== machine: A1 =========================\n;===== date: 20231225 =======================\nM1007 S0 ; turn off mass estimation\nG392 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X267 F18000\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nM620.10 A0 F[old_filament_e_feedrate]\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\nM620.10 A1 F[new_filament_e_feedrate] L[flush_length] H[nozzle_diameter] T[nozzle_temperature_range_high]\n\nG1 Y128 F9000\n\n{if next_extruder < 255}\nM400\n\nG92 E0\nM628 S0\n\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM629\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E6 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nG1 X-48.2 F3000\nG1 X-38.2 F18000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\nG392 S0\n\nM1007 S1\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json index 31110b928c1..56737732675 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini 0.4 nozzle.json @@ -10,7 +10,7 @@ ], "printer_model": "Bambu Lab A1 mini", "printer_variant": "0.4", - "auxiliary_fan": "1", + "auxiliary_fan": "0", "bed_exclude_area": [], "best_object_pos": "0.7x0.5", "default_filament_profile": [ @@ -66,9 +66,9 @@ "Bambu Lab X1E 0.4 nozzle", "Bambu Lab A1 0.4 nozzle" ], - "machine_start_gcode": ";===== machine: A1 mini =========================\n;===== date: 20231201 =====================\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S170\nM140 S[bed_temperature_initial_layer_single]\nG392 S0 ;turn off clog detect\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B0 L100 C37 D10 M100 E37 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E43 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C49 D10 M100 E49 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C39 D10 M100 E48 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 W\nM18\n;=====avoid end stop =================\nG91\nG380 S2 Z30 F1200\nG380 S2 Z-20 F1200\nG1 Z5 F1200\nG90\n\n;===== reset machine status =================\nM290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.7 Y0.9 Z0.5 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM83\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\n;===== prepare print temperature and material ==========\nM400\nM18\nM109 S100 H170\nM104 S170\nM400\nM17\nM400\nG28 X\n\nM211 X0 Y0 Z0 ;turn off soft endstop ; turn off soft endstop to prevent protential logic problem\n\nM975 S1 ; turn on\n\nG1 X0.0 F30000\nG1 X-13.5 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n G392 S0 ;turn on clog detect\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-13.5 F3000\n M400\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n M104 S{nozzle_temperature_range_high[initial_no_support_extruder]}\n G92 E0\n G1 E50 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M400\n M106 P1 S178\n G92 E0\n G1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G92 E0\n G1 E-0.5 F300\n\n G1 X0 F30000\n G1 X-13.5 F3000\n G1 X0 F30000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X0 F30000\n G1 X-13.5 F3000\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G392 S0 ;turn off clog detect\nM621 S[initial_no_support_extruder]A\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== mech mode fast check============================\nM1002 gcode_claim_action : 3\nG0 X25 Y175 F20000 ; find a soft place to home\n;M104 S0\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S170\n\n; build plate detect\nG39.4\nM400\n\nG1 Z5 F3000\nG1 X90 Y-1 F30000\nM400 P200\nM970.3 Q1 A7 K0 O2\nM974 Q1 S2 P0\n\nG1 X90 Y0 Z5 F30000\nM400 P200\nM970 Q0 A10 B50 C90 H15 K0 M20 O3\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X-1 Y10\nG28 X ; re-home XY\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\n\nM104 S170 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nM104 S140\nG0 X90 Y-4 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X91 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X92 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X93 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X94 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X95 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X96 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X97 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X98 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5 F3000\nG0 X50 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG0 X85 Y185 F10000 ;move to exposed steel surface and stop the nozzle\nG0 Z-1.01 F10000\nG91\n\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z5 F30000\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5\nG0 X55 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG1 Z10\nG1 X85 Y185\nG1 Z-1.01\nG1 X95\nG1 X90\n\nM211 R; pop softend status\n\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== wait heatbed ====================\nM1002 gcode_claim_action : 2\nM104 S0\nM190 S[bed_temperature_initial_layer_single];set bed temp\nM109 S140\n\nG1 Z5 F3000\nG29.2 S1\nG1 X10 Y10 F20000\n\n;===== bed leveling ==================================\n;M1002 set_flag g29_before_print_flag=1\nM1002 judge_flag g29_before_print_flag\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A T145;set high than the wipe temperature\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28 T145\n\nM623\n\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\n\nG1 X-13.5 Y0 Z10 F10000\nG1 E1.2 F500\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{nozzle_temperature[initial_extruder]}\nM400\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\n\nG392 S0 ;turn on clog detect\n\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\nM622 J1\n M1002 gcode_claim_action : 8\n \n M400\n M900 K0.0 L1000.0 M1.0\n G90\n M83\n G0 X68 Y-4 F30000\n G0 Z0.2 F18000 ;Move to start position\n M400\n G0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 Y0 Z0 F20000\n M400\n \n G1 X-13.5 Y0 Z10 F10000\n M400\n \n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 ; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\nM623 ; end of \"draw extrinsic para cali paint\"\n\n\n;===== extrude cali test ===============================\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\nG90\nM83\nG0 X68 Y-2.5 F30000\nG0 Z0.2 F18000 ;Move to start position\nG0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X115 Z0 F20000\nG0 Z5\nM400\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\n\nM400 ; wait all motion done before implement the emprical L parameters\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\nM1007 S1\n\n\n\n", - "machine_end_gcode": ";===== date: 20231201 =====================\n;turn off nozzle clog detect\nG392 S0\n\n{if timelapse_type == 2}\nM991 S0 P-1 ;end timelapse immediately\n{endif}\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 F12000 ; move to safe pos \n{if timelapse_type == 1}\nM991 S0 P-1 ;end timelapse at safe pos\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X181 F12000\nT255\nG1 X0 F18000\nG1 X-13.0 F3000\nG1 X0 F18000 ; wipe\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 180}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z180 F600\n G1 Z180\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-13 Y180 F3600\n\nG91\nG1 Z-1 F600\nG90\nM83\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M100 E42 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C46 D10 M100 E46 F10 N100\nM1006 A44 B20 L100 C39 D20 M100 E48 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E48 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B20 L100 C41 D20 M100 E49 F20 N100\nM1006 A0 B20 L100 C0 D20 M100 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M100 E37 F20 N100\nM1006 W\n;=====printer finish sound=========\nM400 S1\nM18\n", + "machine_start_gcode": ";===== machine: A1 mini =========================\n;===== date: 20231226 =====================\n\n;===== start to heat heatbead&hotend==========\nM1002 gcode_claim_action : 2\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\nM104 S170\nM140 S[bed_temperature_initial_layer_single]\nG392 S0 ;turn off clog detect\n;=====start printer sound ===================\nM17\nM400 S1\nM1006 S1\nM1006 A0 B0 L100 C37 D10 M100 E37 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E43 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C41 D10 M100 E41 F10 N100\nM1006 A0 B0 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C49 D10 M100 E49 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C39 D10 M100 E48 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B0 L100 C39 D10 M100 E44 F10 N100\nM1006 A0 B0 L100 C0 D10 M100 E0 F10 N100\nM1006 A43 B10 L100 C39 D10 M100 E46 F10 N100\nM1006 W\nM18\n;=====avoid end stop =================\nG91\nG380 S2 Z30 F1200\nG380 S2 Z-20 F1200\nG1 Z5 F1200\nG90\n\n;===== reset machine status =================\nM290 X39 Y39 Z8\nM204 S6000\n\nM630 S0 P0\nG91\nM17 Z0.3 ; lower the z-motor current\n\nG90\nM17 X0.7 Y0.9 Z0.5 ; reset motor current to default\nM960 S5 P1 ; turn on logo lamp\nG90\nM83\nM220 S100 ;Reset Feedrate\nM221 S100 ;Reset Flowrate\nM73.2 R1.0 ;Reset left time magnitude\n;====== cog noise reduction=================\nM982.2 S1 ; turn on cog noise reduction\n\n;===== prepare print temperature and material ==========\nM400\nM18\nM109 S100 H170\nM104 S170\nM400\nM17\nM400\nG28 X\n\nM211 X0 Y0 Z0 ;turn off soft endstop ; turn off soft endstop to prevent protential logic problem\n\nM975 S1 ; turn on\n\nG1 X0.0 F30000\nG1 X-13.5 F3000\n\nM620 M ;enable remap\nM620 S[initial_no_support_extruder]A ; switch material if AMS exist\n G392 S0 ;turn on clog detect\n M1002 gcode_claim_action : 4\n M400\n M1002 set_filament_type:UNKNOWN\n M109 S[nozzle_temperature_initial_layer]\n M104 S250\n M400\n T[initial_no_support_extruder]\n G1 X-13.5 F3000\n M400\n M620.1 E F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60} T{nozzle_temperature_range_high[initial_no_support_extruder]}\n M109 S250 ;set nozzle to common flush temp\n M106 P1 S0\n G92 E0\n G1 E50 F200\n M400\n M1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n M104 S{nozzle_temperature_range_high[initial_no_support_extruder]}\n G92 E0\n G1 E50 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M400\n M106 P1 S178\n G92 E0\n G1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2.4053*60}\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-20} ; drop nozzle temp, make filament shink a bit\n M104 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G92 E0\n G1 E-0.5 F300\n\n G1 X0 F30000\n G1 X-13.5 F3000\n G1 X0 F30000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X0 F30000\n G1 X-13.5 F3000\n M109 S{nozzle_temperature_initial_layer[initial_no_support_extruder]-40}\n G392 S0 ;turn off clog detect\nM621 S[initial_no_support_extruder]A\n\nM400\nM106 P1 S0\n;===== prepare print temperature and material end =====\n\n\n;===== mech mode fast check============================\nM1002 gcode_claim_action : 3\nG0 X25 Y175 F20000 ; find a soft place to home\n;M104 S0\nG28 Z P0 T300; home z with low precision,permit 300deg temperature\nG29.2 S0 ; turn off ABL\nM104 S170\n\n; build plate detect\nM1002 judge_flag build_plate_detect_flag\nM622 S1\n G39.4\n M400\nM623\n\nG1 Z5 F3000\nG1 X90 Y-1 F30000\nM400 P200\nM970.3 Q1 A7 K0 O2\nM974 Q1 S2 P0\n\nG1 X90 Y0 Z5 F30000\nM400 P200\nM970 Q0 A10 B50 C90 H15 K0 M20 O3\nM974 Q0 S2 P0\n\nM975 S1\nG1 F30000\nG1 X-1 Y10\nG28 X ; re-home XY\n\n;===== wipe nozzle ===============================\nM1002 gcode_claim_action : 14\nM975 S1\n\nM104 S170 ; set temp down to heatbed acceptable\nM106 S255 ; turn on fan (G28 has turn off fan)\nM211 S; push soft endstop status\nM211 X0 Y0 Z0 ;turn off Z axis endstop\n\nM83\nG1 E-1 F500\nG90\nM83\n\nM109 S170\nM104 S140\nG0 X90 Y-4 F30000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X91 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X92 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X93 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X94 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X95 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X96 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X97 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X98 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\nG1 Z2 F1200\nG1 X99 F10000\nG380 S3 Z-5 F1200\n\nG1 Z5 F30000\n;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5 F3000\nG0 X50 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG0 X85 Y185 F10000 ;move to exposed steel surface and stop the nozzle\nG0 Z-1.01 F10000\nG91\n\nG2 I1 J0 X2 Y0 F2000.1\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\nG2 I1 J0 X2\nG2 I-0.75 J0 X-1.5\n\nG90\nG1 Z5 F30000\nG1 X25 Y175 F30000.1 ;Brush material\nG1 Z0.2 F30000.1\nG1 Y185\nG91\nG1 X-30 F30000\nG1 Y-2\nG1 X27\nG1 Y1.5\nG1 X-28\nG1 Y-2\nG1 X30\nG1 Y1.5\nG1 X-30\nG90\nM83\n\nG1 Z5\nG0 X55 Y175 F20000 ; find a soft place to home\nG28 Z P0 T300; home z with low precision, permit 300deg temperature\nG29.2 S0 ; turn off ABL\n\nG1 Z10\nG1 X85 Y185\nG1 Z-1.01\nG1 X95\nG1 X90\n\nM211 R; pop softend status\n\nM106 S0 ; turn off fan , too noisy\n;===== wipe nozzle end ================================\n\n\n;===== wait heatbed ====================\nM1002 gcode_claim_action : 2\nM104 S0\nM190 S[bed_temperature_initial_layer_single];set bed temp\nM109 S140\n\nG1 Z5 F3000\nG29.2 S1\nG1 X10 Y10 F20000\n\n;===== bed leveling ==================================\n;M1002 set_flag g29_before_print_flag=1\nM1002 judge_flag g29_before_print_flag\nM622 J1\n M1002 gcode_claim_action : 1\n G29 A X{first_layer_print_min[0]} Y{first_layer_print_min[1]} I{first_layer_print_size[0]} J{first_layer_print_size[1]}\n M400\n M500 ; save cali data\nM623\n;===== bed leveling end ================================\n\n;===== home after wipe mouth============================\nM1002 judge_flag g29_before_print_flag\nM622 J0\n\n M1002 gcode_claim_action : 13\n G28 T145\n\nM623\n\n;===== home after wipe mouth end =======================\n\nM975 S1 ; turn on vibration supression\n;===== noozle load line ===============================\nM975 S1\nG90\nM83\nT1000\n\nG1 X-13.5 Y0 Z10 F10000\nG1 E1.2 F500\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S{nozzle_temperature[initial_extruder]}\nM400\n\nM412 S1 ; ===turn on filament runout detection===\nM400 P10\n\nG392 S0 ;turn on clog detect\n\nM620.3 W1; === turn on filament tangle detection===\nM400 S2\n\nM1002 set_filament_type:{filament_type[initial_no_support_extruder]}\n;M1002 set_flag extrude_cali_flag=1\nM1002 judge_flag extrude_cali_flag\nM622 J1\n M1002 gcode_claim_action : 8\n \n M400\n M900 K0.0 L1000.0 M1.0\n G90\n M83\n G0 X68 Y-4 F30000\n G0 Z0.2 F18000 ;Move to start position\n M400\n G0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\n G0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\n G0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\n G0 Y0 Z0 F20000\n M400\n \n G1 X-13.5 Y0 Z10 F10000\n M400\n \n G1 E10 F{outer_wall_volumetric_speed/2.4*60}\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\n M1002 judge_last_extrude_cali_success\n M622 J0\n M983 F{outer_wall_volumetric_speed/2.4} A0.3 H[nozzle_diameter]; cali dynamic extrusion compensation\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n M400\n M106 P1 S0\n M623\n \n G1 X-13.5 F3000\n M400\n M984 A0.1 E1 S1 F{outer_wall_volumetric_speed/2.4}\n M106 P1 S178\n M400 S7\n G1 X0 F18000\n G1 X-13.5 F3000\n G1 X0 F18000 ;wipe and shake\n G1 X-13.5 F3000\n G1 X0 F12000 ;wipe and shake\n G1 X-13.5 F3000\n M400\n M106 P1 S0\n\nM623 ; end of \"draw extrinsic para cali paint\"\n\n;===== extrude cali test ===============================\nM104 S{nozzle_temperature_initial_layer[initial_extruder]}\nG90\nM83\nG0 X68 Y-2.5 F30000\nG0 Z0.2 F18000 ;Move to start position\nG0 X88 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X93 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X98 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X103 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X108 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X113 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X115 Z0 F20000\nG0 Z5\nM400\n\n;========turn off light and wait extrude temperature =============\nM1002 gcode_claim_action : 0\n\nM400 ; wait all motion done before implement the emprical L parameters\n\n;===== for Textured PEI Plate , lower the nozzle as the nozzle was touching topmost of the texture when homing ==\n;curr_bed_type={curr_bed_type}\n{if curr_bed_type==\"Textured PEI Plate\"}\nG29.1 Z{-0.02} ; for Textured PEI Plate\n{endif}\n\nM960 S1 P0 ; turn off laser\nM960 S2 P0 ; turn off laser\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off big fan\nM106 P3 S0 ; turn off chamber fan\n\nM975 S1 ; turn on mech mode supression\nG90\nM83\nT1000\n\nM211 X0 Y0 Z0 ;turn off soft endstop\nM1007 S1\n", + "machine_end_gcode": ";===== date: 20231229 =====================\n;turn off nozzle clog detect\nG392 S0\n\nM400 ; wait for buffer to clear\nG92 E0 ; zero the extruder\nG1 E-0.8 F1800 ; retract\nG1 Z{max_layer_z + 0.5} F900 ; lower z a little\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\n{if !spiral_mode && print_sequence != \"by object\"}\nM1002 judge_flag timelapse_record_flag\nM622 J1\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM400 P100\nM971 S11 C11 O0\nM991 S0 P-1 ;end timelapse at safe pos\nM623\n{endif}\n\nM140 S0 ; turn off bed\nM106 S0 ; turn off fan\nM106 P2 S0 ; turn off remote part cooling fan\nM106 P3 S0 ; turn off chamber cooling fan\n\n;G1 X27 F15000 ; wipe\n\n; pull back filament to AMS\nM620 S255\nG1 X181 F12000\nT255\nG1 X0 F18000\nG1 X-13.0 F3000\nG1 X0 F18000 ; wipe\nM621 S255\n\nM104 S0 ; turn off hotend\n\nM400 ; wait all motion done\nM17 S\nM17 Z0.4 ; lower z motor current to reduce impact if there is something in the bottom\n{if (max_layer_z + 100.0) < 180}\n G1 Z{max_layer_z + 100.0} F600\n G1 Z{max_layer_z +98.0}\n{else}\n G1 Z180 F600\n G1 Z180\n{endif}\nM400 P100\nM17 R ; restore z current\n\nG90\nG1 X-13 Y180 F3600\n\nG91\nG1 Z-1 F600\nG90\nM83\n\nM220 S100 ; Reset feedrate magnitude\nM201.2 K1.0 ; Reset acc magnitude\nM73.2 R1.0 ;Reset left time magnitude\nM1002 set_gcode_claim_speed_level : 0\n\n;=====printer finish sound=========\nM17\nM400 S1\nM1006 S1\nM1006 A0 B20 L100 C37 D20 M100 E42 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C46 D10 M100 E46 F10 N100\nM1006 A44 B20 L100 C39 D20 M100 E48 F20 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C44 D10 M100 E44 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A0 B10 L100 C39 D10 M100 E39 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B10 L100 C0 D10 M100 E48 F10 N100\nM1006 A0 B10 L100 C0 D10 M100 E0 F10 N100\nM1006 A44 B20 L100 C41 D20 M100 E49 F20 N100\nM1006 A0 B20 L100 C0 D20 M100 E0 F20 N100\nM1006 A0 B20 L100 C37 D20 M100 E37 F20 N100\nM1006 W\n;=====printer finish sound=========\nM400 S1\nM18 X Y Z\n", "layer_change_gcode": "; layer num/total_layer_count: {layer_num+1}/[total_layer_count]\n; update layer progress\nM73 L{layer_num+1}\nM991 S0 P{layer_num} ;notify layer change\n", - "time_lapse_gcode": ";===================== date: 20231201 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nG1 Y178\nM623\n\nM622.1 S1\nM1002 judge_flag g39_detection_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X-6 Y170 F20000\n G39 S1 X-6 Y170\n G0 Z2 F4000\n G0 X90 Y90 F30000\n {endif}\n\n\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\nM623\n{endif}\n\n", - "change_filament_gcode": ";===== machine: A1 mini =========================\n;===== date: 20231201 =======================\nG392 S0\nM1007 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X180 F18000\n;{if toolchange_count == 2}\n; get travel path for change filament\n;M620.1 X[travel_point_1_x] Y[travel_point_1_y] F21000 P0\n;M620.1 X[travel_point_2_x] Y[travel_point_2_y] F21000 P1\n;M620.1 X[travel_point_3_x] Y[travel_point_3_y] F21000 P2\n;{endif}\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\n\nG1 Y90 F9000\n\n{if next_extruder < 255}\nM400\n\nG92 E0\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E5 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\nG392 S0\nM1007 S1\n\n" + "time_lapse_gcode": ";===================== date: 202312028 =====================\n{if !spiral_mode && print_sequence != \"by object\"}\n; don't support timelapse gcode in spiral_mode and by object sequence for I3 structure printer\nM622.1 S1 ; for prev firware, default turned on\nM1002 judge_flag timelapse_record_flag\nM622 J1\nG92 E0\nG17\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Z{max_layer_z + 0.4}\nG1 X0 Y{first_layer_center_no_wipe_tower[1]} F18000 ; move to safe pos\nG1 X-13.0 F3000 ; move to safe pos\nM400 P300\nM971 S11 C11 O0\nG92 E0\nG1 X0 F18000\nM623\n\nM622.1 S1\nM1002 judge_flag g39_detection_flag\nM622 J1\n ; enable nozzle clog detect at 3rd layer\n {if layer_num == 2}\n M400\n G90\n M83\n M204 S5000\n G0 Z2 F4000\n G0 X-6 Y170 F20000\n G39 S1 X-6 Y170\n G0 Z2 F4000\n G0 X90 Y90 F30000\n {endif}\n\n\n {if !in_head_wrap_detect_zone}\n M622.1 S0\n M1002 judge_flag g39_mass_exceed_flag\n M622 J1\n {if layer_num > 2}\n G392 S0\n M400\n G90\n M83\n M204 S5000\n G0 Z{max_layer_z + 0.4} F4000\n G39.3 S1\n G0 Z{max_layer_z + 0.4} F4000\n G392 S0\n {endif}\n M623\n {endif}\nM623\n{endif}\n", + "change_filament_gcode": ";===== machine: A1 mini =========================\n;===== date: 20231225 =======================\nG392 S0\nM1007 S0\nM620 S[next_extruder]A\nM204 S9000\n{if toolchange_count > 1}\nG17\nG2 Z{max_layer_z + 0.4} I0.86 J0.86 P1 F10000 ; spiral lift a little from second lift\n{endif}\nG1 Z{max_layer_z + 3.0} F1200\n\nM400\nM106 P1 S0\nM106 P2 S0\n{if old_filament_temp > 142 && next_extruder < 255}\nM104 S[old_filament_temp]\n{endif}\n\nG1 X180 F18000\nM620.1 E F[old_filament_e_feedrate] T{nozzle_temperature_range_high[previous_extruder]}\nM620.10 A0 F[old_filament_e_feedrate]\nT[next_extruder]\nM620.1 E F[new_filament_e_feedrate] T{nozzle_temperature_range_high[next_extruder]}\nM620.10 A1 F[new_filament_e_feedrate] L[flush_length] H[nozzle_diameter] T[nozzle_temperature_range_high]\n\nG1 Y90 F9000\n\n{if next_extruder < 255}\nM400\n\nG92 E0\nM628 S0\n\n{if flush_length_1 > 1}\n; FLUSH_START\n; always use highest temperature to flush\nM400\nM1002 set_filament_type:UNKNOWN\nM109 S[nozzle_temperature_range_high]\nM106 P1 S60\n{if flush_length_1 > 23.7}\nG1 E23.7 F{old_filament_e_feedrate} ; do not need pulsatile flushing for start part\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{old_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\nG1 E{(flush_length_1 - 23.7) * 0.02} F50\nG1 E{(flush_length_1 - 23.7) * 0.23} F{new_filament_e_feedrate}\n{else}\nG1 E{flush_length_1} F{old_filament_e_feedrate}\n{endif}\n; FLUSH_END\nG1 E-[old_retract_length_toolchange] F1800\nG1 E[old_retract_length_toolchange] F300\nM400\nM1002 set_filament_type:{filament_type[next_extruder]}\n{endif}\n\n{if flush_length_1 > 45 && flush_length_2 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_2 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\nG1 E{flush_length_2 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_2 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_2 > 45 && flush_length_3 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_3 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\nG1 E{flush_length_3 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_3 * 0.02} F50\n; FLUSH_END\nG1 E-[new_retract_length_toolchange] F1800\nG1 E[new_retract_length_toolchange] F300\n{endif}\n\n{if flush_length_3 > 45 && flush_length_4 > 1}\n; WIPE\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nM400\nM106 P1 S0\n{endif}\n\n{if flush_length_4 > 1}\nM106 P1 S60\n; FLUSH_START\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\nG1 E{flush_length_4 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_4 * 0.02} F50\n; FLUSH_END\n{endif}\n\nM629\n\nM400\nM106 P1 S60\nM109 S[new_filament_temp]\nG1 E5 F{new_filament_e_feedrate} ;Compensate for filament spillage during waiting temperature\nM400\nG92 E0\nG1 E-[new_retract_length_toolchange] F1800\nM400\nM106 P1 S178\nM400 S3\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nG1 X-13.5 F3000\nG1 X-3.5 F18000\nM400\nG1 Z{max_layer_z + 3.0} F3000\nM106 P1 S0\n{if layer_z <= (initial_layer_print_height + 0.001)}\nM204 S[initial_layer_acceleration]\n{else}\nM204 S[default_acceleration]\n{endif}\n{else}\nG1 X[x_after_toolchange] Y[y_after_toolchange] Z[z_after_toolchange] F12000\n{endif}\nM621 S[next_extruder]A\nG392 S0\nM1007 S1\n" } \ No newline at end of file diff --git a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json index fc0d7a5be5f..31896bebf5d 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1 mini.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1 mini.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-A1M.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N1", diff --git a/resources/profiles/BBL/machine/Bambu Lab A1.json b/resources/profiles/BBL/machine/Bambu Lab A1.json index 4c4f3b0c0a8..bd63f6ca8e2 100644 --- a/resources/profiles/BBL/machine/Bambu Lab A1.json +++ b/resources/profiles/BBL/machine/Bambu Lab A1.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "N2S", diff --git a/resources/profiles/BBL/machine/Bambu Lab P1P.json b/resources/profiles/BBL/machine/Bambu Lab P1P.json index 222634a7c3a..41036ba641c 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1P.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1P.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C11", diff --git a/resources/profiles/BBL/machine/Bambu Lab P1S.json b/resources/profiles/BBL/machine/Bambu Lab P1S.json index ea426acd142..8a9bb02cf23 100644 --- a/resources/profiles/BBL/machine/Bambu Lab P1S.json +++ b/resources/profiles/BBL/machine/Bambu Lab P1S.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C12", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json index 2239310b94d..22c7cf476d7 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 0.4 nozzle.json @@ -10,7 +10,7 @@ ], "printer_model": "Bambu Lab X1", "printer_variant": "0.4", - "auxiliary_fan": "1", + "auxiliary_fan": "0", "bed_exclude_area": [ "0x0", "18x0", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json index f7b35d35918..8407b6e2702 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1 Carbon.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Cool Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P001", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1.json b/resources/profiles/BBL/machine/Bambu Lab X1.json index b71f60dc3f5..aca4485aee6 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Cool Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "BL-P002", diff --git a/resources/profiles/BBL/machine/Bambu Lab X1E.json b/resources/profiles/BBL/machine/Bambu Lab X1E.json index e5cbb8f47c0..8687b5137f5 100644 --- a/resources/profiles/BBL/machine/Bambu Lab X1E.json +++ b/resources/profiles/BBL/machine/Bambu Lab X1E.json @@ -4,6 +4,7 @@ "nozzle_diameter": "0.4;0.2;0.6;0.8", "bed_model": "bbl-3dp-X1.stl", "bed_texture": "bbl-3dp-logo.svg", + "default_bed_type": "Textured PEI Plate", "family": "BBL-3DP", "machine_tech": "FFF", "model_id": "C13", diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json index ea11af41764..0b5df089733 100644 --- a/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP084", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json index f75adbb2e6d..deb52983a44 100644 --- a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP063", "instantiation": "true", "default_acceleration": "5000", + "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2500", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json new file mode 100644 index 00000000000..000a6d08d61 --- /dev/null +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.06mm High Quality @BBL A1 0.2 nozzle", + "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP118", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json new file mode 100644 index 00000000000..0ce29963472 --- /dev/null +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "name": "0.06mm High Quality @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP117", + "instantiation": "true", + "default_acceleration": "3000", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json new file mode 100644 index 00000000000..66e56802f27 --- /dev/null +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.06mm High Quality @BBL P1P 0.2 nozzle", + "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP116", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json new file mode 100644 index 00000000000..502c4cdaefd --- /dev/null +++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.06mm High Quality @BBL X1C 0.2 nozzle", + "inherits": "fdm_process_bbl_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP115", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json index 7a9b9bf315a..06a7a9eecbd 100644 --- a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP024", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json index f04518bea0d..8e7e8cab90c 100644 --- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json +++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP076", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json new file mode 100644 index 00000000000..2cbd3c2c9d5 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL A1 0.2 nozzle", + "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP119", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json new file mode 100644 index 00000000000..15c848b8b01 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL A1", + "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP102", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "gap_infill_speed": "210", + "inner_wall_speed": "120", + "internal_solid_infill_speed": "150", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "150", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json new file mode 100644 index 00000000000..6865d2fed06 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json @@ -0,0 +1,18 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP120", + "instantiation": "true", + "default_acceleration": "3000", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json new file mode 100644 index 00000000000..069a975b0dd --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL A1M", + "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP101", + "instantiation": "true", + "default_acceleration": "3000", + "elefant_foot_compensation": "0", + "gap_infill_speed": "210", + "inner_wall_speed": "120", + "internal_solid_infill_speed": "150", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "150", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json new file mode 100644 index 00000000000..c7d6188f2ee --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL P1P 0.2 nozzle", + "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP121", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json new file mode 100644 index 00000000000..454b86baf45 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json @@ -0,0 +1,21 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL P1P", + "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP100", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "gap_infill_speed": "210", + "inner_wall_speed": "120", + "internal_solid_infill_speed": "150", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "150", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json new file mode 100644 index 00000000000..aeb1c1765e4 --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL X1C 0.2 nozzle", + "inherits": "fdm_process_bbl_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP122", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json new file mode 100644 index 00000000000..777e9f4e44c --- /dev/null +++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.08mm High Quality @BBL X1C", + "inherits": "fdm_process_bbl_0.08", + "from": "system", + "setting_id": "GP099", + "instantiation": "true", + "default_acceleration": "4000", + "gap_infill_speed": "210", + "inner_wall_speed": "120", + "internal_solid_infill_speed": "150", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "150", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json index 3f330ad07c6..ad2143b2c2e 100644 --- a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP085", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json index 5f0b6f6484a..b0ccea00294 100644 --- a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP064", "instantiation": "true", "default_acceleration": "5000", + "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2500", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json index d584de99c76..7c8e7bbbefb 100644 --- a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP025", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json new file mode 100644 index 00000000000..c848de06cdd --- /dev/null +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.10mm High Quality @BBL A1 0.2 nozzle", + "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP114", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json new file mode 100644 index 00000000000..5eb21ef675e --- /dev/null +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.10mm High Quality @BBL A1M 0.2 nozzle", + "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP113", + "instantiation": "true", + "default_acceleration": "3000", + "elefant_foot_compensation": "0", + "initial_layer_infill_speed": "28", + "initial_layer_speed": "16", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json new file mode 100644 index 00000000000..8167ee4df02 --- /dev/null +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json @@ -0,0 +1,16 @@ +{ + "type": "process", + "name": "0.10mm High Quality @BBL P1P 0.2 nozzle", + "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP112", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab P1P 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json new file mode 100644 index 00000000000..af661fd789a --- /dev/null +++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json @@ -0,0 +1,19 @@ +{ + "type": "process", + "name": "0.10mm High Quality @BBL X1C 0.2 nozzle", + "inherits": "fdm_process_bbl_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP111", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.15", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.2 nozzle", + "Bambu Lab X1 0.2 nozzle", + "Bambu Lab P1S 0.2 nozzle", + "Bambu Lab X1E 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json index 2ba86c81706..4b2576ef0b7 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP083", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json index 1c161ecd387..972961766e4 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL A1M 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP039", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json index 5fff3ebd879..9b04506d033 100644 --- a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP007", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json index 51d5be064ad..3a711c372e2 100644 --- a/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP086", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json index 700cd50c0db..faef462ee45 100644 --- a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP065", "instantiation": "true", "default_acceleration": "5000", + "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2500", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json b/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json index 224b7755ba6..4bf79151e28 100644 --- a/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json +++ b/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP077", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json new file mode 100644 index 00000000000..131b39e8b22 --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.12mm High Quality @BBL A1", + "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP106", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "gap_infill_speed": "230", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "180", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "180", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json new file mode 100644 index 00000000000..83058499493 --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.12mm High Quality @BBL A1M", + "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP105", + "instantiation": "true", + "default_acceleration": "3000", + "elefant_foot_compensation": "0", + "gap_infill_speed": "230", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "180", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "180", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json new file mode 100644 index 00000000000..da83aa8137d --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "0.12mm High Quality @BBL P1P", + "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP104", + "instantiation": "true", + "default_acceleration": "4000", + "gap_infill_speed": "230", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "180", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "180", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json new file mode 100644 index 00000000000..df9625b60b2 --- /dev/null +++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.12mm High Quality @BBL X1C", + "inherits": "fdm_process_bbl_0.12", + "from": "system", + "setting_id": "GP103", + "instantiation": "true", + "default_acceleration": "4000", + "gap_infill_speed": "230", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "180", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "180", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json index d36cce20269..5d3d9b8d63c 100644 --- a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP026", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json index f8d359d5732..342f481afe0 100644 --- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP087", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "initial_layer_infill_speed": "28", "initial_layer_speed": "16", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json index d5ad5bd49ff..568f51d502e 100644 --- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP066", "instantiation": "true", "default_acceleration": "5000", + "elefant_foot_compensation": "0.15", "outer_wall_acceleration": "2500", "compatible_printers": [ "Bambu Lab P1P 0.2 nozzle" diff --git a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json index d486de8697e..227940298d8 100644 --- a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json +++ b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP027", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.2 nozzle", "Bambu Lab X1 0.2 nozzle", diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json new file mode 100644 index 00000000000..1f246929f86 --- /dev/null +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.16mm High Quality @BBL A1", + "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP110", + "instantiation": "true", + "default_acceleration": "4000", + "elefant_foot_compensation": "0.075", + "gap_infill_speed": "250", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "200", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json new file mode 100644 index 00000000000..58ac77c4c5f --- /dev/null +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json @@ -0,0 +1,22 @@ +{ + "type": "process", + "name": "0.16mm High Quality @BBL A1M", + "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP109", + "instantiation": "true", + "default_acceleration": "3000", + "elefant_foot_compensation": "0", + "gap_infill_speed": "250", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "200", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "travel_speed": "700", + "compatible_printers": [ + "Bambu Lab A1 mini 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json new file mode 100644 index 00000000000..d36e464f865 --- /dev/null +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json @@ -0,0 +1,20 @@ +{ + "type": "process", + "name": "0.16mm High Quality @BBL P1P", + "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP108", + "instantiation": "true", + "default_acceleration": "4000", + "gap_infill_speed": "250", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "200", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab P1P 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json new file mode 100644 index 00000000000..32295f8e824 --- /dev/null +++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json @@ -0,0 +1,23 @@ +{ + "type": "process", + "name": "0.16mm High Quality @BBL X1C", + "inherits": "fdm_process_bbl_0.16", + "from": "system", + "setting_id": "GP107", + "instantiation": "true", + "default_acceleration": "4000", + "gap_infill_speed": "250", + "inner_wall_speed": "150", + "internal_solid_infill_speed": "200", + "outer_wall_acceleration": "2000", + "outer_wall_speed": "60", + "sparse_infill_pattern": "gyroid", + "sparse_infill_speed": "200", + "top_surface_speed": "150", + "compatible_printers": [ + "Bambu Lab X1 Carbon 0.4 nozzle", + "Bambu Lab X1 0.4 nozzle", + "Bambu Lab P1S 0.4 nozzle", + "Bambu Lab X1E 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json index 29cc2a8d309..1ec6906d6d8 100644 --- a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json +++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP078", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json index 391a7d4069b..447c7994aab 100644 --- a/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP088", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json index f4a3ee93ea0..a1635bd9d6d 100644 --- a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP072", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json index ad403a0007a..ae327ef1298 100644 --- a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP028", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json b/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json index 1af91f1917a..e1c6f5ebd70 100644 --- a/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json +++ b/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP079", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json b/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json index 010245a65ca..17c882470bf 100644 --- a/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json +++ b/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP080", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "outer_wall_speed": "60", "sparse_infill_density": "25%", "travel_speed": "700", diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json b/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json index 8c8c7a18c98..abdd58e9b94 100644 --- a/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json +++ b/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP081", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json index 0f61d97ec19..af778978f42 100644 --- a/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP092", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json index 6ee5ebfe85a..5b02a41a121 100644 --- a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP068", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle" ] diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json index bb67e728ca8..f616ccd800a 100644 --- a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP089", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json index 1da10212951..54941c53272 100644 --- a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP069", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json index 7870260cabc..47ee33688aa 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP029", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json index 3a50374efaa..a45123964c3 100644 --- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP032", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json index 0d8b5b700eb..432bb9292b1 100644 --- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json +++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json @@ -6,6 +6,7 @@ "setting_id": "GP082", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.4 nozzle" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json index 478d4fca2cb..b05e7cea1e4 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP096", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json index 960ad6d6c2b..ef0567d6d12 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL A1M 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP038", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json index d6114dface0..f53720838f5 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP011", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json index 31e55d13fdf..c09f04e219d 100644 --- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP010", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab P1S 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json index 694da6a8c51..f4978b869f9 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP097", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "sparse_infill_density": "25%", "travel_speed": "700", "wall_loops": "4", diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json index fc06431da3a..c5bcdf6cd6d 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json @@ -5,8 +5,9 @@ "from": "system", "setting_id": "GP067", "instantiation": "true", - "wall_loops": "4", + "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", + "wall_loops": "4", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json index b1a7451a468..08493a2232f 100644 --- a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json @@ -5,8 +5,9 @@ "from": "system", "setting_id": "GP036", "instantiation": "true", - "wall_loops": "4", + "elefant_foot_compensation": "0.15", "sparse_infill_density": "25%", + "wall_loops": "4", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json index 90283885e04..fbeab32f629 100644 --- a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP093", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json index 8dd6c892b80..54463e5b3a2 100644 --- a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP075", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle" ] diff --git a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json index e6cd89b08b1..0a61d6aaa09 100644 --- a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP033", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json index 5a105aba64e..3448a0f1bba 100644 --- a/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP090", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json index d9fd1794661..b7a618da197 100644 --- a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP070", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json index 9afac00ad18..24acdebf3b0 100644 --- a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP030", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json index 41f09b4e040..e642efe3f40 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP098", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json index 9b23f80d098..39300abc52b 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL A1M 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP037", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 mini 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json index e9aa8d1836a..649f3e803f5 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP012", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 0.8 nozzle" ] diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json index b6d0c079174..ed00b1679fa 100644 --- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP009", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json index 2c48240ebf2..b0eda75687d 100644 --- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP091", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.6 nozzle" diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json index 0ee88c27874..9305139f2d8 100644 --- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP073", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.6 nozzle" ] diff --git a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json index a6951dd6bb4..38b90393da2 100644 --- a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json +++ b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP031", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.6 nozzle", "Bambu Lab X1 0.6 nozzle", diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json index 7e0b5893605..a03f301b783 100644 --- a/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP094", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json index 3b9d26f9505..0299ac8fece 100644 --- a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP074", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle" ] diff --git a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json index ffa6bc5a377..40756960883 100644 --- a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json @@ -5,10 +5,11 @@ "from": "system", "setting_id": "GP034", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", "Bambu Lab P1S 0.8 nozzle", "Bambu Lab X1E 0.8 nozzle" ] -} +} \ No newline at end of file diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json index befd67cb91c..8b1312dfb9c 100644 --- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json @@ -6,6 +6,7 @@ "setting_id": "GP095", "instantiation": "true", "default_acceleration": "6000", + "elefant_foot_compensation": "0.075", "travel_speed": "700", "compatible_printers": [ "Bambu Lab A1 0.8 nozzle" diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json index 3dca29d8ba3..ca90e061ead 100644 --- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP071", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab P1P 0.8 nozzle" ] diff --git a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json index c5c002865de..48cb2aac2e3 100644 --- a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json +++ b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json @@ -5,6 +5,7 @@ "from": "system", "setting_id": "GP035", "instantiation": "true", + "elefant_foot_compensation": "0.15", "compatible_printers": [ "Bambu Lab X1 Carbon 0.8 nozzle", "Bambu Lab X1 0.8 nozzle", diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp index 1bebecfb96c..a39c35cfa2a 100644 --- a/src/OrcaSlicer.cpp +++ b/src/OrcaSlicer.cpp @@ -1037,7 +1037,7 @@ int CLI::run(int argc, char **argv) std::vector current_filaments_name, current_filaments_system_name, current_inherits_group; DynamicPrintConfig load_process_config, load_machine_config; bool new_process_config_is_system = true, new_printer_config_is_system = true; - std::string pipe_name; + std::string pipe_name, makerlab_name, makerlab_version; // Read input file(s) if any. BOOST_LOG_TRIVIAL(info) << "Will start to read model file now, file count :" << m_input_files.size() << "\n"; @@ -1090,6 +1090,14 @@ int CLI::run(int argc, char **argv) } } + ConfigOptionString* makerlab_name_option = m_config.option("makerlab_name"); + if (makerlab_name_option) + makerlab_name = makerlab_name_option->value; + + ConfigOptionString* makerlab_version_option = m_config.option("makerlab_version"); + if (makerlab_version_option) + makerlab_version = makerlab_version_option->value; + //skip model object map construct if (need_skip) { BOOST_LOG_TRIVIAL(info) << boost::format("need to skip objects, size %1%:")%skip_objects.size(); @@ -1320,7 +1328,7 @@ int CLI::run(int argc, char **argv) if (loaded_filament_ids.size() > input_index) { if (loaded_filament_ids[input_index] > 0) { if (loaded_filament_ids[input_index] > load_filaments.size()) { - BOOST_LOG_TRIVIAL(error) << boost::format("invalid filament id %1% at index %2%, max %3%")%loaded_filament_ids[input_index] % (input_index + 1) %load_filaments.size(); + BOOST_LOG_TRIVIAL(error) << boost::format("invalid filament_id %1% at index %2%, max %3%")%loaded_filament_ids[input_index] % (input_index + 1) %load_filaments.size(); record_exit_reson(outfile_dir, CLI_INVALID_PARAMS, 0, cli_errors[CLI_INVALID_PARAMS], sliced_info); flush_and_exit(CLI_INVALID_PARAMS); } @@ -5216,6 +5224,13 @@ int CLI::run(int argc, char **argv) #endif BOOST_LOG_TRIVIAL(info) << "will export 3mf to " << export_3mf_file << std::endl; + if (!makerlab_name.empty()) { + Model &model = m_models[0]; + + model.mk_name = makerlab_name; + model.mk_version = makerlab_version; + BOOST_LOG_TRIVIAL(info) << boost::format("mk_name %1%, mk_version %2%")%makerlab_name %makerlab_version; + } if (! this->export_project(&m_models[0], export_3mf_file, plate_data_list, project_presets, thumbnails, top_thumbnails, pick_thumbnails, calibration_thumbnails, plate_bboxes, &m_print_config, minimum_save, plate_to_slice - 1)) { diff --git a/src/libslic3r/ArcFitter.cpp b/src/libslic3r/ArcFitter.cpp index bfc95d0b74e..cdfd708b10c 100644 --- a/src/libslic3r/ArcFitter.cpp +++ b/src/libslic3r/ArcFitter.cpp @@ -1,4 +1,5 @@ #include "ArcFitter.hpp" +#include "Polyline.hpp" #include #include diff --git a/src/libslic3r/Brim.cpp b/src/libslic3r/Brim.cpp index fee56ed56b5..940e5e1ee69 100644 --- a/src/libslic3r/Brim.cpp +++ b/src/libslic3r/Brim.cpp @@ -18,6 +18,8 @@ #include #include +#include + #ifndef NDEBUG // #define BRIM_DEBUG_TO_SVG #endif diff --git a/src/libslic3r/BuildVolume.cpp b/src/libslic3r/BuildVolume.cpp index f6547e2b3dc..010a330e269 100644 --- a/src/libslic3r/BuildVolume.cpp +++ b/src/libslic3r/BuildVolume.cpp @@ -1,5 +1,6 @@ #include "BuildVolume.hpp" #include "ClipperUtils.hpp" +#include "TriangleMesh.hpp" #include "Geometry/ConvexHull.hpp" #include "GCode/GCodeProcessor.hpp" #include "Point.hpp" diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index c303cef5ab1..e37faf88541 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -17,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/src/libslic3r/FaceDetector.cpp b/src/libslic3r/FaceDetector.cpp index 33423ae7e08..5eb5ca762ce 100644 --- a/src/libslic3r/FaceDetector.cpp +++ b/src/libslic3r/FaceDetector.cpp @@ -2,6 +2,7 @@ #include "TriangleMesh.hpp" #include "SLA/IndexedMesh.hpp" #include "Model.hpp" +#include namespace Slic3r { static const double BBOX_OFFSET = 2.0; diff --git a/src/libslic3r/Format/STEP.cpp b/src/libslic3r/Format/STEP.cpp index 8155d98d4d9..5ee66be24dc 100644 --- a/src/libslic3r/Format/STEP.cpp +++ b/src/libslic3r/Format/STEP.cpp @@ -5,6 +5,12 @@ #include "STEP.hpp" #include +#include +#include +#include + +#include +#include #ifdef _WIN32 #define DIR_SEPARATOR '\\' diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp index 84ec7a4faed..eebfd935cbe 100644 --- a/src/libslic3r/Format/bbs_3mf.cpp +++ b/src/libslic3r/Format/bbs_3mf.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,8 @@ namespace pt = boost::property_tree; +#include +#include #include #include @@ -136,6 +139,9 @@ const std::string BBL_REGION_TAG = "Region"; const std::string BBL_MODIFICATION_TAG = "ModificationDate"; const std::string BBL_CREATION_DATE_TAG = "CreationDate"; const std::string BBL_APPLICATION_TAG = "Application"; +const std::string BBL_MAKERLAB_TAG = "MakerLab"; +const std::string BBL_MAKERLAB_VERSION_TAG = "MakerLabVersion"; + const std::string BBL_PROFILE_TITLE_TAG = "ProfileTitle"; const std::string BBL_PROFILE_COVER_TAG = "ProfileCover"; @@ -6313,7 +6319,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) std::stringstream stream; reset_stream(stream); stream << "\n"; - stream << "<" << MODEL_TAG << " unit=\"millimeter\" xml:lang=\"en-US\" xmlns=\"http://schemas.microsoft.com/3dmanufacturing/core/2015/02\" xmlns:slic3rpe=\"http://schemas.slic3r.org/3mf/2017/06\""; + stream << "<" << MODEL_TAG << " unit=\"millimeter\" xml:lang=\"en-US\" xmlns=\"http://schemas.microsoft.com/3dmanufacturing/core/2015/02\" xmlns:BambuStudio=\"http://schemas.bambulab.com/package/2021\""; if (m_production_ext) stream << " xmlns:p=\"http://schemas.microsoft.com/3dmanufacturing/production/2015/06\" requiredextensions=\"p\""; stream << ">\n"; @@ -6383,6 +6389,15 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result) } metadata_item_map[BBS_3MF_VERSION] = std::to_string(VERSION_BBS_3MF); + if (!model.mk_name.empty()) { + metadata_item_map[BBL_MAKERLAB_TAG] = xml_escape(model.mk_name); + BOOST_LOG_TRIVIAL(info) << "saved mk_name " << model.mk_name; + } + if (!model.mk_version.empty()) { + metadata_item_map[BBL_MAKERLAB_VERSION_TAG] = xml_escape(model.mk_version); + BOOST_LOG_TRIVIAL(info) << "saved mk_version " << model.mk_version; + } + // store metadata info for (auto item : metadata_item_map) { BOOST_LOG_TRIVIAL(info) << "bbs_3mf: save key= " << item.first << ", value = " << item.second; diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 626d3d6d720..05203f1cdf8 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -581,6 +581,8 @@ static std::vector get_path_of_change_filament(const Print& print) config.set_key_value("travel_point_3_x", new ConfigOptionFloat(float(travel_point_3.x()))); config.set_key_value("travel_point_3_y", new ConfigOptionFloat(float(travel_point_3.y()))); + config.set_key_value("flush_length", new ConfigOptionFloat(purge_length)); + int flush_count = std::min(g_max_flush_count, (int) std::round(purge_volume / g_purge_volume_one_time)); float flush_unit = purge_length / flush_count; int flush_idx = 0; @@ -5930,6 +5932,8 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z, bool b dyn_config.set_key_value("travel_point_3_x", new ConfigOptionFloat(float(travel_point_3.x()))); dyn_config.set_key_value("travel_point_3_y", new ConfigOptionFloat(float(travel_point_3.y()))); + dyn_config.set_key_value("flush_length", new ConfigOptionFloat(wipe_length)); + int flush_count = std::min(g_max_flush_count, (int)std::round(wipe_volume / g_purge_volume_one_time)); float flush_unit = wipe_length / flush_count; int flush_idx = 0; diff --git a/src/libslic3r/Layer.hpp b/src/libslic3r/Layer.hpp index 52c48dfcd2b..13ae774ff90 100644 --- a/src/libslic3r/Layer.hpp +++ b/src/libslic3r/Layer.hpp @@ -2,6 +2,7 @@ #define slic3r_Layer_hpp_ #include "libslic3r.h" +#include "BoundingBox.hpp" #include "Flow.hpp" #include "SurfaceCollection.hpp" #include "ExtrusionEntityCollection.hpp" diff --git a/src/libslic3r/MeshBoolean.cpp b/src/libslic3r/MeshBoolean.cpp index 1021fb7658c..f9e66e9ebb4 100644 --- a/src/libslic3r/MeshBoolean.cpp +++ b/src/libslic3r/MeshBoolean.cpp @@ -620,7 +620,7 @@ MCAPI_ATTR void MCAPI_CALL mcDebugOutput(McDebugSource source, } -void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &boolean_opts) +bool do_boolean_single(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &boolean_opts) { // create context McContext context = MC_NULL_HANDLE; @@ -651,7 +651,7 @@ void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &b if (srcMesh.vertexCoordsArray.empty() && (boolean_opts == "UNION" || boolean_opts == "B_NOT_A")) { srcMesh = cutMesh; mcReleaseContext(context); - return; + return true; } err = mcDispatch(context, @@ -669,31 +669,9 @@ void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &b mcReleaseContext(context); if (boolean_opts == "UNION") { merge_mcut_meshes(srcMesh, cutMesh); + return true; } - else { - // when src mesh has multiple connected components, mcut refuses to work. - // But we can force it to work by spliting the src mesh into disconnected components, - // and do booleans seperately, then merge all the results. - indexed_triangle_set all_its; - TriangleMesh tri_src = mcut_to_triangle_mesh(srcMesh); - std::vector src_parts = its_split(tri_src.its); - if (src_parts.size() == 1) - { - //can not split, return error directly - BOOST_LOG_TRIVIAL(error) << boost::format("bool operation %1% failed, also can not split")%boolean_opts; - return; - } - for (size_t i = 0; i < src_parts.size(); i++) - { - auto part = triangle_mesh_to_mcut(src_parts[i]); - do_boolean(*part, cutMesh, boolean_opts); - TriangleMesh tri_part = mcut_to_triangle_mesh(*part); - its_merge(all_its, tri_part.its); - } - srcMesh = *triangle_mesh_to_mcut(all_its); - } - - return; + return false; } // query the number of available connected component @@ -704,8 +682,9 @@ void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &b mcReleaseContext(context); if (numConnComps == 0 && boolean_opts == "UNION") { merge_mcut_meshes(srcMesh, cutMesh); + return true; } - return; + return false; } std::vector connectedComponents(numConnComps, MC_NULL_HANDLE); @@ -772,126 +751,57 @@ void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &b // free connected component data err = mcReleaseConnectedComponents(context, 0, NULL); - // destroy context err = mcReleaseContext(context); srcMesh = outMesh; + + return true; } -/* BBS: Musang King - * mcut for Mesh Boolean which provides C-style syntax API - */ -std::vector make_boolean(const McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &boolean_opts) +void do_boolean(McutMesh& srcMesh, const McutMesh& cutMesh, const std::string& boolean_opts) { - // create context - McContext context = MC_NULL_HANDLE; - McResult err = mcCreateContext(&context, 0); - // add debug callback according to https://cutdigital.github.io/mcut.site/tutorials/debugging/ - mcDebugMessageCallback(context, mcDebugOutput, nullptr); - mcDebugMessageControl( - context, - MC_DEBUG_SOURCE_ALL, - MC_DEBUG_TYPE_ERROR, - MC_DEBUG_SEVERITY_MEDIUM, - true); - // We can either let MCUT compute all possible meshes (including patches etc.), or we can - // constrain the library to compute exactly the boolean op mesh we want. This 'constrained' case - // is done with the following flags. - // NOTE#1: you can extend these flags by bitwise ORing with additional flags (see `McDispatchFlags' in mcut.h) - // NOTE#2: below order of columns MATTERS - const std::map booleanOpts = { - {"A_NOT_B", MC_DISPATCH_FILTER_FRAGMENT_SEALING_INSIDE | MC_DISPATCH_FILTER_FRAGMENT_LOCATION_ABOVE}, - {"B_NOT_A", MC_DISPATCH_FILTER_FRAGMENT_SEALING_OUTSIDE | MC_DISPATCH_FILTER_FRAGMENT_LOCATION_BELOW}, - {"UNION", MC_DISPATCH_FILTER_FRAGMENT_SEALING_OUTSIDE | MC_DISPATCH_FILTER_FRAGMENT_LOCATION_ABOVE}, - {"INTERSECTION", MC_DISPATCH_FILTER_FRAGMENT_SEALING_INSIDE | MC_DISPATCH_FILTER_FRAGMENT_LOCATION_BELOW}, - }; + TriangleMesh tri_src = mcut_to_triangle_mesh(srcMesh); + std::vector src_parts = its_split(tri_src.its); - std::map::const_iterator it = booleanOpts.find(boolean_opts); - McFlags boolOpFlags = it->second; + TriangleMesh tri_cut = mcut_to_triangle_mesh(cutMesh); + std::vector cut_parts = its_split(tri_cut.its); - err = mcDispatch(context, - MC_DISPATCH_VERTEX_ARRAY_DOUBLE | // vertices are in array of doubles - MC_DISPATCH_ENFORCE_GENERAL_POSITION | // perturb if necessary - boolOpFlags, // filter flags which specify the type of output we want - // source mesh - reinterpret_cast(srcMesh.vertexCoordsArray.data()), reinterpret_cast(srcMesh.faceIndicesArray.data()), - srcMesh.faceSizesArray.data(), static_cast(srcMesh.vertexCoordsArray.size() / 3), static_cast(srcMesh.faceSizesArray.size()), - // cut mesh - reinterpret_cast(cutMesh.vertexCoordsArray.data()), cutMesh.faceIndicesArray.data(), cutMesh.faceSizesArray.data(), - static_cast(cutMesh.vertexCoordsArray.size() / 3), static_cast(cutMesh.faceSizesArray.size())); - - // query the number of available connected component - uint32_t numConnComps; - err = mcGetConnectedComponents(context, MC_CONNECTED_COMPONENT_TYPE_FRAGMENT, 0, NULL, &numConnComps); - - std::vector connectedComponents(numConnComps, MC_NULL_HANDLE); - err = mcGetConnectedComponents(context, MC_CONNECTED_COMPONENT_TYPE_FRAGMENT, (uint32_t) connectedComponents.size(), connectedComponents.data(), NULL); - - std::vector outs; - // traversal of all connected components - for (int n = 0; n < numConnComps; ++n) { - // query the data of each connected component from MCUT - McConnectedComponent connComp = connectedComponents[n]; - - // query the vertices - McSize numBytes = 0; - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_VERTEX_DOUBLE, 0, NULL, &numBytes); - uint32_t ccVertexCount = (uint32_t) (numBytes / (sizeof(double) * 3)); - std::vector ccVertices((uint64_t) ccVertexCount * 3u, 0); - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_VERTEX_DOUBLE, numBytes, (void *) ccVertices.data(), NULL); - - // query the faces - numBytes = 0; - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_FACE_TRIANGULATION, 0, NULL, &numBytes); - std::vector ccFaceIndices(numBytes / sizeof(uint32_t), 0); - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_FACE_TRIANGULATION, numBytes, ccFaceIndices.data(), NULL); - std::vector faceSizes(ccFaceIndices.size() / 3, 3); - - const uint32_t ccFaceCount = static_cast(faceSizes.size()); - - // Here we show, how to know when connected components, pertain particular boolean operations. - McPatchLocation patchLocation = (McPatchLocation) 0; - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_PATCH_LOCATION, sizeof(McPatchLocation), &patchLocation, NULL); - - McFragmentLocation fragmentLocation = (McFragmentLocation) 0; - err = mcGetConnectedComponentData(context, connComp, MC_CONNECTED_COMPONENT_DATA_FRAGMENT_LOCATION, sizeof(McFragmentLocation), &fragmentLocation, NULL); + if (src_parts.empty() && boolean_opts == "UNION") { + srcMesh = cutMesh; + return; + } + if(cut_parts.empty()) return; - // rearrange vertices/faces and save into result mesh - std::vector vertices(ccVertexCount); - for (uint32_t i = 0; i < ccVertexCount; ++i) { - vertices[i][0] = (float) ccVertices[(uint64_t) i * 3 + 0]; - vertices[i][1] = (float) ccVertices[(uint64_t) i * 3 + 1]; - vertices[i][2] = (float) ccVertices[(uint64_t) i * 3 + 2]; + // when src mesh has multiple connected components, mcut refuses to work. + // But we can force it to work by spliting the src mesh into disconnected components, + // and do booleans seperately, then merge all the results. + indexed_triangle_set all_its; + if (boolean_opts == "UNION" || boolean_opts == "A_NOT_B") { + for (size_t i = 0; i < src_parts.size(); i++) { + auto src_part = triangle_mesh_to_mcut(src_parts[i]); + for (size_t j = 0; j < cut_parts.size(); j++) { + auto cut_part = triangle_mesh_to_mcut(cut_parts[j]); + bool success = do_boolean_single(*src_part, *cut_part, boolean_opts); + } + TriangleMesh tri_part = mcut_to_triangle_mesh(*src_part); + its_merge(all_its, tri_part.its); } - - // output faces - int faceVertexOffsetBase = 0; - - // for each face in CC - std::vector faces(ccFaceCount); - for (uint32_t f = 0; f < ccFaceCount; ++f) { - bool reverseWindingOrder = (fragmentLocation == MC_FRAGMENT_LOCATION_BELOW) && (patchLocation == MC_PATCH_LOCATION_OUTSIDE); - int faceSize = faceSizes.at(f); - - // for each vertex in face - for (int v = (reverseWindingOrder ? (faceSize - 1) : 0); (reverseWindingOrder ? (v >= 0) : (v < faceSize)); v += (reverseWindingOrder ? -1 : 1)) { - faces[f][v] = ccFaceIndices[(uint64_t) faceVertexOffsetBase + v]; + } + else if (boolean_opts == "INTERSECTION") { + for (size_t i = 0; i < src_parts.size(); i++) { + for (size_t j = 0; j < cut_parts.size(); j++) { + auto src_part = triangle_mesh_to_mcut(src_parts[i]); + auto cut_part = triangle_mesh_to_mcut(cut_parts[j]); + bool success = do_boolean_single(*src_part, *cut_part, boolean_opts); + if (success) { + TriangleMesh tri_part = mcut_to_triangle_mesh(*src_part); + its_merge(all_its, tri_part.its); + } } - faceVertexOffsetBase += faceSize; } - - TriangleMesh out(vertices, faces); - outs.emplace_back(out); } - - // free connected component data - err = mcReleaseConnectedComponents(context, (uint32_t) connectedComponents.size(), connectedComponents.data()); - - // destroy context - err = mcReleaseContext(context); - - return outs; + srcMesh = *triangle_mesh_to_mcut(all_its); } void make_boolean(const TriangleMesh &src_mesh, const TriangleMesh &cut_mesh, std::vector &dst_mesh, const std::string &boolean_opts) diff --git a/src/libslic3r/MeshBoolean.hpp b/src/libslic3r/MeshBoolean.hpp index 520d2f189a9..92592f5f61b 100644 --- a/src/libslic3r/MeshBoolean.hpp +++ b/src/libslic3r/MeshBoolean.hpp @@ -85,9 +85,12 @@ McutMeshPtr triangle_mesh_to_mcut(const indexed_triangle_set &M); TriangleMesh mcut_to_triangle_mesh(const McutMesh &mcutmesh); // do boolean and save result to srcMesh +// return true if sucessful +bool do_boolean_single(McutMesh& srcMesh, const McutMesh& cutMesh, const std::string& boolean_opts); +// do boolean of mesh with multiple volumes and save result to srcMesh +// Both srcMesh and cutMesh may have multiple volumes. void do_boolean(McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &boolean_opts); -std::vector make_boolean(const McutMesh &srcMesh, const McutMesh &cutMesh, const std::string &boolean_opts); // do boolean and convert result to TriangleMesh void make_boolean(const TriangleMesh &src_mesh, const TriangleMesh &cut_mesh, std::vector &dst_mesh, const std::string &boolean_opts); diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index ed3624dce84..5cfc5c79ad0 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -106,6 +106,9 @@ Model& Model::assign_copy(const Model &rhs) this->stl_design_id = rhs.stl_design_id; this->profile_info = rhs.profile_info; + this->mk_name = rhs.mk_name; + this->mk_version = rhs.mk_version; + return *this; } @@ -135,6 +138,8 @@ Model& Model::assign_copy(Model &&rhs) //BBS: add auxiliary path logic // BBS: backup, all in one temp dir this->stl_design_id = rhs.stl_design_id; + this->mk_name = rhs.mk_name; + this->mk_version = rhs.mk_version; this->backup_path = std::move(rhs.backup_path); this->object_backup_id_map = std::move(rhs.object_backup_id_map); this->next_object_backup_id = rhs.next_object_backup_id; @@ -935,6 +940,8 @@ void Model::load_from(Model& model) stl_design_id = model.stl_design_id; model_info = model.model_info; profile_info = model.profile_info; + mk_name = model.mk_name; + mk_version = model.mk_version; model.design_info.reset(); model.model_info.reset(); model.profile_info.reset(); diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index 2b4fa14e4b7..5ef1c938fbd 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -1485,6 +1485,10 @@ class Model final : public ObjectBase std::shared_ptr model_info = nullptr; std::shared_ptr profile_info = nullptr; + //makerlab information + std::string mk_name; + std::string mk_version; + void SetDesigner(std::string designer, std::string designer_user_id) { if (design_info == nullptr) { design_info = std::make_shared(); diff --git a/src/libslic3r/ObjectID.hpp b/src/libslic3r/ObjectID.hpp index b4e0507f414..94fbb6a0abd 100644 --- a/src/libslic3r/ObjectID.hpp +++ b/src/libslic3r/ObjectID.hpp @@ -2,6 +2,7 @@ #define slic3r_ObjectID_hpp_ #include +#include namespace Slic3r { diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 03d77b0e3c2..2652f603ed5 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -440,6 +440,7 @@ void Preset::load_info(const std::string& file) } else if (v.first.compare("base_id") == 0) { this->base_id = v.second.get_value(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " load info from: " << file << " and base_id: " << this->base_id; if (this->base_id.compare("null") == 0) this->base_id.clear(); } @@ -539,6 +540,7 @@ void Preset::save(DynamicPrintConfig* parent_config) } else { this->config.save_to_json(this->file, this->name, from_str, this->version.to_string(), this->custom_defined); } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " save config for: " << this->name << " and filament_id: " << filament_id << " and base_id: " << this->base_id; fs::path idx_file(this->file); idx_file.replace_extension(".info"); @@ -1162,6 +1164,7 @@ void PresetCollection::load_presets( // Find a default preset for the config. The PrintPresetCollection provides different default preset based on the "printer_technology" field. preset.config = default_preset.config; } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " load preset: " << name << " and filament_id: " << preset.filament_id << " and base_id: " << preset.base_id; preset.config.apply(std::move(config)); Preset::normalize(preset.config); // Report configuration fields, which are misplaced into a wrong group. @@ -1284,9 +1287,10 @@ int PresetCollection::get_differed_values_to_update(Preset& preset, std::mapbase_id.empty()) preset->base_id = parent_preset->setting_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << preset->name << " filament_id: " << preset->filament_id << " base_id: " << preset->base_id; preset->save(&(parent_preset->config)); } } @@ -1630,6 +1635,7 @@ bool PresetCollection::load_user_preset(std::string name, std::mapdefault_preset_for(cloud_config); if (inherit_preset) { new_config = inherit_preset->config; + if (cloud_filament_id == "null") { + cloud_filament_id = inherit_preset->filament_id; + } } else { // We support custom root preset now @@ -1688,8 +1697,8 @@ bool PresetCollection::load_user_preset(std::string name, std::mapbase_id = cloud_base_id; iter->filament_id = cloud_filament_id; //presets_loaded.emplace_back(*it->second); - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", update the user preset %1% from cloud, type %2%, setting_id %3%, base_id %4%, sync_info %5% inherits %6%") - % iter->name %Preset::get_type_string(m_type) %iter->setting_id %iter->base_id %iter->sync_info %iter->inherits(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", update the user preset %1% from cloud, type %2%, setting_id %3%, base_id %4%, sync_info %5% inherits %6%, filament_id %7%") + % iter->name %Preset::get_type_string(m_type) %iter->setting_id %iter->base_id %iter->sync_info %iter->inherits() % iter->filament_id; } else { //create a new one @@ -1708,8 +1717,8 @@ bool PresetCollection::load_user_preset(std::string name, std::map PresetCollection::load_external_preset( preset.filament_id = parent->filament_id; } } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << preset.name << " filament_id: " << preset.filament_id << " base_id: " << preset.base_id; if (from_project) { preset.is_project_embedded = true; } @@ -2115,6 +2125,7 @@ bool PresetCollection::clone_presets(std::vector const &presets, auto old_name = this->get_edited_preset().name; for (auto preset : new_presets) { preset.alias.clear(); + preset.base_id.clear(); auto it = this->find_preset_internal(preset.name); assert((it == m_presets.end() || it->name != preset.name) || force_rewritten); if (it == m_presets.end() || it->name != preset.name) { @@ -2130,23 +2141,11 @@ bool PresetCollection::clone_presets(std::vector const &presets, return true; } -bool PresetCollection::clone_presets_for_printer(std::vector const &presets, std::vector &failures, std::string const &printer, bool force_rewritten) -{ - return clone_presets(presets, failures, [printer](Preset &preset, Preset::Type &type) { - std::string prefix = preset.name.substr(0, preset.name.find(" @")); - std::replace(prefix.begin(), prefix.end(), '/', '-'); - preset.name = prefix + " @" + printer; - //preset.alias = ""; - auto *compatible_printers = dynamic_cast(preset.config.option("compatible_printers")); - compatible_printers->values = std::vector{ printer }; - }, force_rewritten); -} - -bool PresetCollection::create_presets_from_template_for_printer(std::vector const & templates, - std::vector & failures, - std::string const & printer, - std::function create_filament_id, - bool force_rewritten) +bool PresetCollection::clone_presets_for_printer(std::vector const & templates, + std::vector & failures, + std::string const & printer, + std::function create_filament_id, + bool force_rewritten) { return clone_presets(templates, failures, [printer, create_filament_id](Preset &preset, Preset::Type &type) { std::string prefix = preset.name.substr(0, preset.name.find(" @")); @@ -2155,8 +2154,10 @@ bool PresetCollection::create_presets_from_template_for_printer(std::vector(preset.config.option("compatible_printers")); compatible_printers->values = std::vector{printer}; preset.is_visible = true; - if (type == Preset::TYPE_FILAMENT) + if (type == Preset::TYPE_FILAMENT) { preset.filament_id = create_filament_id(prefix); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << preset.name << " create filament_id: " << preset.filament_id; + } }, force_rewritten); } @@ -2175,6 +2176,7 @@ bool PresetCollection::clone_presets_for_filament(Preset const *const & pres preset.config.apply_only(dynamic_config, {"filament_vendor", "compatible_printers", "filament_type"},true); preset.filament_id = filament_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << preset.name << " is cloned and filament_id: " << filament_id; } }, force_rewritten); @@ -2253,11 +2255,8 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det // Clear the link to the parent profile. inherits.clear(); BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": save preset %1% , with detach")%new_name; - } else { - // Inherited from a user preset. Just maintain the "inherited" flag, - // meaning it will inherit from either the system preset, or the inherited user preset. - auto base = get_preset_base(curr_preset); - inherits = base ? base->name : ""; + } else if (is_base_preset(preset)) { + inherits = old_name; } preset.is_default = false; preset.is_system = false; @@ -2292,6 +2291,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det parent_preset = this->find_preset(final_inherits, false, true); if (parent_preset && this->get_selected_preset().base_id.empty()) { this->get_selected_preset().base_id = parent_preset->setting_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " base_id: " << parent_preset->setting_id; } } if (parent_preset) @@ -2556,6 +2556,12 @@ void add_correct_opts_to_diff(const std::string &opt_key, t_config_option_keys& const T* opt_init = static_cast(other.option(opt_key)); const T* opt_cur = static_cast(this_c.option(opt_key)); int opt_init_max_id = opt_init->values.size() - 1; + if (opt_init_max_id < 0) { + for (int i = 0; i < int(opt_cur->values.size()); i++) + vec.emplace_back(opt_key + "#" + std::to_string(i)); + return; + } + for (int i = 0; i < int(opt_cur->values.size()); i++) { int init_id = i <= opt_init_max_id ? i : 0; @@ -2857,7 +2863,7 @@ std::string PresetCollection::path_from_name(const std::string &new_name, bool d std::string PresetCollection::path_for_preset(const Preset &preset) const { - return path_from_name(preset.name, get_preset_base(preset) == &preset); + return path_from_name(preset.name, is_base_preset(preset)); } const Preset& PrinterPresetCollection::default_preset_for(const DynamicPrintConfig &config) const diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 15dd3d579c6..ba9af12c3c0 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -457,8 +458,7 @@ class PresetCollection Preset& load_preset(const std::string &path, const std::string &name, DynamicPrintConfig &&config, bool select = true, Semver file_version = Semver(), bool is_custom_defined = false); bool clone_presets(std::vector const &presets, std::vector &failures, std::function modifier, bool force_rewritten = false); - bool clone_presets_for_printer(std::vector const &presets, std::vector &failures, std::string const &printer, bool force_rewritten = false); - bool create_presets_from_template_for_printer( + bool clone_presets_for_printer( std::vector const &templates, std::vector &failures, std::string const &printer, std::function create_filament_id, bool force_rewritten = false); bool clone_presets_for_filament(Preset const *const & preset, std::vector &failures, @@ -673,6 +673,7 @@ class PresetCollection // Without force, the selection is only updated if the index changes. // With force, the changes are reverted if the new index is the same as the old index. bool select_preset_by_name(const std::string &name, bool force); + bool is_base_preset(const Preset &preset) const { return preset.is_system || (preset.is_user() && preset.inherits().empty()); } // Generate a file path from a profile name. Add the ".ini" suffix if it is missing. std::string path_from_name(const std::string &new_name, bool detach = false) const; diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 152e676894a..3f86a568e56 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -611,6 +611,7 @@ PresetsConfigSubstitutions PresetBundle::load_user_presets(AppConfig & std::map::iterator inherits_iter = value_map.find(BBL_JSON_KEY_INHERITS); if ((pass == 1) == (inherits_iter == value_map.end() || inherits_iter->second.empty())) continue; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " start load from cloud: " << name; //get the type first std::map::iterator type_iter = value_map.find(BBL_JSON_KEY_TYPE); if (type_iter == value_map.end()) { @@ -825,6 +826,7 @@ bool PresetBundle::import_json_presets(PresetsConfigSubstitutions & s preset.version = *version; inherit_preset = collection->find_preset(inherits_value, false, true); // pointer maybe wrong after insert, redo find if (inherit_preset) preset.base_id = inherit_preset->setting_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << preset.name << " have filament_id: " << preset.filament_id << " and base_id: " << preset.base_id; Preset::normalize(preset.config); // Report configuration fields, which are misplaced into a wrong group. const Preset &default_preset = collection->default_preset_for(new_config); @@ -1819,6 +1821,7 @@ void PresetBundle::set_num_filaments(unsigned int n, std::string new_color) ConfigOptionStrings* filament_color = project_config.option("filament_colour"); filament_color->resize(n); + ams_multi_color_filment.resize(n); //BBS set new filament color to new_color if (old_filament_count < n) { @@ -1836,15 +1839,18 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns) { std::vector filament_presets; std::vector filament_colors; + ams_multi_color_filment.clear(); for (auto &entry : filament_ams_list) { auto & ams = entry.second; auto filament_id = ams.opt_string("filament_id", 0u); auto filament_color = ams.opt_string("filament_colour", 0u); auto filament_changed = !ams.has("filament_changed") || ams.opt_bool("filament_changed"); + auto filament_multi_color = ams.opt("filament_multi_colors")->values; if (filament_id.empty()) continue; if (!filament_changed && this->filament_presets.size() > filament_presets.size()) { filament_presets.push_back(this->filament_presets[filament_presets.size()]); filament_colors.push_back(filament_color); + ams_multi_color_filment.push_back(filament_multi_color); continue; } auto iter = std::find_if(filaments.begin(), filaments.end(), [this, &filament_id](auto &f) { @@ -1859,17 +1865,27 @@ unsigned int PresetBundle::sync_ams_list(unsigned int &unknowns) && boost::algorithm::starts_with(f.name, filament_type); }); } - if (iter == filaments.end()) + if (iter == filaments.end()) { + // Prefer old selection + if (filament_presets.size() < this->filament_presets.size()) { + filament_presets.push_back(this->filament_presets[filament_presets.size()]); + filament_colors.push_back(filament_color); + ams_multi_color_filment.push_back(filament_multi_color); + ++unknowns; + continue; + } iter = std::find_if(filaments.begin(), filaments.end(), [&filament_type](auto &f) { return f.is_compatible && f.is_system; }); - if (iter == filaments.end()) - continue; + if (iter == filaments.end()) + continue; + } ++unknowns; filament_id = iter->filament_id; } filament_presets.push_back(iter->name); filament_colors.push_back(filament_color); + ams_multi_color_filment.push_back(filament_multi_color); } if (filament_presets.empty()) return 0; @@ -3453,6 +3469,7 @@ std::pair PresetBundle::load_vendor_configs_ loaded.version = current_vendor_profile->config_version; loaded.setting_id = setting_id; loaded.filament_id = filament_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << loaded.name << " load filament_id: " << filament_id; if (presets_collection->type() == Preset::TYPE_FILAMENT) { if (filament_id.empty() && "Template" != vendor_name) { BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": can not find filament_id for " << preset_name; diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 0050561286d..f9167cb4c81 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -134,6 +134,7 @@ class PresetBundle std::vector filament_presets; // BBS: ams std::map filament_ams_list; + std::vector> ams_multi_color_filment; // Calibrate Preset const * calibrate_printer = nullptr; std::set calibrate_filaments; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 67e2072e076..9843e1e83c8 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -6597,6 +6597,18 @@ CLIMiscConfigDef::CLIMiscConfigDef() def->tooltip = "Skip the modified gcodes in 3mf from Printer or filament Presets"; def->cli_params = "option"; def->set_default_value(new ConfigOptionBool(false)); + + def = this->add("makerlab_name", coString); + def->label = "MakerLab name"; + def->tooltip = "MakerLab name to generate this 3mf"; + def->cli_params = "name"; + def->set_default_value(new ConfigOptionString()); + + def = this->add("makerlab_version", coString); + def->label = "MakerLab version"; + def->tooltip = "MakerLab version to generate this 3mf"; + def->cli_params = "version"; + def->set_default_value(new ConfigOptionString()); } const CLIActionsConfigDef cli_actions_config_def; diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 3fd171528ee..0c7426a0ad0 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -6,6 +6,7 @@ #ifndef slic3r_Utils_hpp_ #define slic3r_Utils_hpp_ +#include #include #include #include diff --git a/src/platform/osx/Info.plist.in b/src/platform/osx/Info.plist.in index 4e12fe46566..e58a3d06819 100644 --- a/src/platform/osx/Info.plist.in +++ b/src/platform/osx/Info.plist.in @@ -7,7 +7,7 @@ CFBundleGetInfoString @SLIC3R_APP_NAME@ Copyright(C) 2021-2023 Lunkuo All Rights Reserved CFBundleIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleName @SLIC3R_APP_KEY@ CFBundleShortVersionString @@ -22,6 +22,17 @@ ???? CFBundleVersion @SLIC3R_BUILD_ID@ + CFBundleURLTypes + + + CFBundleURLName + orcasliceropen url + CFBundleURLSchemes + + orcasliceropen + + + CFBundleDocumentTypes @@ -31,7 +42,7 @@ STL CFBundleTypeIconFile - stl.icns + images/stl.icns CFBundleTypeName STL CFBundleTypeRole @@ -48,7 +59,7 @@ OBJ CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName STL CFBundleTypeRole @@ -65,7 +76,7 @@ AMF CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName AMF CFBundleTypeRole @@ -82,7 +93,7 @@ 3MF CFBundleTypeIconFile - OrcaSlicer.icns + images/OrcaSlicer.icns CFBundleTypeName 3MF CFBundleTypeRole @@ -99,7 +110,7 @@ GCODE CFBundleTypeIconFile - gcode.icns + images/gcode.icns CFBundleTypeName GCODE CFBundleTypeRole diff --git a/src/platform/unix/OrcaSlicer.desktop b/src/platform/unix/OrcaSlicer.desktop index ac44f8ba081..9a46c4f24f1 100644 --- a/src/platform/unix/OrcaSlicer.desktop +++ b/src/platform/unix/OrcaSlicer.desktop @@ -2,7 +2,7 @@ Name=OrcaSlicer GenericName=3D Printing Software Icon=OrcaSlicer -Exec=orca-slicer %F +Exec=orca-slicer %U Terminal=false Type=Application MimeType=model/stl;model/3mf;application/vnd.ms-3mfdocument;application/prs.wavefront-obj;application/x-amf; diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp index 6e89a04d46b..8e11493b38d 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.cpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp @@ -671,6 +671,10 @@ void AMSMaterialsSetting::set_colors(std::vector colors) m_clr_picker->set_colors(colors); } +void AMSMaterialsSetting::set_ctype(int ctype) +{ + m_clr_picker->ctype = ctype; +} void AMSMaterialsSetting::on_picker_color(wxCommandEvent& event) { @@ -1107,6 +1111,8 @@ ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*= Bind(wxEVT_PAINT, &ColorPicker::paintEvent, this); m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25); + m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25); + m_bitmap_transparent_def = create_scaled_bitmap("transparent_color_picker", nullptr, 25); m_bitmap_transparent = create_scaled_bitmap("transparent_color_picker", nullptr, 25); } @@ -1115,11 +1121,16 @@ ColorPicker::~ColorPicker(){} void ColorPicker::msw_rescale() { m_bitmap_border = create_scaled_bitmap("color_picker_border", nullptr, 25); + m_bitmap_border_dark = create_scaled_bitmap("color_picker_border_dark", nullptr, 25); + Refresh(); } void ColorPicker::set_color(wxColour col) { + if (m_colour != col && col.Alpha() != 0 && col.Alpha() != 255 && col.Alpha() != 254) { + transparent_changed = true; + } m_colour = col; Refresh(); } @@ -1161,11 +1172,27 @@ void ColorPicker::doRender(wxDC& dc) { wxSize size = GetSize(); auto alpha = m_colour.Alpha(); - auto radius = m_show_full ? size.x / 2 - FromDIP(1) : size.x / 2; if (m_selected) radius -= FromDIP(1); if (alpha == 0) { + dc.DrawBitmap(m_bitmap_transparent_def, 0, 0); + } + else if (alpha != 254 && alpha != 255) { + if (transparent_changed) { + std::string rgb = (m_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString(); + if (rgb.size() == 9) { + //delete alpha value + rgb = rgb.substr(0, rgb.size() - 2); + } + float alpha_f = 0.7 * m_colour.Alpha() / 255.0; + std::vector replace; + replace.push_back(rgb); + std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f); + replace.push_back(fill_replace); + m_bitmap_transparent = ScalableBitmap(this, "transparent_color_picker", 25, false, false, true, replace).bmp(); + transparent_changed = false; + } dc.DrawBitmap(m_bitmap_transparent, 0, 0); } else { @@ -1185,27 +1212,50 @@ void ColorPicker::doRender(wxDC& dc) dc.SetBrush(*wxTRANSPARENT_BRUSH); dc.DrawCircle(size.x / 2, size.y / 2, radius); - //transparent - if (alpha == 0) { - dc.DrawBitmap(m_bitmap_transparent, 0, 0); - } - if (m_cols.size() > 1) { - int left = FromDIP(0); - float total_width = size.x; - int gwidth = std::round(total_width / (m_cols.size() - 1)); + if (ctype == 0) { + int left = FromDIP(0); + float total_width = size.x; + int gwidth = std::round(total_width / (m_cols.size() - 1)); - for (int i = 0; i < m_cols.size() - 1; i++) { + for (int i = 0; i < m_cols.size() - 1; i++) { - if ((left + gwidth) > (size.x)) { - gwidth = size.x - left; - } + if ((left + gwidth) > (size.x)) { + gwidth = size.x - left; + } - auto rect = wxRect(left, 0, gwidth, size.y); - dc.GradientFillLinear(rect, m_cols[i], m_cols[i + 1], wxEAST); - left += gwidth; + auto rect = wxRect(left, 0, gwidth, size.y); + dc.GradientFillLinear(rect, m_cols[i], m_cols[i + 1], wxEAST); + left += gwidth; + } + if (wxGetApp().dark_mode()) { + dc.DrawBitmap(m_bitmap_border_dark, wxPoint(0, 0)); + } + else { + dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0)); + } + } + else { + float ev_angle = 360.0 / m_cols.size(); + float startAngle = 270.0; + float endAngle = 270.0; + dc.SetPen(*wxTRANSPARENT_PEN); + for (int i = 0; i < m_cols.size(); i++) { + dc.SetBrush(m_cols[i]); + endAngle += ev_angle; + endAngle = endAngle > 360.0 ? endAngle - 360.0 : endAngle; + wxPoint center(size.x / 2, size.y / 2); + dc.DrawEllipticArc(center.x - radius, center.y - radius, 2 * radius, 2 * radius, startAngle, endAngle); + startAngle += ev_angle; + startAngle = startAngle > 360.0 ? startAngle - 360.0 : startAngle; + } + if (wxGetApp().dark_mode()) { + dc.DrawBitmap(m_bitmap_border_dark, wxPoint(0, 0)); + } + else { + dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0)); + } } - dc.DrawBitmap(m_bitmap_border, wxPoint(0, 0)); } } diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp index 847bc834038..06519886395 100644 --- a/src/slic3r/GUI/AMSMaterialsSetting.hpp +++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp @@ -33,13 +33,18 @@ class ColorPicker : public wxWindow { public: wxBitmap m_bitmap_border; + wxBitmap m_bitmap_border_dark; wxBitmap m_bitmap_transparent; + wxBitmap m_bitmap_transparent_def; //default transparent material wxColour m_colour; std::vector m_cols; bool m_selected{false}; bool m_show_full{false}; bool m_is_empty{false}; + int ctype; + + bool transparent_changed{false}; ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize); ~ColorPicker(); @@ -108,6 +113,7 @@ class AMSMaterialsSetting : public DPIDialog void set_color(wxColour color); void set_empty_color(wxColour color); void set_colors(std::vector colors); + void set_ctype(int ctype); void on_picker_color(wxCommandEvent& color); MachineObject* obj{ nullptr }; diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index dd4e826ecb8..3c97fdf3d1a 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -573,7 +573,7 @@ wxString get_fail_reason(int code) agent->track_update_property("dev_ota_version", m_machine_info->get_ota_version()); m_simplebook->SetSelection(0); - auto m_bind_job = std::make_unique(m_machine_info->dev_id, m_machine_info->dev_ip, m_machine_info->bind_sec_link); + auto m_bind_job = std::make_unique(m_machine_info->dev_id, m_machine_info->dev_ip, m_machine_info->bind_sec_link, m_machine_info->bind_ssdp_version); if (m_machine_info && (m_machine_info->get_printer_series() == PrinterSeries::SERIES_X1)) { m_bind_job->set_improved(false); diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp index 080a0f7db60..318160f11f4 100644 --- a/src/slic3r/GUI/BitmapCache.cpp +++ b/src/slic3r/GUI/BitmapCache.cpp @@ -387,6 +387,78 @@ replaces["\"#009688\""] = "\"#00675b\""; return this->insert_raw_rgba(bitmap_key, width, height, data.data(), grayscale); } +wxBitmap* BitmapCache::load_svg2(const std::string& bitmap_name, unsigned target_width, unsigned target_height, + const bool grayscale/* = false*/, const bool dark_mode/* = false*/, const std::vector& array_new_color /*= vector()*/, const float scale_in_center/* = 0*/) +{ + + std::map replaces; + if (array_new_color.size() == 2) { + replaces["#D9D9D9"] = array_new_color[0]; + replaces["fill-opacity=\"1.0"] = array_new_color[1]; + } + + + NSVGimage* image = nullptr; + image = nsvgParseFromFileWithReplace(Slic3r::var(bitmap_name + ".svg").c_str(), "px", 96.0f, replaces); + + if (image == nullptr) + return nullptr; + + if (target_height == 0 && target_width == 0) + target_height = image->height; + + target_height != 0 ? target_height *= m_scale : target_width *= m_scale; + + float svg_scale = target_height != 0 ? + (float)target_height / image->height : target_width != 0 ? + (float)target_width / image->width : 1; + + int width = (int)(svg_scale * image->width + 0.5f); + int height = (int)(svg_scale * image->height + 0.5f); + int n_pixels = width * height; + if (n_pixels <= 0) { + ::nsvgDelete(image); + return nullptr; + } + + NSVGrasterizer* rast = ::nsvgCreateRasterizer(); + if (rast == nullptr) { + ::nsvgDelete(image); + return nullptr; + } + + std::vector data(n_pixels * 4, 0); + // BBS: support resize by fill border + if (scale_in_center > 0 && scale_in_center < svg_scale) { + int w = (int)(image->width * scale_in_center); + int h = (int)(image->height * scale_in_center); + ::nsvgRasterize(rast, image, 0, 0, scale_in_center, data.data() + int(height - h) / 2 * width * 4 + int(width - w) / 2 * 4, w, h, width * 4); + } + else + ::nsvgRasterize(rast, image, 0, 0, svg_scale, data.data(), width, height, width * 4); + ::nsvgDeleteRasterizer(rast); + ::nsvgDelete(image); + + const unsigned char * raw_data = data.data(); + wxImage wx_image(width, height); + wx_image.InitAlpha(); + unsigned char* rgb = wx_image.GetData(); + unsigned char* alpha = wx_image.GetAlpha(); + unsigned int pixels = width * height; + for (unsigned int i = 0; i < pixels; ++i) { + *rgb++ = *raw_data++; + *rgb++ = *raw_data++; + *rgb++ = *raw_data++; + *alpha++ = *raw_data++; + } + + if (grayscale) + wx_image = wx_image.ConvertToGreyscale(m_gs, m_gs, m_gs); + auto result = new wxBitmap(wxImage_to_wxBitmap_with_alpha(std::move(wx_image), m_scale)); + return result; + +} + //we make scaled solid bitmaps only for the cases, when its will be used with scaled SVG icon in one output bitmap wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling/* = false*/, size_t border_width /*= 0*/, bool dark_mode/* = false*/) { diff --git a/src/slic3r/GUI/BitmapCache.hpp b/src/slic3r/GUI/BitmapCache.hpp index ab9e4572406..dd8ef5a4509 100644 --- a/src/slic3r/GUI/BitmapCache.hpp +++ b/src/slic3r/GUI/BitmapCache.hpp @@ -43,6 +43,8 @@ class BitmapCache static NSVGimage* nsvgParseFromFileWithReplace(const char* filename, const char* units, float dpi, const std::map& replaces); // Load svg from resources/icons. bitmap_key is given without the .svg suffix. SVG will be rasterized to provided height/width. wxBitmap* load_svg(const std::string &bitmap_key, unsigned width = 0, unsigned height = 0, const bool grayscale = false, const bool dark_mode = false, const std::string& new_color = "", const float scale_in_center = 0.f); + //Load background image of semi transparent material with color, + wxBitmap* load_svg2(const std::string &bitmap_key, unsigned width = 0, unsigned height = 0, const bool grayscale = false, const bool dark_mode = false, const std::vector& array_new_color = std::vector(), const float scale_in_center = 0.0f); wxBitmap mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency, bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false); wxBitmap mksolid(size_t width, size_t height, const unsigned char rgb[3], bool suppress_scaling = false, size_t border_width = 0, bool dark_mode = false) { return mksolid(width, height, rgb[0], rgb[1], rgb[2], wxALPHA_OPAQUE, suppress_scaling, border_width, dark_mode); } diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 83f385365cc..b428110c75a 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1790,7 +1790,10 @@ Preset* CalibrationPresetPage::get_printer_preset(MachineObject* obj, float nozz if (printer_nozzle_opt) printer_nozzle_vals = dynamic_cast(printer_nozzle_opt); std::string model_id = printer_it->get_current_printer_type(preset_bundle); - if (model_id.compare(obj->printer_type) == 0 + + std::string printer_type = obj->printer_type; + if (obj->is_support_p1s_plus) { printer_type = "C12"; } + if (model_id.compare(printer_type) == 0 && printer_nozzle_vals && abs(printer_nozzle_vals->get_at(0) - nozzle_value) < 1e-3) { printer_preset = &(*printer_it); diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp index 2c8f6c6461a..77637bc10d9 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp @@ -261,11 +261,9 @@ void CaliPASaveAutoPanel::sync_cali_result(const std::vector& cal static std::vector filtered_results; filtered_results.clear(); for (auto history : history_result) { - for (auto& info : m_obj->selected_cali_preset) { - if (history.filament_id == info.filament_id) { - filtered_results.push_back(history); - selections.push_back(from_u8(history.name)); - } + if (history.filament_id == item.filament_id) { + filtered_results.push_back(history); + selections.push_back(from_u8(history.name)); } } comboBox_tray_name->Set(selections); diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 9b7fdee95e4..628af9deb7d 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -420,7 +420,7 @@ static std::string get_filament_id(std::string vendor_typr_serial) continue; } std::string filament_name = preset_name.substr(0, index_at - 1); - if (filament_name == vendor_typr_serial) + if (filament_name == vendor_typr_serial && preset.filament_id != "null") return preset.filament_id; filament_id_to_filament_name[preset.filament_id].insert(filament_name); } @@ -437,7 +437,7 @@ static std::string get_filament_id(std::string vendor_typr_serial) continue; } std::string filament_name = preset_name.substr(0, index_at - 1); - if (filament_name == vendor_typr_serial) + if (filament_name == vendor_typr_serial && preset->filament_id != "null") return preset->filament_id; filament_id_to_filament_name[preset->filament_id].insert(filament_name); } @@ -460,7 +460,7 @@ static std::string get_filament_id(std::string vendor_typr_serial) user_filament_id = "P" + calculate_md5(vendor_typr_serial + get_curr_time()).substr(0, 7); } } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " filament name is: " << vendor_typr_serial << "and create filament id is: " << user_filament_id; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " filament name is: " << vendor_typr_serial << "and create filament_id is: " << user_filament_id; return user_filament_id; } @@ -864,7 +864,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_filament_preset_item() } } } else { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " not find filament id corresponding to the type: and the type is" << filament_type; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " not find filament_id corresponding to the type: and the type is" << filament_type; } sort_printer_by_nozzle(printer_name_to_filament_preset); for (std::pair printer_to_preset : printer_name_to_filament_preset) @@ -1105,7 +1105,8 @@ wxArrayString CreateFilamentPresetDialog::get_filament_preset_choices() Preset *preset = filament_presets.second; auto inherit = preset->config.option("inherits"); if (inherit && !inherit->value.empty()) continue; - if (std::string::npos == filament_presets.first.find(type_name)) continue; + auto fila_type = preset->config.option("filament_type"); + if (!fila_type || fila_type->values.empty() || system_filament_types_map[type_name] != fila_type->values[0]) continue; m_filament_choice_map[preset->filament_id].push_back(preset); } @@ -1115,7 +1116,7 @@ wxArrayString CreateFilamentPresetDialog::get_filament_preset_choices() std::set preset_name_set; for (Preset* filament_preset : preset.second) { std::string preset_name = filament_preset->name; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " filament id: " << filament_preset->filament_id << " preset name: " << filament_preset->name; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " filament_id: " << filament_preset->filament_id << " preset name: " << filament_preset->name; size_t index_at = preset_name.find("@"); if (std::string::npos != index_at) { std::string cur_preset_name = preset_name.substr(0, index_at - 1); @@ -2645,7 +2646,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) /****************************** clone filament preset ********************************/ std::vector failures; if (!selected_filament_presets.empty()) { - bool create_preset_result = preset_bundle->filaments.create_presets_from_template_for_printer(selected_filament_presets, failures, printer_preset_name, get_filament_id, rewritten); + bool create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, get_filament_id, rewritten); if (!create_preset_result) { std::string message; for (const std::string &failure : failures) { message += "\t" + failure + "\n"; } @@ -2654,7 +2655,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) wxYES | wxYES_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { - create_preset_result = preset_bundle->filaments.create_presets_from_template_for_printer(selected_filament_presets, failures, printer_preset_name, + create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, get_filament_id, true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " printer preset no same preset but filament has same preset, user cancel create the printer preset"; @@ -2670,7 +2671,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) failures.clear(); if (!selected_process_presets.empty()) { generate_process_presets_data(selected_process_presets, printer_nozzle_name); - bool create_preset_result = preset_bundle->prints.create_presets_from_template_for_printer(selected_process_presets, failures, printer_preset_name, + bool create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, get_filament_id, rewritten); if (!create_preset_result) { std::string message; @@ -2680,7 +2681,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) wxYES | wxYES_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { - create_preset_result = preset_bundle->prints.create_presets_from_template_for_printer(selected_process_presets, failures, printer_preset_name, get_filament_id, true); + create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, get_filament_id, true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " printer preset no same preset but process has same preset, user cancel create the printer preset"; return; @@ -2692,7 +2693,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) /****************************** clone filament preset ********************************/ std::vector failures; if (!selected_filament_presets.empty()) { - bool create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, rewritten); + bool create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, get_filament_id, rewritten); if (!create_preset_result) { std::string message; for (const std::string& failure : failures) { @@ -2703,7 +2704,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) wxYES | wxYES_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { - create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, true); + create_preset_result = preset_bundle->filaments.clone_presets_for_printer(selected_filament_presets, failures, printer_preset_name, get_filament_id, true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " printer preset no same preset but filament has same preset, user cancel create the printer preset"; return; @@ -2714,7 +2715,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) /****************************** clone process preset ********************************/ failures.clear(); if (!selected_process_presets.empty()) { - bool create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, rewritten); + bool create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, get_filament_id, rewritten); if (!create_preset_result) { std::string message; for (const std::string& failure : failures) { @@ -2723,7 +2724,7 @@ wxBoxSizer *CreatePrinterPresetDialog::create_page2_btns_item(wxWindow *parent) MessageDialog dlg(this, _L("Create process presets failed. As follows:\n") + from_u8(message) + _L("\nDo you want to rewrite it?"), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxYES | wxYES_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { - create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, true); + create_preset_result = preset_bundle->prints.clone_presets_for_printer(selected_process_presets, failures, printer_preset_name, get_filament_id, true); } else { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " printer preset no same preset but filament has same preset, user cancel create the printer preset"; return; @@ -4397,25 +4398,9 @@ void EditFilamentPresetDialog::edit_preset() } // edit preset - std::shared_ptr need_edit_preset = filament_presets[m_need_edit_preset_index]; - std::string need_edit_preset_name = need_edit_preset->name; - Tab * tab = wxGetApp().get_tab(need_edit_preset->type); - if (tab == nullptr) { - m_selected_printer.clear(); - m_need_edit_preset_index = -1; - return; - } - - tab->restore_last_select_item(); - - wxGetApp().get_tab(need_edit_preset->type)->select_preset(need_edit_preset_name); - // when some preset have modified, if the printer is not need_edit_preset_name compatible printer, the preset will jump to other preset, need select again - if (!need_edit_preset->is_compatible) wxGetApp().get_tab(need_edit_preset->type)->select_preset(need_edit_preset_name); - - m_selected_printer.clear(); - m_need_edit_preset_index = -1; - + m_need_edit_preset = filament_presets[m_need_edit_preset_index]; wxGetApp().params_dialog()->set_editing_filament_id(m_filament_id); + EndModal(wxID_EDIT); } @@ -4882,6 +4867,14 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr pre preset_name->SetFont(Label::Body_10); preset_name->SetForegroundColour(*wxBLACK); sizer->Add(preset_name, 0, wxEXPAND | wxALL, 5); + bool base_id_error = false; + if (preset->inherits() == "" && preset->base_id != "") base_id_error = true; + if (base_id_error) { + std::string wiki_url = "https://wiki.bambulab.com/en/software/bambu-studio/custom-filament-issue"; + wxHyperlinkCtrl *m_download_hyperlink = new wxHyperlinkCtrl(panel, wxID_ANY, _L("[Delete Required]"), wiki_url, wxDefaultPosition, wxDefaultSize, wxHL_DEFAULT_STYLE); + m_download_hyperlink->SetFont(Label::Body_10); + sizer->Add(m_download_hyperlink, 0, wxEXPAND | wxALL, 5); + } sizer->Add(0, 0, 1, wxEXPAND, 0); StateColor flush_bg_col(std::pair(wxColour(219, 253, 231), StateColor::Pressed), std::pair(wxColour(238, 238, 238), StateColor::Hovered), @@ -4893,6 +4886,9 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr pre StateColor flush_bd_col(std::pair(wxColour(0, 150, 136), StateColor::Pressed), std::pair(wxColour(0, 150, 136), StateColor::Hovered), std::pair(wxColour(172, 172, 172), StateColor::Normal)); + StateColor btn_bg_green(std::pair(wxColour(0, 137, 123), StateColor::Pressed), std::pair(wxColour(38, 166, 154), StateColor::Hovered), + std::pair(wxColour(0, 150, 136), StateColor::Normal)); + Button *edit_preset_btn = new Button(panel, _L("Edit Preset")); edit_preset_btn->SetFont(Label::Body_10); edit_preset_btn->SetPaddingSize(wxSize(8, 3)); @@ -4908,9 +4904,16 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr pre del_preset_btn->SetFont(Label::Body_10); del_preset_btn->SetPaddingSize(wxSize(8, 3)); del_preset_btn->SetCornerRadius(8); - del_preset_btn->SetBackgroundColor(flush_bg_col); - del_preset_btn->SetBorderColor(flush_bd_col); - del_preset_btn->SetTextColor(flush_fg_col); + if (base_id_error) { + del_preset_btn->SetBackgroundColor(btn_bg_green); + del_preset_btn->SetBorderColor(btn_bg_green); + del_preset_btn->SetTextColor(wxColour(0xFFFFFE)); + } else { + del_preset_btn->SetBackgroundColor(flush_bg_col); + del_preset_btn->SetBorderColor(flush_bd_col); + del_preset_btn->SetTextColor(flush_fg_col); + } + //del_preset_btn->Hide(); sizer->Add(del_preset_btn, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0); diff --git a/src/slic3r/GUI/CreatePresetsDialog.hpp b/src/slic3r/GUI/CreatePresetsDialog.hpp index c2334176131..ba603db3219 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.hpp +++ b/src/slic3r/GUI/CreatePresetsDialog.hpp @@ -356,6 +356,7 @@ class EditFilamentPresetDialog : public DPIDialog ~EditFilamentPresetDialog(); wxPanel *get_preset_tree_panel() { return m_preset_tree_panel; } + std::shared_ptr get_need_edit_preset() { return m_need_edit_preset; } void set_printer_name(const std::string &printer_name) { m_selected_printer = printer_name; } void set_need_delete_preset_index(int need_delete_preset_index) { m_need_delete_preset_index = need_delete_preset_index; } void set_need_edit_preset_index(int need_edit_preset_index) { m_need_edit_preset_index = need_edit_preset_index; } @@ -388,6 +389,7 @@ class EditFilamentPresetDialog : public DPIDialog wxStaticText * m_note_text = nullptr; int m_need_delete_preset_index = -1; int m_need_edit_preset_index = -1; + std::shared_ptr m_need_edit_preset; std::string m_selected_printer = ""; std::unordered_map>> m_printer_compatible_presets; diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index fcafd0d3032..f3ffa85bdc4 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1366,7 +1366,7 @@ void MachineObject::parse_status(int flag) } is_support_filament_tangle_detect = ((flag >> 19) & 0x1) != 0; - + is_support_user_preset = ((flag >> 22) & 0x1) != 0; if (xcam_filament_tangle_detect_count > 0) xcam_filament_tangle_detect_count--; else { @@ -1384,6 +1384,9 @@ void MachineObject::parse_status(int flag) if (installed_plus && supported_plus) { is_support_p1s_plus = true; } + else { + is_support_p1s_plus = false; + } } sdcard_state = MachineObject::SdcardState((flag >> 8) & 0x11); @@ -2226,41 +2229,6 @@ int MachineObject::command_get_flow_ratio_calibration_result(float nozzle_diamet return -1; } -int MachineObject::command_unload_filament() -{ - if (get_printer_series() == PrinterSeries::SERIES_X1 && !ams_support_virtual_tray) { - // fixed gcode file - json j; - j["print"]["command"] = "gcode_file"; - j["print"]["param"] = "/usr/etc/print/filament_unload.gcode"; - j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - return this->publish_json(j.dump()); - } - else if (get_printer_series() == PrinterSeries::SERIES_P1P || (get_printer_series() == PrinterSeries::SERIES_X1 && ams_support_virtual_tray) ) { - std::string gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode"); - if (gcode.empty()) { - return -1; - } - - json j; - j["print"]["command"] = "gcode_line"; - j["print"]["param"] = gcode; - j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - - if (m_agent) - j["print"]["user_id"] = m_agent->get_user_id(); - - return this->publish_json(j.dump()); - } - else { - json j; - j["print"]["command"] = "unload_filament"; - j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++); - return this->publish_json(j.dump()); - } -} - - int MachineObject::command_ipcam_record(bool on_off) { BOOST_LOG_TRIVIAL(info) << "command_ipcam_record = " << on_off; @@ -2721,7 +2689,7 @@ int MachineObject::parse_json(std::string payload) uint64_t t_utc = j.value("t_utc", 0ULL); if (t_utc > 0) - last_update_time = std::chrono::system_clock::time_point(t_utc * 1ms); + last_utc_time = std::chrono::system_clock::time_point(t_utc * 1ms); BOOST_LOG_TRIVIAL(trace) << "parse_json: dev_id=" << dev_id << ", playload=" << j.dump(4); @@ -2745,7 +2713,10 @@ int MachineObject::parse_json(std::string payload) module_vers.emplace(ver_info.name, ver_info); if (ver_info.name == "ota") { NetworkAgent* agent = GUI::wxGetApp().getAgent(); - if (agent) agent->track_update_property("dev_ota_ver", ver_info.sw_ver); + if (agent) { + std::string dev_ota_str = "dev_ota_ver:" + this->dev_id; + agent->track_update_property(dev_ota_str, ver_info.sw_ver); + } } } @@ -3869,6 +3840,10 @@ int MachineObject::parse_json(std::string payload) curr_tray->color = ""; } + if (tray_it->contains("ctype")) + curr_tray->ctype = (*tray_it)["ctype"].get(); + else + curr_tray->ctype = 0; curr_tray->cols.clear(); if (tray_it->contains("cols")) { if ((*tray_it)["cols"].is_array()) { @@ -4943,9 +4918,13 @@ void DeviceManager::on_machine_alive(std::string json_str) std::string connect_type = j["connect_type"].get(); std::string bind_state = j["bind_state"].get(); std::string sec_link = ""; + std::string ssdp_version = ""; if (j.contains("sec_link")) { sec_link = j["sec_link"].get(); } + if (j.contains("ssdp_version")) { + ssdp_version = j["ssdp_version"].get(); + } std::string connection_name = ""; if (j.contains("connection_name")) { connection_name = j["connection_name"].get(); @@ -4960,6 +4939,7 @@ void DeviceManager::on_machine_alive(std::string json_str) it->second->bind_state = bind_state; it->second->bind_sec_link = sec_link; it->second->dev_connection_type = connect_type; + it->second->bind_ssdp_version = ssdp_version; } /* update localMachineList */ @@ -4990,6 +4970,7 @@ void DeviceManager::on_machine_alive(std::string json_str) obj->dev_connection_type= connect_type; obj->bind_state = bind_state; obj->bind_sec_link = sec_link; + obj->bind_ssdp_version = ssdp_version; obj->printer_type = MachineObject::parse_printer_type(printer_type_str); // U0 firmware @@ -5014,6 +4995,7 @@ void DeviceManager::on_machine_alive(std::string json_str) obj->bind_state = bind_state; obj->bind_sec_link = sec_link; obj->dev_connection_name = connection_name; + obj->bind_ssdp_version = ssdp_version; obj->m_is_online = true; //load access code diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 37bdb737641..1e142a97c30 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -192,6 +192,7 @@ class AmsTray { std::string nozzle_temp_min; std::string xcam_info; std::string uuid; + int ctype = 0; float k = 0.0f; // k range: 0 ~ 0.5 float n = 0.0f; // k range: 0.6 ~ 2.0 int cali_idx = 0; @@ -450,6 +451,7 @@ class MachineObject std::string bind_user_id; std::string bind_state; /* free | occupied */ std::string bind_sec_link; + std::string bind_ssdp_version; bool is_avaliable() { return bind_state == "free"; } time_t last_alive; bool m_is_online; @@ -461,6 +463,7 @@ class MachineObject int parse_msg_count = 0; int keep_alive_count = 0; std::chrono::system_clock::time_point last_update_time; /* last received print data from machine */ + std::chrono::system_clock::time_point last_utc_time; /* last received print data from machine */ std::chrono::system_clock::time_point last_keep_alive; /* last received print data from machine */ std::chrono::system_clock::time_point last_push_time; /* last received print push from machine */ std::chrono::system_clock::time_point last_request_push; /* last received print push from machine */ @@ -877,8 +880,6 @@ class MachineObject int command_start_flow_ratio_calibration(const X1CCalibInfos& calib_data); int command_get_flow_ratio_calibration_result(float nozzle_diameter); - int command_unload_filament(); - // camera control int command_ipcam_record(bool on_off); int command_ipcam_timelapse(bool on_off); diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 5981eb87ac8..9d408a015f2 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -1062,17 +1062,6 @@ class GLCanvas3D void highlight_toolbar_item(const std::string& item_name); void highlight_gizmo(const std::string& gizmo_name); - ArrangeSettings get_arrange_settings() const { - const ArrangeSettings &settings = get_arrange_settings(this); - ArrangeSettings ret = settings; - if (&settings == &m_arrange_settings_fff_seq_print) { - ret.distance = std::max(ret.distance, - float(min_object_distance(*m_config))); - } - - return ret; - } - // Timestamp for FPS calculation and notification fade-outs. static int64_t timestamp_now() { #ifdef _WIN32 diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index afd76b546ae..42c19513cfc 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -1028,8 +1028,12 @@ void GUI_App::post_init() // BOOST_LOG_TRIVIAL(info) << "Loading user presets..."; // scrn->SetText(_L("Loading user presets...")); if (m_agent) { start_sync_user_preset(); } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " sync_user_preset: true"; + } else { + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " sync_user_preset: false"; } + m_open_method = "double_click"; bool switch_to_3d = false; if (!this->init_params->input_files.empty()) { @@ -1053,6 +1057,7 @@ void GUI_App::post_init() if (!download_file_url.empty() && ( boost::starts_with(download_file_url, "http://") || boost::starts_with(download_file_url, "https://")) ) { request_model_download(download_origin_url); } + m_open_method = "makerworld"; } else { switch_to_3d = true; @@ -1060,23 +1065,28 @@ void GUI_App::post_init() mainframe->select_tab(size_t(MainFrame::tp3DEditor)); plater_->select_view_3D("3D"); this->plater()->load_gcode(from_u8(this->init_params->input_files.front())); + m_open_method = "gcode"; } else { mainframe->select_tab(size_t(MainFrame::tp3DEditor)); plater_->select_view_3D("3D"); - Plater::TakeSnapshot snapshot(this->plater(), "Load Project", UndoRedo::SnapshotType::ProjectSeparator); - const std::vector res = this->plater()->load_files(this->init_params->input_files); - if (!res.empty()) { - if (this->init_params->input_files.size() == 1) { - // Update application titlebar when opening a project file - const std::string& filename = this->init_params->input_files.front(); - this->plater()->up_to_date(true, false); - this->plater()->up_to_date(true, true); - //BBS: remove amf logic as project - if (boost::algorithm::iends_with(filename, ".3mf")) - this->plater()->set_project_filename(from_u8(filename)); + wxArrayString input_files; + for (auto & file : this->init_params->input_files) { + input_files.push_back(wxString::FromUTF8(file)); + } + this->plater()->set_project_filename(_L("Untitled")); + this->plater()->load_files(input_files); + try { + if (!input_files.empty()) { + std::string file_path = input_files.front().ToStdString(); + std::filesystem::path path(file_path); + m_open_method = "file_" + path.extension().string(); } } + catch (...) { + BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ", file path exception!"; + m_open_method = "file"; + } } } } @@ -3300,17 +3310,8 @@ void GUI_App::link_to_network_check() else if (country_code == "CN") { url = "https://status.bambulab.cn"; } - else if (country_code == "ENV_CN_DEV") { - url = "https://status.bambu-lab.com"; - } - else if (country_code == "ENV_CN_QA") { - url = "https://status.bambu-lab.com"; - } - else if (country_code == "ENV_CN_PRE") { - url = "https://status.bambu-lab.com"; - } else { - url = "https://status.bambu-lab.com"; + url = "https://status.bambulab.com"; } wxLaunchDefaultBrowser(url); } @@ -4162,6 +4163,10 @@ void GUI_App::check_track_enable() /* record studio start event */ json j; j["user_mode"] = this->get_mode_str(); + j["open_method"] = m_open_method; + if (m_agent) { + m_agent->track_event("studio_launch", j.dump()); + } } } @@ -5881,7 +5886,7 @@ void GUI_App::OSXStoreOpenFiles(const wxArrayString &fileNames) void GUI_App::MacOpenURL(const wxString& url) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "get mac url " << url; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << "get mac url " << url; if (!url.empty() && boost::starts_with(url, "orcasliceropen://")) { auto input_str_arr = split_str(url.ToStdString(), "orcasliceropen://"); @@ -5892,7 +5897,7 @@ void GUI_App::MacOpenURL(const wxString& url) } std::string download_file_url = url_decode(download_origin_url); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << download_file_url; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << download_file_url; if (!download_file_url.empty() && (boost::starts_with(download_file_url, "http://") || boost::starts_with(download_file_url, "https://"))) { if (m_post_initialized) { @@ -6064,6 +6069,12 @@ void GUI_App::open_mall_page_dialog() link_url = host_url + model_url; } + if (link_url.find("?") != std::string::npos) { + link_url += "&from=orcaslicer"; + } else { + link_url += "?from=orcaslicer"; + } + wxLaunchDefaultBrowser(link_url); } diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index b2d09bff396..bd7868dbd73 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -664,6 +664,7 @@ class GUI_App : public wxApp std::string m_older_data_dir_path; boost::optional m_last_config_version; bool m_config_corrupted { false }; + std::string m_open_method; }; DECLARE_APP(GUI_App) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 9ea5aa5c2b0..2629248d032 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -915,6 +915,10 @@ void MenuFactory::append_menu_items_flush_options(wxMenu* menu) ModelConfig& select_object_config = object_list->object(selection.get_object_idx())->config; wxMenu* flush_options_menu = new wxMenu(); + auto can_flush = [&global_config]() { + auto option = global_config.option("enable_prime_tower"); + return option ? option->getBool() : false; + }; append_menu_check_item(flush_options_menu, wxID_ANY, _L("Flush into objects' infill"), "", [&select_object_config, &global_config](wxCommandEvent&) { const ConfigOption* option = select_object_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][0]); @@ -923,8 +927,8 @@ void MenuFactory::append_menu_items_flush_options(wxMenu* menu) } select_object_config.set_key_value(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][0], new ConfigOptionBool(!option->getBool())); wxGetApp().obj_settings()->UpdateAndShow(true); - }, menu, []() {return true; }, - [&select_object_config, &global_config]() { + }, menu, can_flush, + [&select_object_config, &global_config]() { const ConfigOption* option = select_object_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][0]); if (!option) { option = global_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][0]); @@ -940,8 +944,8 @@ void MenuFactory::append_menu_items_flush_options(wxMenu* menu) } select_object_config.set_key_value(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][1], new ConfigOptionBool(!option->getBool())); wxGetApp().obj_settings()->UpdateAndShow(true); - }, menu, []() {return true; }, - [&select_object_config, &global_config]() { + }, menu, can_flush, + [&select_object_config, &global_config]() { const ConfigOption* option = select_object_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][1]); if (!option) { option = global_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][1]); @@ -957,8 +961,8 @@ void MenuFactory::append_menu_items_flush_options(wxMenu* menu) } select_object_config.set_key_value(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][2], new ConfigOptionBool(!option->getBool())); wxGetApp().obj_settings()->UpdateAndShow(true); - }, menu, []() {return true; }, - [&select_object_config, &global_config]() { + }, menu, can_flush, + [&select_object_config, &global_config]() { const ConfigOption* option = select_object_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][2]); if (!option) { option = global_config.option(FREQ_SETTINGS_BUNDLE_FFF["Flush options"][2]); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 725020ef309..be90c40790b 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -2892,15 +2892,16 @@ void ObjectList::boolean() Plater::TakeSnapshot snapshot(wxGetApp().plater(), "boolean"); - Model* model = (*m_objects)[0]->get_model(); + ModelObject* object = (*m_objects)[obj_idxs.front()]; + TriangleMesh mesh = Plater::combine_mesh_fff(*object, -1, [this](const std::string& msg) {return wxGetApp().notification_manager()->push_plater_error_notification(msg); }); + + // add mesh to model as a new object, keep the original object's name and config + Model* model = object->get_model(); ModelObject* new_object = model->add_object(); - new_object->name = (*m_objects)[0]->name; - new_object->config.assign_config((*m_objects)[0]->config); + new_object->name = object->name; + new_object->config.assign_config(object->config); if (new_object->instances.empty()) new_object->add_instance(); - - ModelObject* object = (*m_objects)[obj_idxs.front()]; - TriangleMesh mesh = Plater::combine_mesh_fff(*object, -1, [this](const std::string& msg) {return wxGetApp().notification_manager()->push_plater_error_notification(msg); }); ModelVolume* new_volume = new_object->add_volume(mesh); // BBS: ensure on bed but no need to ensure locate in the center around origin @@ -3712,6 +3713,9 @@ wxDataViewItemArray ObjectList::add_volumes_to_object_in_list(size_t obj_idx, st } int volume_idx{-1}; + auto& ui_and_3d_volume_map = m_objects_model->get_ui_and_3d_volume_map(); + ui_and_3d_volume_map.clear(); + int ui_volume_idx = 0; for (const ModelVolume *volume : object->volumes) { ++volume_idx; if (object->is_cut() && volume->is_cut_connector()) @@ -3726,6 +3730,8 @@ wxDataViewItemArray ObjectList::add_volumes_to_object_in_list(size_t obj_idx, st get_warning_icon_name(volume->mesh().stats()), volume->config.has("extruder") ? volume->config.extruder() : 0, false); + ui_and_3d_volume_map[ui_volume_idx] = volume_idx; + ui_volume_idx++; add_settings_item(vol_item, &volume->config.get()); if (add_to_selection && add_to_selection(volume)) @@ -4442,8 +4448,10 @@ void ObjectList::update_selections() assert(obj_idx >= 0 && vol_idx >= 0); if (object(obj_idx)->volumes[vol_idx]->is_cut_connector()) sels.Add(m_objects_model->GetInfoItemByType(m_objects_model->GetItemById(obj_idx), InfoItemType::CutConnectors)); - else + else { + vol_idx = m_objects_model->get_real_volume_index_in_ui(vol_idx); sels.Add(m_objects_model->GetItemByVolumeId(obj_idx, vol_idx)); + } } } m_selection_mode = smVolume; } @@ -4547,7 +4555,8 @@ void ObjectList::update_selections_on_canvas() const int obj_idx = m_objects_model->GetObjectIdByItem(item); if (type == itVolume) { - const int vol_idx = m_objects_model->GetVolumeIdByItem(item); + int vol_idx = m_objects_model->GetVolumeIdByItem(item); + vol_idx = m_objects_model->get_real_volume_index_in_3d(vol_idx); std::vector idxs = selection.get_volume_idxs_from_volume(obj_idx, std::max(instance_idx, 0), vol_idx); volume_idxs.insert(volume_idxs.end(), idxs.begin(), idxs.end()); } @@ -5761,24 +5770,8 @@ wxDataViewItemArray ObjectList::reorder_volumes_and_get_selection(int obj_idx, s return items; object->sort_volumes(true); - - wxDataViewItem object_item = m_objects_model->GetItemById(obj_idx); - m_objects_model->DeleteVolumeChildren(object_item); - - for (const ModelVolume* volume : object->volumes) { - wxDataViewItem vol_item = m_objects_model->AddVolumeChild(object_item, from_u8(volume->name), - volume->type(), - volume->is_text(), - volume->is_svg(), - get_warning_icon_name(volume->mesh().stats()), - volume->config.has("extruder") ? volume->config.extruder() : 0, - false); - // add settings to the part, if it has those - add_settings_item(vol_item, &volume->config.get()); - - if (add_to_selection && add_to_selection(volume)) - items.Add(vol_item); - } + update_info_items(obj_idx, nullptr, true); + items = add_volumes_to_object_in_list(obj_idx, std::move(add_to_selection)); changed_object(obj_idx); return items; diff --git a/src/slic3r/GUI/HMS.cpp b/src/slic3r/GUI/HMS.cpp index c1b73f2c08b..73a1204ee0f 100644 --- a/src/slic3r/GUI/HMS.cpp +++ b/src/slic3r/GUI/HMS.cpp @@ -17,7 +17,9 @@ int get_hms_info_version(std::string& version) } int result = -1; version = ""; - std::string url = (boost::format("https://%1%/GetVersion.php") % hms_host).str(); + std::string lang; + std::string query_params = HMSQuery::build_query_params(lang); + std::string url = (boost::format("https://%1%/GetVersion.php?%2%") % hms_host % query_params).str(); Slic3r::Http http = Slic3r::Http::get(url); http.timeout_max(10) .on_complete([&result, &version](std::string body, unsigned status){ @@ -44,13 +46,14 @@ int HMSQuery::download_hms_info() if (!config) return -1; std::string hms_host = wxGetApp().app_config->get_hms_host(); - std::string lang_code = HMSQuery::hms_language_code(); - std::string url = (boost::format("https://%1%/query.php?lang=%2%") % hms_host % lang_code).str(); + std::string lang; + std::string query_params = HMSQuery::build_query_params(lang); + std::string url = (boost::format("https://%1%/query.php?%2%") % hms_host % query_params).str(); BOOST_LOG_TRIVIAL(info) << "hms: download url = " << url; Slic3r::Http http = Slic3r::Http::get(url); - + m_hms_json.clear(); http.on_complete([this](std::string body, unsigned status) { try { json j = json::parse(body); @@ -73,7 +76,8 @@ int HMSQuery::download_hms_info() BOOST_LOG_TRIVIAL(error) << "HMSQuery: update hms info error = " << error << ", body = " << body << ", status = " << status; }).perform_sync(); - save_to_local(); + if (!m_hms_json.empty()) + save_to_local(lang); return 0; } @@ -84,7 +88,7 @@ int HMSQuery::load_from_local(std::string &version_info) BOOST_LOG_TRIVIAL(error) << "HMS: load_from_local, data_dir() is empty"; return -1; } - std::string filename = get_hms_file(); + std::string filename = get_hms_file(HMSQuery::hms_language_code()); auto hms_folder = (boost::filesystem::path(data_dir()) / "hms"); if (!fs::exists(hms_folder)) fs::create_directory(hms_folder); @@ -111,13 +115,13 @@ int HMSQuery::load_from_local(std::string &version_info) return 0; } -int HMSQuery::save_to_local() +int HMSQuery::save_to_local(std::string lang) { if (data_dir().empty()) { BOOST_LOG_TRIVIAL(error) << "HMS: save_to_local, data_dir() is empty"; return -1; } - std::string filename = get_hms_file(); + std::string filename = get_hms_file(lang); auto hms_folder = (boost::filesystem::path(data_dir()) / "hms"); if (!fs::exists(hms_folder)) fs::create_directory(hms_folder); @@ -152,10 +156,18 @@ std::string HMSQuery::hms_language_code() return lang_code; } -std::string HMSQuery::get_hms_file() +std::string HMSQuery::build_query_params(std::string& lang) { std::string lang_code = HMSQuery::hms_language_code(); - return (boost::format("hms_%1%.json") % lang_code).str(); + lang = lang_code; + std::string query_params = (boost::format("lang=%1%") % lang_code).str(); + return query_params; +} + +std::string HMSQuery::get_hms_file(std::string lang) +{ + //std::string lang_code = HMSQuery::hms_language_code(); + return (boost::format("hms_%1%.json") % lang).str(); } wxString HMSQuery::query_hms_msg(std::string long_error_code) @@ -263,6 +275,9 @@ int HMSQuery::check_hms_info() std::string new_version; get_hms_info_version(new_version); BOOST_LOG_TRIVIAL(info) << "HMS: check_hms_info latest version = " << new_version; + + if (new_version.empty()) {return 0;} + if (!version.empty() && version == new_version) { download_new_hms_info = false; } @@ -272,7 +287,7 @@ int HMSQuery::check_hms_info() if (download_new_hms_info) { download_hms_info(); } - return; + return 0; }); return 0; } diff --git a/src/slic3r/GUI/HMS.hpp b/src/slic3r/GUI/HMS.hpp index e76a5938cec..64edf84caa9 100644 --- a/src/slic3r/GUI/HMS.hpp +++ b/src/slic3r/GUI/HMS.hpp @@ -22,8 +22,8 @@ class HMSQuery { json m_hms_json; int download_hms_info(); int load_from_local(std::string& version_info); - int save_to_local(); - std::string get_hms_file(); + int save_to_local(std::string lang); + std::string get_hms_file(std::string lang); wxString _query_hms_msg(std::string long_error_code, std::string lang_code = "en"); wxString _query_error_msg(std::string long_error_code, std::string lang_code = "en"); public: @@ -32,6 +32,7 @@ class HMSQuery { wxString query_hms_msg(std::string long_error_code); wxString query_print_error_msg(int print_error); static std::string hms_language_code(); + static std::string build_query_params(std::string& lang); }; int get_hms_info_version(std::string &version); diff --git a/src/slic3r/GUI/Jobs/ArrangeJob.cpp b/src/slic3r/GUI/Jobs/ArrangeJob.cpp index 5b73b629490..538ffc4fa5d 100644 --- a/src/slic3r/GUI/Jobs/ArrangeJob.cpp +++ b/src/slic3r/GUI/Jobs/ArrangeJob.cpp @@ -752,9 +752,9 @@ double bed_stride_y(const Plater* plater) { arrangement::ArrangeParams init_arrange_params(Plater *p) { arrangement::ArrangeParams params; - const GLCanvas3D::ArrangeSettings &settings = static_cast(p->canvas3D())->get_arrange_settings(); - auto & print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); - const PrintConfig& print_config = print.config(); + GLCanvas3D::ArrangeSettings &settings = p->canvas3D()->get_arrange_settings(); + auto &print = wxGetApp().plater()->get_partplate_list().get_current_fff_print(); + const PrintConfig &print_config = print.config(); 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; diff --git a/src/slic3r/GUI/Jobs/BindJob.cpp b/src/slic3r/GUI/Jobs/BindJob.cpp index 26e20d867e0..57b22cc221e 100644 --- a/src/slic3r/GUI/Jobs/BindJob.cpp +++ b/src/slic3r/GUI/Jobs/BindJob.cpp @@ -16,11 +16,12 @@ static auto waiting_auth_str = _u8L("Logging in"); static auto login_failed_str = _u8L("Login failed"); -BindJob::BindJob(std::string dev_id, std::string dev_ip, std::string sec_link) +BindJob::BindJob(std::string dev_id, std::string dev_ip, std::string sec_link, std::string ssdp_version) : m_dev_id(dev_id), m_dev_ip(dev_ip), - m_sec_link(sec_link) + m_sec_link(sec_link), + m_ssdp_version(ssdp_version) { ; } @@ -55,7 +56,8 @@ void BindJob::process(Ctl &ctl) wxDateTime::TimeZone tz(wxDateTime::Local); long offset = tz.GetOffset(); std::string timezone = get_timezone_utc_hm(offset); - + + m_agent->track_update_property("ssdp_version", m_ssdp_version, "string"); int result = m_agent->bind(m_dev_ip, m_dev_id, m_sec_link, timezone, m_improved, [this, &ctl, &curr_percent, &msg, &result_code, &result_info](int stage, int code, std::string info) { diff --git a/src/slic3r/GUI/Jobs/BindJob.hpp b/src/slic3r/GUI/Jobs/BindJob.hpp index b0bc4d818d5..7890d63afb0 100644 --- a/src/slic3r/GUI/Jobs/BindJob.hpp +++ b/src/slic3r/GUI/Jobs/BindJob.hpp @@ -17,12 +17,13 @@ class BindJob : public Job std::string m_dev_id; std::string m_dev_ip; std::string m_sec_link; + std::string m_ssdp_version; bool m_job_finished{ false }; int m_print_job_completed_id = 0; bool m_improved{false}; public: - BindJob(std::string dev_id, std::string dev_ip, std::string sec_link); + BindJob(std::string dev_id, std::string dev_ip, std::string sec_link, std::string ssdp_version); int status_range() const { diff --git a/src/slic3r/GUI/Jobs/FillBedJob.cpp b/src/slic3r/GUI/Jobs/FillBedJob.cpp index 267fbee82ae..efcb556456f 100644 --- a/src/slic3r/GUI/Jobs/FillBedJob.cpp +++ b/src/slic3r/GUI/Jobs/FillBedJob.cpp @@ -150,8 +150,7 @@ void FillBedJob::prepare() double sc = scaled(1.) * scaled(1.); - const GLCanvas3D::ArrangeSettings& settings = static_cast(m_plater->canvas3D())->get_arrange_settings(); - auto polys = offset_ex(m_selected.front().poly, scaled(settings.distance) / 2); + auto polys = offset_ex(m_selected.front().poly, params.min_obj_distance / 2); ExPolygon poly = polys.empty() ? m_selected.front().poly : polys.front(); double poly_area = poly.area() / sc; double unsel_area = std::accumulate(m_unselected.begin(), diff --git a/src/slic3r/GUI/Jobs/PrintJob.cpp b/src/slic3r/GUI/Jobs/PrintJob.cpp index b331ebfca57..8ff354e7c78 100644 --- a/src/slic3r/GUI/Jobs/PrintJob.cpp +++ b/src/slic3r/GUI/Jobs/PrintJob.cpp @@ -68,9 +68,15 @@ std::string PrintJob::truncate_string(const std::string& str, size_t maxLength) } wxString local_str = wxString::FromUTF8(str); - wxString truncatedStr = local_str.Mid(0, maxLength - 3); - truncatedStr.append("..."); + wxString truncatedStr; + for (auto i = 1; i < local_str.Length(); i++) { + wxString tagStr = local_str.Mid(0, i); + if (tagStr.ToUTF8().length() >= maxLength) { + truncatedStr = local_str.Mid(0, i - 1); + break; + } + } return truncatedStr.utf8_string(); } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 288e8a579e2..3b70614dae8 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3688,11 +3688,13 @@ void MainFrame::on_select_default_preset(SimpleEvent& evt) case wxID_YES: { wxGetApp().app_config->set_bool("sync_user_preset", true); wxGetApp().start_sync_user_preset(true); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " sync_user_preset: true"; break; } case wxID_NO: wxGetApp().app_config->set_bool("sync_user_preset", false); wxGetApp().stop_sync_user_preset(); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " sync_user_preset: false"; break; default: break; diff --git a/src/slic3r/GUI/MediaFilePanel.cpp b/src/slic3r/GUI/MediaFilePanel.cpp index dded21372bd..3b23ee76321 100644 --- a/src/slic3r/GUI/MediaFilePanel.cpp +++ b/src/slic3r/GUI/MediaFilePanel.cpp @@ -198,7 +198,9 @@ MediaFilePanel::~MediaFilePanel() SetMachineObject(nullptr); } -void MediaFilePanel::SetMachineObject(MachineObject* obj) +wxString hide_id_middle_string(wxString const &str, size_t offset = 0, size_t length = -1); + + void MediaFilePanel::SetMachineObject(MachineObject* obj) { std::string machine = obj ? obj->dev_id : ""; if (obj) { @@ -442,7 +444,7 @@ void MediaFilePanel::fetchUrl(boost::weak_ptr wfs) if (agent) { agent->get_camera_url(m_machine, [this, wfs, m = m_machine, v = m_dev_ver](std::string url) { - BOOST_LOG_TRIVIAL(info) << "MediaFilePanel::fetchUrl: camera_url: " << hide_passwd(url, {"authkey=", "passwd="}); + BOOST_LOG_TRIVIAL(info) << "MediaFilePanel::fetchUrl: camera_url: " << hide_id_middle_string(hide_passwd(url, {"authkey=", "passwd="}), 9, 20); CallAfter([=] { boost::shared_ptr fs(wfs.lock()); if (!fs || fs != m_image_grid->GetFileSystem()) return; diff --git a/src/slic3r/GUI/MediaPlayCtrl.cpp b/src/slic3r/GUI/MediaPlayCtrl.cpp index 0d3e01b4bcb..7fb8392f6a6 100644 --- a/src/slic3r/GUI/MediaPlayCtrl.cpp +++ b/src/slic3r/GUI/MediaPlayCtrl.cpp @@ -90,6 +90,15 @@ MediaPlayCtrl::~MediaPlayCtrl() m_thread.join(); } +wxString hide_id_middle_string(wxString const &str, size_t offset = 0, size_t length = -1) +{ + if (length == size_t(-1)) + length = str.Length() - offset; + if (length <= 8) + return str; + return str.Left(offset + 4) + wxString(length - 8, '*') + str.Mid(offset + length - 4); +} + void MediaPlayCtrl::SetMachineObject(MachineObject* obj) { std::string machine = obj ? obj->dev_id : ""; @@ -120,7 +129,7 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj) return; } m_machine = machine; - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl switch machine: " << m_machine; + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl switch machine: " << hide_id_middle_string(m_machine); m_disable_lan = false; m_failed_retry = 0; m_last_failed_codes.clear(); @@ -149,8 +158,7 @@ wxString hide_passwd(wxString url, std::vector const &passwords) if (p[p.length() - 1] == '=') { i = j; j = url.find('&', i); - if (j == wxString::npos) - j = url.length(); + if (j == wxString::npos) j = url.length(); } auto l = size_t(j - i); if (j == url.length() || url[j] == '@' || url[j] == '&') @@ -199,7 +207,7 @@ void MediaPlayCtrl::Play() m_url = "bambu:///rtsps___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?proto=rtsps"; else if (m_lan_proto == MachineObject::LVL_Rtsp) m_url = "bambu:///rtsp___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?proto=rtsp"; - m_url += "&device=" + m_machine; + m_url += "&device=" + hide_id_middle_string(m_machine); m_url += "&version=" + agent_version; m_url += "&dev_ver=" + m_dev_ver; BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: " << hide_passwd(m_url, {m_lan_passwd} ); @@ -231,11 +239,11 @@ void MediaPlayCtrl::Play() if (agent) { agent->get_camera_url(m_machine, [this, m = m_machine, v = agent_version, dv = m_dev_ver](std::string url) { if (boost::algorithm::starts_with(url, "bambu:///")) { - url += "&device=" + m; + url += "&device=" + into_u8(hide_id_middle_string(m)); url += "&version=" + v; url += "&dev_ver=" + dv; } - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: " << hide_passwd(url, {"authkey=", "passwd="}) << ", machine: " << m_machine; + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: " << hide_id_middle_string(hide_passwd(url, {"authkey=", "passwd="}), 9, 20); CallAfter([this, m, url] { if (m != m_machine) { BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl drop late ttcode for machine: " << m; @@ -392,7 +400,7 @@ void MediaPlayCtrl::ToggleStream() url = "bambu:///rtsps___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?proto=rtsps"; else if (m_lan_proto == MachineObject::LVL_Rtsp) url = "bambu:///rtsp___" + m_lan_user + ":" + m_lan_passwd + "@" + m_lan_ip + "/streaming/live/1?proto=rtsp"; - url += "&device=" + m_machine; + url += "&device=" + into_u8(hide_id_middle_string(m_machine)); url += "&dev_ver=" + m_dev_ver; BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::ToggleStream: " << hide_passwd(url, {m_lan_passwd}); std::string file_url = data_dir() + "/cameratools/url.txt"; @@ -411,7 +419,7 @@ void MediaPlayCtrl::ToggleStream() url += "&version=" + v; url += "&dev_ver=" + dv; } - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::ToggleStream: " << hide_passwd(url, {"authkey=", "passwd="}); + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl::ToggleStream: " << hide_id_middle_string(hide_passwd(url, {"authkey=", "passwd="}), 9, 20); CallAfter([this, m, url] { if (m != m_machine) return; if (url.empty() || !boost::algorithm::starts_with(url, "bambu:///")) { @@ -537,7 +545,7 @@ void MediaPlayCtrl::media_proc() } wxString url = m_tasks.front(); if (m_tasks.size() >= 2 && !url.IsEmpty() && url[0] != '<' && m_tasks[1] == "") { - BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: busy skip url: " << hide_passwd(url, {"authkey=", "passwd=", m_lan_passwd}); + BOOST_LOG_TRIVIAL(info) << "MediaPlayCtrl: busy skip url: " << hide_id_middle_string(hide_passwd(url, {"authkey=", "passwd=", m_lan_passwd}), 9, 20); m_tasks.pop_front(); m_tasks.pop_front(); continue; diff --git a/src/slic3r/GUI/ObjectDataViewModel.hpp b/src/slic3r/GUI/ObjectDataViewModel.hpp index 4f1c6208986..8725645191f 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.hpp +++ b/src/slic3r/GUI/ObjectDataViewModel.hpp @@ -342,13 +342,30 @@ class ObjectDataViewModel :public wxDataViewModel wxDataViewCtrl* m_ctrl { nullptr }; std::vector> assembly_name_list; std::vector> search_found_list; + std::map m_ui_and_3d_volume_map; public: ObjectDataViewModel(); ~ObjectDataViewModel(); void Init(); - + std::map &get_ui_and_3d_volume_map() { return m_ui_and_3d_volume_map; } + int get_real_volume_index_in_3d(int ui_value) + { + if (m_ui_and_3d_volume_map.find(ui_value) != m_ui_and_3d_volume_map.end()) { + return m_ui_and_3d_volume_map[ui_value]; + } + return ui_value; + } + int get_real_volume_index_in_ui(int _3d_value) + { + for (auto item: m_ui_and_3d_volume_map) { + if (item.second == _3d_value) { + return item.first; + } + } + return _3d_value; + } wxDataViewItem AddPlate(PartPlate* part_plate, wxString name = wxEmptyString, bool refresh = true); wxDataViewItem AddObject(ModelObject* model_object, std::string warning_bitmap, bool has_lock = false, bool refresh = true); wxDataViewItem AddVolumeChild( const wxDataViewItem &parent_item, diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 67d3022d54a..28b34b15593 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1541,6 +1541,10 @@ std::map Sidebar::build_filament_ams_list(MachineObject vt_tray_config.set_key_value("filament_colour", new ConfigOptionStrings{ into_u8(wxColour("#" + vt_tray.color).GetAsString(wxC2S_HTML_SYNTAX)) }); vt_tray_config.set_key_value("filament_exist", new ConfigOptionBools{ true }); + vt_tray_config.set_key_value("filament_multi_colors", new ConfigOptionStrings{}); + for (int i = 0; i < vt_tray.cols.size(); ++i) { + vt_tray_config.opt("filament_multi_colors")->values.push_back(into_u8(wxColour("#" + vt_tray.cols[i]).GetAsString(wxC2S_HTML_SYNTAX))); + } filament_ams_list.emplace(VIRTUAL_TRAY_ID, std::move(vt_tray_config)); } @@ -1559,6 +1563,10 @@ std::map Sidebar::build_filament_ams_list(MachineObject tray_config.set_key_value("filament_colour", new ConfigOptionStrings{ into_u8(wxColour("#" + tray.second->color).GetAsString(wxC2S_HTML_SYNTAX)) }); tray_config.set_key_value("filament_exist", new ConfigOptionBools{ tray.second->is_exists }); + tray_config.set_key_value("filament_multi_colors", new ConfigOptionStrings{}); + for (int i = 0; i < tray.second->cols.size(); ++i) { + tray_config.opt("filament_multi_colors")->values.push_back(into_u8(wxColour("#" + tray.second->cols[i]).GetAsString(wxC2S_HTML_SYNTAX))); + } filament_ams_list.emplace(((n - 'A') * 4 + t - '1'), std::move(tray_config)); } } @@ -1619,6 +1627,17 @@ void Sidebar::sync_ams_list() ams.set_key_value("filament_changed", new ConfigOptionBool{res == wxID_YES || list2[i] != filament_id}); list2[i] = filament_id; } + + // BBS:Record consumables information before synchronization + std::vector color_before_sync; + std::vector is_support_before; + DynamicPrintConfig& project_config = wxGetApp().preset_bundle->project_config; + ConfigOptionStrings* color_opt = project_config.option("filament_colour"); + for (int i = 0; i < p->combos_filament.size(); ++i) { + is_support_before.push_back(is_support_filament(i)); + color_before_sync.push_back(color_opt->values[i]); + } + unsigned int unknowns = 0; auto n = wxGetApp().preset_bundle->sync_ams_list(unknowns); if (n == 0) { @@ -1637,13 +1656,32 @@ void Sidebar::sync_ams_list() dlg.ShowModal(); } wxGetApp().plater()->on_filaments_change(n); - for (auto &c : p->combos_filament) + for (auto& c : p->combos_filament) c->update(); wxGetApp().get_tab(Preset::TYPE_FILAMENT)->select_preset(wxGetApp().preset_bundle->filament_presets[0]); wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); dynamic_filament_list.update(); // Expand filament list p->m_panel_filament_content->SetMaxSize({-1, -1}); + // BBS:Synchronized consumables information + // auto calculation of flushing volumes + for (int i = 0; i < p->combos_filament.size(); ++i) { + if (i >= color_before_sync.size()) { + auto_calc_flushing_volumes(i); + } + else { + // if color changed + if (color_before_sync[i] != color_opt->values[i]) { + auto_calc_flushing_volumes(i); + } + // color don't change, but changes between supporting filament and non supporting filament + else { + bool flag = is_support_filament(i); + if (flag != is_support_before[i]) + auto_calc_flushing_volumes(i); + } + } + } Layout(); } @@ -1810,71 +1848,103 @@ std::string& Sidebar::get_search_line() return p->searcher.search_string(); } -void Sidebar::auto_calc_flushing_volumes(const int modify_id) { - auto& project_config = wxGetApp().preset_bundle->project_config; - auto& printer_config = wxGetApp().preset_bundle->printers.get_edited_preset().config; +void Sidebar::auto_calc_flushing_volumes(const int modify_id) +{ + auto& preset_bundle = wxGetApp().preset_bundle; + auto& project_config = preset_bundle->project_config; + auto& printer_config = preset_bundle->printers.get_edited_preset().config; + auto& ams_multi_color_filament = preset_bundle->ams_multi_color_filment; + auto& ams_filament_list = preset_bundle->filament_ams_list; + const std::vector& init_matrix = (project_config.option("flush_volumes_matrix"))->values; const std::vector& init_extruders = (project_config.option("flush_volumes_vector"))->values; ConfigOption* extra_flush_volume_opt = printer_config.option("nozzle_volume"); int extra_flush_volume = extra_flush_volume_opt ? (int)extra_flush_volume_opt->getFloat() : 0; ConfigOptionFloat* flush_multi_opt = project_config.option("flush_multiplier"); float flush_multiplier = flush_multi_opt ? flush_multi_opt->getFloat() : 1.f; - vector matrix = init_matrix; + std::vector matrix = init_matrix; int m_min_flush_volume = extra_flush_volume; int m_max_flush_volume = Slic3r::g_max_flush_volume; unsigned int m_number_of_extruders = (int)(sqrt(init_matrix.size()) + 0.001); + const std::vector extruder_colours = wxGetApp().plater()->get_extruder_colors_from_plater_config(); - vector m_colours; - for (const std::string& color : extruder_colours) { - m_colours.push_back(wxColor(color)); + std::vector> multi_colours; + + // Support for multi-color filament + for (int i = 0; i < extruder_colours.size(); ++i) { + std::vector single_filament; + if (i < ams_multi_color_filament.size()) { + if (!ams_multi_color_filament[i].empty()) { + std::vector colors = ams_multi_color_filament[i]; + for (int j = 0; j < colors.size(); ++j) { + single_filament.push_back(wxColour(colors[j])); + } + multi_colours.push_back(single_filament); + continue; + } + } + + single_filament.push_back(wxColour(extruder_colours[i])); + multi_colours.push_back(single_filament); } - if (modify_id >= 0 && modify_id < m_colours.size()) { - for (int i = 0; i < m_colours.size(); ++i) { + + if (modify_id >= 0 && modify_id < multi_colours.size()) { + for (int i = 0; i < multi_colours.size(); ++i) { + + Slic3r::FlushVolCalculator calculator(m_min_flush_volume, m_max_flush_volume); + + // from to modify int from_idx = i; if (from_idx != modify_id) { - const wxColour& from = m_colours[from_idx]; + int flushing_volume = 0; bool is_from_support = is_support_filament(from_idx); - const wxColour& to = m_colours[modify_id]; bool is_to_support = is_support_filament(modify_id); - int flushing_volume = 0; if (is_to_support) { flushing_volume = Slic3r::g_flush_volume_to_support; } else { - const wxColour& to = m_colours[modify_id]; - Slic3r::FlushVolCalculator calculator(m_min_flush_volume, m_max_flush_volume); - flushing_volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); - if (is_from_support) { - flushing_volume = std::max(Slic3r::g_min_flush_volume_from_support, flushing_volume); + for (int j = 0; j < multi_colours[from_idx].size(); ++j) { + const wxColour& from = multi_colours[from_idx][j]; + for (int k = 0; k < multi_colours[modify_id].size(); ++k) { + const wxColour& to = multi_colours[modify_id][k]; + int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); + flushing_volume = std::max(flushing_volume, volume); + } } + if (is_from_support) + flushing_volume = std::max(flushing_volume, Slic3r::g_min_flush_volume_from_support); } matrix[m_number_of_extruders * from_idx + modify_id] = flushing_volume; } + + // modify to to int to_idx = i; if (to_idx != modify_id) { - const wxColour& from = m_colours[modify_id]; bool is_from_support = is_support_filament(modify_id); - const wxColour& to = m_colours[to_idx]; bool is_to_support = is_support_filament(to_idx); int flushing_volume = 0; if (is_to_support) { flushing_volume = Slic3r::g_flush_volume_to_support; } else { - const wxColour& to = m_colours[to_idx]; - Slic3r::FlushVolCalculator calculator(m_min_flush_volume, m_max_flush_volume); - flushing_volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); - if (is_from_support) { - flushing_volume = std::max(Slic3r::g_min_flush_volume_from_support, flushing_volume); + for (int j = 0; j < multi_colours[modify_id].size(); ++j) { + const wxColour& from = multi_colours[modify_id][j]; + for (int k = 0; k < multi_colours[to_idx].size(); ++k) { + const wxColour& to = multi_colours[to_idx][k]; + int volume = calculator.calc_flush_vol(from.Alpha(), from.Red(), from.Green(), from.Blue(), to.Alpha(), to.Red(), to.Green(), to.Blue()); + flushing_volume = std::max(flushing_volume, volume); + } } + if (is_from_support) + flushing_volume = std::max(flushing_volume, Slic3r::g_min_flush_volume_from_support); + + matrix[m_number_of_extruders * modify_id + to_idx] = flushing_volume; } - matrix[m_number_of_extruders * modify_id + to_idx] = flushing_volume; } } } (project_config.option("flush_volumes_matrix"))->values = std::vector(matrix.begin(), matrix.end()); - wxGetApp().preset_bundle->export_selections(*wxGetApp().app_config); wxGetApp().plater()->update_project_dirty_from_presets(); @@ -2660,7 +2730,7 @@ Plater::priv::priv(Plater *q, MainFrame *main_frame) m_aui_mgr.Update(); } - menus.init(q); + menus.init(main_frame); // Events: @@ -3412,7 +3482,7 @@ std::vector Plater::priv::load_files(const std::vector& input_ int progress_percent = static_cast(100.0f * static_cast(i) / static_cast(input_files.size())); const auto real_filename = (strategy & LoadStrategy::Restore) ? input_files[++i].filename() : filename; const auto dlg_info = _L("Loading file") + ": " + from_path(real_filename); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": load file %1%") % filename; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": load file %1%") % filename; dlg_cont = dlg.Update(progress_percent, dlg_info); if (!dlg_cont) return empty_result; @@ -5074,7 +5144,7 @@ void Plater::priv::export_gcode(fs::path output_path, bool output_path_on_remova { wxCHECK_RET(!(output_path.empty()), "export_gcode: output_path and upload_job empty"); - BOOST_LOG_TRIVIAL(info) << boost::format("export_gcode: output_path %1%")%output_path.string(); + BOOST_LOG_TRIVIAL(trace) << boost::format("export_gcode: output_path %1%")%output_path.string(); if (model.objects.empty()) return; @@ -6909,10 +6979,14 @@ void Plater::priv::on_filament_color_changed(wxCommandEvent &event) { //q->update_all_plate_thumbnails(true); //q->get_preview_canvas3D()->update_plate_thumbnails(); + int modify_id = event.GetInt(); if (wxGetApp().app_config->get("auto_calculate") == "true") { - int modify_id = event.GetInt(); sidebar->auto_calc_flushing_volumes(modify_id); } + + auto& ams_multi_color_filment = wxGetApp().preset_bundle->ams_multi_color_filment; + if (modify_id >= 0 && modify_id < ams_multi_color_filment.size()) + ams_multi_color_filment[modify_id].clear(); } void Plater::priv::install_network_plugin(wxCommandEvent &event) @@ -7257,7 +7331,7 @@ wxString Plater::priv::get_project_name() //BBS void Plater::priv::set_project_name(const wxString& project_name) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " project is:" << project_name; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " project is:" << project_name; m_project_name = project_name; //update topbar title wxGetApp().mainframe->SetTitle(m_project_name); @@ -7287,7 +7361,7 @@ void Plater::priv::set_project_filename(const wxString& filename) full_path.replace_extension(""); m_project_folder = full_path.parent_path(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " project folder is:" << m_project_folder.string(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " project folder is:" << m_project_folder.string(); //BBS wxString project_name = from_u8(full_path.filename().string()); @@ -7803,16 +7877,29 @@ void Plater::priv::on_modify_filament(SimpleEvent &evt) { FilamentInfomation *filament_info = static_cast(evt.GetEventObject()); int res; + std::shared_ptr need_edit_preset; { EditFilamentPresetDialog dlg(wxGetApp().mainframe, filament_info); res = dlg.ShowModal(); + need_edit_preset = dlg.get_need_edit_preset(); } wxGetApp().mainframe->update_side_preset_ui(); update_ui_from_settings(); sidebar->update_all_preset_comboboxes(); if (wxID_EDIT == res) { + Tab *tab = wxGetApp().get_tab(Preset::Type::TYPE_FILAMENT); + //tab->restore_last_select_item(); + if (tab == nullptr) { return; } + // Popup needs to be called before "restore_last_select_item", otherwise the page may not be updated wxGetApp().params_dialog()->Popup(); + tab->restore_last_select_item(); + // Opening Studio and directly accessing the Filament settings interface through the edit preset button will not take effect and requires manual settings. + tab->set_just_edit(true); + tab->select_preset(need_edit_preset->name); + // when some preset have modified, if the printer is not need_edit_preset_name compatible printer, the preset will jump to other preset, need select again + if (!need_edit_preset->is_compatible) tab->select_preset(need_edit_preset->name); } + } void Plater::priv::enter_gizmos_stack() @@ -8206,6 +8293,7 @@ void Plater::priv::record_start_print_preset(std::string action) { // record start print preset try { json j; + j["user_mode"] = wxGetApp().get_mode_str(); int plate_count = partplate_list.get_plate_count(); j["plate_count"] = plate_count; unsigned int obj_count = model.objects.size(); @@ -8314,6 +8402,11 @@ int Plater::new_project(bool skip_confirm, bool silent, const wxString& project_ get_notification_manager()->bbl_close_plateinfo_notification(); get_notification_manager()->bbl_close_preview_only_notification(); get_notification_manager()->bbl_close_3mf_warn_notification(); + get_notification_manager()->close_notification_of_type(NotificationType::PlaterError); + get_notification_manager()->close_notification_of_type(NotificationType::PlaterWarning); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingError); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingSeriousWarning); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingWarning); if (!silent) wxGetApp().mainframe->select_tab(MainFrame::tp3DEditor); @@ -8366,6 +8459,7 @@ void Plater::load_project(wxString const& filename2, wxString const& originfile) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "filename is: " << filename2 << "and originfile is: " << originfile; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__; auto filename = filename2; auto check = [&filename, this] (bool yes_or_no) { if (!yes_or_no && !wxGetApp().check_and_save_current_preset_changes(_L("Load project"), @@ -8399,6 +8493,11 @@ void Plater::load_project(wxString const& filename2, get_notification_manager()->bbl_close_plateinfo_notification(); get_notification_manager()->bbl_close_preview_only_notification(); get_notification_manager()->bbl_close_3mf_warn_notification(); + get_notification_manager()->close_notification_of_type(NotificationType::PlaterError); + get_notification_manager()->close_notification_of_type(NotificationType::PlaterWarning); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingError); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingSeriousWarning); + get_notification_manager()->close_notification_of_type(NotificationType::SlicingWarning); auto path = into_path(filename); @@ -8498,7 +8597,7 @@ int Plater::save_project(bool saveAs) Slic3r::remove_backup(model(), false); p->set_project_filename(filename); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << filename; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << filename; up_to_date(true, false); up_to_date(true, true); @@ -8521,7 +8620,7 @@ int Plater::save_project(bool saveAs) //BBS import model by model id void Plater::import_model_id(wxString download_info) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " download info: " << download_info; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " download info: " << download_info; wxString download_origin_url = download_info; wxString download_url; @@ -9359,7 +9458,8 @@ void Plater::load_gcode() //BBS: remove GCodeViewer as seperate APP logic void Plater::load_gcode(const wxString& filename) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " entry and filename: " << filename; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " entry and filename: " << filename; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__; if (! is_gcode_file(into_u8(filename)) || (m_last_loaded_gcode == filename && m_only_gcode) ) @@ -10578,7 +10678,7 @@ void Plater::export_gcode(bool prefer_removable) PresetBundle *preset_bundle = wxGetApp().preset_bundle; if (preset_bundle) { - j["Gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + j["gcode_printer_model"] = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); } NetworkAgent *agent = wxGetApp().getAgent(); } catch (...) {} @@ -10691,7 +10791,7 @@ TriangleMesh Plater::combine_mesh_fff(const ModelObject& mo, int instance_id, st std::vector csgmesh; csgmesh.reserve(2 * mo.volumes.size()); bool has_splitable_volume = csg::model_to_csgmesh(mo, Transform3d::Identity(), std::back_inserter(csgmesh), - csg::mpartsPositive | csg::mpartsNegative | csg::mpartsDoSplits); + csg::mpartsPositive | csg::mpartsNegative); if (csg::check_csgmesh_booleans(Range{ std::begin(csgmesh), std::end(csgmesh) }) == csgmesh.end()) { try { @@ -11085,9 +11185,12 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy const std::string path_u8 = into_u8(path); wxBusyCursor wait; - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") %output_path.string()%(strategy & SaveStrategy::Backup)%export_plate_idx %(unsigned int)strategy; + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(": path=%1%, backup=%2%, export_plate_idx=%3%, SaveStrategy=%4%") + % std::string("") % (strategy & SaveStrategy::Backup) % export_plate_idx % (unsigned int)strategy; + //BBS: add plate logic for thumbnail generate std::vector thumbnails; std::vector calibration_thumbnails; @@ -11241,7 +11344,7 @@ int Plater::export_3mf(const boost::filesystem::path& output_path, SaveStrategy if (!(store_params.strategy & SaveStrategy::Silence)) { // Success p->set_project_filename(path); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << path; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << __LINE__ << " call set_project_filename: " << path; } } else { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 40b3dc7fb3a..2ef0d3c96d4 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -664,6 +664,7 @@ wxBoxSizer *PreferencesDialog::create_item_checkbox(wxString title, wxWindow *pa } else { wxGetApp().stop_sync_user_preset(); } + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " sync_user_preset: " << (sync ? "true" : "false"); } #ifdef __WXMSW__ diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 2ecbb5e0826..d037a62394a 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -1424,7 +1424,7 @@ void GUI::CalibrateFilamentComboBox::load_tray(DynamicPrintConfig &config) auto &filaments = m_collection->get_presets(); auto iter = std::find_if(filaments.begin(), filaments.end(), [this](auto &f) { bool is_compatible = m_preset_bundle->calibrate_filaments.find(&f) != m_preset_bundle->calibrate_filaments.end(); - return is_compatible && f.is_system && f.filament_id == m_filament_id; + return is_compatible && f.filament_id == m_filament_id; }); //if (iter == filaments.end() && !m_filament_type.empty()) { // auto filament_type = "Generic " + m_filament_type; diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp index 71483a6665e..aeba2483486 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.cpp +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.cpp @@ -469,29 +469,6 @@ PrinterFileSystem::File const &PrinterFileSystem::GetFile(size_t index, bool &se return m_file_list[m_group_month[index]]; } -int PrinterFileSystem::RecvData(std::function const & callback) -{ - int result = 0; - while (true) { - Bambu_Sample sample; - result = Bambu_ReadSample(m_session.tunnel, &sample); - if (result == Bambu_success) { - result = callback(sample); - if (result == 1) - continue; - } else if (result == Bambu_would_block) { - boost::this_thread::sleep(boost::posix_time::seconds(1)); - continue; - } else if (result == Bambu_stream_end) { - result = 0; - } else { - result = ERROR_PIPE; - } - break; - } - return result; -} - void PrinterFileSystem::Attached() { boost::unique_lock lock(m_mutex); diff --git a/src/slic3r/GUI/Printer/PrinterFileSystem.h b/src/slic3r/GUI/Printer/PrinterFileSystem.h index d648b785b35..2900685f8cf 100644 --- a/src/slic3r/GUI/Printer/PrinterFileSystem.h +++ b/src/slic3r/GUI/Printer/PrinterFileSystem.h @@ -280,8 +280,6 @@ class PrinterFileSystem : public wxEvtHandler, public boost::enable_shared_from_ void Reconnect(boost::unique_lock & l, int result); - int RecvData(std::function const & callback); - template void PostCallback(Callback const& callback, int result, T const& resp) { diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index 52227037f66..bb0127fe7ee 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -2822,8 +2822,10 @@ void SelectMachineDialog::on_send_print() // update ota version NetworkAgent* agent = wxGetApp().getAgent(); - if (agent) - agent->track_update_property("dev_ota_version", obj_->get_ota_version()); + if (agent) { + std::string dev_ota_str = "dev_ota_ver:" + obj_->dev_id; + agent->track_update_property(dev_ota_str, obj_->get_ota_version()); + } replace_job(*m_worker, std::move(m_print_job)); BOOST_LOG_TRIVIAL(info) << "print_job: start print job"; @@ -3442,15 +3444,16 @@ void SelectMachineDialog::update_show_status() } } - if (has_timelapse_warning()) { - show_status(PrintDialogStatus::PrintStatusTimelapseWarning); - return; - } - // no ams if (!obj_->has_ams() || !m_checkbox_list["use_ams"]->GetValue()) { - if (!has_tips(obj_)) - show_status(PrintDialogStatus::PrintStatusReadingFinished); + if (!has_tips(obj_)) { + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + } + else { + show_status(PrintDialogStatus::PrintStatusReadingFinished); + } + } return; } @@ -3458,7 +3461,14 @@ void SelectMachineDialog::update_show_status() if (!m_checkbox_list["use_ams"]->GetValue()) { m_ams_mapping_result.clear(); sync_ams_mapping_result(m_ams_mapping_result); - show_status(PrintDialogStatus::PrintStatusDisableAms); + + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + } + else { + show_status(PrintDialogStatus::PrintStatusDisableAms); + } + return; } } @@ -3477,7 +3487,14 @@ void SelectMachineDialog::update_show_status() show_status(PrintDialogStatus::PrintStatusNeedUpgradingAms, params); } else { if (obj_->is_valid_mapping_result(m_ams_mapping_result)) { - show_status(PrintDialogStatus::PrintStatusAmsMappingByOrder); + + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + } + else { + show_status(PrintDialogStatus::PrintStatusAmsMappingByOrder); + } + } else { int mismatch_index = -1; for (int i = 0; i < m_ams_mapping_result.size(); i++) { @@ -3498,20 +3515,31 @@ void SelectMachineDialog::update_show_status() } if (m_ams_mapping_res) { - show_status(PrintDialogStatus::PrintStatusAmsMappingSuccess); + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + } + else { + show_status(PrintDialogStatus::PrintStatusAmsMappingSuccess); + } return; } else { if (obj_->is_valid_mapping_result(m_ams_mapping_result)) { - if (!has_tips(obj_)) - show_status(PrintDialogStatus::PrintStatusAmsMappingValid); - return; + if (!has_tips(obj_)){ + if (has_timelapse_warning()) { + show_status(PrintDialogStatus::PrintStatusTimelapseWarning); + } + else { + show_status(PrintDialogStatus::PrintStatusAmsMappingValid); + } + return; + } } else { show_status(PrintDialogStatus::PrintStatusAmsMappingInvalid); return; } - } + } } bool SelectMachineDialog::has_timelapse_warning() diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 988f5e26cfb..2557b019493 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2026,7 +2026,7 @@ void StatusPanel::update(MachineObject *obj) m_project_task_panel->Thaw(); #if !BBL_RELEASE_TO_PUBLIC - auto delay1 = std::chrono::duration_cast(obj->last_update_time - std::chrono::system_clock::now()).count(); + auto delay1 = std::chrono::duration_cast(obj->last_utc_time - std::chrono::system_clock::now()).count(); auto delay2 = std::chrono::duration_cast(obj->last_push_time - std::chrono::system_clock::now()).count(); auto delay = wxString::Format(" %ld/%ld", delay1, delay2); m_staticText_timelapse @@ -3228,7 +3228,7 @@ void StatusPanel::on_axis_ctrl_e_down_10(wxCommandEvent &event) void StatusPanel::on_start_unload(wxCommandEvent &event) { - if (obj) obj->command_unload_filament(); + if (obj) obj->command_ams_switch(255); } void StatusPanel::on_set_bed_temp() @@ -3504,7 +3504,7 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) for (auto col : tray_it->second->cols) { cols.push_back( AmsTray::decode_color(col)); } - + m_filament_setting_dlg->set_ctype(tray_it->second->ctype); m_filament_setting_dlg->ams_filament_id = tray_it->second->setting_id; if (m_filament_setting_dlg->ams_filament_id.empty()) { @@ -3512,6 +3512,7 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event) } else { m_filament_setting_dlg->set_color(color); + m_filament_setting_dlg->set_colors(cols); } m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(tray_it->second->tag_uid); @@ -3559,12 +3560,19 @@ void StatusPanel::on_ext_spool_edit(wxCommandEvent &event) wxColor color = AmsTray::decode_color(obj->vt_tray.color); m_filament_setting_dlg->ams_filament_id = obj->vt_tray.setting_id; + std::vector cols; + for (auto col : obj->vt_tray.cols) { + cols.push_back(AmsTray::decode_color(col)); + } + m_filament_setting_dlg->set_ctype(obj->vt_tray.ctype); if (m_filament_setting_dlg->ams_filament_id.empty()) { m_filament_setting_dlg->set_empty_color(color); } else { m_filament_setting_dlg->set_color(color); + m_filament_setting_dlg->set_colors(cols); + } m_filament_setting_dlg->m_is_third = !MachineObject::is_bbl_filament(obj->vt_tray.tag_uid); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index 710898e72f7..bb97e53d267 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1370,6 +1370,9 @@ static wxString get_string_value(std::string opt_key, const DynamicPrintConfig& else if (opt_key == "thumbnails") { return get_thumbnails_string(config.option(opt_key)->values); } + else if (opt_key == "head_wrap_detect_zone") { + return get_thumbnails_string(config.option(opt_key)->values); + } Vec2d val = config.opt(opt_key)->get_at(opt_idx); return from_u8((boost::format("[%1%]") % ConfigOptionPoint(val).serialize()).str()); } diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 2ca91bd3b2c..52a0752996e 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -45,21 +45,50 @@ static wxString update_custom_filaments() std::map> temp_filament_id_to_presets = preset_bundle->filaments.get_filament_presets(); std::vector> need_sort; + bool need_delete_some_filament = false; for (std::pair> filament_id_to_presets : temp_filament_id_to_presets) { std::string filament_id = filament_id_to_presets.first; if (filament_id.empty()) continue; + if (filament_id == "null") { + need_delete_some_filament = true; + } + bool filament_with_base_id = false; + bool not_need_show = false; + std::string filament_name; for (const Preset *preset : filament_id_to_presets.second) { - if (preset->is_system || filament_id.empty() || "null" == filament_id || filament_id.size() != 8 || filament_id[0] != 'P') break; - auto filament_vendor = dynamic_cast (const_cast(preset)->config.option("filament_vendor",false)); - if(filament_vendor&&filament_vendor->values.size()&&filament_vendor->values[0] == "Generic") break; - std::string preset_name = preset->name; - size_t index_at = preset_name.find(" @"); - if (std::string::npos != index_at) { preset_name = preset_name.substr(0, index_at); } - need_sort.push_back(std::make_pair(preset_name, preset->filament_id)); - break; + if (preset->is_system) { + not_need_show = true; + break; + } + if (preset->inherits() != "") continue; + if (!preset->base_id.empty()) filament_with_base_id = true; + + if (!not_need_show) { + auto filament_vendor = dynamic_cast(const_cast(preset)->config.option("filament_vendor", false)); + if (filament_vendor && filament_vendor->values.size() && filament_vendor->values[0] == "Generic") not_need_show = true; + } + + if (filament_name.empty()) { + std::string preset_name = preset->name; + size_t index_at = preset_name.find(" @"); + if (std::string::npos != index_at) { preset_name = preset_name.substr(0, index_at); } + filament_name = preset_name; + } + } + if (not_need_show) continue; + if (!filament_name.empty()) { + if (filament_with_base_id) { + need_sort.push_back(std::make_pair("[Action Required] " + filament_name, filament_id)); + } else { + + need_sort.push_back(std::make_pair(filament_name, filament_id)); + } } } std::sort(need_sort.begin(), need_sort.end(), [](const std::pair &a, const std::pair &b) { return a.first < b.first; }); + if (need_delete_some_filament) { + need_sort.push_back(std::make_pair("[Action Required]", "null")); + } json temp_j; for (std::pair &filament_name_to_id : need_sort) { temp_j["name"] = filament_name_to_id.first; @@ -162,7 +191,7 @@ GuideFrame::~GuideFrame() void GuideFrame::load_url(wxString &url) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__<< " enter, url=" << url.ToStdString(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__<< " enter, url=" << url.ToStdString(); WebView::LoadUrl(m_browser, url); m_browser->SetFocus(); UpdateState(); @@ -523,7 +552,7 @@ void GuideFrame::OnError(wxWebViewEvent &evt) // Show the info bar with an error // m_info->ShowMessage(_L("An error occurred loading ") + evt.GetURL() + // "\n" + "'" + category + "'", wxICON_ERROR); - BOOST_LOG_TRIVIAL(info) << "GuideFrame::OnError: An error occurred loading " << evt.GetURL() << category; + BOOST_LOG_TRIVIAL(trace) << "GuideFrame::OnError: An error occurred loading " << evt.GetURL() << category; UpdateState(); } @@ -1581,7 +1610,7 @@ bool GuideFrame::LoadFile(std::string jPath, std::string &sContent) std::stringstream buffer; buffer << t.rdbuf(); sContent=buffer.str(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", load %1% into buffer")% jPath; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << boost::format(", load %1% into buffer")% jPath; } catch (std::exception &e) { diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index 538ecf1e47d..98d24d4175a 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -220,7 +220,7 @@ WebViewPanel::WebViewPanel(wxWindow *parent) WebViewPanel::~WebViewPanel() { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Start"; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << " Start"; SetEvtHandlerEnabled(false); delete m_tools_menu; @@ -230,7 +230,7 @@ WebViewPanel::~WebViewPanel() delete m_LoginUpdateTimer; m_LoginUpdateTimer = NULL; } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " End"; + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << " End"; } @@ -459,9 +459,9 @@ void WebViewPanel::OpenModelDetail(std::string id, NetworkAgent *agent) { if (url.find("?") != std::string::npos) { - url += "&from=bambustudio"; + url += "&from=orcaslicer"; } else { - url += "?from=bambustudio"; + url += "?from=orcaslicer"; } wxLaunchDefaultBrowser(url); @@ -536,7 +536,7 @@ void WebViewPanel::update_mode() */ void WebViewPanel::OnNavigationRequest(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); const wxString &url = evt.GetURL(); if (url.StartsWith("File://") || url.StartsWith("file://")) { if (!url.Contains("/web/homepage/index.html")) { @@ -580,7 +580,7 @@ void WebViewPanel::OnNavigationComplete(wxWebViewEvent& evt) { m_browser->Show(); Layout(); - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Navigation complete; url='" + evt.GetURL() + "'"); UpdateState(); @@ -591,7 +591,7 @@ void WebViewPanel::OnNavigationComplete(wxWebViewEvent& evt) */ void WebViewPanel::OnDocumentLoaded(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetTarget().ToUTF8().data(); // Only notify if the document is the main frame, not a subframe if (evt.GetURL() == m_browser->GetCurrentURL()) { @@ -604,7 +604,7 @@ void WebViewPanel::OnDocumentLoaded(wxWebViewEvent& evt) void WebViewPanel::OnTitleChanged(wxWebViewEvent &evt) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetString().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetString().ToUTF8().data(); // wxGetApp().CallAfter([this] { SendRecentList(); }); } @@ -613,7 +613,7 @@ void WebViewPanel::OnTitleChanged(wxWebViewEvent &evt) */ void WebViewPanel::OnNewWindow(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetURL().ToUTF8().data(); wxString flag = " (other)"; if (evt.GetNavigationAction() == wxWEBVIEW_NAV_ACTION_USER) @@ -634,7 +634,7 @@ void WebViewPanel::OnNewWindow(wxWebViewEvent& evt) void WebViewPanel::OnScriptMessage(wxWebViewEvent& evt) { - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << evt.GetString().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << evt.GetString().ToUTF8().data(); // update login status if (m_LoginUpdateTimer == nullptr) { BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " Create Timer"; @@ -880,7 +880,7 @@ void WebViewPanel::OnError(wxWebViewEvent& evt) WX_ERROR_CASE(wxWEBVIEW_NAV_ERR_OTHER); } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": [" << category << "] " << evt.GetString().ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": [" << category << "] " << evt.GetString().ToUTF8().data(); if (wxGetApp().get_mode() == comDevelop) wxLogMessage("%s", "Error; url='" + evt.GetURL() + "', error='" + category + " (" + evt.GetString() + ")'"); diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index eb7367cb8dd..f70d16a7f11 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -49,6 +49,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo if (it != ams->trayList.end() && it->second->is_exists) { if (it->second->is_tray_info_ready()) { info.can_id = it->second->id; + info.ctype = it->second->ctype; info.material_name = it->second->get_display_filament_type(); if (!it->second->color.empty()) { info.material_colour = AmsTray::decode_color(it->second->color); @@ -78,6 +79,7 @@ bool AMSinfo::parse_ams_info(MachineObject *obj, Ams *ams, bool remain_flag, boo } else { info.can_id = it->second->id; info.material_name = ""; + info.ctype = 0; info.material_colour = AMS_TRAY_DEFAULT_COL; info.material_state = AMSCanType::AMS_CAN_TYPE_THIRDBRAND; wxColour(255, 255, 255); @@ -644,6 +646,7 @@ void AMSLib::create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const w m_bitmap_readonly = ScalableBitmap(this, "ams_readonly", 14); m_bitmap_readonly_light = ScalableBitmap(this, "ams_readonly_light", 14); m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68); + m_bitmap_transparent_def = ScalableBitmap(this, "transparent_ams_lib", 68); m_bitmap_extra_tray_left = ScalableBitmap(this, "extra_ams_tray_left", 80); m_bitmap_extra_tray_right = ScalableBitmap(this, "extra_ams_tray_right", 80); @@ -857,6 +860,10 @@ void AMSLib::render_generic_text(wxDC &dc) dc.SetFont(::Label::Body_13); dc.SetTextForeground(temp_text_colour); + auto alpha = m_info.material_colour.Alpha(); + if (alpha != 0 && alpha != 255) { + dc.SetTextForeground(*wxBLACK); + } auto libsize = GetSize(); if (m_info.material_state == AMSCanType::AMS_CAN_TYPE_THIRDBRAND @@ -903,6 +910,7 @@ void AMSLib::render_generic_text(wxDC &dc) auto pot_top = wxPoint((libsize.x - line_top_tsize.x) / 2, (libsize.y - line_top_tsize.y) / 2 - line_top_tsize.y + FromDIP(6)); dc.DrawText(line_top, pot_top); + auto pot_bottom = wxPoint((libsize.x - line_bottom_tsize.x) / 2, (libsize.y - line_bottom_tsize.y) / 2 + FromDIP(4)); dc.DrawText(line_bottom, pot_bottom); } @@ -966,7 +974,7 @@ void AMSLib::render_extra_lib(wxDC& dc) ScalableBitmap tray_bitmap_selected = m_can_index <= 1 ? m_bitmap_extra_tray_left_selected : m_bitmap_extra_tray_right_selected; - auto tmp_lib_colour = m_info.material_colour; + auto tmp_lib_colour = m_info.material_colour; auto temp_bitmap_third = m_bitmap_editable_light; auto temp_bitmap_brand = m_bitmap_readonly_light; @@ -1012,11 +1020,34 @@ void AMSLib::render_extra_lib(wxDC& dc) temp_bitmap_brand = m_bitmap_readonly; } + dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); + if (m_info.material_cols.size() > 1) { + int left = FromDIP(10); + int gwidth = std::round(size.x / (m_info.material_cols.size() - 1)); + //gradient + if (m_info.ctype == 0) { + for (int i = 0; i < m_info.material_cols.size() - 1; i++) { + auto rect = wxRect(left, FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20)); + dc.GradientFillLinear(rect, m_info.material_cols[i], m_info.material_cols[i + 1], wxEAST); + left += gwidth; + } + } + else { + int cols_size = m_info.material_cols.size(); + for (int i = 0; i < cols_size; i++) { + dc.SetBrush(wxBrush(m_info.material_cols[i])); + float x = FromDIP(10) + ((float)size.x - FromDIP(20)) * i / cols_size; + dc.DrawRoundedRectangle(x, FromDIP(10), ((float)size.x - FromDIP(20)) / cols_size, size.y - FromDIP(20), 0); + } + dc.SetBrush(wxBrush(tmp_lib_colour)); + } + } + else { + dc.SetBrush(wxBrush(tmp_lib_colour)); + dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20), 0); + } dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); dc.SetBrush(wxBrush(tmp_lib_colour)); - dc.DrawRoundedRectangle(FromDIP(10), FromDIP(10), size.x - FromDIP(20), size.y - FromDIP(20), 0); - - if (!m_disable_mode) { // edit icon if (m_info.material_state != AMSCanType::AMS_CAN_TYPE_EMPTY && m_info.material_state != AMSCanType::AMS_CAN_TYPE_NONE) @@ -1107,7 +1138,7 @@ void AMSLib::render_generic_lib(wxDC &dc) //draw remain int height = size.y - FromDIP(8); - int curr_height = height * float(m_info.material_remain * 1.0 / 100.0); + int curr_height = height * float(m_info.material_remain * 1.0 / 100.0); dc.SetFont(::Label::Body_13); int top = height - curr_height; @@ -1116,24 +1147,60 @@ void AMSLib::render_generic_lib(wxDC &dc) //transparent auto alpha = m_info.material_colour.Alpha(); if (alpha == 0) { - dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4)); + dc.DrawBitmap(m_bitmap_transparent_def.bmp(), FromDIP(4), FromDIP(4)); } - //gradient if (m_info.material_cols.size() > 1) { int left = FromDIP(4); float total_width = size.x - FromDIP(8); int gwidth = std::round(total_width / (m_info.material_cols.size() - 1)); + //gradient + if (m_info.ctype == 0) { + for (int i = 0; i < m_info.material_cols.size() - 1; i++) { - for (int i = 0; i < m_info.material_cols.size() - 1; i++) { + if ((left + gwidth) > (size.x - FromDIP(8))) { + gwidth = (size.x - FromDIP(4)) - left; + } - if ((left + gwidth) > (size.x - FromDIP(8))) { - gwidth = (size.x - FromDIP(4)) - left; + auto rect = wxRect(left, height - curr_height + FromDIP(4), gwidth, curr_height); + dc.GradientFillLinear(rect, m_info.material_cols[i], m_info.material_cols[i + 1], wxEAST); + left += gwidth; + } + } + else { + //multicolour + gwidth = std::round(total_width / m_info.material_cols.size()); + for (int i = 0; i < m_info.material_cols.size(); i++) { + dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); + dc.SetBrush(wxBrush(m_info.material_cols[i])); + if (i == 0 || i == m_info.material_cols.size() - 1) { +#ifdef __APPLE__ + dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height + FromDIP(4), gwidth, curr_height, m_radius); +#else + dc.DrawRoundedRectangle(left + gwidth * i, height - curr_height + FromDIP(4), gwidth, curr_height, m_radius - 1); +#endif + //add rectangle + int dr_gwidth = std::round(gwidth * 0.6); + if (i == 0) { + dc.DrawRectangle(left + gwidth - dr_gwidth, height - curr_height + FromDIP(4), dr_gwidth, curr_height); + } + else { + dc.DrawRectangle(left + gwidth*i, height - curr_height + FromDIP(4), dr_gwidth, curr_height); + } + } + else { + dc.DrawRectangle(left + gwidth * i, height - curr_height + FromDIP(4), gwidth, curr_height); + } + } + //reset pen and brush + if (m_selected || m_hover) { + dc.SetPen(wxPen(*wxTRANSPARENT_PEN)); + dc.SetBrush(wxBrush(tmp_lib_colour)); + } + else { + dc.SetPen(wxPen(tmp_lib_colour, 1, wxSOLID)); + dc.SetBrush(wxBrush(tmp_lib_colour)); } - - auto rect = wxRect(left, height - curr_height + FromDIP(4), gwidth, curr_height); - dc.GradientFillLinear(rect, m_info.material_cols[i], m_info.material_cols[i + 1], wxEAST); - left += gwidth; } } else { @@ -1141,6 +1208,23 @@ void AMSLib::render_generic_lib(wxDC &dc) dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius); #else dc.DrawRoundedRectangle(FromDIP(4), FromDIP(4) + top, size.x - FromDIP(8), curr_height, m_radius - 1); + if (alpha != 0 && alpha != 255) { + if (transparent_changed) { + std::string rgb = (tmp_lib_colour.GetAsString(wxC2S_HTML_SYNTAX)).ToStdString(); + if (rgb.size() == 8) { + //delete alpha value + rgb= rgb.substr(0, rgb.size() - 2); + } + float alpha_f = 0.3 * tmp_lib_colour.Alpha() / 255.0; + std::vector replace; + replace.push_back(rgb); + std::string fill_replace = "fill-opacity=\"" + std::to_string(alpha_f); + replace.push_back(fill_replace); + m_bitmap_transparent = ScalableBitmap(this, "transparent_ams_lib", 68, false, false, true, replace); + transparent_changed = false; + } + dc.DrawBitmap(m_bitmap_transparent.bmp(), FromDIP(4), FromDIP(4)); + } #endif } } @@ -1209,7 +1293,9 @@ void AMSLib::Update(Caninfo info, bool refresh) if (dev->get_selected_machine() && dev->get_selected_machine() != m_obj) { m_obj = dev->get_selected_machine(); } - + if (info.material_colour.Alpha() != 0 && info.material_colour.Alpha() != 255 && m_info.material_colour != info.material_colour) { + transparent_changed = true; + } m_info = info; Layout(); if (refresh) Refresh(); @@ -1245,7 +1331,9 @@ bool AMSLib::Enable(bool enable) { return wxWindow::Enable(enable); } void AMSLib::msw_rescale() { - m_bitmap_transparent.msw_rescale(); + //m_bitmap_transparent.msw_rescale(); + m_bitmap_transparent_def.msw_rescale(); + } /************************************************* @@ -3182,6 +3270,10 @@ void AMSControl::update_vams_kn_value(AmsTray tray, MachineObject* obj) m_vams_info.material_name = tray.get_display_filament_type(); m_vams_info.material_colour = tray.get_color(); m_vams_lib->m_info.material_name = tray.get_display_filament_type(); + auto col= tray.get_color(); + if (col.Alpha() != 0 && col.Alpha() != 255 && col.Alpha() != 254 && m_vams_lib->m_info.material_colour != col) { + m_vams_lib->transparent_changed = true; + } m_vams_lib->m_info.material_colour = tray.get_color(); m_vams_lib->Refresh(); } diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index 67f0c0ce18a..2313f84f9a9 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -140,6 +140,7 @@ struct Caninfo wxString material_name; wxColour material_colour = {*wxWHITE}; AMSCanType material_state; + int ctype=0; int material_remain = 100; float k = 0.0f; float n = 0.0f; @@ -298,6 +299,7 @@ class AMSLib : public wxWindow Caninfo m_info; MachineObject* m_obj = {nullptr}; int m_can_index = 0; + bool transparent_changed = { false }; AMSModel m_ams_model; void Update(Caninfo info, bool refresh = true); @@ -322,6 +324,7 @@ class AMSLib : public wxWindow ScalableBitmap m_bitmap_readonly; ScalableBitmap m_bitmap_readonly_light; ScalableBitmap m_bitmap_transparent; + ScalableBitmap m_bitmap_transparent_def; ScalableBitmap m_bitmap_extra_tray_left; ScalableBitmap m_bitmap_extra_tray_right; @@ -338,6 +341,7 @@ class AMSLib : public wxWindow bool m_hover = {false}; bool m_show_kn = {false}; bool m_support_cali = {false}; + double m_radius = {4}; wxColour m_border_color; diff --git a/src/slic3r/GUI/Widgets/WebView.cpp b/src/slic3r/GUI/Widgets/WebView.cpp index 38afbfbd466..5cb6eb4503a 100644 --- a/src/slic3r/GUI/Widgets/WebView.cpp +++ b/src/slic3r/GUI/Widgets/WebView.cpp @@ -251,7 +251,7 @@ wxWebView* WebView::CreateWebView(wxWindow * parent, wxString const & url) url2.Replace("\\", "/"); #endif if (!url2.empty()) { url2 = wxURI(url2).BuildURI(); } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": " << url2.ToUTF8(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << ": " << url2.ToUTF8(); #ifdef __WIN32__ wxWebView* webView = new WebViewEdge; @@ -337,7 +337,7 @@ void WebView::LoadUrl(wxWebView * webView, wxString const &url) url2.Replace("\\", "/"); #endif if (!url2.empty()) { url2 = wxURI(url2).BuildURI(); } - BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << url2.ToUTF8(); + BOOST_LOG_TRIVIAL(trace) << __FUNCTION__ << url2.ToUTF8(); webView->LoadURL(url2); } diff --git a/src/slic3r/GUI/WipeTowerDialog.cpp b/src/slic3r/GUI/WipeTowerDialog.cpp index 5f308366e65..eb5ea701ff7 100644 --- a/src/slic3r/GUI/WipeTowerDialog.cpp +++ b/src/slic3r/GUI/WipeTowerDialog.cpp @@ -11,10 +11,11 @@ #include "Widgets/Button.hpp" #include "slic3r/Utils/ColorSpaceConvert.hpp" #include "MainFrame.hpp" +#include "libslic3r/Config.hpp" #include - +using namespace Slic3r; using namespace Slic3r::GUI; int scale(const int val) { return val * Slic3r::GUI::wxGetApp().em_unit() / 10; } @@ -766,10 +767,29 @@ void WipingPanel::update_warning_texts() void WipingPanel::calc_flushing_volumes() { - for (int from_idx = 0; from_idx < m_colours.size(); from_idx++) { - const wxColour& from = m_colours[from_idx]; + auto& ams_multi_color_filament = wxGetApp().preset_bundle->ams_multi_color_filment; + std::vector> multi_colors; + + // Support for multi-color filament + for (int i = 0; i < m_colours.size(); ++i) { + std::vector single_filament; + if (i < ams_multi_color_filament.size()) { + if (!ams_multi_color_filament[i].empty()) { + std::vector colors = ams_multi_color_filament[i]; + for (int j = 0; j < colors.size(); ++j) { + single_filament.push_back(wxColour(colors[j])); + } + multi_colors.push_back(single_filament); + continue; + } + } + single_filament.push_back(wxColour(m_colours[i])); + multi_colors.push_back(single_filament); + } + + for (int from_idx = 0; from_idx < multi_colors.size(); ++from_idx) { bool is_from_support = is_support_filament(from_idx); - for (int to_idx = 0; to_idx < m_colours.size(); to_idx++) { + for (int to_idx = 0; to_idx < multi_colors.size(); ++to_idx) { bool is_to_support = is_support_filament(to_idx); if (from_idx == to_idx) { edit_boxes[to_idx][from_idx]->SetValue(std::to_string(0)); @@ -780,8 +800,15 @@ void WipingPanel::calc_flushing_volumes() flushing_volume = Slic3r::g_flush_volume_to_support; } else { - const wxColour& to = m_colours[to_idx]; - flushing_volume = calc_flushing_volume(from, to); + for (int i = 0; i < multi_colors[from_idx].size(); ++i) { + const wxColour& from = multi_colors[from_idx][i]; + for (int j = 0; j < multi_colors[to_idx].size(); ++j) { + const wxColour& to = multi_colors[to_idx][j]; + int volume = calc_flushing_volume(from, to); + flushing_volume = std::max(flushing_volume, volume); + } + } + if (is_from_support) { flushing_volume = std::max(Slic3r::g_min_flush_volume_from_support, flushing_volume); } diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 092c7a582f8..b53573d0194 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -7,7 +7,6 @@ #include -#include "BitmapCache.hpp" #include "GUI.hpp" #include "GUI_App.hpp" #include "GUI_ObjectList.hpp" @@ -432,10 +431,14 @@ wxBitmap create_scaled_bitmap( const std::string& bmp_name_in, const bool grayscale/* = false*/, const std::string& new_color/* = std::string()*/, // color witch will used instead of orange const bool menu_bitmap/* = false*/, - const bool resize/* = false*/) + const bool resize/* = false*/, + const bool bitmap2/* = false*/, + const vector& array_new_color/* = vector*/)//used for semi transparent material) { static Slic3r::GUI::BitmapCache cache; - + if (bitmap2) { + return create_scaled_bitmap2(bmp_name_in, cache, win, px_cnt, grayscale, resize, array_new_color); + } unsigned int width = 0; unsigned int height = (unsigned int) (win->FromDIP(px_cnt) + 0.5f); @@ -462,6 +465,25 @@ wxBitmap create_scaled_bitmap( const std::string& bmp_name_in, return *bmp; } +wxBitmap create_scaled_bitmap2(const std::string& bmp_name_in, Slic3r::GUI::BitmapCache& cache, wxWindow* win/* = nullptr*/ , + const int px_cnt/* = 16*/, const bool grayscale/* = false*/ , const bool resize/* = false*/ , + const vector& array_new_color/* = vector()*/) // color witch will used instead of orange +{ + unsigned int width = 0; + unsigned int height = (unsigned int)(win->FromDIP(px_cnt) + 0.5f); + + std::string bmp_name = bmp_name_in; + boost::replace_last(bmp_name, ".png", ""); + + wxBitmap* bmp = cache.load_svg2(bmp_name, width, height, grayscale, false, array_new_color, resize ? em_unit(win) * 0.1f : 0.f); + if (bmp == nullptr) { + // No SVG found + throw Slic3r::RuntimeError("Could not load bitmap: " + bmp_name); + } + return *bmp; +} + + wxBitmap* get_default_extruder_color_icon(bool thin_icon/* = false*/) { static Slic3r::GUI::BitmapCache bmp_cache; @@ -858,11 +880,13 @@ ScalableBitmap::ScalableBitmap( wxWindow *parent, const std::string& icon_name/* = ""*/, const int px_cnt/* = 16*/, const bool grayscale/* = false*/, - const bool resize/* = false*/): + const bool resize/* = false*/, + const bool bitmap2/* = false*/, + const std::vector& new_color/* = vector*/) : m_parent(parent), m_icon_name(icon_name), m_px_cnt(px_cnt), m_grayscale(grayscale), m_resize(resize) // BBS: support resize by fill border { - m_bmp = create_scaled_bitmap(icon_name, parent, px_cnt, m_grayscale, std::string(), false, resize); + m_bmp = create_scaled_bitmap(icon_name, parent, px_cnt, m_grayscale, std::string(), false, resize, bitmap2, new_color); if (px_cnt == 0) { m_px_cnt = m_bmp.GetHeight(); // scale unsigned int height = (unsigned int) (parent->FromDIP(m_px_cnt) + 0.5f); diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index 44e289ed09e..3859fb26f05 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -15,7 +15,7 @@ #include #include - +#include "BitmapCache.hpp" #include "Widgets/PopupWindow.hpp" #ifdef __WXMSW__ @@ -59,7 +59,13 @@ wxBitmap create_menu_bitmap(const std::string& bmp_name); wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullptr, const int px_cnt = 16, const bool grayscale = false, const std::string& new_color = std::string(), // color witch will used instead of orange - const bool menu_bitmap = false, const bool resize = false); + const bool menu_bitmap = false, const bool resize = false, + const bool bitmap2 = false,// for create_scaled_bitmap2 + const std::vector& array_new_color = std::vector()); +//used for semi transparent material +wxBitmap create_scaled_bitmap2(const std::string& bmp_name_in, Slic3r::GUI::BitmapCache& cache, wxWindow* win = nullptr, + const int px_cnt = 16, const bool grayscale = false, const bool resize = false, + const std::vector& array_new_color = std::vector()); // color witch will used instead of orange #else wxBitmap create_scaled_bitmap(const std::string& bmp_name, wxWindow *win = nullptr, const int px_cnt = 16, const bool grayscale = false, const bool resize = false); @@ -153,7 +159,9 @@ class ScalableBitmap const std::string& icon_name = "", const int px_cnt = 16, const bool grayscale = false, - const bool resize = false); // BBS: support resize by fill border + const bool resize = false, + const bool bitmap2 = false, + const std::vector& new_color = std::vector());// BBS: support resize by fill border ~ScalableBitmap() {} diff --git a/src/slic3r/GUI/wxMediaCtrl2.cpp b/src/slic3r/GUI/wxMediaCtrl2.cpp index 43c19271454..86703524504 100644 --- a/src/slic3r/GUI/wxMediaCtrl2.cpp +++ b/src/slic3r/GUI/wxMediaCtrl2.cpp @@ -245,7 +245,7 @@ WXLRESULT wxMediaCtrl2::MSWWindowProc(WXUINT nMsg, } } } - BOOST_LOG_TRIVIAL(info) << msg.ToUTF8().data(); + BOOST_LOG_TRIVIAL(trace) << msg.ToUTF8().data(); return 0; } return wxMediaCtrl::MSWWindowProc(nMsg, wParam, lParam); diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index 98329c61583..e09bcbe227a 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1060,29 +1060,13 @@ bool PresetUpdater::priv::install_bundles_rsrc(std::vector bundles, updates.updates.emplace_back(std::move(path_in_rsrc), std::move(path_in_vendors), Version(), bundle, "", ""); //BBS: add directory support - auto print_in_rsrc = (this->rsrc_path / bundle / PRESET_PRINT_NAME); - auto print_in_vendors = (this->vendor_path / bundle / PRESET_PRINT_NAME); + auto print_in_rsrc = this->rsrc_path / bundle; + auto print_in_vendors = this->vendor_path / bundle; fs::path print_folder(print_in_vendors); if (fs::exists(print_folder)) fs::remove_all(print_folder); fs::create_directories(print_folder); updates.updates.emplace_back(std::move(print_in_rsrc), std::move(print_in_vendors), Version(), bundle, "", "", false, true); - - auto filament_in_rsrc = (this->rsrc_path / bundle / PRESET_FILAMENT_NAME); - auto filament_in_vendors = (this->vendor_path / bundle / PRESET_FILAMENT_NAME); - fs::path filament_folder(filament_in_vendors); - if (fs::exists(filament_folder)) - fs::remove_all(filament_folder); - fs::create_directories(filament_folder); - updates.updates.emplace_back(std::move(filament_in_rsrc), std::move(filament_in_vendors), Version(), bundle, "", "", false, true); - - auto machine_in_rsrc = (this->rsrc_path / bundle / PRESET_PRINTER_NAME); - auto machine_in_vendors = (this->vendor_path / bundle / PRESET_PRINTER_NAME); - fs::path machine_folder(machine_in_vendors); - if (fs::exists(machine_folder)) - fs::remove_all(machine_folder); - fs::create_directories(machine_folder); - updates.updates.emplace_back(std::move(machine_in_rsrc), std::move(machine_in_vendors), Version(), bundle, "", "", false, true); } return perform_updates(std::move(updates), snapshot); @@ -1256,14 +1240,7 @@ Updates PresetUpdater::priv::get_config_updates(const Semver &old_slic3r_version updates.updates.emplace_back(std::move(file_path), std::move(path_in_vendor.string()), std::move(version), vendor_name, changelog, "", force_update, false); //BBS: add directory support - auto print_in_vendors = (vendor_path / vendor_name / PRESET_PRINT_NAME); - updates.updates.emplace_back(std::move(print_in_cache), std::move(print_in_vendors.string()), Version(), vendor_name, "", "", force_update, true); - - auto filament_in_vendors = (vendor_path / vendor_name / PRESET_FILAMENT_NAME); - updates.updates.emplace_back(std::move(filament_in_cache), std::move(filament_in_vendors.string()), Version(), vendor_name, "", "", force_update, true); - - auto machine_in_vendors = (vendor_path / vendor_name / PRESET_PRINTER_NAME); - updates.updates.emplace_back(std::move(machine_in_cache), std::move(machine_in_vendors.string()), Version(), vendor_name, "", "", force_update, true); + updates.updates.emplace_back(cache_path / vendor_name, vendor_path / vendor_name, Version(), vendor_name, "", "", force_update, true); } } } diff --git a/src/slic3r/Utils/bambu_networking.hpp b/src/slic3r/Utils/bambu_networking.hpp index b91b4d382ca..b6aa30298f6 100644 --- a/src/slic3r/Utils/bambu_networking.hpp +++ b/src/slic3r/Utils/bambu_networking.hpp @@ -94,7 +94,8 @@ namespace BBL { #define BAMBU_NETWORK_LIBRARY "bambu_networking" #define BAMBU_NETWORK_AGENT_NAME "bambu_network_agent" -#define BAMBU_NETWORK_AGENT_VERSION "01.07.09.02" + +#define BAMBU_NETWORK_AGENT_VERSION "01.08.04.01" //iot preset type strings #define IOT_PRINTER_TYPE_STRING "printer" @@ -104,27 +105,13 @@ namespace BBL { #define IOT_JSON_KEY_VERSION "version" #define IOT_JSON_KEY_NAME "name" #define IOT_JSON_KEY_TYPE "type" -#define IOT_JSON_KEY_UPDATE_TIME "updated_time" +#define IOT_JSON_KEY_UPDATE_TIME "update_time" +#define IOT_JSON_KEY_UPDATED_TIME "updated_time" #define IOT_JSON_KEY_BASE_ID "base_id" #define IOT_JSON_KEY_SETTING_ID "setting_id" #define IOT_JSON_KEY_FILAMENT_ID "filament_id" #define IOT_JSON_KEY_USER_ID "user_id" -#define IOT_JSON_KEY_SIGN_DATE "sign_date" -#define IOT_JSON_KEY_CERT_START_DATE "cert_start_date" -#define IOT_JSON_KEY_CERT_END_DATE "cert_end_date" -#define IOT_JSON_KEY_CERT_ISSUE_NAME "issue_name" -#define IOT_JSON_KEY_CERT_SUBJECT_NAME "subject_name" -#define IOT_JSON_KEY_CERT_SERIAL_NUMBER "serial_number" -#define IOT_JSON_KEY_CERT_HASH_VALUE "hash_value" -#define IOT_JSON_KEY_CERT_VERIFY_RESULT "verify_result" - -#define EMBEDDED_ISSUER_NAME "GlobalSign GCC R45 EV CodeSigning CA 2020" -#define EMBEDDED_SUBJECT_NAME "Shenzhen Tuozhu Technology Co., Ltd." -#define EMBEDDED_SERIAL_NAME "0b209295a54b188466ad7478" -#define EMBEDDED_HASH_NAME "9690647085f910ffe2098129bc1229956a51e250" - - // user callbacks typedef std::function OnUserLoginFn; // printer callbacks @@ -234,6 +221,14 @@ struct PublishParams { std::string config_filename; }; +struct CertificateInformation { + std::string issuer; + std::string sub_name; + std::string start_date; + std::string end_date; + std::string serial_number; +}; + } #endif diff --git a/version.inc b/version.inc index 71abeaf37e0..29a14a137dd 100644 --- a/version.inc +++ b/version.inc @@ -17,5 +17,4 @@ set(ORCA_VERSION_MAJOR ${CMAKE_MATCH_1}) set(ORCA_VERSION_MINOR ${CMAKE_MATCH_2}) set(ORCA_VERSION_PATCH ${CMAKE_MATCH_3}) -# The build_version should start from 50 in master branch -set(SLIC3R_VERSION "01.08.02.56") +set(SLIC3R_VERSION "01.08.04.51")