X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FBuildAPI%2FBuildAPI_Edge.cpp;h=e0816f8331c741a1caec81a995f4add6bffe6f89;hb=5e2855aa69f9a63236c331efcb57ba433f92e901;hp=09374b14d6081dcb97cfab753489b19dd6cc60f7;hpb=d34842c50d5f335cca443c78910c16c54139c7d0;p=modules%2Fshaper.git diff --git a/src/BuildAPI/BuildAPI_Edge.cpp b/src/BuildAPI/BuildAPI_Edge.cpp index 09374b14d..e0816f833 100644 --- a/src/BuildAPI/BuildAPI_Edge.cpp +++ b/src/BuildAPI/BuildAPI_Edge.cpp @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D --> - -// File: BuildAPI_Edge.cpp -// Created: 09 June 2016 -// Author: Dmitry Bobylev +// 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 +// #include "BuildAPI_Edge.h" @@ -18,14 +31,32 @@ BuildAPI_Edge::BuildAPI_Edge(const std::shared_ptr& theFeature //================================================================================================== BuildAPI_Edge::BuildAPI_Edge(const std::shared_ptr& theFeature, - const std::list& theBaseObjects) + const std::list& theBaseObjects, + const bool theComputeIntersections) : ModelHighAPI_Interface(theFeature) { if(initialize()) { + fillAttribute(BuildPlugin_Edge::CREATION_BY_SEGMENTS(), mycreationMethod); + fillAttribute(theComputeIntersections, mycomputeIntersections); setBase(theBaseObjects); } } +//================================================================================================== +BuildAPI_Edge::BuildAPI_Edge(const std::shared_ptr& theFeature, + const ModelHighAPI_Selection& theFirstPoint, + const ModelHighAPI_Selection& theSecondPoint) +: ModelHighAPI_Interface(theFeature) +{ + if(initialize()) { + fillAttribute(BuildPlugin_Edge::CREATION_BY_POINTS(), mycreationMethod); + fillAttribute(theFirstPoint, myfirstPoint); + fillAttribute(theSecondPoint, mysecondPoint); + + execute(); + } +} + //================================================================================================== BuildAPI_Edge::~BuildAPI_Edge() { @@ -46,14 +77,37 @@ void BuildAPI_Edge::dump(ModelHighAPI_Dumper& theDumper) const FeaturePtr aBase = feature(); std::string aPartName = theDumper.name(aBase->document()); - theDumper << aBase << " = model.addEdge(" << aPartName << ", " - << aBase->selectionList(BuildPlugin_Edge::BASE_OBJECTS_ID()) << ")" << std::endl; + theDumper << aBase << " = model.addEdge(" << aPartName << ", "; + + AttributeStringPtr aCreationMethod = aBase->string(BuildPlugin_Edge::CREATION_METHOD()); + if (aCreationMethod && aCreationMethod->isInitialized() && + aCreationMethod->value() == BuildPlugin_Edge::CREATION_BY_POINTS()) { + theDumper << aBase->selection(BuildPlugin_Edge::FIRST_POINT()) << ", " + << aBase->selection(BuildPlugin_Edge::SECOND_POINT()); + } + else { + theDumper << aBase->selectionList(BuildPlugin_Edge::BASE_OBJECTS_ID()); + + AttributeBooleanPtr isIntersect = aBase->boolean(BuildPlugin_Edge::INTERSECT_ID()); + if (isIntersect->isInitialized()) + theDumper << ", " << isIntersect; + } + theDumper << ")" << std::endl; } //================================================================================================== EdgePtr addEdge(const std::shared_ptr& thePart, - const std::list& theBaseObjects) + const std::list& theBaseObjects, + const bool theComputeIntersections) +{ + std::shared_ptr aFeature = thePart->addFeature(BuildAPI_Edge::ID()); + return EdgePtr(new BuildAPI_Edge(aFeature, theBaseObjects, theComputeIntersections)); +} + +EdgePtr addEdge(const std::shared_ptr& thePart, + const ModelHighAPI_Selection& theFirstPoint, + const ModelHighAPI_Selection& theSecondPoint) { std::shared_ptr aFeature = thePart->addFeature(BuildAPI_Edge::ID()); - return EdgePtr(new BuildAPI_Edge(aFeature, theBaseObjects)); + return EdgePtr(new BuildAPI_Edge(aFeature, theFirstPoint, theSecondPoint)); }