From d39bd4906bea1ec647de1f472db63f33b1115072 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 20 Aug 2016 19:45:36 +0200 Subject: [PATCH] fix Coverity issues --- src/Mod/Sketcher/App/AppSketcherPy.cpp | 2 +- src/Mod/Sketcher/App/Sketch.cpp | 38 ++++----- src/Mod/Sketcher/App/Sketch.h | 5 +- src/Mod/Sketcher/App/planegcs/GCS.cpp | 1 + src/Mod/Sketcher/Gui/Command.cpp | 6 +- src/Mod/Sketcher/Gui/CommandConstraints.cpp | 77 +++++++++---------- src/Mod/Sketcher/Gui/CommandCreateGeo.cpp | 14 ++-- src/Mod/Sketcher/Gui/CommandSketcherTools.cpp | 49 +++++------- src/Mod/Sketcher/Gui/DrawSketchHandler.cpp | 14 ++-- .../Gui/PropertyConstraintListItem.cpp | 3 +- .../Sketcher/Gui/SketchOrientationDialog.cpp | 3 +- .../Sketcher/Gui/TaskSketcherConstrains.cpp | 21 ++--- 12 files changed, 111 insertions(+), 122 deletions(-) diff --git a/src/Mod/Sketcher/App/AppSketcherPy.cpp b/src/Mod/Sketcher/App/AppSketcherPy.cpp index 437f5175a..27a301f68 100644 --- a/src/Mod/Sketcher/App/AppSketcherPy.cpp +++ b/src/Mod/Sketcher/App/AppSketcherPy.cpp @@ -77,7 +77,7 @@ private: throw Py::RuntimeError("No file extension"); throw Py::RuntimeError("Unknown file extension"); - return Py::None(); + //return Py::None(); } Py::Object insert(const Py::Tuple& args) diff --git a/src/Mod/Sketcher/App/Sketch.cpp b/src/Mod/Sketcher/App/Sketch.cpp index 4933b5512..3039d6a61 100644 --- a/src/Mod/Sketcher/App/Sketch.cpp +++ b/src/Mod/Sketcher/App/Sketch.cpp @@ -62,7 +62,7 @@ using namespace Part; TYPESYSTEM_SOURCE(Sketcher::Sketch, Base::Persistence) Sketch::Sketch() -: GCSsys(), ConstraintsCounter(0), isInitMove(false), +: SolveTime(0), GCSsys(), ConstraintsCounter(0), isInitMove(false), isFine(true), defaultSolver(GCS::DogLeg),defaultSolverRedundant(GCS::DogLeg),debugMode(GCS::Minimal) { } @@ -183,27 +183,27 @@ const char* nameByType(Sketch::GeoType type) int Sketch::addGeometry(const Part::Geometry *geo, bool fixed) { if (geo->getTypeId() == GeomPoint::getClassTypeId()) { // add a point - const GeomPoint *point = dynamic_cast(geo); + const GeomPoint *point = static_cast(geo); // create the definition struct for that geom return addPoint(*point, fixed); } else if (geo->getTypeId() == GeomLineSegment::getClassTypeId()) { // add a line - const GeomLineSegment *lineSeg = dynamic_cast(geo); + const GeomLineSegment *lineSeg = static_cast(geo); // create the definition struct for that geom return addLineSegment(*lineSeg, fixed); } else if (geo->getTypeId() == GeomCircle::getClassTypeId()) { // add a circle - const GeomCircle *circle = dynamic_cast(geo); + const GeomCircle *circle = static_cast(geo); // create the definition struct for that geom return addCircle(*circle, fixed); } else if (geo->getTypeId() == GeomEllipse::getClassTypeId()) { // add a ellipse - const GeomEllipse *ellipse = dynamic_cast(geo); + const GeomEllipse *ellipse = static_cast(geo); // create the definition struct for that geom return addEllipse(*ellipse, fixed); } else if (geo->getTypeId() == GeomArcOfCircle::getClassTypeId()) { // add an arc - const GeomArcOfCircle *aoc = dynamic_cast(geo); + const GeomArcOfCircle *aoc = static_cast(geo); // create the definition struct for that geom return addArc(*aoc, fixed); } else if (geo->getTypeId() == GeomArcOfEllipse::getClassTypeId()) { // add an arc - const GeomArcOfEllipse *aoe = dynamic_cast(geo); + const GeomArcOfEllipse *aoe = static_cast(geo); // create the definition struct for that geom return addArcOfEllipse(*aoe, fixed); } else { @@ -594,19 +594,19 @@ Py::Tuple Sketch::getPyGeometry(void) const Base::Vector3d temp(*(Points[it->startPointId].x),*(Points[it->startPointId].y),0); tuple[i] = Py::asObject(new VectorPy(temp)); } else if (it->type == Line) { - GeomLineSegment *lineSeg = dynamic_cast(it->geo->clone()); + GeomLineSegment *lineSeg = static_cast(it->geo->clone()); tuple[i] = Py::asObject(new LinePy(lineSeg)); } else if (it->type == Arc) { - GeomArcOfCircle *aoc = dynamic_cast(it->geo->clone()); + GeomArcOfCircle *aoc = static_cast(it->geo->clone()); tuple[i] = Py::asObject(new ArcOfCirclePy(aoc)); } else if (it->type == Circle) { - GeomCircle *circle = dynamic_cast(it->geo->clone()); + GeomCircle *circle = static_cast(it->geo->clone()); tuple[i] = Py::asObject(new CirclePy(circle)); } else if (it->type == Ellipse) { - GeomEllipse *ellipse = dynamic_cast(it->geo->clone()); + GeomEllipse *ellipse = static_cast(it->geo->clone()); tuple[i] = Py::asObject(new EllipsePy(ellipse)); } else if (it->type == ArcOfEllipse) { - GeomArcOfEllipse *ellipse = dynamic_cast(it->geo->clone()); + GeomArcOfEllipse *ellipse = static_cast(it->geo->clone()); tuple[i] = Py::asObject(new ArcOfEllipsePy(ellipse)); } else { @@ -922,7 +922,7 @@ int Sketch::addConstraint(const Constraint *constraint) c.value, c.secondvalue); } break; - case None: + case Sketcher::None: // ambiguous enum value case NumConstraintTypes: break; } @@ -1993,13 +1993,13 @@ bool Sketch::updateGeometry() for (std::vector::const_iterator it=Geoms.begin(); it != Geoms.end(); ++it, i++) { try { if (it->type == Point) { - GeomPoint *point = dynamic_cast(it->geo); + GeomPoint *point = static_cast(it->geo); point->setPoint(Vector3d(*Points[it->startPointId].x, *Points[it->startPointId].y, 0.0) ); } else if (it->type == Line) { - GeomLineSegment *lineSeg = dynamic_cast(it->geo); + GeomLineSegment *lineSeg = static_cast(it->geo); lineSeg->setPoints(Vector3d(*Lines[it->index].p1.x, *Lines[it->index].p1.y, 0.0), @@ -2014,7 +2014,7 @@ bool Sketch::updateGeometry() // *myArc.start.y = *myArc.center.y + *myArc.rad * sin(*myArc.startAngle); // *myArc.end.x = *myArc.center.x + *myArc.rad * cos(*myArc.endAngle); // *myArc.end.y = *myArc.center.y + *myArc.rad * sin(*myArc.endAngle); - GeomArcOfCircle *aoc = dynamic_cast(it->geo); + GeomArcOfCircle *aoc = static_cast(it->geo); aoc->setCenter(Vector3d(*Points[it->midPointId].x, *Points[it->midPointId].y, 0.0) @@ -2024,7 +2024,7 @@ bool Sketch::updateGeometry() } else if (it->type == ArcOfEllipse) { GCS::ArcOfEllipse &myArc = ArcsOfEllipse[it->index]; - GeomArcOfEllipse *aoe = dynamic_cast(it->geo); + GeomArcOfEllipse *aoe = static_cast(it->geo); Base::Vector3d center = Vector3d(*Points[it->midPointId].x, *Points[it->midPointId].y, 0.0); Base::Vector3d f1 = Vector3d(*myArc.focus1.x, *myArc.focus1.y, 0.0); @@ -2044,7 +2044,7 @@ bool Sketch::updateGeometry() aoe->setMajorAxisDir(fd); aoe->setRange(*myArc.startAngle, *myArc.endAngle, /*emulateCCW=*/true); } else if (it->type == Circle) { - GeomCircle *circ = dynamic_cast(it->geo); + GeomCircle *circ = static_cast(it->geo); circ->setCenter(Vector3d(*Points[it->midPointId].x, *Points[it->midPointId].y, 0.0) @@ -2052,7 +2052,7 @@ bool Sketch::updateGeometry() circ->setRadius(*Circles[it->index].rad); } else if (it->type == Ellipse) { - GeomEllipse *ellipse = dynamic_cast(it->geo); + GeomEllipse *ellipse = static_cast(it->geo); Base::Vector3d center = Vector3d(*Points[it->midPointId].x, *Points[it->midPointId].y, 0.0); Base::Vector3d f1 = Vector3d(*Ellipses[it->index].focus1.x, *Ellipses[it->index].focus1.y, 0.0); diff --git a/src/Mod/Sketcher/App/Sketch.h b/src/Mod/Sketcher/App/Sketch.h index d8d3ef7d1..6d97df44f 100644 --- a/src/Mod/Sketcher/App/Sketch.h +++ b/src/Mod/Sketcher/App/Sketch.h @@ -348,7 +348,10 @@ protected: }; /// container element to store and work with the constraints of this sketch struct ConstrDef { - ConstrDef() : driving(true) {} + ConstrDef() : constr(0) + , driving(true) + , value(0) + , secondvalue(0) {} Constraint * constr; // pointer to the constraint bool driving; double * value; diff --git a/src/Mod/Sketcher/App/planegcs/GCS.cpp b/src/Mod/Sketcher/App/planegcs/GCS.cpp index f6930dd92..77dfcbc96 100644 --- a/src/Mod/Sketcher/App/planegcs/GCS.cpp +++ b/src/Mod/Sketcher/App/planegcs/GCS.cpp @@ -194,6 +194,7 @@ System::System() , subSystems(0) , subSystemsAux(0) , reference(0) + , dofs(0) , hasUnknowns(false) , hasDiagnosis(false) , isInit(false) diff --git a/src/Mod/Sketcher/Gui/Command.cpp b/src/Mod/Sketcher/Gui/Command.cpp index 740861407..795d178a8 100644 --- a/src/Mod/Sketcher/Gui/Command.cpp +++ b/src/Mod/Sketcher/Gui/Command.cpp @@ -605,8 +605,10 @@ void CmdSketcherViewSketch::activated(int iMsg) { Gui::Document *doc = getActiveGuiDocument(); SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); - doCommand(Gui,"Gui.ActiveDocument.ActiveView.setCameraOrientation(App.ActiveDocument.%s.Placement.Rotation.Q)" - ,vp->getObject()->getNameInDocument()); + if (vp) { + doCommand(Gui,"Gui.ActiveDocument.ActiveView.setCameraOrientation(App.ActiveDocument.%s.Placement.Rotation.Q)" + ,vp->getObject()->getNameInDocument()); + } } bool CmdSketcherViewSketch::isActive(void) diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.cpp b/src/Mod/Sketcher/Gui/CommandConstraints.cpp index 63aeb7200..ed36d3f63 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.cpp +++ b/src/Mod/Sketcher/Gui/CommandConstraints.cpp @@ -68,7 +68,7 @@ bool isCreateConstraintActive(Gui::Document *doc) if (doc) { // checks if a Sketch Viewprovider is in Edit and is in no special mode if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - if (dynamic_cast(doc->getInEdit()) + if (static_cast(doc->getInEdit()) ->getSketchMode() == ViewProviderSketch::STATUS_NONE) { if (Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) > 0) return true; @@ -124,14 +124,7 @@ void openEditDatumDialog(Sketcher::SketchObject* sketch, int ConstrNbr) } // e.g. an angle or a distance X or Y applied on a line or two vertexes - if (Constr->Type == Sketcher::Angle || - ((Constr->Type == Sketcher::DistanceX || Constr->Type == Sketcher::DistanceY) && - (Constr->FirstPos == Sketcher::none || Constr->Second != Sketcher::Constraint::GeoUndef))) - // hide negative sign - init_val.setValue(datum); - - else // show negative sign - init_val.setValue(datum); + init_val.setValue(datum); ui_ins_datum.labelEdit->setValue(init_val); ui_ins_datum.labelEdit->selectNumber(); @@ -214,7 +207,7 @@ void finishDistanceConstraint(Gui::Command* cmd, Sketcher::SketchObject* sketch, Gui::Document *doc = cmd->getActiveGuiDocument(); float sf = 1.f; if (doc && doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch *vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch *vp = static_cast(doc->getInEdit()); sf = vp->getScaleFactor(); constr->LabelDistance = 2. * sf; @@ -509,11 +502,11 @@ int SketchSelection::setUp(void) return -1; } - SketchObj = dynamic_cast(selection[0].getObject()); + SketchObj = static_cast(selection[0].getObject()); SketchSubNames = selection[0].getSubNames(); } else if(selection.size() == 2) { if(selection[0].getObject()->getTypeId().isDerivedFrom(Sketcher::SketchObject::getClassTypeId())){ - SketchObj = dynamic_cast(selection[0].getObject()); + SketchObj = static_cast(selection[0].getObject()); // check if the none sketch object is the support of the sketch if(selection[1].getObject() != SketchObj->Support.getValue()){ ErrorMsg = QObject::tr("Only sketch and its support is allowed to select"); @@ -525,7 +518,7 @@ int SketchSelection::setUp(void) SupportSubNames = selection[1].getSubNames(); } else if (selection[1].getObject()->getTypeId().isDerivedFrom(Sketcher::SketchObject::getClassTypeId())) { - SketchObj = dynamic_cast(selection[1].getObject()); + SketchObj = static_cast(selection[1].getObject()); // check if the none sketch object is the support of the sketch if(selection[0].getObject() != SketchObj->Support.getValue()){ ErrorMsg = QObject::tr("Only sketch and its support is allowed to select"); @@ -580,7 +573,7 @@ void CmdSketcherConstrainHorizontal::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues(); std::vector ids; @@ -677,7 +670,7 @@ void CmdSketcherConstrainVertical::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues(); std::vector ids; @@ -773,7 +766,7 @@ void CmdSketcherConstrainLock::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() != 1) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -875,7 +868,7 @@ void CmdSketcherConstrainCoincident::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() < 2) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -967,7 +960,7 @@ void CmdSketcherConstrainDistance::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() < 1 || SubNames.size() > 2) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -1037,7 +1030,7 @@ void CmdSketcherConstrainDistance::activated(int iMsg) const Part::Geometry *geom = Obj->getGeometry(GeoId2); if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { const Part::GeomLineSegment *lineSeg; - lineSeg = dynamic_cast(geom); + lineSeg = static_cast(geom); Base::Vector3d pnt1 = lineSeg->getStartPoint(); Base::Vector3d pnt2 = lineSeg->getEndPoint(); Base::Vector3d d = pnt2-pnt1; @@ -1071,7 +1064,7 @@ void CmdSketcherConstrainDistance::activated(int iMsg) const Part::Geometry *geom = Obj->getGeometry(GeoId1); if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { const Part::GeomLineSegment *lineSeg; - lineSeg = dynamic_cast(geom); + lineSeg = static_cast(geom); double ActLength = (lineSeg->getEndPoint()-lineSeg->getStartPoint()).Length(); openCommand("add length constraint"); @@ -1148,7 +1141,7 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); //count curves and points std::vector points; @@ -1234,7 +1227,7 @@ void CmdSketcherConstrainDistanceX::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() < 1 || SubNames.size() > 2) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -1392,7 +1385,7 @@ void CmdSketcherConstrainDistanceY::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() < 1 || SubNames.size() > 2) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -1549,7 +1542,7 @@ void CmdSketcherConstrainParallel::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // go through the selected subelements @@ -1970,7 +1963,7 @@ void CmdSketcherConstrainTangent::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() != 2 && SubNames.size() != 3){ strError = QObject::tr("Wrong number of selected objects!","tangent constraint"); @@ -2224,7 +2217,7 @@ void CmdSketcherConstrainRadius::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.empty()) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -2241,12 +2234,12 @@ void CmdSketcherConstrainRadius::activated(int iMsg) int GeoId = std::atoi(it->substr(4,4000).c_str()) - 1; const Part::Geometry *geom = Obj->getGeometry(GeoId); if (geom && geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { - const Part::GeomArcOfCircle *arc = dynamic_cast(geom); + const Part::GeomArcOfCircle *arc = static_cast(geom); double radius = arc->getRadius(); geoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } else if (geom && geom->getTypeId() == Part::GeomCircle::getClassTypeId()) { - const Part::GeomCircle *circle = dynamic_cast(geom); + const Part::GeomCircle *circle = static_cast(geom); double radius = circle->getRadius(); geoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } @@ -2255,12 +2248,12 @@ void CmdSketcherConstrainRadius::activated(int iMsg) int GeoId = -std::atoi(it->substr(12,4000).c_str()) - 2; const Part::Geometry *geom = Obj->getGeometry(GeoId); if (geom && geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { - const Part::GeomArcOfCircle *arc = dynamic_cast(geom); + const Part::GeomArcOfCircle *arc = static_cast(geom); double radius = arc->getRadius(); externalGeoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } else if (geom && geom->getTypeId() == Part::GeomCircle::getClassTypeId()) { - const Part::GeomCircle *circle = dynamic_cast(geom); + const Part::GeomCircle *circle = static_cast(geom); double radius = circle->getRadius(); externalGeoIdRadiusMap.push_back(std::make_pair(GeoId, radius)); } @@ -2303,7 +2296,7 @@ void CmdSketcherConstrainRadius::activated(int iMsg) Gui::Document *doc = getActiveGuiDocument(); float sf = 1.f; if (doc && doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch *vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch *vp = static_cast(doc->getInEdit()); sf = vp->getScaleFactor(); for (std::size_t i=0; igetInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch *vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch *vp = static_cast(doc->getInEdit()); sf = vp->getScaleFactor(); for (std::size_t i=0; i &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() < 1 || SubNames.size() > 3) { //goto ExitWithMessage; @@ -2646,8 +2639,8 @@ void CmdSketcherConstrainAngle::activated(int iMsg) const Part::Geometry *geom2 = Obj->getGeometry(GeoId2); if (geom1->getTypeId() == Part::GeomLineSegment::getClassTypeId() && geom2->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { - const Part::GeomLineSegment *lineSeg1 = dynamic_cast(geom1); - const Part::GeomLineSegment *lineSeg2 = dynamic_cast(geom2); + const Part::GeomLineSegment *lineSeg1 = static_cast(geom1); + const Part::GeomLineSegment *lineSeg2 = static_cast(geom2); // find the two closest line ends Sketcher::PointPos PosId1,PosId2; @@ -2718,7 +2711,7 @@ void CmdSketcherConstrainAngle::activated(int iMsg) const Part::Geometry *geom = Obj->getGeometry(GeoId1); if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { const Part::GeomLineSegment *lineSeg; - lineSeg = dynamic_cast(geom); + lineSeg = static_cast(geom); Base::Vector3d dir = lineSeg->getEndPoint()-lineSeg->getStartPoint(); double ActAngle = atan2(dir.y,dir.x); @@ -2741,7 +2734,7 @@ void CmdSketcherConstrainAngle::activated(int iMsg) } else if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { const Part::GeomArcOfCircle *arc; - arc = dynamic_cast(geom); + arc = static_cast(geom); double startangle, endangle; arc->getRange(startangle, endangle, /*EmulateCCWXY=*/true); double angle = endangle - startangle; @@ -2820,7 +2813,7 @@ void CmdSketcherConstrainEqual::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // go through the selected subelements @@ -2929,7 +2922,6 @@ void CmdSketcherConstrainSymmetric::activated(int iMsg) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -2941,6 +2933,7 @@ void CmdSketcherConstrainSymmetric::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); if (SubNames.size() != 3 && SubNames.size() != 2) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -2955,7 +2948,7 @@ void CmdSketcherConstrainSymmetric::activated(int iMsg) getIdsFromName(SubNames[1], Obj, GeoId2, PosId2); if (SubNames.size() == 2) { - checkBothExternal(GeoId1, GeoId2); + //checkBothExternal(GeoId1, GeoId2); if (isVertex(GeoId1,PosId1) && isEdge(GeoId2,PosId2)) { std::swap(GeoId1,GeoId2); std::swap(PosId1,PosId2); @@ -3109,7 +3102,7 @@ void CmdSketcherConstrainSnellsLaw::activated(int iMsg) try{ // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -3257,7 +3250,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // go through the selected subelements if (SubNames.size() < 2) { diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index e68c7eb38..99095af54 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -108,7 +108,7 @@ void ActivateHandler(Gui::Document *doc,DrawSketchHandler *handler) if (doc) { if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom (SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch* vp = dynamic_cast (doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast (doc->getInEdit()); vp->purgeHandler(); vp->activateHandler(handler); } @@ -1141,7 +1141,7 @@ protected: // Use updated startPoint/endPoint as autoconstraints can modify the position const Part::Geometry *geom = sketchgui->getSketchObject()->getGeometry(GeoId); if (geom->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { - const Part::GeomLineSegment *lineSeg = dynamic_cast(geom); + const Part::GeomLineSegment *lineSeg = static_cast(geom); dirVec.Set(lineSeg->getEndPoint().x - lineSeg->getStartPoint().x, lineSeg->getEndPoint().y - lineSeg->getStartPoint().y, 0.f); @@ -1153,7 +1153,7 @@ protected: EditCurve[0] = Base::Vector2D(lineSeg->getEndPoint().x, lineSeg->getEndPoint().y); } else if (geom->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { - const Part::GeomArcOfCircle *arcSeg = dynamic_cast(geom); + const Part::GeomArcOfCircle *arcSeg = static_cast(geom); if (PosId == Sketcher::start) { EditCurve[0] = Base::Vector2D(arcSeg->getStartPoint(/*emulateCCW=*/true).x,arcSeg->getStartPoint(/*emulateCCW=*/true).y); dirVec = Base::Vector3d(0.f,0.f,-1.0) % (arcSeg->getStartPoint(/*emulateCCW=*/true)-arcSeg->getCenter()); @@ -4152,8 +4152,8 @@ public: construction=geom1->Construction && geom2->Construction; if (geom1->getTypeId() == Part::GeomLineSegment::getClassTypeId() && geom2->getTypeId() == Part::GeomLineSegment::getClassTypeId()) { - const Part::GeomLineSegment *lineSeg1 = dynamic_cast(geom1); - const Part::GeomLineSegment *lineSeg2 = dynamic_cast(geom2); + const Part::GeomLineSegment *lineSeg1 = static_cast(geom1); + const Part::GeomLineSegment *lineSeg2 = static_cast(geom2); Base::Vector3d dir1 = lineSeg1->getEndPoint() - lineSeg1->getStartPoint(); Base::Vector3d dir2 = lineSeg2->getEndPoint() - lineSeg2->getStartPoint(); if (PosIdList[0] == Sketcher::end) @@ -4225,9 +4225,9 @@ public: Base::Vector2D secondPos = onSketchPos; // guess fillet radius - const Part::GeomLineSegment *lineSeg1 = dynamic_cast + const Part::GeomLineSegment *lineSeg1 = static_cast (sketchgui->getSketchObject()->getGeometry(firstCurve)); - const Part::GeomLineSegment *lineSeg2 = dynamic_cast + const Part::GeomLineSegment *lineSeg2 = static_cast (sketchgui->getSketchObject()->getGeometry(secondCurve)); Base::Vector3d refPnt1(firstPos.fX, firstPos.fY, 0.f); Base::Vector3d refPnt2(secondPos.fX, secondPos.fY, 0.f); diff --git a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp index 7e5ca46a5..46ae8670d 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp @@ -61,7 +61,7 @@ bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection ) if (doc) { // checks if a Sketch Viewprovider is in Edit and is in no special mode if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom(SketcherGui::ViewProviderSketch::getClassTypeId())) { - if (dynamic_cast(doc->getInEdit()) + if (static_cast(doc->getInEdit()) ->getSketchMode() == ViewProviderSketch::STATUS_NONE) { if (!actsOnSelection) return true; @@ -80,7 +80,7 @@ void ActivateAcceleratorHandler(Gui::Document *doc,DrawSketchHandler *handler) if (doc->getInEdit() && doc->getInEdit()->isDerivedFrom (SketcherGui::ViewProviderSketch::getClassTypeId())) { - SketcherGui::ViewProviderSketch* vp = dynamic_cast (doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast (doc->getInEdit()); vp->purgeHandler(); vp->activateHandler(handler); } @@ -124,7 +124,7 @@ void CmdSketcherCloseShape::activated(int iMsg) return; } - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); int GeoIdFirst=-1; int GeoIdLast=-1; @@ -233,7 +233,7 @@ void CmdSketcherConnect::activated(int iMsg) QObject::tr("Select at least two edges from the sketch.")); return; } - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // undo command open openCommand("add coincident constraint"); @@ -304,7 +304,6 @@ void CmdSketcherSelectConstraints::activated(int iMsg) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -315,6 +314,7 @@ void CmdSketcherSelectConstraints::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues(); std::string doc_name = Obj->getDocument()->getName(); @@ -366,7 +366,7 @@ void CmdSketcherSelectOrigin::activated(int iMsg) { Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -413,7 +413,7 @@ void CmdSketcherSelectVerticalAxis::activated(int iMsg) { Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -456,7 +456,7 @@ void CmdSketcherSelectHorizontalAxis::activated(int iMsg) { Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -498,7 +498,7 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg) { Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -506,7 +506,7 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg) std::string obj_name = Obj->getNameInDocument(); // get the needed lists and objects - const std::vector< int > &solverredundant = dynamic_cast(doc->getInEdit())->getSketchObject()->getLastRedundant(); + const std::vector< int > &solverredundant = vp->getSketchObject()->getLastRedundant(); const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues(); getSelection().clearSelection(); @@ -550,16 +550,15 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg) { Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); std::string obj_name = Obj->getNameInDocument(); - std::stringstream ss; - + // get the needed lists and objects - const std::vector< int > &solverconflicting = dynamic_cast(doc->getInEdit())->getSketchObject()->getLastConflicting(); + const std::vector< int > &solverconflicting = vp->getSketchObject()->getLastConflicting(); const std::vector< Sketcher::Constraint * > &vals = Obj->Constraints.getValues(); getSelection().clearSelection(); @@ -605,7 +604,7 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg) Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = dynamic_cast(doc->getInEdit()); + SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); Sketcher::SketchObject* Obj= vp->getSketchObject(); @@ -724,7 +723,6 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -735,6 +733,7 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); std::string doc_name = Obj->getDocument()->getName(); std::string obj_name = Obj->getNameInDocument(); @@ -1003,7 +1002,6 @@ void CmdSketcherSymmetry::activated(int iMsg) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -1014,10 +1012,7 @@ void CmdSketcherSymmetry::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - - std::string doc_name = Obj->getDocument()->getName(); - std::string obj_name = Obj->getNameInDocument(); - std::stringstream ss; + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); getSelection().clearSelection(); @@ -1348,7 +1343,6 @@ void SketcherCopy::activate(bool clone) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -1359,10 +1353,7 @@ void SketcherCopy::activate(bool clone) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - - std::string doc_name = Obj->getDocument()->getName(); - std::string obj_name = Obj->getNameInDocument(); - std::stringstream ss; + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); getSelection().clearSelection(); @@ -1809,7 +1800,6 @@ void CmdSketcherRectangularArray::activated(int iMsg) { // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = dynamic_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { @@ -1820,10 +1810,7 @@ void CmdSketcherRectangularArray::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); - - std::string doc_name = Obj->getDocument()->getName(); - std::string obj_name = Obj->getNameInDocument(); - std::stringstream ss; + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); getSelection().clearSelection(); diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp index 1d5fd4ac6..29f1f374b 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp +++ b/src/Mod/Sketcher/Gui/DrawSketchHandler.cpp @@ -252,7 +252,7 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested for (std::vector::const_iterator it=geomlist.begin(); it != geomlist.end(); ++it, i++) { if ((*it)->getTypeId() == Part::GeomCircle::getClassTypeId()) { - const Part::GeomCircle *circle = dynamic_cast((*it)); + const Part::GeomCircle *circle = static_cast((*it)); Base::Vector3d center = circle->getCenter(); @@ -274,7 +274,7 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested } else if ((*it)->getTypeId() == Part::GeomEllipse::getClassTypeId()) { - const Part::GeomEllipse *ellipse = dynamic_cast((*it)); + const Part::GeomEllipse *ellipse = static_cast((*it)); Base::Vector3d center = ellipse->getCenter(); @@ -301,7 +301,7 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested } } else if ((*it)->getTypeId() == Part::GeomArcOfCircle::getClassTypeId()) { - const Part::GeomArcOfCircle *arc = dynamic_cast((*it)); + const Part::GeomArcOfCircle *arc = static_cast((*it)); Base::Vector3d center = arc->getCenter(); double radius = arc->getRadius(); @@ -329,7 +329,7 @@ int DrawSketchHandler::seekAutoConstraint(std::vector &suggested } } } else if ((*it)->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId()) { - const Part::GeomArcOfEllipse *aoe = dynamic_cast((*it)); + const Part::GeomArcOfEllipse *aoe = static_cast((*it)); Base::Vector3d center = aoe->getCenter(); @@ -433,7 +433,7 @@ void DrawSketchHandler::createAutoConstraints(const std::vector bool mid_external; bool end_external; - dynamic_cast((sketchgui->getObject()))->isCoincidentWithExternalGeometry(geoId1, start_external, mid_external, end_external); + static_cast((sketchgui->getObject()))->isCoincidentWithExternalGeometry(geoId1, start_external, mid_external, end_external); if( !(start_external && end_external) ) { Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Horizontal',%i)) " @@ -449,7 +449,7 @@ void DrawSketchHandler::createAutoConstraints(const std::vector bool mid_external; bool end_external; - dynamic_cast((sketchgui->getObject()))->isCoincidentWithExternalGeometry(geoId1, start_external, mid_external, end_external); + static_cast((sketchgui->getObject()))->isCoincidentWithExternalGeometry(geoId1, start_external, mid_external, end_external); if( !(start_external && end_external) ) { Gui::Command::doCommand(Gui::Command::Doc,"App.ActiveDocument.%s.addConstraint(Sketcher.Constraint('Vertical',%i)) " @@ -460,7 +460,7 @@ void DrawSketchHandler::createAutoConstraints(const std::vector } break; case Sketcher::Tangent: { - Sketcher::SketchObject* Obj = dynamic_cast(sketchgui->getObject()); + Sketcher::SketchObject* Obj = static_cast(sketchgui->getObject()); const Part::Geometry *geom1 = Obj->getGeometry(geoId1); const Part::Geometry *geom2 = Obj->getGeometry(it->GeoId); diff --git a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp index 61a52c573..3ba21459a 100644 --- a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp +++ b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp @@ -40,7 +40,8 @@ TYPESYSTEM_SOURCE(SketcherGui::PropertyConstraintListItem, Gui::PropertyEditor:: PropertyConstraintListItem::PropertyConstraintListItem() { - + blockEvent = false; + onlyUnnamed = false; } QVariant PropertyConstraintListItem::toString(const QVariant& prop) const diff --git a/src/Mod/Sketcher/Gui/SketchOrientationDialog.cpp b/src/Mod/Sketcher/Gui/SketchOrientationDialog.cpp index 0bb88d668..df0a02583 100644 --- a/src/Mod/Sketcher/Gui/SketchOrientationDialog.cpp +++ b/src/Mod/Sketcher/Gui/SketchOrientationDialog.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2011 Jürgen Riegel * + * Copyright (c) 2011 Jürgen Riegel * * * * This file is part of the FreeCAD CAx development system. * * * @@ -40,6 +40,7 @@ using namespace SketcherGui; SketchOrientationDialog::SketchOrientationDialog(void) : QDialog(Gui::getMainWindow()), ui(new Ui_SketchOrientationDialog) { + DirType = 0; ui->setupUi(this); onPreview(); diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp index b55ff5faf..1b2b5dab8 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstrains.cpp @@ -320,6 +320,9 @@ protected: options.widget->style()->drawControl(QStyle::CE_ItemViewItem, &options, painter); ConstraintItem * item = dynamic_cast(view->item(index.row())); + if (!item) + return; + App::ObjectIdentifier path = item->sketch->Constraints.createPath(item->ConstraintNbr); App::PropertyExpressionEngine::ExpressionInfo expr_info = item->sketch->getExpression(path); @@ -362,9 +365,8 @@ void ConstraintView::contextMenuEvent (QContextMenuEvent* event) bool isToggleDriving = false; // Non-driving-constraints/measurements - if (item) { - ConstraintItem *it = dynamic_cast(item); - + ConstraintItem *it = dynamic_cast(item); + if (it) { // if its the right constraint if ((it->constraintType() == Sketcher::Distance || it->constraintType() == Sketcher::DistanceX || @@ -416,11 +418,10 @@ void ConstraintView::updateDrivingStatus() { QListWidgetItem* item = currentItem(); - if (item){ - ConstraintItem *it = dynamic_cast(item); - + ConstraintItem *it = dynamic_cast(item); + if (it) { onUpdateDrivingStatus(item, !it->isDriving()); - } + } } void ConstraintView::modifyCurrentItem() @@ -623,7 +624,7 @@ void TaskSketcherConstrains::on_listWidgetConstraints_itemSelectionChanged(void) void TaskSketcherConstrains::on_listWidgetConstraints_itemActivated(QListWidgetItem *item) { ConstraintItem *it = dynamic_cast(item); - if (!item) return; + if (!it) return; // if its the right constraint if (it->constraintType() == Sketcher::Distance || @@ -650,12 +651,12 @@ void TaskSketcherConstrains::on_listWidgetConstraints_updateDrivingStatus(QListW void TaskSketcherConstrains::on_listWidgetConstraints_itemChanged(QListWidgetItem *item) { - if (!item || inEditMode) + const ConstraintItem *it = dynamic_cast(item); + if (!it || inEditMode) return; inEditMode = true; - const ConstraintItem *it = dynamic_cast(item); const Sketcher::SketchObject * sketch = sketchView->getSketchObject(); const std::vector< Sketcher::Constraint * > &vals = sketch->Constraints.getValues(); const Sketcher::Constraint* v = vals[it->ConstraintNbr];