X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FStdMeshers%2FStdMeshers_RadialQuadrangle_1D2D.cxx;h=82de8c6bbac814b92bbdaaa3cbe5df389e8db2e7;hb=f5882cb24088610fb4f7d1cbcd41cb19a71bed2c;hp=ec3c297fcf8fe37280da30f10d2dc3f877e9592a;hpb=83b0c984cc12946923dc2640d68ba3a2700faa28;p=modules%2Fsmesh.git diff --git a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx index ec3c297fc..82de8c6bb 100644 --- a/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx +++ b/src/StdMeshers/StdMeshers_RadialQuadrangle_1D2D.cxx @@ -74,9 +74,8 @@ using namespace std; //======================================================================= StdMeshers_RadialQuadrangle_1D2D::StdMeshers_RadialQuadrangle_1D2D(int hypId, - int studyId, SMESH_Gen* gen) - :StdMeshers_Quadrangle_2D( hypId, studyId, gen ) + :StdMeshers_Quadrangle_2D( hypId, gen ) { _name = "RadialQuadrangle_1D2D"; _shapeType = (1 << TopAbs_FACE); // 1 bit per shape type @@ -208,7 +207,8 @@ namespace SMESH_Mesh* aMesh, StdMeshers_FaceSidePtr& aCircSide, StdMeshers_FaceSidePtr& aLinSide1, - StdMeshers_FaceSidePtr& aLinSide2) + StdMeshers_FaceSidePtr& aLinSide2, + SMESH_MesherHelper* helper) { const TopoDS_Face& face = TopoDS::Face( aShape ); aCircSide.reset(); aLinSide1.reset(); aLinSide2.reset(); @@ -259,7 +259,7 @@ namespace StdMeshers_FaceSidePtr side; if ( aMesh ) side = StdMeshers_FaceSide::New( face, sideEdges, aMesh, - /*isFwd=*/true, /*skipMedium=*/ true ); + /*isFwd=*/true, /*skipMedium=*/ true, helper ); sides.push_back( side ); } @@ -357,7 +357,7 @@ namespace edges.push_back( aCircSide->Edge( iE % aCircSide->NbEdges() )); aCircSide = StdMeshers_FaceSide::New( face, edges, aMesh, - /*isFwd=*/true, /*skipMedium=*/ true ); + /*isFwd=*/true, /*skipMedium=*/ true, helper ); } } @@ -630,7 +630,7 @@ public: const int myID = -1001; TNodeDistributor* myHyp = dynamic_cast( aMesh.GetHypothesis( myID )); if ( !myHyp ) - myHyp = new TNodeDistributor( myID, 0, aMesh.GetGen() ); + myHyp = new TNodeDistributor( myID, aMesh.GetGen() ); return myHyp; } // ----------------------------------------------------------------------------- @@ -668,7 +668,7 @@ public: return true; } // ----------------------------------------------------------------------------- - //! Make mesh on an adge using assigned 1d hyp or defaut nb of segments + //! Make mesh on an edge using assigned 1d hyp or default nb of segments bool ComputeCircularEdge( SMESH_Mesh& aMesh, const StdMeshers_FaceSidePtr& aSide ) { @@ -696,7 +696,7 @@ public: return ok; } // ----------------------------------------------------------------------------- - //! Make mesh on an adge using assigned 1d hyp or defaut nb of segments + //! Make mesh on an edge using assigned 1d hyp or default nb of segments bool EvaluateCircularEdge(SMESH_Mesh& aMesh, const StdMeshers_FaceSidePtr aSide, MapShapeNbElems& aResMap) @@ -725,8 +725,8 @@ public: } protected: // ----------------------------------------------------------------------------- - TNodeDistributor( int hypId, int studyId, SMESH_Gen* gen) - : StdMeshers_Regular_1D( hypId, studyId, gen) + TNodeDistributor( int hypId, SMESH_Gen* gen) + : StdMeshers_Regular_1D( hypId, gen) { } // ----------------------------------------------------------------------------- @@ -773,8 +773,11 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, StdMeshers_Quadrangle_2D::myCheckOri = false; StdMeshers_Quadrangle_2D::myQuadList.clear(); + myHelper->SetSubShape( aShape ); + myHelper->SetElementsOnShape( true ); + StdMeshers_FaceSidePtr circSide, linSide1, linSide2; - int nbSides = analyseFace( aShape, &aMesh, circSide, linSide1, linSide2 ); + int nbSides = analyseFace( aShape, &aMesh, circSide, linSide1, linSide2, myHelper ); if( nbSides > 3 || nbSides < 1 ) return error("The face must be a full ellipse or a part of ellipse (i.e. the number " "of edges is less or equal to 3 and one of them is an ellipse curve)"); @@ -797,7 +800,6 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, Handle(Geom_Surface) S = BRep_Tool::Surface(F); myHelper->IsQuadraticSubMesh( aShape ); - myHelper->SetElementsOnShape( true ); vector< double > layerPositions; // [0,1] @@ -811,7 +813,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, TopoDS_Edge linEdge = makeEdgeToCenter( circSide, F, circNode ); StdMeshers_FaceSidePtr tmpSide = - StdMeshers_FaceSide::New( F, linEdge, &aMesh, /*isFrw=*/true, /*skipMedium=*/true ); + StdMeshers_FaceSide::New( F, linEdge, &aMesh, /*isFrw=*/true, /*skipMedium=*/true, myHelper ); if ( !computeLayerPositions( tmpSide, layerPositions )) return false; @@ -855,7 +857,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Compute(SMESH_Mesh& aMesh, isVIn0Shared = vIn0.IsSame( circSide->FirstVertex( iE )); linSide1 = StdMeshers_FaceSide::New( F, edges, &aMesh, - /*isFrw=*/isVIn0Shared, /*skipMedium=*/true ); + /*isFrw=*/isVIn0Shared, /*skipMedium=*/true, myHelper ); int nbMeshedEdges; if ( !computeLayerPositions( linSide1, layerPositions, &nbMeshedEdges )) @@ -1105,7 +1107,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, TNodeDistributor* algo1d = TNodeDistributor::GetDistributor(aMesh); StdMeshers_FaceSidePtr circSide, linSide1, linSide2; - int nbSides = analyseFace( aShape, &aMesh, circSide, linSide1, linSide2 ); + int nbSides = analyseFace( aShape, &aMesh, circSide, linSide1, linSide2, myHelper ); if( nbSides > 3 || nbSides < 1 ) return false; @@ -1123,7 +1125,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::Evaluate(SMESH_Mesh& aMesh, TopoDS_Edge linEdge = makeEdgeToCenter( circSide, F, circNode ); StdMeshers_FaceSidePtr tmpSide = - StdMeshers_FaceSide::New( F, linEdge, &aMesh, /*isFrw=*/true, /*skipMedium=*/true ); + StdMeshers_FaceSide::New( F, linEdge, &aMesh, /*isFrw=*/true, /*skipMedium=*/true, myHelper ); if ( !computeLayerPositions( tmpSide, layerPositions )) return false; @@ -1220,7 +1222,7 @@ bool StdMeshers_RadialQuadrangle_1D2D::IsApplicable( const TopoDS_Shape & aShape for (TopExp_Explorer exp( aShape, TopAbs_FACE ); exp.More(); exp.Next(), ++nbFoundFaces ) { StdMeshers_FaceSidePtr circSide, linSide1, linSide2; - int nbSides = analyseFace( exp.Current(), NULL, circSide, linSide1, linSide2 ); + int nbSides = analyseFace( exp.Current(), NULL, circSide, linSide1, linSide2, NULL ); bool ok = ( 0 < nbSides && nbSides <= 3 && isCornerInsideCircle( circSide, linSide1, linSide2 )); if( toCheckAll && !ok ) return false;