mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-06-21 11:23:37 +00:00
ENH: support extension tool; support check extension tool
JIRA: [STUDIO-14122] [STUDIO-14162] Change-Id: I147d335420fcc7c9a190f570863e38e138cdadcf (cherry picked from commit db83b9fb6c6399d917b27b74cc573d668737c705)
This commit is contained in:
@@ -13,6 +13,8 @@ list(APPEND SLIC3R_GUI_SOURCES
|
||||
GUI/DeviceCore/DevCtrl.h
|
||||
GUI/DeviceCore/DevCtrl.cpp
|
||||
GUI/DeviceCore/DevDefs.h
|
||||
GUI/DeviceCore/DevExtensionTool.h
|
||||
GUI/DeviceCore/DevExtensionTool.cpp
|
||||
GUI/DeviceCore/DevExtruderSystem.h
|
||||
GUI/DeviceCore/DevExtruderSystem.cpp
|
||||
GUI/DeviceCore/DevExtruderSystemCtrl.cpp
|
||||
|
||||
39
src/slic3r/GUI/DeviceCore/DevExtensionTool.cpp
Normal file
39
src/slic3r/GUI/DeviceCore/DevExtensionTool.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#include "DevExtensionTool.h"
|
||||
#include "DevUtil.h"
|
||||
|
||||
#include <nlohmann/json.hpp>
|
||||
|
||||
using namespace nlohmann;
|
||||
|
||||
namespace Slic3r
|
||||
{
|
||||
|
||||
DevExtensionTool::DevExtensionTool(MachineObject* obj) : m_owner(obj)
|
||||
{
|
||||
m_mount_3dp = MOUNT_NOT_MOUNTED;
|
||||
m_calib = CALIB_NONE;
|
||||
m_tool_type = TOOL_TYPE_EMPTY;
|
||||
}
|
||||
|
||||
void DevExtensionToolParser::ParseV2_0(const nlohmann::json& extension_tool_json, std::weak_ptr<DevExtensionTool> extension_tool)
|
||||
{
|
||||
if (auto ext_tool = extension_tool.lock())
|
||||
{
|
||||
DevJsonValParser::ParseVal(extension_tool_json, "mount_3d", ext_tool->m_mount_3dp, ext_tool->m_mount_3dp);
|
||||
DevJsonValParser::ParseVal(extension_tool_json, "calib", ext_tool->m_calib, ext_tool->m_calib);
|
||||
|
||||
{
|
||||
const std::string& type_str = DevJsonValParser::GetVal<std::string>(extension_tool_json, "type", "");
|
||||
static std::map<std::string, DevExtensionTool::ToolType> s_type_map = {
|
||||
{"CP00", DevExtensionTool::TOOL_TYPE_CUT_CP00},
|
||||
{"LB00", DevExtensionTool::TOOL_TYPE_LASER_LB00},
|
||||
{"F000", DevExtensionTool::TOOL_TYPE_FAN_F000}
|
||||
};
|
||||
|
||||
auto iter = s_type_map.find(type_str);
|
||||
iter != s_type_map.end() ? ext_tool->m_tool_type = iter->second : DevExtensionTool::TOOL_TYPE_EMPTY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
67
src/slic3r/GUI/DeviceCore/DevExtensionTool.h
Normal file
67
src/slic3r/GUI/DeviceCore/DevExtensionTool.h
Normal file
@@ -0,0 +1,67 @@
|
||||
#pragma once
|
||||
#include <optional>
|
||||
#include "libslic3r/CommonDefs.hpp"
|
||||
|
||||
#include "slic3r/Utils/json_diff.hpp"
|
||||
#include <wx/string.h>
|
||||
|
||||
#include "DevDefs.h"
|
||||
|
||||
namespace Slic3r
|
||||
{
|
||||
|
||||
//Previous definitions
|
||||
class MachineObject;
|
||||
|
||||
// some extension tools for toolheads
|
||||
class DevExtensionTool
|
||||
{
|
||||
friend class DevExtensionToolParser;
|
||||
public:
|
||||
static std::shared_ptr<DevExtensionTool> Create(MachineObject* obj) { return std::shared_ptr<DevExtensionTool>(new DevExtensionTool(obj)); }
|
||||
|
||||
public:
|
||||
// tool type
|
||||
bool IsToolTypeFanF000() const { return m_tool_type == TOOL_TYPE_FAN_F000; }
|
||||
|
||||
// mount state
|
||||
bool IsMounted() const { return m_mount_3dp == MOUNT_MOUNTED; }
|
||||
|
||||
protected:
|
||||
DevExtensionTool(MachineObject* obj);
|
||||
|
||||
private:
|
||||
MachineObject* m_owner = nullptr;
|
||||
|
||||
enum MountState
|
||||
{
|
||||
MOUNT_NOT_MOUNTED = 0,
|
||||
MOUNT_MOUNTED = 1,
|
||||
MOUNT_NO_MODULE = 2,
|
||||
MOUNT_NO_CABLE = 3
|
||||
} m_mount_3dp;
|
||||
|
||||
enum CalibState
|
||||
{
|
||||
CALIB_NONE = 0,
|
||||
CALIB_FIRST = 1,
|
||||
CALIB_MOUNT = 2
|
||||
} m_calib;
|
||||
|
||||
enum ToolType
|
||||
{
|
||||
TOOL_TYPE_EMPTY = 0,
|
||||
TOOL_TYPE_CUT_CP00 = 1,
|
||||
TOOL_TYPE_LASER_LB00 = 2,
|
||||
TOOL_TYPE_FAN_F000 = 3,
|
||||
} m_tool_type;
|
||||
};
|
||||
|
||||
|
||||
class DevExtensionToolParser
|
||||
{
|
||||
public:
|
||||
static void ParseV2_0(const nlohmann::json& extension_tool_json, std::weak_ptr<DevExtensionTool> extension_tool);
|
||||
};
|
||||
|
||||
};
|
||||
@@ -37,6 +37,22 @@ public:
|
||||
class DevJsonValParser
|
||||
{
|
||||
public:
|
||||
template<typename T>
|
||||
static T GetVal(const nlohmann::json& j, const std::string& key, const T& default_val = T())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (j.contains(key)) { return j[key].get<T>(); }
|
||||
}
|
||||
catch (const nlohmann::json::exception& e)
|
||||
{
|
||||
assert(0 && __FUNCTION__);
|
||||
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ": " << e.what();
|
||||
}
|
||||
|
||||
return default_val;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
static void ParseVal(const nlohmann::json& j, const std::string& key, T& val)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user