From 89a7b2a92fcd39fb465b5919aa4b1fb6fc344862 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 14 May 2018 09:18:39 -0400 Subject: [PATCH] Fix selection for radius Dims - selection of ellipse curves was allowed but not supported for radius dims. --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 7 ++++++- src/Mod/TechDraw/Gui/CommandCreateDims.cpp | 8 ++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index fc3dbae2fa..81f44c6df7 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -248,6 +248,8 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void) TechDrawGeometry::BaseGeom* base = getViewPart()->getProjEdgeByIndex(idx); TechDrawGeometry::Circle* circle; arcPoints pts; + pts.center = Base::Vector3d(0.0,0.0,0.0); + pts.radius = 0.0; if( (base && base->geomType == TechDrawGeometry::GeomType::CIRCLE) || (base && base->geomType == TechDrawGeometry::GeomType::ARCOFCIRCLE)) { circle = static_cast (base); @@ -277,6 +279,8 @@ App::DocumentObjectExecReturn *DrawViewDimension::execute(void) TechDrawGeometry::BaseGeom* base = getViewPart()->getProjEdgeByIndex(idx); TechDrawGeometry::Circle* circle; arcPoints pts; + pts.center = Base::Vector3d(0.0,0.0,0.0); + pts.radius = 0.0; if ((base && base->geomType == TechDrawGeometry::GeomType::CIRCLE) || (base && base->geomType == TechDrawGeometry::GeomType::ARCOFCIRCLE)) { circle = static_cast (base); @@ -364,7 +368,7 @@ std::string DrawViewDimension::getFormatedValue(bool obtuse) QString specStr = QString::fromUtf8(FormatSpec.getStrValue().data(),FormatSpec.getStrValue().size()); double val = std::abs(getDimValue()); //internal units! - + Base::Quantity qVal; qVal.setValue(val); if (Type.isValue("Angle")) { @@ -490,6 +494,7 @@ double DrawViewDimension::getDimValue() } else if(Type.isValue("Radius")){ arcPoints pts = m_arcPoints; result = pts.radius / getViewPart()->getScale(); //Projected BaseGeom is scaled for drawing + } else if(Type.isValue("Diameter")){ arcPoints pts = m_arcPoints; diff --git a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp index 3a9f5407fd..61ddd139ad 100644 --- a/src/Mod/TechDraw/Gui/CommandCreateDims.cpp +++ b/src/Mod/TechDraw/Gui/CommandCreateDims.cpp @@ -1005,11 +1005,11 @@ int _isValidSingleEdge(Gui::Command* cmd) { edgeType = isDiagonal; } } else if (geom->geomType == TechDrawGeometry::CIRCLE || - geom->geomType == TechDrawGeometry::ELLIPSE || - geom->geomType == TechDrawGeometry::ARCOFCIRCLE || - geom->geomType == TechDrawGeometry::ARCOFELLIPSE ) { + geom->geomType == TechDrawGeometry::ARCOFCIRCLE ) { edgeType = isCircle; - } else if (geom->geomType == TechDrawGeometry::BSPLINE) { + } else if (geom->geomType == TechDrawGeometry::ELLIPSE || + geom->geomType == TechDrawGeometry::ARCOFELLIPSE || + geom->geomType == TechDrawGeometry::BSPLINE) { edgeType = isCurve; } else { edgeType = isInvalid;