X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FNETGENPlugin%2FNETGENPlugin_Remesher_2D.cxx;h=bd91f64be0fe2a2d8479ddedb141cb339f26a45f;hb=2d646f5c7d5ad52f0a47ea87c18d9ce74273599b;hp=d4645ae350a2fccb0be6759b08746eb9036215b8;hpb=e0ea26e957431259646172ae990eb5ac5689317a;p=plugins%2Fnetgenplugin.git diff --git a/src/NETGENPlugin/NETGENPlugin_Remesher_2D.cxx b/src/NETGENPlugin/NETGENPlugin_Remesher_2D.cxx index d4645ae..bd91f64 100644 --- a/src/NETGENPlugin/NETGENPlugin_Remesher_2D.cxx +++ b/src/NETGENPlugin/NETGENPlugin_Remesher_2D.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2023 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -54,16 +54,23 @@ using namespace nglib; namespace netgen { + NETGENPLUGIN_DLL_HEADER + extern MeshingParameters mparam; + NETGENPLUGIN_DLL_HEADER extern STLParameters stlparam; NETGENPLUGIN_DLL_HEADER - extern netgen::STLDoctorParams stldoctor; + extern STLDoctorParams stldoctor; } namespace nglib { NETGENPLUGIN_DLL_HEADER +#ifdef NETGEN_V6 + extern netgen::NgArray > readedges; +#else extern netgen::Array > readedges; +#endif } namespace @@ -138,7 +145,7 @@ namespace { // define tolerance double tol, len, sumLen = 0, minLen = 1e100; - int nbSeg = 0; + size_t nbSeg = 0; for ( size_t i = 0; i < holes.size(); ++i ) { nbSeg += holes[i].size(); @@ -152,7 +159,7 @@ namespace p1 = p2; } } - double avgLen = sumLen / nbSeg; + double avgLen = sumLen / double( nbSeg ); if ( minLen > 1e-5 * avgLen ) tol = 0.1 * minLen; // minLen is not degenerate else @@ -209,8 +216,8 @@ namespace gp_XYZ normal; if ( SMESH_MeshAlgos::FaceNormal( f, normal )) { - TIDSortedElemSet allFaces; - editor.Reorient2D( allFaces, normal, f ); + TIDSortedElemSet allFaces, refFaces = { f }; + editor.Reorient2D( allFaces, normal, refFaces, /*allowNonManifold=*/true ); break; } } @@ -649,8 +656,10 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, netgen::stlparam.resthchartdistenable = hyp->GetRestHChartDistEnable(); netgen::stlparam.resthlinelengthfac = hyp->GetRestHLineLengthFactor(); netgen::stlparam.resthlinelengthenable = hyp->GetRestHLineLengthEnable(); +#ifndef NETGEN_V6 netgen::stlparam.resthcloseedgefac = hyp->GetRestHCloseEdgeFactor(); netgen::stlparam.resthcloseedgeenable = hyp->GetRestHCloseEdgeEnable(); +#endif netgen::stlparam.resthsurfcurvfac = hyp->GetRestHSurfCurvFactor(); netgen::stlparam.resthsurfcurvenable = hyp->GetRestHSurfCurvEnable(); netgen::stlparam.resthedgeanglefac = hyp->GetRestHEdgeAngleFactor(); @@ -675,6 +684,15 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, netgen::STLGeometry* stlGeom = (netgen::STLGeometry*)ngStlGeo; // the following code is taken from STLMeshing() method +#ifdef NETGEN_V6 + stlGeom->Clear(); + stlGeom->BuildEdges( netgen::stlparam ); + stlGeom->MakeAtlas( *ngMesh, netgen::mparam, netgen::stlparam ); + stlGeom->CalcFaceNums(); + stlGeom->AddFaceEdges(); + fixNodes( fixedEdges->GetGroupDS(), stlGeom ); + stlGeom->LinkEdges( netgen::stlparam ); +#else stlGeom->Clear(); stlGeom->BuildEdges(); stlGeom->MakeAtlas( *ngMesh ); @@ -682,7 +700,7 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, stlGeom->AddFaceEdges(); fixNodes( fixedEdges->GetGroupDS(), stlGeom ); stlGeom->LinkEdges(); - +#endif ngMesh->ClearFaceDescriptors(); for (int i = 1; i <= stlGeom->GetNOFaces(); i++) ngMesh->AddFaceDescriptor (netgen::FaceDescriptor (i, 1, 0, 0)); @@ -691,7 +709,7 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, } else { - Ng_STL_MakeEdges( ngStlGeo, ngLib._ngMesh, &ngParams ); + Ng_STL_MakeEdges( ngStlGeo, ngLib.ngMesh(), &ngParams ); } netgen::mparam = savedParams; @@ -707,13 +725,10 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, netgen::OCCGeometry occgeo; mesher.SetLocalSize( occgeo, *ngMesh ); - // const char* optStr = "SmSmSm";//"smsmsmSmSmSm"; - // netgen::mparam.optimize2d = optStr; - // meshing try { - ng_res = Ng_STL_GenerateSurfaceMesh( ngStlGeo, ngLib._ngMesh, &ngParams ); + ng_res = Ng_STL_GenerateSurfaceMesh( ngStlGeo, ngLib.ngMesh(), &ngParams ); } catch (netgen::NgException & ex) { @@ -768,8 +783,8 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, } // find existing groups - const char* theNamePrefix = "Surface_"; - const int theNamePrefixLen = strlen( theNamePrefix ); + const char* theNamePrefix = "Surface_"; + const size_t theNamePrefixLen = strlen( theNamePrefix ); std::vector< SMESHDS_Group* > groups; if ( hyp && hyp->GetMakeGroupsOfSurfaces() ) { @@ -852,8 +867,8 @@ bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, */ //============================================================================= -bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& theMesh, - const TopoDS_Shape& theShape) +bool NETGENPlugin_Remesher_2D::Compute(SMESH_Mesh& /*theMesh*/, + const TopoDS_Shape& /*theShape*/) { return false; } @@ -887,9 +902,9 @@ double NETGENPlugin_Remesher_2D::GetProgress() const */ //============================================================================= -bool NETGENPlugin_Remesher_2D::Evaluate(SMESH_Mesh& aMesh, - const TopoDS_Shape& aShape, - MapShapeNbElems& aResMap) +bool NETGENPlugin_Remesher_2D::Evaluate(SMESH_Mesh& /*aMesh*/, + const TopoDS_Shape& /*aShape*/, + MapShapeNbElems& /*aResMap*/) { return false; }