X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Tool.cxx;h=8867c8eafe999e2d99c20929d0a7eb6cd5400b2f;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=e5b45109b0f778544d8d0866a31437d952a26530;hpb=216399653492d563cd2855580fa4275e61ee0495;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Tool.cxx b/src/HYDROData/HYDROData_Tool.cxx index e5b45109..8867c8ea 100644 --- a/src/HYDROData/HYDROData_Tool.cxx +++ b/src/HYDROData/HYDROData_Tool.cxx @@ -6,33 +6,19 @@ #include "HYDROData_Iterator.h" #include "HYDROData_NaturalObject.h" -#include -#include - #include #include #include #include -#define CLASS2D 1 -#ifdef CLASS2D #include -#include #include -#include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#undef _NCollection_MapHasher -#endif + static int aMaxNameId = std::numeric_limits::max(); void HYDROData_Tool::WriteStringsToFile( QFile& theFile, @@ -123,56 +109,6 @@ QString HYDROData_Tool::GenerateObjectName( const Handle(HYDROData_Document)& th return aName; } -Handle(HYDROData_Entity) HYDROData_Tool::FindObjectByName( const Handle(HYDROData_Document)& theDoc, - const QString& theName, - const ObjectKind theObjectKind ) -{ - Handle(HYDROData_Entity) anObject; - if ( theName.isEmpty() || theDoc.IsNull() ) - return anObject; - - QStringList aNamesList; - aNamesList << theName; - - HYDROData_SequenceOfObjects aSeqOfObjs = FindObjectsByNames( theDoc, aNamesList, theObjectKind ); - if( aSeqOfObjs.IsEmpty() ) - return anObject; - - anObject = aSeqOfObjs.First(); - return anObject; -} - -HYDROData_SequenceOfObjects HYDROData_Tool::FindObjectsByNames( const Handle(HYDROData_Document)& theDoc, - const QStringList& theNames, - const ObjectKind theObjectKind ) -{ - HYDROData_SequenceOfObjects aResSeq; - if( theDoc.IsNull() ) - return aResSeq; - - QStringList aNamesList = theNames; - - HYDROData_Iterator anIter( theDoc, theObjectKind ); - for( ; anIter.More(); anIter.Next() ) - { - Handle(HYDROData_Entity) anObject = anIter.Current(); - if( anObject.IsNull() ) - continue; - - QString anObjName = anObject->GetName(); - if ( anObjName.isEmpty() || !aNamesList.contains( anObjName ) ) - continue; - - aResSeq.Append( anObject ); - - aNamesList.removeAll( anObjName ); - if ( aNamesList.isEmpty() ) - break; - } - - return aResSeq; -} - bool HYDROData_Tool::IsGeometryObject( const Handle(HYDROData_Entity)& theObject ) { if ( theObject.IsNull() ) @@ -227,63 +163,18 @@ QString HYDROData_Tool::GenerateNameForPython( const MapOfTreatedObjects& theTre return aName; } //====================================================================================================== -// the Face to be: planer, whitout holes -#ifdef CLASS2D -TopAbs_State HYDROData_Tool::ComputePointState( const gp_XY& thePnt2d, const TopoDS_Face& theFace ) +TopAbs_State HYDROData_Tool::ComputePointState( const gp_XY& theXY, const TopoDS_Face& theFace ) { TopAbs_State aState(TopAbs_UNKNOWN); if(theFace.IsNull()) return aState; - -#ifdef CLASS2D - TopoDS_Wire aWire; int nb(0); - TopoDS_Iterator it(theFace); - for(;it.More();it.Next()) { - aWire = TopoDS::Wire(it.Value()); - nb++; - } - if(nb > 1 || aWire.IsNull()) return aState; - gp_Pln aPlane; - gp_Vec aNormal; - BRepBuilderAPI_FindPlane fndPlane (theFace, Precision::Confusion()); - if(fndPlane.Found()) - aPlane = fndPlane.Plane()->Pln(); - else - return aState; - aNormal = gp_Vec(aPlane.Axis().Direction()); - if(theFace.Orientation() == TopAbs_REVERSED) - aNormal.Reverse(); - gp_Pnt aPoint = gp_Pnt (thePnt2d.X(), thePnt2d.Y(), 0); - TColgp_SequenceOfVec aSeq; - TopTools_MapOfShape aMap; - it.Initialize(aWire); - for (;it.More(); it.Next()) { - const TopoDS_Vertex& aVx = TopExp::FirstVertex(TopoDS::Edge(it.Value()), Standard_True); - if(!aMap.Add(aVx)) - continue; - const gp_Pnt& aCurPnt = BRep_Tool::Pnt(TopoDS::Vertex(aVx)); - if(aPoint.IsEqual(aCurPnt,Precision::Confusion())) { - aState = TopAbs_ON; - return aState; - } - gp_Vec aVec (aPoint, aCurPnt); - aSeq.Append(aVec); - } - Standard_Real anAng(0.0); - for(int i = 1;i < aSeq.Length();i++) { - const gp_Vec& aV1 = aSeq.Value(i); - const gp_Vec& aV2 = aSeq.Value(i+1); - anAng += aV1.AngleWithRef(aV2, aNormal); - } - anAng += aSeq.Value(aSeq.Length()).AngleWithRef(aSeq.Value(1), aNormal); - if(abs(anAng) > Precision::Angular()) - aState = TopAbs_IN; - else - aState = TopAbs_OUT; - -#else - BRepTopAdaptor_FClass2d aClassifier( theFace, Precision::Confusion() ); - aState = aClassifier.Perform( gp_Pnt2d( thePoint ), Standard_False ); -#endif + Standard_Real aTol = BRep_Tool::Tolerance(theFace); + BRepAdaptor_Surface Ads ( theFace, Standard_False ); + Standard_Real toluv = Min ( Ads.UResolution(aTol), Ads.VResolution(aTol) ); + const gp_Pln& aPlane = Ads.Surface().Plane(); + gp_Pnt aPnt(theXY.X(), theXY.Y(), 0.); + Standard_Real aU1, aV1; + ElSLib::Parameters(aPlane,aPnt, aU1, aV1); + BRepTopAdaptor_FClass2d aClassifier( theFace, toluv ); + aState = aClassifier.Perform( gp_Pnt2d(aU1, aV1), Standard_False ); return aState; -} -#endif \ No newline at end of file +} \ No newline at end of file