X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FConstructionAPI%2FConstructionAPI_Axis.cpp;h=08e53d760071e1a4ebcfa68b32663b32d07a3f8a;hb=bb4d0036dd0785056ab21fc237ec7fcc0870ae5f;hp=399017fea881a8992e3a3a6590b92ff302405d7c;hpb=c3e2c6c8c96fbd5de5da96de5042e40cb3ab3d49;p=modules%2Fshaper.git diff --git a/src/ConstructionAPI/ConstructionAPI_Axis.cpp b/src/ConstructionAPI/ConstructionAPI_Axis.cpp index 399017fea..08e53d760 100644 --- a/src/ConstructionAPI/ConstructionAPI_Axis.cpp +++ b/src/ConstructionAPI/ConstructionAPI_Axis.cpp @@ -1,8 +1,21 @@ -// Name : ConstructionAPI_Axis.cpp -// Purpose: +// Copyright (C) 2014-2019 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: -// 15/06/16 - Sergey POKHODENKO - Creation of the file #include "ConstructionAPI_Axis.h" @@ -86,7 +99,34 @@ ConstructionAPI_Axis::ConstructionAPI_Axis(const std::shared_ptr& theFeature, + const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Selection& thePlane2, + const ModelHighAPI_Double& theOffset2, + const bool theReverseOffset2) +: ModelHighAPI_Interface(theFeature) +{ + if(initialize()) { + setByTwoPlanes(thePlane1, thePlane2, theOffset2, theReverseOffset2); + } +} + +//================================================================================================== +ConstructionAPI_Axis::ConstructionAPI_Axis(const std::shared_ptr& theFeature, + const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Double& theOffset1, + const bool theReverseOffset1, + const ModelHighAPI_Selection& thePlane2) +: ModelHighAPI_Interface(theFeature) +{ + if(initialize()) { + setByTwoPlanes(thePlane1, theOffset1, theReverseOffset1, thePlane2); } } @@ -121,7 +161,8 @@ void ConstructionAPI_Axis::setByPointAndDirection(const ModelHighAPI_Selection& const ModelHighAPI_Double& theY, const ModelHighAPI_Double& theZ) { - fillAttribute(ConstructionPlugin_Axis::CREATION_METHOD_BY_POINT_AND_DIRECTION(), creationMethod()); + fillAttribute(ConstructionPlugin_Axis::CREATION_METHOD_BY_POINT_AND_DIRECTION(), + creationMethod()); fillAttribute(thePoint, firstPoint()); fillAttribute(theX, xDirection()); fillAttribute(theY, yDirection()); @@ -197,6 +238,40 @@ void ConstructionAPI_Axis::setByTwoPlanes(const ModelHighAPI_Selection& thePlane execute(); } +//================================================================================================== +void ConstructionAPI_Axis::setByTwoPlanes(const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Selection& thePlane2, + const ModelHighAPI_Double& theOffset2, + const bool theReverseOffset2) +{ + fillAttribute(ConstructionPlugin_Axis::CREATION_METHOD_BY_TWO_PLANES(), creationMethod()); + fillAttribute(thePlane1, plane1()); + fillAttribute("", useOffset1()); + fillAttribute(thePlane2, plane2()); + fillAttribute(ConstructionPlugin_Axis::USE_OFFSET2(), useOffset2()); + fillAttribute(theOffset2, offset2()); + fillAttribute(theReverseOffset2, reverseOffset2()); + + execute(); +} + +//================================================================================================== +void ConstructionAPI_Axis::setByTwoPlanes(const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Double& theOffset1, + const bool theReverseOffset1, + const ModelHighAPI_Selection& thePlane2) +{ + fillAttribute(ConstructionPlugin_Axis::CREATION_METHOD_BY_TWO_PLANES(), creationMethod()); + fillAttribute(thePlane1, plane1()); + fillAttribute(ConstructionPlugin_Axis::USE_OFFSET1(), useOffset1()); + fillAttribute(theOffset1, offset1()); + fillAttribute(theReverseOffset1, reverseOffset1()); + fillAttribute(thePlane2, plane2()); + fillAttribute("", useOffset2()); + + execute(); +} + //================================================================================================== void ConstructionAPI_Axis::dump(ModelHighAPI_Dumper& theDumper) const { @@ -214,8 +289,10 @@ void ConstructionAPI_Axis::dump(ModelHighAPI_Dumper& theDumper) const theDumper << ", " << anAttrDX << ", " << anAttrDY << ", " << anAttrDZ; } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_TWO_POINTS()) { - AttributeSelectionPtr anAttrFirstPnt = aBase->selection(ConstructionPlugin_Axis::POINT_FIRST()); - AttributeSelectionPtr anAttrSecondPnt = aBase->selection(ConstructionPlugin_Axis::POINT_SECOND()); + AttributeSelectionPtr anAttrFirstPnt = + aBase->selection(ConstructionPlugin_Axis::POINT_FIRST()); + AttributeSelectionPtr anAttrSecondPnt = + aBase->selection(ConstructionPlugin_Axis::POINT_SECOND()); theDumper << ", " << anAttrFirstPnt << ", " << anAttrSecondPnt; } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_LINE()) { @@ -223,7 +300,8 @@ void ConstructionAPI_Axis::dump(ModelHighAPI_Dumper& theDumper) const theDumper << ", " << anAttrLine; } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_CYLINDRICAL_FACE()) { - AttributeSelectionPtr anAttrFace = aBase->selection(ConstructionPlugin_Axis::CYLINDRICAL_FACE()); + AttributeSelectionPtr anAttrFace = + aBase->selection(ConstructionPlugin_Axis::CYLINDRICAL_FACE()); theDumper << ", " << anAttrFace; } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_PLANE_AND_POINT()) { @@ -233,14 +311,25 @@ void ConstructionAPI_Axis::dump(ModelHighAPI_Dumper& theDumper) const theDumper << ", " << anAttrPlane << ", " << anAttrPoint; } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_TWO_PLANES()) { AttributeSelectionPtr anAttrPlane1 = aBase->selection(ConstructionPlugin_Axis::PLANE1()); - AttributeDoublePtr anAttrOffset1 = aBase->real(ConstructionPlugin_Axis::OFFSET1()); - AttributeBooleanPtr anAttrReverseOffset1 = aBase->boolean(ConstructionPlugin_Axis::REVERSE_OFFSET1()); AttributeSelectionPtr anAttrPlane2 = aBase->selection(ConstructionPlugin_Axis::PLANE2()); - AttributeDoublePtr anAttrOffset2 = aBase->real(ConstructionPlugin_Axis::OFFSET2()); - AttributeBooleanPtr anAttrReverseOffset2 = aBase->boolean(ConstructionPlugin_Axis::REVERSE_OFFSET2()); - theDumper << ", " << anAttrPlane1 << ", " << anAttrOffset1 << ", " << anAttrReverseOffset1 - << ", " << anAttrPlane2 << ", " << anAttrOffset2 << ", " << anAttrReverseOffset2; + theDumper << ", " << anAttrPlane1; + if(aBase->string(ConstructionPlugin_Axis::USE_OFFSET1())->isInitialized() + && !aBase->string(ConstructionPlugin_Axis::USE_OFFSET1())->value().empty()) { + AttributeDoublePtr anAttrOffset1 = aBase->real(ConstructionPlugin_Axis::OFFSET1()); + AttributeBooleanPtr anAttrReverseOffset1 = + aBase->boolean(ConstructionPlugin_Axis::REVERSE_OFFSET1()); + theDumper << ", " << anAttrOffset1 << ", " << anAttrReverseOffset1; + } + + theDumper << ", " << anAttrPlane2; + if(aBase->string(ConstructionPlugin_Axis::USE_OFFSET2())->isInitialized() + && !aBase->string(ConstructionPlugin_Axis::USE_OFFSET2())->value().empty()) { + AttributeDoublePtr anAttrOffset2 = aBase->real(ConstructionPlugin_Axis::OFFSET2()); + AttributeBooleanPtr anAttrReverseOffset2 = + aBase->boolean(ConstructionPlugin_Axis::REVERSE_OFFSET2()); + theDumper << ", " << anAttrOffset2 << ", " << anAttrReverseOffset2; + } } else if(aCreationMethod == ConstructionPlugin_Axis::CREATION_METHOD_BY_POINT_AND_DIRECTION()) { AttributeSelectionPtr anAttrFirstPnt = aBase->selection(ConstructionPlugin_Axis::POINT_FIRST()); AttributeDoublePtr anAttrX = aBase->real(ConstructionPlugin_Axis::X_DIRECTION()); @@ -309,3 +398,29 @@ AxisPtr addAxis(const std::shared_ptr& thePart, return AxisPtr(new ConstructionAPI_Axis(aFeature, thePlane1, theOffset1, theReverseOffset1, thePlane2, theOffset2, theReverseOffset2)); } + +//================================================================================================== +AxisPtr addAxis(const std::shared_ptr& thePart, + const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Selection& thePlane2, + const ModelHighAPI_Double& theOffset2, + const bool theReverseOffset2) +{ + // TODO(spo): check that thePart is not empty + std::shared_ptr aFeature = thePart->addFeature(ConstructionAPI_Axis::ID()); + return AxisPtr(new ConstructionAPI_Axis(aFeature, thePlane1, + thePlane2, theOffset2, theReverseOffset2)); +} + +//================================================================================================== +AxisPtr addAxis(const std::shared_ptr& thePart, + const ModelHighAPI_Selection& thePlane1, + const ModelHighAPI_Double& theOffset1, + const bool theReverseOffset1, + const ModelHighAPI_Selection& thePlane2) +{ + // TODO(spo): check that thePart is not empty + std::shared_ptr aFeature = thePart->addFeature(ConstructionAPI_Axis::ID()); + return AxisPtr(new ConstructionAPI_Axis(aFeature, thePlane1, theOffset1, theReverseOffset1, + thePlane2)); +}