From dc205d37fcfb6f66cac38994f4725df5e8e28246 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Thu, 28 Apr 2016 13:20:31 -0400 Subject: [PATCH] fix #16 Units for Dimensions --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 13 ++++++++++--- src/Mod/TechDraw/Gui/CommandCreateDims.cpp | 10 ++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index af6beed91..e5c45599e 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include @@ -195,6 +196,7 @@ std::string DrawViewDimension::getFormatedValue() const { QString str = QString::fromUtf8(FormatSpec.getStrValue().c_str()); + double val = std::abs(getDimValue()); QRegExp rx(QString::fromAscii("%(\\w+)%")); //any word bracketed by % QStringList list; @@ -207,9 +209,14 @@ std::string DrawViewDimension::getFormatedValue() const for(QStringList::const_iterator it = list.begin(); it != list.end(); ++it) { if(*it == QString::fromAscii("%value%")){ - double val = std::abs(getDimValue()); - str.replace(*it, QString::number(val, 'f', Precision.getValue()) ); - } else { //insert new placeholder replacement logic here + QString unitVal; + if (Type.isValue("Angle")) { + unitVal = Base::Quantity(val, Base::Unit::Angle).getUserString(); + } else { + unitVal = Base::Quantity(val, Base::Unit::Length).getUserString(); + } + str.replace(*it, unitVal); + } else { //insert additional placeholder replacement logic here str.replace(*it, QString::fromAscii("")); } } diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 4a4fe5eb9..d6d4562cc 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -235,9 +235,10 @@ void CmdTechDrawNewDimension::activated(int iMsg) } std::string contentStr; - if (dimType == "Angle") { - contentStr = "%value%\x00b0"; - } else if (dimType == "Radius") { + //if (dimType == "Angle") { + // contentStr = "%value%\x00b0"; + //} else + if (dimType == "Radius") { contentStr = "r%value%"; } doCommand(Doc,"App.activeDocument().%s.FormatSpec = '%s'",FeatName.c_str() @@ -803,9 +804,6 @@ void CmdTechDrawNewAngleDimension::activated(int iMsg) doCommand(Doc,"App.activeDocument().%s.Type = '%s'",FeatName.c_str() ,"Angle"); - doCommand(Doc,"App.activeDocument().%s.FormatSpec = '%s'",FeatName.c_str() - ,"%value%\u00b0"); // \u00b0 is degree sign - dim = dynamic_cast(getDocument()->getObject(FeatName.c_str())); dim->References2D.setValues(objs, subs);