diff --git a/src/Mod/Sketcher/Gui/CommandConstraints.cpp b/src/Mod/Sketcher/Gui/CommandConstraints.cpp index 2d8569a01e..5b85d231c0 100644 --- a/src/Mod/Sketcher/Gui/CommandConstraints.cpp +++ b/src/Mod/Sketcher/Gui/CommandConstraints.cpp @@ -342,7 +342,7 @@ bool SketcherGui::isSimpleVertex(const Sketcher::SketchObject* Obj, int GeoId, P bool SketcherGui::isConstructionPoint(const Sketcher::SketchObject* Obj, int GeoId) { const Part::Geometry * geo = Obj->getGeometry(GeoId); - return (geo->getTypeId() == Part::GeomPoint::getClassTypeId() && geo->Construction == true); + return (geo && geo->getTypeId() == Part::GeomPoint::getClassTypeId() && geo->Construction == true); } bool SketcherGui::IsPointAlreadyOnCurve(int GeoIdCurve, int GeoIdPoint, Sketcher::PointPos PosIdPoint, Sketcher::SketchObject* Obj) @@ -1213,14 +1213,14 @@ void CmdSketcherConstrainHorizontal::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select an edge from the sketch.")); @@ -1460,7 +1460,7 @@ void CmdSketcherConstrainVertical::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -1706,7 +1706,7 @@ void CmdSketcherConstrainLock::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -1974,7 +1974,7 @@ void CmdSketcherConstrainBlock::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -2284,7 +2284,7 @@ void CmdSketcherConstrainCoincident::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -2478,7 +2478,7 @@ void CmdSketcherConstrainDistance::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -2862,14 +2862,14 @@ void CmdSketcherConstrainPointOnObject::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -3046,7 +3046,7 @@ void CmdSketcherConstrainDistanceX::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -3296,14 +3296,14 @@ void CmdSketcherConstrainDistanceY::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -3581,14 +3581,14 @@ void CmdSketcherConstrainParallel::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -3789,14 +3789,14 @@ void CmdSketcherConstrainPerpendicular::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here strError = QObject::tr("Select some geometry from the sketch.", "perpendicular constraint"); @@ -4409,14 +4409,14 @@ void CmdSketcherConstrainTangent::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { strError = QObject::tr("Select some geometry from the sketch.", "tangent constraint"); if (!strError.isEmpty()) strError.append(QString::fromLatin1("\n\n")); @@ -5002,14 +5002,14 @@ void CmdSketcherConstrainRadius::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -5473,7 +5473,7 @@ void CmdSketcherConstrainDiameter::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -6064,14 +6064,14 @@ void CmdSketcherConstrainAngle::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); if (constraintMode) { - ActivateHandler(getActiveGuiDocument(), - new DrawSketchHandlerGenConstraint(constraintCursor, this)); - getSelection().clearSelection(); + ActivateHandler(getActiveGuiDocument(), + new DrawSketchHandlerGenConstraint(constraintCursor, this)); + getSelection().clearSelection(); } else { // TODO: Get the exact message from git history and put it here QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), @@ -6565,7 +6565,7 @@ void CmdSketcherConstrainEqual::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -6763,7 +6763,7 @@ void CmdSketcherConstrainSymmetric::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool constraintMode = hGrp->GetBool("ContinuousConstraintMode", true); @@ -7032,15 +7032,15 @@ void CmdSketcherConstrainSnellsLaw::activated(int iMsg) try{ // get the selection std::vector selection = getSelection().getSelectionEx(); - Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { strError = QObject::tr("Selected objects are not just geometry from one sketch.", dmbg); throw(Base::Exception("")); } // get the needed lists and objects + Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); const std::vector &SubNames = selection[0].getSubNames(); if (SubNames.size() != 3) { @@ -7177,7 +7177,7 @@ void CmdSketcherConstrainInternalAlignment::activated(int iMsg) std::vector selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select at least one ellipse and one edge from the sketch.")); return; @@ -7612,7 +7612,7 @@ void CmdSketcherToggleDrivingConstraint::activated(int iMsg) selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected - if (selection.size() != 1) { + if (selection.size() != 1 || !selection[0].isObjectTypeOf(Sketcher::SketchObject::getClassTypeId())) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select constraint(s) from the sketch.")); return;