#include "memoire.h"
+#ifdef WNT
+ #include <windows.h>
+#endif\r
+
using namespace std;
//=============================================================================
{
SMESH_MesherHelper aHelper( aMesh );
if ( aHelper.IsQuadraticMesh() != SMESH_MesherHelper::LINEAR )
- aHelper.FixQuadraticElements();
+ {
+ aHelper.FixQuadraticElements( sm->GetComputeError() );
+ }
}
return ret;
}
if ( aLocIgnoAlgo ) // algo is hidden by a local algo of upper dim
{
+ theErrors.push_back( SMESH_Gen::TAlgoStateError() );
+ theErrors.back().Set( SMESH_Hypothesis::HYP_HIDDEN_ALGO, algo, false );
INFOS( "Local <" << algo->GetName() << "> is hidden by local <"
<< aLocIgnoAlgo->GetName() << ">");
}
if ( dim < aMaxGlobIgnoDim )
{
// algo is hidden by a global algo
+ theErrors.push_back( SMESH_Gen::TAlgoStateError() );
+ theErrors.back().Set( SMESH_Hypothesis::HYP_HIDDEN_ALGO, algo, true );
INFOS( ( isGlobal ? "Global" : "Local" )
<< " <" << algo->GetName() << "> is hidden by global <"
<< aGlobIgnoAlgo->GetName() << ">");
// 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;
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 )
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
if ( SMESH_Algo* algo3D = (SMESH_Algo*) aMesh.GetHypothesis( *solid, filter, true ))
{
algos3D.push_back( algo3D );
- filter.AndNot( filter.Is( algo3D ));
+ filter.AndNot( filter.HasName( algo3D->GetName() ));
}
// check compatibility of algos
if ( algos3D.size() > 1 )