X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelHighAPI%2FModelHighAPI_Services.cpp;h=20e21e1b47af7ba811e9af87fef05d29f14981bc;hb=e675b9eb8df755fff9763560ddf36d5bfeb6fe35;hp=09be73726729380ce997b7d211ac4383deba5a6c;hpb=f98f887290d4e2b4bd6618389911e82b6b9674f3;p=modules%2Fshaper.git diff --git a/src/ModelHighAPI/ModelHighAPI_Services.cpp b/src/ModelHighAPI/ModelHighAPI_Services.cpp index 09be73726..20e21e1b4 100644 --- a/src/ModelHighAPI/ModelHighAPI_Services.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Services.cpp @@ -1,15 +1,33 @@ -// Name : ModelHighAPI_Services.cpp -// Purpose: +// 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 // -// History: -// 17/06/16 - Sergey POKHODENKO - Creation of the file -//-------------------------------------------------------------------------------------- #include "ModelHighAPI_Services.h" //-------------------------------------------------------------------------------------- #include #include #include +#include +#include +#include + +#include //-------------------------------------------------------------------------------------- std::shared_ptr moduleDocument() @@ -42,14 +60,52 @@ std::shared_ptr defaultPlane( const std::string& theName ) return std::shared_ptr(new GeomAPI_Ax3(o, x, n)); } +std::string defaultPlane(const std::shared_ptr& theOrigin, + const std::shared_ptr& theNormal, + const std::shared_ptr& theDirX) +{ + static const double aTol = 1.e-10; + + if (fabs(theOrigin->x()) > aTol || fabs(theOrigin->y()) > aTol || fabs(theOrigin->z()) > aTol) + return std::string(); + + // XOY or XOZ + if (fabs(theNormal->x()) < aTol && + fabs(theDirX->x() - 1.0) < aTol && fabs(theDirX->y()) < aTol && fabs(theDirX->z()) < aTol) { + // XOY + if (fabs(theNormal->y()) < aTol && fabs(theNormal->z() - 1.0) < aTol) + return std::string("XOY"); + else if (fabs(theNormal->y() + 1.0) < aTol && fabs(theNormal->z()) < aTol) + return std::string("XOZ"); + } + // YOZ + else if (fabs(theNormal->x() - 1.0) < aTol && + fabs(theNormal->y()) < aTol && fabs(theNormal->z()) < aTol && + fabs(theDirX->x()) < aTol && fabs(theDirX->y() - 1.0) < aTol && + fabs(theDirX->z()) < aTol) + return std::string("YOZ"); + + return std::string(); +} + +std::shared_ptr standardPlane(const std::string & theName){ + DocumentPtr aPartSet = ModelAPI_Session::get()->moduleDocument(); + // searching for the construction element + return std::dynamic_pointer_cast( + aPartSet->objectByName(ModelAPI_ResultConstruction::group(), theName)); +} + //-------------------------------------------------------------------------------------- void begin() { ModelAPI_Session::get()->startOperation(); } + void end() { ModelAPI_Session::get()->finishOperation(); + // to update data tree in the end of dumped script execution + ModelAPI_EventCreator::get()->sendReordered(FeaturePtr()); } void apply() { @@ -58,6 +114,13 @@ void apply() aSession->startOperation(); } +void updateFeatures() +{ + Events_Loop* aLoop = Events_Loop::loop(); + aLoop->flush(Events_Loop::eventByName(EVENT_OBJECT_CREATED)); + aLoop->flush(Events_Loop::eventByName(EVENT_OBJECT_UPDATED)); +} + //-------------------------------------------------------------------------------------- void undo() {