MeshLib C++ Docs
Loading...
Searching...
No Matches
MRCNCMachineSettings.h
Go to the documentation of this file.
1#pragma once
2#include "MRMeshFwd.h"
3#include "MRVector3.h"
4#include "MRVector2.h"
5
6#include <array>
7#include <optional>
8
9namespace Json { class Value; }
10
11namespace MR
12{
15
16
18class MRMESH_CLASS CNCMachineSettings
19{
20public:
23 {
24 A,
25 B,
26 C
27 };
28 using RotationAxesOrder = std::vector<RotationAxisName>;
29 using RotationLimits = std::optional<Vector2f>;
30
31 static int getAxesCount() { return int( RotationAxisName::C ) + 1; }
32
34 MRMESH_API void setRotationAxis( RotationAxisName paramName, const Vector3f& rotationAxis );
35 MRMESH_API const Vector3f& getRotationAxis( RotationAxisName paramName ) const;
38 MRMESH_API void setRotationLimits( RotationAxisName paramName, const RotationLimits& rotationLimits );
39 MRMESH_API const RotationLimits& getRotationLimits( RotationAxisName paramName ) const;
41 MRMESH_API void setRotationOrder( const RotationAxesOrder& rotationAxesOrder );
42 const RotationAxesOrder& getRotationOrder() const { return rotationAxesOrder_; }
45 MRMESH_API void setFeedrateIdle( float feedrateIdle );
46 float getFeedrateIdle() const { return feedrateIdle_; }
47 void setHomePosition( const Vector3f& homePosition ) { homePosition_ = homePosition; }
48 const Vector3f& getHomePosition() const { return homePosition_; }
49
50 MRMESH_API bool operator==( const CNCMachineSettings& rhs );
51 bool operator!=( const CNCMachineSettings& rhs ) { return !(*this == rhs); }
52
53 MRMESH_API Json::Value saveToJson() const;
54 MRMESH_API bool loadFromJson( const Json::Value& jsonValue );
55
56private:
58 std::array<Vector3f, 3> rotationAxes_ = { Vector3f::minusX(), Vector3f::minusY(), Vector3f::plusZ() };
60 std::array<RotationLimits, 3> rotationLimits_;
62 RotationAxesOrder rotationAxesOrder_ = { RotationAxisName::A, RotationAxisName::B, RotationAxisName::C };
64 float feedrateIdle_ = 10000.f;
65 Vector3f homePosition_;
66};
67
68}
class with CNC machine emulation settings
Definition MRCNCMachineSettings.h:19
bool operator!=(const CNCMachineSettings &rhs)
Definition MRCNCMachineSettings.h:51
static int getAxesCount()
Definition MRCNCMachineSettings.h:31
MRMESH_API bool operator==(const CNCMachineSettings &rhs)
const Vector3f & getHomePosition() const
Definition MRCNCMachineSettings.h:48
MRMESH_API const Vector3f & getRotationAxis(RotationAxisName paramName) const
float getFeedrateIdle() const
Definition MRCNCMachineSettings.h:46
const RotationAxesOrder & getRotationOrder() const
Definition MRCNCMachineSettings.h:42
MRMESH_API void setRotationOrder(const RotationAxesOrder &rotationAxesOrder)
duplicated values will be removed (ABAAC - > ABC)
RotationAxisName
enumeration of axes of rotation
Definition MRCNCMachineSettings.h:23
std::vector< RotationAxisName > RotationAxesOrder
Definition MRCNCMachineSettings.h:28
MRMESH_API void setRotationLimits(RotationAxisName paramName, const RotationLimits &rotationLimits)
MRMESH_API void setFeedrateIdle(float feedrateIdle)
MRMESH_API const RotationLimits & getRotationLimits(RotationAxisName paramName) const
MRMESH_API bool loadFromJson(const Json::Value &jsonValue)
void setHomePosition(const Vector3f &homePosition)
Definition MRCNCMachineSettings.h:47
MRMESH_API Json::Value saveToJson() const
std::optional< Vector2f > RotationLimits
Definition MRCNCMachineSettings.h:29
MRMESH_API void setRotationAxis(RotationAxisName paramName, const Vector3f &rotationAxis)
rotationAxis length will be more then 0.01
only for bindings generation
Definition MRCameraOrientationPlugin.h:8