From 4f6374eef6045e18e769b2322f4dc0c88ec61b8e Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 12 Jan 2016 17:20:11 +0100 Subject: [PATCH] Hyperbola UI equality constraint representation fixed --- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 28 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index d09971586..e30baf6b1 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -3503,7 +3503,17 @@ Restart: angle1 = atan2(majdir.y, majdir.x); angle1plus = (startangle + endangle)/2; midpos1 = aoe->getCenter(); - } else + } else if (geo1->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { + const Part::GeomArcOfHyperbola *aoh = dynamic_cast(geo1); + r1a = aoh->getMajorRadius(); + r1b = aoh->getMinorRadius(); + double startangle, endangle; + aoh->getRange(startangle, endangle, /*emulateCCW=*/true); + Base::Vector3d majdir = aoh->getMajorAxisDir(); + angle1 = atan2(majdir.y, majdir.x); + angle1plus = (startangle + endangle)/2; + midpos1 = aoh->getCenter(); + }else break; if (geo2->getTypeId() == Part::GeomCircle::getClassTypeId()) { @@ -3536,11 +3546,22 @@ Restart: angle2 = atan2(majdir.y, majdir.x); angle2plus = (startangle + endangle)/2; midpos2 = aoe->getCenter(); + } else if (geo2->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { + const Part::GeomArcOfHyperbola *aoh = dynamic_cast(geo2); + r2a = aoh->getMajorRadius(); + r2b = aoh->getMinorRadius(); + double startangle, endangle; + aoh->getRange(startangle, endangle, /*emulateCCW=*/true); + Base::Vector3d majdir = aoh->getMajorAxisDir(); + angle2 = atan2(majdir.y, majdir.x); + angle2plus = (startangle + endangle)/2; + midpos2 = aoh->getCenter(); } else break; if( geo1->getTypeId() == Part::GeomEllipse::getClassTypeId() || - geo1->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() ){ + geo1->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || + geo1->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId() ){ Base::Vector3d majDir, minDir, rvec; majDir = Base::Vector3d(cos(angle1),sin(angle1),0);//direction of major axis of ellipse @@ -3559,7 +3580,8 @@ Restart: if( geo2->getTypeId() == Part::GeomEllipse::getClassTypeId() || - geo2->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() ) { + geo2->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || + geo2->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId()) { Base::Vector3d majDir, minDir, rvec; majDir = Base::Vector3d(cos(angle2),sin(angle2),0);//direction of major axis of ellipse