From 4f620cb6b4e7db19f6a08f9ad89afa6cfc120060 Mon Sep 17 00:00:00 2001 From: HYzd766 <1550039450@qq.com> Date: Wed, 4 Mar 2026 13:37:55 +0800 Subject: [PATCH 01/24] Q2C model and new consumables --- resources/profiles/Qidi.json | 1304 +++++++++++++++++ resources/profiles/Qidi/Qidi Q2C_cover.png | Bin 0 -> 35014 bytes .../Qidi/filament/Q2/Bambu ABS @Q2C.json | 32 + .../Q2/Bambu ABS @Qidi Q2C 0.2 nozzle.json | 12 + .../Q2/Bambu ABS @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Bambu ABS @Qidi Q2C 0.6 nozzle.json | 11 + .../Q2/Bambu ABS @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/Bambu PETG @Q2C.json | 33 + .../Q2/Bambu PETG @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Bambu PETG @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Bambu PETG @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Bambu PETG @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/Bambu PLA @Q2C.json | 22 + .../Q2/Bambu PLA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Bambu PLA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Bambu PLA @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Bambu PLA @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/Generic ABS @Q2C.json | 33 + .../Q2/Generic ABS @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Generic ABS @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Generic ABS @Qidi Q2C 0.6 nozzle.json | 11 + .../Q2/Generic ABS @Qidi Q2C 0.8 nozzle.json | 11 + .../Qidi/filament/Q2/Generic PC @Q2C.json | 32 + .../Q2/Generic PC @Qidi Q2C 0.2 nozzle.json | 12 + .../Q2/Generic PC @Qidi Q2C 0.4 nozzle.json | 12 + .../Q2/Generic PC @Qidi Q2C 0.6 nozzle.json | 12 + .../Q2/Generic PC @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/Generic PETG @Q2C.json | 34 + .../Q2/Generic PETG @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Generic PETG @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Generic PETG @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Generic PETG @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/Generic PLA @Q2C.json | 26 + .../Q2/Generic PLA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Generic PLA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Generic PLA @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Generic PLA @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/Generic PLA Silk @Q2C.json | 28 + ...Generic PLA Silk @Qidi Q2C 0.4 nozzle.json | 9 + ...Generic PLA Silk @Qidi Q2C 0.6 nozzle.json | 10 + .../Qidi/filament/Q2/Generic PLA+ @Q2C.json | 24 + .../Q2/Generic PLA+ @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Generic PLA+ @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Generic PLA+ @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Generic PLA+ @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/Generic TPU 95A @Q2C.json | 24 + .../Generic TPU 95A @Qidi Q2C 0.4 nozzle.json | 9 + .../Generic TPU 95A @Qidi Q2C 0.6 nozzle.json | 9 + .../Generic TPU 95A @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/HATCHBOX ABS @Q2C.json | 31 + .../Q2/HATCHBOX ABS @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/HATCHBOX ABS @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/HATCHBOX ABS @Qidi Q2C 0.6 nozzle.json | 11 + .../Q2/HATCHBOX ABS @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/HATCHBOX PETG @Q2C.json | 33 + .../HATCHBOX PETG @Qidi Q2C 0.2 nozzle.json | 11 + .../HATCHBOX PETG @Qidi Q2C 0.4 nozzle.json | 10 + .../HATCHBOX PETG @Qidi Q2C 0.6 nozzle.json | 10 + .../HATCHBOX PETG @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/HATCHBOX PLA @Q2C.json | 22 + .../Q2/HATCHBOX PLA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/HATCHBOX PLA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/HATCHBOX PLA @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/HATCHBOX PLA @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/Overture ABS @Q2C.json | 32 + .../Q2/Overture ABS @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Overture ABS @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Overture ABS @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Overture ABS @Qidi Q2C 0.8 nozzle.json | 11 + .../Qidi/filament/Q2/Overture PLA @Q2C.json | 26 + .../Q2/Overture PLA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/Overture PLA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/Overture PLA @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/Overture PLA @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/PolyLite ABS @Q2C.json | 32 + .../Q2/PolyLite ABS @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/PolyLite ABS @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/PolyLite ABS @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/PolyLite ABS @Qidi Q2C 0.8 nozzle.json | 11 + .../Qidi/filament/Q2/PolyLite PLA @Q2C.json | 26 + .../Q2/PolyLite PLA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/PolyLite PLA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/PolyLite PLA @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/PolyLite PLA @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI ABS Odorless @Q2C.json | 32 + ...IDI ABS Odorless @Qidi Q2C 0.2 nozzle.json | 11 + ...IDI ABS Odorless @Qidi Q2C 0.4 nozzle.json | 10 + ...IDI ABS Odorless @Qidi Q2C 0.6 nozzle.json | 12 + ...IDI ABS Odorless @Qidi Q2C 0.8 nozzle.json | 13 + .../filament/Q2/QIDI ABS Rapido @Q2C.json | 31 + .../QIDI ABS Rapido @Qidi Q2C 0.2 nozzle.json | 11 + .../QIDI ABS Rapido @Qidi Q2C 0.4 nozzle.json | 10 + .../QIDI ABS Rapido @Qidi Q2C 0.6 nozzle.json | 11 + .../QIDI ABS Rapido @Qidi Q2C 0.8 nozzle.json | 12 + .../Q2/QIDI ABS Rapido Metal @Q2C.json | 31 + ...ABS Rapido Metal @Qidi Q2C 0.2 nozzle.json | 11 + ...ABS Rapido Metal @Qidi Q2C 0.4 nozzle.json | 10 + ...ABS Rapido Metal @Qidi Q2C 0.6 nozzle.json | 11 + ...ABS Rapido Metal @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/QIDI ABS-GF @Q2C.json | 34 + .../Q2/QIDI ABS-GF @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI ABS-GF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI ABS-GF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI ASA @Q2C.json | 33 + .../Q2/QIDI ASA @Qidi Q2C 0.2 nozzle.json | 11 + .../Q2/QIDI ASA @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI ASA @Qidi Q2C 0.6 nozzle.json | 11 + .../Q2/QIDI ASA @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json | 38 + .../QIDI ASA-Aero @Qidi Q2C 0.4 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI ASA-CF @Q2.json | 34 + .../Qidi/filament/Q2/QIDI ASA-CF @Q2C.json | 33 + .../Q2/QIDI ASA-CF @Qidi Q2 0.4 nozzle.json | 10 + .../Q2/QIDI ASA-CF @Qidi Q2 0.6 nozzle.json | 11 + .../Q2/QIDI ASA-CF @Qidi Q2 0.8 nozzle.json | 12 + .../Q2/QIDI ASA-CF @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI ASA-CF @Qidi Q2C 0.6 nozzle.json | 11 + .../Q2/QIDI ASA-CF @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/filament/Q2/QIDI PA12-CF @Q2C.json | 34 + .../Q2/QIDI PA12-CF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PA12-CF @Qidi Q2C 0.6 nozzle.json | 9 + .../Q2/QIDI PA12-CF @Qidi Q2C 0.8 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json | 34 + .../Q2/QIDI PAHT-CF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PAHT-CF @Qidi Q2C 0.6 nozzle.json | 9 + .../Q2/QIDI PAHT-CF @Qidi Q2C 0.8 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json | 34 + .../Q2/QIDI PAHT-GF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PAHT-GF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PAHT-GF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json | 33 + .../QIDI PC-ABS-FR @Qidi Q2C 0.4 nozzle.json | 10 + .../QIDI PC-ABS-FR @Qidi Q2C 0.6 nozzle.json | 10 + .../QIDI PC-ABS-FR @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PEBA 95A @Q2.json | 29 + .../Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json | 29 + .../Q2/QIDI PEBA 95A @Qidi Q2 0.4 nozzle.json | 9 + .../Q2/QIDI PEBA 95A @Qidi Q2 0.6 nozzle.json | 9 + .../QIDI PEBA 95A @Qidi Q2C 0.4 nozzle.json | 9 + .../QIDI PEBA 95A @Qidi Q2C 0.6 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI PET-CF @Q2C.json | 36 + .../Q2/QIDI PET-CF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PET-CF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PET-CF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PET-GF @Q2C.json | 34 + .../Q2/QIDI PET-GF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PET-GF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PET-GF @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI PETG Basic @Q2C.json | 33 + .../QIDI PETG Basic @Qidi Q2C 0.2 nozzle.json | 11 + .../QIDI PETG Basic @Qidi Q2C 0.4 nozzle.json | 9 + .../QIDI PETG Basic @Qidi Q2C 0.6 nozzle.json | 10 + .../QIDI PETG Basic @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI PETG Rapido @Q2C.json | 33 + ...QIDI PETG Rapido @Qidi Q2C 0.2 nozzle.json | 11 + ...QIDI PETG Rapido @Qidi Q2C 0.4 nozzle.json | 9 + ...QIDI PETG Rapido @Qidi Q2C 0.6 nozzle.json | 10 + ...QIDI PETG Rapido @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI PETG Tough @Q2C.json | 33 + .../QIDI PETG Tough @Qidi Q2C 0.2 nozzle.json | 11 + .../QIDI PETG Tough @Qidi Q2C 0.4 nozzle.json | 9 + .../QIDI PETG Tough @Qidi Q2C 0.6 nozzle.json | 10 + .../QIDI PETG Tough @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI PETG Translucent @Q2C.json | 33 + ...PETG Translucent @Qidi Q2C 0.2 nozzle.json | 11 + ...PETG Translucent @Qidi Q2C 0.4 nozzle.json | 9 + ...PETG Translucent @Qidi Q2C 0.6 nozzle.json | 10 + ...PETG Translucent @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PETG-CF @Q2C.json | 33 + .../Q2/QIDI PETG-CF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PETG-CF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PETG-CF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PETG-GF @Q2C.json | 33 + .../Q2/QIDI PETG-GF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI PETG-GF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PETG-GF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PLA Basic @Q2C.json | 25 + .../QIDI PLA Basic @Qidi Q2C 0.2 nozzle.json | 11 + .../QIDI PLA Basic @Qidi Q2C 0.4 nozzle.json | 10 + .../QIDI PLA Basic @Qidi Q2C 0.6 nozzle.json | 10 + .../QIDI PLA Basic @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI PLA Matte Basic @Q2C.json | 25 + ... PLA Matte Basic @Qidi Q2C 0.2 nozzle.json | 11 + ... PLA Matte Basic @Qidi Q2C 0.4 nozzle.json | 10 + ... PLA Matte Basic @Qidi Q2C 0.6 nozzle.json | 10 + ... PLA Matte Basic @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI PLA Rapido @Q2C.json | 24 + .../QIDI PLA Rapido @Qidi Q2C 0.2 nozzle.json | 11 + .../QIDI PLA Rapido @Qidi Q2C 0.4 nozzle.json | 10 + .../QIDI PLA Rapido @Qidi Q2C 0.6 nozzle.json | 10 + .../QIDI PLA Rapido @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI PLA Rapido Matte @Q2C.json | 23 + ...PLA Rapido Matte @Qidi Q2C 0.2 nozzle.json | 11 + ...PLA Rapido Matte @Qidi Q2C 0.4 nozzle.json | 10 + ...PLA Rapido Matte @Qidi Q2C 0.6 nozzle.json | 10 + ...PLA Rapido Matte @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI PLA Rapido Metal @Q2C.json | 23 + ...PLA Rapido Metal @Qidi Q2C 0.2 nozzle.json | 11 + ...PLA Rapido Metal @Qidi Q2C 0.4 nozzle.json | 10 + ...PLA Rapido Metal @Qidi Q2C 0.6 nozzle.json | 10 + ...PLA Rapido Metal @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI PLA Rapido Silk @Q2C.json | 26 + ... PLA Rapido Silk @Qidi Q2C 0.4 nozzle.json | 10 + ... PLA Rapido Silk @Qidi Q2C 0.6 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PLA-CF @Q2C.json | 26 + .../Q2/QIDI PLA-CF @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI PLA-CF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PLA-CF @Qidi Q2C 0.8 nozzle.json | 11 + .../Qidi/filament/Q2/QIDI PPS-CF @Q2C.json | 35 + .../Q2/QIDI PPS-CF @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI PPS-CF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PPS-CF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI PPS-GF @Q2.json | 36 + .../Qidi/filament/Q2/QIDI PPS-GF @Q2C.json | 35 + .../Q2/QIDI PPS-GF @Qidi Q2 0.4 nozzle.json | 10 + .../Q2/QIDI PPS-GF @Qidi Q2 0.6 nozzle.json | 10 + .../Q2/QIDI PPS-GF @Qidi Q2 0.8 nozzle.json | 10 + .../Q2/QIDI PPS-GF @Qidi Q2C 0.4 nozzle.json | 10 + .../Q2/QIDI PPS-GF @Qidi Q2C 0.6 nozzle.json | 10 + .../Q2/QIDI PPS-GF @Qidi Q2C 0.8 nozzle.json | 10 + .../Q2/QIDI Support For PAHT @Q2C.json | 37 + ...Support For PAHT @Qidi Q2C 0.4 nozzle.json | 9 + ...Support For PAHT @Qidi Q2C 0.6 nozzle.json | 9 + ...Support For PAHT @Qidi Q2C 0.8 nozzle.json | 9 + .../Q2/QIDI Support For PET-PA @Q2C.json | 37 + ...pport For PET-PA @Qidi Q2C 0.4 nozzle.json | 9 + ...pport For PET-PA @Qidi Q2C 0.6 nozzle.json | 9 + ...pport For PET-PA @Qidi Q2C 0.8 nozzle.json | 9 + .../filament/Q2/QIDI TPU 95A-HF @Q2C.json | 25 + .../QIDI TPU 95A-HF @Qidi Q2C 0.4 nozzle.json | 9 + .../QIDI TPU 95A-HF @Qidi Q2C 0.6 nozzle.json | 9 + .../QIDI TPU 95A-HF @Qidi Q2C 0.8 nozzle.json | 10 + .../Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json | 28 + .../QIDI TPU-Aero @Qidi Q2C 0.4 nozzle.json | 9 + .../QIDI TPU-Aero @Qidi Q2C 0.6 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI TPU-GF @Q2.json | 25 + .../Qidi/filament/Q2/QIDI TPU-GF @Q2C.json | 25 + .../Q2/QIDI TPU-GF @Qidi Q2 0.4 nozzle.json | 9 + .../Q2/QIDI TPU-GF @Qidi Q2 0.6 nozzle.json | 9 + .../Q2/QIDI TPU-GF @Qidi Q2 0.8 nozzle.json | 9 + .../Q2/QIDI TPU-GF @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI TPU-GF @Qidi Q2C 0.6 nozzle.json | 9 + .../Q2/QIDI TPU-GF @Qidi Q2C 0.8 nozzle.json | 9 + .../Qidi/filament/Q2/QIDI UltraPA @Q2C.json | 30 + .../Q2/QIDI UltraPA @Qidi Q2C 0.4 nozzle.json | 9 + .../Q2/QIDI UltraPA @Qidi Q2C 0.6 nozzle.json | 9 + .../Q2/QIDI UltraPA @Qidi Q2C 0.8 nozzle.json | 9 + .../filament/Q2/QIDI UltraPA-CF25 @Q2C.json | 35 + ...IDI UltraPA-CF25 @Qidi Q2C 0.4 nozzle.json | 9 + ...IDI UltraPA-CF25 @Qidi Q2C 0.6 nozzle.json | 10 + ...IDI UltraPA-CF25 @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/QIDI WOOD Rapido @Q2C.json | 27 + ...QIDI WOOD Rapido @Qidi Q2C 0.4 nozzle.json | 10 + ...QIDI WOOD Rapido @Qidi Q2C 0.6 nozzle.json | 10 + ...QIDI WOOD Rapido @Qidi Q2C 0.8 nozzle.json | 10 + .../filament/Q2/fdm_filament_q_common.json | 13 + .../QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json | 11 + .../QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json | 13 + .../QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json | 14 + .../QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json | 11 + .../QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json | 12 + .../QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json | 14 + ...QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json | 11 + ...QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json | 12 + ...QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json | 14 + ...QIDI ASA-CF @Qidi X-Plus 4 0.4 nozzle.json | 10 + ...QIDI ASA-CF @Qidi X-Plus 4 0.6 nozzle.json | 11 + ...QIDI ASA-CF @Qidi X-Plus 4 0.8 nozzle.json | 12 + ...IDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json | 16 + ...IDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json | 15 + ...IDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json | 17 + .../profiles/Qidi/filament/QIDI ASA-CF.json | 34 + ...QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json | 10 + ...QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json | 10 + ...DI PEBA 95A @Qidi X-Plus 4 0.4 nozzle.json | 9 + ...DI PEBA 95A @Qidi X-Plus 4 0.6 nozzle.json | 9 + .../profiles/Qidi/filament/QIDI PEBA 95A.json | 36 + .../QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json | 11 + .../QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json | 11 + .../QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json | 11 + ...QIDI PPS-GF @Qidi X-Plus 4 0.4 nozzle.json | 10 + ...QIDI PPS-GF @Qidi X-Plus 4 0.6 nozzle.json | 10 + ...QIDI PPS-GF @Qidi X-Plus 4 0.8 nozzle.json | 10 + .../profiles/Qidi/filament/QIDI PPS-GF.json | 46 + .../QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json | 10 + .../QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json | 10 + .../QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json | 10 + ...QIDI TPU-GF @Qidi X-Plus 4 0.4 nozzle.json | 9 + ...QIDI TPU-GF @Qidi X-Plus 4 0.6 nozzle.json | 9 + ...QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle.json | 9 + .../profiles/Qidi/filament/QIDI TPU-GF.json | 35 + .../QIDI ASA-CF @Qidi X-Max 4 0.4 nozzle.json | 9 + .../QIDI ASA-CF @Qidi X-Max 4 0.6 nozzle.json | 11 + .../QIDI ASA-CF @Qidi X-Max 4 0.8 nozzle.json | 12 + .../filament/X4/QIDI ASA-CF @X-Max 4.json | 34 + ...IDI PEBA 95A @Qidi X-Max 4 0.4 nozzle.json | 9 + ...IDI PEBA 95A @Qidi X-Max 4 0.6 nozzle.json | 9 + .../filament/X4/QIDI PEBA 95A @X-Max 4.json | 29 + .../QIDI TPU-GF @Qidi X-Max 4 0.4 nozzle.json | 9 + .../QIDI TPU-GF @Qidi X-Max 4 0.6 nozzle.json | 9 + .../QIDI TPU-GF @Qidi X-Max 4 0.8 nozzle.json | 9 + .../filament/X4/QIDI TPU-GF @X-Max 4.json | 29 + .../Qidi/machine/Qidi Q1 Pro 0.4 nozzle.json | 2 +- .../Qidi/machine/Qidi Q2 0.4 nozzle.json | 16 +- .../Qidi/machine/Qidi Q2C 0.2 nozzle.json | 27 + .../Qidi/machine/Qidi Q2C 0.4 nozzle.json | 74 + .../Qidi/machine/Qidi Q2C 0.6 nozzle.json | 30 + .../Qidi/machine/Qidi Q2C 0.8 nozzle.json | 30 + resources/profiles/Qidi/machine/Qidi Q2C.json | 12 + .../Qidi/machine/Qidi X-Max 3 0.4 nozzle.json | 2 +- .../Qidi/machine/Qidi X-Max 4 0.4 nozzle.json | 22 +- .../machine/Qidi X-Plus 3 0.4 nozzle.json | 2 +- .../machine/Qidi X-Plus 4 0.4 nozzle.json | 3 +- .../machine/Qidi X-Plus 4 0.6 nozzle.json | 3 +- .../machine/Qidi X-Smart 3 0.4 nozzle.json | 2 +- .../Qidi/machine/fdm_machine_common.json | 1 + .../Qidi/machine/fdm_qidi_x3_common.json | 13 + .../0.06mm Standard @Qidi Q2C 0.2 nozzle.json | 12 + .../0.08mm Standard @Qidi Q2C 0.2 nozzle.json | 12 + .../0.10mm Standard @Qidi Q2C 0.2 nozzle.json | 12 + .../Qidi/process/0.12mm Fine @Qidi Q2C.json | 12 + .../0.12mm Standard @Qidi Q2C 0.2 nozzle.json | 12 + .../0.14mm Standard @Qidi Q2C 0.2 nozzle.json | 12 + .../process/0.16mm Optimal @Qidi Q2C.json | 12 + .../0.18mm Standard @Qidi Q2C 0.6 nozzle.json | 12 + .../process/0.20mm Standard @Qidi Q2C.json | 12 + .../Qidi/process/0.24mm Draft @Qidi Q2C.json | 12 + .../0.24mm Standard @Qidi Q2C 0.6 nozzle.json | 12 + .../0.24mm Standard @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/process/0.25mm Draft @Qidi Q2C.json | 86 ++ .../process/0.28mm Extra Draft @Qidi Q2C.json | 12 + .../process/0.30mm Extra Draft @Qidi Q2C.json | 86 ++ .../0.30mm Standard @Qidi Q2C 0.6 nozzle.json | 12 + .../0.32mm Standard @Qidi Q2C 0.8 nozzle.json | 12 + .../0.36mm Standard @Qidi Q2C 0.6 nozzle.json | 12 + .../0.40mm Standard @Qidi Q2C 0.8 nozzle.json | 12 + .../0.42mm Standard @Qidi Q2C 0.6 nozzle.json | 12 + .../0.48mm Standard @Qidi Q2C 0.8 nozzle.json | 12 + .../0.56mm Standard @Qidi Q2C 0.8 nozzle.json | 12 + .../Qidi/process/fdm_process_common.json | 13 + .../process/fdm_process_qidi_x3_common.json | 13 + .../Qidi/qidi_q2c_buildplate_model.stl | Bin 0 -> 20284 bytes .../Qidi/qidi_q2c_buildplate_texture.png | Bin 0 -> 8767 bytes 343 files changed, 6378 insertions(+), 25 deletions(-) create mode 100644 resources/profiles/Qidi/Qidi Q2C_cover.png create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu ABS @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu ABS @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu ABS @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu ABS @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu ABS @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PETG @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PETG @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PETG @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PETG @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PETG @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PLA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PLA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PLA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PLA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Bambu PLA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic ABS @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic ABS @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic ABS @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic ABS @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic ABS @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PC @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PC @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PC @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PC @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PETG @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PETG @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PETG @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PETG @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PETG @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA Silk @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA+ @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA+ @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA+ @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA+ @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic PLA+ @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Generic TPU 95A @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX ABS @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PETG @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/HATCHBOX PLA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture ABS @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture ABS @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture ABS @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture ABS @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture ABS @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture PLA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture PLA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture PLA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture PLA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/Overture PLA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite ABS @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite ABS @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite ABS @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite ABS @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite ABS @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite PLA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite PLA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite PLA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite PLA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/PolyLite PLA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ABS-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-Aero @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI ASA-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PA12-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Qidi Q2 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Qidi Q2 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PEBA 95A @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PET-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Basic @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Tough @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PETG-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Basic @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA Rapido Silk @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PLA-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-CF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI PPS-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-Aero @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI TPU-GF @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Q2C.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Plus 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI ASA-CF.json create mode 100644 resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PEBA 95A @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PEBA 95A.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF @Qidi X-Plus 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI PPS-GF.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi X-Plus 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi X-Plus 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/QIDI TPU-GF.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI ASA-CF @X-Max 4.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @Qidi X-Max 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @Qidi X-Max 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI PEBA 95A @X-Max 4.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/filament/X4/QIDI TPU-GF @X-Max 4.json create mode 100644 resources/profiles/Qidi/machine/Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/machine/Qidi Q2C 0.4 nozzle.json create mode 100644 resources/profiles/Qidi/machine/Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/machine/Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/machine/Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json create mode 100644 resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json create mode 100644 resources/profiles/Qidi/qidi_q2c_buildplate_model.stl create mode 100644 resources/profiles/Qidi/qidi_q2c_buildplate_texture.png diff --git a/resources/profiles/Qidi.json b/resources/profiles/Qidi.json index ead432ab81..cb9a9b1fb1 100644 --- a/resources/profiles/Qidi.json +++ b/resources/profiles/Qidi.json @@ -16,6 +16,10 @@ "name": "Qidi Q2", "sub_path": "machine/Qidi Q2.json" }, + { + "name": "Qidi Q2C", + "sub_path": "machine/Qidi Q2C.json" + }, { "name": "Qidi X-CF Pro", "sub_path": "machine/Qidi X-CF Pro.json" @@ -146,6 +150,10 @@ "name": "0.25mm Draft @Qidi Q2", "sub_path": "process/0.25mm Draft @Qidi Q2.json" }, + { + "name": "0.25mm Draft @Qidi Q2C", + "sub_path": "process/0.25mm Draft @Qidi Q2C.json" + }, { "name": "0.25mm Draft @Qidi XMax3", "sub_path": "process/0.25mm Draft @Qidi XMax3.json" @@ -174,6 +182,10 @@ "name": "0.30mm Extra Draft @Qidi Q2", "sub_path": "process/0.30mm Extra Draft @Qidi Q2.json" }, + { + "name": "0.30mm Extra Draft @Qidi Q2C", + "sub_path": "process/0.30mm Extra Draft @Qidi Q2C.json" + }, { "name": "0.30mm Extra Draft @Qidi XMax3", "sub_path": "process/0.30mm Extra Draft @Qidi XMax3.json" @@ -258,6 +270,10 @@ "name": "0.12mm Fine @Qidi Q2", "sub_path": "process/0.12mm Fine @Qidi Q2.json" }, + { + "name": "0.12mm Fine @Qidi Q2C", + "sub_path": "process/0.12mm Fine @Qidi Q2C.json" + }, { "name": "0.12mm Fine @Qidi XMax3", "sub_path": "process/0.12mm Fine @Qidi XMax3.json" @@ -282,6 +298,10 @@ "name": "0.16mm Optimal @Qidi Q2", "sub_path": "process/0.16mm Optimal @Qidi Q2.json" }, + { + "name": "0.16mm Optimal @Qidi Q2C", + "sub_path": "process/0.16mm Optimal @Qidi Q2C.json" + }, { "name": "0.16mm Optimal @Qidi XMax3", "sub_path": "process/0.16mm Optimal @Qidi XMax3.json" @@ -306,6 +326,10 @@ "name": "0.20mm Standard @Qidi Q2", "sub_path": "process/0.20mm Standard @Qidi Q2.json" }, + { + "name": "0.20mm Standard @Qidi Q2C", + "sub_path": "process/0.20mm Standard @Qidi Q2C.json" + }, { "name": "0.20mm Standard @Qidi XMax3", "sub_path": "process/0.20mm Standard @Qidi XMax3.json" @@ -330,6 +354,10 @@ "name": "0.24mm Draft @Qidi Q2", "sub_path": "process/0.24mm Draft @Qidi Q2.json" }, + { + "name": "0.24mm Draft @Qidi Q2C", + "sub_path": "process/0.24mm Draft @Qidi Q2C.json" + }, { "name": "0.24mm Draft @Qidi XMax3", "sub_path": "process/0.24mm Draft @Qidi XMax3.json" @@ -354,6 +382,10 @@ "name": "0.28mm Extra Draft @Qidi Q2", "sub_path": "process/0.28mm Extra Draft @Qidi Q2.json" }, + { + "name": "0.28mm Extra Draft @Qidi Q2C", + "sub_path": "process/0.28mm Extra Draft @Qidi Q2C.json" + }, { "name": "0.28mm Extra Draft @Qidi XMax3", "sub_path": "process/0.28mm Extra Draft @Qidi XMax3.json" @@ -378,6 +410,10 @@ "name": "0.06mm Standard @Qidi Q2 0.2 nozzle", "sub_path": "process/0.06mm Standard @Qidi Q2 0.2 nozzle.json" }, + { + "name": "0.06mm Standard @Qidi Q2C 0.2 nozzle", + "sub_path": "process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json" + }, { "name": "0.06mm Standard @Qidi XMax3 0.2 nozzle", "sub_path": "process/0.06mm Standard @Qidi XMax3 0.2 nozzle.json" @@ -402,6 +438,10 @@ "name": "0.08mm Standard @Qidi Q2 0.2 nozzle", "sub_path": "process/0.08mm Standard @Qidi Q2 0.2 nozzle.json" }, + { + "name": "0.08mm Standard @Qidi Q2C 0.2 nozzle", + "sub_path": "process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json" + }, { "name": "0.08mm Standard @Qidi XMax3 0.2 nozzle", "sub_path": "process/0.08mm Standard @Qidi XMax3 0.2 nozzle.json" @@ -426,6 +466,10 @@ "name": "0.10mm Standard @Qidi Q2 0.2 nozzle", "sub_path": "process/0.10mm Standard @Qidi Q2 0.2 nozzle.json" }, + { + "name": "0.10mm Standard @Qidi Q2C 0.2 nozzle", + "sub_path": "process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json" + }, { "name": "0.10mm Standard @Qidi XMax3 0.2 nozzle", "sub_path": "process/0.10mm Standard @Qidi XMax3 0.2 nozzle.json" @@ -450,6 +494,10 @@ "name": "0.12mm Standard @Qidi Q2 0.2 nozzle", "sub_path": "process/0.12mm Standard @Qidi Q2 0.2 nozzle.json" }, + { + "name": "0.12mm Standard @Qidi Q2C 0.2 nozzle", + "sub_path": "process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json" + }, { "name": "0.12mm Standard @Qidi XMax3 0.2 nozzle", "sub_path": "process/0.12mm Standard @Qidi XMax3 0.2 nozzle.json" @@ -474,6 +522,10 @@ "name": "0.14mm Standard @Qidi Q2 0.2 nozzle", "sub_path": "process/0.14mm Standard @Qidi Q2 0.2 nozzle.json" }, + { + "name": "0.14mm Standard @Qidi Q2C 0.2 nozzle", + "sub_path": "process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json" + }, { "name": "0.14mm Standard @Qidi XMax3 0.2 nozzle", "sub_path": "process/0.14mm Standard @Qidi XMax3 0.2 nozzle.json" @@ -498,6 +550,10 @@ "name": "0.18mm Standard @Qidi Q2 0.6 nozzle", "sub_path": "process/0.18mm Standard @Qidi Q2 0.6 nozzle.json" }, + { + "name": "0.18mm Standard @Qidi Q2C 0.6 nozzle", + "sub_path": "process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json" + }, { "name": "0.18mm Standard @Qidi XMax3 0.6 nozzle", "sub_path": "process/0.18mm Standard @Qidi XMax3 0.6 nozzle.json" @@ -522,6 +578,10 @@ "name": "0.24mm Standard @Qidi Q2 0.6 nozzle", "sub_path": "process/0.24mm Standard @Qidi Q2 0.6 nozzle.json" }, + { + "name": "0.24mm Standard @Qidi Q2C 0.6 nozzle", + "sub_path": "process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json" + }, { "name": "0.24mm Standard @Qidi XMax3 0.6 nozzle", "sub_path": "process/0.24mm Standard @Qidi XMax3 0.6 nozzle.json" @@ -546,6 +606,10 @@ "name": "0.24mm Standard @Qidi Q2 0.8 nozzle", "sub_path": "process/0.24mm Standard @Qidi Q2 0.8 nozzle.json" }, + { + "name": "0.24mm Standard @Qidi Q2C 0.8 nozzle", + "sub_path": "process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json" + }, { "name": "0.24mm Standard @Qidi XMax3 0.8 nozzle", "sub_path": "process/0.24mm Standard @Qidi XMax3 0.8 nozzle.json" @@ -570,6 +634,10 @@ "name": "0.30mm Standard @Qidi Q2 0.6 nozzle", "sub_path": "process/0.30mm Standard @Qidi Q2 0.6 nozzle.json" }, + { + "name": "0.30mm Standard @Qidi Q2C 0.6 nozzle", + "sub_path": "process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json" + }, { "name": "0.30mm Standard @Qidi XMax3 0.6 nozzle", "sub_path": "process/0.30mm Standard @Qidi XMax3 0.6 nozzle.json" @@ -594,6 +662,10 @@ "name": "0.32mm Standard @Qidi Q2 0.8 nozzle", "sub_path": "process/0.32mm Standard @Qidi Q2 0.8 nozzle.json" }, + { + "name": "0.32mm Standard @Qidi Q2C 0.8 nozzle", + "sub_path": "process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json" + }, { "name": "0.32mm Standard @Qidi XMax3 0.8 nozzle", "sub_path": "process/0.32mm Standard @Qidi XMax3 0.8 nozzle.json" @@ -618,6 +690,10 @@ "name": "0.36mm Standard @Qidi Q2 0.6 nozzle", "sub_path": "process/0.36mm Standard @Qidi Q2 0.6 nozzle.json" }, + { + "name": "0.36mm Standard @Qidi Q2C 0.6 nozzle", + "sub_path": "process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json" + }, { "name": "0.36mm Standard @Qidi XMax3 0.6 nozzle", "sub_path": "process/0.36mm Standard @Qidi XMax3 0.6 nozzle.json" @@ -642,6 +718,10 @@ "name": "0.40mm Standard @Qidi Q2 0.8 nozzle", "sub_path": "process/0.40mm Standard @Qidi Q2 0.8 nozzle.json" }, + { + "name": "0.40mm Standard @Qidi Q2C 0.8 nozzle", + "sub_path": "process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json" + }, { "name": "0.40mm Standard @Qidi XMax3 0.8 nozzle", "sub_path": "process/0.40mm Standard @Qidi XMax3 0.8 nozzle.json" @@ -666,6 +746,10 @@ "name": "0.42mm Standard @Qidi Q2 0.6 nozzle", "sub_path": "process/0.42mm Standard @Qidi Q2 0.6 nozzle.json" }, + { + "name": "0.42mm Standard @Qidi Q2C 0.6 nozzle", + "sub_path": "process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json" + }, { "name": "0.42mm Standard @Qidi XMax3 0.6 nozzle", "sub_path": "process/0.42mm Standard @Qidi XMax3 0.6 nozzle.json" @@ -690,6 +774,10 @@ "name": "0.48mm Standard @Qidi Q2 0.8 nozzle", "sub_path": "process/0.48mm Standard @Qidi Q2 0.8 nozzle.json" }, + { + "name": "0.48mm Standard @Qidi Q2C 0.8 nozzle", + "sub_path": "process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json" + }, { "name": "0.48mm Standard @Qidi XMax3 0.8 nozzle", "sub_path": "process/0.48mm Standard @Qidi XMax3 0.8 nozzle.json" @@ -714,6 +802,10 @@ "name": "0.56mm Standard @Qidi Q2 0.8 nozzle", "sub_path": "process/0.56mm Standard @Qidi Q2 0.8 nozzle.json" }, + { + "name": "0.56mm Standard @Qidi Q2C 0.8 nozzle", + "sub_path": "process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json" + }, { "name": "0.56mm Standard @Qidi XMax3 0.8 nozzle", "sub_path": "process/0.56mm Standard @Qidi XMax3 0.8 nozzle.json" @@ -1012,6 +1104,10 @@ "name": "QIDI PPS-CF@Q2-Series", "sub_path": "filament/Q2/QIDI PPS-CF @Q2.json" }, + { + "name": "QIDI PPS-GF@Q2-Series", + "sub_path": "filament/Q2/QIDI PPS-GF @Q2.json" + }, { "name": "QIDI Support For PAHT@Q2-Series", "sub_path": "filament/Q2/QIDI Support For PAHT @Q2.json" @@ -1028,6 +1124,10 @@ "name": "QIDI TPU-Aero@Q2-Series", "sub_path": "filament/Q2/QIDI TPU-Aero @Q2.json" }, + { + "name": "QIDI PEBA 95A@Q2-Series", + "sub_path": "filament/Q2/QIDI PEBA 95A @Q2.json" + }, { "name": "QIDI UltraPA-CF25@Q2-Series", "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Q2.json" @@ -1040,6 +1140,230 @@ "name": "QIDI WOOD Rapido@Q2-Series", "sub_path": "filament/Q2/QIDI WOOD Rapido @Q2.json" }, + { + "name": "QIDI ASA-CF@Q2-Series", + "sub_path": "filament/Q2/QIDI ASA-CF @Q2.json" + }, + { + "name": "QIDI TPU-GF@Q2-Series", + "sub_path": "filament/Q2/QIDI TPU-GF @Q2.json" + }, + { + "name": "Bambu ABS@Q2C-Series", + "sub_path": "filament/Q2/Bambu ABS @Q2C.json" + }, + { + "name": "Bambu PETG@Q2C-Series", + "sub_path": "filament/Q2/Bambu PETG @Q2C.json" + }, + { + "name": "Bambu PLA@Q2C-Series", + "sub_path": "filament/Q2/Bambu PLA @Q2C.json" + }, + { + "name": "Generic ABS@Q2C-Series", + "sub_path": "filament/Q2/Generic ABS @Q2C.json" + }, + { + "name": "Generic PC@Q2C-Series", + "sub_path": "filament/Q2/Generic PC @Q2C.json" + }, + { + "name": "Generic PETG@Q2C-Series", + "sub_path": "filament/Q2/Generic PETG @Q2C.json" + }, + { + "name": "Generic PLA Silk@Q2C-Series", + "sub_path": "filament/Q2/Generic PLA Silk @Q2C.json" + }, + { + "name": "Generic PLA+@Q2C-Series", + "sub_path": "filament/Q2/Generic PLA+ @Q2C.json" + }, + { + "name": "Generic PLA@Q2C-Series", + "sub_path": "filament/Q2/Generic PLA @Q2C.json" + }, + { + "name": "Generic TPU 95A@Q2C-Series", + "sub_path": "filament/Q2/Generic TPU 95A @Q2C.json" + }, + { + "name": "HATCHBOX ABS@Q2C-Series", + "sub_path": "filament/Q2/HATCHBOX ABS @Q2C.json" + }, + { + "name": "HATCHBOX PETG@Q2C-Series", + "sub_path": "filament/Q2/HATCHBOX PETG @Q2C.json" + }, + { + "name": "HATCHBOX PLA@Q2C-Series", + "sub_path": "filament/Q2/HATCHBOX PLA @Q2C.json" + }, + { + "name": "Overture ABS@Q2C-Series", + "sub_path": "filament/Q2/Overture ABS @Q2C.json" + }, + { + "name": "Overture PLA@Q2C-Series", + "sub_path": "filament/Q2/Overture PLA @Q2C.json" + }, + { + "name": "PolyLite ABS@Q2C-Series", + "sub_path": "filament/Q2/PolyLite ABS @Q2C.json" + }, + { + "name": "PolyLite PLA@Q2C-Series", + "sub_path": "filament/Q2/PolyLite PLA @Q2C.json" + }, + { + "name": "QIDI ABS Odorless@Q2C-Series", + "sub_path": "filament/Q2/QIDI ABS Odorless @Q2C.json" + }, + { + "name": "QIDI ABS Rapido Metal@Q2C-Series", + "sub_path": "filament/Q2/QIDI ABS Rapido Metal @Q2C.json" + }, + { + "name": "QIDI ABS Rapido@Q2C-Series", + "sub_path": "filament/Q2/QIDI ABS Rapido @Q2C.json" + }, + { + "name": "QIDI ABS-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI ABS-GF @Q2C.json" + }, + { + "name": "QIDI ASA-Aero@Q2C-Series", + "sub_path": "filament/Q2/QIDI ASA-Aero @Q2C.json" + }, + { + "name": "QIDI ASA@Q2C-Series", + "sub_path": "filament/Q2/QIDI ASA @Q2C.json" + }, + { + "name": "QIDI PA12-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PA12-CF @Q2C.json" + }, + { + "name": "QIDI PAHT-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PAHT-CF @Q2C.json" + }, + { + "name": "QIDI PAHT-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PAHT-GF @Q2C.json" + }, + { + "name": "QIDI PC-ABS-FR@Q2C-Series", + "sub_path": "filament/Q2/QIDI PC-ABS-FR @Q2C.json" + }, + { + "name": "QIDI PET-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PET-CF @Q2C.json" + }, + { + "name": "QIDI PET-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PET-GF @Q2C.json" + }, + { + "name": "QIDI PETG Basic@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG Basic @Q2C.json" + }, + { + "name": "QIDI PETG Rapido@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG Rapido @Q2C.json" + }, + { + "name": "QIDI PETG Tough@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG Tough @Q2C.json" + }, + { + "name": "QIDI PETG Translucent@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG Translucent @Q2C.json" + }, + { + "name": "QIDI PETG-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG-CF @Q2C.json" + }, + { + "name": "QIDI PETG-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PETG-GF @Q2C.json" + }, + { + "name": "QIDI PLA Basic@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Basic @Q2C.json" + }, + { + "name": "QIDI PLA Matte Basic@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Matte Basic @Q2C.json" + }, + { + "name": "QIDI PLA Rapido Matte@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Rapido Matte @Q2C.json" + }, + { + "name": "QIDI PLA Rapido Metal@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Rapido Metal @Q2C.json" + }, + { + "name": "QIDI PLA Rapido Silk@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Rapido Silk @Q2C.json" + }, + { + "name": "QIDI PLA Rapido@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA Rapido @Q2C.json" + }, + { + "name": "QIDI PLA-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PLA-CF @Q2C.json" + }, + { + "name": "QIDI PPS-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PPS-CF @Q2C.json" + }, + { + "name": "QIDI PPS-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI PPS-GF @Q2C.json" + }, + { + "name": "QIDI Support For PAHT@Q2C-Series", + "sub_path": "filament/Q2/QIDI Support For PAHT @Q2C.json" + }, + { + "name": "QIDI Support For PET/PA@Q2C-Series", + "sub_path": "filament/Q2/QIDI Support For PET-PA @Q2C.json" + }, + { + "name": "QIDI TPU 95A-HF@Q2C-Series", + "sub_path": "filament/Q2/QIDI TPU 95A-HF @Q2C.json" + }, + { + "name": "QIDI TPU-Aero@Q2C-Series", + "sub_path": "filament/Q2/QIDI TPU-Aero @Q2C.json" + }, + { + "name": "QIDI PEBA 95A@Q2C-Series", + "sub_path": "filament/Q2/QIDI PEBA 95A @Q2C.json" + }, + { + "name": "QIDI UltraPA-CF25@Q2C-Series", + "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Q2C.json" + }, + { + "name": "QIDI UltraPA@Q2C-Series", + "sub_path": "filament/Q2/QIDI UltraPA @Q2C.json" + }, + { + "name": "QIDI WOOD Rapido@Q2C-Series", + "sub_path": "filament/Q2/QIDI WOOD Rapido @Q2C.json" + }, + { + "name": "QIDI ASA-CF@Q2C-Series", + "sub_path": "filament/Q2/QIDI ASA-CF @Q2C.json" + }, + { + "name": "QIDI TPU-GF@Q2C-Series", + "sub_path": "filament/Q2/QIDI TPU-GF @Q2C.json" + }, { "name": "Bambu ABS", "sub_path": "filament/Bambu ABS.json" @@ -1128,6 +1452,10 @@ "name": "QIDI PPS-CF", "sub_path": "filament/QIDI PPS-CF.json" }, + { + "name": "QIDI PPS-GF", + "sub_path": "filament/QIDI PPS-GF.json" + }, { "name": "QIDI Support For PAHT", "sub_path": "filament/QIDI Support For PAHT.json" @@ -1140,6 +1468,10 @@ "name": "QIDI UltraPA-CF25", "sub_path": "filament/QIDI UltraPA-CF25.json" }, + { + "name": "QIDI TPU-GF", + "sub_path": "filament/QIDI TPU-GF.json" + }, { "name": "Qidi Generic PA", "sub_path": "filament/Qidi Generic PA.json" @@ -1268,6 +1600,10 @@ "name": "QIDI TPU-Aero", "sub_path": "filament/QIDI TPU-Aero.json" }, + { + "name": "QIDI PEBA 95A", + "sub_path": "filament/QIDI PEBA 95A.json" + }, { "name": "Qidi Generic TPU", "sub_path": "filament/Qidi Generic TPU.json" @@ -1280,6 +1616,10 @@ "name": "Qidi TPU 95A-HF", "sub_path": "filament/Qidi TPU 95A-HF.json" }, + { + "name": "QIDI ASA-CF", + "sub_path": "filament/QIDI ASA-CF.json" + }, { "name": "Bambu ABS @Qidi Q2 0.2 nozzle", "sub_path": "filament/Q2/Bambu ABS @Qidi Q2 0.2 nozzle.json" @@ -1620,6 +1960,18 @@ "name": "QIDI ASA @Qidi Q2 0.8 nozzle", "sub_path": "filament/Q2/QIDI ASA @Qidi Q2 0.8 nozzle.json" }, + { + "name": "QIDI ASA-CF @Qidi Q2 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q2 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q2 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2 0.8 nozzle.json" + }, { "name": "QIDI PA12-CF @Qidi Q2 0.4 nozzle", "sub_path": "filament/Q2/QIDI PA12-CF @Qidi Q2 0.4 nozzle.json" @@ -1892,6 +2244,18 @@ "name": "QIDI PPS-CF @Qidi Q2 0.8 nozzle", "sub_path": "filament/Q2/QIDI PPS-CF @Qidi Q2 0.8 nozzle.json" }, + { + "name": "QIDI PPS-GF @Qidi Q2 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q2 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q2 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2 0.8 nozzle.json" + }, { "name": "QIDI Support For PAHT @Qidi Q2 0.4 nozzle", "sub_path": "filament/Q2/QIDI Support For PAHT @Qidi Q2 0.4 nozzle.json" @@ -1936,6 +2300,14 @@ "name": "QIDI TPU-Aero @Qidi Q2 0.6 nozzle", "sub_path": "filament/Q2/QIDI TPU-Aero @Qidi Q2 0.6 nozzle.json" }, + { + "name": "QIDI PEBA 95A @Qidi Q2 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PEBA 95A @Qidi Q2 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi Q2 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PEBA 95A @Qidi Q2 0.6 nozzle.json" + }, { "name": "QIDI UltraPA-CF25 @Qidi Q2 0.4 nozzle", "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Qidi Q2 0.4 nozzle.json" @@ -1948,6 +2320,18 @@ "name": "QIDI UltraPA-CF25 @Qidi Q2 0.8 nozzle", "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Qidi Q2 0.8 nozzle.json" }, + { + "name": "QIDI TPU-GF @Qidi Q2 0.4 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q2 0.6 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q2 0.8 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2 0.8 nozzle.json" + }, { "name": "QIDI UltraPA @Qidi Q2 0.4 nozzle", "sub_path": "filament/Q2/QIDI UltraPA @Qidi Q2 0.4 nozzle.json" @@ -1972,6 +2356,742 @@ "name": "QIDI WOOD Rapido @Qidi Q2 0.8 nozzle", "sub_path": "filament/Q2/QIDI WOOD Rapido @Qidi Q2 0.8 nozzle.json" }, + { + "name": "Bambu ABS @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Bambu ABS @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Bambu ABS @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Bambu ABS @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Bambu ABS @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Bambu ABS @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Bambu PETG @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Bambu PETG @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Bambu PETG @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Bambu PETG @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Bambu PETG @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Bambu PLA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Bambu PLA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Bambu PLA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Bambu PLA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Bambu PLA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Generic ABS @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic ABS @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic ABS @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic ABS @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic ABS @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic PC @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Generic PC @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Generic PC @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic PC @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic PC @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic PC @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic PC @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic PC @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Generic PETG @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic PETG @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic PETG @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic PETG @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic PETG @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic PLA Silk @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic PLA Silk @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic PLA Silk @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Generic PLA+ @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic PLA+ @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic PLA+ @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic PLA+ @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic PLA+ @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Generic PLA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic PLA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic PLA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic PLA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic PLA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Generic TPU 95A @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Generic TPU 95A @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Generic TPU 95A @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Generic TPU 95A @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/HATCHBOX ABS @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/HATCHBOX ABS @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/HATCHBOX ABS @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "HATCHBOX ABS @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/HATCHBOX ABS @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/HATCHBOX PETG @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/HATCHBOX PETG @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/HATCHBOX PETG @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "HATCHBOX PETG @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/HATCHBOX PETG @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/HATCHBOX PLA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/HATCHBOX PLA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/HATCHBOX PLA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "HATCHBOX PLA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/HATCHBOX PLA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Overture ABS @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Overture ABS @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Overture ABS @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Overture ABS @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Overture ABS @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Overture ABS @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Overture ABS @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Overture ABS @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "Overture PLA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/Overture PLA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Overture PLA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/Overture PLA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Overture PLA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/Overture PLA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Overture PLA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/Overture PLA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/PolyLite ABS @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/PolyLite ABS @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/PolyLite ABS @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "PolyLite ABS @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/PolyLite ABS @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/PolyLite PLA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/PolyLite PLA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/PolyLite PLA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "PolyLite PLA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/PolyLite PLA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Odorless @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ABS Odorless @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido Metal @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido Metal @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ABS Rapido @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ABS Rapido @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ABS-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ABS-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ABS-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ABS-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-Aero @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ASA-Aero @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI ASA @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ASA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ASA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ASA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ASA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI ASA-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PA12-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PA12-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PA12-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PA12-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PAHT-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PAHT-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PAHT-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PC-ABS-FR @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PC-ABS-FR @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PC-ABS-FR @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PC-ABS-FR @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PET-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PET-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PET-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PET-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PET-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PET-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PET-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PET-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PETG Basic @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG Basic @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG Basic @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Basic @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG Basic @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Rapido @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG Rapido @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PETG Tough @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG Tough @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG Tough @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Tough @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG Tough @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG Translucent @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG Translucent @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PETG-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PETG-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PETG-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PETG-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PLA Basic @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Basic @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Basic @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Basic @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA Basic @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Matte Basic @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA Matte Basic @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Matte @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Matte @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Metal @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Metal @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Silk @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido Silk @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido Silk @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi Q2C 0.2 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA Rapido @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA Rapido @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PLA-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PLA-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PLA-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PLA-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PPS-CF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PPS-CF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-CF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PPS-CF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI PPS-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI Support For PAHT @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI Support For PAHT @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI Support For PET/PA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI Support For PET-PA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI TPU 95A-HF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI TPU 95A-HF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI TPU-Aero @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI TPU-Aero @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-Aero @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI TPU-Aero @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI PEBA 95A @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI PEBA 95A @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI UltraPA-CF25 @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA-CF25 @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI TPU-GF @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI UltraPA @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI UltraPA @Qidi Q2C 0.8 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi Q2C 0.4 nozzle", + "sub_path": "filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi Q2C 0.6 nozzle", + "sub_path": "filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "QIDI WOOD Rapido @Qidi Q2C 0.8 nozzle", + "sub_path": "filament/Q2/QIDI WOOD Rapido @Qidi Q2C 0.8 nozzle.json" + }, { "name": "Bambu ABS @0.2 nozzle", "sub_path": "filament/Bambu ABS @0.2 nozzle.json" @@ -2464,6 +3584,66 @@ "name": "QIDI ASA @Qidi X-Smart 3 0.2 nozzle", "sub_path": "filament/QIDI ASA @Qidi X-Smart 3 0.2 nozzle.json" }, + { + "name": "QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 4 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Max 3 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Max 3 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Max 3 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 3 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 3 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Plus 3 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Smart 3 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Smart 3 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle", + "sub_path": "filament/QIDI ASA-CF @Qidi X-Smart 3 0.8 nozzle.json" + }, { "name": "Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/Qidi ASA-Aero @Qidi Q1 Pro 0.4 nozzle.json" @@ -2708,6 +3888,30 @@ "name": "QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI PPS-CF @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "QIDI PPS-GF @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/QIDI PPS-GF @Qidi X-Plus 4 0.8 nozzle.json" + }, { "name": "QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle", "sub_path": "filament/QIDI Support For PAHT @Qidi X-Plus 4 0.4 nozzle.json" @@ -2756,6 +3960,30 @@ "name": "QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle", "sub_path": "filament/QIDI UltraPA-CF25 @Qidi X-Plus 4 0.8 nozzle.json" }, + { + "name": "QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi Q1 Pro 0.8 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi X-Plus 4 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle", + "sub_path": "filament/QIDI TPU-GF @Qidi X-Plus 4 0.8 nozzle.json" + }, { "name": "Qidi Generic PC @0.2 nozzle", "sub_path": "filament/Qidi Generic PC @0.2 nozzle.json" @@ -3792,6 +5020,22 @@ "name": "QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle", "sub_path": "filament/QIDI TPU-Aero @Qidi X-Plus 4 0.6 nozzle.json" }, + { + "name": "QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle", + "sub_path": "filament/QIDI PEBA 95A @Qidi Q1 Pro 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle", + "sub_path": "filament/QIDI PEBA 95A @Qidi Q1 Pro 0.6 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Plus 4 0.4 nozzle", + "sub_path": "filament/QIDI PEBA 95A @Qidi X-Plus 4 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Plus 4 0.6 nozzle", + "sub_path": "filament/QIDI PEBA 95A @Qidi X-Plus 4 0.6 nozzle.json" + }, { "name": "Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle", "sub_path": "filament/Qidi Generic TPU @Qidi Q1 Pro 0.4 nozzle.json" @@ -4536,6 +5780,22 @@ "name": "QIDI UltraPA-CF25 @Qidi X-Max 4 0.8 nozzle", "sub_path": "filament/X4/QIDI UltraPA-CF25 @Qidi X-Max 4 0.8 nozzle.json" }, + { + "name": "QIDI TPU-GF@X-Max 4-Series", + "sub_path": "filament/X4/QIDI TPU-GF @X-Max 4.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Max 4 0.4 nozzle", + "sub_path": "filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.4 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Max 4 0.6 nozzle", + "sub_path": "filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.6 nozzle.json" + }, + { + "name": "QIDI TPU-GF @Qidi X-Max 4 0.8 nozzle", + "sub_path": "filament/X4/QIDI TPU-GF @Qidi X-Max 4 0.8 nozzle.json" + }, { "name": "Generic PC@X-Max 4-Series", "sub_path": "filament/X4/Generic PC @X-Max 4.json" @@ -4568,6 +5828,18 @@ "name": "QIDI TPU-Aero @Qidi X-Max 4 0.6 nozzle", "sub_path": "filament/X4/QIDI TPU-Aero @Qidi X-Max 4 0.6 nozzle.json" }, + { + "name": "QIDI PEBA 95A@X-Max 4-Series", + "sub_path": "filament/X4/QIDI PEBA 95A @X-Max 4.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Max 4 0.4 nozzle", + "sub_path": "filament/X4/QIDI PEBA 95A @Qidi X-Max 4 0.4 nozzle.json" + }, + { + "name": "QIDI PEBA 95A @Qidi X-Max 4 0.6 nozzle", + "sub_path": "filament/X4/QIDI PEBA 95A @Qidi X-Max 4 0.6 nozzle.json" + }, { "name": "QIDI Support For PET/PA@X-Max 4-Series", "sub_path": "filament/X4/QIDI Support For PET-PA @X-Max 4.json" @@ -4747,6 +6019,22 @@ { "name": "QIDI PPS-GF @Qidi X-Max 4 0.8 nozzle", "sub_path": "filament/X4/QIDI PPS-GF @Qidi X-Max 4 0.8 nozzle.json" + }, + { + "name": "QIDI ASA-CF@X-Max 4-Series", + "sub_path": "filament/X4/QIDI ASA-CF @X-Max 4.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 4 0.4 nozzle", + "sub_path": "filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.4 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 4 0.6 nozzle", + "sub_path": "filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.6 nozzle.json" + }, + { + "name": "QIDI ASA-CF @Qidi X-Max 4 0.8 nozzle", + "sub_path": "filament/X4/QIDI ASA-CF @Qidi X-Max 4 0.8 nozzle.json" } ], "machine_list": [ @@ -4878,6 +6166,22 @@ "name": "Qidi Q2 0.8 nozzle", "sub_path": "machine/Qidi Q2 0.8 nozzle.json" }, + { + "name": "Qidi Q2C 0.4 nozzle", + "sub_path": "machine/Qidi Q2C 0.4 nozzle.json" + }, + { + "name": "Qidi Q2C 0.2 nozzle", + "sub_path": "machine/Qidi Q2C 0.2 nozzle.json" + }, + { + "name": "Qidi Q2C 0.6 nozzle", + "sub_path": "machine/Qidi Q2C 0.6 nozzle.json" + }, + { + "name": "Qidi Q2C 0.8 nozzle", + "sub_path": "machine/Qidi Q2C 0.8 nozzle.json" + }, { "name": "Qidi X-Max 4 0.4 nozzle", "sub_path": "machine/Qidi X-Max 4 0.4 nozzle.json" diff --git a/resources/profiles/Qidi/Qidi Q2C_cover.png b/resources/profiles/Qidi/Qidi Q2C_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..e2ce1c25840ac6d04c8dfc2703b05a328dc0ace9 GIT binary patch literal 35014 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 p= nozzle_temperature_range_high[next_extruder]}\nM104 S{nozzle_temperature_range_high[current_extruder]}\n{else}\nM104 S{nozzle_temperature_range_high[next_extruder]}\n{endif}\n; FLUSH_START\nM106 S25\nG1 E30 F300\n; FLUSH_END\n{if long_retractions_when_cut[previous_extruder]}\nG1 E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{endif}\n{if flush_length_1 > 1}\n; FLUSH_START\n{if flush_length_1 > 23.7}\nG1 E23.7 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{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}\nG1 E-[old_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 X92 F9000\nG1 E[old_retract_length_toolchange] F300\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\nG1 E-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 X85 F9000\nG1 E[new_retract_length_toolchange] F300\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\nG1 E-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 X92 F9000\nG1 E[new_retract_length_toolchange] F300\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\nG1 E-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\nM400\nM106 S255\nM104 S[new_filament_temp]\nINIT_SYNC_BUFFER_STATE\nBUFFER_MONITORING ENABLE=1\nG1 E10 F25 \nM109 S[new_filament_temp]\nG1 E-5 F1800\nCLEAR_OOZE\nTOOL_CHANGE_END\nG1 Y270 F8000\nM106 S0\nG1 E2 F1800\nENABLE_ALL_SENSOR\n", + "default_filament_profile": [ + "QIDI PLA Rapido @Qidi Q2C 0.4 nozzle" + ], + "enable_long_retraction_when_cut": "2", + "extruder_clearance_max_radius": "75", + "extruder_clearance_dist_to_rod": "47", + "extruder_clearance_height_to_rod": "47", + "extruder_clearance_height_to_lid": "152", + "is_support_3mf": "1", + "is_support_timelapse": "1", + "is_support_multi_box": "0", + "layer_change_gcode": "SET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", + "machine_end_gcode": "DISABLE_BOX_HEATER\nM140 S0\nBUFFER_MONITORING ENABLE=0\nDISABLE_ALL_SENSOR\nG1 E-3 F1800\nG0 Z{max_layer_z + 3} F600\nUNLOAD_FILAMENT T=[current_extruder]\nG0 Y270 F12000\nG0 X90 Y270 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}\nM104 S0", + "machine_load_filament_time": "35", + "machine_max_jerk_e": [ + "4" + ], + "machine_max_jerk_x": [ + "9" + ], + "machine_max_jerk_y": [ + "9" + ], + "machine_max_jerk_z": [ + "4" + ], + "machine_max_speed_z": [ + "20" + ], + "machine_pause_gcode": "PAUSE", + "machine_start_gcode": "INIT_MAPPING_VALUE\nPRINT_START BED=[bed_temperature_initial_layer_single] HOTEND=[nozzle_temperature_initial_layer] EXTRUDER=[initial_no_support_extruder]\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nM83\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nG4 P3000\nT[initial_tool]\nG1 X108.000 Y1 F30000\nG0 Z[initial_layer_print_height] F600\n;G1 E3 F1800\nG90\nM83\nG0 X128 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 X108.000 Y2.5 F30000\nG0 Z[initial_layer_print_height] F600\nM83\nG0 X128 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X133 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X138 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X143 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X148 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X153 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z-0.300\nG1 X4\nG1 Z1 F1200\nG90\nM400\nG1 Z1 F600", + "machine_unload_filament_time": "35", + "nozzle_diameter": [ + "0.4" + ], + "nozzle_volume": [ + "125" + ], + "printable_area": [ + "0x0", + "270x0", + "270x270", + "0x270" + ], + "printable_height": "256", + "retract_lift_below": [ + "259" + ], + "support_box_temp_control": "1", + "thumbnails_format": "PNG", + "thumbnail_size": [ + "150x150" + ] +} diff --git a/resources/profiles/Qidi/machine/Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..895fcdd93d --- /dev/null +++ b/resources/profiles/Qidi/machine/Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Qidi Q2C 0.6 nozzle", + "inherits": "Qidi Q2C 0.4 nozzle", + "from": "system", + "setting_id": "GM008", + "instantiation": "true", + "default_filament_profile": [ + "QIDI PLA Rapido" + ], + "default_print_profile": "0.30mm Standard @Q2C 0.6 nozzle", + "max_layer_height": [ + "0.42" + ], + "min_layer_height": [ + "0.12" + ], + "nozzle_diameter": [ + "0.6" + ], + "printer_model": "Qidi Q2C", + "printer_variant": "0.6", + "retraction_length": [ + "1.4" + ], + "retraction_minimum_travel": [ + "3" + ], + "support_box_temp_control": "1" +} \ No newline at end of file diff --git a/resources/profiles/Qidi/machine/Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/machine/Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..691dd168d5 --- /dev/null +++ b/resources/profiles/Qidi/machine/Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,30 @@ +{ + "type": "machine", + "name": "Qidi Q2C 0.8 nozzle", + "inherits": "Qidi Q2C 0.4 nozzle", + "from": "system", + "setting_id": "GM008", + "instantiation": "true", + "default_filament_profile": [ + "QIDI PLA Rapido" + ], + "default_print_profile": "0.40mm Standard @Q2C 0.8 nozzle", + "max_layer_height": [ + "0.56" + ], + "min_layer_height": [ + "0.16" + ], + "nozzle_diameter": [ + "0.8" + ], + "printer_model": "Qidi Q2C", + "printer_variant": "0.8", + "retract_length_toolchange": [ + "3" + ], + "retraction_length": [ + "3" + ], + "support_box_temp_control": "1" +} \ No newline at end of file diff --git a/resources/profiles/Qidi/machine/Qidi Q2C.json b/resources/profiles/Qidi/machine/Qidi Q2C.json new file mode 100644 index 0000000000..7da8da74bb --- /dev/null +++ b/resources/profiles/Qidi/machine/Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Qidi Q2C", + "model_id": "Qidi-Q2C", + "nozzle_diameter": "0.4;0.2;0.6;0.8", + "machine_tech": "FFF", + "family": "Qidi", + "bed_model": "qidi_q2c_buildplate_model.stl", + "bed_texture": "qidi_q2c_buildplate_texture.png", + "hotend_model": "X-Series_gen3_hotend.stl", + "default_materials": "QIDI PLA Rapido;QIDI ABS Rapido;QIDI PETG Tough;QIDI PLA Rapido Matte;QIDI ASA;QIDI PET-CF" +} \ No newline at end of file diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json index 920470ce75..7d185be631 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 3 0.4 nozzle.json @@ -44,7 +44,7 @@ "extruder_clearance_height_to_lid": "118", "single_extruder_multi_material": "1", "change_filament_gcode": "", - "machine_pause_gcode": "M0", + "machine_pause_gcode": "PAUSE", "default_filament_profile": [ "Qidi Generic PLA" ] diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json index 843adc0db7..d2f2f36daf 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json @@ -11,35 +11,37 @@ "default_print_profile": "0.20mm Standard @X-Max 4", "printer_settings_id": "Qidi", "bed_exclude_area": ["0x0, 16x0, 16x13, 0x13, 0x0, 0x0, 0x0, 0x0, 0x387, 53x387, 53x390, 0x390, 0x387, 0x387, 0x397, 0x390, 338x390, 338x384, 390x384, 390x390, 0x390"], - "change_filament_gcode": "G1 Z{max_layer_z + 3.0} F1200\nTOOL_CHANGE_START F=[current_extruder] T=[next_extruder]\nDISABLE_ALL_SENSOR\nM104 S{old_filament_temp - 10}\nM106 S255\n{if long_retractions_when_cut[previous_extruder]}\nG1 E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nG1 E-2 F{old_filament_e_feedrate}\n{endif}\nM400\nCUT_FILAMENT T=[current_extruder]\nMOVE_TO_TRASH\nM106 P2 S0\nUNLOAD_T[current_extruder]\nT[next_extruder]\nM106 S0\n{if nozzle_temperature_range_high[current_extruder] >= nozzle_temperature_range_high[next_extruder]}\nM104 S{nozzle_temperature_range_high[current_extruder]}\nM109.0 S{(nozzle_temperature_range_high[current_extruder])-25}\n{else}\nM104 S{nozzle_temperature_range_high[next_extruder]}\nM109.0 S{(nozzle_temperature_range_high[next_extruder])-25}\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nG1 E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{endif}\n{if flush_length_1 > 1}\n; FLUSH_START\nG1 Y403.5 F2000\nG1 E{flush_length_1} F{old_filament_e_feedrate *0.5}\n; FLUSH_END\n{endif}\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 E{flush_length_2} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 E{flush_length_3} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 E{flush_length_4} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\nM400\nM106 S180\nM104 S{new_filament_temp - 10}\nG1 E1 F10\nM109.1 S{new_filament_temp - 10}\nG1 E-4 F1000\nG4 P2000\nM204 S5000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F3000\nG1 X145 F2000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F8000\nG1 Y380\nG1 X116\nG4 P2000\nG1 Y403 F3000\nG1 X130\nG1 X100 F8000\nG1 Y380\nG1 X116\nG1 Y403 F3000\nG1 X130 F3000\nG1 X100 F8000\nG1 Y380\nM104 S[new_filament_temp]\nTOOL_CHANGE_END\nG1 E{new_retract_length_toolchange + 1} F{new_filament_e_feedrate}\nENABLE_ALL_SENSOR\n", + "change_filament_gcode": "G1 Z{max_layer_z + 3.0} F1200\nTOOL_CHANGE_START F=[current_extruder] T=[next_extruder]\nDISABLE_ALL_SENSOR\nM104 S{old_filament_temp - 10}\nM106 S255\n{if long_retractions_when_cut[previous_extruder]}\nG1 E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{else}\nG1 E-2 F{old_filament_e_feedrate}\n{endif}\nM400\nCUT_FILAMENT T=[current_extruder]\nMOVE_TO_TRASH\nM106 P2 S0\nUNLOAD_T[current_extruder]\nT[next_extruder]\nM106 S0\n{if nozzle_temperature_range_high[current_extruder] >= nozzle_temperature_range_high[next_extruder]}\nM104 S{nozzle_temperature_range_high[current_extruder]}\nM109.0 S{(nozzle_temperature_range_high[current_extruder])-25}\n{else}\nM104 S{nozzle_temperature_range_high[next_extruder]}\nM109.0 S{(nozzle_temperature_range_high[next_extruder])-25}\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nG1 E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{endif}\n{if flush_length_1 > 1}\n; FLUSH_START\nG1 Y403.5 F2000\nG1 E{flush_length_1} F{old_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\n{if flush_length_2 > 1}\n; FLUSH_START\nG1 E{flush_length_2} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\n{if flush_length_3 > 1}\n; FLUSH_START\nG1 E{flush_length_3} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\n{if flush_length_4 > 1}\n; FLUSH_START\nG1 E{flush_length_4} F{new_filament_e_feedrate * 0.5}\n; FLUSH_END\n{endif}\nM400\nM106 S180\nM104 S{new_filament_temp - 10}\nG1 E1 F10\nM109.1 S{new_filament_temp - 10}\nG1 E-4 F1000\nG4 P2000\nM204 S5000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F3000\nG1 X145 F2000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F8000\nG1 Y380\nG1 X116\nG4 P2000\nG1 Y403 F3000\nG1 X130\nG1 X100 F8000\nG1 Y380\nG1 X116\nG1 Y403 F3000\nG1 X130 F3000\nG1 X100 F8000\nG1 Y380\nM104 S[new_filament_temp]\nTOOL_CHANGE_END\nG1 E{new_retract_length_toolchange + 1} F{new_filament_e_feedrate}\nENABLE_ALL_SENSOR\n", "default_filament_profile": ["QIDI PLA Rapido @Qidi X-Max 4 0.4 nozzle"], "enable_long_retraction_when_cut": "2", - "extruder_clearance_height_to_lid": "120", - "extruder_clearance_height_to_rod": "40", - "extruder_clearance_max_radius": "70", + "extruder_clearance_max_radius": "80", + "extruder_clearance_dist_to_rod": "45", + "extruder_clearance_height_to_rod": "45", + "extruder_clearance_height_to_lid": "168", + "is_support_air_condition" : "1", "is_support_3mf" : "1", + "is_support_mqtt" : "1", "is_support_timelapse": "1", "is_support_multi_box": "1", - "layer_change_gcode": "{if timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nG1 Y380 F20000\nG1 X128 F20000\n{if layer_z <=25}\nG1 Z25\n{endif}\nG1 Y403 F2000\nG92 E0\nM400\nTIMELAPSE_TAKE_FRAME\nG1 E[retraction_length] F300\nG1 X180 F8000\nG1 Y380 F8000\n{if layer_z <=25}\nG1 Z[layer_z]\n{endif}\n{elsif timelapse_type == 0} ; timelapse without wipe tower\nTIMELAPSE_TAKE_FRAME\n{endif}\nG92 E0\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", + "layer_change_gcode": "{if timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nMOVE_TO_TRASH\n{if layer_z <=25}\nG1 Z25\n{endif}\nG92 E0\nM400\nTIMELAPSE_TAKE_FRAME\nG1 E[retraction_length] F300\nG1 X180 F8000\nG1 Y380\n{if layer_z <=25}\nG1 Z[layer_z]\n{endif}\n{elsif timelapse_type == 0} ; timelapse without wipe tower\nTIMELAPSE_TAKE_FRAME\n{endif}\nG92 E0\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", "machine_end_gcode": "DISABLE_BOX_HEATER\nM141 S0\nM140 S0\nDISABLE_ALL_SENSOR\nG1 E-3 F1800\nG0 Z{max_layer_z + 3} F600\nUNLOAD_FILAMENT T=[current_extruder]\nG0 Y380 F12000\nG0 X128 Y380 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}\nM104 S0\nPRINT_END", "machine_max_jerk_e": ["4"], "machine_max_jerk_x": ["9"], "machine_max_jerk_y": ["9"], "machine_max_jerk_z": ["4"], "machine_max_speed_z": ["20"], - "machine_pause_gcode": "M0", + "machine_pause_gcode": "PAUSE", "machine_max_acceleration_x": ["30000"], "machine_max_acceleration_y": ["30000"], "machine_max_speed_x": ["800"], "machine_max_speed_y": ["800"], - "machine_start_gcode": ";===== PRINT_PHASE_INIT =====\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y383\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nG1 Y0 F15000\nG1 X15 F15000\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 X15 F3000\nG1 E-4 F1800\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X380 Y5 F20000\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG0 X200 Y1 F20000\nG0 Z10 F480\nG4 P3000\nprobe samples=1\nG91\nG0 Z5 F480\nG90\nG1 X173 Y1 F20000\nG91\nG0 Z{initial_layer_print_height-5} F480\nG90\nG0 X193 E8 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X198 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X203 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X208 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X213 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X218 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z{-initial_layer_print_height-0.1}\nG1 X4\nG1 Z1 F480\nG90\nG1 X173 Y2.5 F20000\nG91\nG1 Z-0.7 F480\nG90\nG0 X193 E10 F{outer_wall_volumetric_speed/(24/20) * 60}\nG0 X198 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X203 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X208 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG0 X213 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5) * 60}\nG0 X218 E.3742 F{outer_wall_volumetric_speed/(0.3*0.5)/4 * 60}\nG91\nG1 X1 Z{-initial_layer_print_height-0.1}\nG1 X4\nG1 Z1 F480\nG90\n", + "machine_start_gcode": ";===== PRINT_PHASE_INIT =====\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 X195 Y195\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1500\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1500\nG4 P400\nG1 Y0 F15000\nG1 X15\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 E-4 F1800\nG1 X15 F3000\n\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1200\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1200\nG4 P2000\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X380 Y5 F20000\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\n; LAYER_HEIGHT: 0.2\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG0 X195 Y1 F20000\nG0 Z10 F480\nSET_KINEMATIC_POSITION Z={10 - ((nozzle_temperature_initial_layer[initial_tool] - 130) / 14 - 5.0) / 100}\nG4 P3000\nprobe samples=1\nG91\nG0 Z0.6 F480\nG90\nG1 X175 Y1 F20000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 X215 E20 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 Z1 F480", "nozzle_diameter": ["0.4"], "nozzle_volume": ["150"], "printable_area": ["0x0","390x0","390x390","0x390"], "printable_height": "340", "retract_lift_below": ["339"], "support_box_temp_control": "1", - "thumbnail_size": ["50x50"], - "fan_direction": "left", - "printer_agent": "qidi" + "thumbnail_size": ["150x150"], + "fan_direction": "left" } diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json index 39889fc610..cc97206fdd 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 3 0.4 nozzle.json @@ -40,7 +40,7 @@ ], "single_extruder_multi_material": "1", "change_filament_gcode": "", - "machine_pause_gcode": "M0", + "machine_pause_gcode": "PAUSE", "default_filament_profile": [ "Qidi Generic PLA" ] diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json index 82d93280b1..612da56b58 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.4 nozzle.json @@ -61,7 +61,8 @@ ], "single_extruder_multi_material": "1", "change_filament_gcode": "{if max_layer_z < 12}\nG1 Z15 F1200\n{else}\nG1 Z{max_layer_z + 3.0} F1200\n{endif}\nTOOL_CHANGE_START F=[current_extruder] T=[next_extruder]\nDISABLE_ALL_SENSOR\n{if long_retractions_when_cut[previous_extruder]}\nMOVE_TO_TRASH\nG1 E-{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\nM400\n{else}\nG1 E-5 F{old_filament_e_feedrate}\n{endif}\nCUT_FILAMENT T=[current_extruder]\nMOVE_TO_TRASH\nM400\n{if nozzle_temperature_range_high[current_extruder] >= nozzle_temperature_range_high[next_extruder]}\nM104 S{nozzle_temperature_range_high[current_extruder]}\n{else}\nM104 S{nozzle_temperature_range_high[next_extruder]}\n{endif}\nM106 S0\nM106 P2 S0\nUNLOAD_T[current_extruder]\nG92 E0\nM83\nG1 E2 F50\nT[next_extruder]\n{if nozzle_temperature_range_high[current_extruder] >= nozzle_temperature_range_high[next_extruder]}\nSET_HEATER_TEMPERATURE HEATER=extruder TARGET={nozzle_temperature_range_high[current_extruder]} WAIT=1\n{else}\nSET_HEATER_TEMPERATURE HEATER=extruder TARGET={nozzle_temperature_range_high[next_extruder]} WAIT=1\n{endif}\n{if long_retractions_when_cut[previous_extruder]}\nG1 E{retraction_distances_when_cut[previous_extruder]} F{old_filament_e_feedrate}\n{endif}\nM400\nM106 S60\n; FLUSH_START\nG1 E1 F50\nG1 E{65.5 * 0.58} F{old_filament_e_feedrate}\nG1 E{65.5 * 0.02} F50\nG1 E{65.5 * 0.18} F{old_filament_e_feedrate}\nG1 E{65.5 * 0.02} F50\nG1 E{65.5 * 0.18} F{old_filament_e_feedrate}\nG1 E{65.5 * 0.02} F50\nG1 E-[old_retract_length_toolchange] F1800\n; FLUSH_END\n{if flush_length_1 > 1}\nM400\nM106 S255\nG91\nG1 X-5 F60\nG1 X5 F60\nG90\nCLEAR_FLUSH\nM400\nM106 S60\n; FLUSH_START\nG1 E[old_retract_length_toolchange] F300\nG1 E{flush_length_1 * 0.58} F{new_filament_e_feedrate}\nG1 E{flush_length_1 * 0.02} F50\nG1 E{flush_length_1 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_1 * 0.02} F50\nG1 E{flush_length_1 * 0.18} F{new_filament_e_feedrate}\nG1 E{flush_length_1 * 0.02} F50\nG1 E-[old_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_2 > 1}\nM400\nM106 S255\nG91\nG1 X-5 F60\nG1 X5 F60\nG90\nCLEAR_FLUSH\nM400\nM106 S60\n; FLUSH_START\nG1 E[old_retract_length_toolchange] F300\nG1 E{flush_length_2 * 0.58} 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-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_3 > 1}\nM400\nM106 S255\nG91\nG1 X-5 F60\nG1 X5 F60\nG90\nCLEAR_FLUSH\nM400\nM106 S60\n; FLUSH_START\nG1 E[new_retract_length_toolchange] F300\nG1 E{flush_length_3 * 0.58} 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-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\n{if flush_length_4 > 1}\nM400\nM106 S255\nG91\nG1 X-5 F60\nG1 X5 F60\nG90\nCLEAR_FLUSH\nM400\nM106 S60\n; FLUSH_START\nG1 E[new_retract_length_toolchange] F300\nG1 E{flush_length_4 * 0.58} 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-[new_retract_length_toolchange] F1800\n; FLUSH_END\n{endif}\nM104 S[new_filament_temp]\nM400\nM106 S255\nG91\nG1 X-5 F60\nG1 X5 F60\nG90\nM109 S[new_filament_temp]\nG92 E0\nM400\nCLEAR_FLUSH\nCLEAR_OOZE\nM400\nM106 S0\nTOOL_CHANGE_END\nG1 Y305 F9000\nENABLE_ALL_SENSOR", - "machine_pause_gcode": "M0", + "is_support_multi_box": "0", + "machine_pause_gcode": "PAUSE", "thumbnails": [ "272x272", "96x96" diff --git a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json index fee84c98d2..fcb6bef325 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Plus 4 0.6 nozzle.json @@ -25,6 +25,5 @@ ], "retraction_minimum_travel": [ "3" - ], - "printer_agent": "qidi" + ] } \ No newline at end of file diff --git a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json index 99f3f41bc2..fed505510a 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Smart 3 0.4 nozzle.json @@ -46,7 +46,7 @@ ], "single_extruder_multi_material": "1", "change_filament_gcode": "", - "machine_pause_gcode": "M0", + "machine_pause_gcode": "PAUSE", "default_filament_profile": [ "Qidi Generic PLA" ] diff --git a/resources/profiles/Qidi/machine/fdm_machine_common.json b/resources/profiles/Qidi/machine/fdm_machine_common.json index f2916ef38a..9125283357 100644 --- a/resources/profiles/Qidi/machine/fdm_machine_common.json +++ b/resources/profiles/Qidi/machine/fdm_machine_common.json @@ -110,6 +110,7 @@ "wipe": [ "1" ], + "wipe_distance":["2"], "z_hop_types": [ "Auto Lift" ], diff --git a/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json b/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json index b6ea18c542..bb8f41aad0 100644 --- a/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json +++ b/resources/profiles/Qidi/machine/fdm_qidi_x3_common.json @@ -9,6 +9,19 @@ "change_filament_gcode": "", "machine_pause_gcode": "M0", "support_chamber_temp_control": "1", + "filament_tower_interface_pre_extrusion_dist": ["10"], + "filament_tower_interface_pre_extrusion_length": ["0"], + "filament_tower_ironing_area": ["4"], + "filament_tower_interface_purge_volume": ["20"], + "filament_tower_interface_print_temp": ["-1"], + "filament_dev_ams_drying_ams_limitations": ["1"], + "filament_dev_ams_drying_temperature": ["40.0","40.0","40.0","40.0"], + "filament_dev_ams_drying_time": ["8.0","8.0","8.0","8.0"], + "filament_dev_drying_softening_temperature": ["40.0"], + "filament_dev_ams_drying_heat_distortion_temperature": ["45.0"], + "filament_dev_drying_cooling_temperature": ["35.0"], + "filament_dev_chamber_drying_bed_temperature": ["90.0"], + "filament_dev_chamber_drying_time": ["12.0"], "retraction_length": [ "1" ], diff --git a/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json new file mode 100644 index 0000000000..41706b0975 --- /dev/null +++ b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.06mm Standard @Qidi Q2C 0.2 nozzle", + "inherits": "fdm_process_QIDI_0.06_nozzle_0.2", + "from": "system", + "setting_id": "GP024", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json new file mode 100644 index 0000000000..dc4924ee41 --- /dev/null +++ b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.08mm Standard @Qidi Q2C 0.2 nozzle", + "inherits": "fdm_process_QIDI_0.08_nozzle_0.2", + "from": "system", + "setting_id": "GP025", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json new file mode 100644 index 0000000000..378dad8510 --- /dev/null +++ b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.10mm Standard @Qidi Q2C 0.2 nozzle", + "inherits": "fdm_process_QIDI_0.10_nozzle_0.2", + "from": "system", + "setting_id": "GP007", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json new file mode 100644 index 0000000000..ef93a94e14 --- /dev/null +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.12mm Fine @Qidi Q2C", + "inherits": "0.12mm Fine @Qidi X3", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json new file mode 100644 index 0000000000..99d13a5d62 --- /dev/null +++ b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.12mm Standard @Qidi Q2C 0.2 nozzle", + "inherits": "fdm_process_QIDI_0.12_nozzle_0.2", + "from": "system", + "setting_id": "GP026", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json new file mode 100644 index 0000000000..1c1a62120b --- /dev/null +++ b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.14mm Standard @Qidi Q2C 0.2 nozzle", + "inherits": "fdm_process_QIDI_0.14_nozzle_0.2", + "from": "system", + "setting_id": "GP027", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.2 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json new file mode 100644 index 0000000000..04c66770c6 --- /dev/null +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.16mm Optimal @Qidi Q2C", + "inherits": "0.16mm Optimal @Qidi X3", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..e86bf6dba0 --- /dev/null +++ b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.18mm Standard @Qidi Q2C 0.6 nozzle", + "inherits": "fdm_process_QIDI_0.18_nozzle_0.6", + "from": "system", + "setting_id": "GP028", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json new file mode 100644 index 0000000000..02678202ff --- /dev/null +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.20mm Standard @Qidi Q2C", + "inherits": "0.20mm Standard @Qidi X3", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json new file mode 100644 index 0000000000..8d905be4a9 --- /dev/null +++ b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.24mm Draft @Qidi Q2C", + "inherits": "0.24mm Draft @Qidi X3", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..068e7897e9 --- /dev/null +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.24mm Standard @Qidi Q2C 0.6 nozzle", + "inherits": "fdm_process_QIDI_0.24_nozzle_0.6", + "from": "system", + "setting_id": "GP029", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..9f71a3d522 --- /dev/null +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.24mm Standard @Qidi Q2C 0.8 nozzle", + "inherits": "fdm_process_QIDI_0.24_nozzle_0.8", + "from": "system", + "setting_id": "GP032", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json new file mode 100644 index 0000000000..7650e7eb8f --- /dev/null +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json @@ -0,0 +1,86 @@ +{ + "type": "process", + "name": "0.25mm Draft @Qidi Q2C", + "inherits": "fdm_process_qidi_x3_common", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "adaptive_layer_height": "1", + "enable_arc_fitting": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.25", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.25", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "inner_wall_line_width": "0.45", + "wall_loops": "2", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0.42", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.25", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "3", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_threshold_angle": "35", + "support_object_xy_distance": "50%", + "tree_support_branch_angle": "40", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonic", + "top_surface_line_width": "0.45", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json new file mode 100644 index 0000000000..97c3abb3d6 --- /dev/null +++ b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.28mm Extra Draft @Qidi Q2C", + "inherits": "0.28mm Extra Draft @Qidi X3", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json new file mode 100644 index 0000000000..7fbf18cfd4 --- /dev/null +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json @@ -0,0 +1,86 @@ +{ + "type": "process", + "name": "0.30mm Extra Draft @Qidi Q2C", + "inherits": "fdm_process_qidi_x3_common", + "from": "system", + "setting_id": "GP004", + "instantiation": "true", + "adaptive_layer_height": "1", + "enable_arc_fitting": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.3", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "3", + "bottom_shell_thickness": "0", + "bridge_flow": "1", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.42", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "crosshatch", + "initial_layer_line_width": "0.5", + "initial_layer_print_height": "0.3", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "15%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_type": "no ironing", + "reduce_infill_retraction": "1", + "filename_format": "{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode", + "detect_overhang_wall": "1", + "inner_wall_line_width": "0.45", + "wall_loops": "2", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "2", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.3", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "3", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.5", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2.5", + "support_threshold_angle": "40", + "support_object_xy_distance": "50%", + "tree_support_branch_angle": "40", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonic", + "top_surface_line_width": "0.45", + "top_shell_layers": "4", + "top_shell_thickness": "0.8", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Qidi Q2C 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..f9e444b169 --- /dev/null +++ b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.30mm Standard @Qidi Q2C 0.6 nozzle", + "inherits": "fdm_process_QIDI_0.30_nozzle_0.6", + "from": "system", + "setting_id": "GP010", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..c70c02bf9d --- /dev/null +++ b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.32mm Standard @Qidi Q2C 0.8 nozzle", + "inherits": "fdm_process_QIDI_0.32_nozzle_0.8", + "from": "system", + "setting_id": "GP033", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..729e005e7d --- /dev/null +++ b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.36mm Standard @Qidi Q2C 0.6 nozzle", + "inherits": "fdm_process_QIDI_0.36_nozzle_0.6", + "from": "system", + "setting_id": "GP030", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..f416bcda98 --- /dev/null +++ b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.40mm Standard @Qidi Q2C 0.8 nozzle", + "inherits": "fdm_process_QIDI_0.40_nozzle_0.8", + "from": "system", + "setting_id": "GP009", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json new file mode 100644 index 0000000000..69f14e90bd --- /dev/null +++ b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.42mm Standard @Qidi Q2C 0.6 nozzle", + "inherits": "fdm_process_QIDI_0.42_nozzle_0.6", + "from": "system", + "setting_id": "GP031", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.6 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..73ee492d6c --- /dev/null +++ b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.48mm Standard @Qidi Q2C 0.8 nozzle", + "inherits": "fdm_process_QIDI_0.48_nozzle_0.8", + "from": "system", + "setting_id": "GP034", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json new file mode 100644 index 0000000000..6506b8b33c --- /dev/null +++ b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json @@ -0,0 +1,12 @@ +{ + "type": "process", + "name": "0.56mm Standard @Qidi Q2C 0.8 nozzle", + "inherits": "fdm_process_QIDI_0.56_nozzle_0.8", + "from": "system", + "setting_id": "GP035", + "instantiation": "true", + "enable_arc_fitting": "1", + "compatible_printers": [ + "Qidi Q2C 0.8 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Qidi/process/fdm_process_common.json b/resources/profiles/Qidi/process/fdm_process_common.json index 5752706dbe..0b06b7e19e 100644 --- a/resources/profiles/Qidi/process/fdm_process_common.json +++ b/resources/profiles/Qidi/process/fdm_process_common.json @@ -13,6 +13,19 @@ "default_acceleration": "10000", "bridge_no_support": "0", "elefant_foot_compensation": "0.1", + "bottom_surface_density": "100", + "enable_support_ironing":"0", + "support_ironing_pattern":"zig-zag", + "support_ironing_speed":"30", + "support_ironing_flow":"10%", + "support_ironing_spacing":"0.15", + "support_ironing_inset":"0.0", + "support_ironing_direction":"0", + "sparse_infill_lattice_angle_1": "-45", + "sparse_infill_lattice_angle_2": "45", + "top_surface_density": "100", + "travel_short_distance_acceleration": ["250"], + "enable_tower_interface_features":"0", "outer_wall_line_width": "0.42", "outer_wall_speed": "120", "line_width": "0.45", diff --git a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json index 1224bcbc5a..ee5a08a851 100644 --- a/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json +++ b/resources/profiles/Qidi/process/fdm_process_qidi_x3_common.json @@ -14,6 +14,19 @@ "bridge_speed": "50", "brim_width": "5", "brim_object_gap": "0.1", + "bottom_surface_density": "100", + "enable_support_ironing":"0", + "support_ironing_pattern":"zig-zag", + "support_ironing_speed":"30", + "support_ironing_flow":"10%", + "support_ironing_spacing":"0.15", + "support_ironing_inset":"0.0", + "support_ironing_direction":"0", + "sparse_infill_lattice_angle_1": "-45", + "sparse_infill_lattice_angle_2": "45", + "top_surface_density": "100", + "travel_short_distance_acceleration": ["250"], + "enable_tower_interface_features":"0", "compatible_printers": [], "compatible_printers_condition": "", "print_sequence": "by layer", diff --git a/resources/profiles/Qidi/qidi_q2c_buildplate_model.stl b/resources/profiles/Qidi/qidi_q2c_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..ca300b0cece2eb0c5a30866aa90e32008bd62987 GIT binary patch literal 20284 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 QCmJmFU@RhFv)x(!55!EEI{*Lx literal 0 HcmV?d00001 diff --git a/resources/profiles/Qidi/qidi_q2c_buildplate_texture.png b/resources/profiles/Qidi/qidi_q2c_buildplate_texture.png new file mode 100644 index 0000000000000000000000000000000000000000..7778895c9cbf3a2cd313d2cc341413e3375d2e9b GIT binary patch literal 8767 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 LdzNh2_0!(~(v=0q literal 0 HcmV?d00001 From 8c895a4b7fcf25d15c468681499da4476f6d9e4f Mon Sep 17 00:00:00 2001 From: HYzd766 <1550039450@qq.com> Date: Thu, 5 Mar 2026 14:06:22 +0800 Subject: [PATCH 02/24] Update Qidi X-Max 4 0.4 nozzle.json --- resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json index d2f2f36daf..75fe5d15d4 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json @@ -24,7 +24,7 @@ "is_support_timelapse": "1", "is_support_multi_box": "1", "layer_change_gcode": "{if timelapse_type == 1} ; timelapse with wipe tower\nG92 E0\nG1 E-[retraction_length] F1800\nG2 Z{layer_z + 0.4} I0.86 J0.86 P1 F20000 ; spiral lift a little\nMOVE_TO_TRASH\n{if layer_z <=25}\nG1 Z25\n{endif}\nG92 E0\nM400\nTIMELAPSE_TAKE_FRAME\nG1 E[retraction_length] F300\nG1 X180 F8000\nG1 Y380\n{if layer_z <=25}\nG1 Z[layer_z]\n{endif}\n{elsif timelapse_type == 0} ; timelapse without wipe tower\nTIMELAPSE_TAKE_FRAME\n{endif}\nG92 E0\nSET_PRINT_STATS_INFO CURRENT_LAYER={layer_num + 1}", - "machine_end_gcode": "DISABLE_BOX_HEATER\nM141 S0\nM140 S0\nDISABLE_ALL_SENSOR\nG1 E-3 F1800\nG0 Z{max_layer_z + 3} F600\nUNLOAD_FILAMENT T=[current_extruder]\nG0 Y380 F12000\nG0 X128 Y380 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}\nM104 S0\nPRINT_END", + "machine_end_gcode": "SET_PRINT_MAIN_STATUS MAIN_STATUS=print_end\nDISABLE_BOX_HEATER\nM141 S0\nM140 S0\nDISABLE_ALL_SENSOR\nG1 E-3 F1800\nG0 Z{max_layer_z + 3} F600\nUNLOAD_FILAMENT T=[current_extruder]\nG0 Y380 F12000\nG0 X128 Y380 F12000\n{if max_layer_z < max_print_height / 2}G1 Z{max_print_height / 2 + 10} F600{else}G1 Z{min(max_print_height, max_layer_z + 3)}{endif}\nM104 S0\nPRINT_END", "machine_max_jerk_e": ["4"], "machine_max_jerk_x": ["9"], "machine_max_jerk_y": ["9"], @@ -35,7 +35,7 @@ "machine_max_acceleration_y": ["30000"], "machine_max_speed_x": ["800"], "machine_max_speed_y": ["800"], - "machine_start_gcode": ";===== PRINT_PHASE_INIT =====\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 X195 Y195\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1500\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1500\nG4 P400\nG1 Y0 F15000\nG1 X15\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 E-4 F1800\nG1 X15 F3000\n\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1200\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1200\nG4 P2000\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X380 Y5 F20000\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\n; LAYER_HEIGHT: 0.2\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG0 X195 Y1 F20000\nG0 Z10 F480\nSET_KINEMATIC_POSITION Z={10 - ((nozzle_temperature_initial_layer[initial_tool] - 130) / 14 - 5.0) / 100}\nG4 P3000\nprobe samples=1\nG91\nG0 Z0.6 F480\nG90\nG1 X175 Y1 F20000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 X215 E20 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 Z1 F480", + "machine_start_gcode": ";===== PRINT_PHASE_INIT =====\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 X195 Y195\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1500\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1500\nG4 P400\nG1 Y0 F15000\nG1 X15\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 E-4 F1800\nG1 X15 F3000\n\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1200\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1200\nG4 P2000\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X380 Y5 F20000\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\n; LAYER_HEIGHT: 0.2\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG0 X195 Y1 F20000\nG0 Z10 F480\nSET_KINEMATIC_POSITION Z={10 - ((nozzle_temperature_initial_layer[initial_tool] - 130) / 14 - 5.0) / 100}\nG4 P3000\nprobe samples=1\nG91\nG0 Z0.6 F480\nG90\nG1 X175 Y1 F20000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 X215 E20 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 Z1 F480\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing", "nozzle_diameter": ["0.4"], "nozzle_volume": ["150"], "printable_area": ["0x0","390x0","390x390","0x390"], From ccea80482e188fba09254138db13fcb4ff7cac1e Mon Sep 17 00:00:00 2001 From: yw4z Date: Sat, 7 Mar 2026 04:32:05 +0300 Subject: [PATCH 03/24] Update Plater.cpp --- src/slic3r/GUI/Plater.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 40b6fd9be6..d69d6ee1ca 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2106,14 +2106,10 @@ Sidebar::Sidebar(Plater *parent) bSizer39->AddSpacer(FromDIP(SidebarProps::TitlebarMargin())); // add filament content - // ORCA use a height with user preference - int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - p->filament_area_height = std::ceil(filament_count_user * 0.5) * (30 + SidebarProps::ElementSpacing()) - SidebarProps::ElementSpacing(); - p->m_panel_filament_content = new wxScrolledWindow( p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); p->m_panel_filament_content->SetScrollbars(0, 100, 1, 2); p->m_panel_filament_content->SetScrollRate(0, 5); - p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(p->filament_area_height)}); // ORCA + //p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(p->filament_area_height)}); // ORCA p->m_panel_filament_content->SetBackgroundColour(wxColour(255, 255, 255)); //wxBoxSizer* bSizer_filament_content; @@ -2130,6 +2126,11 @@ Sidebar::Sidebar(Plater *parent) /* first filament item */ init_filament_combo(&p->combos_filament[0], 0); + // ORCA use a height with user preference + int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); + p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + SidebarProps::ElementSpacing()) - SidebarProps::ElementSpacing(); + p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(p->filament_area_height)}); // ORCA + //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); wxSizer *sizer_filaments2 = new wxBoxSizer(wxVERTICAL); sizer_filaments2->Add(p->sizer_filaments, 0, wxEXPAND, 0); From 6d0d787467be19ce59ca59aecfbae89d8a768d87 Mon Sep 17 00:00:00 2001 From: yw4z Date: Sat, 7 Mar 2026 19:30:16 +0300 Subject: [PATCH 04/24] Update Plater.cpp --- src/slic3r/GUI/Plater.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index d69d6ee1ca..8e0290b16c 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2128,8 +2128,8 @@ Sidebar::Sidebar(Plater *parent) // ORCA use a height with user preference int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + SidebarProps::ElementSpacing()) - SidebarProps::ElementSpacing(); - p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(p->filament_area_height)}); // ORCA + p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + FromDIP(SidebarProps::ElementSpacing())) - FromDIP(SidebarProps::ElementSpacing()); + p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); // ORCA //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); wxSizer *sizer_filaments2 = new wxBoxSizer(wxVERTICAL); @@ -3525,7 +3525,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) for (auto& c : p->combos_filament) c->update(); // Expand filament list - p->m_panel_filament_content->SetMaxSize({-1, FromDIP(p->filament_area_height)}); // ORCA + p->m_panel_filament_content->SetMaxSize({-1, p->filament_area_height}); // ORCA auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) min_size.y = p->m_panel_filament_content->GetMaxHeight(); From d129c1d9cbd4ab06475bf5054e1ef8468db0932a Mon Sep 17 00:00:00 2001 From: yw4z Date: Sat, 7 Mar 2026 19:40:39 +0300 Subject: [PATCH 05/24] Update Plater.cpp --- src/slic3r/GUI/Plater.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 8e0290b16c..fe124fa726 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2128,7 +2128,7 @@ Sidebar::Sidebar(Plater *parent) // ORCA use a height with user preference int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + FromDIP(SidebarProps::ElementSpacing())) - FromDIP(SidebarProps::ElementSpacing()); + p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + FromDIP(4)); p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); // ORCA //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); From e6f90b1c7a2267de291a2221db4b455d0ad700f3 Mon Sep 17 00:00:00 2001 From: yw4z Date: Sun, 8 Mar 2026 02:20:31 +0300 Subject: [PATCH 06/24] update --- src/slic3r/GUI/Plater.cpp | 21 +++++++++++++++------ src/slic3r/GUI/Plater.hpp | 1 + 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index fe124fa726..2c5a363a25 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2109,7 +2109,7 @@ Sidebar::Sidebar(Plater *parent) p->m_panel_filament_content = new wxScrolledWindow( p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); p->m_panel_filament_content->SetScrollbars(0, 100, 1, 2); p->m_panel_filament_content->SetScrollRate(0, 5); - //p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(p->filament_area_height)}); // ORCA + //p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); // ORCA p->m_panel_filament_content->SetBackgroundColour(wxColour(255, 255, 255)); //wxBoxSizer* bSizer_filament_content; @@ -2126,10 +2126,7 @@ Sidebar::Sidebar(Plater *parent) /* first filament item */ init_filament_combo(&p->combos_filament[0], 0); - // ORCA use a height with user preference - int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - p->filament_area_height = std::ceil(filament_count_user * 0.5) * (p->combos_filament[0]->GetSize().GetHeight() + FromDIP(4)); - p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); // ORCA + update_filaments_area_height(); // ORCA //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); wxSizer *sizer_filaments2 = new wxBoxSizer(wxVERTICAL); @@ -2777,6 +2774,16 @@ void Sidebar::change_top_border_for_mode_sizer(bool increase_border) #endif } +// ORCA use a height with user preference +void Sidebar::update_filaments_area_height() +{ + int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); + // Height and Border is static in here because GetSize() from item / sizer not returning of correct values while using wxEXPAND with 1(vertical) orientation + // FromDIP(2) + FromDIP(2) not equal to FromDIP(4) on 125% 175% scaling. this fixes scaling related issues + p->filament_area_height = std::ceil(filament_count_user * 0.5) * (FromDIP(30) + FromDIP(2) + FromDIP(2)); + p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); +} + void Sidebar::msw_rescale() { SetMinSize(wxSize(42 * wxGetApp().em_unit(), -1)); @@ -2824,6 +2831,8 @@ void Sidebar::msw_rescale() p->m_flushing_volume_btn->Rescale(); set_flushing_volume_warning(is_flush_config_modified()); // ORCA reapply appearance + update_filaments_area_height(); + //BBS p->left_extruder->Rescale(); p->right_extruder->Rescale(); @@ -3525,7 +3534,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) for (auto& c : p->combos_filament) c->update(); // Expand filament list - p->m_panel_filament_content->SetMaxSize({-1, p->filament_area_height}); // ORCA + update_filaments_area_height(); // ORCA auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) min_size.y = p->m_panel_filament_content->GetMaxHeight(); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 89b9f560c4..3708e52b42 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -172,6 +172,7 @@ public: void set_bed_type_accord_combox(BedType bed_type); bool reset_bed_type_combox_choices(bool is_sidebar_init = false); void change_top_border_for_mode_sizer(bool increase_border); + void update_filaments_area_height(); void msw_rescale(); void sys_color_changed(); void search(); From da3c4b50c9c1a41202bca2b225c2b925b6e76644 Mon Sep 17 00:00:00 2001 From: Alexandre Folle de Menezes Date: Sun, 8 Mar 2026 12:37:28 -0300 Subject: [PATCH 07/24] Fix plurals on some GUI strings --- localization/i18n/OrcaSlicer.pot | 14 +++++------ localization/i18n/ca/OrcaSlicer_ca.po | 20 ++++++++++------ localization/i18n/cs/OrcaSlicer_cs.po | 20 ++++++++++------ localization/i18n/de/OrcaSlicer_de.po | 20 ++++++++++------ localization/i18n/en/OrcaSlicer_en.po | 22 ++++++++--------- localization/i18n/es/OrcaSlicer_es.po | 17 ++++++++------ localization/i18n/fr/OrcaSlicer_fr.po | 20 ++++++++++------ localization/i18n/hu/OrcaSlicer_hu.po | 20 ++++++++++------ localization/i18n/it/OrcaSlicer_it.po | 18 ++++++++------ localization/i18n/ja/OrcaSlicer_ja.po | 20 ++++++++++------ localization/i18n/ko/OrcaSlicer_ko.po | 20 ++++++++++------ localization/i18n/lt/OrcaSlicer_lt.po | 20 ++++++++++------ localization/i18n/nl/OrcaSlicer_nl.po | 20 ++++++++++------ localization/i18n/pl/OrcaSlicer_pl.po | 20 ++++++++++------ localization/i18n/pt_BR/OrcaSlicer_pt_BR.po | 26 ++++++++++----------- localization/i18n/ru/OrcaSlicer_ru.po | 20 ++++++++++------ localization/i18n/sv/OrcaSlicer_sv.po | 20 ++++++++++------ localization/i18n/tr/OrcaSlicer_tr.po | 20 ++++++++++------ localization/i18n/uk/OrcaSlicer_uk.po | 20 ++++++++++------ localization/i18n/vi/OrcaSlicer_vi.po | 20 ++++++++++------ localization/i18n/zh_CN/OrcaSlicer_zh_CN.po | 20 ++++++++++------ localization/i18n/zh_TW/OrcaSlicer_zh_TW.po | 20 ++++++++++------ src/libslic3r/PrintConfig.cpp | 14 +++++------ src/slic3r/GUI/MainFrame.cpp | 2 +- src/slic3r/GUI/PrintOptionsDialog.cpp | 2 +- src/slic3r/GUI/UnsavedChangesDialog.cpp | 4 ++-- 26 files changed, 284 insertions(+), 175 deletions(-) diff --git a/localization/i18n/OrcaSlicer.pot b/localization/i18n/OrcaSlicer.pot index 0157871acd..7982f62348 100644 --- a/localization/i18n/OrcaSlicer.pot +++ b/localization/i18n/OrcaSlicer.pot @@ -13698,7 +13698,7 @@ msgstr "" msgid "Topmost surface" msgstr "" -msgid "All solid layer" +msgid "All solid layers" msgstr "" msgid "Ironing Pattern" @@ -14124,7 +14124,7 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" +msgid "Detect overhang walls" msgstr "" #, possible-c-format, possible-boost-format @@ -14674,7 +14674,7 @@ msgid "Minimum sparse infill threshold" msgstr "" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" @@ -15280,12 +15280,12 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "" -msgid "Detect thin wall" +msgid "Detect thin walls" msgstr "" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" msgid "" @@ -15747,7 +15747,7 @@ msgid "" "itself. It's expressed as a percentage over nozzle diameter." msgstr "" -msgid "Detect narrow internal solid infill" +msgid "Detect narrow internal solid infills" msgstr "" msgid "" diff --git a/localization/i18n/ca/OrcaSlicer_ca.po b/localization/i18n/ca/OrcaSlicer_ca.po index 4345b86bcb..aaad3f2720 100644 --- a/localization/i18n/ca/OrcaSlicer_ca.po +++ b/localization/i18n/ca/OrcaSlicer_ca.po @@ -15333,7 +15333,8 @@ msgstr "Totes les superfícies superiors" msgid "Topmost surface" msgstr "Només la última superfície superior" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Tota la capa sòlida" msgid "Ironing Pattern" @@ -15860,7 +15861,8 @@ msgstr "" "Àrea màxima d'un forat a la base del model abans que s'ompli amb material " "cònic. Un valor de 0 omplirà tots els forats de la base del model." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Detectar voladís de perímetre" #, c-format, boost-format @@ -16558,8 +16560,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Llindar mínim de farciment poc dens" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "L'àrea de farciment poc dens que sigui més petita que el valor del llindar " @@ -17319,12 +17322,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Temperatura del broquet per les capes després de l'inicial" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Detectar perímetres prims" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Detecta un perímetre prim que no pugui contenir dues línies d'amplada. I " "utilitzar una sola línia per imprimir. Potser no s'imprimeix gaire bé, " @@ -17938,7 +17943,8 @@ msgstr "" "fina que el gruix de l'element el perímetre esdevindrà tan gruixut com el " "propi element. S'expressa en percentatge sobre el diàmetre del broquet" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Detectar de farciment sòlid intern estret" msgid "" diff --git a/localization/i18n/cs/OrcaSlicer_cs.po b/localization/i18n/cs/OrcaSlicer_cs.po index b60f90892c..8e01b62010 100644 --- a/localization/i18n/cs/OrcaSlicer_cs.po +++ b/localization/i18n/cs/OrcaSlicer_cs.po @@ -14962,7 +14962,8 @@ msgstr "Horní povrchy" msgid "Topmost surface" msgstr "Nejvyšší povrch" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Všechny pevné vrstvy" msgid "Ironing Pattern" @@ -15451,7 +15452,8 @@ msgstr "" "Maximální plocha otvoru ve spodní části modelu, než bude vyplněn kuželovitým " "materiálem. Hodnota 0 vyplní všechny otvory ve spodní části modelu." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Detekovat převislou stěnu" #, c-format, boost-format @@ -16130,8 +16132,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Minimální práh řídké výplně" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Oblast řídké výplně menší než prahová hodnota bude nahrazena vnitřní plnou " @@ -16854,12 +16857,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Teplota trysky pro vrstvy po úvodní vrstvě." -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Detekovat tenkou stěnu" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Detekovat tenkou stěnu, do které se nevejdou dvě šířky čáry. A použít pro " "tisk pouze jednu čáru. Tisk nemusí být zcela kvalitní, protože nejde o " @@ -17463,7 +17468,8 @@ msgstr "" "modelu. Pokud je minimální šířka stěny menší než tloušťka prvku, bude stěna " "tak silná, jako je samotný prvek. Je vyjádřena jako procento průměru trysky." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Detekovat úzkou vnitřní plnou výplň" msgid "" diff --git a/localization/i18n/de/OrcaSlicer_de.po b/localization/i18n/de/OrcaSlicer_de.po index bfe24239e4..4609c50764 100644 --- a/localization/i18n/de/OrcaSlicer_de.po +++ b/localization/i18n/de/OrcaSlicer_de.po @@ -16126,7 +16126,8 @@ msgstr "Obere Oberflächen" msgid "Topmost surface" msgstr "Oberste Oberfläche" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Alle soliden Schichten" msgid "Ironing Pattern" @@ -16659,7 +16660,8 @@ msgstr "" "konischem Material gefüllt wird. Ein Wert von 0 füllt alle Löcher in der " "Basis des Modells." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Erkennen von Wandüberhängen" #, c-format, boost-format @@ -17368,8 +17370,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Mindestschwelle für Füllung" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Innere Füllbereiche, die kleiner als dieser Wert sind, werden durch massive " @@ -18163,12 +18166,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Düsentemperatur nach der ersten Schicht" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Dünne Wand erkennen" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Erkennt dünne Wände, die keine zwei Linienbreiten enthalten können. Und " "verwendet eine einzelne Linie zum Drucken. Diese wird vielleicht nicht sehr " @@ -18821,7 +18826,8 @@ msgstr "" "Dicke des Features, wird die Wand so dick wie das Feature selbst. Wird als " "Prozentsatz des Düsendurchmessers angegeben." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Erkennen einer schmalen internen soliden Füllung" msgid "" diff --git a/localization/i18n/en/OrcaSlicer_en.po b/localization/i18n/en/OrcaSlicer_en.po index 9f379ea43d..225d04de2a 100644 --- a/localization/i18n/en/OrcaSlicer_en.po +++ b/localization/i18n/en/OrcaSlicer_en.po @@ -14004,8 +14004,8 @@ msgstr "All top surfaces" msgid "Topmost surface" msgstr "Topmost surface only" -msgid "All solid layer" -msgstr "All solid layers" +msgid "All solid layers" +msgstr "" msgid "Ironing Pattern" msgstr "" @@ -14442,8 +14442,8 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" -msgstr "Detect overhang walls" +msgid "Detect overhang walls" +msgstr "" #, c-format, boost-format msgid "" @@ -15006,7 +15006,7 @@ msgid "Minimum sparse infill threshold" msgstr "" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Sparse infill areas which are smaller than this threshold value are replaced " @@ -15639,12 +15639,12 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Nozzle temperature after the first layer" -msgid "Detect thin wall" -msgstr "Detect thin walls" +msgid "Detect thin walls" +msgstr "" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "This detects thin walls which can’t contain two lines and uses a single line " "to print. It may not print as well because it’s not a closed loop." @@ -16146,7 +16146,7 @@ msgid "" "itself. It's expressed as a percentage over nozzle diameter." msgstr "" -msgid "Detect narrow internal solid infill" +msgid "Detect narrow internal solid infills" msgstr "" msgid "" @@ -16168,7 +16168,7 @@ msgid " not in range " msgstr "" msgid "Export 3MF" -msgstr "Export 3mf" +msgstr "" msgid "Export project as 3MF." msgstr "This exports the project as a 3MF file." diff --git a/localization/i18n/es/OrcaSlicer_es.po b/localization/i18n/es/OrcaSlicer_es.po index 9f169837d0..60a9b09def 100644 --- a/localization/i18n/es/OrcaSlicer_es.po +++ b/localization/i18n/es/OrcaSlicer_es.po @@ -16063,7 +16063,8 @@ msgstr "Todas las superficies superiores" msgid "Topmost surface" msgstr "Sólo la superficie superior" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Todas la capas sólidas" msgid "Ironing Pattern" @@ -16615,7 +16616,7 @@ msgstr "" "material cónico. El valor 0 llenará todos los orificios en la base del " "modelo." -msgid "Detect overhang wall" +msgid "Detect overhang walls" msgstr "Detectar perímetros en voladizo" #, c-format, boost-format @@ -17323,8 +17324,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Umbral de área mínima de relleno de baja densidad" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "El área de relleno de baja densidad que es menor que este valor de umbral se " @@ -18115,12 +18117,12 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Temperatura de la boquilla después de la primera capa." -msgid "Detect thin wall" +msgid "Detect thin walls" msgstr "Detección de perímetros delgados" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Detectar los perímetros delgados que no pueden contener dos líneas de ancho, " "y utilizar una sola línea para imprimir. Tal vez no se imprima muy bien, " @@ -18775,7 +18777,8 @@ msgstr "" "propia característica. Se expresa en porcentaje en base al diámetro de la " "boquilla." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Detección de relleno interno estrecho" msgid "" diff --git a/localization/i18n/fr/OrcaSlicer_fr.po b/localization/i18n/fr/OrcaSlicer_fr.po index cea1b69654..8b31ecbe38 100644 --- a/localization/i18n/fr/OrcaSlicer_fr.po +++ b/localization/i18n/fr/OrcaSlicer_fr.po @@ -15463,7 +15463,8 @@ msgstr "Surfaces supérieures" msgid "Topmost surface" msgstr "Surface la plus élevée" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Toutes les couches pleines" msgid "Ironing Pattern" @@ -15999,7 +16000,8 @@ msgstr "" "par un matériau conique. Une valeur de 0 remplira tous les trous dans la " "base du modèle." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Détecter une paroi en surplomb" #, c-format, boost-format @@ -16702,8 +16704,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Seuil minimum de remplissage" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "La zone de remplissage inférieure à la valeur seuil est remplacée par un " @@ -17473,12 +17476,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Température de la buse pour les couches après la première" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Détecter les parois fines" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Détecte les parois fines qui ne peuvent pas contenir deux largeurs de ligne. " "Et utilisez une seule ligne pour imprimer. Peut ne pas être très bien " @@ -18096,7 +18101,8 @@ msgstr "" "l'élément lui-même. Elle est exprimée en pourcentage par rapport au diamètre " "de la buse" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Détecter un remplissage plein interne étroit" msgid "" diff --git a/localization/i18n/hu/OrcaSlicer_hu.po b/localization/i18n/hu/OrcaSlicer_hu.po index 3976b03bb1..903e6cb271 100644 --- a/localization/i18n/hu/OrcaSlicer_hu.po +++ b/localization/i18n/hu/OrcaSlicer_hu.po @@ -14313,7 +14313,8 @@ msgstr "Felső felületek" msgid "Topmost surface" msgstr "Legfelső felület" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Összes szilárd réteg" msgid "Ironing Pattern" @@ -14769,7 +14770,8 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Túlnyúló fal felismerése" #, c-format, boost-format @@ -15358,8 +15360,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Ritkás kitöltés küszöbértéke" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "A küszöbérték alatti ritkás kitöltési terület belső szilárd kitöltéssel " @@ -16028,12 +16031,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Fúvóka hőmérséklete az első réteg után" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Vékony fal felismerése" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Felismeri a vékony falat, amit nem lehet két vonalnyi szélességgel " "nyomtatni, és egyetlen vonallal nyomtatja" @@ -16563,7 +16568,8 @@ msgstr "" "mint a nyomtatandó elem vastagsága, akkor a fal olyan vastag lesz, mint maga " "a nyomtatott elem. A fúvóka átmérőjének százalékában van kifejezve" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Keskeny belső szilárd kitöltés felismerése" msgid "" diff --git a/localization/i18n/it/OrcaSlicer_it.po b/localization/i18n/it/OrcaSlicer_it.po index 107a56ada3..11e11324bf 100644 --- a/localization/i18n/it/OrcaSlicer_it.po +++ b/localization/i18n/it/OrcaSlicer_it.po @@ -15409,7 +15409,7 @@ msgstr "Superfici superiori" msgid "Topmost surface" msgstr "Superficie superiore più alta" -msgid "All solid layer" +msgid "All solid layers" msgstr "Tutti gli strati solidi" msgid "Ironing Pattern" @@ -15943,7 +15943,8 @@ msgstr "" "una forma conica. Un valore pari a 0 riempirà tutti i fori nella base del " "modello." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Rileva parete sporgente" #, c-format, boost-format @@ -16649,8 +16650,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Soglia minima riempimento sparso" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "L'area del riempimento sparso che è inferiore al valore di soglia, viene " @@ -17420,12 +17422,13 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Temperatura dell'ugello per gli strati successivi a quello iniziale." -msgid "Detect thin wall" +msgid "Detect thin walls" msgstr "Rileva pareti sottili" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Rileva le pareti sottili che non possono contenere due linee di larghezza, " "utilizzandone quindi una sola per la stampa. Potrebbe non essere stampato " @@ -18042,7 +18045,8 @@ msgstr "" "spessa quanto l'elemento stesso. Questo valore è espresso come percentuale " "rispetto al diametro dell'ugello." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Rileva riempimento solido interno stretto" msgid "" diff --git a/localization/i18n/ja/OrcaSlicer_ja.po b/localization/i18n/ja/OrcaSlicer_ja.po index 6dd18813e1..aa2da7f273 100644 --- a/localization/i18n/ja/OrcaSlicer_ja.po +++ b/localization/i18n/ja/OrcaSlicer_ja.po @@ -14080,7 +14080,8 @@ msgstr "全てのトップ面" msgid "Topmost surface" msgstr "最上部のみ" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "全てのソリッド積層" msgid "Ironing Pattern" @@ -14523,7 +14524,8 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "オーバーハングを検出" #, c-format, boost-format @@ -15095,8 +15097,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "スパース インフィルの下閾値" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "スパース インフィルの面積がこの値以下の場合、ソリッド インフィルに変換されま" @@ -15741,12 +15744,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "1層目後のノズル温度" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "薄い壁を検出" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "2ラインの入らない薄い壁面を検出し、1ラインで造形します。仕上がりが悪くなり可" "能性があります。" @@ -16249,7 +16254,8 @@ msgid "" "itself. It's expressed as a percentage over nozzle diameter." msgstr "" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "薄いソリッド インフィル検出" msgid "" diff --git a/localization/i18n/ko/OrcaSlicer_ko.po b/localization/i18n/ko/OrcaSlicer_ko.po index b88f064f51..fc1f14bf3a 100644 --- a/localization/i18n/ko/OrcaSlicer_ko.po +++ b/localization/i18n/ko/OrcaSlicer_ko.po @@ -14807,7 +14807,8 @@ msgstr "상단 표면" msgid "Topmost surface" msgstr "최상단 표면" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "모든 꽉찬 레이어" msgid "Ironing Pattern" @@ -15301,7 +15302,8 @@ msgstr "" "원뿔형 재료로 채워지기 전에 모델 베이스에 있는 구멍의 최대 면적입니다. 값이 0" "이면 모델 베이스의 모든 구멍이 채워집니다." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "오버행 벽 감지" #, c-format, boost-format @@ -15960,8 +15962,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "최소 드문 채우기 임계값" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "임계값보다 작은 드문 채우기 영역은 꽉찬 내부 채우기로 대체됩니다" @@ -16669,12 +16672,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "초기 레이어 이후의 노즐 온도" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "얇은 벽 감지" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "두개의 선 너비를 포함할 수 없는 얇은 벽을 감지합니다. 그리고 한 선으로 출력합" "니다. 폐쇄 루프가 아니기 때문에 출력이 잘 되지 않을 수 있습니다" @@ -17244,7 +17249,8 @@ msgstr "" "비가 형상의 두께보다 얇은 경우 벽은 형상 자체만큼 두꺼워집니다. 노즐 직경에 " "대한 백분율로 표시됩니다" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "좁은 꽉찬 내부 채우기 감지" msgid "" diff --git a/localization/i18n/lt/OrcaSlicer_lt.po b/localization/i18n/lt/OrcaSlicer_lt.po index 7a263569fb..b8e2cc88bc 100644 --- a/localization/i18n/lt/OrcaSlicer_lt.po +++ b/localization/i18n/lt/OrcaSlicer_lt.po @@ -15360,7 +15360,8 @@ msgstr "Viršutiniai paviršiai" msgid "Topmost surface" msgstr "Aukščiausias paviršius" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Visas vientisas sluoksnis" msgid "Ironing Pattern" @@ -15889,7 +15890,8 @@ msgstr "" "Didžiausias modelio pagrindo skylės plotas prieš ją užpildant kūgine " "medžiaga. 0 reikšmė užpildys visas modelio pagrindo skyles." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Aptikti išsikišusią sieną" #, c-format, boost-format @@ -16579,8 +16581,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Minimali reto užpildymo riba" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Reto užpildymo sritys, kurios yra mažesnės už šią ribinę vertę, pakeičiamos " @@ -17340,12 +17343,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Po pradinio sluoksnio esančių sluoksnių purkštuko temperatūra." -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Aptikti plonas sieneles" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Aptikti ploną sienelę, kurioje negali būti dviejų eilučių pločio. " "Spausdinimui naudoti vieną liniją. Gali būti, kad nebus išspausdinta labai " @@ -17973,7 +17978,8 @@ msgstr "" "siena taps tokio pat storio kaip ir pats elementas. Jis išreiškiamas " "procentais nuo purkštuko skersmens." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Aptikti siaurą vidinį vientisą užpildą" msgid "" diff --git a/localization/i18n/nl/OrcaSlicer_nl.po b/localization/i18n/nl/OrcaSlicer_nl.po index e15261807c..af56a29fbd 100644 --- a/localization/i18n/nl/OrcaSlicer_nl.po +++ b/localization/i18n/nl/OrcaSlicer_nl.po @@ -14477,7 +14477,8 @@ msgstr "Alle bovenoppervlakken" msgid "Topmost surface" msgstr "Alleen het bovenste oppervlak" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Alle vaste lagen" msgid "Ironing Pattern" @@ -14940,7 +14941,8 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Overhange wand detecteren" #, c-format, boost-format @@ -15536,8 +15538,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Minimale drempel voor dunne opvulling (infill)" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Dunne opvullingen (infill) die kleiner zijn dan deze drempelwaarde worden " @@ -16214,12 +16217,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Mondstuk temperatuur voor de lagen na de eerste laag" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Detecteer dunne wanden" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Dit detecteert dunne wanden die geen twee lijnen kunnen bevatten en gebruikt " "een enkele lijn tijdens het printen. Het kan zijn dat de kwaliteit minder " @@ -16770,7 +16775,8 @@ msgstr "" "van het element, wordt de muur net zo dik als het object zelf. Dit wordt " "uitgedrukt als een percentage ten opzichte van de diameter van het mondstuk" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Detecteer dichte interne solide vulling (infill)" msgid "" diff --git a/localization/i18n/pl/OrcaSlicer_pl.po b/localization/i18n/pl/OrcaSlicer_pl.po index 9f40ecb44a..bd38fa2f55 100644 --- a/localization/i18n/pl/OrcaSlicer_pl.po +++ b/localization/i18n/pl/OrcaSlicer_pl.po @@ -15260,7 +15260,8 @@ msgstr "Górne powierzchnie" msgid "Topmost surface" msgstr "Tylko ostatnia warstwa" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Wszystkie jednolite warstwy" msgid "Ironing Pattern" @@ -15787,7 +15788,8 @@ msgstr "" "Maksymalna powierzchnia otworu w podstawie modelu przed jego wypełnieniem " "materiałem stożkowym. Wartość 0 wypełni wszystkie otwory w podstawie modelu." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Wykrywanie ścian nawisu" #, c-format, boost-format @@ -16484,8 +16486,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Minimalny próg wypełnienia" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Obszar wypełnienia, który jest mniejszy od wartości progowej zostaje " @@ -17237,12 +17240,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Temperatura dyszy dla warstw po początkowej" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Wykrywanie cienkich ścian" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Wykrywaj ściany o grubości jednego obrysu. Są to obszary, gdzie 2 obrysy nie " "zmieszczą się i trzeba będzie połączyć je w jedną linię" @@ -17848,7 +17853,8 @@ msgstr "" "grubość detalu, obrys będzie miał taką samą grubość jak sam element. Jest " "wyrażona w procentach i zostanie obliczona na podstawie średnicy dyszy." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Wykryj wąskie wewnętrzne pełne wypełnienie" msgid "" diff --git a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po index 82fca905b5..9ea92d87c9 100644 --- a/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po +++ b/localization/i18n/pt_BR/OrcaSlicer_pt_BR.po @@ -15921,7 +15921,7 @@ msgstr "Superfícies superiores" msgid "Topmost surface" msgstr "Superfície superior mais alta" -msgid "All solid layer" +msgid "All solid layers" msgstr "Todas as camadas sólidas" msgid "Ironing Pattern" @@ -16461,7 +16461,7 @@ msgstr "" "Área maxima de um furo na base do modelo antes que ele seja preenchido por " "uma forma cônica. Um valor 0 irá preencher todos os furos do modelo." -msgid "Detect overhang wall" +msgid "Detect overhang walls" msgstr "Detectar paredes salientes" #, c-format, boost-format @@ -17161,11 +17161,11 @@ msgid "Minimum sparse infill threshold" msgstr "Limiar mínimo de preenchimento esparso" msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" -"A área de preenchimento esparso que é menor que o valor limiar é substituída " -"por preenchimento sólido interno." +"Áreas de preenchimento esparso menores que este valor limiar são " +"substituídas por preenchimento sólido interno." msgid "Solid infill" msgstr "Preenchimento sólido" @@ -17929,15 +17929,15 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Temperatura do bico para camadas após a inicial." -msgid "Detect thin wall" -msgstr "Detectar parede fina" +msgid "Detect thin walls" +msgstr "Detectar paredes finas" msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" -"Detecta paredes finas que não podem conter duas larguras de linha. E usa uma " -"linha única para imprimir. Talvez seja impresso não muito bem, porque não é " +"Detecta paredes finas que não podem conter duas larguras de linha, e usa uma " +"linha única para imprimir. Talvez não seja impresso muito bem, porque não é " "uma volta fechada." msgid "" @@ -18571,8 +18571,8 @@ msgstr "" "do que a espessura do elemento, a parede será tão espesso quanto o próprio " "elemento. É expresso como uma porcentagem sobre o diâmetro do bico." -msgid "Detect narrow internal solid infill" -msgstr "Detectar preenchimento sólido interno estreito" +msgid "Detect narrow internal solid infills" +msgstr "Detectar preenchimentos sólidos internos estreitos" msgid "" "This option will auto-detect narrow internal solid infill areas. If enabled, " diff --git a/localization/i18n/ru/OrcaSlicer_ru.po b/localization/i18n/ru/OrcaSlicer_ru.po index 5c56ecd8d4..ae0913f961 100644 --- a/localization/i18n/ru/OrcaSlicer_ru.po +++ b/localization/i18n/ru/OrcaSlicer_ru.po @@ -16031,7 +16031,8 @@ msgstr "Поверхности" msgid "Topmost surface" msgstr "Верхний слой" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Сплошные слои" msgid "Ironing Pattern" @@ -16585,7 +16586,8 @@ msgstr "" "материалом конической геометрии. При 0 все отверстия в основании модели " "будут заполнены." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Обнаруживать нависающие периметры" #, c-format, boost-format @@ -17323,8 +17325,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Мин. порог разреженного заполнения" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Область с разреженным заполнением, размер которого меньше этого порогового " @@ -18163,12 +18166,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Температура при печати последующих слоёв." -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Обнаруживать тонкие стенки" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Обнаруживать стенки, которые можно напечатать только в одну линию. Возможно, " "будет напечатано не очень хорошо, так как это разомкнутый контур.\n" @@ -18850,7 +18855,8 @@ msgstr "" "подогнана под размер элемента, если значение этого параметра меньше его " "ширины. Можно указать процент от диаметра сопла." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Оптимизация заполнения узких мест" msgid "" diff --git a/localization/i18n/sv/OrcaSlicer_sv.po b/localization/i18n/sv/OrcaSlicer_sv.po index d4c7a83ddb..268680dbcc 100644 --- a/localization/i18n/sv/OrcaSlicer_sv.po +++ b/localization/i18n/sv/OrcaSlicer_sv.po @@ -14261,7 +14261,8 @@ msgstr "Top ytor" msgid "Topmost surface" msgstr "Endast högsta ytan" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Alla solida lager" msgid "Ironing Pattern" @@ -14702,7 +14703,8 @@ msgid "" "conical material. A value of 0 will fill all the holes in the model base." msgstr "" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Upptäck överhängs vägg" #, c-format, boost-format @@ -15281,8 +15283,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Min sparsam ifyllnads gräns" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Sparsam ifyllnads ytor som är mindre än detta gränsvärde ersätts med inre " @@ -15937,12 +15940,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Nozzel temperatur efter första lager" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Upptäck tunna väggar" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Upptäck tunna väggar som inte kan ha två linjer och använder en linje för " "att skrivas ut. Utskrifts kvaliteten begränsas efter som det inte är en " @@ -16470,7 +16475,8 @@ msgstr "" "elementet blir väggen lika tjock som själva elementet. Den uttrycks i " "procent av nozzel diametern." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Upptäck tight inre solid ifyllnad" msgid "" diff --git a/localization/i18n/tr/OrcaSlicer_tr.po b/localization/i18n/tr/OrcaSlicer_tr.po index 4a314a7b38..1a502bfb67 100644 --- a/localization/i18n/tr/OrcaSlicer_tr.po +++ b/localization/i18n/tr/OrcaSlicer_tr.po @@ -15257,7 +15257,8 @@ msgstr "Üst yüzeyler" msgid "Topmost surface" msgstr "En üst yüzey" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Tamamı katı katman" msgid "Ironing Pattern" @@ -15785,7 +15786,8 @@ msgstr "" "Modelin tabanındaki bir deliğin, konik malzemeyle doldurulmadan önce " "maksimum alanı. 0 değeri, model tabanındaki tüm delikleri dolduracaktır." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Çıkıntılı duvarı algıla" #, c-format, boost-format @@ -16480,8 +16482,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Minimum seyrek dolgu" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Eşik değerinden küçük olan seyrek dolgu alanı, yerini iç katı dolguya " @@ -17235,12 +17238,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "İlk katmandan sonraki katmanlar için nozul sıcaklığı." -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "İnce duvarı algıla" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "İki çizgi genişliğini içeremeyen ince duvarı tespit edin. Ve yazdırmak için " "tek satır kullanın. Kapalı döngü olmadığından pek iyi basılmamış olabilir." @@ -17865,7 +17870,8 @@ msgstr "" "duvar, özelliğin kendisi kadar kalın olacaktır. Nozul çapına göre yüzde " "olarak ifade edilir." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Dar iç katı dolguyu tespit et" msgid "" diff --git a/localization/i18n/uk/OrcaSlicer_uk.po b/localization/i18n/uk/OrcaSlicer_uk.po index 61d184e6ee..11c924e41a 100644 --- a/localization/i18n/uk/OrcaSlicer_uk.po +++ b/localization/i18n/uk/OrcaSlicer_uk.po @@ -15261,7 +15261,8 @@ msgstr "Верхові поверхні" msgid "Topmost surface" msgstr "Найвища поверхня" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Весь суцільний шар" msgid "Ironing Pattern" @@ -15778,7 +15779,8 @@ msgstr "" "Максимальна площа отвору в основі моделі перед заповненням його конічним " "матеріалом. Значення 0 заповнює всі отвори в основі моделі." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Виявлення стінок що нависають" #, c-format, boost-format @@ -16466,8 +16468,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Мінімальний поріг часткового заповнення" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Ділянки часткового заповнення, менші за порогове значення, замінюються " @@ -17210,12 +17213,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Температура сопла для шарів після першого" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Виявлення тонкої стінки" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Виявляти тонкі стінки, товщина яких менше ніж ширина двох ліній і " "використовувати лише одну лінію для друку. Можуть бути надруковані не дуже " @@ -17813,7 +17818,8 @@ msgstr "" "елемента, то товщина периметра дорівнюватиме товщині самого елемента. Він " "виражається у відсотках від діаметра сопла" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Виявлення вузького внутрішнього суцільного заповнення" msgid "" diff --git a/localization/i18n/vi/OrcaSlicer_vi.po b/localization/i18n/vi/OrcaSlicer_vi.po index 1e88c80e00..31182d78a1 100644 --- a/localization/i18n/vi/OrcaSlicer_vi.po +++ b/localization/i18n/vi/OrcaSlicer_vi.po @@ -15024,7 +15024,8 @@ msgstr "Bề mặt trên" msgid "Topmost surface" msgstr "Bề mặt trên cùng" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "Tất cả lớp đặc" msgid "Ironing Pattern" @@ -15540,7 +15541,8 @@ msgstr "" "Diện tích tối đa của lỗ ở đáy model trước khi nó được lấp bởi vật liệu hình " "nón. Giá trị 0 sẽ lấp tất cả các lỗ ở đáy model." -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "Phát hiện thành nhô" #, c-format, boost-format @@ -16211,8 +16213,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "Ngưỡng infill thưa tối thiểu" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "" "Vùng infill thưa nhỏ hơn giá trị ngưỡng được thay thế bằng infill đặc bên " @@ -16946,12 +16949,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "Nhiệt độ đầu phun cho các lớp sau lớp đầu tiên." -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "Phát hiện thành mỏng" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "Phát hiện thành mỏng không thể chứa hai độ rộng đường. Và sử dụng đường đơn " "để in. Có thể in không tốt lắm, vì nó không phải vòng kín." @@ -17558,7 +17563,8 @@ msgstr "" "thành sẽ trở nên dày như tính năng đó. Nó được biểu thị dưới dạng phần trăm " "trên đường kính đầu phun." -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "Phát hiện infill đặc bên trong hẹp" msgid "" diff --git a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po index 8018a6d383..a49cc046c1 100644 --- a/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po +++ b/localization/i18n/zh_CN/OrcaSlicer_zh_CN.po @@ -14568,7 +14568,8 @@ msgstr "顶面" msgid "Topmost surface" msgstr "最顶面" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "所有实心层" msgid "Ironing Pattern" @@ -15042,7 +15043,8 @@ msgstr "" "模型底部的孔洞在被圆锥形材料填充前所允许的最大面积。值为0将填充模型底部的所有" "孔洞。" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "识别悬垂外墙" #, c-format, boost-format @@ -15652,8 +15654,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "稀疏填充最小阈值" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "小于这个阈值的稀疏填充区域将会被内部实心填充替代。" @@ -16340,12 +16343,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "除首层外的其它层的喷嘴温度" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "检查薄壁" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "检查无法容纳两条走线的薄壁。使用单条走线打印。可能会打地不是很好,因为走线不" "再闭合。" @@ -16908,7 +16913,8 @@ msgstr "" "用于替换模型上的细小特征(根据最小特征尺寸决定)的墙线宽。如果最小墙宽度小于" "最小特征宽度,则墙将变得和特征本身一样厚。本设置以喷嘴直径的百分比表示。" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "识别狭窄的内部实心填充" msgid "" diff --git a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po index d853e2f6b2..a9e68d1008 100644 --- a/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po +++ b/localization/i18n/zh_TW/OrcaSlicer_zh_TW.po @@ -14692,7 +14692,8 @@ msgstr "頂面" msgid "Topmost surface" msgstr "最頂面" -msgid "All solid layer" +#, fuzzy +msgid "All solid layers" msgstr "所有實心層" msgid "Ironing Pattern" @@ -15172,7 +15173,8 @@ msgstr "" "模型底部的孔洞在被圓錐形材料填充前所允許的最大面積。值為 0 將填充模型底部的所" "有孔洞。" -msgid "Detect overhang wall" +#, fuzzy +msgid "Detect overhang walls" msgstr "檢測懸空外牆" #, c-format, boost-format @@ -15784,8 +15786,9 @@ msgstr "" msgid "Minimum sparse infill threshold" msgstr "稀疏填充最小臨界值" +#, fuzzy msgid "" -"Sparse infill area which is smaller than threshold value is replaced by " +"Sparse infill areas smaller than this threshold value are replaced by " "internal solid infill." msgstr "小於設定閾值的稀疏填充區域將替換為內部實心填充" @@ -16480,12 +16483,14 @@ msgstr "" msgid "Nozzle temperature for layers after the initial one." msgstr "除首層外的其它層的噴嘴溫度" -msgid "Detect thin wall" +#, fuzzy +msgid "Detect thin walls" msgstr "檢查薄壁" +#, fuzzy msgid "" -"Detect thin wall which can't contain two line width. And use single line to " -"print. Maybe printed not very well, because it's not closed loop." +"Detect thin walls which can't contain two line widths, and use single line " +"to print. Maybe not printed very well, because it's not a closed loop." msgstr "" "檢查無法容納兩條走線的薄壁。使用單條走線列印。可能會打地不是很好,因為走線不" "再閉合" @@ -17043,7 +17048,8 @@ msgstr "" "設定替代模型中細薄特徵(依據最小特徵尺寸)的牆體寬度。若最小牆寬小於特徵厚" "度,牆體將與特徵的厚度一致。此值以噴嘴直徑的百分比表示" -msgid "Detect narrow internal solid infill" +#, fuzzy +msgid "Detect narrow internal solid infills" msgstr "識別狹窄內部實心填充" msgid "" diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 048be848c6..54491ddacb 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3972,7 +3972,7 @@ void PrintConfigDef::init_fff_params() def->enum_labels.push_back(L("No ironing")); def->enum_labels.push_back(L("Top surfaces")); def->enum_labels.push_back(L("Topmost surface")); - def->enum_labels.push_back(L("All solid layer")); + def->enum_labels.push_back(L("All solid layers")); def->mode = comAdvanced; def->set_default_value(new ConfigOptionEnum(IroningType::NoIroning)); @@ -4554,7 +4554,7 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionFloat(0.)); def = this->add("detect_overhang_wall", coBool); - def->label = L("Detect overhang wall"); + def->label = L("Detect overhang walls"); def->category = L("Quality"); def->tooltip = L("Detect the overhang percentage relative to line width and use different speed to print. " "For 100%% overhang, bridge speed is used."); @@ -5304,7 +5304,7 @@ void PrintConfigDef::init_fff_params() def = this->add("minimum_sparse_infill_area", coFloat); def->label = L("Minimum sparse infill threshold"); def->category = L("Strength"); - def->tooltip = L("Sparse infill area which is smaller than threshold value is replaced by internal solid infill."); + def->tooltip = L("Sparse infill areas smaller than this threshold value are replaced by internal solid infill."); def->sidetext = L(u8"mm²"); // square milimeters, CIS languages need translation def->min = 0; def->mode = comAdvanced; @@ -6145,10 +6145,10 @@ void PrintConfigDef::init_fff_params() def->set_default_value(new ConfigOptionPoints{}); def = this->add("detect_thin_wall", coBool); - def->label = L("Detect thin wall"); + def->label = L("Detect thin walls"); def->category = L("Strength"); - def->tooltip = L("Detect thin wall which can't contain two line width. And use single line to print. " - "Maybe printed not very well, because it's not closed loop."); + def->tooltip = L("Detect thin walls which can't contain two line widths, and use single line to print. " + "Maybe not printed very well, because it's not a closed loop."); def->mode = comAdvanced; def->set_default_value(new ConfigOptionBool(false)); @@ -6759,7 +6759,7 @@ void PrintConfigDef::init_fff_params() } def = this->add("detect_narrow_internal_solid_infill", coBool); - def->label = L("Detect narrow internal solid infill"); + def->label = L("Detect narrow internal solid infills"); def->category = L("Strength"); def->tooltip = L("This option will auto-detect narrow internal solid infill areas. " "If enabled, the concentric pattern will be used for the area to speed up printing. " diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index d7c0da0127..11c98f6ab1 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2488,7 +2488,7 @@ static wxMenu* generate_help_menu() // //TODO // }); // Check New Version - append_menu_item(helpMenu, wxID_ANY, _L("Check for Update"), _L("Check for Update"), + append_menu_item(helpMenu, wxID_ANY, _L("Check for Updates"), _L("Check for Updates"), [](wxCommandEvent&) { wxGetApp().check_new_version_sf(true, 1); }, "", nullptr, []() { diff --git a/src/slic3r/GUI/PrintOptionsDialog.cpp b/src/slic3r/GUI/PrintOptionsDialog.cpp index 56cc764356..f6681e9d7a 100644 --- a/src/slic3r/GUI/PrintOptionsDialog.cpp +++ b/src/slic3r/GUI/PrintOptionsDialog.cpp @@ -639,7 +639,7 @@ wxBoxSizer* PrintOptionsDialog::create_settings_group(wxWindow* parent) ai_refine_sizer->Add(line_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(18)); line_sizer = new wxBoxSizer(wxHORIZONTAL); - text_spaghetti_detection_caption0 = new Label(ai_refine_panel, _L("Detect spaghetti failure(scattered lose filament).")); + text_spaghetti_detection_caption0 = new Label(ai_refine_panel, _L("Detect spaghetti failures (scattered lose filament).")); text_spaghetti_detection_caption0->SetFont(Label::Body_12); text_spaghetti_detection_caption0->SetForegroundColour(STATIC_TEXT_CAPTION_COL); text_spaghetti_detection_caption0->Wrap(-1); diff --git a/src/slic3r/GUI/UnsavedChangesDialog.cpp b/src/slic3r/GUI/UnsavedChangesDialog.cpp index ada0269330..89cd4287ef 100644 --- a/src/slic3r/GUI/UnsavedChangesDialog.cpp +++ b/src/slic3r/GUI/UnsavedChangesDialog.cpp @@ -1668,7 +1668,7 @@ void UnsavedChangesDialog::update_tree(Preset::Type type, PresetCollection* pres // process changes of extruders count if (type == Preset::TYPE_PRINTER && old_pt == ptFFF && old_config.opt("nozzle_diameter")->values.size() != new_config.opt("nozzle_diameter")->values.size()) { - wxString local_label = _L("Extruders count"); + wxString local_label = _L("Extruder count"); wxString old_val = from_u8((boost::format("%1%") % old_config.opt("nozzle_diameter")->values.size()).str()); wxString new_val = from_u8((boost::format("%1%") % new_config.opt("nozzle_diameter")->values.size()).str()); @@ -2224,7 +2224,7 @@ void DiffPresetDialog::update_tree() // process changes of extruders count if (type == Preset::TYPE_PRINTER && left_pt == ptFFF && left_config.opt("extruder_colour")->values.size() != right_congig.opt("extruder_colour")->values.size()) { - wxString local_label = _L("Extruders count"); + wxString local_label = _L("Extruder count"); wxString left_val = from_u8((boost::format("%1%") % left_config.opt("extruder_colour")->values.size()).str()); wxString right_val = from_u8((boost::format("%1%") % right_congig.opt("extruder_colour")->values.size()).str()); From e22c8b6648ba1359144024bb652e84b7269d2b9d Mon Sep 17 00:00:00 2001 From: yw4z Date: Mon, 9 Mar 2026 17:09:09 +0300 Subject: [PATCH 08/24] update --- src/slic3r/GUI/Plater.cpp | 51 +++++++++++++++------------------- src/slic3r/GUI/Preferences.cpp | 34 ++++++++++++++++++++++- src/slic3r/GUI/Preferences.hpp | 3 ++ 3 files changed, 59 insertions(+), 29 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 2c5a363a25..e2d456194f 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -469,7 +469,6 @@ struct Sidebar::priv ScalableButton * m_bpButton_ams_filament; ScalableButton * m_bpButton_set_filament; int m_menu_filament_id = -1; - int filament_area_height; wxScrolledWindow* m_panel_filament_content; wxScrolledWindow* m_scrolledWindow_filament_content; wxStaticLine* m_staticline2; @@ -2109,7 +2108,7 @@ Sidebar::Sidebar(Plater *parent) p->m_panel_filament_content = new wxScrolledWindow( p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); p->m_panel_filament_content->SetScrollbars(0, 100, 1, 2); p->m_panel_filament_content->SetScrollRate(0, 5); - //p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); // ORCA + //p->m_panel_filament_content->SetMaxSize(wxSize{-1, FromDIP(174)}); p->m_panel_filament_content->SetBackgroundColour(wxColour(255, 255, 255)); //wxBoxSizer* bSizer_filament_content; @@ -2126,17 +2125,14 @@ Sidebar::Sidebar(Plater *parent) /* first filament item */ init_filament_combo(&p->combos_filament[0], 0); - update_filaments_area_height(); // ORCA - //bSizer_filament_content->Add(p->sizer_filaments, 1, wxALIGN_CENTER | wxALL); wxSizer *sizer_filaments2 = new wxBoxSizer(wxVERTICAL); sizer_filaments2->Add(p->sizer_filaments, 0, wxEXPAND, 0); p->m_panel_filament_content->SetSizer(sizer_filaments2); p->m_panel_filament_content->Layout(); - auto min_size = sizer_filaments2->GetMinSize(); - if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) - min_size.y = p->m_panel_filament_content->GetMaxHeight(); - p->m_panel_filament_content->SetMinSize(min_size); + + update_filaments_area_height(); // ORCA + scrolled_sizer->Add(p->m_panel_filament_content, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(SidebarProps::ContentMarginV())); // ORCA use vertical margin on parent otherwise it shows scrollbar even on 1 filament } @@ -2774,14 +2770,21 @@ void Sidebar::change_top_border_for_mode_sizer(bool increase_border) #endif } -// ORCA use a height with user preference void Sidebar::update_filaments_area_height() +// ORCA { - int filament_count_user = std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count")); - // Height and Border is static in here because GetSize() from item / sizer not returning of correct values while using wxEXPAND with 1(vertical) orientation - // FromDIP(2) + FromDIP(2) not equal to FromDIP(4) on 125% 175% scaling. this fixes scaling related issues - p->filament_area_height = std::ceil(filament_count_user * 0.5) * (FromDIP(30) + FromDIP(2) + FromDIP(2)); - p->m_panel_filament_content->SetMaxSize(wxSize{-1, p->filament_area_height}); + // ORCA use a height with user preference + auto left_sizer = p->sizer_filaments->GetItem((size_t) 0)->GetSizer(); + auto combo_sizer = left_sizer->GetItem((size_t) 0)->GetSizer(); + int preferred_rows = std::ceil(0.5 * std::stoi(wxGetApp().app_config->get("filaments_area_preferred_count"))); + auto height_with_borders = combo_sizer->GetSize().GetHeight(); // gets height from sizer instead static numbers + p->m_panel_filament_content->SetMaxSize(wxSize{-1, preferred_rows * height_with_borders}); + + // fixes wxScrolledWindow not shrinks its height to content size + auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); + if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) + min_size.y = p->m_panel_filament_content->GetMaxHeight(); + p->m_panel_filament_content->SetMinSize({-1, min_size.y}); } void Sidebar::msw_rescale() @@ -2831,8 +2834,6 @@ void Sidebar::msw_rescale() p->m_flushing_volume_btn->Rescale(); set_flushing_volume_warning(is_flush_config_modified()); // ORCA reapply appearance - update_filaments_area_height(); - //BBS p->left_extruder->Rescale(); p->right_extruder->Rescale(); @@ -2856,6 +2857,9 @@ void Sidebar::msw_rescale() for (PlaterPresetComboBox* combo : p->combos_filament) combo->msw_rescale(); + p->m_panel_filament_content->Layout(); + update_filaments_area_height(); // ORCA resize after combos scaled + // BBS //p->frequently_changed_parameters->msw_rescale(); //obj_list()->msw_rescale(); @@ -3034,10 +3038,7 @@ void Sidebar::on_filament_count_change(size_t num_filaments) } } - auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); - if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) - min_size.y = p->m_panel_filament_content->GetMaxHeight(); - p->m_panel_filament_content->SetMinSize(min_size); + update_filaments_area_height(); // ORCA Layout(); p->m_panel_filament_title->Refresh(); @@ -3097,10 +3098,7 @@ void Sidebar::on_filaments_delete(size_t filament_id) p->combos_filament[idx]->update(); } - auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); - if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) - min_size.y = p->m_panel_filament_content->GetMaxHeight(); - p->m_panel_filament_content->SetMinSize(min_size); + update_filaments_area_height(); // ORCA Layout(); p->m_panel_filament_title->Refresh(); @@ -3535,10 +3533,7 @@ void Sidebar::sync_ams_list(bool is_from_big_sync_btn) c->update(); // Expand filament list update_filaments_area_height(); // ORCA - auto min_size = p->m_panel_filament_content->GetSizer()->GetMinSize(); - if (min_size.y > p->m_panel_filament_content->GetMaxHeight()) - min_size.y = p->m_panel_filament_content->GetMaxHeight(); - p->m_panel_filament_content->SetMinSize({-1, min_size.y}); + // BBS:Synchronized consumables information // auto calculation of flushing volumes for (int i = 0; i < p->combos_filament.size(); ++i) { diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index d668fcb099..94f8cf3ae2 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -592,6 +592,14 @@ wxBoxSizer *PreferencesDialog::create_item_spinctrl(wxString title, wxString tit e.Skip(); }); + input->Bind(wxEVT_SPINCTRL, [this, param, input, onchange](wxCommandEvent& e) { + auto value = input->GetValue(); + app_config->set(param, std::to_string(value)); + app_config->save(); + if (onchange != nullptr) onchange(value); + e.Skip(); + }); + input->Bind(wxEVT_KILL_FOCUS, [this, param, input, onchange](wxFocusEvent &e) { auto value = input->GetValue(); app_config->set(param, std::to_string(value)); @@ -1398,7 +1406,13 @@ void PreferencesDialog::create_items() "group_filament_presets", {_L("All"), _L("None"), _L("By type"), _L("By vendor")}, [](wxString value) {wxGetApp().plater()->sidebar().update_presets(Preset::TYPE_FILAMENT);}); g_sizer->Add(item_filament_preset_grouping); - auto item_filament_area_height = create_item_spinctrl(_L("Optimize filaments area height for..."), _L("(Requires restart)"), _L("filaments"), _L("Optimizes filament area maximum height by chosen filament count."), "filaments_area_preferred_count", 8, 99); + // prevent burst calling on keyboard / spin events + m_filament_height_timer.Bind(wxEVT_TIMER, [this](wxTimerEvent&) { + wxGetApp().plater()->sidebar().update_filaments_area_height(); + UpdateSidebarLayout(); + }); + auto item_filament_area_height = create_item_spinctrl(_L("Optimize filaments area height for..."), "", _L("filaments"), _L("Optimizes filament area maximum height by chosen filament count."), + "filaments_area_preferred_count", 8, 99, [this](int value) {m_filament_height_timer.StartOnce(500);}); g_sizer->Add(item_filament_area_height); //// GENERAL > Features @@ -1950,4 +1964,22 @@ wxBoxSizer* PreferencesDialog::create_debug_page() return bSizer; } +void PreferencesDialog::UpdateSidebarLayout() +{ + Plater* plater = wxGetApp().plater(); + if (!plater) return; + + Sidebar& sidebar = plater->sidebar(); + + sidebar.Freeze(); + + sidebar.Layout(); + //plater->Layout(); + //wxGetApp().mainframe->Layout(); + + sidebar.Thaw(); + + plater->PostSizeEvent(); +} + }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index 886f5f7cec..c2209278fe 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -60,6 +60,7 @@ public: ~PreferencesDialog(); wxString m_backup_interval_time; + wxTimer m_filament_height_timer; void create(); @@ -106,6 +107,8 @@ public: void create_shortcuts_page(); wxBoxSizer* create_debug_page(); + void UpdateSidebarLayout(); + // BBS void create_select_domain_widget(); From 9034a7445462f95b32dca19f71314137c5a91857 Mon Sep 17 00:00:00 2001 From: HYzd766 <1550039450@qq.com> Date: Tue, 10 Mar 2026 16:22:52 +0800 Subject: [PATCH 09/24] Update Qidi X-Max 4 0.4 nozzle.json --- resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json index 75fe5d15d4..3b5ab099ca 100644 --- a/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json +++ b/resources/profiles/Qidi/machine/Qidi X-Max 4 0.4 nozzle.json @@ -35,7 +35,7 @@ "machine_max_acceleration_y": ["30000"], "machine_max_speed_x": ["800"], "machine_max_speed_y": ["800"], - "machine_start_gcode": ";===== PRINT_PHASE_INIT =====\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 X195 Y195\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1500\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1500\nG4 P400\nG1 Y0 F15000\nG1 X15\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 E-4 F1800\nG1 X15 F3000\n\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1200\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1200\nG4 P2000\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X380 Y5 F20000\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\n; LAYER_HEIGHT: 0.2\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG0 X195 Y1 F20000\nG0 Z10 F480\nSET_KINEMATIC_POSITION Z={10 - ((nozzle_temperature_initial_layer[initial_tool] - 130) / 14 - 5.0) / 100}\nG4 P3000\nprobe samples=1\nG91\nG0 Z0.6 F480\nG90\nG1 X175 Y1 F20000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 X215 E20 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 Z1 F480\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing", + "machine_start_gcode": "INIT_MAPPING_VALUE\n;===== PRINT_PHASE_INIT =====\nSET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]\nSET_PRINT_MAIN_STATUS MAIN_STATUS=print_start\nM220 S100\nM221 S100\nSET_INPUT_SHAPER SHAPER_TYPE_X=mzv\nSET_INPUT_SHAPER SHAPER_TYPE_Y=mzv\nDISABLE_ALL_SENSOR\nM1002 R1\nM107\nCLEAR_PAUSE\nM140 S[bed_temperature_initial_layer_single]\nM141 S[chamber_temperature]\nG29.0\nG28\n\n;===== BOX_PREPAR =====\nBOX_PRINT_START EXTRUDER=[initial_no_support_extruder] HOTENDTEMP={nozzle_temperature_range_high[initial_tool]}\nM400\nEXTRUSION_AND_FLUSH HOTEND=[nozzle_temperature_initial_layer]\n\n;===== CLEAR_NOZZLE =====\nG1 Z20 F480\nMOVE_TO_TRASH\nG1 Y403.5 F2000\n{if chamber_temperature[0] == 0}\nM106 P3 S[during_print_exhaust_fan_speed]\n{else}\nM106 P3 S0\n{endif}\nM1004\nM106 S0\nM109 S[nozzle_temperature_initial_layer]\nG92 E0\nM83\nG1 E5 F80\nG1 E250 F300\nM400\nM106 S255\nG1 E-3 F1000\nM104 S140\nM109.1 S{nozzle_temperature_initial_layer[0]-30}\nM204 S10000\nG1 Y403 F2000\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 Y395 F6000\nG1 X188\nG1 Z-0.2 F480\nM106 S255\nM109.1 S150\nG91\nG1 X15 F200\nG1 Y2\nG1 X-15\nG1 Y-2\nG1 X15\nG90\nG2 I0.5 J0.5 F480\nG2 I0.5 J0.5\nG2 I0.5 J0.5\nG1 Z10\nG1 Y383 F12000\nG1 X116\nG1 Y403\nG1 X163 F8000\nG1 X145 F5000\nG1 X163 F8000\nG1 X145 F5000\nG1 X175 F6000\nG1 X163\nG1 X175\nG1 X163\nG1 X175\nG1 X163\nG1 X180 F10000\nG1 X195 Y195\nM106 S0\nM190 S[bed_temperature_initial_layer_single]\nM191 S[chamber_temperature]\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1500\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1500\nG4 P400\nG1 Y0 F15000\nG1 X15\nG1 X3 F5000\nG4 P1000\nG1 X4 F1000\nG1 X3 F5000\nG4 P1000\nG1 E-4 F1800\nG1 X15 F3000\n\nM400\nSET_OPERATING_CURRENT STEPPER=x VALUE=1200\nG4 P400\nSET_OPERATING_CURRENT STEPPER=y VALUE=1200\nG4 P2000\nG1 X20 Y20 F15000\nZ_TILT_ADJUST\nG29\nM1002 A1\nG1 X195 Y195 Z10 F20000\nG92_ Z{10 - ((nozzle_temperature_initial_layer[initial_tool] - 130) / 14 - 5.0) / 100}\nG0 Y1\nM109 S[nozzle_temperature_initial_layer]\nENABLE_ALL_SENSOR\n\n;===== PRINT_START =====\n; LAYER_HEIGHT: 0.2\nT[initial_tool]\nM140 S[bed_temperature_initial_layer_single]\nM104 S[nozzle_temperature_initial_layer]\nM141 S[chamber_temperature]\nG4 P3000\nprobe samples=1\nG91\nG0 Z0.6 F480\nG90\nG1 X175 Y1 F20000\nG1 E5 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 X215 E20 F{filament_max_volumetric_speed[initial_no_support_extruder]/2/2.4053*60}\nG1 Z1 F480\nSET_PRINT_MAIN_STATUS MAIN_STATUS=printing", "nozzle_diameter": ["0.4"], "nozzle_volume": ["150"], "printable_area": ["0x0","390x0","390x390","0x390"], From 3a98890e5387e863a7c750b367e18a21697810a3 Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 12 Mar 2026 20:45:30 +0300 Subject: [PATCH 10/24] Update calib_dlg.cpp --- src/slic3r/GUI/calib_dlg.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index c0ca0ae017..88e3f3dd9b 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -67,7 +67,7 @@ std::vector make_shaper_type_labels() } PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("PA Calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("PA Calibration"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -328,7 +328,7 @@ enum FILAMENT_TYPE : int }; Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Temperature calibration"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Temperature calibration"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -518,7 +518,7 @@ void Temp_Calibration_Dlg::on_dpi_changed(const wxRect& suggested_rect) { // MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Max volumetric speed test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Max volumetric speed test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -622,7 +622,7 @@ void MaxVolumetricSpeed_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) { // VFA_Test_Dlg::VFA_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("VFA test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE) + : DPIDialog(parent, id, _L("VFA test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE) , m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog @@ -731,7 +731,7 @@ void VFA_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) // Retraction_Test_Dlg::Retraction_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Retraction test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Retraction test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -836,7 +836,7 @@ void Retraction_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) { // Input_Shaping_Freq_Test_Dlg::Input_Shaping_Freq_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Input shaping Frequency test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Input shaping Frequency test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -1053,7 +1053,7 @@ void Input_Shaping_Freq_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) { // Input_Shaping_Damp_Test_Dlg::Input_Shaping_Damp_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Input shaping Damp test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Input shaping Damp test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); @@ -1246,7 +1246,7 @@ void Input_Shaping_Damp_Test_Dlg::on_dpi_changed(const wxRect& suggested_rect) { // Cornering_Test_Dlg::Cornering_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) - : DPIDialog(parent, id, _L("Cornering test"), wxDefaultPosition, parent->FromDIP(wxSize(-1, 280)), wxDEFAULT_DIALOG_STYLE), m_plater(plater) + : DPIDialog(parent, id, _L("Cornering test"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE), m_plater(plater) { SetBackgroundColour(*wxWHITE); // make sure background color set for dialog SetForegroundColour(wxColour("#363636")); From 7399b5d9e65551df1ff4baf624d649d653e6f872 Mon Sep 17 00:00:00 2001 From: yw4z Date: Thu, 12 Mar 2026 23:58:23 +0300 Subject: [PATCH 11/24] Update calib_dlg.cpp --- src/slic3r/GUI/calib_dlg.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/slic3r/GUI/calib_dlg.cpp b/src/slic3r/GUI/calib_dlg.cpp index 88e3f3dd9b..6e888b43c6 100644 --- a/src/slic3r/GUI/calib_dlg.cpp +++ b/src/slic3r/GUI/calib_dlg.cpp @@ -196,6 +196,7 @@ PA_Calibration_Dlg::PA_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plater* Layout(); Fit(); + v_sizer->SetSizeHints(this); } PA_Calibration_Dlg::~PA_Calibration_Dlg() { @@ -409,6 +410,7 @@ Temp_Calibration_Dlg::Temp_Calibration_Dlg(wxWindow* parent, wxWindowID id, Plat Layout(); Fit(); + v_sizer->SetSizeHints(this); auto validate_text = [](TextInput* ti){ unsigned long t = 0; @@ -587,6 +589,7 @@ MaxVolumetricSpeed_Test_Dlg::MaxVolumetricSpeed_Test_Dlg(wxWindow* parent, wxWin Layout(); Fit(); + v_sizer->SetSizeHints(this); } MaxVolumetricSpeed_Test_Dlg::~MaxVolumetricSpeed_Test_Dlg() { @@ -694,6 +697,7 @@ VFA_Test_Dlg::VFA_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* plater) Layout(); Fit(); + v_sizer->SetSizeHints(this); } VFA_Test_Dlg::~VFA_Test_Dlg() @@ -802,6 +806,7 @@ Retraction_Test_Dlg::Retraction_Test_Dlg(wxWindow* parent, wxWindowID id, Plater Layout(); Fit(); + v_sizer->SetSizeHints(this); } Retraction_Test_Dlg::~Retraction_Test_Dlg() { @@ -981,6 +986,7 @@ Input_Shaping_Freq_Test_Dlg::Input_Shaping_Freq_Test_Dlg(wxWindow* parent, wxWin Layout(); Fit(); + v_sizer->SetSizeHints(this); } Input_Shaping_Freq_Test_Dlg::~Input_Shaping_Freq_Test_Dlg() { @@ -1179,6 +1185,7 @@ Input_Shaping_Damp_Test_Dlg::Input_Shaping_Damp_Test_Dlg(wxWindow* parent, wxWin Layout(); Fit(); + v_sizer->SetSizeHints(this); } Input_Shaping_Damp_Test_Dlg::~Input_Shaping_Damp_Test_Dlg() { @@ -1374,6 +1381,7 @@ Cornering_Test_Dlg::Cornering_Test_Dlg(wxWindow* parent, wxWindowID id, Plater* Layout(); Fit(); + v_sizer->SetSizeHints(this); } Cornering_Test_Dlg::~Cornering_Test_Dlg() { From 5a3523325d0123074cbd4259ebcaaa14c2cbc74b Mon Sep 17 00:00:00 2001 From: HYzd766 <1550039450@qq.com> Date: Fri, 13 Mar 2026 15:15:26 +0800 Subject: [PATCH 12/24] Add the filament id for the box of the Generic PC --- resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json | 2 +- resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json | 2 +- resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json index fb50534800..e3fee379ff 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2.json @@ -4,7 +4,7 @@ "inherits": "fdm_filament_q_common", "from": "system", "setting_id": "GFSA04", - "filament_id": "GFB99", + "filament_id": "QD_1_0_23", "instantiation": "false", "box_temperature_range_high": [ "65" diff --git a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json index b23b635181..ccdfdddd3c 100644 --- a/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json +++ b/resources/profiles/Qidi/filament/Q2/Generic PC @Q2C.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "QD_2_0_23", "setting_id": "GFSA04", "name": "Generic PC@Q2C-Series", "from": "system", diff --git a/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json b/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json index ffebfa765f..21dc071697 100644 --- a/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json +++ b/resources/profiles/Qidi/filament/X4/Generic PC @X-Max 4.json @@ -1,6 +1,6 @@ { "type": "filament", - "filament_id": "GFB99", + "filament_id": "QD_3_0_23", "setting_id": "GFSA04", "name": "Generic PC@X-Max 4-Series", "from": "system", From 1aed7dfe5b57ba944c5e43448cd24c3dae48f5e6 Mon Sep 17 00:00:00 2001 From: Max Paperno Date: Sun, 8 Mar 2026 22:32:28 -0400 Subject: [PATCH 13/24] FIX: Divide by zero exception in `InterlockingGenerator` when invalid configuration parameters are used. (fixes https://github.com/bambulab/BambuStudio/issues/9910 ) (cherry picked from commit cdd60ab71f8a3895fcb1345b2ccc2f2f472bf968) --- src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp index a3e6cd21b0..84a3d62136 100644 --- a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp +++ b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp @@ -26,7 +26,8 @@ namespace Slic3r { void InterlockingGenerator::generate_interlocking_structure(PrintObject* print_object) { const auto& config = print_object->config(); - if (!config.interlocking_beam) { + // Check if interlocking is enabled, and avoid errors like division by zero due to invalid configuration. + if (!config.interlocking_beam || config.interlocking_beam_layer_count < 1 || config.interlocking_depth < 1 || config.interlocking_beam_width < EPSILON ) { return; } From 3c0f5c7e5978215be7efe606116be64e74ec3f91 Mon Sep 17 00:00:00 2001 From: Bent Hillerkus Date: Fri, 13 Mar 2026 16:05:46 +0100 Subject: [PATCH 14/24] chore: translate comment for ignoring truncating casts warning --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c5be1d49f..008f9e9563 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -493,7 +493,8 @@ if (APPLE) endif () if(MSVC) -# 添加编译选项,忽略警告 C4305 (格式转换截断) +# Ignore truncating casts in initializers & constructors +# https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4305 add_compile_options(/wd4305) endif() From 485917461a3c6c6930c5bc938c1861281a53932b Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Fri, 13 Mar 2026 23:33:19 +0800 Subject: [PATCH 15/24] Allow cancellation during beam interlocking generation --- .../Feature/Interlocking/InterlockingGenerator.cpp | 12 +++++++++--- .../Feature/Interlocking/InterlockingGenerator.hpp | 8 ++++++-- src/libslic3r/PrintObjectSlice.cpp | 2 +- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp index 84a3d62136..726ee2ffd8 100644 --- a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp +++ b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.cpp @@ -23,7 +23,7 @@ template<> struct hash namespace Slic3r { -void InterlockingGenerator::generate_interlocking_structure(PrintObject* print_object) +void InterlockingGenerator::generate_interlocking_structure(PrintObject* print_object, const std::function& throw_on_cancel) { const auto& config = print_object->config(); // Check if interlocking is enabled, and avoid errors like division by zero due to invalid configuration. @@ -56,8 +56,10 @@ void InterlockingGenerator::generate_interlocking_structure(PrintObject* print_o continue; } + throw_on_cancel(); + InterlockingGenerator gen(*print_object, region_a_index, region_b_index, beam_width, boundary_avoidance, rotation, cell_size, beam_layer_count, - interface_dilation, air_dilation, air_filtering); + interface_dilation, air_dilation, air_filtering, throw_on_cancel); gen.generateInterlockingStructure(); } } @@ -109,12 +111,14 @@ void InterlockingGenerator::handleThinAreas(const std::unordered_set } } for (auto& near_interlock : near_interlock_per_layer) { + throw_on_cancel(); near_interlock = offset(union_(closing(near_interlock, rounding_errors)), detect); polygons_rotate(near_interlock, rotation); } // Only alter layers when they are present in both meshes, zip should take care if that. for (size_t layer_nr = 0; layer_nr < print_object.layer_count(); layer_nr++){ + throw_on_cancel(); auto layer = print_object.get_layer(layer_nr); ExPolygons polys_a = to_expolygons(layer->get_region(region_a_index)->slices.surfaces); ExPolygons polys_b = to_expolygons(layer->get_region(region_b_index)->slices.surfaces); @@ -200,7 +204,8 @@ void InterlockingGenerator::addBoundaryCells(const std::vector& lay const DilationKernel& kernel, std::unordered_set& cells) const { - auto voxel_emplacer = [&cells](GridPoint3 p) { + auto voxel_emplacer = [this, &cells](GridPoint3 p) { + this->throw_on_cancel(); if (p.z() < 0) { return true; } @@ -314,6 +319,7 @@ void InterlockingGenerator::applyMicrostructureToOutlines(const std::unordered_s for (size_t region_idx = 0; region_idx < 2; region_idx++) { const size_t region = (region_idx == 0) ? region_a_index : region_b_index; for (size_t layer_nr = 0; layer_nr < max_layer_count; layer_nr++) { + throw_on_cancel(); ExPolygons layer_outlines = layer_regions[layer_nr]; expolygons_rotate(layer_outlines, unapply_rotation); diff --git a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp index 6f331fb8ef..e6b79f9bc8 100644 --- a/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp +++ b/src/libslic3r/Feature/Interlocking/InterlockingGenerator.hpp @@ -45,7 +45,7 @@ public: /*! * Generate an interlocking structure between each two adjacent meshes. */ - static void generate_interlocking_structure(PrintObject* print_object); + static void generate_interlocking_structure(PrintObject* print_object, const std::function& throw_on_cancel); private: /*! @@ -75,7 +75,8 @@ private: const coord_t beam_layer_count, const DilationKernel& interface_dilation, const DilationKernel& air_dilation, - const bool air_filtering) + const bool air_filtering, + const std::function& throw_on_cancel) : print_object(print_object) , region_a_index(region_a_index) , region_b_index(region_b_index) @@ -88,6 +89,7 @@ private: , interface_dilation(interface_dilation) , air_dilation(air_dilation) , air_filtering(air_filtering) + , throw_on_cancel(throw_on_cancel) {} /*! Given two polygons, return the parts that border on air, and grow 'perpendicular' up to 'detect' distance. @@ -165,6 +167,8 @@ private: // Whether to fully remove all of the interlocking cells which would be visible on the outside. If no air filtering then those cells // will be cut off midway in a beam. const bool air_filtering; + + const std::function& throw_on_cancel; }; } // namespace Slic3r diff --git a/src/libslic3r/PrintObjectSlice.cpp b/src/libslic3r/PrintObjectSlice.cpp index 532307414d..2d67ac0939 100644 --- a/src/libslic3r/PrintObjectSlice.cpp +++ b/src/libslic3r/PrintObjectSlice.cpp @@ -1212,7 +1212,7 @@ void PrintObject::slice_volumes() apply_fuzzy_skin_segmentation(*this, [print]() { print->throw_if_canceled(); }); } - InterlockingGenerator::generate_interlocking_structure(this); + InterlockingGenerator::generate_interlocking_structure(this, [print]() { print->throw_if_canceled(); }); m_print->throw_if_canceled(); BOOST_LOG_TRIVIAL(debug) << "Slicing volumes - make_slices in parallel - begin"; From ccf1442c8c722c95c7a465977c0baa9293fcf0ca Mon Sep 17 00:00:00 2001 From: TheLegendTubaGuy Date: Fri, 13 Mar 2026 16:38:03 -0500 Subject: [PATCH 16/24] Disable arc fitting for Qidi processes Qidi printers run Klipper and we don't want arc fitting enabled for these. --- .../Qidi/process/0.06mm Standard @Qidi Q2 0.2 nozzle.json | 2 +- .../Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json | 2 +- .../Qidi/process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json | 2 +- .../Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json | 2 +- resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json | 2 +- .../Qidi/process/0.08mm Standard @Qidi Q2 0.2 nozzle.json | 2 +- .../Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json | 2 +- .../Qidi/process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json | 2 +- .../Qidi/process/0.10mm Standard @Qidi Q2 0.2 nozzle.json | 2 +- .../Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json | 2 +- .../Qidi/process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json | 2 +- .../Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json | 2 +- .../process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus4.json | 2 +- resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json | 2 +- .../Qidi/process/0.12mm Standard @Qidi Q2 0.2 nozzle.json | 2 +- .../Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json | 2 +- .../Qidi/process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json | 2 +- .../Qidi/process/0.14mm Standard @Qidi Q2 0.2 nozzle.json | 2 +- .../Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json | 2 +- .../Qidi/process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json | 2 +- .../profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json | 2 +- resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2.json | 2 +- resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json | 2 +- .../profiles/Qidi/process/0.16mm Optimal @Qidi XPlus4.json | 2 +- resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json | 2 +- .../process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json | 2 +- .../Qidi/process/0.18mm Standard @Qidi Q2 0.6 nozzle.json | 2 +- .../Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json | 2 +- .../Qidi/process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json | 2 +- .../Qidi/process/0.20mm Balanced Strength @X-Max 4.json | 2 +- resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2.json | 2 +- resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json | 2 +- .../profiles/Qidi/process/0.20mm Standard @Qidi XPlus4.json | 2 +- resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json | 2 +- .../process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json | 2 +- .../process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json | 2 +- resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2.json | 2 +- resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json | 2 +- resources/profiles/Qidi/process/0.24mm Draft @Qidi XPlus4.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi Q2 0.6 nozzle.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi Q2 0.8 nozzle.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json | 2 +- .../Qidi/process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json | 2 +- resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json | 2 +- resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json | 2 +- .../profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2.json | 2 +- .../profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json | 2 +- .../profiles/Qidi/process/0.28mm Extra Draft @Qidi XPlus4.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json | 2 +- .../profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json | 2 +- .../Qidi/process/0.30mm Standard @Qidi Q2 0.6 nozzle.json | 2 +- .../Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json | 2 +- .../Qidi/process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json | 2 +- .../Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json | 2 +- .../process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json | 2 +- .../Qidi/process/0.32mm Standard @Qidi Q2 0.8 nozzle.json | 2 +- .../Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json | 2 +- .../Qidi/process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json | 2 +- .../Qidi/process/0.36mm Standard @Qidi Q2 0.6 nozzle.json | 2 +- .../Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json | 2 +- .../Qidi/process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json | 2 +- .../Qidi/process/0.40mm Standard @Qidi Q2 0.8 nozzle.json | 2 +- .../Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json | 2 +- .../Qidi/process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json | 2 +- .../Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json | 2 +- .../Qidi/process/0.42mm Standard @Qidi Q2 0.6 nozzle.json | 2 +- .../Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json | 2 +- .../Qidi/process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json | 2 +- .../Qidi/process/0.48mm Standard @Qidi Q2 0.8 nozzle.json | 2 +- .../Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json | 2 +- .../Qidi/process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json | 2 +- .../Qidi/process/0.56mm Standard @Qidi Q2 0.8 nozzle.json | 2 +- .../Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json | 2 +- .../Qidi/process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json | 2 +- resources/profiles/Qidi/process/fdm_process_n_common.json | 2 +- 83 files changed, 83 insertions(+), 83 deletions(-) diff --git a/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2 0.2 nozzle.json b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2 0.2 nozzle.json index a4f25c6ace..ed3a101665 100644 --- a/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP024", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json index 41706b0975..2eef948b43 100644 --- a/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.06mm Standard @Qidi Q2C 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP024", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json index 9854ba2431..022f5dfde8 100644 --- a/resources/profiles/Qidi/process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.06mm Standard @Qidi XPlus4 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP024", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json index d3c238398a..081ea69ea6 100644 --- a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4 0.2 nozzle.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["4000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "initial_layer_infill_speed": ["70"], "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json index a0ab9987e8..981b6ff989 100644 --- a/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.08mm Extra Fine @X-Max 4.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["350"], "initial_layer_infill_speed": ["105"], "initial_layer_speed": ["50"], diff --git a/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2 0.2 nozzle.json index 50af2c198f..bc0f1f8323 100644 --- a/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP025", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json index dc4924ee41..45ee7d49de 100644 --- a/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.08mm Standard @Qidi Q2C 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP025", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json index 7dfa363390..117e8ddaf1 100644 --- a/resources/profiles/Qidi/process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.08mm Standard @Qidi XPlus4 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP025", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2 0.2 nozzle.json index 46f8d1231e..9b58d8fa33 100644 --- a/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP007", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json index 378dad8510..9f82619f53 100644 --- a/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.10mm Standard @Qidi Q2C 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP007", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json index 26e37936d8..486dc67ae9 100644 --- a/resources/profiles/Qidi/process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.10mm Standard @Qidi XPlus4 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP007", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json index 2df08a18ef..3924e00ff9 100644 --- a/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.10mm Standard @X-Max 4 0.2 nozzle.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "initial_layer_infill_speed": ["70"], "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json index accc43854f..d96b15218b 100644 --- a/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.12mm Balanced Quality @X-Max 4 0.2 nozzle.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "initial_layer_infill_speed": ["70"], "initial_layer_line_width": "0.25", "initial_layer_print_height": "0.1", diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2.json index 7714a78270..494f3e84fa 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json index ef93a94e14..e7223561d5 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi Q2C.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus4.json index 2c16b9c133..0d55ba3d3c 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @Qidi XPlus4.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json b/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json index 15ac8fe659..c99a3bce80 100644 --- a/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.12mm Fine @X-Max 4.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["350"], "initial_layer_infill_speed": ["105"], "initial_layer_speed": ["50"], diff --git a/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2 0.2 nozzle.json index 74c4c9fc3b..f730629b7d 100644 --- a/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP026", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json index 99d13a5d62..90b0423a0d 100644 --- a/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.12mm Standard @Qidi Q2C 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP026", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json index dbe672dd29..18cbb546b7 100644 --- a/resources/profiles/Qidi/process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.12mm Standard @Qidi XPlus4 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP026", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2 0.2 nozzle.json b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2 0.2 nozzle.json index b76af06149..51e0172709 100644 --- a/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP027", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json index 1c1a62120b..cb817e03b9 100644 --- a/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.14mm Standard @Qidi Q2C 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP027", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json b/resources/profiles/Qidi/process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json index 40fbb35a2b..a2aa98b462 100644 --- a/resources/profiles/Qidi/process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json +++ b/resources/profiles/Qidi/process/0.14mm Standard @Qidi XPlus4 0.2 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP027", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.2 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json b/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json index f2193c9ba8..0b652a05fb 100644 --- a/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.16mm Balanced Quality @X-Max 4.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["4000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["250"], "inner_wall_acceleration": ["5000"], "internal_solid_infill_speed": ["200"], diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2.json index f97195b998..ca6ee72e77 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json index 04c66770c6..57c5244c10 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi Q2C.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus4.json index 51bf8f7792..e5275c8967 100644 --- a/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.16mm Optimal @Qidi XPlus4.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json index 653631df18..d65f058f71 100644 --- a/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.16mm Standard @X-Max 4.json @@ -10,7 +10,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["300"], "inner_wall_acceleration": ["5000"], "inner_wall_speed": ["300"], diff --git a/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json index 25e4edfa4f..e1a0cd22cc 100644 --- a/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.18mm Balanced Quality @X-Max 4 0.6 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["30"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.62", diff --git a/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2 0.6 nozzle.json index b1bf6ec7ba..7e2e5d1885 100644 --- a/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP028", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json index e86bf6dba0..ec12f7937d 100644 --- a/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.18mm Standard @Qidi Q2C 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP028", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json index 258b1243a2..50799f06d0 100644 --- a/resources/profiles/Qidi/process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.18mm Standard @Qidi XPlus4 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP028", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json b/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json index 5ea9cc80c4..cfee275cd8 100644 --- a/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.20mm Balanced Strength @X-Max 4.json @@ -9,7 +9,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["250"], "inner_wall_acceleration": ["5000"], "inner_wall_speed": ["300"], diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2.json index 0b110b518c..4848d23c8f 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json index 02678202ff..6fbb62b2ab 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi Q2C.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus4.json index fb22dafb11..c43c921b0e 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @Qidi XPlus4.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json index 5c197b9c41..608e3365e2 100644 --- a/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.20mm Standard @X-Max 4.json @@ -8,7 +8,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["250"], "inner_wall_speed": ["300"], "inner_wall_acceleration": ["5000"], diff --git a/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json index 6960badde1..f50e217c87 100644 --- a/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Balanced Quality @X-Max 4 0.8 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["30"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.82", diff --git a/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json index 1ed8b9efa1..92302d053e 100644 --- a/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Balanced Strength @X-Max 4 0.6 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["30"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.62", diff --git a/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2.json index 3b01b6ee25..9b912483f7 100644 --- a/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json index 8d905be4a9..c2cb43315d 100644 --- a/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.24mm Draft @Qidi Q2C.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.24mm Draft @Qidi XPlus4.json index d38b7ec0e0..118af9c624 100644 --- a/resources/profiles/Qidi/process/0.24mm Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.24mm Draft @Qidi XPlus4.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.6 nozzle.json index 3eae347cee..fd2d00255d 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP029", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.8 nozzle.json index c2a0a753ac..039ce49226 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP032", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json index 068e7897e9..3895e959c8 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP029", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json index 9f71a3d522..3c4d203446 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi Q2C 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP032", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json index 2b22057534..4bc59ad603 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP029", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json index 9b68afbbe8..5585d47610 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @Qidi XPlus4 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP032", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json b/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json index 8198908e93..727157f999 100644 --- a/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json +++ b/resources/profiles/Qidi/process/0.24mm Standard @X-Max 4.json @@ -8,7 +8,7 @@ "bridge_flow": "1", "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["230"], "inner_wall_acceleration": ["5000"], "inner_wall_speed": ["230"], diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json index 62f7d391be..4045189fbd 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json index 7650e7eb8f..762b64abc1 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi Q2C.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json index 606d80135a..29b53739cf 100644 --- a/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.25mm Draft @Qidi XPlus4.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.25", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2.json index 7fb7dfe92f..b695144d83 100644 --- a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json index 97c3abb3d6..9252c9b65f 100644 --- a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi Q2C.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi XPlus4.json index 9a5fbc9c81..981ff6f9ad 100644 --- a/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.28mm Extra Draft @Qidi XPlus4.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP004", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.4 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json index 5c796a9e1f..1b8c5ba6ec 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json index 7fbf18cfd4..c7655e5a17 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi Q2C.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json index 5d08b003d6..ee191e0154 100644 --- a/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json +++ b/resources/profiles/Qidi/process/0.30mm Extra Draft @Qidi XPlus4.json @@ -6,7 +6,7 @@ "setting_id": "GP004", "instantiation": "true", "adaptive_layer_height": "1", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "reduce_crossing_wall": "0", "layer_height": "0.3", "max_travel_detour_distance": "0", diff --git a/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2 0.6 nozzle.json index 14c772018b..2cfd393a6f 100644 --- a/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP010", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json index f9e444b169..0d407fbd77 100644 --- a/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.30mm Standard @Qidi Q2C 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP010", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json index 18f97db991..15f7a527b4 100644 --- a/resources/profiles/Qidi/process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.30mm Standard @Qidi XPlus4 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP010", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json index a8cb22ee91..c7c37d0eba 100644 --- a/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.30mm Standard @X-Max 4 0.6 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["30"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.62", diff --git a/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json index 7f014a50e8..1d47f304cd 100644 --- a/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.32mm Balanced Strength @X-Max 4 0.8 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["50"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.82", diff --git a/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2 0.8 nozzle.json index f19dbcbd16..ba5517a7d0 100644 --- a/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP033", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json index c70c02bf9d..ab04a2d2c3 100644 --- a/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.32mm Standard @Qidi Q2C 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP033", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json index e31a97e07a..29730bf03a 100644 --- a/resources/profiles/Qidi/process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.32mm Standard @Qidi XPlus4 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP033", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2 0.6 nozzle.json b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2 0.6 nozzle.json index b1dd3f5e7a..b6ea10d3bd 100644 --- a/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP030", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json index 729e005e7d..1701a10ab8 100644 --- a/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.36mm Standard @Qidi Q2C 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP030", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json index 8fbe3ac0ee..0c7c54cf65 100644 --- a/resources/profiles/Qidi/process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.36mm Standard @Qidi XPlus4 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP030", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2 0.8 nozzle.json index 5b878b1135..95d6352a42 100644 --- a/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP009", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json index f416bcda98..720c5f1c03 100644 --- a/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.40mm Standard @Qidi Q2C 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP009", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json index 8464a0c095..8fd66091a5 100644 --- a/resources/profiles/Qidi/process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.40mm Standard @Qidi XPlus4 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP009", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json index 9c9af356c5..6270e74e3b 100644 --- a/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.40mm Standard @X-Max 4 0.8 nozzle.json @@ -9,7 +9,7 @@ "bridge_speed": ["30"], "default_acceleration": ["10000"], "elefant_foot_compensation": "0.15", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "gap_infill_speed": ["50"], "initial_layer_infill_speed": ["55"], "initial_layer_line_width": "0.82", diff --git a/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2 0.6 nozzle.json b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2 0.6 nozzle.json index 52e9b76f42..fa2e6f3321 100644 --- a/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP031", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json index 69f14e90bd..f9c2a17cb1 100644 --- a/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.42mm Standard @Qidi Q2C 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP031", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json b/resources/profiles/Qidi/process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json index 24c05f6a40..426092a9a5 100644 --- a/resources/profiles/Qidi/process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json +++ b/resources/profiles/Qidi/process/0.42mm Standard @Qidi XPlus4 0.6 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP031", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.6 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2 0.8 nozzle.json b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2 0.8 nozzle.json index 149ae2a287..589516f05c 100644 --- a/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP034", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json index 73ee492d6c..5eebf2f97a 100644 --- a/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.48mm Standard @Qidi Q2C 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP034", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json index abdb0ff7b3..a3e4dbe450 100644 --- a/resources/profiles/Qidi/process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.48mm Standard @Qidi XPlus4 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP034", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2 0.8 nozzle.json b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2 0.8 nozzle.json index da8d2233a5..84017f1c8f 100644 --- a/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP035", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json index 6506b8b33c..8aeb38ddf5 100644 --- a/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.56mm Standard @Qidi Q2C 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP035", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi Q2C 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json b/resources/profiles/Qidi/process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json index d8370a3beb..0de2493058 100644 --- a/resources/profiles/Qidi/process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json +++ b/resources/profiles/Qidi/process/0.56mm Standard @Qidi XPlus4 0.8 nozzle.json @@ -5,7 +5,7 @@ "from": "system", "setting_id": "GP035", "instantiation": "true", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "compatible_printers": [ "Qidi X-Plus 4 0.8 nozzle" ] diff --git a/resources/profiles/Qidi/process/fdm_process_n_common.json b/resources/profiles/Qidi/process/fdm_process_n_common.json index 64db71f946..ee9bdbcaaa 100644 --- a/resources/profiles/Qidi/process/fdm_process_n_common.json +++ b/resources/profiles/Qidi/process/fdm_process_n_common.json @@ -24,7 +24,7 @@ "draft_shield": "disabled", "elefant_foot_compensation": "0", "embedding_wall_into_infill": "0", - "enable_arc_fitting": "1", + "enable_arc_fitting": "0", "enable_height_slowdown": ["0"], "enable_overhang_speed": ["1"], "enable_prime_tower": "1", From 1528c2cf3b01b9ae2aad7c1398886198b21bf8ff Mon Sep 17 00:00:00 2001 From: RF47 <162915171+RF47@users.noreply.github.com> Date: Fri, 13 Mar 2026 22:42:40 -0300 Subject: [PATCH 17/24] Skip top surfaces with non-positive density Add a guard that skips creating fill params for top surfaces when the configured density is less than or equal to zero. This avoids generating surface fills for zero/negative densities and prevents unnecessary processing or potential errors when top surface density is disabled. --- src/libslic3r/Fill/Fill.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp index 500eb944ac..9d9962dbc8 100644 --- a/src/libslic3r/Fill/Fill.cpp +++ b/src/libslic3r/Fill/Fill.cpp @@ -882,6 +882,7 @@ std::vector group_fills(const Layer &layer, LockRegionParam &lock_p if (surface.is_top()) { params.pattern = region_config.top_surface_pattern.value; params.density = float(region_config.top_surface_density); + if (params.density <= 0.0f) continue; } else { // Surface is bottom params.pattern = region_config.bottom_surface_pattern.value; params.density = float(region_config.bottom_surface_density); From 478e8bda16c34609cb43692b70334f06122edcac Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Sat, 14 Mar 2026 23:30:37 +0800 Subject: [PATCH 18/24] Fix non-bbl printer filament grouping by mapping all filaments/tools to group 0 (#12449, #12766) --- src/libslic3r/GCode/ToolOrdering.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/libslic3r/GCode/ToolOrdering.cpp b/src/libslic3r/GCode/ToolOrdering.cpp index 08e004bc30..b75195ae67 100644 --- a/src/libslic3r/GCode/ToolOrdering.cpp +++ b/src/libslic3r/GCode/ToolOrdering.cpp @@ -1321,19 +1321,18 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first return false; }; - if (m_print->is_BBL_printer() || number_of_extruders == 1){ + auto maps_without_group = filament_maps; + for (auto& item : maps_without_group) + item = 0; + reorder_filaments_for_minimum_flush_volume( filament_lists, - filament_maps, + m_print->is_BBL_printer() ? filament_maps : maps_without_group, // non-bbl printers do not support filament group yet layer_filaments, nozzle_flush_mtx, get_custom_seq, &filament_sequences ); - } else { - // For non-bbl multi-extruder printers we don't support filament group yet, so we keep the layer sequence because we don't flush based on order - filament_sequences = layer_filaments; - } auto curr_flush_info = calc_filament_change_info_by_toolorder(print_config, filament_maps, nozzle_flush_mtx, filament_sequences); if (nozzle_nums <= 1) @@ -1349,9 +1348,6 @@ void ToolOrdering::reorder_extruders_for_minimum_flush_volume(bool reorder_first // always calculate the info by one extruder { std::vector>filament_sequences_one_extruder; - auto maps_without_group = filament_maps; - for (auto& item : maps_without_group) - item = 0; reorder_filaments_for_minimum_flush_volume( filament_lists, maps_without_group, From 43285a493cf019691de044ecd2e622ebfc6bf2e9 Mon Sep 17 00:00:00 2001 From: RF47 <162915171+RF47@users.noreply.github.com> Date: Sat, 14 Mar 2026 22:16:08 -0300 Subject: [PATCH 19/24] Flow ratio instead flow rate calib --- src/slic3r/GUI/MainFrame.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 80b801a4c0..96fac6ad16 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3215,20 +3215,20 @@ void MainFrame::init_menubar_as_editor() // Flow rate (with submenu) auto flowrate_menu = new wxMenu(); append_menu_item( - flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow rate test - Pass 1"), + flowrate_menu, wxID_ANY, _L("Pass 1"), _L("Flow ratio test - Pass 1"), [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 1); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 2"), _L("Flow rate test - Pass 2"), + append_menu_item(flowrate_menu, wxID_ANY, _L("Pass 2"), _L("Flow ratio test - Pass 2"), [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(false, 2); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); flowrate_menu->AppendSeparator(); - append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (Recommended)"), _L("Orca YOLO flowrate calibration, 0.01 step"), + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (Recommended)"), _L("Orca YOLO flowratio calibration, 0.01 step"), [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 1); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (perfectionist version)"), _L("Orca YOLO flowrate calibration, 0.005 step"), + append_menu_item(flowrate_menu, wxID_ANY, _L("YOLO (perfectionist version)"), _L("Orca YOLO flowratio calibration, 0.005 step"), [this](wxCommandEvent&) { if (m_plater) m_plater->calib_flowrate(true, 2); }, "", nullptr, [this]() {return m_plater->is_view3D_shown();; }, this); - m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow rate")); + m_topbar->GetCalibMenu()->AppendSubMenu(flowrate_menu, _L("Flow ratio")); // Retraction test append_menu_item(m_topbar->GetCalibMenu(), wxID_ANY, _L("Retraction test"), _L("Retraction test"), From 189bcafee04b34d6f6612e08923cd4253c365feb Mon Sep 17 00:00:00 2001 From: Branden Cash <203336+ammmze@users.noreply.github.com> Date: Fri, 13 Mar 2026 21:55:05 -0700 Subject: [PATCH 20/24] feat: swap the mmu detection to prefer the more generic moonraker database Happy Hare now writes mmu lane data to the moonraker db similar to AFC, so we can normalize to the one implementation. For now, i've just re-ordered it so that the moonraker db is checked first. I want this because I've actually updated the happy hare data to include more data than we had access to via the "mmu" object. For happy hare we now have access to vendor name, which we can eventually use to further fine tune the auto-matched filament preset. --- src/slic3r/Utils/MoonrakerPrinterAgent.cpp | 38 ++++++++++++---------- src/slic3r/Utils/MoonrakerPrinterAgent.hpp | 2 +- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp index a46e7be8f1..f1d892134b 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.cpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.cpp @@ -571,7 +571,18 @@ bool MoonrakerPrinterAgent::fetch_filament_info(std::string dev_id) std::vector trays; int max_lane_index = 0; - // Try Happy Hare first (more widely adopted, supports more filament changers) + // Try Moonraker filament data (more generic, supports any filament changer + // software that reports lane data to Moonraker like AFC and recent Happy + // Hare as of Feb 15, 2026) + if (fetch_moonraker_filament_data(trays, max_lane_index)) { + BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_filament_info: Detected Moonraker filament system with " + << (max_lane_index + 1) << " lanes"; + int ams_count = (max_lane_index + 4) / 4; + build_ams_payload(ams_count, max_lane_index, trays); + return true; + } + + // Attempt Happy Hare first (more widely adopted, supports more filament changers) if (fetch_hh_filament_info(trays, max_lane_index)) { BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_filament_info: Detected Happy Hare MMU with " << (max_lane_index + 1) << " gates"; @@ -580,17 +591,8 @@ bool MoonrakerPrinterAgent::fetch_filament_info(std::string dev_id) return true; } - // Fallback to AFC - if (fetch_afc_filament_info(trays, max_lane_index)) { - BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_filament_info: Detected AFC with " - << (max_lane_index + 1) << " lanes"; - int ams_count = (max_lane_index + 4) / 4; - build_ams_payload(ams_count, max_lane_index, trays); - return true; - } - // No MMU detected - this is normal for printers without MMU, not an error - BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_filament_info: No MMU system detected (neither HH nor AFC)"; + BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_filament_info: No MMU system detected (neither HH nor Moonraker)"; return false; } @@ -721,10 +723,10 @@ std::string MoonrakerPrinterAgent::normalize_color_value(const std::string& colo return normalized; } -// Fetch filament info from Armored Turtle AFC -bool MoonrakerPrinterAgent::fetch_afc_filament_info(std::vector& trays, int& max_lane_index) +// Fetch filament info from moonraker database +bool MoonrakerPrinterAgent::fetch_moonraker_filament_data(std::vector& trays, int& max_lane_index) { - // Fetch AFC lane data from Moonraker database + // Fetch lane data from Moonraker database std::string url = join_url(device_info.base_url, "/server/database/item?namespace=lane_data"); std::string response_body; @@ -754,19 +756,19 @@ bool MoonrakerPrinterAgent::fetch_afc_filament_info(std::vector& tr .perform_sync(); if (!success) { - BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_afc_filament_info: Failed to fetch lane data: " << http_error; + BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_moonraker_filament_data: Failed to fetch lane data: " << http_error; return false; } auto json = nlohmann::json::parse(response_body, nullptr, false, true); if (json.is_discarded()) { - BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_afc_filament_info: Invalid JSON response"; + BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_moonraker_filament_data: Invalid JSON response"; return false; } // Expected structure: { "result": { "namespace": "lane_data", "value": { "lane1": {...}, ... } } } if (!json.contains("result") || !json["result"].contains("value") || !json["result"]["value"].is_object()) { - BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_afc_filament_info: Unexpected JSON structure or no lane_data found"; + BOOST_LOG_TRIVIAL(warning) << "MoonrakerPrinterAgent::fetch_moonraker_filament_data: Unexpected JSON structure or no lane_data found"; return false; } @@ -812,7 +814,7 @@ bool MoonrakerPrinterAgent::fetch_afc_filament_info(std::vector& tr } if (trays.empty()) { - BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_afc_filament_info: No AFC lanes found"; + BOOST_LOG_TRIVIAL(info) << "MoonrakerPrinterAgent::fetch_moonraker_filament_data: No lanes found"; return false; } diff --git a/src/slic3r/Utils/MoonrakerPrinterAgent.hpp b/src/slic3r/Utils/MoonrakerPrinterAgent.hpp index 525d5fed86..a37a6c3fd6 100644 --- a/src/slic3r/Utils/MoonrakerPrinterAgent.hpp +++ b/src/slic3r/Utils/MoonrakerPrinterAgent.hpp @@ -162,7 +162,7 @@ private: // System-specific filament fetch methods bool fetch_hh_filament_info(std::vector& trays, int& max_lane_index); - bool fetch_afc_filament_info(std::vector& trays, int& max_lane_index); + bool fetch_moonraker_filament_data(std::vector& trays, int& max_lane_index); // JSON helper methods static std::string safe_json_string(const nlohmann::json& obj, const char* key); From 0cc4b442e3d36e18f0ef45460547ac56ed4f8e76 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 12 Mar 2026 21:37:18 +0800 Subject: [PATCH 21/24] Fix Flatpak missing locale support (#12714) Add the localization/ directory to the Flatpak source list so run_gettext.sh can compile .po files into .mo translations. Replace LC_ALL=C.UTF-8 with LC_NUMERIC=C in the entrypoint script to preserve the user's language settings while still preventing decimal-separator parsing issues. --- scripts/flatpak/entrypoint | 4 +++- scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/scripts/flatpak/entrypoint b/scripts/flatpak/entrypoint index 38fd86f451..f8e108e85f 100644 --- a/scripts/flatpak/entrypoint +++ b/scripts/flatpak/entrypoint @@ -4,6 +4,8 @@ grep -q org.freedesktop.Platform.GL.nvidia /.flatpak-info && export WEBKIT_DISABLE_DMABUF_RENDERER=1 # Work-around https://github.com/bambulab/BambuStudio/issues/3440 -export LC_ALL=C.UTF-8 +# Use LC_NUMERIC instead of LC_ALL to prevent decimal separator issues +# while preserving the user's language/locale for translations. +export LC_NUMERIC=C exec /app/bin/orca-slicer "$@" diff --git a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml index b161f99477..db9e46fc94 100644 --- a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml @@ -347,6 +347,9 @@ modules: - type: dir path: ../../src dest: src + - type: dir + path: ../../localization + dest: localization - type: file path: ../../CMakeLists.txt From 8168d0a4e088748dde3d843fd1aa77eed245f528 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 16 Mar 2026 00:18:39 +0800 Subject: [PATCH 22/24] fix crash when opening preference dialog --- .gitignore | 3 +- scripts/build_flatpak_with_docker.sh | 144 ++++++++++++++++++ scripts/flatpak/.gitignore | 1 + .../io.github.orcaslicer.OrcaSlicer.yml | 5 + src/slic3r/GUI/GUI_App.cpp | 132 ++++++++++------ src/slic3r/GUI/GUI_App.hpp | 3 +- src/slic3r/GUI/MainFrame.cpp | 11 +- src/slic3r/GUI/Preferences.cpp | 11 +- src/slic3r/GUI/Preferences.hpp | 3 + src/slic3r/GUI/Widgets/Label.cpp | 58 ++++--- 10 files changed, 284 insertions(+), 87 deletions(-) create mode 100755 scripts/build_flatpak_with_docker.sh diff --git a/.gitignore b/.gitignore index 4b186b4e14..8007f0a05c 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,5 @@ test.js /.cache/ .clangd internal_docs/ -*.flatpak \ No newline at end of file +*.flatpak +/flatpak-repo/ \ No newline at end of file diff --git a/scripts/build_flatpak_with_docker.sh b/scripts/build_flatpak_with_docker.sh new file mode 100755 index 0000000000..2ebf30a416 --- /dev/null +++ b/scripts/build_flatpak_with_docker.sh @@ -0,0 +1,144 @@ +#!/usr/bin/env bash +# +# Build OrcaSlicer Flatpak locally using Docker with the same container image +# as the CI (build_all.yml). +# +# Usage: +# ./scripts/build_flatpak_with_docker.sh [--arch ] [--no-debug-info] +# +# Requirements: +# - Docker (or Podman with docker compatibility) +# +# The resulting .flatpak bundle is placed in the project root. +# A persistent Docker volume "flatpak-builder-cache" is used to cache +# downloaded sources across builds. Remove it with: +# docker volume rm flatpak-builder-cache + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" + +# ---------- defaults ---------- +ARCH="$(uname -m)" +NO_DEBUG_INFO=false +NO_PULL=false +FORCE_CLEAN=true +CONTAINER_IMAGE="ghcr.io/flathub-infra/flatpak-github-actions:gnome-49" + +# ---------- parse args ---------- +while [[ $# -gt 0 ]]; do + case "$1" in + --arch) + ARCH="$2"; shift 2 ;; + --no-debug-info) + NO_DEBUG_INFO=true; shift ;; + --no-pull) + NO_PULL=true; shift ;; + --keep-build) + FORCE_CLEAN=false; shift ;; + --image) + CONTAINER_IMAGE="$2"; shift 2 ;; + -h|--help) + echo "Usage: $0 [--arch ] [--no-debug-info] [--no-pull] [--keep-build] [--image ]" + exit 0 ;; + *) + echo "Unknown option: $1" >&2; exit 1 ;; + esac +done + +# ---------- version & commit ---------- +cd "$PROJECT_ROOT" + +VER_PURE=$(grep 'set(SoftFever_VERSION' version.inc | cut -d '"' -f2) +if [ -z "$VER_PURE" ]; then + echo "Error: could not extract version from version.inc" >&2 + exit 1 +fi +VER="V${VER_PURE}" +GIT_COMMIT_HASH=$(git rev-parse HEAD) +BUNDLE_NAME="OrcaSlicer-Linux-flatpak_${VER}_${ARCH}.flatpak" + +echo "=== OrcaSlicer Flatpak Build ===" +echo " Version: ${VER} (${VER_PURE})" +echo " Commit: ${GIT_COMMIT_HASH}" +echo " Arch: ${ARCH}" +echo " Image: ${CONTAINER_IMAGE}" +echo " Bundle: ${BUNDLE_NAME}" +echo " Debug info: $([ "$NO_DEBUG_INFO" = true ] && echo "disabled" || echo "enabled")" +echo " ccache: enabled" +echo "" + +# ---------- prepare manifest ---------- +MANIFEST_SRC="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml" +MANIFEST_DOCKER="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.docker.yml" +cp "$MANIFEST_SRC" "$MANIFEST_DOCKER" + +# Ensure cleanup on exit (success or failure) +trap 'rm -f "$PROJECT_ROOT/$MANIFEST_DOCKER"' EXIT + +# Optionally strip debug info (matches CI behaviour for faster builds) +if [ "$NO_DEBUG_INFO" = true ]; then + sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' "$MANIFEST_DOCKER" +fi + +# Inject git commit hash (same sed as CI) +sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$GIT_COMMIT_HASH\"|}" "$MANIFEST_DOCKER" + +# ---------- run build in Docker ---------- +DOCKER="${DOCKER:-docker}" + +if [ "$NO_PULL" = false ]; then + echo "=== Pulling container image ===" + "$DOCKER" pull "$CONTAINER_IMAGE" +fi + +FORCE_CLEAN_FLAG="" +if [ "$FORCE_CLEAN" = true ]; then + FORCE_CLEAN_FLAG="--force-clean" +fi + +# Pass build parameters as env vars so the inner script doesn't need +# variable expansion from the outer shell (avoids quoting issues). +echo "=== Starting Flatpak build inside container ===" +"$DOCKER" run --rm --privileged \ + -v "$PROJECT_ROOT":/src:Z \ + -v flatpak-builder-cache:/src/.flatpak-builder \ + -w /src \ + -e "BUILD_ARCH=$ARCH" \ + -e "BUNDLE_NAME=$BUNDLE_NAME" \ + -e "FORCE_CLEAN_FLAG=$FORCE_CLEAN_FLAG" \ + "$CONTAINER_IMAGE" \ + bash -c ' + set -euo pipefail + + # Install required SDK extensions (not pre-installed in the container image) + flatpak install -y --noninteractive flathub \ + org.freedesktop.Sdk.Extension.llvm21//25.08 || true + + flatpak-builder $FORCE_CLEAN_FLAG \ + --ccache \ + --disable-rofiles-fuse \ + --arch="$BUILD_ARCH" \ + --repo=flatpak-repo \ + flatpak-build \ + scripts/flatpak/io.github.orcaslicer.OrcaSlicer.docker.yml + + flatpak build-bundle \ + --arch="$BUILD_ARCH" \ + flatpak-repo \ + "$BUNDLE_NAME" \ + io.github.orcaslicer.OrcaSlicer + + # Fix ownership so output files are not root-owned on the host + chown "$(stat -c %u:%g /src)" "$BUNDLE_NAME" flatpak-build flatpak-repo + + echo "=== Build complete ===" + ' + +echo "" +echo "=== Flatpak bundle ready ===" +echo " ${PROJECT_ROOT}/${BUNDLE_NAME}" +echo "" +echo "Install with:" +echo " flatpak install --user ${BUNDLE_NAME}" \ No newline at end of file diff --git a/scripts/flatpak/.gitignore b/scripts/flatpak/.gitignore index 49269ac6b0..3b01f15d01 100644 --- a/scripts/flatpak/.gitignore +++ b/scripts/flatpak/.gitignore @@ -1,2 +1,3 @@ builddir .flatpak-builder +*.docker.yml diff --git a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml index db9e46fc94..6a06e136c3 100644 --- a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml @@ -333,6 +333,11 @@ modules: - install -Dm644 LICENSE.txt /app/share/licenses/${FLATPAK_ID}/LICENSE.txt + - | # Install fonts into fontconfig-scanned directory so Pango finds them + # before initialization (avoids ensure_faces crash from AddPrivateFont) + install -Dm644 -t /app/share/fonts/OrcaSlicer/ resources/fonts/*.ttf + fc-cache -f /app/share/fonts/OrcaSlicer/ + sources: # OrcaSlicer source tree (specific dirs to avoid copying .git from worktree) - type: dir diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 157b168372..04334c73c5 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -6199,7 +6199,7 @@ static const wxLanguageInfo* linux_get_existing_locale_language(const wxLanguage if (! it->empty()) { const std::string &locale = *it; const wxLanguageInfo* lang = wxLocale::FindLanguageInfo(from_u8(locale)); - if (wxLocale::IsAvailable(lang->Language)) + if (lang != nullptr && wxLocale::IsAvailable(lang->Language)) return lang; } return language; @@ -6241,7 +6241,10 @@ bool GUI_App::select_language() names.Alloc(language_infos.size()); // Some valid language should be selected since the application start up. - const wxLanguage current_language = wxLanguage(m_wxLocale->GetLanguage()); + const wxString active_language_code = current_language_code(); + const wxLanguageInfo* active_language_info = wxLocale::FindLanguageInfo(active_language_code); + const wxLanguage current_language = active_language_info != nullptr ? wxLanguage(active_language_info->Language) : wxLanguage(m_wxLocale->GetLanguage()); + const wxString active_lang_prefix = active_language_code.BeforeFirst('_'); int init_selection = -1; int init_selection_alt = -1; int init_selection_default = -1; @@ -6249,9 +6252,9 @@ bool GUI_App::select_language() if (wxLanguage(language_infos[i]->Language) == current_language) // The dictionary matches the active language and country. init_selection = i; - else if ((language_infos[i]->CanonicalName.BeforeFirst('_') == m_wxLocale->GetCanonicalName().BeforeFirst('_')) || + else if ((language_infos[i]->CanonicalName.BeforeFirst('_') == active_lang_prefix) || // if the active language is Slovak, mark the Czech language as active. - (language_infos[i]->CanonicalName.BeforeFirst('_') == "cs" && m_wxLocale->GetCanonicalName().BeforeFirst('_') == "sk")) + (language_infos[i]->CanonicalName.BeforeFirst('_') == "cs" && active_lang_prefix == "sk")) // The dictionary matches the active language, it does not necessarily match the country. init_selection_alt = i; if (language_infos[i]->CanonicalName.BeforeFirst('_') == "en") @@ -6369,7 +6372,10 @@ bool GUI_App::load_language(wxString language, bool initial) language_info = wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_US); } - BOOST_LOG_TRIVIAL(trace) << boost::format("Switching wxLocales to %1%") % language_info->CanonicalName.ToUTF8().data(); + const wxLanguageInfo *translation_language_info = language_info; + const wxString requested_language_code = translation_language_info->CanonicalName; + const wxLanguageInfo *locale_language_info = translation_language_info; + BOOST_LOG_TRIVIAL(trace) << boost::format("Requested translation language %1%") % requested_language_code.ToUTF8().data(); // Select language for locales. This language may be different from the language of the dictionary. //if (language_info == m_language_info_best || language_info == m_language_info_system) { @@ -6382,8 +6388,8 @@ bool GUI_App::load_language(wxString language, bool initial) // language_info = m_language_info_system; // Alternate language code. - wxLanguage language_dict = wxLanguage(language_info->Language); - if (language_info->CanonicalName.BeforeFirst('_') == "sk") { + wxLanguage language_dict = wxLanguage(translation_language_info->Language); + if (translation_language_info->CanonicalName.BeforeFirst('_') == "sk") { // Slovaks understand Czech well. Give them the Czech translation. language_dict = wxLANGUAGE_CZECH; BOOST_LOG_TRIVIAL(info) << "Using Czech dictionaries for Slovak language"; @@ -6392,19 +6398,34 @@ bool GUI_App::load_language(wxString language, bool initial) #ifdef __linux__ // If we can't find this locale , try to use different one for the language // instead of just reporting that it is impossible to switch. - if (! wxLocale::IsAvailable(language_info->Language) && m_language_info_system) { - std::string original_lang = into_u8(language_info->CanonicalName); - language_info = linux_get_existing_locale_language(language_info, m_language_info_system); - BOOST_LOG_TRIVIAL(info) << boost::format("Can't switch language to %1% (missing locales). Using %2% instead.") - % original_lang % language_info->CanonicalName.ToUTF8().data(); + if (!wxLocale::IsAvailable(locale_language_info->Language) && m_language_info_system) { + std::string original_lang = into_u8(locale_language_info->CanonicalName); + locale_language_info = linux_get_existing_locale_language(locale_language_info, m_language_info_system); + if (locale_language_info != nullptr && locale_language_info != translation_language_info) { + BOOST_LOG_TRIVIAL(info) << boost::format("Can't use locale %1% directly (missing locales). Using locale %2% instead.") + % original_lang % locale_language_info->CanonicalName.ToUTF8().data(); + } + } + + if (locale_language_info == nullptr || !wxLocale::IsAvailable(locale_language_info->Language)) { + auto try_locale = [](const wxLanguageInfo* candidate) -> const wxLanguageInfo* { + return (candidate && wxLocale::IsAvailable(candidate->Language)) ? candidate : nullptr; + }; + const wxLanguageInfo* fallback_locale_info = + try_locale(m_wxLocale ? wxLocale::GetLanguageInfo(wxLanguage(m_wxLocale->GetLanguage())) : nullptr); + if (!fallback_locale_info) fallback_locale_info = try_locale(m_language_info_system); + if (!fallback_locale_info) fallback_locale_info = try_locale(m_language_info_best); + if (!fallback_locale_info) fallback_locale_info = try_locale(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_US)); + if (!fallback_locale_info) fallback_locale_info = try_locale(wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_UK)); + if (fallback_locale_info != nullptr) { + BOOST_LOG_TRIVIAL(info) << boost::format("Using fallback locale %1% while keeping translation dictionary %2%.") + % fallback_locale_info->CanonicalName.ToUTF8().data() % requested_language_code.ToUTF8().data(); + locale_language_info = fallback_locale_info; + } } #endif - if (! wxLocale::IsAvailable(language_info->Language)&&initial) { - language_info = wxLocale::GetLanguageInfo(wxLANGUAGE_ENGLISH_UK); - app_config->set("language", language_info->CanonicalName.ToUTF8().data()); - } - else if (initial) { + if (initial) { // bbs supported languages //TODO: use a global one with Preference //wxLanguage supported_languages[]{ @@ -6438,9 +6459,11 @@ bool GUI_App::load_language(wxString language, bool initial) //} } - if (! wxLocale::IsAvailable(language_info->Language)) { + BOOST_LOG_TRIVIAL(trace) << boost::format("Switching wxLocales to %1%") % locale_language_info->CanonicalName.ToUTF8().data(); + + if (!wxLocale::IsAvailable(locale_language_info->Language)) { // Loading the language dictionary failed. - wxString message = "Switching Orca Slicer to language " + language_info->CanonicalName + " failed."; + wxString message = "Switching Orca Slicer to language " + requested_language_code + " failed."; #if !defined(_WIN32) && !defined(__APPLE__) // likely some linux system message += "\nYou may need to reconfigure the missing locales, likely by running the \"locale-gen\" and \"dpkg-reconfigure locales\" commands.\n"; @@ -6458,12 +6481,13 @@ bool GUI_App::load_language(wxString language, bool initial) //FIXME wxWidgets cause havoc if the current locale is deleted. We just forget it causing memory leaks for now. m_wxLocale.release(); m_wxLocale = Slic3r::make_unique(); - m_wxLocale->Init(language_info->Language); + m_wxLocale->Init(locale_language_info->Language); // Override language at the active wxTranslations class (which is stored in the active m_wxLocale) // to load possibly different dictionary, for example, load Czech dictionary for Slovak language. wxTranslations::Get()->SetLanguage(language_dict); m_wxLocale->AddCatalog(SLIC3R_APP_KEY); - m_imgui->set_language(into_u8(language_info->CanonicalName)); + m_active_language_code = requested_language_code; + m_imgui->set_language(into_u8(requested_language_code)); //FIXME This is a temporary workaround, the correct solution is to switch to "C" locale during file import / export only. //wxSetlocale(LC_NUMERIC, "C"); @@ -6751,49 +6775,57 @@ void GUI_App::show_ip_address_enter_dialog_handler(wxCommandEvent& evt) void GUI_App::open_preferences(size_t open_on_tab, const std::string& highlight_option) { - bool app_layout_changed = false; + bool need_recreate_gui = false; + std::string pending_language; { // the dialog needs to be destroyed before the call to recreate_GUI() // or sometimes the application crashes into wxDialogBase() destructor // so we put it into an inner scope PreferencesDialog dlg(mainframe, open_on_tab, highlight_option); dlg.ShowModal(); - this->plater_->get_current_canvas3D()->force_set_focus(); - // BBS - //app_layout_changed = dlg.settings_layout_changed(); + need_recreate_gui = dlg.recreate_GUI(); + pending_language = dlg.pending_language(); + if (!need_recreate_gui) { + this->plater_->get_current_canvas3D()->force_set_focus(); #if ENABLE_GCODE_LINES_ID_IN_H_SLIDER - if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) + if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) #else - if (dlg.seq_top_layer_only_changed()) + if (dlg.seq_top_layer_only_changed()) #endif // ENABLE_GCODE_LINES_ID_IN_H_SLIDER - this->plater_->reload_print(); + this->plater_->reload_print(); #ifdef _WIN32 - if (is_editor()) { - if (app_config->get("associate_3mf") == "true") - associate_files(L"3mf"); - if (app_config->get("associate_stl") == "true") - associate_files(L"stl"); - if (app_config->get("associate_step") == "true") { - associate_files(L"step"); - associate_files(L"stp"); + if (is_editor()) { + if (app_config->get("associate_3mf") == "true") + associate_files(L"3mf"); + if (app_config->get("associate_stl") == "true") + associate_files(L"stl"); + if (app_config->get("associate_step") == "true") { + associate_files(L"step"); + associate_files(L"stp"); + } + associate_url(L"orcaslicer"); + } + else { + if (app_config->get("associate_gcode") == "true") + associate_files(L"gcode"); } - associate_url(L"orcaslicer"); - } - else { - if (app_config->get("associate_gcode") == "true") - associate_files(L"gcode"); - } #endif // _WIN32 + } } - // BBS - /* - if (app_layout_changed) { - // hide full main_sizer for mainFrame - mainframe->GetSizer()->Show(false); - mainframe->update_layout(); - mainframe->select_tab(size_t(0)); - }*/ + if (!pending_language.empty()) { + const std::string previous_language = app_config->get("language"); + app_config->set("language", pending_language); + if (!load_language(wxString::FromUTF8(pending_language), false)) { + app_config->set("language", previous_language); + if (this->plater_) + this->plater_->get_current_canvas3D()->force_set_focus(); + return; + } + } + + if (need_recreate_gui) + recreate_GUI(_L("Changing application language")); } bool GUI_App::has_unsaved_preset_changes() const diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp index ae51add264..f89f583873 100644 --- a/src/slic3r/GUI/GUI_App.hpp +++ b/src/slic3r/GUI/GUI_App.hpp @@ -273,6 +273,7 @@ private: const wxLanguageInfo *m_language_info_system = nullptr; // Best translation language, provided by Windows or OSX, owned by wxWidgets. const wxLanguageInfo *m_language_info_best = nullptr; + wxString m_active_language_code; OpenGLManager m_opengl_mgr; std::unique_ptr m_removable_drive_manager; @@ -563,7 +564,7 @@ public: void preset_deleted_from_cloud(std::string setting_id); wxString filter_string(wxString str); - wxString current_language_code() const { return m_wxLocale->GetCanonicalName(); } + wxString current_language_code() const { return m_active_language_code.empty() && m_wxLocale ? m_wxLocale->GetCanonicalName() : m_active_language_code; } // Translate the language code to a code, for which Prusa Research maintains translations. Defaults to "en_US". wxString current_language_code_safe() const; bool is_localized() const { return m_wxLocale->GetLocale() != "English"; } diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 80b801a4c0..047aa2cc62 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -3145,15 +3145,7 @@ void MainFrame::init_menubar_as_editor() append_menu_item( parent_menu, wxID_ANY, _L("Preferences") + "\t" + ctrl + ",", "", [this](wxCommandEvent &) { - PreferencesDialog dlg(this); - dlg.ShowModal(); - plater()->get_current_canvas3D()->force_set_focus(); -#if ENABLE_GCODE_LINES_ID_IN_H_SLIDER - if (dlg.seq_top_layer_only_changed() || dlg.seq_seq_top_gcode_indices_changed()) -#else - if (dlg.seq_top_layer_only_changed()) -#endif - plater()->reload_print(); + wxGetApp().open_preferences(); }, "", nullptr, []() { return true; }, this, 1); //parent_menu->Insert(1, preference_item); @@ -3174,7 +3166,6 @@ void MainFrame::init_menubar_as_editor() [this](wxCommandEvent &) { // Orca: Use GUI_App::open_preferences instead of direct call so windows associations are updated on exit wxGetApp().open_preferences(); - plater()->get_current_canvas3D()->force_set_focus(); }, "", nullptr, []() { return true; }, this); //m_topbar->AddDropDownMenuItem(preference_item); diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index e5afafad99..5c47e629c7 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -318,13 +318,10 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS m_current_language_selected = combobox->GetSelection(); if (m_current_language_selected >= 0 && m_current_language_selected < vlist.size()) { - app_config->set(param, vlist[m_current_language_selected]->CanonicalName.ToUTF8().data()); - - wxGetApp().load_language(vlist[m_current_language_selected]->CanonicalName, false); - Close(); - // Reparent(nullptr); - GetParent()->RemoveChild(this); - wxGetApp().recreate_GUI(_L("Changing application language")); + m_pending_language = vlist[m_current_language_selected]->CanonicalName.ToUTF8().data(); + m_recreate_GUI = true; + EndModal(wxID_OK); + return; } } diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp index 886f5f7cec..a097dccee2 100644 --- a/src/slic3r/GUI/Preferences.hpp +++ b/src/slic3r/GUI/Preferences.hpp @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -43,10 +44,12 @@ protected: // bool m_settings_layout_changed {false}; bool m_seq_top_layer_only_changed{false}; bool m_recreate_GUI{false}; + std::string m_pending_language; public: bool seq_top_layer_only_changed() const { return m_seq_top_layer_only_changed; } bool recreate_GUI() const { return m_recreate_GUI; } + const std::string& pending_language() const { return m_pending_language; } void on_dpi_changed(const wxRect &suggested_rect) override; public: diff --git a/src/slic3r/GUI/Widgets/Label.cpp b/src/slic3r/GUI/Widgets/Label.cpp index 35a35c80d6..60a2a90a9e 100644 --- a/src/slic3r/GUI/Widgets/Label.cpp +++ b/src/slic3r/GUI/Widgets/Label.cpp @@ -5,6 +5,9 @@ #include #include #include +#ifdef __linux__ +#include +#endif wxFont Label::sysFont(int size, bool bold) @@ -58,27 +61,46 @@ wxFont Label::Body_10; wxFont Label::Body_9; wxFont Label::Body_8; +// Check if a font family is already available via fontconfig. +#ifdef __linux__ +static bool fc_font_available(const char *family_name) +{ + FcPattern *pat = FcPatternCreate(); + if (!pat) + return false; + FcPatternAddString(pat, FC_FAMILY, (const FcChar8 *) family_name); + FcResult res; + FcPattern *match = FcFontMatch(nullptr, pat, &res); + bool available = false; + if (match) { + FcChar8 *matched_family = nullptr; + if (FcPatternGetString(match, FC_FAMILY, 0, &matched_family) == FcResultMatch && matched_family) + available = (strcasecmp((const char *) matched_family, family_name) == 0); + FcPatternDestroy(match); + } + FcPatternDestroy(pat); + return available; +} +#endif + void Label::initSysFont() { #if defined(__linux__) || defined(_WIN32) - const std::string &resource_path = Slic3r::resources_dir(); - wxString font_path = wxString::FromUTF8(resource_path + "/fonts/HarmonyOS_Sans_SC_Bold.ttf"); - bool result = wxFont::AddPrivateFont(font_path); - // BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Bold returns %1%")%result; - // printf("add font of HarmonyOS_Sans_SC_Bold returns %d\n", result); - font_path = wxString::FromUTF8(resource_path + "/fonts/HarmonyOS_Sans_SC_Regular.ttf"); - result = wxFont::AddPrivateFont(font_path); - // BOOST_LOG_TRIVIAL(info) << boost::format("add font of HarmonyOS_Sans_SC_Regular returns %1%")%result; - // printf("add font of HarmonyOS_Sans_SC_Regular returns %d\n", result); - // Adding NanumGothic Regular and Bold - font_path = wxString::FromUTF8(resource_path + "/fonts/NanumGothic-Regular.ttf"); - result = wxFont::AddPrivateFont(font_path); - // BOOST_LOG_TRIVIAL(info) << boost::format("add font of NanumGothic-Regular returns %1%")%result; - // printf("add font of NanumGothic-Regular returns %d\n", result); - font_path = wxString::FromUTF8(resource_path + "/fonts/NanumGothic-Bold.ttf"); - result = wxFont::AddPrivateFont(font_path); - // BOOST_LOG_TRIVIAL(info) << boost::format("add font of NanumGothic-Bold returns %1%")%result; - // printf("add font of NanumGothic-Bold returns %d\n", result); + // On Linux, skip AddPrivateFont for fonts already known to fontconfig + // (e.g. installed system-wide in a Flatpak). Calling AddPrivateFont + // triggers a Pango crash in ensure_faces() on Pango >= 1.48 (GNOME 49+), + // because FcConfigAppFontAddFile invalidates Pango's cached font map. + bool load_fonts = true; +#ifdef __linux__ + load_fonts = !fc_font_available("HarmonyOS Sans SC") || !fc_font_available("NanumGothic"); +#endif + if (load_fonts) { + const std::string &resource_path = Slic3r::resources_dir(); + wxFont::AddPrivateFont(wxString::FromUTF8(resource_path + "/fonts/HarmonyOS_Sans_SC_Bold.ttf")); + wxFont::AddPrivateFont(wxString::FromUTF8(resource_path + "/fonts/HarmonyOS_Sans_SC_Regular.ttf")); + wxFont::AddPrivateFont(wxString::FromUTF8(resource_path + "/fonts/NanumGothic-Regular.ttf")); + wxFont::AddPrivateFont(wxString::FromUTF8(resource_path + "/fonts/NanumGothic-Bold.ttf")); + } #endif Head_48 = Label::sysFont(48, true); Head_32 = Label::sysFont(32, true); From bfeccc7a55cef4e7c823e1388f7d5e510052136b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 16 Mar 2026 14:36:35 +0800 Subject: [PATCH 23/24] small tweak of the script to support Mac --- scripts/build_flatpak_with_docker.sh | 146 +++++++++++++----- .../io.github.orcaslicer.OrcaSlicer.yml | 7 +- 2 files changed, 113 insertions(+), 40 deletions(-) diff --git a/scripts/build_flatpak_with_docker.sh b/scripts/build_flatpak_with_docker.sh index 2ebf30a416..8e490f8f8b 100755 --- a/scripts/build_flatpak_with_docker.sh +++ b/scripts/build_flatpak_with_docker.sh @@ -10,9 +10,6 @@ # - Docker (or Podman with docker compatibility) # # The resulting .flatpak bundle is placed in the project root. -# A persistent Docker volume "flatpak-builder-cache" is used to cache -# downloaded sources across builds. Remove it with: -# docker volume rm flatpak-builder-cache set -euo pipefail @@ -24,8 +21,23 @@ ARCH="$(uname -m)" NO_DEBUG_INFO=false NO_PULL=false FORCE_CLEAN=true +PRIVILEGED=false CONTAINER_IMAGE="ghcr.io/flathub-infra/flatpak-github-actions:gnome-49" +normalize_arch() { + case "$1" in + arm64|aarch64) + echo "aarch64" + ;; + x86_64|amd64) + echo "x86_64" + ;; + *) + echo "$1" + ;; + esac +} + # ---------- parse args ---------- while [[ $# -gt 0 ]]; do case "$1" in @@ -37,16 +49,29 @@ while [[ $# -gt 0 ]]; do NO_PULL=true; shift ;; --keep-build) FORCE_CLEAN=false; shift ;; + --privileged) + PRIVILEGED=true; shift ;; --image) CONTAINER_IMAGE="$2"; shift 2 ;; -h|--help) - echo "Usage: $0 [--arch ] [--no-debug-info] [--no-pull] [--keep-build] [--image ]" + echo "Usage: $0 [--arch ] [--no-debug-info] [--no-pull] [--keep-build] [--privileged] [--image ]" exit 0 ;; *) echo "Unknown option: $1" >&2; exit 1 ;; esac done +ARCH="$(normalize_arch "$ARCH")" + +case "$ARCH" in + x86_64|aarch64) + ;; + *) + echo "Unsupported architecture: $ARCH. Supported: x86_64, aarch64" >&2 + exit 1 + ;; +esac + # ---------- version & commit ---------- cd "$PROJECT_ROOT" @@ -66,24 +91,34 @@ echo " Arch: ${ARCH}" echo " Image: ${CONTAINER_IMAGE}" echo " Bundle: ${BUNDLE_NAME}" echo " Debug info: $([ "$NO_DEBUG_INFO" = true ] && echo "disabled" || echo "enabled")" +echo " Privileged: $([ "$PRIVILEGED" = true ] && echo "enabled" || echo "disabled")" echo " ccache: enabled" echo "" # ---------- prepare manifest ---------- MANIFEST_SRC="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml" MANIFEST_DOCKER="scripts/flatpak/io.github.orcaslicer.OrcaSlicer.docker.yml" -cp "$MANIFEST_SRC" "$MANIFEST_DOCKER" - # Ensure cleanup on exit (success or failure) trap 'rm -f "$PROJECT_ROOT/$MANIFEST_DOCKER"' EXIT -# Optionally strip debug info (matches CI behaviour for faster builds) -if [ "$NO_DEBUG_INFO" = true ]; then - sed -i '/^build-options:/a\ no-debuginfo: true\n strip: true' "$MANIFEST_DOCKER" -fi - -# Inject git commit hash (same sed as CI) -sed -i "/name: OrcaSlicer/{n;s|buildsystem: simple|buildsystem: simple\n build-options:\n env:\n git_commit_hash: \"$GIT_COMMIT_HASH\"|}" "$MANIFEST_DOCKER" +# Build Docker-specific manifest with customizations (piped to avoid sed -i portability) +{ + if [ "$NO_DEBUG_INFO" = true ]; then + sed '/^build-options:/a\ + no-debuginfo: true\ + strip: true +' + else + cat + fi +} < "$MANIFEST_SRC" | \ +sed "/name: OrcaSlicer/{ + n + s|^\([[:space:]]*\)buildsystem: simple|\1buildsystem: simple\\ +\1build-options:\\ +\1 env:\\ +\1 git_commit_hash: \"$GIT_COMMIT_HASH\"| +}" > "$MANIFEST_DOCKER" # ---------- run build in Docker ---------- DOCKER="${DOCKER:-docker}" @@ -98,43 +133,82 @@ if [ "$FORCE_CLEAN" = true ]; then FORCE_CLEAN_FLAG="--force-clean" fi +DOCKER_RUN_ARGS=(run --rm) +if [ "$PRIVILEGED" = true ]; then + DOCKER_RUN_ARGS+=(--privileged) +fi + # Pass build parameters as env vars so the inner script doesn't need # variable expansion from the outer shell (avoids quoting issues). echo "=== Starting Flatpak build inside container ===" -"$DOCKER" run --rm --privileged \ +"$DOCKER" "${DOCKER_RUN_ARGS[@]}" \ -v "$PROJECT_ROOT":/src:Z \ - -v flatpak-builder-cache:/src/.flatpak-builder \ -w /src \ -e "BUILD_ARCH=$ARCH" \ -e "BUNDLE_NAME=$BUNDLE_NAME" \ -e "FORCE_CLEAN_FLAG=$FORCE_CLEAN_FLAG" \ "$CONTAINER_IMAGE" \ - bash -c ' - set -euo pipefail + bash -s <<'EOF' +set -euo pipefail - # Install required SDK extensions (not pre-installed in the container image) - flatpak install -y --noninteractive flathub \ - org.freedesktop.Sdk.Extension.llvm21//25.08 || true +format_duration() { + local total_seconds="$1" + local hours=$((total_seconds / 3600)) + local minutes=$(((total_seconds % 3600) / 60)) + local seconds=$((total_seconds % 60)) - flatpak-builder $FORCE_CLEAN_FLAG \ - --ccache \ - --disable-rofiles-fuse \ - --arch="$BUILD_ARCH" \ - --repo=flatpak-repo \ - flatpak-build \ - scripts/flatpak/io.github.orcaslicer.OrcaSlicer.docker.yml + printf "%02d:%02d:%02d" "$hours" "$minutes" "$seconds" +} - flatpak build-bundle \ - --arch="$BUILD_ARCH" \ - flatpak-repo \ - "$BUNDLE_NAME" \ - io.github.orcaslicer.OrcaSlicer +overall_start=$(date +%s) +install_start=$overall_start - # Fix ownership so output files are not root-owned on the host - chown "$(stat -c %u:%g /src)" "$BUNDLE_NAME" flatpak-build flatpak-repo +# Install required SDK extensions (not pre-installed in the container image) +flatpak install -y --noninteractive --arch="$BUILD_ARCH" flathub \ + org.gnome.Platform//49 \ + org.gnome.Sdk//49 \ + org.freedesktop.Sdk.Extension.llvm21//25.08 || true - echo "=== Build complete ===" - ' +install_end=$(date +%s) +install_duration=$((install_end - install_start)) + +builder_start=$(date +%s) +flatpak-builder $FORCE_CLEAN_FLAG \ + --verbose \ + --ccache \ + --disable-rofiles-fuse \ + --state-dir=.flatpak-builder \ + --arch="$BUILD_ARCH" \ + --repo=flatpak-repo \ + flatpak-build \ + scripts/flatpak/io.github.orcaslicer.OrcaSlicer.docker.yml +builder_end=$(date +%s) +builder_duration=$((builder_end - builder_start)) + +bundle_start=$(date +%s) +flatpak build-bundle \ + --arch="$BUILD_ARCH" \ + flatpak-repo \ + "$BUNDLE_NAME" \ + io.github.orcaslicer.OrcaSlicer +bundle_end=$(date +%s) +bundle_duration=$((bundle_end - bundle_start)) + +# Fix ownership so output files are not root-owned on the host +owner="$(stat -c %u:%g /src)" +chown -R "$owner" .flatpak-builder flatpak-build flatpak-repo "$BUNDLE_NAME" 2>/dev/null || true + +overall_end=$(date +%s) +overall_duration=$((overall_end - overall_start)) + +echo "" +echo "=== Build complete ===" +echo "=== Build Stats ===" +echo " Runtime install: $(format_duration "$install_duration")" +echo " flatpak-builder: $(format_duration "$builder_duration")" +echo " Bundle export: $(format_duration "$bundle_duration")" +echo " Overall: $(format_duration "$overall_duration")" +EOF echo "" echo "=== Flatpak bundle ready ===" diff --git a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml index 6a06e136c3..814636e142 100644 --- a/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml +++ b/scripts/flatpak/io.github.orcaslicer.OrcaSlicer.yml @@ -117,10 +117,9 @@ modules: - -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld - -DCMAKE_MODULE_LINKER_FLAGS=-fuse-ld=lld sources: - - type: git - url: https://github.com/SoftFever/Orca-deps-wxWidgets - tag: orca-3.1.5-1 - commit: 139e4f2a62a9d1c40bdcf36523d94a517b14ca79 + - type: archive + url: https://github.com/SoftFever/Orca-deps-wxWidgets/archive/refs/tags/orca-3.1.5-1.tar.gz + sha256: 1dc9d3865d899cb71c27a7e549aa5491e832ef6e81a7b6653ccb11f9c37fa99d # OrcaSlicer C++ dependencies (built offline with pre-downloaded archives) - name: orca_deps From ccbaca00335f87916b096ade03ccf3c829745bc8 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Mon, 16 Mar 2026 15:52:22 +0800 Subject: [PATCH 24/24] Fix PR comment posting for fork contributors by splitting into two workflows The check_profiles workflow used gh pr comment directly, which fails for fork PRs due to read-only GITHUB_TOKEN. Split into artifact upload + workflow_run pattern so comments post with proper write permissions. --- .github/workflows/check_profiles.yml | 25 ++++++----- .github/workflows/check_profiles_comment.yml | 46 ++++++++++++++++++++ 2 files changed, 60 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/check_profiles_comment.yml diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 9da59f43a7..68b27ba291 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -15,12 +15,11 @@ on: default: 'warning' permissions: - pull-requests: write contents: read jobs: - check_translation: + check_profiles: name: Check profiles runs-on: ubuntu-24.04 steps: @@ -62,11 +61,11 @@ jobs: ./OrcaSlicer_profile_validator -p ${{ github.workspace }}/resources/profiles -l 2 2>&1 | tee ${{ runner.temp }}/validate_custom.log exit ${PIPESTATUS[0]} - - name: Post error comment on PR + - name: Prepare comment artifact if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} - env: - GH_TOKEN: ${{ github.token }} run: | + mkdir -p ${{ runner.temp }}/profile-check-results + { echo "## :x: Profile Validation Errors" echo "" @@ -100,16 +99,20 @@ jobs: echo "---" echo "*Please fix the above errors and push a new commit.*" - } > ${{ runner.temp }}/pr_comment.md + } > ${{ runner.temp }}/profile-check-results/pr_comment.md - gh pr comment ${{ github.event.pull_request.number }} --body-file ${{ runner.temp }}/pr_comment.md + echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt + + - name: Upload comment artifact + if: ${{ always() && github.event_name == 'pull_request' && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} + uses: actions/upload-artifact@v4 + with: + name: profile-check-results + path: ${{ runner.temp }}/profile-check-results/ + retention-days: 1 - name: Fail if any check failed if: ${{ always() && (steps.extra_json_check.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | echo "One or more profile checks failed. See above for details." exit 1 - - - - diff --git a/.github/workflows/check_profiles_comment.yml b/.github/workflows/check_profiles_comment.yml new file mode 100644 index 0000000000..514eeed384 --- /dev/null +++ b/.github/workflows/check_profiles_comment.yml @@ -0,0 +1,46 @@ +name: Post profile check comment + +# NOTE: The workflow name in the 'workflows' filter below must match the 'name' +# field in check_profiles.yml exactly. If that name changes, update it here too. +on: + workflow_run: + workflows: ["Check profiles"] + types: + - completed + +permissions: + pull-requests: write + +jobs: + post_comment: + name: Post PR comment + runs-on: ubuntu-24.04 + if: ${{ github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure' }} + steps: + - name: Download artifact + id: download + uses: actions/download-artifact@v4 + continue-on-error: true + with: + name: profile-check-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ github.token }} + + - name: Post comment on PR + if: ${{ steps.download.outcome == 'success' }} + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: | + if [ ! -f pr_number.txt ] || [ ! -f pr_comment.md ]; then + echo "No comment artifact found, skipping." + exit 0 + fi + + PR_NUMBER=$(cat pr_number.txt) + if ! [[ "$PR_NUMBER" =~ ^[0-9]+$ ]]; then + echo "Invalid PR number: $PR_NUMBER" + exit 1 + fi + + gh pr comment "$PR_NUMBER" --body-file pr_comment.md