IPAL54027: Projection algo is very long on a face with many edges

args of StdMeshers_FaceSide::GetFaceWires() changed
This commit is contained in:
eap 2017-03-09 11:08:50 +03:00
parent 7a5a26b77a
commit 6a883c4b4a
2 changed files with 3 additions and 3 deletions

View File

@ -926,7 +926,7 @@ bool NETGENPlugin_Mesher::FillNgMesh(netgen::OCCGeometry& occgeom,
// get all nodes from connected <edges> // get all nodes from connected <edges>
const bool isQuad = smDS->IsQuadratic(); const bool isQuad = smDS->IsQuadratic();
StdMeshers_FaceSide fSide( face, edges, _mesh, isForwad, isQuad ); StdMeshers_FaceSide fSide( face, edges, _mesh, isForwad, isQuad, &helper );
const vector<UVPtStruct>& points = fSide.GetUVPtStruct(); const vector<UVPtStruct>& points = fSide.GetUVPtStruct();
if ( points.empty() ) if ( points.empty() )
return false; // invalid node params? return false; // invalid node params?
@ -2789,7 +2789,7 @@ bool NETGENPlugin_Mesher::Compute()
helper.SetSubShape( F ); helper.SetSubShape( F );
TSideVector wires = TSideVector wires =
StdMeshers_FaceSide::GetFaceWires( F, *_mesh, /*skipMediumNodes=*/true, StdMeshers_FaceSide::GetFaceWires( F, *_mesh, /*skipMediumNodes=*/true,
error, viscousMesh ); error, &helper, viscousMesh );
error = AddSegmentsToMesh( *_ngMesh, occgeo, wires, helper, nodeVec ); error = AddSegmentsToMesh( *_ngMesh, occgeo, wires, helper, nodeVec );
if ( !error ) error = SMESH_ComputeError::New(); if ( !error ) error = SMESH_ComputeError::New();

View File

@ -355,7 +355,7 @@ bool NETGENPlugin_NETGEN_2D_ONLY::Compute(SMESH_Mesh& aMesh,
// get all EDGEs of a FACE // get all EDGEs of a FACE
// ------------------------ // ------------------------
TSideVector wires = TSideVector wires =
StdMeshers_FaceSide::GetFaceWires( F, aMesh, ignoreMediumNodes, faceErr, proxyMesh ); StdMeshers_FaceSide::GetFaceWires( F, aMesh, ignoreMediumNodes, faceErr, &helper, proxyMesh );
if ( faceErr && !faceErr->IsOK() ) if ( faceErr && !faceErr->IsOK() )
continue; continue;
int nbWires = wires.size(); int nbWires = wires.size();