From 358c55c228bf5dd100076c84ed5d6a6ad42ccdb6 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Sat, 30 Apr 2016 08:23:40 -0400 Subject: [PATCH] Use Units Decimal setting --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 30 ++++++++++++++++------ src/Mod/TechDraw/Gui/CommandCreateDims.cpp | 3 --- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index e5c45599e..f602511a7 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -87,7 +88,7 @@ DrawViewDimension::DrawViewDimension(void) ADD_PROPERTY_TYPE(References2D,(0,0),"Dimension",(App::PropertyType)(App::Prop_None),"Projected Geometry References"); ADD_PROPERTY_TYPE(References3D,(0,0),"Dimension",(App::PropertyType)(App::Prop_None),"3D Geometry References"); - ADD_PROPERTY_TYPE(Precision,(2) ,"Dimension",(App::PropertyType)(App::Prop_None),"Dimension Precision"); + ADD_PROPERTY_TYPE(Precision,(2) ,"Dimension",(App::PropertyType)(App::Prop_None),"Decimal positions to display"); ADD_PROPERTY_TYPE(Font ,(fontName.c_str()),"Dimension",App::Prop_None, "The name of the font to use"); ADD_PROPERTY_TYPE(Fontsize,(4) ,"Dimension",(App::PropertyType)(App::Prop_None),"Dimension text size in mm"); ADD_PROPERTY_TYPE(CentreLines,(0) ,"Dimension",(App::PropertyType)(App::Prop_None),"Dimension Center Lines"); @@ -108,6 +109,8 @@ DrawViewDimension::DrawViewDimension(void) Rotation.setStatus(App::Property::ReadOnly,true); Rotation.setStatus(App::Property::Hidden,true); + Precision.setValue(Base::UnitsApi::getDecimals()); + measurement = new Measure::Measurement(); } @@ -198,6 +201,23 @@ std::string DrawViewDimension::getFormatedValue() const QString str = QString::fromUtf8(FormatSpec.getStrValue().c_str()); double val = std::abs(getDimValue()); + Base::Quantity qVal; + qVal.setValue(val); + if (Type.isValue("Angle")) { + qVal.setUnit(Base::Unit::Angle); + } else { + qVal.setUnit(Base::Unit::Length); + } + QString userStr = qVal.getUserString(); + QStringList userSplit = userStr.split(QString::fromUtf8(" "),QString::SkipEmptyParts); + QString displayText; + if (!userSplit.isEmpty()) { + double valNum = userSplit.front().toDouble(); + QString valText = QString::number(valNum, 'f', Precision.getValue()); + QString unitText = userSplit.back(); + displayText = valText + QString::fromUtf8(" ") + unitText; + } + QRegExp rx(QString::fromAscii("%(\\w+)%")); //any word bracketed by % QStringList list; int pos = 0; @@ -209,13 +229,7 @@ std::string DrawViewDimension::getFormatedValue() const for(QStringList::const_iterator it = list.begin(); it != list.end(); ++it) { if(*it == QString::fromAscii("%value%")){ - 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); + str.replace(*it,displayText); } 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 d6d4562cc..ffee1420b 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -235,9 +235,6 @@ void CmdTechDrawNewDimension::activated(int iMsg) } std::string contentStr; - //if (dimType == "Angle") { - // contentStr = "%value%\x00b0"; - //} else if (dimType == "Radius") { contentStr = "r%value%"; }