Base: introduce 'getSafeUserUnit' that fallbacks to full precision and internal unit ...

... in case unit schema would zero a non-zero quantity

 For example, using '1 mil' with UnitsSchemaImperialDecimal schema
This commit is contained in:
0penBrain
2022-07-30 14:58:31 +02:00
parent 65f8321e27
commit 0d577a8789
4 changed files with 188 additions and 171 deletions

View File

@@ -242,6 +242,22 @@ QString Quantity::getUserString(UnitsSchema* schema, double &factor, QString &un
return schema->schemaTranslate(*this, factor, unitString);
}
QString Quantity::getSafeUserString() const
{
auto retString = getUserString();
if(Q_LIKELY(this->_Value != 0))
{
auto feedbackQty = parse(retString);
auto feedbackVal = feedbackQty.getValue();
if (feedbackVal == 0) {
retString = QStringLiteral("%1 %2")
.arg(this->_Value)
.arg(this->getUnit().getString());
}
}
return retString;
}
/// true if it has a number without a unit
bool Quantity::isDimensionless() const
{

View File

@@ -153,6 +153,7 @@ public:
return getUserString(dummy1,dummy2);
}
QString getUserString(UnitsSchema* schema, double &factor, QString &unitString) const;
QString getSafeUserString() const;
static Quantity parse(const QString &string);

View File

@@ -268,8 +268,8 @@ QString PlanePrimitive::create(const QString& objectName, const QString& placeme
"App.ActiveDocument.%1.Placement=%4\n"
"App.ActiveDocument.%1.Label='%5'\n")
.arg(objectName,
ui->planeLength->value().getUserString(),
ui->planeWidth->value().getUserString(),
ui->planeLength->value().getSafeUserString(),
ui->planeWidth->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Plane"));
}
@@ -281,8 +281,8 @@ QString PlanePrimitive::change(const QString& objectName, const QString& placeme
"%1.Width='%3'\n"
"%1.Placement=%4\n")
.arg(objectName,
ui->planeLength->value().getUserString(),
ui->planeWidth->value().getUserString(),
ui->planeLength->value().getSafeUserString(),
ui->planeWidth->value().getSafeUserString(),
placement);
}
@@ -342,9 +342,9 @@ QString BoxPrimitive::create(const QString& objectName, const QString& placement
"App.ActiveDocument.%1.Placement=%5\n"
"App.ActiveDocument.%1.Label='%6'\n")
.arg(objectName,
ui->boxLength->value().getUserString(),
ui->boxWidth->value().getUserString(),
ui->boxHeight->value().getUserString(),
ui->boxLength->value().getSafeUserString(),
ui->boxWidth->value().getSafeUserString(),
ui->boxHeight->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Box"));
}
@@ -357,9 +357,9 @@ QString BoxPrimitive::change(const QString& objectName, const QString& placement
"%1.Height='%4'\n"
"%1.Placement=%5\n")
.arg(objectName,
ui->boxLength->value().getUserString(),
ui->boxWidth->value().getUserString(),
ui->boxHeight->value().getUserString(),
ui->boxLength->value().getSafeUserString(),
ui->boxWidth->value().getSafeUserString(),
ui->boxHeight->value().getSafeUserString(),
placement);
}
@@ -430,11 +430,11 @@ QString CylinderPrimitive::create(const QString& objectName, const QString& plac
"App.ActiveDocument.%1.Placement=%7\n"
"App.ActiveDocument.%1.Label='%8'\n")
.arg(objectName,
ui->cylinderRadius->value().getUserString(),
ui->cylinderHeight->value().getUserString(),
ui->cylinderAngle->value().getUserString(),
ui->cylinderXSkew->value().getUserString(),
ui->cylinderYSkew->value().getUserString(),
ui->cylinderRadius->value().getSafeUserString(),
ui->cylinderHeight->value().getSafeUserString(),
ui->cylinderAngle->value().getSafeUserString(),
ui->cylinderXSkew->value().getSafeUserString(),
ui->cylinderYSkew->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Cylinder"));
}
@@ -447,9 +447,9 @@ QString CylinderPrimitive::change(const QString& objectName, const QString& plac
"%1.Angle='%4'\n"
"%1.Placement=%5\n")
.arg(objectName,
ui->cylinderRadius->value().getUserString(),
ui->cylinderHeight->value().getUserString(),
ui->cylinderAngle->value().getUserString(),
ui->cylinderRadius->value().getSafeUserString(),
ui->cylinderHeight->value().getSafeUserString(),
ui->cylinderAngle->value().getSafeUserString(),
placement);
}
@@ -523,10 +523,10 @@ QString ConePrimitive::create(const QString& objectName, const QString& placemen
"App.ActiveDocument.%1.Placement=%6\n"
"App.ActiveDocument.%1.Label='%7'\n")
.arg(objectName,
ui->coneRadius1->value().getUserString(),
ui->coneRadius2->value().getUserString(),
ui->coneHeight->value().getUserString(),
ui->coneAngle->value().getUserString(),
ui->coneRadius1->value().getSafeUserString(),
ui->coneRadius2->value().getSafeUserString(),
ui->coneHeight->value().getSafeUserString(),
ui->coneAngle->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Cone"));
}
@@ -540,10 +540,10 @@ QString ConePrimitive::change(const QString& objectName, const QString& placemen
"%1.Angle='%5'\n"
"%1.Placement=%6\n")
.arg(objectName,
ui->coneRadius1->value().getUserString(),
ui->coneRadius2->value().getUserString(),
ui->coneHeight->value().getUserString(),
ui->coneAngle->value().getUserString(),
ui->coneRadius1->value().getSafeUserString(),
ui->coneRadius2->value().getSafeUserString(),
ui->coneHeight->value().getSafeUserString(),
ui->coneAngle->value().getSafeUserString(),
placement);
}
@@ -614,10 +614,10 @@ QString SpherePrimitive::create(const QString& objectName, const QString& placem
"App.ActiveDocument.%1.Placement=%6\n"
"App.ActiveDocument.%1.Label='%7'\n")
.arg(objectName,
ui->sphereRadius->value().getUserString(),
ui->sphereAngle1->value().getUserString(),
ui->sphereAngle2->value().getUserString(),
ui->sphereAngle3->value().getUserString(),
ui->sphereRadius->value().getSafeUserString(),
ui->sphereAngle1->value().getSafeUserString(),
ui->sphereAngle2->value().getSafeUserString(),
ui->sphereAngle3->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Sphere"));
}
@@ -631,10 +631,10 @@ QString SpherePrimitive::change(const QString& objectName, const QString& placem
"%1.Angle3='%5'\n"
"%1.Placement=%6\n")
.arg(objectName,
ui->sphereRadius->value().getUserString(),
ui->sphereAngle1->value().getUserString(),
ui->sphereAngle2->value().getUserString(),
ui->sphereAngle3->value().getUserString(),
ui->sphereRadius->value().getSafeUserString(),
ui->sphereAngle1->value().getSafeUserString(),
ui->sphereAngle2->value().getSafeUserString(),
ui->sphereAngle3->value().getSafeUserString(),
placement);
}
@@ -716,12 +716,12 @@ QString EllipsoidPrimitive::create(const QString& objectName, const QString& pla
"App.ActiveDocument.%1.Placement=%8\n"
"App.ActiveDocument.%1.Label='%9'\n")
.arg(objectName,
ui->ellipsoidRadius1->value().getUserString(),
ui->ellipsoidRadius2->value().getUserString(),
ui->ellipsoidRadius3->value().getUserString(),
ui->ellipsoidAngle1->value().getUserString(),
ui->ellipsoidAngle2->value().getUserString(),
ui->ellipsoidAngle3->value().getUserString(),
ui->ellipsoidRadius1->value().getSafeUserString(),
ui->ellipsoidRadius2->value().getSafeUserString(),
ui->ellipsoidRadius3->value().getSafeUserString(),
ui->ellipsoidAngle1->value().getSafeUserString(),
ui->ellipsoidAngle2->value().getSafeUserString(),
ui->ellipsoidAngle3->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Ellipsoid"));
}
@@ -737,12 +737,12 @@ QString EllipsoidPrimitive::change(const QString& objectName, const QString& pla
"%1.Angle3='%7'\n"
"%1.Placement=%8\n")
.arg(objectName,
ui->ellipsoidRadius1->value().getUserString(),
ui->ellipsoidRadius2->value().getUserString(),
ui->ellipsoidRadius3->value().getUserString(),
ui->ellipsoidAngle1->value().getUserString(),
ui->ellipsoidAngle2->value().getUserString(),
ui->ellipsoidAngle3->value().getUserString(),
ui->ellipsoidRadius1->value().getSafeUserString(),
ui->ellipsoidRadius2->value().getSafeUserString(),
ui->ellipsoidRadius3->value().getSafeUserString(),
ui->ellipsoidAngle1->value().getSafeUserString(),
ui->ellipsoidAngle2->value().getSafeUserString(),
ui->ellipsoidAngle3->value().getSafeUserString(),
placement);
}
@@ -824,11 +824,11 @@ QString TorusPrimitive::create(const QString& objectName, const QString& placeme
"App.ActiveDocument.%1.Placement=%7\n"
"App.ActiveDocument.%1.Label='%8'\n")
.arg(objectName,
ui->torusRadius1->value().getUserString(),
ui->torusRadius2->value().getUserString(),
ui->torusAngle1->value().getUserString(),
ui->torusAngle2->value().getUserString(),
ui->torusAngle3->value().getUserString(),
ui->torusRadius1->value().getSafeUserString(),
ui->torusRadius2->value().getSafeUserString(),
ui->torusAngle1->value().getSafeUserString(),
ui->torusAngle2->value().getSafeUserString(),
ui->torusAngle3->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Torus"));
}
@@ -843,11 +843,11 @@ QString TorusPrimitive::change(const QString& objectName, const QString& placeme
"%1.Angle3='%6'\n"
"%1.Placement=%7\n")
.arg(objectName,
ui->torusRadius1->value().getUserString(),
ui->torusRadius2->value().getUserString(),
ui->torusAngle1->value().getUserString(),
ui->torusAngle2->value().getUserString(),
ui->torusAngle3->value().getUserString(),
ui->torusRadius1->value().getSafeUserString(),
ui->torusRadius2->value().getSafeUserString(),
ui->torusAngle1->value().getSafeUserString(),
ui->torusAngle2->value().getSafeUserString(),
ui->torusAngle3->value().getSafeUserString(),
placement);
}
@@ -923,10 +923,10 @@ QString PrismPrimitive::create(const QString& objectName, const QString& placeme
"App.ActiveDocument.%1.Label='%8'\n")
.arg(objectName,
QString::number(ui->prismPolygon->value()),
ui->prismCircumradius->value().getUserString(),
ui->prismHeight->value().getUserString(),
ui->prismXSkew->value().getUserString(),
ui->prismYSkew->value().getUserString(),
ui->prismCircumradius->value().getSafeUserString(),
ui->prismHeight->value().getSafeUserString(),
ui->prismXSkew->value().getSafeUserString(),
ui->prismYSkew->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Prism"));
}
@@ -942,10 +942,10 @@ QString PrismPrimitive::change(const QString& objectName, const QString& placeme
"%1.Placement=%7\n")
.arg(objectName,
QString::number(ui->prismPolygon->value()),
ui->prismCircumradius->value().getUserString(),
ui->prismHeight->value().getUserString(),
ui->prismXSkew->value().getUserString(),
ui->prismYSkew->value().getUserString(),
ui->prismCircumradius->value().getSafeUserString(),
ui->prismHeight->value().getSafeUserString(),
ui->prismXSkew->value().getSafeUserString(),
ui->prismYSkew->value().getSafeUserString(),
placement);
}
@@ -1059,16 +1059,16 @@ QString WedgePrimitive::create(const QString& objectName, const QString& placeme
"App.ActiveDocument.%1.Placement=%12\n"
"App.ActiveDocument.%1.Label='%13'\n")
.arg(objectName,
ui->wedgeXmin->value().getUserString(),
ui->wedgeYmin->value().getUserString(),
ui->wedgeZmin->value().getUserString(),
ui->wedgeX2min->value().getUserString(),
ui->wedgeZ2min->value().getUserString(),
ui->wedgeXmax->value().getUserString(),
ui->wedgeYmax->value().getUserString())
.arg(ui->wedgeZmax->value().getUserString(),
ui->wedgeX2max->value().getUserString(),
ui->wedgeZ2max->value().getUserString(),
ui->wedgeXmin->value().getSafeUserString(),
ui->wedgeYmin->value().getSafeUserString(),
ui->wedgeZmin->value().getSafeUserString(),
ui->wedgeX2min->value().getSafeUserString(),
ui->wedgeZ2min->value().getSafeUserString(),
ui->wedgeXmax->value().getSafeUserString(),
ui->wedgeYmax->value().getSafeUserString())
.arg(ui->wedgeZmax->value().getSafeUserString(),
ui->wedgeX2max->value().getSafeUserString(),
ui->wedgeZ2max->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Wedge"));
}
@@ -1088,16 +1088,16 @@ QString WedgePrimitive::change(const QString& objectName, const QString& placeme
"%1.Z2max='%11'\n"
"%1.Placement=%12\n")
.arg(objectName,
ui->wedgeXmin->value().getUserString(),
ui->wedgeYmin->value().getUserString(),
ui->wedgeZmin->value().getUserString(),
ui->wedgeX2min->value().getUserString(),
ui->wedgeZ2min->value().getUserString(),
ui->wedgeXmax->value().getUserString(),
ui->wedgeYmax->value().getUserString(),
ui->wedgeZmax->value().getUserString())
.arg(ui->wedgeX2max->value().getUserString(),
ui->wedgeZ2max->value().getUserString(),
ui->wedgeXmin->value().getSafeUserString(),
ui->wedgeYmin->value().getSafeUserString(),
ui->wedgeZmin->value().getSafeUserString(),
ui->wedgeX2min->value().getSafeUserString(),
ui->wedgeZ2min->value().getSafeUserString(),
ui->wedgeXmax->value().getSafeUserString(),
ui->wedgeYmax->value().getSafeUserString(),
ui->wedgeZmax->value().getSafeUserString())
.arg(ui->wedgeX2max->value().getSafeUserString(),
ui->wedgeZ2max->value().getSafeUserString(),
placement);
}
@@ -1190,10 +1190,10 @@ QString HelixPrimitive::create(const QString& objectName, const QString& placeme
"App.ActiveDocument.%1.Placement=%7\n"
"App.ActiveDocument.%1.Label='%8'\n")
.arg(objectName,
ui->helixPitch->value().getUserString(),
ui->helixHeight->value().getUserString(),
ui->helixRadius->value().getUserString(),
ui->helixAngle->value().getUserString(),
ui->helixPitch->value().getSafeUserString(),
ui->helixHeight->value().getSafeUserString(),
ui->helixRadius->value().getSafeUserString(),
ui->helixAngle->value().getSafeUserString(),
QString::number(ui->helixLocalCS->currentIndex()),
placement,
DlgPrimitives::tr("Helix"));
@@ -1209,10 +1209,10 @@ QString HelixPrimitive::change(const QString& objectName, const QString& placeme
"%1.LocalCoord=%6\n"
"%1.Placement=%7\n")
.arg(objectName,
ui->helixPitch->value().getUserString(),
ui->helixHeight->value().getUserString(),
ui->helixRadius->value().getUserString(),
ui->helixAngle->value().getUserString(),
ui->helixPitch->value().getSafeUserString(),
ui->helixHeight->value().getSafeUserString(),
ui->helixRadius->value().getSafeUserString(),
ui->helixAngle->value().getSafeUserString(),
QString::number(ui->helixLocalCS->currentIndex()),
placement);
}
@@ -1281,9 +1281,9 @@ QString SpiralPrimitive::create(const QString& objectName, const QString& placem
"App.ActiveDocument.%1.Placement=%5\n"
"App.ActiveDocument.%1.Label='%6'\n")
.arg(objectName,
ui->spiralGrowth->value().getUserString(),
ui->spiralGrowth->value().getSafeUserString(),
QString::number(ui->spiralRotation->value()),
ui->spiralRadius->value().getUserString(),
ui->spiralRadius->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Spiral"));
}
@@ -1296,9 +1296,9 @@ QString SpiralPrimitive::change(const QString& objectName, const QString& placem
"%1.Radius='%4'\n"
"%1.Placement=%5\n")
.arg(objectName,
ui->spiralGrowth->value().getUserString(),
ui->spiralGrowth->value().getSafeUserString(),
QString::number(ui->spiralRotation->value()),
ui->spiralRadius->value().getUserString(),
ui->spiralRadius->value().getSafeUserString(),
placement);
}
@@ -1361,9 +1361,9 @@ QString CirclePrimitive::create(const QString& objectName, const QString& placem
"App.ActiveDocument.%1.Placement=%5\n"
"App.ActiveDocument.%1.Label='%6'\n")
.arg(objectName,
ui->circleRadius->value().getUserString(),
ui->circleAngle1->value().getUserString(),
ui->circleAngle2->value().getUserString(),
ui->circleRadius->value().getSafeUserString(),
ui->circleAngle1->value().getSafeUserString(),
ui->circleAngle2->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Circle"));
}
@@ -1376,9 +1376,9 @@ QString CirclePrimitive::change(const QString& objectName, const QString& placem
"%1.Angle2='%4'\n"
"%1.Placement=%5\n")
.arg(objectName,
ui->circleRadius->value().getUserString(),
ui->circleAngle1->value().getUserString(),
ui->circleAngle2->value().getUserString(),
ui->circleRadius->value().getSafeUserString(),
ui->circleAngle1->value().getSafeUserString(),
ui->circleAngle2->value().getSafeUserString(),
placement);
}
@@ -1446,10 +1446,10 @@ QString EllipsePrimitive::create(const QString& objectName, const QString& place
"App.ActiveDocument.%1.Placement=%6\n"
"App.ActiveDocument.%1.Label='%7'\n")
.arg(objectName,
ui->ellipseMajorRadius->value().getUserString(),
ui->ellipseMinorRadius->value().getUserString(),
ui->ellipseAngle1->value().getUserString(),
ui->ellipseAngle2->value().getUserString(),
ui->ellipseMajorRadius->value().getSafeUserString(),
ui->ellipseMinorRadius->value().getSafeUserString(),
ui->ellipseAngle1->value().getSafeUserString(),
ui->ellipseAngle2->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Ellipse"));
}
@@ -1463,10 +1463,10 @@ QString EllipsePrimitive::change(const QString& objectName, const QString& place
"%1.Angle2='%5'\n"
"%1.Placement=%6\n")
.arg(objectName,
ui->ellipseMajorRadius->value().getUserString(),
ui->ellipseMinorRadius->value().getUserString(),
ui->ellipseAngle1->value().getUserString(),
ui->ellipseAngle2->value().getUserString(),
ui->ellipseMajorRadius->value().getSafeUserString(),
ui->ellipseMinorRadius->value().getSafeUserString(),
ui->ellipseAngle1->value().getSafeUserString(),
ui->ellipseAngle2->value().getSafeUserString(),
placement);
}
@@ -1526,7 +1526,7 @@ QString PolygonPrimitive::create(const QString& objectName, const QString& place
"App.ActiveDocument.%1.Label='%5'\n")
.arg(objectName,
QString::number(ui->regularPolygonPolygon->value()),
ui->regularPolygonCircumradius->value().getUserString(),
ui->regularPolygonCircumradius->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Regular polygon"));
}
@@ -1539,7 +1539,7 @@ QString PolygonPrimitive::change(const QString& objectName, const QString& place
"%1.Placement=%4\n")
.arg(objectName,
QString::number(ui->regularPolygonPolygon->value()),
ui->regularPolygonCircumradius->value().getUserString(),
ui->regularPolygonCircumradius->value().getSafeUserString(),
placement);
}
@@ -1620,12 +1620,12 @@ QString LinePrimitive::create(const QString& objectName, const QString& placemen
"App.ActiveDocument.%1.Placement=%8\n"
"App.ActiveDocument.%1.Label='%9'\n")
.arg(objectName,
ui->edgeX1->value().getUserString(),
ui->edgeY1->value().getUserString(),
ui->edgeZ1->value().getUserString(),
ui->edgeX2->value().getUserString(),
ui->edgeY2->value().getUserString(),
ui->edgeZ2->value().getUserString(),
ui->edgeX1->value().getSafeUserString(),
ui->edgeY1->value().getSafeUserString(),
ui->edgeZ1->value().getSafeUserString(),
ui->edgeX2->value().getSafeUserString(),
ui->edgeY2->value().getSafeUserString(),
ui->edgeZ2->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Line"));
}
@@ -1641,12 +1641,12 @@ QString LinePrimitive::change(const QString& objectName, const QString& placemen
"%1.Z2='%7'\n"
"%1.Placement=%8\n")
.arg(objectName,
ui->edgeX1->value().getUserString(),
ui->edgeY1->value().getUserString(),
ui->edgeZ1->value().getUserString(),
ui->edgeX2->value().getUserString(),
ui->edgeY2->value().getUserString(),
ui->edgeZ2->value().getUserString(),
ui->edgeX1->value().getSafeUserString(),
ui->edgeY1->value().getSafeUserString(),
ui->edgeZ1->value().getSafeUserString(),
ui->edgeX2->value().getSafeUserString(),
ui->edgeY2->value().getSafeUserString(),
ui->edgeZ2->value().getSafeUserString(),
placement);
}
@@ -1721,9 +1721,9 @@ QString VertexPrimitive::create(const QString& objectName, const QString& placem
"App.ActiveDocument.%1.Placement=%5\n"
"App.ActiveDocument.%1.Label='%6'\n")
.arg(objectName,
ui->vertexX->value().getUserString(),
ui->vertexY->value().getUserString(),
ui->vertexZ->value().getUserString(),
ui->vertexX->value().getSafeUserString(),
ui->vertexY->value().getSafeUserString(),
ui->vertexZ->value().getSafeUserString(),
placement,
DlgPrimitives::tr("Vertex"));
}
@@ -1736,9 +1736,9 @@ QString VertexPrimitive::change(const QString& objectName, const QString& placem
"%1.Z='%4'\n"
"%1.Placement=%5\n")
.arg(objectName,
ui->vertexX->value().getUserString(),
ui->vertexY->value().getUserString(),
ui->vertexZ->value().getUserString(),
ui->vertexX->value().getSafeUserString(),
ui->vertexY->value().getSafeUserString(),
ui->vertexZ->value().getSafeUserString(),
placement);
}

View File

@@ -734,9 +734,9 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.Width='%3'\n"
"%1.Height='%4'\n")
.arg(name,
ui->boxLength->value().getUserString(),
ui->boxWidth->value().getUserString(),
ui->boxHeight->value().getUserString());
ui->boxLength->value().getSafeUserString(),
ui->boxWidth->value().getSafeUserString(),
ui->boxHeight->value().getSafeUserString());
break;
case 2: // cylinder
@@ -747,11 +747,11 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.FirstAngle='%5'\n"
"%1.SecondAngle='%6'\n")
.arg(name,
ui->cylinderRadius->value().getUserString(),
ui->cylinderHeight->value().getUserString(),
ui->cylinderAngle->value().getUserString(),
ui->cylinderXSkew->value().getUserString(),
ui->cylinderYSkew->value().getUserString());
ui->cylinderRadius->value().getSafeUserString(),
ui->cylinderHeight->value().getSafeUserString(),
ui->cylinderAngle->value().getSafeUserString(),
ui->cylinderXSkew->value().getSafeUserString(),
ui->cylinderYSkew->value().getSafeUserString());
break;
case 3: // cone
@@ -767,10 +767,10 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.Height='%4'\n"
"%1.Angle='%5'\n")
.arg(name,
ui->coneRadius1->value().getUserString(),
ui->coneRadius2->value().getUserString(),
ui->coneHeight->value().getUserString(),
ui->coneAngle->value().getUserString());
ui->coneRadius1->value().getSafeUserString(),
ui->coneRadius2->value().getSafeUserString(),
ui->coneHeight->value().getSafeUserString(),
ui->coneAngle->value().getSafeUserString());
break;
case 4: // sphere
@@ -780,10 +780,10 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.Angle2='%4'\n"
"%1.Angle3='%5'\n")
.arg(name,
ui->sphereRadius->value().getUserString(),
ui->sphereAngle1->value().getUserString(),
ui->sphereAngle2->value().getUserString(),
ui->sphereAngle3->value().getUserString());
ui->sphereRadius->value().getSafeUserString(),
ui->sphereAngle1->value().getSafeUserString(),
ui->sphereAngle2->value().getSafeUserString(),
ui->sphereAngle3->value().getSafeUserString());
break;
case 5: // ellipsoid
cmd = QString::fromLatin1(
@@ -794,12 +794,12 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.Angle2='%6'\n"
"%1.Angle3='%7'\n")
.arg(name,
ui->ellipsoidRadius1->value().getUserString(),
ui->ellipsoidRadius2->value().getUserString(),
ui->ellipsoidRadius3->value().getUserString(),
ui->ellipsoidAngle1->value().getUserString(),
ui->ellipsoidAngle2->value().getUserString(),
ui->ellipsoidAngle3->value().getUserString());
ui->ellipsoidRadius1->value().getSafeUserString(),
ui->ellipsoidRadius2->value().getSafeUserString(),
ui->ellipsoidRadius3->value().getSafeUserString(),
ui->ellipsoidAngle1->value().getSafeUserString(),
ui->ellipsoidAngle2->value().getSafeUserString(),
ui->ellipsoidAngle3->value().getSafeUserString());
break;
case 6: // torus
@@ -810,11 +810,11 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.Angle2='%5'\n"
"%1.Angle3='%6'\n")
.arg(name,
ui->torusRadius1->value().getUserString(),
ui->torusRadius2->value().getUserString(),
ui->torusAngle1->value().getUserString(),
ui->torusAngle2->value().getUserString(),
ui->torusAngle3->value().getUserString());
ui->torusRadius1->value().getSafeUserString(),
ui->torusRadius2->value().getSafeUserString(),
ui->torusAngle1->value().getSafeUserString(),
ui->torusAngle2->value().getSafeUserString(),
ui->torusAngle3->value().getSafeUserString());
break;
case 7: // prism
cmd = QString::fromLatin1(
@@ -825,10 +825,10 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.SecondAngle='%6'\n")
.arg(name,
QString::number(ui->prismPolygon->value()),
ui->prismCircumradius->value().getUserString(),
ui->prismHeight->value().getUserString(),
ui->prismXSkew->value().getUserString(),
ui->prismYSkew->value().getUserString());
ui->prismCircumradius->value().getSafeUserString(),
ui->prismHeight->value().getSafeUserString(),
ui->prismXSkew->value().getSafeUserString(),
ui->prismYSkew->value().getSafeUserString());
break;
case 8: // wedge
// Xmin/max, Ymin/max and Zmin/max must each not be equal
@@ -859,16 +859,16 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject *obj)
"%1.X2max='%10'\n"
"%1.Z2max='%11'\n")
.arg(name,
ui->wedgeXmin->value().getUserString(),
ui->wedgeYmin->value().getUserString(),
ui->wedgeZmin->value().getUserString(),
ui->wedgeX2min->value().getUserString(),
ui->wedgeZ2min->value().getUserString(),
ui->wedgeXmax->value().getUserString(),
ui->wedgeYmax->value().getUserString(),
ui->wedgeZmax->value().getUserString())
.arg(ui->wedgeX2max->value().getUserString(),
ui->wedgeZ2max->value().getUserString());
ui->wedgeXmin->value().getSafeUserString(),
ui->wedgeYmin->value().getSafeUserString(),
ui->wedgeZmin->value().getSafeUserString(),
ui->wedgeX2min->value().getSafeUserString(),
ui->wedgeZ2min->value().getSafeUserString(),
ui->wedgeXmax->value().getSafeUserString(),
ui->wedgeYmax->value().getSafeUserString(),
ui->wedgeZmax->value().getSafeUserString())
.arg(ui->wedgeX2max->value().getSafeUserString(),
ui->wedgeZ2max->value().getSafeUserString());
break;
default: