diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 3db89f6949..e4eb715d65 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -163,6 +163,11 @@ bool UnitsApi::isMultiUnitAngle() return UserPrefSystem->isMultiUnitAngle(); } +std::string UnitsApi::getBasicLengthUnit() +{ + return UserPrefSystem->getBasicLengthUnit(); +} + // === static translation methods ========================================== QString UnitsApi::schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 45099a4f64..b1cd08e57c 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -98,6 +98,9 @@ public: //return true if the current user schema uses multiple units for angles (ex. DMS) static bool isMultiUnitAngle(); + //return the basic unit of measure for length in the current user schema. + static std::string getBasicLengthUnit(); + // Python interface static PyMethodDef Methods[]; diff --git a/src/Base/UnitsSchema.h b/src/Base/UnitsSchema.h index bfe5fab95f..e04893772e 100644 --- a/src/Base/UnitsSchema.h +++ b/src/Base/UnitsSchema.h @@ -71,6 +71,9 @@ public: //return true if this schema uses multiple units for angles (ex. DMS) virtual bool isMultiUnitAngle() const {return false;} + + //return the basic length unit for this schema + virtual std::string getBasicLengthUnit() const { return std::string("mm"); } }; diff --git a/src/Base/UnitsSchemaCentimeters.h b/src/Base/UnitsSchemaCentimeters.h index ea6ab8e043..b45805233c 100644 --- a/src/Base/UnitsSchemaCentimeters.h +++ b/src/Base/UnitsSchemaCentimeters.h @@ -37,6 +37,8 @@ class UnitsSchemaCentimeters: public UnitsSchema { public: QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override; + + std::string getBasicLengthUnit() const override { return std::string("cm"); } }; } // namespace Base diff --git a/src/Base/UnitsSchemaImperial1.h b/src/Base/UnitsSchemaImperial1.h index aaed330630..2360bcc90d 100644 --- a/src/Base/UnitsSchemaImperial1.h +++ b/src/Base/UnitsSchemaImperial1.h @@ -41,6 +41,7 @@ public: //virtual void setSchemaUnits(void); //virtual void resetSchemaUnits(void); QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override; + std::string getBasicLengthUnit() const override { return std::string("in"); } }; /** The schema class for the imperial unit system @@ -53,6 +54,7 @@ public: //virtual void setSchemaUnits(void); //virtual void resetSchemaUnits(void); QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override; + std::string getBasicLengthUnit() const override { return std::string("in"); } }; /** The schema class for the imperial unit system @@ -65,6 +67,7 @@ public: //virtual void setSchemaUnits(void); //virtual void resetSchemaUnits(void); QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override; + std::string getBasicLengthUnit() const override { return std::string("ft"); } //return true if this schema uses multiple units for length (ex. Ft/In) bool isMultiUnitLength() const override {return true;} @@ -81,6 +84,7 @@ public: //virtual void setSchemaUnits(void); //virtual void resetSchemaUnits(void); QString schemaTranslate(const Base::Quantity& quant, double &factor, QString &unitString) override; + std::string getBasicLengthUnit() const override { return std::string("ft"); } //return true if this schema uses multiple units for angles (ex. DMS) bool isMultiUnitAngle() const override {return true;}