Salome HOME
Tangency arc feature can not be opened/saved (issue #1401)
[modules/shaper.git] / src / SketchPlugin / SketchPlugin_Tools.cpp
index 297649e623deb03cdd26d518dad8e5788fe2fc3c..82c5a3f93986c9c07d3857e797771ec59f7cdc52 100644 (file)
@@ -9,8 +9,9 @@
 #include <GeomDataAPI_Point.h>
 #include <GeomDataAPI_Point2D.h>
 #include <ModelAPI_AttributeDouble.h>
-#include <SketchPlugin_ConstraintCoincidence.h>
 #include <SketcherPrs_Tools.h>
+#include <SketchPlugin_ConstraintCoincidence.h>
+#include <SketchPlugin_SketchEntity.h>
 
 namespace SketchPlugin_Tools {
 
@@ -60,7 +61,7 @@ void clearExpressions(FeaturePtr theFeature)
   }
 }
 
-std::shared_ptr<GeomAPI_Pnt2d> getCoincidencePoint(FeaturePtr theStartCoin)
+std::shared_ptr<GeomAPI_Pnt2d> getCoincidencePoint(const FeaturePtr theStartCoin)
 {
   std::shared_ptr<GeomAPI_Pnt2d> aPnt = SketcherPrs_Tools::getPoint(theStartCoin.get(), 
                                                                     SketchPlugin_Constraint::ENTITY_A());
@@ -69,26 +70,29 @@ std::shared_ptr<GeomAPI_Pnt2d> getCoincidencePoint(FeaturePtr theStartCoin)
   return aPnt;
 }
 
-void findCoincidences(FeaturePtr theStartCoin,
-                      std::string theAttr,
+void findCoincidences(const FeaturePtr theStartCoin,
+                      const std::string& theAttr,
                       std::set<FeaturePtr>& theList)
 {
   AttributeRefAttrPtr aPnt = theStartCoin->refattr(theAttr);
-  if (!aPnt) return;
+  if(!aPnt) {
+    return;
+  }
   FeaturePtr aObj = ModelAPI_Feature::feature(aPnt->object());
-  if (theList.find(aObj) == theList.end()) {
+  if(theList.find(aObj) == theList.end()) {
     std::shared_ptr<GeomAPI_Pnt2d> aOrig = getCoincidencePoint(theStartCoin);
-    if (aOrig.get() == NULL)
+    if(aOrig.get() == NULL) {
       return;
+    }
     theList.insert(aObj);
     const std::set<AttributePtr>& aRefsList = aObj->data()->refsToMe();
     std::set<AttributePtr>::const_iterator aIt;
-    for (aIt = aRefsList.cbegin(); aIt != aRefsList.cend(); ++aIt) {
+    for(aIt = aRefsList.cbegin(); aIt != aRefsList.cend(); ++aIt) {
       std::shared_ptr<ModelAPI_Attribute> aAttr = (*aIt);
       FeaturePtr aConstrFeature = std::dynamic_pointer_cast<ModelAPI_Feature>(aAttr->owner());
-      if (aConstrFeature->getKind() == SketchPlugin_ConstraintCoincidence::ID()) { 
+      if(aConstrFeature->getKind() == SketchPlugin_ConstraintCoincidence::ID()) {
         std::shared_ptr<GeomAPI_Pnt2d> aPnt = getCoincidencePoint(aConstrFeature);
-        if (aPnt.get() && aOrig->isEqual(aPnt)) {
+        if(aPnt.get() && aOrig->isEqual(aPnt)) {
           findCoincidences(aConstrFeature, SketchPlugin_ConstraintCoincidence::ENTITY_A(), theList);
           findCoincidences(aConstrFeature, SketchPlugin_ConstraintCoincidence::ENTITY_B(), theList);
         }