Salome HOME
Values of constraint (length, distance, radius) now initialized on reference definition
[modules/shaper.git] / src / Model / Model_AttributeSelection.cpp
index 05888b5d73f1834fad0dd005dc7e8c65bf9a7e9f..4f95dc83fa93813defbf8631de18c7c4309d05cb 100644 (file)
@@ -45,9 +45,9 @@ static const int kSTART_VERTEX_DELTA = 1000000;
 // TDF_Reference - from ReferenceAttribute, the context
 
 void Model_AttributeSelection::setValue(const ResultPtr& theContext,
-  const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+  const std::shared_ptr<GeomAPI_Shape>& theSubShape)
 {
-  const boost::shared_ptr<GeomAPI_Shape>& anOldShape = value();
+  const std::shared_ptr<GeomAPI_Shape>& anOldShape = value();
   bool isOldShape = 
     (theSubShape == anOldShape || (theSubShape && anOldShape && theSubShape->isEqual(anOldShape)));
   if (isOldShape) return; // shape is the same, so context is also unchanged
@@ -65,14 +65,14 @@ void Model_AttributeSelection::setValue(const ResultPtr& theContext,
   owner()->data()->sendAttributeUpdated(this);
 }
 
-boost::shared_ptr<GeomAPI_Shape> Model_AttributeSelection::value()
+std::shared_ptr<GeomAPI_Shape> Model_AttributeSelection::value()
 {
-  boost::shared_ptr<GeomAPI_Shape> aResult;
+  std::shared_ptr<GeomAPI_Shape> aResult;
   if (myIsInitialized) {
     Handle(TNaming_NamedShape) aSelection;
     if (selectionLabel().FindAttribute(TNaming_NamedShape::GetID(), aSelection)) {
       TopoDS_Shape aSelShape = aSelection->Get();
-      aResult = boost::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape);
+      aResult = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape);
       aResult->setImpl(new TopoDS_Shape(aSelShape));
     }
   }
@@ -86,11 +86,11 @@ Model_AttributeSelection::Model_AttributeSelection(TDF_Label& theLabel)
 }
 
 ResultPtr Model_AttributeSelection::context() {
-  return boost::dynamic_pointer_cast<ModelAPI_Result>(myRef.value());
+  return std::dynamic_pointer_cast<ModelAPI_Result>(myRef.value());
 }
 
 
-void Model_AttributeSelection::setObject(const boost::shared_ptr<ModelAPI_Object>& theObject)
+void Model_AttributeSelection::setObject(const std::shared_ptr<ModelAPI_Object>& theObject)
 {
   ModelAPI_AttributeSelection::setObject(theObject);
   myRef.setObject(theObject);
@@ -110,9 +110,9 @@ bool Model_AttributeSelection::update()
   } else if (aContext->groupName() == ModelAPI_ResultConstruction::group()) {
     // construction: identification by the results indexes, recompute faces and
     // take the face that more close by the indexes
-    boost::shared_ptr<GeomAPI_PlanarEdges> aWirePtr = 
-      boost::dynamic_pointer_cast<GeomAPI_PlanarEdges>(
-      boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aContext)->shape());
+    std::shared_ptr<GeomAPI_PlanarEdges> aWirePtr = 
+      std::dynamic_pointer_cast<GeomAPI_PlanarEdges>(
+      std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(aContext)->shape());
     if (aWirePtr && aWirePtr->hasPlane()) {
       TDF_Label aLab = myRef.myRef->Label();
       // getting a type of selected shape
@@ -123,26 +123,26 @@ bool Model_AttributeSelection::update()
       TopAbs_ShapeEnum aShapeType = (TopAbs_ShapeEnum)(aTypeAttr->Get());
       // selected indexes will be needed in each "if"
       Handle(TDataStd_IntPackedMap) aSubIds;
-      boost::shared_ptr<GeomAPI_Shape> aNewSelected;
+      std::shared_ptr<GeomAPI_Shape> aNewSelected;
       bool aNoIndexes = 
         !aLab.FindAttribute(TDataStd_IntPackedMap::GetID(), aSubIds) || aSubIds->Extent() == 0;
       // for now working only with composite features
-      FeaturePtr aContextFeature = owner()->document()->feature(aContext);
+      FeaturePtr aContextFeature = aContext->document()->feature(aContext);
       CompositeFeaturePtr aComposite = 
-        boost::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
+        std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
       if (!aComposite || aComposite->numberOfSubs() == 0) {
         return false;
       }
 
       if (aShapeType == TopAbs_FACE) {
         // If this is a wire with plane defined thin it is a sketch-like object
-        std::list<boost::shared_ptr<GeomAPI_Shape> > aFaces;
+        std::list<std::shared_ptr<GeomAPI_Shape> > aFaces;
         GeomAlgoAPI_SketchBuilder::createFaces(aWirePtr->origin(), aWirePtr->dirX(),
           aWirePtr->dirY(), aWirePtr->norm(), aWirePtr, aFaces);
         if (aFaces.empty()) // no faces, update can not work correctly
           return false;
         // if there is no edges indexes, any face can be used: take the first
-        boost::shared_ptr<GeomAPI_Shape> aNewSelected;
+        std::shared_ptr<GeomAPI_Shape> aNewSelected;
         if (aNoIndexes) {
           aNewSelected = *(aFaces.begin());
         } else { // searching for most looks-like initial face by the indexes
@@ -152,11 +152,11 @@ bool Model_AttributeSelection::update()
           for(int a = 0; a < aSubNum; a++) {
             if (aSubIds->Contains(aComposite->subFeatureId(a))) {
               FeaturePtr aSub = aComposite->subFeature(a);
-              const std::list<boost::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
-              std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aRes;
+              const std::list<std::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
+              std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aRes;
               for(aRes = aResults.cbegin(); aRes != aResults.cend(); aRes++) {
                 ResultConstructionPtr aConstr = 
-                  boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
+                  std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
                 if (aConstr->shape() && aConstr->shape()->isEdge()) {
                   const TopoDS_Shape& aResShape = aConstr->shape()->impl<TopoDS_Shape>();
                   TopoDS_Edge anEdge = TopoDS::Edge(aResShape);
@@ -170,7 +170,7 @@ bool Model_AttributeSelection::update()
             }
           }
           // iterate new result faces and searching for these edges
-          std::list<boost::shared_ptr<GeomAPI_Shape> >::iterator aFacesIter = aFaces.begin();
+          std::list<std::shared_ptr<GeomAPI_Shape> >::iterator aFacesIter = aFaces.begin();
           double aBestFound = 0; // best percentage of found edges
           for(; aFacesIter != aFaces.end(); aFacesIter++) {
             int aFound = 0, aNotFound = 0;
@@ -209,11 +209,11 @@ bool Model_AttributeSelection::update()
           if (aSubIds->IsEmpty() || aSubIds->Contains(aComposite->subFeatureId(a))) {
             // found the appropriate feature
             FeaturePtr aFeature = aComposite->subFeature(a);
-            std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
+            std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
               aFeature->results().cbegin();
             for(;aResIter != aFeature->results().cend(); aResIter++) {
               ResultConstructionPtr aRes = 
-                boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
+                std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
               if (aRes && aRes->shape() && aRes->shape()->isEdge()) { // found!
                 selectConstruction(aContext, aRes->shape());
                 owner()->data()->sendAttributeUpdated(this);
@@ -235,11 +235,11 @@ bool Model_AttributeSelection::update()
             else if (aSubIds->Contains(aFeatureID + kSTART_VERTEX_DELTA)) aVertexNum = 2;
             // found the feature with appropriate edge
             FeaturePtr aFeature = aComposite->subFeature(a);
-            std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
+            std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aResIter =
               aFeature->results().cbegin();
             for(;aResIter != aFeature->results().cend(); aResIter++) {
               ResultConstructionPtr aRes = 
-                boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
+                std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aResIter);
               if (aRes && aRes->shape()) {
                 if (aRes->shape()->isVertex() && aVertexNum == 0) { // found!
                   selectConstruction(aContext, aRes->shape());
@@ -250,7 +250,7 @@ bool Model_AttributeSelection::update()
                   int aVIndex = 1;
                   for(TopExp_Explorer aVExp(anEdge, TopAbs_VERTEX); aVExp.More(); aVExp.Next()) {
                     if (aVIndex == aVertexNum) { // found!
-                      boost::shared_ptr<GeomAPI_Shape> aVertex(new GeomAPI_Shape);
+                      std::shared_ptr<GeomAPI_Shape> aVertex(new GeomAPI_Shape);
                       aVertex->setImpl(new TopoDS_Shape(aVExp.Current()));
                       selectConstruction(aContext, aVertex);
                       owner()->data()->sendAttributeUpdated(this);
@@ -271,18 +271,18 @@ bool Model_AttributeSelection::update()
 
 
 void Model_AttributeSelection::selectBody(
-    const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape)
 {
   // perform the selection
   TNaming_Selector aSel(selectionLabel());
   TopoDS_Shape aNewShape = theSubShape ? theSubShape->impl<TopoDS_Shape>() : TopoDS_Shape();
   TopoDS_Shape aContext;
 
-  ResultBodyPtr aBody = boost::dynamic_pointer_cast<ModelAPI_ResultBody>(myRef.value());
+  ResultBodyPtr aBody = std::dynamic_pointer_cast<ModelAPI_ResultBody>(myRef.value());
   if (aBody)
     aContext = aBody->shape()->impl<TopoDS_Shape>();
   else {
-    ResultConstructionPtr aConstr = boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(myRef.value());
+    ResultConstructionPtr aConstr = std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(myRef.value());
     if (aConstr) {
       aContext = aConstr->shape()->impl<TopoDS_Shape>();
     } else {
@@ -294,15 +294,15 @@ void Model_AttributeSelection::selectBody(
 }
 
 void Model_AttributeSelection::selectConstruction(
-    const ResultPtr& theContext, const boost::shared_ptr<GeomAPI_Shape>& theSubShape)
+    const ResultPtr& theContext, const std::shared_ptr<GeomAPI_Shape>& theSubShape)
 {
-  FeaturePtr aContextFeature = owner()->document()->feature(theContext);
+  FeaturePtr aContextFeature = theContext->document()->feature(theContext);
   CompositeFeaturePtr aComposite = 
-    boost::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
+    std::dynamic_pointer_cast<ModelAPI_CompositeFeature>(aContextFeature);
   if (!aComposite || aComposite->numberOfSubs() == 0) {
     return; // saving of context is enough: result construction contains exactly the needed shape
   }
-  boost::shared_ptr<Model_Data> aData = boost::dynamic_pointer_cast<Model_Data>(owner()->data());
+  std::shared_ptr<Model_Data> aData = std::dynamic_pointer_cast<Model_Data>(owner()->data());
   TDF_Label aLab = myRef.myRef->Label();
   // identify the reuslts of sub-object of the composite by edges
   const TopoDS_Shape& aSubShape = theSubShape->impl<TopoDS_Shape>();
@@ -327,12 +327,12 @@ void Model_AttributeSelection::selectConstruction(
   const int aSubNum = aComposite->numberOfSubs();
   for(int a = 0; a < aSubNum; a++) {
     FeaturePtr aSub = aComposite->subFeature(a);
-    const std::list<boost::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
-    std::list<boost::shared_ptr<ModelAPI_Result> >::const_iterator aRes = aResults.cbegin();
+    const std::list<std::shared_ptr<ModelAPI_Result> >& aResults = aSub->results();
+    std::list<std::shared_ptr<ModelAPI_Result> >::const_iterator aRes = aResults.cbegin();
     // there may be many shapes (circle and center): register if at least one is in selection
     for(; aRes != aResults.cend(); aRes++) {
       ResultConstructionPtr aConstr = 
-        boost::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
+        std::dynamic_pointer_cast<ModelAPI_ResultConstruction>(*aRes);
       if (!aConstr->shape()) {
         continue;
       }