diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py index e425c16e1b..fa574420ee 100644 --- a/src/App/FreeCADInit.py +++ b/src/App/FreeCADInit.py @@ -859,6 +859,7 @@ App.Units.Velocity = App.Units.Unit(1,0,-1) App.Units.Acceleration = App.Units.Unit(1,0,-2) App.Units.Temperature = App.Units.Unit(0,0,0,0,1) +App.Units.CurrentDensity = App.Units.Unit(-2,0,0,1) App.Units.ElectricCurrent = App.Units.Unit(0,0,0,1) App.Units.ElectricPotential = App.Units.Unit(2,1,-3,-1) App.Units.ElectricCharge = App.Units.Unit(0,0,1,1) @@ -868,6 +869,7 @@ App.Units.ElectricalInductance = App.Units.Unit(2,1,-2,-2) App.Units.ElectricalConductance = App.Units.Unit(-2,-1,3,2) App.Units.ElectricalResistance = App.Units.Unit(2,1,-3,-2) App.Units.ElectricalConductivity = App.Units.Unit(-3,-1,3,2) + App.Units.AmountOfSubstance = App.Units.Unit(0,0,0,0,0,1) App.Units.LuminousIntensity = App.Units.Unit(0,0,0,0,0,0,1) diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index 9e00bd98f4..c1cd125c9c 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -448,6 +448,8 @@ QString Unit::getTypeString() const return QString::fromLatin1("Acceleration"); if(*this == Unit::Temperature ) return QString::fromLatin1("Temperature"); + if (*this == Unit::CurrentDensity) + return QString::fromLatin1("CurrentDensity"); if(*this == Unit::ElectricCurrent ) return QString::fromLatin1("ElectricCurrent"); if(*this == Unit::ElectricPotential ) @@ -526,6 +528,7 @@ Unit Unit::Velocity(1,0,-1); Unit Unit::Acceleration(1,0,-2); Unit Unit::Temperature(0,0,0,0,1); +Unit Unit::CurrentDensity(-2,0,0,1); Unit Unit::ElectricCurrent(0,0,0,1); Unit Unit::ElectricPotential(2,1,-3,-1); Unit Unit::ElectricCharge(0,0,1,1); diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 50a51b8c32..a7f0efd065 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -107,6 +107,7 @@ public: static Unit Acceleration; static Unit Temperature; + static Unit CurrentDensity; static Unit ElectricCurrent; static Unit ElectricPotential; static Unit ElectricCharge; diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index a5f9046fcf..dd8314daf4 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -331,6 +331,16 @@ QString UnitsSchemaInternal::schemaTranslate(const Quantity &quant, double &fact unitString = QString::fromLatin1("C"); factor = 1.0; } + else if (unit == Unit::CurrentDensity) { + if (UnitValue <= 1e3) { + unitString = QString::fromLatin1("A/m^2"); + factor = 1e-6; + } + else { + unitString = QString::fromLatin1("A/mm^2"); + factor = 1; + } + } else if (unit == Unit::MagneticFluxDensity) { if (UnitValue <= 1e-3) { unitString = QString::fromLatin1("G"); diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index 8619816ae0..634e16bac8 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -279,6 +279,16 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity &quant, double &factor, Q unitString = QString::fromLatin1("C"); factor = 1.0; } + else if (unit == Unit::CurrentDensity) { + if (UnitValue <= 1e3) { + unitString = QString::fromLatin1("A/m^2"); + factor = 1e-6; + } + else { + unitString = QString::fromLatin1("A/mm^2"); + factor = 1; + } + } else if (unit == Unit::MagneticFluxDensity) { if (UnitValue <= 1e-3) { unitString = QString::fromLatin1("G"); diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 8b26bd8b5d..ce0cab5848 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -77,6 +77,7 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WindowFlags fl ) << Base::Unit::Angle << Base::Unit::Area << Base::Unit::Density + << Base::Unit::CurrentDensity << Base::Unit::ElectricalCapacitance << Base::Unit::ElectricalInductance << Base::Unit::ElectricalConductance