From 68b41560cb8513198ea531572cce5174a4ca4982 Mon Sep 17 00:00:00 2001 From: eap Date: Tue, 11 Sep 2012 09:24:28 +0000 Subject: [PATCH] 0021845: EDF 1855 SMESH : A no-regression test fails on RadialQuadrangle meshing 1) fix getAlgoData() 2) correct detection of concurrent algos in GetAlgo() --- src/SMESH/SMESH_Gen.cxx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/SMESH/SMESH_Gen.cxx b/src/SMESH/SMESH_Gen.cxx index d68dce5af..99da9f8e4 100644 --- a/src/SMESH/SMESH_Gen.cxx +++ b/src/SMESH/SMESH_Gen.cxx @@ -1020,9 +1020,9 @@ namespace // Access to type of input and output of an algorithm // Read Plugin.xml files vector< string > xmlPaths = SMESH_Gen::GetPluginXMLPaths(); LDOMParser xmlParser; - for ( size_t i = 0; i < xmlPaths.size(); ++i ) + for ( size_t iXML = 0; iXML < xmlPaths.size(); ++iXML ) { - bool error = xmlParser.parse( xmlPaths[i].c_str() ); + bool error = xmlParser.parse( xmlPaths[iXML].c_str() ); if ( error ) { TCollection_AsciiString data; @@ -1044,6 +1044,7 @@ namespace // Access to type of input and output of an algorithm TCollection_AsciiString input = algoElem.getAttribute("input"); TCollection_AsciiString output = algoElem.getAttribute("output"); TCollection_AsciiString dim = algoElem.getAttribute("dim"); + if ( algoType.IsEmpty() ) continue; AlgoData & data = theDataByName[ algoType.ToCString() ]; data._dim = dim.IntegerValue(); for ( int isInput = 0; isInput < 2; ++isInput ) @@ -1106,9 +1107,11 @@ SMESH_Algo *SMESH_Gen::GetAlgo(SMESH_Mesh & aMesh, TopoDS_Shape assignedToShape2; SMESH_Algo* algo2 = (SMESH_Algo*) aMesh.GetHypothesis( aShape, filter, true, &assignedToShape2 ); - if ( algo2 && - assignedToShape2.ShapeType() == assignedToShape.ShapeType() && - aMesh.IsOrderOK( aMesh.GetSubMesh( assignedToShape2 ), + if ( algo2 && // algo found + !assignedToShape2.IsSame( aMesh.GetShapeToMesh() ) && // algo is local + ( SMESH_MesherHelper::GetGroupType( assignedToShape2 ) == // algo of the same level + SMESH_MesherHelper::GetGroupType( assignedToShape )) && + aMesh.IsOrderOK( aMesh.GetSubMesh( assignedToShape2 ), // no forced order aMesh.GetSubMesh( assignedToShape ))) { // get algos on the adjacent SOLIDs -- 2.39.2