X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FBuildAPI%2FBuildAPI_Edge.cpp;h=e0816f8331c741a1caec81a995f4add6bffe6f89;hb=5e2855aa69f9a63236c331efcb57ba433f92e901;hp=cd8052f300cdc27a8cc61ebd00c04399940eb743;hpb=6e421e939851e0de46554ae45a3ca0e1f67cd91d;p=modules%2Fshaper.git diff --git a/src/BuildAPI/BuildAPI_Edge.cpp b/src/BuildAPI/BuildAPI_Edge.cpp index cd8052f30..e0816f833 100644 --- a/src/BuildAPI/BuildAPI_Edge.cpp +++ b/src/BuildAPI/BuildAPI_Edge.cpp @@ -31,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() { @@ -59,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)); }