ENH: support E3D nozzle flow type

Jira: [STUDIO-13934]
Change-Id: I3818c3881e8a926209f2bac321550f3c7a1a9f0d
(cherry picked from commit 5bb1c2e66ad5bddfcba6898d9bc330217e912e48)
This commit is contained in:
hemai
2025-08-08 15:29:45 +08:00
committed by Noisyfox
parent 9347bef7dd
commit bb43e312b3
3 changed files with 22 additions and 3 deletions

View File

@@ -62,6 +62,7 @@ static void s_parse_nozzle_type(const std::string& nozzle_type_str, DevNozzle& n
void DevNozzleSystemParser::ParseV1_0(const nlohmann::json& nozzletype_json,
const nlohmann::json& diameter_json,
const int& nozzle_flow_type,
DevNozzleSystem* system)
{
//Since both the old and new protocols push data.
@@ -98,6 +99,17 @@ void DevNozzleSystemParser::ParseV1_0(const nlohmann::json& nozzletype_json,
}
}
{
if (nozzle_flow_type != -1) {
// 0: BBL S_FLOW; 1:E3D H_FLOW (only P)
if (nozzle_flow_type == 1) {
nozzle.m_nozzle_flow = NozzleFlowType::H_FLOW;
} else {
nozzle.m_nozzle_flow = NozzleFlowType::S_FLOW;
}
}
}
system->m_nozzles[nozzle.m_nozzle_id] = nozzle;
}

View File

@@ -17,7 +17,7 @@ namespace Slic3r
NozzleType m_nozzle_type = NozzleType::ntUndefine;// 0-stainless_steel 1-hardened_steel 5-tungsten_carbide
float m_diameter = 0.4f;// 0.2mm 0.4mm 0.6mm 0.8mm
};
class DevNozzleSystem
{
friend class DevNozzleSystemParser;
@@ -44,7 +44,7 @@ namespace Slic3r
class DevNozzleSystemParser
{
public:
static void ParseV1_0(const nlohmann::json& nozzletype_json, const nlohmann::json& diameter_json, DevNozzleSystem* system);
static void ParseV1_0(const nlohmann::json& nozzletype_json, const nlohmann::json& diameter_json, const int& nozzle_flow_type, DevNozzleSystem* system);
static void ParseV2_0(const json& nozzle_json, DevNozzleSystem* system);
};
};

View File

@@ -3272,7 +3272,14 @@ int MachineObject::parse_json(std::string tunnel, std::string payload, bool key_
if (jj.contains("nozzle_diameter") && jj.contains("nozzle_type"))
{
DevNozzleSystemParser::ParseV1_0(jj["nozzle_type"], jj["nozzle_diameter"], m_nozzle_system);
int nozzle_flow_type = -1;
if(jj.contains("flag3")){
int flag3 = jj["flag3"].get<int>();
nozzle_flow_type = get_flag_bits(flag3, 10, 3);
}
DevNozzleSystemParser::ParseV1_0(jj["nozzle_type"], jj["nozzle_diameter"], nozzle_flow_type, m_nozzle_system);
}
}