X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_QuadFromMedialAxis_1D2D.cxx;h=7efd9af5f0e6d125090d7ef70e2f92c8342f6abc;hb=HEAD;hp=094784908ecec53c054022ea8ff4d7dd3db383ef;hpb=7a713be33b27d6a8c77f983460f0e97e52c6ff7c;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx b/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx index 094784908..8682b8982 100644 --- a/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_QuadFromMedialAxis_1D2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -30,6 +30,7 @@ #include "SMESH_Gen.hxx" #include "SMESH_MAT2d.hxx" #include "SMESH_Mesh.hxx" +#include "SMESH_SequentialMesh.hxx" #include "SMESH_MeshEditor.hxx" #include "SMESH_MesherHelper.hxx" #include "SMESH_ProxyMesh.hxx" @@ -71,8 +72,8 @@ using namespace std; class StdMeshers_QuadFromMedialAxis_1D2D::Algo1D : public StdMeshers_Regular_1D { public: - Algo1D(int studyId, SMESH_Gen* gen): - StdMeshers_Regular_1D( gen->GetANewId(), studyId, gen ) + Algo1D(SMESH_Gen* gen): + StdMeshers_Regular_1D( gen->GetANewId(), gen ) { } void SetSegmentLength( double len ) @@ -144,7 +145,7 @@ public: return true; } }; - + //================================================================================ /*! * \brief Constructor sets algo features @@ -152,9 +153,8 @@ public: //================================================================================ StdMeshers_QuadFromMedialAxis_1D2D::StdMeshers_QuadFromMedialAxis_1D2D(int hypId, - int studyId, SMESH_Gen* gen) - : StdMeshers_Quadrangle_2D(hypId, studyId, gen), + : StdMeshers_Quadrangle_2D(hypId, gen), _regular1D( 0 ) { _name = "QuadFromMedialAxis_1D2D"; @@ -204,7 +204,7 @@ bool StdMeshers_QuadFromMedialAxis_1D2D::CheckHypothesis(SMESH_Mesh& aMe namespace { typedef map< const SMDS_MeshNode*, list< const SMDS_MeshNode* > > TMergeMap; - + //================================================================================ /*! * \brief Sinuous face @@ -237,11 +237,11 @@ namespace /*! * \brief Temporary mesh */ - struct TmpMesh : public SMESH_Mesh + struct TmpMesh : public SMESH_SequentialMesh { TmpMesh() { - _myMeshDS = new SMESHDS_Mesh(/*id=*/0, /*isEmbeddedMode=*/true); + _meshDS = new SMESHDS_Mesh(/*id=*/0, /*isEmbeddedMode=*/true); } }; @@ -261,8 +261,8 @@ namespace virtual void ProcessEvent(const int event, const int eventType, SMESH_subMesh* faceSubMesh, - SMESH_subMeshEventListenerData* data, - const SMESH_Hypothesis* hyp) + SMESH_subMeshEventListenerData* /*data*/, + const SMESH_Hypothesis* /*hyp*/) { if ( eventType == SMESH_subMesh::ALGO_EVENT ) { @@ -507,7 +507,7 @@ namespace theSinuEdges[1].clear(); theShortEdges[0].clear(); theShortEdges[1].clear(); - + vector & allEdges = theSinuFace._edges; const size_t nbEdges = allEdges.size(); if ( nbEdges < 4 && theSinuFace._nbWires == 1 ) @@ -741,7 +741,7 @@ namespace } // cout << "from salome.geom import geomBuilder" << endl; - // cout << "geompy = geomBuilder.New(salome.myStudy)" << endl; + // cout << "geompy = geomBuilder.New()" << endl; Handle(TColgp_HArray1OfPnt) points = new TColgp_HArray1OfPnt(1, pnt.size()); for ( size_t i = 0; i < pnt.size(); ++i ) { @@ -842,7 +842,7 @@ namespace // Find 1D algo to mesh branchEdge - + // look for a most local 1D hyp assigned to the FACE int mostSimpleShape = -1, maxShape = TopAbs_EDGE; TopoDS_Edge edge; @@ -1155,6 +1155,8 @@ namespace bool isShortPrev[2], isShortNext[2], isPrevCloser[2]; TMAPar2NPoints::iterator u2NPPrev = u2NP, u2NPNext = u2NP; --u2NPPrev; ++u2NPNext; + if ( u2NPNext == thePointsOnE.end() ) + u2NPNext = thePointsOnE.begin(); // hope theSinuFace.IsRing() for ( int iS = 0; iS < 2; ++iS ) // side with Vertex and side with Nodes { NodePoint np = get( u2NP->second, iS ); @@ -1184,6 +1186,8 @@ namespace if ( !npCloseV._node || npCloseV._node == npVert._node ) { npProj = npCloseN; + if ( i+1 < projToMerge.size() && u2NPClose == projToMerge[ i+1 ]) + ++i; thePointsOnE.erase( u2NPClose ); continue; } @@ -1247,7 +1251,7 @@ namespace //================================================================================ void separateNodes( SMESH_MesherHelper& theHelper, - const SMESH_MAT2d::MedialAxis& theMA, + const SMESH_MAT2d::MedialAxis& /*theMA*/, TMAPar2NPoints & thePointsOnE, SinuousFace& theSinuFace, const vector< bool >& theIsComputedEdge) @@ -1447,7 +1451,7 @@ namespace nIn = nodeParams.rbegin()->second; else nIn = u2n->second; - + // find position of distant nodes in uvsOut and uvsIn size_t iDistOut, iDistIn; for ( iDistOut = 0; iDistOut < uvsOut.size(); ++iDistOut ) @@ -1719,8 +1723,8 @@ namespace if ( isComputed[ edgeIDs1[i]] && isComputed[ edgeIDs2[i]] ) { - int nbNodes1 = meshDS->MeshElements(edgeIDs[ edgeIDs1[i]] )->NbNodes(); - int nbNodes2 = meshDS->MeshElements(edgeIDs[ edgeIDs2[i]] )->NbNodes(); + smIdType nbNodes1 = meshDS->MeshElements(edgeIDs[ edgeIDs1[i]] )->NbNodes(); + smIdType nbNodes2 = meshDS->MeshElements(edgeIDs[ edgeIDs2[i]] )->NbNodes(); if ( nbNodes1 != nbNodes2 ) return false; if (( int(i)-1 >= 0 ) && @@ -1931,7 +1935,7 @@ namespace const vector& theShortEdges, SMESH_Algo* the1dAlgo, const bool theHasRadialHyp, - const bool theIs2nd) + const bool /*theIs2nd*/) { SMESH_Hypothesis::Hypothesis_Status aStatus; for ( size_t i = 0; i < theShortEdges.size(); ++i ) @@ -2166,7 +2170,7 @@ bool StdMeshers_QuadFromMedialAxis_1D2D::Compute(SMESH_Mesh& theMesh, SMESH_MAT2d::MedialAxis ma( F, sinuFace._sinuEdges, minSegLen, /*ignoreCorners=*/true ); if ( !_regular1D ) - _regular1D = new Algo1D( _studyId, _gen ); + _regular1D = new Algo1D( _gen ); _regular1D->SetSegmentLength( minSegLen ); vector maParams;