diff --git a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp index 6c09f27054..9f16b20b60 100644 --- a/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp +++ b/src/Mod/Sketcher/Gui/CommandSketcherTools.cpp @@ -57,7 +57,7 @@ using namespace std; using namespace SketcherGui; using namespace Sketcher; -bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection ) +bool isSketcherAcceleratorActive(Gui::Document *doc, bool actsOnSelection) { if (doc) { // checks if a Sketch Viewprovider is in Edit and is in no special mode @@ -95,8 +95,9 @@ CmdSketcherCloseShape::CmdSketcherCloseShape() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Close Shape"); - sToolTipText = QT_TR_NOOP("Produce closed shape by Link end point of element with next elements' starting point"); + sMenuText = QT_TR_NOOP("Close shape"); + sToolTipText = QT_TR_NOOP("Produce a closed shape by tying the end point " + "of one element with the next element's starting point"); sWhatsThis = "Sketcher_CloseShape"; sStatusTip = sToolTipText; sPixmap = "Sketcher_CloseShape"; @@ -128,13 +129,13 @@ void CmdSketcherCloseShape::activated(int iMsg) Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - int GeoIdFirst=-1; - int GeoIdLast=-1; + int GeoIdFirst = -1; + int GeoIdLast = -1; // undo command open openCommand("Add coincident constraint"); // go through the selected subelements - for (unsigned int i=0; i<(SubNames.size()-1); i++ ) { + for (size_t i=0; i < (SubNames.size() - 1); i++) { // only handle edges if (SubNames[i].size() > 4 && SubNames[i].substr(0,4) == "Edge" && SubNames[i+1].size() > 4 && SubNames[i+1].substr(0,4) == "Edge") { @@ -142,10 +143,10 @@ void CmdSketcherCloseShape::activated(int iMsg) int GeoId1 = std::atoi(SubNames[i].substr(4,4000).c_str()) - 1; int GeoId2 = std::atoi(SubNames[i+1].substr(4,4000).c_str()) - 1; - if(GeoIdFirst==-1) - GeoIdFirst=GeoId1; + if (GeoIdFirst == -1) + GeoIdFirst = GeoId1; - GeoIdLast=GeoId2; + GeoIdLast = GeoId2; const Part::Geometry *geo1 = Obj->getGeometry(GeoId1); const Part::Geometry *geo2 = Obj->getGeometry(GeoId2); @@ -169,27 +170,26 @@ void CmdSketcherCloseShape::activated(int iMsg) return; } - Gui::cmdAppObjectArgs(selection[0].getObject(), "addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", - GeoId1,Sketcher::end,GeoId2,Sketcher::start); + Gui::cmdAppObjectArgs(selection[0].getObject(), + "addConstraint(Sketcher.Constraint('Coincident', %d, %d, %d, %d)) ", + GeoId1, Sketcher::end, GeoId2, Sketcher::start); } } // Close Last Edge with First Edge - Gui::cmdAppObjectArgs(selection[0].getObject(),"addConstraint(Sketcher.Constraint('Coincident',%d,%d,%d,%d)) ", - GeoIdLast,Sketcher::end,GeoIdFirst,Sketcher::start); + Gui::cmdAppObjectArgs(selection[0].getObject(), + "addConstraint(Sketcher.Constraint('Coincident', %d, %d, %d, %d)) ", + GeoIdLast, Sketcher::end, GeoIdFirst, Sketcher::start); - // finish the transaction and update + // finish the transaction and update, and clear the selection (convenience) commitCommand(); - tryAutoRecompute(Obj); - - // clear the selection (convenience) getSelection().clearSelection(); } bool CmdSketcherCloseShape::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } @@ -201,8 +201,8 @@ CmdSketcherConnect::CmdSketcherConnect() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Connect Edges"); - sToolTipText = QT_TR_NOOP("Link end point of element with next elements' starting point"); + sMenuText = QT_TR_NOOP("Connect edges"); + sToolTipText = QT_TR_NOOP("Tie the end point of the element with next element's starting point"); sWhatsThis = "Sketcher_ConnectLines"; sStatusTip = sToolTipText; sPixmap = "Sketcher_ConnectLines"; @@ -262,18 +262,15 @@ void CmdSketcherConnect::activated(int iMsg) } } - // finish the transaction and update + // finish the transaction and update, and clear the selection (convenience) commitCommand(); - tryAutoRecompute(Obj); - - // clear the selection (convenience) getSelection().clearSelection(); } bool CmdSketcherConnect::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } // Select Constraints of selected elements @@ -284,8 +281,8 @@ CmdSketcherSelectConstraints::CmdSketcherSelectConstraints() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Constraints"); - sToolTipText = QT_TR_NOOP("Select the constraints associated to the selected elements"); + sMenuText = QT_TR_NOOP("Select associated constraints"); + sToolTipText = QT_TR_NOOP("Select the constraints associated with the selected geometrical elements"); sWhatsThis = "Sketcher_SelectConstraints"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectConstraints"; @@ -326,9 +323,12 @@ void CmdSketcherSelectConstraints::activated(int iMsg) // push all the constraints int i = 0; for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin(); - it != vals.end(); ++it,++i) { - if ( (*it)->First == GeoId || (*it)->Second == GeoId || (*it)->Third == GeoId){ - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); + it != vals.end(); ++it,++i) + { + if ((*it)->First == GeoId || (*it)->Second == GeoId || (*it)->Third == GeoId) { + Gui::Selection().addSelection(doc_name.c_str(), + obj_name.c_str(), + Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); } } } @@ -337,7 +337,7 @@ void CmdSketcherSelectConstraints::activated(int iMsg) bool CmdSketcherSelectConstraints::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } // Select Origin @@ -348,8 +348,8 @@ CmdSketcherSelectOrigin::CmdSketcherSelectOrigin() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Origin"); - sToolTipText = QT_TR_NOOP("Select the origin point"); + sMenuText = QT_TR_NOOP("Select origin"); + sToolTipText = QT_TR_NOOP("Select the local origin point of the sketch"); sWhatsThis = "Sketcher_SelectOrigin"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectOrigin"; @@ -361,13 +361,9 @@ void CmdSketcherSelectOrigin::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); - // ViewProviderSketch * vp = static_cast(Gui::Application::Instance->getViewProvider(docobj)); - // Sketcher::SketchObject* Obj = vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); @@ -377,15 +373,14 @@ void CmdSketcherSelectOrigin::activated(int iMsg) ss << "RootPoint"; if(Gui::Selection().isSelected(doc_name.c_str(), obj_name.c_str(), ss.str().c_str())) - Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); + Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); else - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); - + Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); } bool CmdSketcherSelectOrigin::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } // Select Vertical Axis @@ -396,8 +391,8 @@ CmdSketcherSelectVerticalAxis::CmdSketcherSelectVerticalAxis() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Vertical Axis"); - sToolTipText = QT_TR_NOOP("Select the vertical axis"); + sMenuText = QT_TR_NOOP("Select vertical axis"); + sToolTipText = QT_TR_NOOP("Select the local vertical axis of the sketch"); sWhatsThis = "Sketcher_SelectVerticalAxis"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectVerticalAxis"; @@ -409,9 +404,7 @@ void CmdSketcherSelectVerticalAxis::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); @@ -424,12 +417,11 @@ void CmdSketcherSelectVerticalAxis::activated(int iMsg) Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); else Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); - } bool CmdSketcherSelectVerticalAxis::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } // Select Horizontal Axis @@ -440,8 +432,8 @@ CmdSketcherSelectHorizontalAxis::CmdSketcherSelectHorizontalAxis() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Horizontal Axis"); - sToolTipText = QT_TR_NOOP("Select the horizontal axis"); + sMenuText = QT_TR_NOOP("Select horizontal axis"); + sToolTipText = QT_TR_NOOP("Select the local horizontal axis of the sketch"); sWhatsThis = "Sketcher_SelectHorizontalAxis"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectHorizontalAxis"; @@ -453,9 +445,7 @@ void CmdSketcherSelectHorizontalAxis::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); @@ -468,12 +458,11 @@ void CmdSketcherSelectHorizontalAxis::activated(int iMsg) Gui::Selection().rmvSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); else Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); - } bool CmdSketcherSelectHorizontalAxis::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } DEF_STD_CMD_A(CmdSketcherSelectRedundantConstraints) @@ -483,8 +472,8 @@ CmdSketcherSelectRedundantConstraints::CmdSketcherSelectRedundantConstraints() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Redundant Constraints"); - sToolTipText = QT_TR_NOOP("Select Redundant Constraints"); + sMenuText = QT_TR_NOOP("Select redundant constraints"); + sToolTipText = QT_TR_NOOP("Select redundant constraints"); sWhatsThis = "Sketcher_SelectRedundantConstraints"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectRedundantConstraints"; @@ -496,9 +485,7 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); std::string doc_name = Obj->getDocument()->getName(); @@ -514,19 +501,19 @@ void CmdSketcherSelectRedundantConstraints::activated(int iMsg) int i = 0; for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();it != vals.end(); ++it,++i) { for(std::vector< int >::const_iterator itc= solverredundant.begin();itc != solverredundant.end(); ++itc) { - if ( (*itc) - 1 == i){ - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); + if ((*itc) - 1 == i) { + Gui::Selection().addSelection(doc_name.c_str(), + obj_name.c_str(), + Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); break; } } - - } } bool CmdSketcherSelectRedundantConstraints::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } DEF_STD_CMD_A(CmdSketcherSelectConflictingConstraints) @@ -536,8 +523,8 @@ CmdSketcherSelectConflictingConstraints::CmdSketcherSelectConflictingConstraints { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Conflicting Constraints"); - sToolTipText = QT_TR_NOOP("Select Conflicting Constraints"); + sMenuText = QT_TR_NOOP("Select conflicting constraints"); + sToolTipText = QT_TR_NOOP("Select conflicting constraints"); sWhatsThis = "Sketcher_SelectConflictingConstraints"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectConflictingConstraints"; @@ -549,11 +536,8 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg) { Q_UNUSED(iMsg); Gui::Document * doc= getActiveGuiDocument(); - 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(); @@ -566,9 +550,11 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg) // push the constraints int i = 0; for (std::vector< Sketcher::Constraint * >::const_iterator it= vals.begin();it != vals.end(); ++it,++i) { - for(std::vector< int >::const_iterator itc= solverconflicting.begin();itc != solverconflicting.end(); ++itc) { - if ( (*itc) - 1 == i){ - Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); + for (std::vector< int >::const_iterator itc= solverconflicting.begin();itc != solverconflicting.end(); ++itc) { + if ((*itc) - 1 == i) { + Gui::Selection().addSelection(doc_name.c_str(), + obj_name.c_str(), + Sketcher::PropertyConstraintList::getConstraintName(i).c_str()); break; } } @@ -577,7 +563,7 @@ void CmdSketcherSelectConflictingConstraints::activated(int iMsg) bool CmdSketcherSelectConflictingConstraints::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } DEF_STD_CMD_A(CmdSketcherSelectElementsAssociatedWithConstraints) @@ -587,8 +573,8 @@ CmdSketcherSelectElementsAssociatedWithConstraints::CmdSketcherSelectElementsAss { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select Elements associated with constraints"); - sToolTipText = QT_TR_NOOP("Select Elements associated with constraints"); + sMenuText = QT_TR_NOOP("Select associated geometry"); + sToolTipText = QT_TR_NOOP("Select the geometrical elements associated with the selected constraints"); sWhatsThis = "Sketcher_SelectElementsAssociatedWithConstraints"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectElementsAssociatedWithConstraints"; @@ -600,11 +586,8 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg) { Q_UNUSED(iMsg); std::vector selection = Gui::Selection().getSelectionEx(); - Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); const std::vector &SubNames = selection[0].getSubNames(); @@ -616,7 +599,7 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg) std::string obj_name = Obj->getNameInDocument(); std::stringstream ss; - int selected=0; + int selected = 0; // go through the selected subelements for (std::vector::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) { @@ -691,15 +674,15 @@ void CmdSketcherSelectElementsAssociatedWithConstraints::activated(int iMsg) } } - if ( selected == 0 ) { + if (selected == 0) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("No constraint selected"), - QObject::tr("At least one constraint must be selected")); + QObject::tr("At least one constraint must be selected")); } } bool CmdSketcherSelectElementsAssociatedWithConstraints::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } DEF_STD_CMD_A(CmdSketcherSelectElementsWithDoFs) @@ -709,8 +692,8 @@ CmdSketcherSelectElementsWithDoFs::CmdSketcherSelectElementsWithDoFs() { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Select solver DoFs"); - sToolTipText = QT_TR_NOOP("Select elements where the solver still detects unconstrained degrees of freedom."); + sMenuText = QT_TR_NOOP("Select unconstrained DoF"); + sToolTipText = QT_TR_NOOP("Select geometrical elements where the solver still detects unconstrained degrees of freedom."); sWhatsThis = "Sketcher_SelectElementsWithDoFs"; sStatusTip = sToolTipText; sPixmap = "Sketcher_SelectElementsWithDoFs"; @@ -722,16 +705,12 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg) { Q_UNUSED(iMsg); getSelection().clearSelection(); - Gui::Document * doc= getActiveGuiDocument(); - 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; auto geos = Obj->getInternalGeometry(); @@ -740,18 +719,17 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg) // have to re-solve using Dense QR. GCS::QRAlgorithm curQRAlg = Obj->getSolvedSketch().getQRAlgorithm(); - if(curQRAlg == GCS::EigenSparseQR) { + if (curQRAlg == GCS::EigenSparseQR) { Obj->getSolvedSketch().setQRAlgorithm(GCS::EigenDenseQR); Obj->solve(false); } - - auto testselectvertex = [&Obj,&ss,&doc_name,&obj_name](int geoId, PointPos pos){ + auto testselectvertex = [&Obj, &ss, &doc_name, &obj_name](int geoId, PointPos pos) { ss.str(std::string()); - if(Obj->getSolvedSketch().hasDependentParameters(geoId, pos)) { + if (Obj->getSolvedSketch().hasDependentParameters(geoId, pos)) { int vertex = Obj->getVertexIndexGeoPos(geoId, pos); - if(vertex>-1) { + if (vertex > -1) { ss << "Vertex" << vertex + 1; Gui::Selection().addSelection(doc_name.c_str(), obj_name.c_str(), ss.str().c_str()); @@ -759,7 +737,7 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg) } }; - auto testselectedge = [&Obj,&ss,&doc_name,&obj_name](int geoId){ + auto testselectedge = [&Obj, &ss, &doc_name, &obj_name](int geoId) { ss.str(std::string()); if(Obj->getSolvedSketch().hasDependentParameters(geoId, Sketcher::none)) { @@ -770,43 +748,41 @@ void CmdSketcherSelectElementsWithDoFs::activated(int iMsg) int geoid = 0; - for(auto geo : geos) { - if(geo->getTypeId() == Part::GeomPoint::getClassTypeId()) { + for (auto geo : geos) { + if (geo->getTypeId() == Part::GeomPoint::getClassTypeId()) { testselectvertex(geoid, Sketcher::start); } - else if(geo->getTypeId() == Part::GeomLineSegment::getClassTypeId() || - geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { + else if (geo->getTypeId() == Part::GeomLineSegment::getClassTypeId() || + geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { testselectvertex(geoid, Sketcher::start); testselectvertex(geoid, Sketcher::end); testselectedge(geoid); } - else if(geo->getTypeId() == Part::GeomCircle::getClassTypeId() || - geo->getTypeId() == Part::GeomEllipse::getClassTypeId() ) { + else if (geo->getTypeId() == Part::GeomCircle::getClassTypeId() || + geo->getTypeId() == Part::GeomEllipse::getClassTypeId()) { testselectvertex(geoid, Sketcher::mid); testselectedge(geoid); } - else if(geo->getTypeId() == Part::GeomArcOfCircle::getClassTypeId() || - geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || - geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId() || - geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId() ) { + else if (geo->getTypeId() == Part::GeomArcOfCircle::getClassTypeId() || + geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || + geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId() || + geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId()) { testselectvertex(geoid, Sketcher::start); testselectvertex(geoid, Sketcher::end); testselectvertex(geoid, Sketcher::mid); testselectedge(geoid); } - geoid++; } - if(curQRAlg == GCS::EigenSparseQR) { + if (curQRAlg == GCS::EigenSparseQR) { Obj->getSolvedSketch().setQRAlgorithm(GCS::EigenSparseQR); } - } bool CmdSketcherSelectElementsWithDoFs::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } DEF_STD_CMD_A(CmdSketcherRestoreInternalAlignmentGeometry) @@ -817,7 +793,7 @@ CmdSketcherRestoreInternalAlignmentGeometry::CmdSketcherRestoreInternalAlignment sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); sMenuText = QT_TR_NOOP("Show/hide internal geometry"); - sToolTipText = QT_TR_NOOP("Show all internal geometry / hide unused internal geometry"); + sToolTipText = QT_TR_NOOP("Show all internal geometry or hide unused internal geometry"); sWhatsThis = "Sketcher_RestoreInternalAlignmentGeometry"; sStatusTip = sToolTipText; sPixmap = "Sketcher_Element_Ellipse_All"; @@ -834,8 +810,9 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), - QObject::tr("Select elements from a single sketch.")); + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), + QObject::tr("Select elements from a single sketch.")); return; } @@ -843,19 +820,15 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) 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(); - std::stringstream ss; - getSelection().clearSelection(); // go through the selected subelements for (std::vector::const_iterator it=SubNames.begin(); it != SubNames.end(); ++it) { // only handle edges - if ( (it->size() > 4 && it->substr(0,4) == "Edge") || - (it->size() > 12 && it->substr(0,12) == "ExternalEdge")) { + if ((it->size() > 4 && it->substr(0,4) == "Edge") || + (it->size() > 12 && it->substr(0,12) == "ExternalEdge")) { int GeoId; - if(it->substr(0,4) == "Edge") + if (it->substr(0,4) == "Edge") GeoId = std::atoi(it->substr(4,4000).c_str()) - 1; else GeoId = -std::atoi(it->substr(12,4000).c_str()) - 2; @@ -866,7 +839,7 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) geo->getTypeId() == Part::GeomArcOfEllipse::getClassTypeId() || geo->getTypeId() == Part::GeomArcOfHyperbola::getClassTypeId() || geo->getTypeId() == Part::GeomArcOfParabola::getClassTypeId() || - geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId() ) { + geo->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()) { int currentgeoid = Obj->getHighestCurveIndex(); @@ -890,7 +863,6 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) } Gui::Command::commitCommand(); - tryAutoRecomputeIfNotSolve(static_cast(Obj)); } } @@ -899,7 +871,7 @@ void CmdSketcherRestoreInternalAlignmentGeometry::activated(int iMsg) bool CmdSketcherRestoreInternalAlignmentGeometry::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } DEF_STD_CMD_A(CmdSketcherSymmetry) @@ -941,7 +913,6 @@ void CmdSketcherSymmetry::activated(int iMsg) } Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - getSelection().clearSelection(); int LastGeoId = 0; @@ -972,18 +943,18 @@ void CmdSketcherSymmetry::activated(int iMsg) // reference can be external or non-external LastGeo = Obj->getGeometry(LastGeoId); // Only for supported types - if(LastGeo->getTypeId() == Part::GeomLineSegment::getClassTypeId()) + if (LastGeo->getTypeId() == Part::GeomLineSegment::getClassTypeId()) lastgeotype = line; else lastgeotype = invalid; // lines to make symmetric (only non-external) - if(LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } } - else if(it->size() > 6 && it->substr(0,6) == "Vertex"){ + else if (it->size() > 6 && it->substr(0,6) == "Vertex") { // only if it is a GeomPoint int VtId = std::atoi(it->substr(6,4000).c_str()) - 1; int GeoId; @@ -996,7 +967,7 @@ void CmdSketcherSymmetry::activated(int iMsg) lastgeotype = point; // points to make symmetric - if(LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } @@ -1004,9 +975,9 @@ void CmdSketcherSymmetry::activated(int iMsg) } } - bool lastvertexoraxis=false; + bool lastvertexoraxis = false; // check if last selected element is a Vertex, not being a GeomPoint - if(SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex"){ + if (SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex") { int VtId = std::atoi(SubNames.rbegin()->substr(6,4000).c_str()) - 1; int GeoId; Sketcher::PointPos PosId; @@ -1015,32 +986,32 @@ void CmdSketcherSymmetry::activated(int iMsg) LastGeoId = GeoId; LastPointPos = PosId; lastgeotype = point; - lastvertexoraxis=true; + lastvertexoraxis = true; } } // check if last selected element is horizontal axis - else if(SubNames.rbegin()->size() == 6 && SubNames.rbegin()->substr(0,6) == "H_Axis"){ + else if (SubNames.rbegin()->size() == 6 && SubNames.rbegin()->substr(0,6) == "H_Axis") { LastGeoId = Sketcher::GeoEnum::HAxis; LastPointPos = Sketcher::none; lastgeotype = line; - lastvertexoraxis=true; + lastvertexoraxis = true; } // check if last selected element is vertical axis - else if(SubNames.rbegin()->size() == 6 && SubNames.rbegin()->substr(0,6) == "V_Axis"){ + else if (SubNames.rbegin()->size() == 6 && SubNames.rbegin()->substr(0,6) == "V_Axis") { LastGeoId = Sketcher::GeoEnum::VAxis; LastPointPos = Sketcher::none; lastgeotype = line; - lastvertexoraxis=true; + lastvertexoraxis = true; } // check if last selected element is the root point - else if(SubNames.rbegin()->size() == 9 && SubNames.rbegin()->substr(0,9) == "RootPoint"){ + else if (SubNames.rbegin()->size() == 9 && SubNames.rbegin()->substr(0,9) == "RootPoint") { LastGeoId = Sketcher::GeoEnum::RtPnt; LastPointPos = Sketcher::start; lastgeotype = point; - lastvertexoraxis=true; + lastvertexoraxis = true; } - if ( geoids == 0 || (geoids == 1 && LastGeoId>=0 && !lastvertexoraxis) ) { + if (geoids == 0 || (geoids == 1 && LastGeoId >= 0 && !lastvertexoraxis)) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("A symmetric construction requires " "at least two geometric elements, " @@ -1049,7 +1020,7 @@ void CmdSketcherSymmetry::activated(int iMsg) return; } - if ( lastgeotype == invalid ) { + if (lastgeotype == invalid) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("The last element must be a point " "or a line serving as reference " @@ -1064,10 +1035,10 @@ void CmdSketcherSymmetry::activated(int iMsg) // 2- Last element is a point GeomPoint // 3- Last element is a point (Vertex) - if(LastGeoId>=0 && !lastvertexoraxis) { + if (LastGeoId >= 0 && !lastvertexoraxis) { // if LastGeoId was added remove the last element int index = geoIdList.rfind(','); - index = geoIdList.rfind(',',index-1); + index = geoIdList.rfind(',', index-1); geoIdList.resize(index); } else { @@ -1075,27 +1046,27 @@ void CmdSketcherSymmetry::activated(int iMsg) geoIdList.resize(index); } - geoIdList.insert(0,1,'['); - geoIdList.append(1,']'); + geoIdList.insert(0, 1, '['); + geoIdList.append(1, ']'); - Gui::Command::openCommand("Create Symmetric geometry"); + Gui::Command::openCommand("Create symmetric geometry"); try{ - Gui::cmdAppObjectArgs(Obj, "addSymmetric(%s,%d,%d)", geoIdList.c_str(), LastGeoId, LastPointPos); - + Gui::cmdAppObjectArgs(Obj, + "addSymmetric(%s, %d, %d)", + geoIdList.c_str(), LastGeoId, LastPointPos); Gui::Command::commitCommand(); } catch (const Base::Exception& e) { Base::Console().Error("%s\n", e.what()); Gui::Command::abortCommand(); } - tryAutoRecomputeIfNotSolve(Obj); } bool CmdSketcherSymmetry::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } @@ -1150,132 +1121,131 @@ static const char *cursor_createcopy[]={ "................................", "................................"}; - class DrawSketchHandlerCopy: public DrawSketchHandler +class DrawSketchHandlerCopy: public DrawSketchHandler +{ +public: + DrawSketchHandlerCopy(string geoidlist, int origingeoid, + Sketcher::PointPos originpos, int nelements, + SketcherCopy::Op op) + : Mode(STATUS_SEEK_First) + , geoIdList(geoidlist) + , Origin() + , OriginGeoId(origingeoid) + , OriginPos(originpos) + , nElements(nelements) + , Op(op) + , EditCurve(2) { - public: - DrawSketchHandlerCopy(string geoidlist, int origingeoid, Sketcher::PointPos originpos, int nelements, SketcherCopy::Op op) - : Mode(STATUS_SEEK_First) - , geoIdList(geoidlist) - , Origin() - , OriginGeoId(origingeoid) - , OriginPos(originpos) - , nElements(nelements) - , Op(op) - , EditCurve(2) - { - } + } - virtual ~DrawSketchHandlerCopy(){} - /// mode table - enum SelectMode { - STATUS_SEEK_First, /**< enum value ----. */ - STATUS_End - }; + virtual ~DrawSketchHandlerCopy(){} + /// mode table + enum SelectMode { + STATUS_SEEK_First, /**< enum value ----. */ + STATUS_End + }; - virtual void activated(ViewProviderSketch *sketchgui) - { - setCursor(QPixmap(cursor_createcopy),7,7); - Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); - EditCurve[0] = Base::Vector2d(Origin.x,Origin.y); - } + virtual void activated(ViewProviderSketch *sketchgui) + { + setCursor(QPixmap(cursor_createcopy), 7, 7); + Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); + EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); + } - virtual void mouseMove(Base::Vector2d onSketchPos) - { - if (Mode==STATUS_SEEK_First) { - float length = (onSketchPos - EditCurve[0]).Length(); - float angle = (onSketchPos - EditCurve[0]).GetAngle(Base::Vector2d(1.f,0.f)); - SbString text; - text.sprintf(" (%.1f,%.1fdeg)", length, angle * 180 / M_PI); - setPositionText(onSketchPos, text); - - EditCurve[1] = onSketchPos; - sketchgui->drawEdit(EditCurve); - if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0,0.0),AutoConstraint::VERTEX)) { - renderSuggestConstraintsCursor(sugConstr1); - return; - } + virtual void mouseMove(Base::Vector2d onSketchPos) + { + if (Mode == STATUS_SEEK_First) { + float length = (onSketchPos - EditCurve[0]).Length(); + float angle = (onSketchPos - EditCurve[0]).GetAngle(Base::Vector2d(1.f,0.f)); + SbString text; + text.sprintf(" (%.1f, %.1fdeg)", length, angle * 180 / M_PI); + setPositionText(onSketchPos, text); + EditCurve[1] = onSketchPos; + sketchgui->drawEdit(EditCurve); + if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0, 0.0), AutoConstraint::VERTEX)) { + renderSuggestConstraintsCursor(sugConstr1); + return; } - applyCursor(); } + applyCursor(); + } - virtual bool pressButton(Base::Vector2d onSketchPos) - { - if (Mode==STATUS_SEEK_First){ - EditCurve[1] = onSketchPos; - sketchgui->drawEdit(EditCurve); - Mode = STATUS_End; - } - - return true; + virtual bool pressButton(Base::Vector2d onSketchPos) + { + if (Mode == STATUS_SEEK_First) { + EditCurve[1] = onSketchPos; + sketchgui->drawEdit(EditCurve); + Mode = STATUS_End; } + return true; + } - virtual bool releaseButton(Base::Vector2d onSketchPos) + virtual bool releaseButton(Base::Vector2d onSketchPos) + { + Q_UNUSED(onSketchPos); + if (Mode == STATUS_End) { - Q_UNUSED(onSketchPos); - if (Mode==STATUS_End){ + Base::Vector2d vector = EditCurve[1] - EditCurve[0]; + unsetCursor(); + resetPositionText(); - Base::Vector2d vector = EditCurve[1]-EditCurve[0]; + int currentgeoid = static_cast(sketchgui->getObject())->getHighestCurveIndex(); + Gui::Command::openCommand("Copy/clone/move geometry"); - unsetCursor(); - resetPositionText(); - - int currentgeoid = static_cast(sketchgui->getObject())->getHighestCurveIndex(); - - Gui::Command::openCommand("Copy/clone/move geometry"); - - try{ - if( Op != SketcherCopy::Move) { - Gui::cmdAppObjectArgs(sketchgui->getObject(), "addCopy(%s,App.Vector(%f,%f,0),%s)", - geoIdList.c_str(), vector.x, vector.y, - (Op == SketcherCopy::Clone?"True":"False")); - } - else { - Gui::cmdAppObjectArgs(sketchgui->getObject(), "addMove(%s,App.Vector(%f,%f,0))", - geoIdList.c_str(), vector.x, vector.y); - } - - Gui::Command::commitCommand(); - } - catch (const Base::Exception& e) { - Base::Console().Error("%s\n", e.what()); - Gui::Command::abortCommand(); - } - - if( Op != SketcherCopy::Move) { - // add auto constraints for the destination copy - if (sugConstr1.size() > 0) { - createAutoConstraints(sugConstr1, currentgeoid+nElements, OriginPos); - sugConstr1.clear(); - } + try{ + if (Op != SketcherCopy::Move) { + Gui::cmdAppObjectArgs(sketchgui->getObject(), + "addCopy(%s, App.Vector(%f, %f, 0), %s)", + geoIdList.c_str(), vector.x, vector.y, + (Op == SketcherCopy::Clone ? "True" : "False")); } else { - if (sugConstr1.size() > 0) { - createAutoConstraints(sugConstr1, OriginGeoId, OriginPos); - sugConstr1.clear(); - } + Gui::cmdAppObjectArgs(sketchgui->getObject(), + "addMove(%s, App.Vector(%f, %f, 0))", + geoIdList.c_str(), vector.x, vector.y); } - - tryAutoRecomputeIfNotSolve(static_cast(sketchgui->getObject())); - - EditCurve.clear(); - sketchgui->drawEdit(EditCurve); - - sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider + Gui::Command::commitCommand(); } - return true; + catch (const Base::Exception& e) { + Base::Console().Error("%s\n", e.what()); + Gui::Command::abortCommand(); + } + + if (Op != SketcherCopy::Move) { + // add auto constraints for the destination copy + if (sugConstr1.size() > 0) { + createAutoConstraints(sugConstr1, currentgeoid+nElements, OriginPos); + sugConstr1.clear(); + } + } + else { + if (sugConstr1.size() > 0) { + createAutoConstraints(sugConstr1, OriginGeoId, OriginPos); + sugConstr1.clear(); + } + } + + tryAutoRecomputeIfNotSolve(static_cast(sketchgui->getObject())); + EditCurve.clear(); + sketchgui->drawEdit(EditCurve); + + // no code after this line, Handler gets deleted in ViewProvider + sketchgui->purgeHandler(); } - protected: - SelectMode Mode; - string geoIdList; - Base::Vector3d Origin; - int OriginGeoId; - Sketcher::PointPos OriginPos; - int nElements; - SketcherCopy::Op Op; - std::vector EditCurve; - std::vector sugConstr1; - }; + return true; + } +protected: + SelectMode Mode; + string geoIdList; + Base::Vector3d Origin; + int OriginGeoId; + Sketcher::PointPos OriginPos; + int nElements; + SketcherCopy::Op Op; + std::vector EditCurve; + std::vector sugConstr1; +}; /*---- SketcherCopy definition ----*/ SketcherCopy::SketcherCopy(const char* name): Command(name) @@ -1288,21 +1258,22 @@ void SketcherCopy::activate(SketcherCopy::Op op) // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), - QObject::tr("Select elements from a single sketch.")); + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), + QObject::tr("Select elements from a single sketch.")); return; } // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); if (SubNames.empty()) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), - QObject::tr("Select elements from a single sketch.")); + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), + QObject::tr("Select elements from a single sketch.")); return; } Sketcher::SketchObject* Obj = static_cast(selection[0].getObject()); - getSelection().clearSelection(); int LastGeoId = 0; @@ -1319,7 +1290,7 @@ void SketcherCopy::activate(SketcherCopy::Op op) LastPointPos = Sketcher::none; LastGeo = Obj->getGeometry(LastGeoId); // lines to copy - if (LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } @@ -1334,7 +1305,7 @@ void SketcherCopy::activate(SketcherCopy::Op op) LastGeoId = GeoId; LastPointPos = Sketcher::start; // points to copy - if (LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } @@ -1343,7 +1314,7 @@ void SketcherCopy::activate(SketcherCopy::Op op) } // check if last selected element is a Vertex, not being a GeomPoint - if (SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex"){ + if (SubNames.rbegin()->size() > 6 && SubNames.rbegin()->substr(0,6) == "Vertex") { int VtId = std::atoi(SubNames.rbegin()->substr(6,4000).c_str()) - 1; int GeoId; Sketcher::PointPos PosId; @@ -1355,7 +1326,8 @@ void SketcherCopy::activate(SketcherCopy::Op op) } if (geoids < 1) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), QObject::tr("A copy requires at least one selected non-external geometric element")); return; } @@ -1365,8 +1337,8 @@ void SketcherCopy::activate(SketcherCopy::Op op) // remove the last added comma and brackets to make the python list int index = geoIdList.rfind(','); geoIdList.resize(index); - geoIdList.insert(0,1,'['); - geoIdList.append(1,']'); + geoIdList.insert(0, 1, '['); + geoIdList.append(1, ']'); // if the last element is not a point serving as a reference for the copy process // then make the start point of the last element the copy reference (if it exists, if not the center point) @@ -1374,10 +1346,10 @@ void SketcherCopy::activate(SketcherCopy::Op op) if (LastGeo->getTypeId() == Part::GeomCircle::getClassTypeId() || LastGeo->getTypeId() == Part::GeomEllipse::getClassTypeId()) { LastPointPos = Sketcher::mid; - } - else { - LastPointPos = Sketcher::start; - } + } + else { + LastPointPos = Sketcher::start; + } } // Ask the user if he wants to clone or to simple copy @@ -1395,7 +1367,8 @@ void SketcherCopy::activate(SketcherCopy::Op op) } */ - ActivateAcceleratorHandler(getActiveGuiDocument(),new DrawSketchHandlerCopy(geoIdList, LastGeoId, LastPointPos, geoids, op)); + ActivateAcceleratorHandler(getActiveGuiDocument(), + new DrawSketchHandlerCopy(geoIdList, LastGeoId, LastPointPos, geoids, op)); } @@ -1413,7 +1386,7 @@ protected: }; CmdSketcherCopy::CmdSketcherCopy() -:SketcherCopy("Sketcher_Copy") + :SketcherCopy("Sketcher_Copy") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); @@ -1440,7 +1413,7 @@ void CmdSketcherCopy::activate() bool CmdSketcherCopy::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } class CmdSketcherClone : public SketcherCopy @@ -1457,7 +1430,7 @@ protected: }; CmdSketcherClone::CmdSketcherClone() -:SketcherCopy("Sketcher_Clone") + :SketcherCopy("Sketcher_Clone") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); @@ -1483,7 +1456,7 @@ void CmdSketcherClone::activate() bool CmdSketcherClone::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } class CmdSketcherMove : public SketcherCopy @@ -1500,7 +1473,7 @@ protected: }; CmdSketcherMove::CmdSketcherMove() -:SketcherCopy("Sketcher_Move") + :SketcherCopy("Sketcher_Move") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); @@ -1524,16 +1497,15 @@ void CmdSketcherMove::activate() SketcherCopy::activate(SketcherCopy::Move); } - bool CmdSketcherMove::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } DEF_STD_CMD_ACL(CmdSketcherCompCopy) CmdSketcherCompCopy::CmdSketcherCompCopy() -: Command("Sketcher_CompCopy") + : Command("Sketcher_CompCopy") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); @@ -1558,17 +1530,17 @@ void CmdSketcherCompCopy::activated(int iMsg) assert(iMsg < a.size()); pcAction->setIcon(a[iMsg]->icon()); - if (iMsg==0){ + if (iMsg == 0){ CmdSketcherClone sc; sc.activate(); pcAction->setShortcut(QString::fromLatin1(this->sAccel)); } - else if (iMsg==1) { + else if (iMsg == 1) { CmdSketcherCopy sc; sc.activate(); pcAction->setShortcut(QString::fromLatin1(this->sAccel)); } - else if (iMsg==2) { + else if (iMsg == 2) { CmdSketcherMove sc; sc.activate(); pcAction->setShortcut(QString::fromLatin1("")); @@ -1669,139 +1641,137 @@ static const char *cursor_createrectangulararray[]={ "................................", "................................"}; - class DrawSketchHandlerRectangularArray: public DrawSketchHandler +class DrawSketchHandlerRectangularArray: public DrawSketchHandler +{ +public: + DrawSketchHandlerRectangularArray(string geoidlist, int origingeoid, + Sketcher::PointPos originpos, int nelements, bool clone, + int rows, int cols, bool constraintSeparation, + bool equalVerticalHorizontalSpacing) + : Mode(STATUS_SEEK_First) + , geoIdList(geoidlist) + , OriginGeoId(origingeoid) + , OriginPos(originpos) + , nElements(nelements) + , Clone(clone) + , Rows(rows) + , Cols(cols) + , ConstraintSeparation(constraintSeparation) + , EqualVerticalHorizontalSpacing(equalVerticalHorizontalSpacing) + , EditCurve(2) { - public: - DrawSketchHandlerRectangularArray(string geoidlist, int origingeoid, Sketcher::PointPos originpos, int nelements, bool clone, - int rows, int cols, bool constraintSeparation, - bool equalVerticalHorizontalSpacing ) - : Mode(STATUS_SEEK_First) - , geoIdList(geoidlist) - , OriginGeoId(origingeoid) - , OriginPos(originpos) - , nElements(nelements) - , Clone(clone) - , Rows(rows) - , Cols(cols) - , ConstraintSeparation(constraintSeparation) - , EqualVerticalHorizontalSpacing(equalVerticalHorizontalSpacing) - , EditCurve(2) - { - } + } - virtual ~DrawSketchHandlerRectangularArray(){} - /// mode table - enum SelectMode { - STATUS_SEEK_First, /**< enum value ----. */ - STATUS_End - }; - - virtual void activated(ViewProviderSketch *sketchgui) - { - setCursor(QPixmap(cursor_createrectangulararray),7,7); - Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); - EditCurve[0] = Base::Vector2d(Origin.x,Origin.y); - } - - virtual void mouseMove(Base::Vector2d onSketchPos) - { - if (Mode==STATUS_SEEK_First) { - float length = (onSketchPos - EditCurve[0]).Length(); - float angle = (onSketchPos - EditCurve[0]).GetAngle(Base::Vector2d(1.f,0.f)); - SbString text; - text.sprintf(" (%.1f,%.1fdeg)", length, angle * 180 / M_PI); - setPositionText(onSketchPos, text); - - EditCurve[1] = onSketchPos; - sketchgui->drawEdit(EditCurve); - if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0,0.0),AutoConstraint::VERTEX)) { - renderSuggestConstraintsCursor(sugConstr1); - return; - } - - } - applyCursor(); - } - - virtual bool pressButton(Base::Vector2d onSketchPos) - { - if (Mode==STATUS_SEEK_First){ - EditCurve[1] = onSketchPos; - sketchgui->drawEdit(EditCurve); - Mode = STATUS_End; - } - - return true; - } - - virtual bool releaseButton(Base::Vector2d onSketchPos) - { - Q_UNUSED(onSketchPos); - if (Mode==STATUS_End){ - - Base::Vector2d vector = EditCurve[1]-EditCurve[0]; - - unsetCursor(); - resetPositionText(); - - Gui::Command::openCommand("Create copy of geometry"); - - try { - Gui::cmdAppObjectArgs(sketchgui->getObject(), "addRectangularArray(%s, App.Vector(%f,%f,0),%s,%d,%d,%s,%f)", - geoIdList.c_str(), vector.x, vector.y, - (Clone?"True":"False"), - Cols, Rows, - (ConstraintSeparation?"True":"False"), - (EqualVerticalHorizontalSpacing?1.0:0.5)); - - Gui::Command::commitCommand(); - } - catch (const Base::Exception& e) { - Base::Console().Error("%s\n", e.what()); - Gui::Command::abortCommand(); - } - - // add auto constraints for the destination copy - if (sugConstr1.size() > 0) { - createAutoConstraints(sugConstr1, OriginGeoId+nElements, OriginPos); - sugConstr1.clear(); - } - - tryAutoRecomputeIfNotSolve(static_cast(sketchgui->getObject())); - - - EditCurve.clear(); - sketchgui->drawEdit(EditCurve); - - sketchgui->purgeHandler(); // no code after this line, Handler get deleted in ViewProvider - } - return true; - } - protected: - SelectMode Mode; - string geoIdList; - Base::Vector3d Origin; - int OriginGeoId; - Sketcher::PointPos OriginPos; - int nElements; - bool Clone; - int Rows; - int Cols; - bool ConstraintSeparation; - bool EqualVerticalHorizontalSpacing; - std::vector EditCurve; - std::vector sugConstr1; + virtual ~DrawSketchHandlerRectangularArray(){} + /// mode table + enum SelectMode { + STATUS_SEEK_First, /**< enum value ----. */ + STATUS_End }; + virtual void activated(ViewProviderSketch *sketchgui) + { + setCursor(QPixmap(cursor_createrectangulararray), 7, 7); + Origin = static_cast(sketchgui->getObject())->getPoint(OriginGeoId, OriginPos); + EditCurve[0] = Base::Vector2d(Origin.x, Origin.y); + } + + virtual void mouseMove(Base::Vector2d onSketchPos) + { + if (Mode==STATUS_SEEK_First) { + float length = (onSketchPos - EditCurve[0]).Length(); + float angle = (onSketchPos - EditCurve[0]).GetAngle(Base::Vector2d(1.f, 0.f)); + SbString text; + text.sprintf(" (%.1f, %.1fdeg)", length, angle * 180 / M_PI); + setPositionText(onSketchPos, text); + + EditCurve[1] = onSketchPos; + sketchgui->drawEdit(EditCurve); + if (seekAutoConstraint(sugConstr1, onSketchPos, Base::Vector2d(0.0, 0.0), AutoConstraint::VERTEX)) + { + renderSuggestConstraintsCursor(sugConstr1); + return; + } + + } + applyCursor(); + } + + virtual bool pressButton(Base::Vector2d onSketchPos) + { + if (Mode == STATUS_SEEK_First) { + EditCurve[1] = onSketchPos; + sketchgui->drawEdit(EditCurve); + Mode = STATUS_End; + } + return true; + } + + virtual bool releaseButton(Base::Vector2d onSketchPos) + { + Q_UNUSED(onSketchPos); + if (Mode == STATUS_End) { + Base::Vector2d vector = EditCurve[1] - EditCurve[0]; + unsetCursor(); + resetPositionText(); + + Gui::Command::openCommand("Create copy of geometry"); + + try { + Gui::cmdAppObjectArgs(sketchgui->getObject(), + "addRectangularArray(%s, App.Vector(%f, %f, 0), %s, %d, %d, %s, %f)", + geoIdList.c_str(), vector.x, vector.y, + (Clone ? "True" : "False"), + Cols, Rows, + (ConstraintSeparation ? "True" : "False"), + (EqualVerticalHorizontalSpacing ? 1.0 : 0.5)); + Gui::Command::commitCommand(); + } + catch (const Base::Exception& e) { + Base::Console().Error("%s\n", e.what()); + Gui::Command::abortCommand(); + } + + // add auto constraints for the destination copy + if (sugConstr1.size() > 0) { + createAutoConstraints(sugConstr1, OriginGeoId+nElements, OriginPos); + sugConstr1.clear(); + } + tryAutoRecomputeIfNotSolve(static_cast(sketchgui->getObject())); + + EditCurve.clear(); + sketchgui->drawEdit(EditCurve); + + // no code after this line, Handler is deleted in ViewProvider + sketchgui->purgeHandler(); + } + return true; + } +protected: + SelectMode Mode; + string geoIdList; + Base::Vector3d Origin; + int OriginGeoId; + Sketcher::PointPos OriginPos; + int nElements; + bool Clone; + int Rows; + int Cols; + bool ConstraintSeparation; + bool EqualVerticalHorizontalSpacing; + std::vector EditCurve; + std::vector sugConstr1; +}; + DEF_STD_CMD_A(CmdSketcherRectangularArray) CmdSketcherRectangularArray::CmdSketcherRectangularArray() -:Command("Sketcher_RectangularArray") + :Command("Sketcher_RectangularArray") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Rectangular Array"); + sMenuText = QT_TR_NOOP("Rectangular array"); sToolTipText = QT_TR_NOOP("Creates a rectangular array pattern of the geometry taking as reference the last selected point"); sWhatsThis = "Sketcher_RectangularArray"; sStatusTip = sToolTipText; @@ -1819,7 +1789,8 @@ void CmdSketcherRectangularArray::activated(int iMsg) // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), QObject::tr("Select elements from a single sketch.")); return; } @@ -1827,8 +1798,9 @@ void CmdSketcherRectangularArray::activated(int iMsg) // get the needed lists and objects const std::vector &SubNames = selection[0].getSubNames(); if (SubNames.empty()) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), - QObject::tr("Select elements from a single sketch.")); + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), + QObject::tr("Select elements from a single sketch.")); return; } @@ -1849,11 +1821,10 @@ void CmdSketcherRectangularArray::activated(int iMsg) if (it->size() > 4 && it->substr(0,4) == "Edge") { LastGeoId = std::atoi(it->substr(4,4000).c_str()) - 1; LastPointPos = Sketcher::none; - LastGeo = Obj->getGeometry(LastGeoId); // lines to copy - if (LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } @@ -1868,7 +1839,7 @@ void CmdSketcherRectangularArray::activated(int iMsg) LastGeoId = GeoId; LastPointPos = Sketcher::start; // points to copy - if(LastGeoId>=0) { + if (LastGeoId >= 0) { geoids++; stream << LastGeoId << ","; } @@ -1888,8 +1859,9 @@ void CmdSketcherRectangularArray::activated(int iMsg) } } - if ( geoids < 1 ) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), + if (geoids < 1) { + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong selection"), QObject::tr("A copy requires at least one selected non-external geometric element")); return; } @@ -1899,8 +1871,8 @@ void CmdSketcherRectangularArray::activated(int iMsg) // remove the last added comma and brackets to make the python list int index = geoIdList.rfind(','); geoIdList.resize(index); - geoIdList.insert(0,1,'['); - geoIdList.append(1,']'); + geoIdList.insert(0, 1, '['); + geoIdList.append(1, ']'); // if the last element is not a point serving as a reference for the copy process // then make the start point of the last element the copy reference (if it exists, if not the center point) @@ -1923,25 +1895,24 @@ void CmdSketcherRectangularArray::activated(int iMsg) slad->Rows, slad->Cols, slad->ConstraintSeparation, slad->EqualVerticalHorizontalSpacing)); } - delete slad; } bool CmdSketcherRectangularArray::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), true ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), true); } -// Select Origin DEF_STD_CMD_A(CmdSketcherDeleteAllGeometry) CmdSketcherDeleteAllGeometry::CmdSketcherDeleteAllGeometry() -:Command("Sketcher_DeleteAllGeometry") + :Command("Sketcher_DeleteAllGeometry") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Delete All Geometry"); - sToolTipText = QT_TR_NOOP("Deletes all the geometry and constraints but external geometry"); + sMenuText = QT_TR_NOOP("Delete all geometry"); + sToolTipText = QT_TR_NOOP("Delete all geometry and constraints in the current sketch, " + "with the exception of external geometry"); sWhatsThis = "Sketcher_DeleteAllGeometry"; sStatusTip = sToolTipText; sPixmap = "Sketcher_DeleteGeometry"; @@ -1954,33 +1925,29 @@ void CmdSketcherDeleteAllGeometry::activated(int iMsg) Q_UNUSED(iMsg); int ret = QMessageBox::question(Gui::getMainWindow(), QObject::tr("Delete All Geometry"), - QObject::tr("Are you really sure you want to delete all the geometry and constraints?"), + QObject::tr("Are you really sure you want to delete all geometry and constraints?"), QMessageBox::Yes, QMessageBox::Cancel); // use an equality constraint if (ret == QMessageBox::Yes) { getSelection().clearSelection(); - Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); try { - Gui::Command::openCommand("Delete All Geometry"); + Gui::Command::openCommand("Delete all geometry"); Gui::cmdAppObjectArgs(Obj, "deleteAllGeometry()"); - Gui::Command::commitCommand(); } catch (const Base::Exception& e) { - Base::Console().Error("Failed to delete All Geometry: %s\n", e.what()); + Base::Console().Error("Failed to delete all geometry: %s\n", e.what()); Gui::Command::abortCommand(); } ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); - bool autoRecompute = hGrp->GetBool("AutoRecompute",false); + bool autoRecompute = hGrp->GetBool("AutoRecompute", false); - if(autoRecompute) + if (autoRecompute) Gui::Command::updateActive(); else Obj->solve(); @@ -1993,18 +1960,18 @@ void CmdSketcherDeleteAllGeometry::activated(int iMsg) bool CmdSketcherDeleteAllGeometry::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } DEF_STD_CMD_A(CmdSketcherDeleteAllConstraints) CmdSketcherDeleteAllConstraints::CmdSketcherDeleteAllConstraints() -:Command("Sketcher_DeleteAllConstraints") + :Command("Sketcher_DeleteAllConstraints") { sAppModule = "Sketcher"; sGroup = QT_TR_NOOP("Sketcher"); - sMenuText = QT_TR_NOOP("Delete All Constraints"); - sToolTipText = QT_TR_NOOP("Deletes all the constraints"); + sMenuText = QT_TR_NOOP("Delete all constraints"); + sToolTipText = QT_TR_NOOP("Delete all constraints in the sketch"); sWhatsThis = "Sketcher_DeleteAllConstraints"; sStatusTip = sToolTipText; sPixmap = "Sketcher_DeleteConstraints"; @@ -2022,17 +1989,13 @@ void CmdSketcherDeleteAllConstraints::activated(int iMsg) if (ret == QMessageBox::Yes) { getSelection().clearSelection(); - Gui::Document * doc= getActiveGuiDocument(); - SketcherGui::ViewProviderSketch* vp = static_cast(doc->getInEdit()); - Sketcher::SketchObject* Obj= vp->getSketchObject(); try { Gui::Command::openCommand("Delete All Constraints"); Gui::cmdAppObjectArgs(Obj, "deleteAllConstraints()"); - Gui::Command::commitCommand(); } catch (const Base::Exception& e) { @@ -2043,7 +2006,7 @@ void CmdSketcherDeleteAllConstraints::activated(int iMsg) ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool autoRecompute = hGrp->GetBool("AutoRecompute",false); - if(autoRecompute) + if (autoRecompute) Gui::Command::updateActive(); else Obj->solve(); @@ -2057,7 +2020,7 @@ void CmdSketcherDeleteAllConstraints::activated(int iMsg) bool CmdSketcherDeleteAllConstraints::isActive(void) { - return isSketcherAcceleratorActive( getActiveGuiDocument(), false ); + return isSketcherAcceleratorActive(getActiveGuiDocument(), false); } void CreateSketcherCommandsConstraintAccel(void)