X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModel%2FModel_SelectionNaming.h;h=3494369df56d3aef00b4dbd799dc34a2b5f95c94;hb=88be48ed1ea478b9d9d6ac2d965092418ef4dae6;hp=ff49de7bc8b9e80357dbcbf57706bd513a480f79;hpb=a94fc319f2aa64b43c9a73b5ff7063923648faec;p=modules%2Fshaper.git diff --git a/src/Model/Model_SelectionNaming.h b/src/Model/Model_SelectionNaming.h index ff49de7bc..3494369df 100644 --- a/src/Model/Model_SelectionNaming.h +++ b/src/Model/Model_SelectionNaming.h @@ -30,11 +30,33 @@ #include #include +// class to compare curves in the same way as in GeomAPI_Edge +class Model_CurvesHasher +{ +public: + DEFINE_STANDARD_ALLOC + /// standard hash code + static int HashCode (const Handle(Geom_Curve)& theCurve, const Standard_Integer Upper); + /// comapre curves by parameters and points on them + static bool IsEqual (const Handle(Geom_Curve)& theC1, const Handle(Geom_Curve)& theC2); +}; + +// class to compare edges in the same way as in GeomAPI_Edge +class Model_EdgesHasher +{ +public: + DEFINE_STANDARD_ALLOC + /// standard hash code + static int HashCode (const TopoDS_Edge& theEdge, const Standard_Integer Upper); + /// comapre curves by parameters and points on them + static bool IsEqual (const TopoDS_Edge& theE1, const TopoDS_Edge& theE2); +}; + + /**\class Model_SelectionNaming * \ingroup DataModel * \brief The set of methods that allow to generate a string-name for the selection attribute. */ - class Model_SelectionNaming { TDF_Label myLab; ///< Selection label of the selection attribute @@ -66,7 +88,8 @@ public: /// \returns faces fron this construction if found static std::shared_ptr findAppropriateFace( std::shared_ptr& theConstr, - NCollection_DataMap& theCurves, const bool theIsWire); + NCollection_DataMap& theCurves, + const bool theIsWire); /// Returns orientation of the edge in the context shape static int edgeOrientation(const TopoDS_Shape& theContext, TopoDS_Edge& theEdge); @@ -83,6 +106,10 @@ protected: /// Gets the stored name from the document std::string getShapeName(std::shared_ptr theDoc, const TopoDS_Shape& theShape, ResultPtr& theContext, const bool theAnotherDoc, const bool theWholeContext); + + /// Tries to find the name of the context sub-shape as combination of edges in context + std::string vertexNameByEdges(TopoDS_Shape theContext, TopoDS_Shape theSub, + std::shared_ptr theDoc, ResultPtr& theContextRes, const bool theAnotherDoc); }; #endif