short code; // ComputeErrorName or, if negative, algo specific code
string comment; // textual problem description
string algoName;
- short subShapeID; // id of sub-shape of a shape to mesh
+ long subShapeID; // id of sub-shape of a shape to mesh
boolean hasBadMesh; // there are elements preventing computation available for visualization
};
typedef sequence<ComputeError> compute_error_array;
if ( iBndNode >= _triaDS->NbNodes() )
return 0;
int nodeIDs[3];
- int nbNbNodes = _bndNodes.size();
+ int nbBndNodes = _bndNodes.size();
#if OCC_VERSION_LARGE <= 0x07030000
typedef BRepMesh::ListOfInteger TLinkList;
#else
if ( tria.Movability() != BRepMesh_Deleted )
{
_triaDS->ElementNodes( tria, nodeIDs );
- if ( nodeIDs[0]-1 < nbNbNodes &&
- nodeIDs[1]-1 < nbNbNodes &&
- nodeIDs[2]-1 < nbNbNodes )
+ if ( nodeIDs[0]-1 < nbBndNodes &&
+ nodeIDs[1]-1 < nbBndNodes &&
+ nodeIDs[2]-1 < nbBndNodes )
return &tria;
}
}
if ( tria.Movability() != BRepMesh_Deleted )
{
_triaDS->ElementNodes( tria, nodeIDs );
- if ( nodeIDs[0]-1 < nbNbNodes &&
- nodeIDs[1]-1 < nbNbNodes &&
- nodeIDs[2]-1 < nbNbNodes )
+ if ( nodeIDs[0]-1 < nbBndNodes &&
+ nodeIDs[1]-1 < nbBndNodes &&
+ nodeIDs[2]-1 < nbBndNodes )
return &tria;
}
}
}
int nodeIDs[3];
+ const char* dofName[] = { "Free",
+ "InVolume",
+ "OnSurface",
+ "OnCurve",
+ "Fixed",
+ "Frontier",
+ "Deleted" };
+ text << "# nb elements = " << _triaDS->NbElements() << endl;
+ std::vector< int > deletedElems;
for ( int i = 0; i < _triaDS->NbElements(); ++i )
{
const BRepMesh_Triangle& t = _triaDS->GetElement( i+1 );
if ( t.Movability() == BRepMesh_Deleted )
- continue;
+ deletedElems.push_back( i+1 );
+ // continue;
_triaDS->ElementNodes( t, nodeIDs );
- text << "mesh.AddFace([ " << nodeIDs[0] << ", " << nodeIDs[1] << ", " << nodeIDs[2] << " ])" << endl;
+ text << "mesh.AddFace([ " << nodeIDs[0] << ", " << nodeIDs[1] << ", " << nodeIDs[2] << " ]) # "
+ << dofName[ t.Movability() ] << endl;
}
+ text << "mesh.MakeGroupByIds( 'deleted elements', SMESH.FACE, [";
+ for ( int id : deletedElems )
+ text << id << ",";
+ text << "])" << endl;
const char* fileName = "/tmp/Delaunay.py";
SMESH_File file( fileName, false );
//-------------------------------------------------------------------------------------
// A macro makes description of a caught exception and calls onExceptionFun(const char*).
// Several onExceptionFun() are defined here: throwSalomeEx(), doNothing() and returnError().
-// To add your own catch close, define SMY_OWN_CATCH macro before including this file.
+// To add your own catch clause, define SMY_OWN_CATCH macro before including this file.
#define SMESH_CATCH( onExceptionFun ) \
} \