10class MRMESH_CLASS DistanceMeasurementObject :
public MeasurementObject,
public ObjectComparableWithReference
14 DistanceMeasurementObject() {}
16 DistanceMeasurementObject( DistanceMeasurementObject&& ) noexcept = default;
17 DistanceMeasurementObject& operator=( DistanceMeasurementObject&& ) noexcept = default;
19 constexpr static const
char* StaticTypeName() noexcept {
return "DistanceMeasurementObject"; }
20 const char* typeName()
const override {
return StaticTypeName(); }
22 constexpr static const char* StaticClassName() noexcept {
return "Distance"; }
23 virtual std::string className()
const override {
return StaticClassName(); }
25 constexpr static const char* StaticClassNameInPlural() noexcept {
return "Distances"; }
26 virtual std::string classNameInPlural()
const override {
return StaticClassNameInPlural(); }
29 DistanceMeasurementObject( ProtectedStruct,
const DistanceMeasurementObject& obj ) : DistanceMeasurementObject( obj ) {}
31 MRMESH_API std::shared_ptr<Object> clone()
const override;
32 MRMESH_API std::shared_ptr<Object> shallowClone()
const override;
35 [[nodiscard]]
MRMESH_API Vector3f getWorldPoint()
const;
37 [[nodiscard]]
MRMESH_API Vector3f getLocalPoint()
const;
40 [[nodiscard]]
MRMESH_API Vector3f getWorldDelta()
const;
41 [[nodiscard]]
MRMESH_API Vector3f getLocalDelta()
const;
49 [[nodiscard]]
MRMESH_API bool isNegative()
const;
50 MRMESH_API virtual void setIsNegative(
bool value );
52 enum class DistanceMode
55 euclideanWithSignedDeltasPerAxis,
56 euclideanWithAbsoluteDeltasPerAxis,
64 [[nodiscard]]
MRMESH_API DistanceMode getDistanceMode()
const;
65 MRMESH_API virtual void setDistanceMode( DistanceMode mode );
69 [[nodiscard]]
MRMESH_API float computeDistance()
const;
71 [[nodiscard]]
MRMESH_API std::vector<std::string> getInfoLines()
const override;
74 [[nodiscard]]
MRMESH_API std::size_t numComparableProperties()
const override;
75 [[nodiscard]]
MRMESH_API std::string_view getComparablePropertyName( std::size_t i )
const override;
76 [[nodiscard]]
MRMESH_API std::optional<ComparableProperty> computeComparableProperty( std::size_t i )
const override;
77 [[nodiscard]]
MRMESH_API std::optional<ComparisonTolerance> getComparisonTolerence( std::size_t i )
const override;
78 MRMESH_API void setComparisonTolerance( std::size_t i, std::optional<ComparisonTolerance> newTolerance )
override;
79 MRMESH_API std::string_view getComparisonReferenceValueName( std::size_t i )
const override;
80 [[nodiscard]]
MRMESH_API ComparisonReferenceValue getComparisonReferenceValue( std::size_t i )
const override;
81 MRMESH_API void setComparisonReferenceValue( std::size_t i, std::optional<ComparisonReferenceValue::Var> value )
override;
84 DistanceMeasurementObject(
const DistanceMeasurementObject& other ) =
default;
86 MRMESH_API void swapBase_( Object& other )
override;
88 MRMESH_API void serializeFields_( Json::Value& root )
const override;
89 MRMESH_API void deserializeFields_(
const Json::Value& root )
override;
91 MRMESH_API void setupRenderObject_()
const override;
99 bool isNegative_ =
false;
102 DistanceMode perCoordDeltas_ = DistanceMode::euclidean;
105 mutable std::optional<float> cachedValue_;
107 std::optional<ComparisonTolerance> tolerance_;
109 std::optional<float> referenceValue_;
#define MRMESH_API
Definition MRMeshFwd.h:80
#define MRMESH_CLASS
Definition MRMeshFwd.h:87
Definition MRCameraOrientationPlugin.h:8