Signed-off-by: SoftFever <103989404+SoftFever@users.noreply.github.com> # Conflicts: # .github/ISSUE_TEMPLATE/bug_report.md # .github/workflows/build_ubuntu.yml # .gitignore # Containerfile # Dockerfile # README.md # deps/Boost/Boost.cmake # deps/OpenEXR/OpenEXR.cmake # deps/OpenVDB/OpenVDB.cmake # doc/How to build - Mac OS.md # localization/i18n/OrcaSlicer.pot # localization/i18n/de/OrcaSlicer_de.po # localization/i18n/en/OrcaSlicer_en.po # localization/i18n/es/OrcaSlicer_es.po # localization/i18n/fr/OrcaSlicer_fr.po # localization/i18n/hu/OrcaSlicer_hu.po # localization/i18n/it/OrcaSlicer_it.po # localization/i18n/ja/OrcaSlicer_ja.po # localization/i18n/list.txt # localization/i18n/nl/OrcaSlicer_nl.po # localization/i18n/sv/OrcaSlicer_sv.po # localization/i18n/zh_cn/OrcaSlicer_zh_CN.po # resources/i18n/de/BambuStudio.mo # resources/i18n/en/BambuStudio.mo # resources/i18n/es/BambuStudio.mo # resources/i18n/fr/BambuStudio.mo # resources/i18n/hu/BambuStudio.mo # resources/i18n/it/BambuStudio.mo # resources/i18n/ja/BambuStudio.mo # resources/i18n/nl/BambuStudio.mo # resources/i18n/sv/BambuStudio.mo # resources/i18n/zh_cn/BambuStudio.mo # resources/images/im_all_plates_stats.svg # resources/profiles/Anker.json # resources/profiles/Anker/filament/Generic ASA @Anker.json # resources/profiles/Anker/filament/Generic PA @Anker.json # resources/profiles/Anker/filament/Generic PA-CF @Anker.json # resources/profiles/Anker/filament/Generic PC @Anker.json # resources/profiles/Anker/filament/Generic PETG @Anker.json # resources/profiles/Anker/filament/Generic PLA-CF @Anker.json # resources/profiles/Anker/filament/Generic PVA @Anker.json # resources/profiles/Anker/filament/Generic TPU @Anker.json # resources/profiles/Anker/machine/Anker M5 0.4 nozzle.json # resources/profiles/Anker/machine/Anker M5.json # resources/profiles/Anker/machine/Anker M5C 0.4 nozzle.json # resources/profiles/Anker/machine/Anker M5C.json # resources/profiles/Anker/machine/fdm_machine_common.json # resources/profiles/Anker/process/0.05mm Ultradetail @Anker.json # resources/profiles/Anker/process/0.15mm Fast @Anker.json # resources/profiles/Anker/process/0.20mm Fast @Anker.json # resources/profiles/Anker/process/0.20mm Standard @Anker.json # resources/profiles/Anker/process/0.25mm Fast @Anker.json # resources/profiles/Anker/process/fdm_process_common.json # resources/profiles/Anycubic.json # resources/profiles/Anycubic/machine/Anycubic 4Max Pro 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic 4Max Pro 2.json # resources/profiles/Anycubic/machine/Anycubic 4Max Pro.json # resources/profiles/Anycubic/machine/Anycubic Chiron 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic Chiron.json # resources/profiles/Anycubic/machine/Anycubic Kobra 2 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic Kobra Max 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic Kobra Max.json # resources/profiles/Anycubic/machine/Anycubic Vyper 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic Vyper.json # resources/profiles/Anycubic/machine/Anycubic i3 Mega S 0.4 nozzle.json # resources/profiles/Anycubic/machine/Anycubic i3 Mega S.json # resources/profiles/Anycubic/machine/fdm_machine_common.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic 4MaxPro2.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Chiron.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Kobra2.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic KobraMax.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic Vyper.json # resources/profiles/Anycubic/process/0.15mm Optimal @Anycubic i3MegaS.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic 4MaxPro2.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Chiron.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Kobra2.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic KobraMax.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic Vyper.json # resources/profiles/Anycubic/process/0.20mm Standard @Anycubic i3MegaS.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic 4MaxPro2.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Chiron.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Kobra2.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic KobraMax.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic Vyper.json # resources/profiles/Anycubic/process/0.30mm Draft @Anycubic i3MegaS.json # resources/profiles/Anycubic/process/fdm_process_common.json # resources/profiles/BBL.json # resources/profiles/BBL/process/fdm_process_bbl_common.json # resources/profiles/Creality.json # resources/profiles/Creality/filament/fdm_filament_abs.json # resources/profiles/Creality/filament/fdm_filament_pla.json # resources/profiles/Creality/machine/Creality CR-10 Max 0.4 nozzle.json # resources/profiles/Creality/machine/Creality CR-10 Max.json # resources/profiles/Creality/machine/Creality CR-10 V2 0.4 nozzle.json # resources/profiles/Creality/machine/Creality CR-10 V2.json # resources/profiles/Creality/machine/Creality Ender-3 S1 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-3 S1 Pro 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-3 S1 Pro.json # resources/profiles/Creality/machine/Creality Ender-3 S1.json # resources/profiles/Creality/machine/Creality Ender-3 V2 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-3 V2.json # resources/profiles/Creality/machine/Creality Ender-5 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-5 Plus 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-5 Plus.json # resources/profiles/Creality/machine/Creality Ender-5 S1 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-5 S1.json # resources/profiles/Creality/machine/Creality Ender-5.json # resources/profiles/Creality/machine/Creality Ender-5S 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-5S.json # resources/profiles/Creality/machine/Creality Ender-6 0.4 nozzle.json # resources/profiles/Creality/machine/Creality Ender-6.json # resources/profiles/Creality/machine/fdm_creality_common.json # resources/profiles/Creality/machine/fdm_machine_common.json # resources/profiles/Creality/process/0.12mm Fine @Creality CR10Max.json # resources/profiles/Creality/process/0.12mm Fine @Creality Ender3V2.json # resources/profiles/Creality/process/0.15mm Optimal @Creality CR10Max.json # resources/profiles/Creality/process/0.15mm Optimal @Creality Ender3V2.json # resources/profiles/Creality/process/0.16mm Optimal @Creality CR10V2.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender3S1Pro.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5Plus.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender5S1.json # resources/profiles/Creality/process/0.16mm Optimal @Creality Ender6.json # resources/profiles/Creality/process/0.20mm Standard @Creality CR10Max.json # resources/profiles/Creality/process/0.20mm Standard @Creality CR10V2.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender3S1Pro.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender3V2.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender5.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender5Plus.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender5S1.json # resources/profiles/Creality/process/0.20mm Standard @Creality Ender6.json # resources/profiles/Creality/process/0.24mm Draft @Creality CR10Max.json # resources/profiles/Creality/process/0.24mm Draft @Creality Ender3V2.json # resources/profiles/Creality/process/0.24mm Draft @Creality.json # resources/profiles/Creality/process/fdm_process_creality_common.json # resources/profiles/Custom/filament/My Generic PETG.json # resources/profiles/Custom/filament/My Generic PLA.json # resources/profiles/Elegoo.json # resources/profiles/Elegoo/filament/fdm_filament_common.json # resources/profiles/Elegoo/machine/Elegoo Neptune 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2D 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2D.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2S 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 2S.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Max 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Max.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Plus 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Plus.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Pro 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3 Pro.json # resources/profiles/Elegoo/machine/Elegoo Neptune 3.json # resources/profiles/Elegoo/machine/Elegoo Neptune X 0.4 nozzle.json # resources/profiles/Elegoo/machine/Elegoo Neptune X.json # resources/profiles/Elegoo/machine/Elegoo Neptune.json # resources/profiles/Elegoo/machine/fdm_machine_common.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.08mm Extra Fine @Elegoo NeptuneX.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.12mm Fine @Elegoo NeptuneX.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.16mm Optimal @Elegoo NeptuneX.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.20mm Standard @Elegoo NeptuneX.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.24mm Draft @Elegoo NeptuneX.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune2.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune2D.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune2S.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune3.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune3Max.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune3Plus.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo Neptune3Pro.json # resources/profiles/Elegoo/process/0.28mm Extra Draft @Elegoo NeptuneX.json # resources/profiles/Prusa.json # resources/profiles/Prusa/filament/fdm_filament_common.json # resources/profiles/Prusa/machine/Prusa MINI 0.4 nozzle.json # resources/profiles/Prusa/machine/Prusa MINI.json # resources/profiles/Prusa/machine/Prusa MK3S 0.4 nozzle.json # resources/profiles/Prusa/machine/Prusa MK3S.json # resources/profiles/Prusa/machine/fdm_machine_common.json # resources/profiles/Prusa/process/0.20mm Standard @MINI.json # resources/profiles/Prusa/process/0.20mm Standard @MK3S.json # resources/profiles/Qidi.json # resources/profiles/Qidi/filament/fdm_filament_abs.json # resources/profiles/Qidi/filament/fdm_filament_asa.json # resources/profiles/Qidi/filament/fdm_filament_common.json # resources/profiles/Qidi/filament/fdm_filament_pa.json # resources/profiles/Qidi/filament/fdm_filament_pc.json # resources/profiles/Qidi/filament/fdm_filament_pet.json # resources/profiles/Qidi/filament/fdm_filament_pla.json # resources/profiles/Qidi/filament/fdm_filament_pva.json # resources/profiles/Qidi/filament/fdm_filament_tpu.json # resources/profiles/Qidi/machine/Qidi X-CF Pro 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-CF Pro.json # resources/profiles/Qidi/machine/Qidi X-Max 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-Max 3.json # resources/profiles/Qidi/machine/Qidi X-Max.json # resources/profiles/Qidi/machine/Qidi X-Plus 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-Plus 3.json # resources/profiles/Qidi/machine/Qidi X-Plus.json # resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json # resources/profiles/Qidi/machine/Qidi X-Smart 3.json # resources/profiles/Qidi/machine/fdm_machine_common.json # resources/profiles/Qidi/machine/fdm_qidi_common.json # resources/profiles/Qidi/machine/fdm_qidi_x3_common.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XCFPro.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XMax3.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus3.json # resources/profiles/Qidi/process/0.12mm Fine @Qidi XSmart3.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XCFPro.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XMax3.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus3.json # resources/profiles/Qidi/process/0.16mm Optimal @Qidi XSmart3.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XCFPro.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XMax3.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus3.json # resources/profiles/Qidi/process/0.20mm Standard @Qidi XSmart3.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XCFPro.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XMax3.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus3.json # resources/profiles/Qidi/process/0.25mm Draft @Qidi XSmart3.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XCFPro.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XMax3.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus3.json # resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XSmart3.json # resources/profiles/Qidi/process/fdm_process_common.json # resources/profiles/Qidi/process/fdm_process_qidi_common.json # resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json # resources/profiles/Tronxy/filament/Tronxy Generic ABS.json # resources/profiles/Tronxy/process/0.12mm Fine @Tronxy.json # resources/profiles/Tronxy/process/0.15mm Optimal @Tronxy.json # resources/profiles/Tronxy/process/0.20mm Standard @Tronxy.json # resources/profiles/Tronxy/process/0.24mm Draft @Tronxy.json # resources/profiles/Voron.json # resources/profiles/Voron/filament/Generic ABS @Voron.json # resources/profiles/Voron/filament/Generic ASA @Voron.json # resources/profiles/Voron/filament/Generic PA @Voron.json # resources/profiles/Voron/filament/Generic PETG @Voron.json # resources/profiles/Voron/filament/Generic PVA @Voron.json # resources/profiles/Voron/filament/Voron Generic PA-CF.json # resources/profiles/Voron/filament/Voron Generic PC.json # resources/profiles/Voron/filament/Voron Generic PLA-CF.json # resources/profiles/Voron/filament/Voron Generic PLA.json # resources/profiles/Voron/filament/Voron Generic TPU.json # resources/profiles/Voron/machine/Voron 0.1.json # resources/profiles/Voron/machine/Voron 2.4 250.json # resources/profiles/Voron/machine/Voron 2.4 300.json # resources/profiles/Voron/machine/Voron 2.4 350.json # resources/profiles/Voron/machine/Voron Trident 250.json # resources/profiles/Voron/machine/Voron Trident 300.json # resources/profiles/Voron/machine/Voron Trident 350.json # resources/profiles/Voron/process/fdm_process_voron_common.json # resources/profiles/Voxelab.json # resources/profiles/Voxelab/filament/Generic ABS @Voxelab.json # resources/profiles/Voxelab/filament/Generic PLA @Voxelab.json # resources/profiles/Voxelab/filament/fdm_filament_common.json # resources/profiles/Voxelab/machine/Voxelab Aquila X2 0.4 nozzle.json # resources/profiles/Voxelab/machine/Voxelab Aquila X2.json # resources/profiles/Voxelab/machine/fdm_machine_common.json # resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json # resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json # resources/web/data/text.js # resources/web/guide/21/21.js # resources/web/guide/24/24.js # src/BaseException.cpp # src/OrcaSlicer.cpp # src/libslic3r/AppConfig.cpp # src/libslic3r/BoundingBox.hpp # src/libslic3r/Extruder.hpp # src/libslic3r/Fill/Fill.cpp # src/libslic3r/Format/bbs_3mf.cpp # src/libslic3r/GCode.cpp # src/libslic3r/GCode.hpp # src/libslic3r/GCode/CoolingBuffer.cpp # src/libslic3r/GCode/GCodeProcessor.cpp # src/libslic3r/GCode/GCodeProcessor.hpp # src/libslic3r/GCode/WipeTower.cpp # src/libslic3r/GCodeWriter.cpp # src/libslic3r/GCodeWriter.hpp # src/libslic3r/Model.cpp # src/libslic3r/PerimeterGenerator.cpp # src/libslic3r/Preset.cpp # src/libslic3r/Preset.hpp # src/libslic3r/PresetBundle.cpp # src/libslic3r/PresetBundle.hpp # src/libslic3r/Print.cpp # src/libslic3r/Print.hpp # src/libslic3r/PrintBase.hpp # src/libslic3r/PrintConfig.cpp # src/libslic3r/PrintConfig.hpp # src/libslic3r/PrintObject.cpp # src/libslic3r/TreeSupport.cpp # src/libslic3r/Utils.hpp # src/mcut/CMakeLists.txt # src/slic3r/CMakeLists.txt # src/slic3r/GUI/3DBed.cpp # src/slic3r/GUI/AMSMaterialsSetting.cpp # src/slic3r/GUI/AMSMaterialsSetting.hpp # src/slic3r/GUI/BBLTopbar.cpp # src/slic3r/GUI/BBLTopbar.hpp # src/slic3r/GUI/BackgroundSlicingProcess.hpp # src/slic3r/GUI/BindDialog.cpp # src/slic3r/GUI/ConfigManipulation.cpp # src/slic3r/GUI/DeviceManager.cpp # src/slic3r/GUI/Field.cpp # src/slic3r/GUI/GLCanvas3D.cpp # src/slic3r/GUI/GUI_App.cpp # src/slic3r/GUI/GUI_App.hpp # src/slic3r/GUI/GUI_Factories.cpp # src/slic3r/GUI/GUI_Factories.hpp # src/slic3r/GUI/GUI_ObjectList.cpp # src/slic3r/GUI/Gizmos/GLGizmoMeshBoolean.cpp # src/slic3r/GUI/Jobs/ArrangeJob.cpp # src/slic3r/GUI/Jobs/FillBedJob.cpp # src/slic3r/GUI/MainFrame.cpp # src/slic3r/GUI/MediaPlayCtrl.cpp # src/slic3r/GUI/Monitor.cpp # src/slic3r/GUI/PartPlate.cpp # src/slic3r/GUI/PartPlate.hpp # src/slic3r/GUI/PlateSettingsDialog.cpp # src/slic3r/GUI/PlateSettingsDialog.hpp # src/slic3r/GUI/Plater.cpp # src/slic3r/GUI/Plater.hpp # src/slic3r/GUI/PresetComboBoxes.cpp # src/slic3r/GUI/ReleaseNote.cpp # src/slic3r/GUI/SelectMachine.cpp # src/slic3r/GUI/StatusPanel.cpp # src/slic3r/GUI/Tab.cpp # src/slic3r/GUI/Widgets/Label.cpp # src/slic3r/GUI/Widgets/Label.hpp # src/slic3r/GUI/Widgets/SideButton.cpp # src/slic3r/GUI/calib_dlg.cpp # src/slic3r/GUI/calib_dlg.hpp # src/slic3r/GUI/wxExtensions.hpp # src/slic3r/Utils/NetworkAgent.cpp # src/slic3r/Utils/bambu_networking.hpp # version.inc
677 lines
22 KiB
C++
677 lines
22 KiB
C++
#ifndef slic3r_GUI_AMXCONTROL_hpp_
|
|
#define slic3r_GUI_AMXCONTROL_hpp_
|
|
|
|
#include "../wxExtensions.hpp"
|
|
#include "StaticBox.hpp"
|
|
#include "StepCtrl.hpp"
|
|
#include "Button.hpp"
|
|
#include "../DeviceManager.hpp"
|
|
#include "slic3r/GUI/Event.hpp"
|
|
#include "slic3r/GUI/AmsMappingPopup.hpp"
|
|
#include <wx/simplebook.h>
|
|
#include <wx/hyperlink.h>
|
|
#include <wx/animate.h>
|
|
#include <wx/dynarray.h>
|
|
|
|
#define AMS_CONTROL_BRAND_COLOUR wxColour(0, 150, 136)
|
|
#define AMS_CONTROL_GRAY700 wxColour(107, 107, 107)
|
|
#define AMS_CONTROL_GRAY800 wxColour(50, 58, 61)
|
|
#define AMS_CONTROL_GRAY500 wxColour(172, 172, 172)
|
|
#define AMS_CONTROL_DISABLE_COLOUR wxColour(206, 206, 206)
|
|
#define AMS_CONTROL_DISABLE_TEXT_COLOUR wxColour(144, 144, 144)
|
|
#define AMS_CONTROL_WHITE_COLOUR wxColour(255, 255, 255)
|
|
#define AMS_CONTROL_BLACK_COLOUR wxColour(0, 0, 0)
|
|
#define AMS_CONTROL_DEF_BLOCK_BK_COLOUR wxColour(238, 238, 238)
|
|
#define AMS_CONTROL_DEF_LIB_BK_COLOUR wxColour(248, 248, 248)
|
|
#define AMS_EXTRUDER_DEF_COLOUR wxColour(234, 234, 234)
|
|
#define AMS_CONTROL_MAX_COUNT 4
|
|
#define AMS_CONTRO_CALIBRATION_BUTTON_SIZE wxSize(FromDIP(150), FromDIP(28))
|
|
|
|
// enum AMSRoadMode{
|
|
// AMS_ROAD_MODE_LEFT,
|
|
// AMS_ROAD_MODE_LEFT_RIGHT,
|
|
// AMS_ROAD_MODE_END,
|
|
//};
|
|
|
|
namespace Slic3r { namespace GUI {
|
|
|
|
enum ActionButton {
|
|
ACTION_BTN_CALI = 0,
|
|
ACTION_BTN_LOAD = 1,
|
|
ACTION_BTN_UNLOAD = 2,
|
|
ACTION_BTN_COUNT = 3
|
|
};
|
|
|
|
enum class AMSRoadMode : int {
|
|
AMS_ROAD_MODE_LEFT,
|
|
AMS_ROAD_MODE_LEFT_RIGHT,
|
|
AMS_ROAD_MODE_END,
|
|
AMS_ROAD_MODE_END_ONLY,
|
|
AMS_ROAD_MODE_NONE,
|
|
AMS_ROAD_MODE_NONE_ANY_ROAD,
|
|
AMS_ROAD_MODE_VIRTUAL_TRAY
|
|
};
|
|
|
|
enum class AMSPassRoadMode : int {
|
|
AMS_ROAD_MODE_NONE,
|
|
AMS_ROAD_MODE_LEFT,
|
|
AMS_ROAD_MODE_LEFT_RIGHT,
|
|
AMS_ROAD_MODE_END_TOP,
|
|
AMS_ROAD_MODE_END_RIGHT,
|
|
AMS_ROAD_MODE_END_BOTTOM,
|
|
};
|
|
|
|
enum class AMSAction : int {
|
|
AMS_ACTION_NONE,
|
|
AMS_ACTION_LOAD,
|
|
AMS_ACTION_UNLOAD,
|
|
AMS_ACTION_CALI,
|
|
AMS_ACTION_PRINTING,
|
|
AMS_ACTION_NORMAL,
|
|
AMS_ACTION_NOAMS,
|
|
};
|
|
|
|
enum class AMSPassRoadSTEP : int {
|
|
AMS_ROAD_STEP_NONE,
|
|
AMS_ROAD_STEP_1, // lib -> extrusion
|
|
AMS_ROAD_STEP_2, // extrusion->buffer
|
|
AMS_ROAD_STEP_3, // extrusion
|
|
|
|
AMS_ROAD_STEP_COMBO_LOAD_STEP1,
|
|
AMS_ROAD_STEP_COMBO_LOAD_STEP2,
|
|
AMS_ROAD_STEP_COMBO_LOAD_STEP3,
|
|
};
|
|
|
|
enum class AMSPassRoadType : int {
|
|
AMS_ROAD_TYPE_NONE,
|
|
AMS_ROAD_TYPE_LOAD,
|
|
AMS_ROAD_TYPE_UNLOAD,
|
|
};
|
|
|
|
enum class AMSCanType : int {
|
|
AMS_CAN_TYPE_NONE,
|
|
AMS_CAN_TYPE_BRAND,
|
|
AMS_CAN_TYPE_THIRDBRAND,
|
|
AMS_CAN_TYPE_EMPTY,
|
|
AMS_CAN_TYPE_VIRTUAL,
|
|
};
|
|
|
|
enum FilamentStep {
|
|
STEP_IDLE,
|
|
STEP_HEAT_NOZZLE,
|
|
STEP_CUT_FILAMENT,
|
|
STEP_PULL_CURR_FILAMENT,
|
|
STEP_PUSH_NEW_FILAMENT,
|
|
STEP_PURGE_OLD_FILAMENT,
|
|
STEP_FEED_FILAMENT,
|
|
STEP_CONFIRM_EXTRUDED,
|
|
STEP_COUNT,
|
|
};
|
|
|
|
enum FilamentStepType {
|
|
STEP_TYPE_LOAD = 0,
|
|
STEP_TYPE_UNLOAD = 1,
|
|
STEP_TYPE_VT_LOAD = 2,
|
|
};
|
|
|
|
#define AMS_ITEM_CUBE_SIZE wxSize(FromDIP(14), FromDIP(14))
|
|
#define AMS_ITEM_SIZE wxSize(FromDIP(82), FromDIP(27))
|
|
#define AMS_ITEM_HUMIDITY_SIZE wxSize(FromDIP(120), FromDIP(27))
|
|
#define AMS_CAN_LIB_SIZE wxSize(FromDIP(58), FromDIP(80))
|
|
#define AMS_CAN_ROAD_SIZE wxSize(FromDIP(66), FromDIP(60))
|
|
#define AMS_CAN_ITEM_HEIGHT_SIZE FromDIP(27)
|
|
#define AMS_CANS_SIZE wxSize(FromDIP(284), FromDIP(186))
|
|
#define AMS_CANS_WINDOW_SIZE wxSize(FromDIP(264), FromDIP(186))
|
|
#define AMS_STEP_SIZE wxSize(FromDIP(172), FromDIP(186))
|
|
#define AMS_REFRESH_SIZE wxSize(FromDIP(30), FromDIP(30))
|
|
#define AMS_EXTRUDER_SIZE wxSize(FromDIP(86), FromDIP(72))
|
|
#define AMS_EXTRUDER_BITMAP_SIZE wxSize(FromDIP(36), FromDIP(55))
|
|
|
|
struct Caninfo
|
|
{
|
|
std::string can_id;
|
|
wxString material_name;
|
|
wxColour material_colour = {*wxWHITE};
|
|
AMSCanType material_state;
|
|
int material_remain = 100;
|
|
float k = 0.0f;
|
|
float n = 0.0f;
|
|
std::vector<wxColour> material_cols;
|
|
};
|
|
|
|
struct AMSinfo
|
|
{
|
|
public:
|
|
std::string ams_id;
|
|
std::vector<Caninfo> cans;
|
|
std::string current_can_id;
|
|
AMSPassRoadSTEP current_step;
|
|
AMSAction current_action;
|
|
int curreent_filamentstep;
|
|
int ams_humidity = 0;
|
|
|
|
bool parse_ams_info(MachineObject* obj, Ams *ams, bool remain_flag = false, bool humidity_flag = false);
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSrefresh
|
|
**************************************************/
|
|
#define AMS_REFRESH_PLAY_LOADING_TIMER 100
|
|
class AMSrefresh : public wxWindow
|
|
{
|
|
public:
|
|
AMSrefresh();
|
|
AMSrefresh(wxWindow *parent, wxWindowID id, wxString number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
AMSrefresh(wxWindow *parent, wxWindowID id, int number, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
~AMSrefresh();
|
|
void PlayLoading();
|
|
void StopLoading();
|
|
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
|
|
void on_timer(wxTimerEvent &event);
|
|
void OnEnterWindow(wxMouseEvent &evt);
|
|
void OnLeaveWindow(wxMouseEvent &evt);
|
|
void OnClick(wxMouseEvent &evt);
|
|
void post_event(wxCommandEvent &&event);
|
|
void paintEvent(wxPaintEvent &evt);
|
|
void Update(std::string ams_id, Caninfo info);
|
|
void msw_rescale();
|
|
void set_disable_mode(bool disable) { m_disable_mode = disable; }
|
|
Caninfo m_info;
|
|
|
|
|
|
protected:
|
|
wxTimer *m_playing_timer= {nullptr};
|
|
int m_rotation_angle = 0;
|
|
bool m_play_loading = {false};
|
|
bool m_selected = {false};
|
|
|
|
std::string m_ams_id;
|
|
std::string m_can_id;
|
|
|
|
ScalableBitmap m_bitmap_normal;
|
|
ScalableBitmap m_bitmap_selected;
|
|
ScalableBitmap m_bitmap_ams_rfid_0;
|
|
ScalableBitmap m_bitmap_ams_rfid_1;
|
|
ScalableBitmap m_bitmap_ams_rfid_2;
|
|
ScalableBitmap m_bitmap_ams_rfid_3;
|
|
ScalableBitmap m_bitmap_ams_rfid_4;
|
|
ScalableBitmap m_bitmap_ams_rfid_5;
|
|
ScalableBitmap m_bitmap_ams_rfid_6;
|
|
ScalableBitmap m_bitmap_ams_rfid_7;
|
|
std::vector<ScalableBitmap> m_rfid_bitmap_list;
|
|
|
|
wxString m_refresh_id;
|
|
wxBoxSizer * m_size_body;
|
|
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
|
|
|
|
bool m_disable_mode{ false };
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSextruder
|
|
**************************************************/
|
|
class AMSextruderImage: public wxWindow
|
|
{
|
|
public:
|
|
void TurnOn(wxColour col);
|
|
void TurnOff();
|
|
void msw_rescale();
|
|
void paintEvent(wxPaintEvent &evt);
|
|
|
|
void render(wxDC &dc);
|
|
bool m_turn_on = {false};
|
|
wxColour m_colour;
|
|
ScalableBitmap m_ams_extruder;
|
|
void doRender(wxDC &dc);
|
|
AMSextruderImage(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
~AMSextruderImage();
|
|
};
|
|
|
|
|
|
class AMSextruder : public wxWindow
|
|
{
|
|
public:
|
|
void TurnOn(wxColour col);
|
|
void TurnOff();
|
|
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
|
|
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
|
|
void OnAmsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
|
|
void paintEvent(wxPaintEvent& evt);
|
|
void render(wxDC& dc);
|
|
void doRender(wxDC& dc);
|
|
void msw_rescale();
|
|
void has_ams(bool hams) {m_has_vams = hams; Refresh();};
|
|
void no_ams_mode(bool mode) {m_none_ams_mode = mode; Refresh();};
|
|
|
|
bool m_none_ams_mode{false};
|
|
bool m_has_vams{false};
|
|
bool m_vams_loading{false};
|
|
bool m_ams_loading{false};
|
|
wxColour m_current_colur;
|
|
|
|
wxBoxSizer * m_bitmap_sizer{nullptr};
|
|
wxPanel * m_bitmap_panel{nullptr};
|
|
AMSextruderImage *m_amsSextruder{nullptr};
|
|
ScalableBitmap monitor_ams_extruder;
|
|
AMSextruder(wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
~AMSextruder();
|
|
};
|
|
|
|
class AMSVirtualRoad : public wxWindow
|
|
{
|
|
public:
|
|
AMSVirtualRoad(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
|
|
~AMSVirtualRoad();
|
|
|
|
private:
|
|
bool m_has_vams{ true };
|
|
bool m_vams_loading{ false };
|
|
wxColour m_current_color;
|
|
|
|
public:
|
|
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
|
|
void SetHasVams(bool hvams) { m_has_vams = hvams; };
|
|
void create(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size);
|
|
void paintEvent(wxPaintEvent& evt);
|
|
void render(wxDC& dc);
|
|
void doRender(wxDC& dc);
|
|
void msw_rescale();
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSLib
|
|
**************************************************/
|
|
class AMSLib : public wxWindow
|
|
{
|
|
public:
|
|
AMSLib(wxWindow *parent, wxWindowID id, Caninfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
void create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
public:
|
|
wxColour GetLibColour();
|
|
Caninfo m_info;
|
|
MachineObject* m_obj = {nullptr};
|
|
int m_can_index;
|
|
void Update(Caninfo info, bool refresh = true);
|
|
void UnableSelected() { m_unable_selected = true; };
|
|
void EableSelected() { m_unable_selected = false; };
|
|
void OnSelected();
|
|
void UnSelected();
|
|
bool is_selected() {return m_selected;};
|
|
void post_event(wxCommandEvent &&event);
|
|
void show_kn_value(bool show) { m_show_kn = show; };
|
|
void support_cali(bool sup) { m_support_cali = sup; Refresh(); };
|
|
virtual bool Enable(bool enable = true);
|
|
void set_disable_mode(bool disable) { m_disable_mode = disable; }
|
|
void msw_rescale();
|
|
|
|
|
|
protected:
|
|
wxStaticBitmap *m_edit_bitmp = {nullptr};
|
|
wxStaticBitmap *m_edit_bitmp_light = {nullptr};
|
|
ScalableBitmap m_bitmap_editable;
|
|
ScalableBitmap m_bitmap_editable_light;
|
|
ScalableBitmap m_bitmap_readonly;
|
|
ScalableBitmap m_bitmap_readonly_light;
|
|
ScalableBitmap m_bitmap_transparent;
|
|
|
|
bool m_unable_selected = {false};
|
|
bool m_enable = {false};
|
|
bool m_selected = {false};
|
|
bool m_hover = {false};
|
|
bool m_show_kn = {false};
|
|
bool m_support_cali = {false};
|
|
|
|
double m_radius = {4};
|
|
wxColour m_border_color;
|
|
wxColour m_road_def_color;
|
|
wxColour m_lib_color;
|
|
bool m_disable_mode{ false };
|
|
|
|
void on_enter_window(wxMouseEvent &evt);
|
|
void on_leave_window(wxMouseEvent &evt);
|
|
void on_left_down(wxMouseEvent &evt);
|
|
void paintEvent(wxPaintEvent &evt);
|
|
void render(wxDC &dc);
|
|
void doRender(wxDC &dc);
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSRoad
|
|
**************************************************/
|
|
class AMSRoad : public wxWindow
|
|
{
|
|
public:
|
|
AMSRoad();
|
|
AMSRoad(wxWindow *parent, wxWindowID id, Caninfo info, int canindex, int maxcan, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
void create(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
|
|
public:
|
|
AMSinfo m_amsinfo;
|
|
Caninfo m_info;
|
|
int m_canindex = {0};
|
|
AMSRoadMode m_rode_mode = {AMSRoadMode::AMS_ROAD_MODE_LEFT_RIGHT};
|
|
std::vector<AMSPassRoadMode> m_pass_rode_mode = {AMSPassRoadMode::AMS_ROAD_MODE_NONE};
|
|
bool m_selected = {false};
|
|
int m_passroad_width = {6};
|
|
double m_radius = {4};
|
|
wxColour m_road_def_color;
|
|
wxColour m_road_color;
|
|
void Update(AMSinfo amsinfo, Caninfo info, int canindex, int maxcan);
|
|
|
|
ScalableBitmap ams_humidity_0;
|
|
ScalableBitmap ams_humidity_1;
|
|
ScalableBitmap ams_humidity_2;
|
|
ScalableBitmap ams_humidity_3;
|
|
ScalableBitmap ams_humidity_4;
|
|
|
|
int m_humidity = { 0 };
|
|
bool m_show_humidity = { false };
|
|
bool m_vams_loading{false};
|
|
|
|
void OnVamsLoading(bool load, wxColour col = AMS_CONTROL_GRAY500);
|
|
void SetPassRoadColour(wxColour col);
|
|
void SetMode(AMSRoadMode mode);
|
|
void OnPassRoad(std::vector<AMSPassRoadMode> prord_list);
|
|
void UpdatePassRoad(int tag_index, AMSPassRoadType type, AMSPassRoadSTEP step);
|
|
|
|
void paintEvent(wxPaintEvent &evt);
|
|
void render(wxDC &dc);
|
|
void doRender(wxDC &dc);
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSItem
|
|
**************************************************/
|
|
|
|
class AMSItem : public wxWindow
|
|
{
|
|
public:
|
|
AMSItem();
|
|
AMSItem(wxWindow *parent, wxWindowID id, AMSinfo amsinfo, const wxSize cube_size = wxSize(14, 14), const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
|
|
bool m_open = {false};
|
|
void Open();
|
|
void Close();
|
|
|
|
void Update(AMSinfo amsinfo);
|
|
void create(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size);
|
|
void OnEnterWindow(wxMouseEvent &evt);
|
|
void OnLeaveWindow(wxMouseEvent &evt);
|
|
void OnSelected();
|
|
void UnSelected();
|
|
void ShowHumidity();
|
|
void HideHumidity();
|
|
void SetHumidity(int humidity);
|
|
virtual bool Enable(bool enable = true);
|
|
|
|
AMSinfo m_amsinfo;
|
|
|
|
protected:
|
|
wxSize m_cube_size;
|
|
wxColour m_background_colour = {AMS_CONTROL_DEF_BLOCK_BK_COLOUR};
|
|
int m_padding = {6};
|
|
int m_space = {5};
|
|
bool m_hover = {false};
|
|
bool m_selected = {false};
|
|
bool m_show_humidity = {false};
|
|
int m_humidity = {0};
|
|
ScalableBitmap* m_ts_bitmap_cube;
|
|
|
|
void paintEvent(wxPaintEvent &evt);
|
|
void render(wxDC &dc);
|
|
void doRender(wxDC &dc);
|
|
virtual void DoSetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO);
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AmsCans
|
|
**************************************************/
|
|
class Canrefreshs
|
|
{
|
|
public:
|
|
wxString canID;
|
|
AMSrefresh *canrefresh;
|
|
};
|
|
|
|
class CanLibs
|
|
{
|
|
public:
|
|
wxString canID;
|
|
AMSLib * canLib;
|
|
};
|
|
|
|
class CanRoads
|
|
{
|
|
public:
|
|
wxString canID;
|
|
AMSRoad *canRoad;
|
|
};
|
|
|
|
WX_DEFINE_ARRAY(Canrefreshs *, CanrefreshsHash);
|
|
WX_DEFINE_ARRAY(CanLibs *, CanLibsHash);
|
|
WX_DEFINE_ARRAY(CanRoads *, CansRoadsHash);
|
|
|
|
class AmsCans : public wxWindow
|
|
{
|
|
public:
|
|
AmsCans();
|
|
AmsCans(wxWindow *parent, wxWindowID id, AMSinfo info, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
|
|
void Update(AMSinfo info);
|
|
void create(wxWindow *parent, wxWindowID id, AMSinfo info, const wxPoint &pos, const wxSize &size);
|
|
void AddCan(Caninfo caninfo, int canindex, int maxcan);
|
|
void SetDefSelectCan();
|
|
void SelectCan(std::string canid);
|
|
wxColour GetTagColr(wxString canid);
|
|
void SetAmsStep(wxString canid, AMSPassRoadType type, AMSPassRoadSTEP step);
|
|
//wxColour GetCanColour(wxString canid);
|
|
void PlayRridLoading(wxString canid);
|
|
void StopRridLoading(wxString canid);
|
|
void msw_rescale();
|
|
void show_sn_value(bool show);
|
|
std::string GetCurrentCan();
|
|
|
|
public:
|
|
std::string m_canlib_id;
|
|
int m_canlib_selection = {-1};
|
|
int m_selection = {0};
|
|
int m_can_count = {0};
|
|
CanLibsHash m_can_lib_list;
|
|
CansRoadsHash m_can_road_list;
|
|
CanrefreshsHash m_can_refresh_list;
|
|
AMSinfo m_info;
|
|
wxBoxSizer * sizer_can = {nullptr};
|
|
AMSPassRoadSTEP m_step = {AMSPassRoadSTEP ::AMS_ROAD_STEP_NONE};
|
|
};
|
|
|
|
/*************************************************
|
|
Description:AMSControl
|
|
**************************************************/
|
|
class AmsCansWindow
|
|
{
|
|
public:
|
|
wxString amsIndex;
|
|
AmsCans *amsCans;
|
|
bool m_disable_mode{ false };
|
|
|
|
void set_disable_mode(bool disable) {
|
|
m_disable_mode = disable;
|
|
for (auto can_lib : amsCans->m_can_lib_list) {
|
|
can_lib->canLib->set_disable_mode(disable);
|
|
}
|
|
for (auto can_refresh : amsCans->m_can_refresh_list) {
|
|
can_refresh->canrefresh->set_disable_mode(disable);
|
|
}
|
|
}
|
|
};
|
|
|
|
class AmsItems
|
|
{
|
|
public:
|
|
wxString amsIndex;
|
|
AMSItem *amsItem;
|
|
};
|
|
|
|
class AMSextruders
|
|
{
|
|
public:
|
|
wxString amsIndex;
|
|
AMSextruder *amsextruder;
|
|
};
|
|
|
|
WX_DEFINE_ARRAY(AmsCansWindow *, AmsCansHash);
|
|
WX_DEFINE_ARRAY(AmsItems *, AmsItemsHash);
|
|
WX_DEFINE_ARRAY(AMSextruders *, AMSextrudersHash);
|
|
|
|
class AMSControl : public wxSimplebook
|
|
{
|
|
public:
|
|
AMSControl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize);
|
|
|
|
void on_retry();
|
|
void init_scaled_buttons();
|
|
|
|
protected:
|
|
int m_ams_count = {0};
|
|
|
|
std::map<std::string, int> m_ams_selection;
|
|
std::vector<AMSinfo> m_ams_info;
|
|
|
|
std::string m_current_ams;
|
|
std::string m_current_show_ams;
|
|
|
|
AmsItemsHash m_ams_item_list;
|
|
AmsCansHash m_ams_cans_list;
|
|
|
|
AMSextruder *m_extruder = {nullptr};
|
|
|
|
AmsIntroducePopup m_ams_introduce_popup;
|
|
|
|
wxSimplebook *m_simplebook_right = {nullptr};
|
|
wxSimplebook *m_simplebook_calibration = {nullptr};
|
|
wxSimplebook *m_simplebook_amsitems = {nullptr};
|
|
wxSimplebook *m_simplebook_ams = {nullptr};
|
|
wxSimplebook *m_simplebook_cans = {nullptr};
|
|
wxSimplebook *m_simplebook_bottom = {nullptr};
|
|
|
|
wxStaticText *m_tip_right_top = {nullptr};
|
|
wxStaticText *m_tip_load_info = {nullptr};
|
|
wxStaticText *m_text_calibration_percent = {nullptr};
|
|
wxWindow * m_none_ams_panel = {nullptr};
|
|
wxWindow * m_panel_top = {nullptr};
|
|
wxWindow * m_amswin = {nullptr};
|
|
wxBoxSizer* m_vams_sizer = {nullptr};
|
|
wxBoxSizer* m_sizer_vams_tips = {nullptr};
|
|
|
|
Label* m_ams_backup_tip = {nullptr};
|
|
Caninfo m_vams_info;
|
|
StaticBox* m_panel_virtual = {nullptr};
|
|
AMSLib* m_vams_lib = {nullptr};
|
|
AMSRoad* m_vams_road = {nullptr};
|
|
AMSVirtualRoad* m_vams_extra_road = {nullptr};
|
|
|
|
StaticBox * m_panel_can = {nullptr};
|
|
wxBoxSizer *m_sizer_top = {nullptr};
|
|
wxBoxSizer *m_sizer_cans = {nullptr};
|
|
wxBoxSizer *m_sizer_right_tip = {nullptr};
|
|
wxBoxSizer* m_sizer_ams_tips = {nullptr};
|
|
|
|
::StepIndicator *m_filament_load_step = {nullptr};
|
|
::StepIndicator *m_filament_unload_step = {nullptr};
|
|
::StepIndicator *m_filament_vt_load_step = {nullptr};
|
|
|
|
Button *m_button_extruder_feed = {nullptr};
|
|
Button *m_button_extruder_back = {nullptr};
|
|
wxStaticBitmap* m_button_ams_setting = {nullptr};
|
|
wxStaticBitmap* m_img_ams_backup = {nullptr};
|
|
ScalableBitmap m_button_ams_setting_normal;
|
|
ScalableBitmap m_button_ams_setting_hover;
|
|
ScalableBitmap m_button_ams_setting_press;
|
|
Button *m_button_extrusion_cali= {nullptr};
|
|
Button *m_button_guide = {nullptr};
|
|
Button *m_button_retry = {nullptr};
|
|
wxWindow* m_button_area = {nullptr};
|
|
|
|
wxHyperlinkCtrl *m_hyperlink = {nullptr};
|
|
AmsHumidityTipPopup m_Humidity_tip_popup;
|
|
|
|
std::string m_last_ams_id;
|
|
std::string m_last_tray_id;
|
|
public:
|
|
std::string GetCurentAms();
|
|
std::string GetCurentShowAms();
|
|
std::string GetCurrentCan(std::string amsid);
|
|
wxColour GetCanColour(std::string amsid, std::string canid);
|
|
|
|
bool m_is_none_ams_mode{false};
|
|
void SetActionState(bool button_status[]);
|
|
void EnterNoneAMSMode();
|
|
void ExitNoneAMSMode();
|
|
|
|
void EnterCalibrationMode(bool read_to_calibration);
|
|
void ExitcClibrationMode();
|
|
|
|
void SetClibrationpercent(int percent);
|
|
void SetClibrationLink(wxString link);
|
|
|
|
void PlayRridLoading(wxString amsid, wxString canid);
|
|
void StopRridLoading(wxString amsid, wxString canid);
|
|
|
|
void SetFilamentStep(int item_idx, FilamentStepType f_type, bool is_extrusion_exist = false);
|
|
void ShowFilamentTip(bool hasams = true);
|
|
|
|
void SetHumidity(std::string amsid, int humidity);
|
|
void UpdateStepCtrl(bool is_extrusion_exist);
|
|
void CreateAms();
|
|
void UpdateAms(std::vector<AMSinfo> info, bool keep_selection = true, bool has_extrusion_cali = true, bool is_reset = false);
|
|
void AddAms(AMSinfo info, bool refresh = true);
|
|
void SetExtruder(bool on_off, bool is_vams, wxColour col);
|
|
void SetAmsStep(std::string ams_id, std::string canid, AMSPassRoadType type, AMSPassRoadSTEP step);
|
|
void SwitchAms(std::string ams_id);
|
|
|
|
void msw_rescale();
|
|
void on_filament_load(wxCommandEvent &event);
|
|
void on_filament_unload(wxCommandEvent &event);
|
|
void on_ams_setting_click(wxMouseEvent &event);
|
|
void on_extrusion_cali(wxCommandEvent &event);
|
|
void on_ams_setting_click(wxCommandEvent &event);
|
|
void on_clibration_again_click(wxMouseEvent &event);
|
|
void on_clibration_cancel_click(wxMouseEvent &event);
|
|
void Reset();
|
|
|
|
void show_noams_mode(bool show, bool support_virtual_tray, bool support_extrustion_cali);
|
|
void show_auto_refill(bool show);
|
|
void show_vams(bool show);
|
|
void show_vams_kn_value(bool show);
|
|
void update_vams_kn_value(AmsTray tray, MachineObject* obj);
|
|
|
|
void reset_vams();
|
|
void post_event(wxEvent&& event);
|
|
|
|
virtual bool Enable(bool enable = true);
|
|
|
|
public:
|
|
std::string m_current_senect;
|
|
};
|
|
|
|
wxDECLARE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_LOAD, SimpleEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_UNLOAD, SimpleEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_SETTINGS, SimpleEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_FILAMENT_BACKUP, SimpleEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_REFRESH_RFID, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_VAMS_ON_FILAMENT_EDIT, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_AGAIN, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_CLIBRATION_CANCEL, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_GUIDE_WIKI, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_RETRY, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_SHOW_HUMIDITY_TIPS, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_AMS_UNSELETED_VAMS, wxCommandEvent);
|
|
wxDECLARE_EVENT(EVT_CLEAR_SPEED_CONTROL, wxCommandEvent);
|
|
|
|
}} // namespace Slic3r::GUI
|
|
|
|
#endif // !slic3r_GUI_amscontrol_hpp_
|