feat(libslic3r): multi-nozzle slicing engine for H2C/A2L

Port BambuStudio's dual-nozzle slicing core: H2C-era config keys, filament-to-nozzle grouping with per-layer dynamic regrouping, filament/nozzle/hotend gcode placeholder vocabulary, multi-nozzle wipe tower pre-heat/pre-cool, the two-pass pre-cooling injector, and corexy farthest-point timelapse.
This commit is contained in:
SoftFever
2026-07-09 00:06:26 +08:00
parent 781ecdc2c1
commit 237ef41b06
36 changed files with 7622 additions and 708 deletions

View File

@@ -83,6 +83,8 @@ public:
NozzleVolumeType nozzle_volume_type;
BedType bed_type;
float nozzle_diameter;
int nozzle_pos_id{-1};
std::string nozzle_sn;
std::string filament_id;
std::string setting_id;
std::string name;
@@ -93,6 +95,8 @@ public:
this->extruder_id = other.extruder_id;
this->nozzle_volume_type = other.nozzle_volume_type;
this->nozzle_diameter = other.nozzle_diameter;
this->nozzle_pos_id = other.nozzle_pos_id;
this->nozzle_sn = other.nozzle_sn;
this->filament_id = other.filament_id;
this->setting_id = other.setting_id;
this->name = other.name;
@@ -123,7 +127,9 @@ public:
int ams_id = 0;
int slot_id = 0;
int cali_idx = -1;
int nozzle_pos_id = -1; //-1 means no nozzle pos
float nozzle_diameter;
std::string nozzle_sn;
std::string filament_id;
std::string setting_id;
std::string name;
@@ -140,7 +146,9 @@ struct PACalibIndexInfo
int ams_id = 0;
int slot_id = 0;
int cali_idx = -1; // -1 means default
int nozzle_pos_id = -1; //-1 means no nozzle pos
float nozzle_diameter;
std::string nozzle_sn;
std::string filament_id;
};
@@ -148,7 +156,9 @@ struct PACalibExtruderInfo
{
int extruder_id = 0;
NozzleVolumeType nozzle_volume_type;
int nozzle_pos_id = -1; //-1 means no nozzle pos
float nozzle_diameter;
std::string nozzle_sn;
std::string filament_id = "";
bool use_extruder_id{true};
bool use_nozzle_volume_type{true};