X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Placement.cpp;h=0039d750d4ab0d6e7e30a161961d67e15fb3fc7f;hb=21a0c85b52bb93f94680e2342370764e6510e387;hp=627d10666b9819996d38dd6a4479a6aad52e8be7;hpb=ed1b0004eeea49d31df14d804fff09d2063002ce;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Placement.cpp b/src/FeaturesPlugin/FeaturesPlugin_Placement.cpp index 627d10666..0039d750d 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Placement.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Placement.cpp @@ -20,6 +20,8 @@ #include #include +#include + FeaturesPlugin_Placement::FeaturesPlugin_Placement() { } @@ -27,7 +29,7 @@ FeaturesPlugin_Placement::FeaturesPlugin_Placement() void FeaturesPlugin_Placement::initAttributes() { - AttributeSelectionListPtr aSelection = + AttributeSelectionListPtr aSelection = std::dynamic_pointer_cast(data()->addAttribute( OBJECTS_LIST_ID(), ModelAPI_AttributeSelectionList::typeId())); @@ -47,7 +49,8 @@ void FeaturesPlugin_Placement::execute() return; } for(int anObjectsIndex = 0; anObjectsIndex < anObjectsSelList->size(); anObjectsIndex++) { - std::shared_ptr anObjectAttr = anObjectsSelList->value(anObjectsIndex); + std::shared_ptr anObjectAttr = + anObjectsSelList->value(anObjectsIndex); std::shared_ptr anObject = anObjectAttr->value(); if(!anObject.get()) { // may be for not-activated parts eraseResults(); @@ -142,7 +145,8 @@ void FeaturesPlugin_Placement::execute() for(ListOfShape::iterator anObjectsIt = anObjects.begin(); anObjectsIt != anObjects.end(); anObjectsIt++, aContext++) { - if ((*aContext)->groupName() == ModelAPI_ResultPart::group()) { // for part results just set transformation + // for part results just set transformation + if ((*aContext)->groupName() == ModelAPI_ResultPart::group()) { ResultPartPtr anOrigin = std::dynamic_pointer_cast(*aContext); ResultPartPtr aResultPart = document()->copyPart(anOrigin, data(), aResultIndex); aResultPart->setTrsf(aContextRes, aTrsf); @@ -169,7 +173,8 @@ void FeaturesPlugin_Placement::execute() } //LoadNamingDS - std::shared_ptr aResultBody = document()->createBody(data(), aResultIndex); + std::shared_ptr aResultBody = + document()->createBody(data(), aResultIndex); loadNamingDS(aTransformAlgo, aResultBody, aBaseShape); setResult(aResultBody, aResultIndex); } @@ -188,28 +193,10 @@ void FeaturesPlugin_Placement::loadNamingDS(GeomAlgoAPI_Transform& theTransformA //load result theResultBody->storeModified(theBaseShape, theTransformAlgo.shape()); - std::shared_ptr aSubShapes = theTransformAlgo.mapOfSubShapes(); - - // put modifed faces in DF - int aPlacedTag = 1; std::string aPlacedName = "Placed"; + std::shared_ptr aSubShapes = theTransformAlgo.mapOfSubShapes(); - switch(theBaseShape->shapeType()) { - case GeomAPI_Shape::COMPOUND: - case GeomAPI_Shape::COMPSOLID: - case GeomAPI_Shape::SOLID: - case GeomAPI_Shape::SHELL: - theResultBody->loadAndOrientModifiedShapes(&theTransformAlgo, - theBaseShape, GeomAPI_Shape::FACE, - aPlacedTag, aPlacedName + "_Face", *aSubShapes.get()); - case GeomAPI_Shape::FACE: - case GeomAPI_Shape::WIRE: - theResultBody->loadAndOrientModifiedShapes(&theTransformAlgo, - theBaseShape, GeomAPI_Shape::EDGE, - ++aPlacedTag, aPlacedName + "_Edge", *aSubShapes.get()); - case GeomAPI_Shape::EDGE: - theResultBody->loadAndOrientModifiedShapes(&theTransformAlgo, - theBaseShape, GeomAPI_Shape::VERTEX, - ++aPlacedTag, aPlacedName + "_Vertex", *aSubShapes.get()); - } + FeaturesPlugin_Tools::storeModifiedShapes(theTransformAlgo, theResultBody, + theBaseShape, 1, 2, 3, aPlacedName, + *aSubShapes.get()); }