X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModelAPI%2FModelAPI_ResultBody.cpp;h=4025d17b769b0a4e744586473d1c764982a9026e;hb=80926f787b594a2e9b77ee5bd22f517bdb910f07;hp=93b9961117164953345d83f5a99902d9d0360a40;hpb=4c2fb25615fc2e96957aeaee177251c40a434f4e;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_ResultBody.cpp b/src/ModelAPI/ModelAPI_ResultBody.cpp index 93b996111..4025d17b7 100644 --- a/src/ModelAPI/ModelAPI_ResultBody.cpp +++ b/src/ModelAPI/ModelAPI_ResultBody.cpp @@ -1,15 +1,32 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModelAPI_ResultBody.cpp -// Created: 07 Jul 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or +// email : webmaster.salome@opencascade.com +// #include "ModelAPI_ResultBody.h" #include +#include +#include ModelAPI_ResultBody::ModelAPI_ResultBody() : myBuilder(0) { + myConnect = ConnectionNotComputed; } ModelAPI_ResultBody::~ModelAPI_ResultBody() @@ -23,3 +40,136 @@ 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, + const bool theIsStoreAsGenerated, + const bool /*theSplitInSubs*/) +{ + myBuilder->loadAndOrientModifiedShapes( + theMS, theShapeIn, theKindOfShape, theTag, theName, theSubShapes, theIsStoreSeparate, + theIsStoreAsGenerated); +} + +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; +}