MeshLib C++ Docs
Loading...
Searching...
No Matches
MRCircleObject.h
Go to the documentation of this file.
1#pragma once
4#include "MRMeshFwd.h"
5#include "MRFeatureObject.h"
6#include "MRVisualObject.h"
7#include "MRPlane3.h"
8
9namespace MR
10{
13
16class MRMESH_CLASS CircleObject : public AddVisualProperties<FeatureObject, DimensionsVisualizePropertyType::diameter>
17{
18public:
20 MRMESH_API CircleObject();
22 MRMESH_API CircleObject( const std::vector<Vector3f>& pointsToApprox );
23
24 CircleObject( CircleObject&& ) noexcept = default;
25 CircleObject& operator = ( CircleObject&& ) noexcept = default;
26
27 constexpr static const char* StaticTypeName() noexcept { return "CircleObject"; }
28 virtual const char* typeName() const override { return StaticTypeName(); }
29
30 constexpr static const char* StaticClassName() noexcept { return "Circle"; }
31 virtual std::string className() const override { return StaticClassName(); }
32
33 constexpr static const char* StaticClassNameInPlural() noexcept { return "Circles"; }
34 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
35
37 CircleObject( ProtectedStruct, const CircleObject& obj ) : CircleObject( obj )
38 {}
39
40 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
41 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
42
44 [[nodiscard]] MRMESH_API float getRadius( ViewportId id = {} ) const;
46 [[nodiscard]] MRMESH_API Vector3f getCenter( ViewportId id = {} ) const;
48 [[nodiscard]] MRMESH_API Vector3f getNormal( ViewportId id = {} ) const;
50 MRMESH_API void setRadius( float radius, ViewportId id = {} );
52 MRMESH_API void setCenter( const Vector3f& center, ViewportId id = {} );
54 MRMESH_API void setNormal( const Vector3f& normal, ViewportId id = {} );
55
56 [[nodiscard]] MRMESH_API FeatureObjectProjectPointResult projectPoint( const Vector3f& point, ViewportId id = {} ) const override;
57
58 [[nodiscard]] MRMESH_API virtual const std::vector<FeatureObjectSharedProperty>& getAllSharedProperties() const override;
59
60protected:
61 CircleObject( const CircleObject& other ) = default;
62
64 MRMESH_API virtual void swapBase_( Object& other ) override;
65
66 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
67
68 virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& ) const override
69 {
70 return {};
71 }
72
73 virtual Expected<void> deserializeModel_( const std::filesystem::path&, ProgressCallback ) override
74 {
75 return {};
76 }
77
78 MRMESH_API void setupRenderObject_() const override;
79};
80
81}
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRCameraOrientationPlugin.h:8