MeshLib C++ Docs
Loading...
Searching...
No Matches
MRCylinderObject.h
Go to the documentation of this file.
1#pragma once
2
3#include "MRFeatureObject.h"
6#include "MRMeshFwd.h"
7#include "MRVisualObject.h"
8
9namespace MR
10{
11
14class MRMESH_CLASS CylinderObject : public AddVisualProperties<FeatureObject,
15 DimensionsVisualizePropertyType::diameter,
16 DimensionsVisualizePropertyType::length
17>
18{
19public:
21 MRMESH_API CylinderObject();
23 MRMESH_API CylinderObject( const std::vector<Vector3f>& pointsToApprox );
24
25 CylinderObject( CylinderObject&& ) noexcept = default;
26 CylinderObject& operator = ( CylinderObject&& ) noexcept = default;
27
28 constexpr static const char* StaticTypeName() noexcept { return "CylinderObject"; }
29 virtual const char* typeName() const override { return StaticTypeName(); }
30
31 constexpr static const char* StaticClassName() noexcept { return "Cylinder"; }
32 virtual std::string className() const override { return StaticClassName(); }
33
34 constexpr static const char* StaticClassNameInPlural() noexcept { return "Cylinders"; }
35 virtual std::string classNameInPlural() const override { return StaticClassNameInPlural(); }
36
38 CylinderObject( ProtectedStruct, const CylinderObject& obj ) : CylinderObject( obj )
39 {}
40
41 MRMESH_API virtual std::shared_ptr<Object> clone() const override;
42 MRMESH_API virtual std::shared_ptr<Object> shallowClone() const override;
43
45 MRMESH_API float getRadius( ViewportId id = {} ) const;
47 MRMESH_API Vector3f getCenter( ViewportId id = {} ) const;
49 MRMESH_API void setRadius( float radius, ViewportId id = {} );
51 MRMESH_API void setCenter( const Vector3f& center, ViewportId id = {} );
53 MRMESH_API Vector3f getDirection( ViewportId id = {} ) const;
55 MRMESH_API void setDirection( const Vector3f& normal, ViewportId id = {} );
57 MRMESH_API float getLength( ViewportId id = {} ) const;
59 MRMESH_API void setLength( float length, ViewportId id = {} );
60
61 // Returns point considered as base for the feature
62 [[nodiscard]] MRMESH_API virtual Vector3f getBasePoint( ViewportId id = {} ) const override;
63
64 MRMESH_API virtual const std::vector<FeatureObjectSharedProperty>& getAllSharedProperties() const override;
65
66 [[nodiscard]] MRMESH_API FeatureObjectProjectPointResult projectPoint( const Vector3f& point, ViewportId id = {} ) const override;
67
68protected:
69 CylinderObject( const CylinderObject& other ) = default;
70
72 MRMESH_API virtual void swapBase_( Object& other ) override;
73
74 MRMESH_API virtual void serializeFields_( Json::Value& root ) const override;
75
76 virtual Expected<std::future<Expected<void>>> serializeModel_( const std::filesystem::path& ) const override
77 {
78 return {};
79 }
80
81 virtual Expected<void> deserializeModel_( const std::filesystem::path&, ProgressCallback ) override
82 {
83 return {};
84 }
85
86 MRMESH_API void setupRenderObject_() const override;
87};
88
89}
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
length
Definition MRObjectDimensionsEnum.h:14
Definition MRCameraOrientationPlugin.h:8