diff --git a/src/Mod/TechDraw/App/DimensionFormatter.cpp b/src/Mod/TechDraw/App/DimensionFormatter.cpp index 2caea690b5..f105f934a9 100644 --- a/src/Mod/TechDraw/App/DimensionFormatter.cpp +++ b/src/Mod/TechDraw/App/DimensionFormatter.cpp @@ -320,12 +320,26 @@ QString DimensionFormatter::formatValueToSpec(double value, QString formatSpecif formattedValue.replace(QRegularExpression(QStringLiteral("([0-9][0-9]*\\.[0-9]*[1-9])00*$")), QStringLiteral("\\1")); formattedValue.replace(QRegularExpression(QStringLiteral("([0-9][0-9]*)\\.0*$")), QStringLiteral("\\1")); } else { - formattedValue = QString::asprintf(Base::Tools::toStdString(formatSpecifier).c_str(), value); + if (isNumericFormat(formatSpecifier)) { + formattedValue = QString::asprintf(Base::Tools::toStdString(formatSpecifier).c_str(), value); + } } return formattedValue; } +bool DimensionFormatter::isNumericFormat(QString formatSpecifier) +{ + QRegularExpression rxFormat(QStringLiteral("%[+-]?[0-9]*\\.*[0-9]*[aefgwAEFGW]")); //printf double format spec + QRegularExpressionMatch rxMatch; + int pos = formatSpecifier.indexOf(rxFormat, 0, &rxMatch); + if (pos != -1) { + return true; + } + return false; +} + +//TODO: similiar code here and above QStringList DimensionFormatter::getPrefixSuffixSpec(QString fSpec) { QStringList result; diff --git a/src/Mod/TechDraw/App/DimensionFormatter.h b/src/Mod/TechDraw/App/DimensionFormatter.h index e1d26f6e75..30c8c8b792 100644 --- a/src/Mod/TechDraw/App/DimensionFormatter.h +++ b/src/Mod/TechDraw/App/DimensionFormatter.h @@ -49,6 +49,7 @@ public: std::string getDefaultFormatSpec(bool isToleranceFormat) const; bool isTooSmall(double value, QString formatSpec); QString formatValueToSpec(double value, QString formatSpecifier); + bool isNumericFormat(QString formatSpecifier); private: DrawViewDimension* m_dimension;