X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_AttributeSelection.cpp;h=4f95dc83fa93813defbf8631de18c7c4309d05cb;hb=d4a163b94d27eddb09d6bbe1cec96c9c25042282;hp=05888b5d73f1834fad0dd005dc7e8c65bf9a7e9f;hpb=35f0e7a2748c1ae77e4dae1a156d10ddadc10afe;p=modules%2Fshaper.git diff --git a/src/Model/Model_AttributeSelection.cpp b/src/Model/Model_AttributeSelection.cpp index 05888b5d7..4f95dc83f 100644 --- a/src/Model/Model_AttributeSelection.cpp +++ b/src/Model/Model_AttributeSelection.cpp @@ -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& theSubShape) + const std::shared_ptr& theSubShape) { - const boost::shared_ptr& anOldShape = value(); + const std::shared_ptr& 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 Model_AttributeSelection::value() +std::shared_ptr Model_AttributeSelection::value() { - boost::shared_ptr aResult; + std::shared_ptr aResult; if (myIsInitialized) { Handle(TNaming_NamedShape) aSelection; if (selectionLabel().FindAttribute(TNaming_NamedShape::GetID(), aSelection)) { TopoDS_Shape aSelShape = aSelection->Get(); - aResult = boost::shared_ptr(new GeomAPI_Shape); + aResult = std::shared_ptr(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(myRef.value()); + return std::dynamic_pointer_cast(myRef.value()); } -void Model_AttributeSelection::setObject(const boost::shared_ptr& theObject) +void Model_AttributeSelection::setObject(const std::shared_ptr& 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 aWirePtr = - boost::dynamic_pointer_cast( - boost::dynamic_pointer_cast(aContext)->shape()); + std::shared_ptr aWirePtr = + std::dynamic_pointer_cast( + std::dynamic_pointer_cast(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 aNewSelected; + std::shared_ptr 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(aContextFeature); + std::dynamic_pointer_cast(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 > aFaces; + std::list > 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 aNewSelected; + std::shared_ptr 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 >& aResults = aSub->results(); - std::list >::const_iterator aRes; + const std::list >& aResults = aSub->results(); + std::list >::const_iterator aRes; for(aRes = aResults.cbegin(); aRes != aResults.cend(); aRes++) { ResultConstructionPtr aConstr = - boost::dynamic_pointer_cast(*aRes); + std::dynamic_pointer_cast(*aRes); if (aConstr->shape() && aConstr->shape()->isEdge()) { const TopoDS_Shape& aResShape = aConstr->shape()->impl(); 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 >::iterator aFacesIter = aFaces.begin(); + std::list >::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 >::const_iterator aResIter = + std::list >::const_iterator aResIter = aFeature->results().cbegin(); for(;aResIter != aFeature->results().cend(); aResIter++) { ResultConstructionPtr aRes = - boost::dynamic_pointer_cast(*aResIter); + std::dynamic_pointer_cast(*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 >::const_iterator aResIter = + std::list >::const_iterator aResIter = aFeature->results().cbegin(); for(;aResIter != aFeature->results().cend(); aResIter++) { ResultConstructionPtr aRes = - boost::dynamic_pointer_cast(*aResIter); + std::dynamic_pointer_cast(*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 aVertex(new GeomAPI_Shape); + std::shared_ptr 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& theSubShape) + const ResultPtr& theContext, const std::shared_ptr& theSubShape) { // perform the selection TNaming_Selector aSel(selectionLabel()); TopoDS_Shape aNewShape = theSubShape ? theSubShape->impl() : TopoDS_Shape(); TopoDS_Shape aContext; - ResultBodyPtr aBody = boost::dynamic_pointer_cast(myRef.value()); + ResultBodyPtr aBody = std::dynamic_pointer_cast(myRef.value()); if (aBody) aContext = aBody->shape()->impl(); else { - ResultConstructionPtr aConstr = boost::dynamic_pointer_cast(myRef.value()); + ResultConstructionPtr aConstr = std::dynamic_pointer_cast(myRef.value()); if (aConstr) { aContext = aConstr->shape()->impl(); } else { @@ -294,15 +294,15 @@ void Model_AttributeSelection::selectBody( } void Model_AttributeSelection::selectConstruction( - const ResultPtr& theContext, const boost::shared_ptr& theSubShape) + const ResultPtr& theContext, const std::shared_ptr& theSubShape) { - FeaturePtr aContextFeature = owner()->document()->feature(theContext); + FeaturePtr aContextFeature = theContext->document()->feature(theContext); CompositeFeaturePtr aComposite = - boost::dynamic_pointer_cast(aContextFeature); + std::dynamic_pointer_cast(aContextFeature); if (!aComposite || aComposite->numberOfSubs() == 0) { return; // saving of context is enough: result construction contains exactly the needed shape } - boost::shared_ptr aData = boost::dynamic_pointer_cast(owner()->data()); + std::shared_ptr aData = std::dynamic_pointer_cast(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(); @@ -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 >& aResults = aSub->results(); - std::list >::const_iterator aRes = aResults.cbegin(); + const std::list >& aResults = aSub->results(); + std::list >::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(*aRes); + std::dynamic_pointer_cast(*aRes); if (!aConstr->shape()) { continue; }