X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConstructionAPI%2FConstructionAPI_Plane.cpp;h=ca820343304d953780a6e590abae3ae7ba886566;hb=06e7f5859095193fc7f498bd89a7d28009794f53;hp=5c2c28d5d30c1f0a6636356c7a698192aa817bb2;hpb=423c10234142d14d0d5de89383f2f96a4ec5930f;p=modules%2Fshaper.git diff --git a/src/ConstructionAPI/ConstructionAPI_Plane.cpp b/src/ConstructionAPI/ConstructionAPI_Plane.cpp index 5c2c28d5d..ca8203433 100644 --- a/src/ConstructionAPI/ConstructionAPI_Plane.cpp +++ b/src/ConstructionAPI/ConstructionAPI_Plane.cpp @@ -1,10 +1,21 @@ -// Copyright (C) 2014-2016 CEA/DEN, EDF R&D - -// Name : ConstructionAPI_Plane.cpp -// Purpose: +// Copyright (C) 2014-2023 CEA, EDF +// +// 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: -// 27/05/16 - Sergey POKHODENKO - Creation of the file #include "ConstructionAPI_Plane.h" @@ -22,11 +33,12 @@ ConstructionAPI_Plane::ConstructionAPI_Plane(const std::shared_ptr& theFeature, const ModelHighAPI_Selection& theFace, const ModelHighAPI_Double& theDistance, - const bool theIsReverse) + const bool theIsReverse, + const ModelHighAPI_Integer& theNbCopy) : ModelHighAPI_Interface(theFeature) { if(initialize()) { - setByFaceAndDistance(theFace, theDistance, theIsReverse); + setByFaceAndDistance(theFace, theDistance, theIsReverse, theNbCopy); } } @@ -88,11 +100,12 @@ ConstructionAPI_Plane::ConstructionAPI_Plane(const std::shared_ptr& theFeature, const ModelHighAPI_Selection& thePlane, const ModelHighAPI_Selection& theAxis, - const ModelHighAPI_Double& theAngle) + const ModelHighAPI_Double& theAngle, + const ModelHighAPI_Integer& theNbCopy) : ModelHighAPI_Interface(theFeature) { if(initialize()) { - setByRotation(thePlane, theAxis, theAngle); + setByRotation(thePlane, theAxis, theAngle, theNbCopy); } } @@ -104,7 +117,8 @@ ConstructionAPI_Plane::~ConstructionAPI_Plane() //================================================================================================== void ConstructionAPI_Plane::setByFaceAndDistance(const ModelHighAPI_Selection& theFace, const ModelHighAPI_Double& theDistance, - const bool theIsReverse) + const bool theIsReverse, + const ModelHighAPI_Integer& theNbCopy) { fillAttribute(ConstructionPlugin_Plane::CREATION_METHOD_BY_OTHER_PLANE(), mycreationMethod); fillAttribute(theFace, myplane); @@ -112,6 +126,7 @@ void ConstructionAPI_Plane::setByFaceAndDistance(const ModelHighAPI_Selection& t mycreationMethodByOtherPlane); fillAttribute(theDistance, mydistance); fillAttribute(theIsReverse, myreverse); + fillAttribute(theNbCopy, mynbcopy); execute(); } @@ -185,7 +200,8 @@ void ConstructionAPI_Plane::setByCoincidentToPoint(const ModelHighAPI_Selection& //================================================================================================== void ConstructionAPI_Plane::setByRotation(const ModelHighAPI_Selection& thePlane, const ModelHighAPI_Selection& theAxis, - const ModelHighAPI_Double& theAngle) + const ModelHighAPI_Double& theAngle, + const ModelHighAPI_Integer& theNbCopy) { fillAttribute(ConstructionPlugin_Plane::CREATION_METHOD_BY_OTHER_PLANE(), mycreationMethod); fillAttribute(thePlane, myplane); @@ -193,6 +209,7 @@ void ConstructionAPI_Plane::setByRotation(const ModelHighAPI_Selection& thePlane mycreationMethodByOtherPlane); fillAttribute(theAxis, myaxis); fillAttribute(theAngle, myangle); + fillAttribute(theNbCopy, mynbcopy); execute(); } @@ -237,8 +254,11 @@ void ConstructionAPI_Plane::dump(ModelHighAPI_Dumper& theDumper) const ConstructionPlugin_Plane::CREATION_METHOD_BY_DISTANCE_FROM_OTHER()) { AttributeDoublePtr anAttrDistance = aBase->real(ConstructionPlugin_Plane::DISTANCE()); AttributeBooleanPtr anAttrReverse = aBase->boolean(ConstructionPlugin_Plane::REVERSE()); + AttributeIntegerPtr anAttrNbCopy = aBase->integer(ConstructionPlugin_Plane::NB_COPIES()); theDumper << ", " << anAttrPlane << ", " << anAttrDistance << ", " << anAttrReverse; + if(anAttrNbCopy.get() && anAttrNbCopy->value() > 1) + theDumper << ", " << anAttrNbCopy; } else if(aCreationMethodOption == ConstructionPlugin_Plane::CREATION_METHOD_BY_COINCIDENT_TO_POINT()) { AttributeSelectionPtr anAttrPoint = @@ -248,8 +268,11 @@ void ConstructionAPI_Plane::dump(ModelHighAPI_Dumper& theDumper) const } else if(aCreationMethodOption == ConstructionPlugin_Plane::CREATION_METHOD_BY_ROTATION()) { AttributeSelectionPtr anAttrAxis = aBase->selection(ConstructionPlugin_Plane::AXIS()); AttributeDoublePtr anAttrAngle = aBase->real(ConstructionPlugin_Plane::ANGLE()); + AttributeIntegerPtr anAttrNbCopy = aBase->integer(ConstructionPlugin_Plane::NB_COPIES()); theDumper << ", " << anAttrPlane << ", " << anAttrAxis << ", " << anAttrAngle; + if (anAttrNbCopy.get() && anAttrNbCopy->value() > 1) + theDumper << ", " << anAttrNbCopy; } } else if(aCreationMethod == ConstructionPlugin_Plane::CREATION_METHOD_BY_TWO_PARALLEL_PLANES()) { @@ -266,11 +289,13 @@ void ConstructionAPI_Plane::dump(ModelHighAPI_Dumper& theDumper) const PlanePtr addPlane(const std::shared_ptr& thePart, const ModelHighAPI_Selection& theFace, const ModelHighAPI_Double& theDistance, - const bool theIsReverse) + const bool theIsReverse, + const ModelHighAPI_Integer& theNbCopies) { // TODO(spo): check that thePart is not empty std::shared_ptr aFeature = thePart->addFeature(ConstructionAPI_Plane::ID()); - return PlanePtr(new ConstructionAPI_Plane(aFeature, theFace, theDistance, theIsReverse)); + return PlanePtr(new ConstructionAPI_Plane(aFeature, theFace, theDistance, + theIsReverse, theNbCopies)); } //================================================================================================== @@ -321,9 +346,10 @@ PlanePtr addPlane(const std::shared_ptr& thePart, PlanePtr addPlane(const std::shared_ptr& thePart, const ModelHighAPI_Selection& thePlane, const ModelHighAPI_Selection& theAxis, - const ModelHighAPI_Double& theAngle) + const ModelHighAPI_Double& theAngle, + const ModelHighAPI_Integer& theNbCopies) { // TODO(spo): check that thePart is not empty std::shared_ptr aFeature = thePart->addFeature(ConstructionAPI_Plane::ID()); - return PlanePtr(new ConstructionAPI_Plane(aFeature, thePlane, theAxis, theAngle)); + return PlanePtr(new ConstructionAPI_Plane(aFeature, thePlane, theAxis, theAngle, theNbCopies)); }