22 constexpr static const
char* StaticTypeName() noexcept {
return "RadiusMeasurementObject"; }
23 const char*
typeName()
const override {
return StaticTypeName(); }
26 virtual std::string
className()
const override {
return StaticClassName(); }
29 virtual std::string
classNameInPlural()
const override {
return StaticClassNameInPlural(); }
34 MRMESH_API std::shared_ptr<Object>
clone()
const override;
74 [[nodiscard]] MRMESH_API std::vector<std::string>
getInfoLines()
const override;
92 bool drawAsDiameter_ =
false;
94 bool isSpherical_ =
false;
98 float visualLengthMultiplier_ = 2 / 3.f;
101 mutable std::optional<float> cachedValue_;
Definition MRMeasurementObject.h:14
named object in the data model
Definition MRObject.h:62
Represents a radius measurement.
Definition MRRadiusMeasurementObject.h:13
MRMESH_API std::shared_ptr< Object > shallowClone() const override
MRMESH_API Vector3f getWorldNormal() const
The preferred radius normal, for non-spherical radiuses.
virtual void setVisualLengthMultiplier(float value)
Definition MRRadiusMeasurementObject.h:69
MRMESH_API void swapBase_(Object &other) override
swaps this object with other
static constexpr const char * StaticClassName() noexcept
Definition MRRadiusMeasurementObject.h:25
MRMESH_API Vector3f getWorldCenter() const
Get the center in world coordinates.
virtual MRMESH_API void setDrawAsDiameter(bool value)
virtual MRMESH_API void setLocalRadiusAsVector(const MR::Vector3f &radiusVec, const Vector3f &normal)
RadiusMeasurementObject(RadiusMeasurementObject &&) noexcept=default
MRMESH_API Vector3f getLocalCenter() const
Get the center in local coordinates.
RadiusMeasurementObject(ProtectedStruct, const RadiusMeasurementObject &obj)
For std::make_shared() in clone().
Definition MRRadiusMeasurementObject.h:32
MRMESH_API void setupRenderObject_() const override
virtual std::string classNameInPlural() const override
Definition MRRadiusMeasurementObject.h:29
MRMESH_API Vector3f getLocalNormal() const
virtual void setIsSpherical(bool value)
Definition MRRadiusMeasurementObject.h:64
void setLocalRadiusAsVector(const MR::Vector3f &radiusVec)
Same, but without a preferred normal.
Definition MRRadiusMeasurementObject.h:56
virtual MRMESH_API void setLocalCenter(const MR::Vector3f ¢er)
float getVisualLengthMultiplier() const
Definition MRRadiusMeasurementObject.h:68
bool getIsSpherical() const
Whether this is a sphere radius, as opposed to circle/cylinder radius.
Definition MRRadiusMeasurementObject.h:63
MRMESH_API std::vector< std::string > getInfoLines() const override
return several info lines that can better describe the object in the UI
virtual std::string className() const override
Definition MRRadiusMeasurementObject.h:26
bool getDrawAsDiameter() const
Whether we should draw this as a diameter instead of a radius.
Definition MRRadiusMeasurementObject.h:59
MRMESH_API Vector3f getWorldRadiusAsVector() const
The length of this vector is the radius, and the direction is the preferred line drawing direction.
MRMESH_API Vector3f getLocalRadiusAsVector() const
MRMESH_API float computeRadiusOrDiameter() const
Computes the radius/diameter value, as if by getLocalRadiusAsVector(), possibly multiplied by two if ...
MRMESH_API std::shared_ptr< Object > clone() const override
MRMESH_API void deserializeFields_(const Json::Value &root) override
const char * typeName() const override
Definition MRRadiusMeasurementObject.h:23
static constexpr const char * StaticClassNameInPlural() noexcept
Definition MRRadiusMeasurementObject.h:28
MRMESH_API void serializeFields_(Json::Value &root) const override
RadiusMeasurementObject(const RadiusMeasurementObject &other)=default
RadiusMeasurementObject()
Definition MRRadiusMeasurementObject.h:17
MRMESH_API void onWorldXfChanged_() override
Emits worldXfChangedSignal, but derived classes can add additional behavior to it.
only for bindings generation
Definition MRCameraOrientationPlugin.h:8
Definition MRObject.h:284