X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_ResultBody.cpp;h=e5f023f11c46af0cfd20166a1094dd9af6060b62;hb=423f6b0a08a86d5e47115b87603cddeae4468b49;hp=9d001619d0922ff39901b3c38c984b677cb9f542;hpb=7b95df2653284e65f416373ff010af49ee8c68ef;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_ResultBody.cpp b/src/ModelAPI/ModelAPI_ResultBody.cpp index 9d001619d..e5f023f11 100644 --- a/src/ModelAPI/ModelAPI_ResultBody.cpp +++ b/src/ModelAPI/ModelAPI_ResultBody.cpp @@ -5,10 +5,20 @@ // Author: Mikhail PONIKAROV #include "ModelAPI_ResultBody.h" +#include +#include +#include + +ModelAPI_ResultBody::ModelAPI_ResultBody() +: myBuilder(0) +{ + myConnect = ConnectionNotComputed; +} ModelAPI_ResultBody::~ModelAPI_ResultBody() { - + if (myBuilder) + delete myBuilder; } std::string ModelAPI_ResultBody::groupName() @@ -16,3 +26,133 @@ std::string ModelAPI_ResultBody::groupName() return group(); } +void ModelAPI_ResultBody::store(const std::shared_ptr& theShape, + const bool theIsStoreSameShapes) +{ + myBuilder->store(theShape, theIsStoreSameShapes); + myConnect = ConnectionNotComputed; + + static Events_Loop* aLoop = Events_Loop::loop(); + static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY); + static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get(); + aECreator->sendUpdated(data()->owner(), aRedispEvent); +} + +void ModelAPI_ResultBody::storeGenerated(const std::shared_ptr& theFromShape, + const std::shared_ptr& theToShape) +{ + myBuilder->storeGenerated(theFromShape, theToShape); + myConnect = ConnectionNotComputed; + + static Events_Loop* aLoop = Events_Loop::loop(); + static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY); + static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get(); + aECreator->sendUpdated(data()->owner(), aRedispEvent); +} + +void ModelAPI_ResultBody::storeModified(const std::shared_ptr& theOldShape, + const std::shared_ptr& theNewShape, + const int theDecomposeSolidsTag) +{ + myBuilder->storeModified(theOldShape, theNewShape, theDecomposeSolidsTag); + myConnect = ConnectionNotComputed; + + static Events_Loop* aLoop = Events_Loop::loop(); + static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY); + static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get(); + aECreator->sendUpdated(data()->owner(), aRedispEvent); +} + +void ModelAPI_ResultBody::storeWithoutNaming(const std::shared_ptr& theShape) +{ + myBuilder->storeWithoutNaming(theShape); + myConnect = ConnectionNotComputed; + + static Events_Loop* aLoop = Events_Loop::loop(); + static Events_ID aRedispEvent = aLoop->eventByName(EVENT_OBJECT_TO_REDISPLAY); + static const ModelAPI_EventCreator* aECreator = ModelAPI_EventCreator::get(); + aECreator->sendUpdated(data()->owner(), aRedispEvent); +} + +std::shared_ptr ModelAPI_ResultBody::shape() +{ + return myBuilder->shape(); +} + +void ModelAPI_ResultBody::generated(const std::shared_ptr& theNewShape, + const std::string& theName, const int theTag) +{ + myBuilder->generated(theNewShape, theName, theTag); +} + +void ModelAPI_ResultBody::generated(const std::shared_ptr& theOldShape, + const std::shared_ptr& theNewShape, const std::string& theName, + const int theTag) +{ + myBuilder->generated(theOldShape, theNewShape, theName, theTag); +} + +void ModelAPI_ResultBody::modified(const std::shared_ptr& theOldShape, + const std::shared_ptr& theNewShape, const std::string& theName, + const int theTag) +{ + myBuilder->modified(theOldShape, theNewShape, theName, theTag); +} + + +void ModelAPI_ResultBody::deleted( + const std::shared_ptr& theOldShape, const int theTag) +{ + myBuilder->deleted(theOldShape, theTag); +} + +void ModelAPI_ResultBody::loadDeletedShapes (GeomAlgoAPI_MakeShape* theMS, + std::shared_ptr theShapeIn, + const int theKindOfShape, + const int theTag) +{ + myBuilder->loadDeletedShapes(theMS, theShapeIn, theKindOfShape, theTag); +} + +void ModelAPI_ResultBody::loadAndOrientModifiedShapes (GeomAlgoAPI_MakeShape* theMS, + std::shared_ptr theShapeIn, const int theKindOfShape, const int theTag, + const std::string& theName, GeomAPI_DataMapOfShapeShape& theSubShapes, + const bool theIsStoreSeparate) +{ + myBuilder->loadAndOrientModifiedShapes( + theMS, theShapeIn, theKindOfShape, theTag, theName, theSubShapes, theIsStoreSeparate); +} + +void ModelAPI_ResultBody::loadAndOrientGeneratedShapes (GeomAlgoAPI_MakeShape* theMS, + std::shared_ptr theShapeIn, const int theKindOfShape, + const int theTag, const std::string& theName, GeomAPI_DataMapOfShapeShape& theSubShapes) +{ + myBuilder->loadAndOrientGeneratedShapes( + theMS, theShapeIn, theKindOfShape, theTag, theName, theSubShapes); +} + +void ModelAPI_ResultBody::loadFirstLevel(std::shared_ptr theShape, + const std::string& theName, int& theTag) +{ + myBuilder->loadFirstLevel(theShape, theName, theTag); +} + +void ModelAPI_ResultBody::loadDisconnectedEdges(std::shared_ptr theShape, + const std::string& theName, int& theTag) +{ + myBuilder->loadDisconnectedEdges(theShape, theName, theTag); +} + +void ModelAPI_ResultBody::loadDisconnectedVertexes(std::shared_ptr theShape, + const std::string& theName,int& theTag) +{ + myBuilder->loadDisconnectedVertexes(theShape, theName, theTag); +} + +bool ModelAPI_ResultBody::isConnectedTopology() +{ + if (myConnect == ConnectionNotComputed) { + myConnect = shape()->isConnectedTopology() ? IsConnected : IsNotConnected; + } + return myConnect == IsConnected; +}