OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::DevAxis Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevAxis.h>

Collaboration diagram for Slic3r::DevAxis:

Public Member Functions

virtual ~DevAxis ()=default
bool IsAxisAtHomeX () const
bool IsAxisAtHomeY () const
bool IsAxisAtHomeZ () const
bool IsArchCoreXY () const
void ParseAxis (const nlohmann::json &print_json)
int Ctrl_GoHome ()
int Ctrl_Axis (std::string axis, double unit=1.0f, double input_val=1.0f, int speed=3000)

Static Public Member Functions

static std::shared_ptr< DevAxis > Create (MachineObject *obj)

Protected Member Functions

 DevAxis (MachineObject *obj) noexcept

Private Attributes

MachineObject * m_owner = nullptr
int m_home_flag = 0
bool m_is_support_mqtt_axis_ctrl = false
bool m_is_support_mqtt_homing = false

Detailed Description

Constructor & Destructor Documentation

◆ ~DevAxis()

virtual Slic3r::DevAxis::~DevAxis ( )
virtualdefault

◆ DevAxis()

Slic3r::DevAxis::DevAxis ( MachineObject * obj)
inlineprotectednoexcept
30: m_owner(obj) {}
MachineObject * m_owner
Definition DevAxis.h:33

Referenced by Create().

Here is the caller graph for this function:

Member Function Documentation

◆ Create()

std::shared_ptr< DevAxis > Slic3r::DevAxis::Create ( MachineObject * obj)
inlinestatic
13{ return std::shared_ptr<DevAxis>( new DevAxis(obj)); }
DevAxis(MachineObject *obj) noexcept
Definition DevAxis.h:30

References DevAxis().

Referenced by Slic3r::MachineObject::MachineObject().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Ctrl_Axis()

int Slic3r::DevAxis::Ctrl_Axis ( std::string axis,
double unit = 1.0f,
double input_val = 1.0f,
int speed = 3000 )
28{
30 int dir = input_val > 0 ? 1 : -1;
31 if (!IsArchCoreXY()) {
32 if (axis.compare("Y") == 0 || axis.compare("Z") == 0) {
33 dir = -dir;
34 }
35 }
36 json j;
37 j["print"]["command"] = "xyz_ctrl";
38 j["print"]["axis"] = axis;
39 j["print"]["dir"] = dir;
40 j["print"]["mode"] = (std::abs(input_val) >= 10) ? 1 : 0;
41 j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
42 return m_owner->publish_json(j);
43 }
44
45 double value = input_val;
46 if (!IsArchCoreXY()) {
47 if (axis.compare("Y") == 0 || axis.compare("Z") == 0) {
48 value = -1.0 * input_val;
49 }
50 }
51
52 char cmd[256];
53 if (axis.compare("X") == 0 || axis.compare("Y") == 0 || axis.compare("Z") == 0) {
54 sprintf(cmd, "M211 S \nM211 X1 Y1 Z1\nM1002 push_ref_mode\nG91 \nG1 %s%0.1f F%d\nM1002 pop_ref_mode\nM211 R\n", axis.c_str(), value * unit, speed);
55 } else if (axis.compare("E") == 0) {
56 sprintf(cmd, "M83 \nG0 %s%0.1f F%d\n", axis.c_str(), value * unit, speed);
57 } else {
58 return -1;
59 }
60
61 // Orca: strip analytics telemetry (matches MachineObject::command_axis_control)
62 return m_owner->publish_gcode(cmd);
63}
bool IsArchCoreXY() const
Definition DevAxis.cpp:24
bool m_is_support_mqtt_axis_ctrl
Definition DevAxis.h:36
static int m_sequence_id
Definition DeviceManager.hpp:197
nlohmann::json json
Definition AssembleList.cpp:42

References IsArchCoreXY(), m_is_support_mqtt_axis_ctrl, m_owner, and Slic3r::MachineObject::m_sequence_id.

Here is the call graph for this function:

◆ Ctrl_GoHome()

int Slic3r::DevAxis::Ctrl_GoHome ( )
15{
17 json j;
18 j["print"]["command"] = "back_to_center";
19 j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
20 return m_owner->publish_json(j);
21 }
22
23 // gcode command
24 return m_owner->is_in_printing() ? m_owner->publish_gcode("G28 X\n") : m_owner->publish_gcode("G28 \n");
25}
bool m_is_support_mqtt_homing
Definition DevAxis.h:37

References m_is_support_mqtt_homing, m_owner, and Slic3r::MachineObject::m_sequence_id.

◆ IsArchCoreXY()

bool Slic3r::DevAxis::IsArchCoreXY ( ) const
25{
26 return m_owner->get_printer_arch() == PrinterArch::ARCH_CORE_XY;
27}
@ ARCH_CORE_XY
Definition DevDefs.h:29

References ARCH_CORE_XY, and m_owner.

Referenced by Ctrl_Axis().

Here is the caller graph for this function:

◆ IsAxisAtHomeX()

bool Slic3r::DevAxis::IsAxisAtHomeX ( ) const
inline
17{ return m_home_flag == 0 ? true : (m_home_flag & 1) == 1; }
int m_home_flag
Definition DevAxis.h:35

References m_home_flag.

◆ IsAxisAtHomeY()

bool Slic3r::DevAxis::IsAxisAtHomeY ( ) const
inline
18{ return m_home_flag == 0 ? true : ((m_home_flag >> 1) & 1) == 1; }

References m_home_flag.

◆ IsAxisAtHomeZ()

bool Slic3r::DevAxis::IsAxisAtHomeZ ( ) const
inline
19{ return m_home_flag == 0 ? true : ((m_home_flag >> 2) & 1) == 1; }

References m_home_flag.

◆ ParseAxis()

void Slic3r::DevAxis::ParseAxis ( const nlohmann::json & print_json)
14{
15 DevJsonValParser::ParseVal(print_json, "home_flag", m_home_flag);
16
17 if (print_json.contains("fun")) {
18 const std::string& fun = print_json["fun"].get<std::string>();
21 }
22}
static void ParseVal(const nlohmann::json &j, const std::string &key, T &val)
Definition DevUtil.h:76
static int get_flag_bits(std::string str, int start, int count=1)
Definition DevUtil.cpp:18

References Slic3r::DevUtil::get_flag_bits(), m_home_flag, m_is_support_mqtt_axis_ctrl, m_is_support_mqtt_homing, and Slic3r::DevJsonValParser::ParseVal().

Here is the call graph for this function:

Member Data Documentation

◆ m_home_flag

int Slic3r::DevAxis::m_home_flag = 0
private

◆ m_is_support_mqtt_axis_ctrl

bool Slic3r::DevAxis::m_is_support_mqtt_axis_ctrl = false
private

Referenced by Ctrl_Axis(), and ParseAxis().

◆ m_is_support_mqtt_homing

bool Slic3r::DevAxis::m_is_support_mqtt_homing = false
private

Referenced by Ctrl_GoHome(), and ParseAxis().

◆ m_owner

MachineObject* Slic3r::DevAxis::m_owner = nullptr
private

The documentation for this class was generated from the following files:
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevAxis.h
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevAxis.cpp
  • /home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/DeviceCore/DevAxisCtrl.cpp