mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-26 07:40:34 +05:00
BUG: Mesh Failed dialog shows negative shape ID if nb shapes > SHORT_MAX
+ minor changes: 1) fix 2 typos 2) improve SMESH_Delaunay::ToPython()
This commit is contained in:
parent
6b5dcfe000
commit
cd4aa39efa
@ -114,7 +114,7 @@ module SMESH
|
|||||||
short code; // ComputeErrorName or, if negative, algo specific code
|
short code; // ComputeErrorName or, if negative, algo specific code
|
||||||
string comment; // textual problem description
|
string comment; // textual problem description
|
||||||
string algoName;
|
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
|
boolean hasBadMesh; // there are elements preventing computation available for visualization
|
||||||
};
|
};
|
||||||
typedef sequence<ComputeError> compute_error_array;
|
typedef sequence<ComputeError> compute_error_array;
|
||||||
|
@ -273,7 +273,7 @@ const BRepMesh_Triangle* SMESH_Delaunay::GetTriangleNear( int iBndNode )
|
|||||||
if ( iBndNode >= _triaDS->NbNodes() )
|
if ( iBndNode >= _triaDS->NbNodes() )
|
||||||
return 0;
|
return 0;
|
||||||
int nodeIDs[3];
|
int nodeIDs[3];
|
||||||
int nbNbNodes = _bndNodes.size();
|
int nbBndNodes = _bndNodes.size();
|
||||||
#if OCC_VERSION_LARGE <= 0x07030000
|
#if OCC_VERSION_LARGE <= 0x07030000
|
||||||
typedef BRepMesh::ListOfInteger TLinkList;
|
typedef BRepMesh::ListOfInteger TLinkList;
|
||||||
#else
|
#else
|
||||||
@ -289,9 +289,9 @@ const BRepMesh_Triangle* SMESH_Delaunay::GetTriangleNear( int iBndNode )
|
|||||||
if ( tria.Movability() != BRepMesh_Deleted )
|
if ( tria.Movability() != BRepMesh_Deleted )
|
||||||
{
|
{
|
||||||
_triaDS->ElementNodes( tria, nodeIDs );
|
_triaDS->ElementNodes( tria, nodeIDs );
|
||||||
if ( nodeIDs[0]-1 < nbNbNodes &&
|
if ( nodeIDs[0]-1 < nbBndNodes &&
|
||||||
nodeIDs[1]-1 < nbNbNodes &&
|
nodeIDs[1]-1 < nbBndNodes &&
|
||||||
nodeIDs[2]-1 < nbNbNodes )
|
nodeIDs[2]-1 < nbBndNodes )
|
||||||
return &tria;
|
return &tria;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,9 +301,9 @@ const BRepMesh_Triangle* SMESH_Delaunay::GetTriangleNear( int iBndNode )
|
|||||||
if ( tria.Movability() != BRepMesh_Deleted )
|
if ( tria.Movability() != BRepMesh_Deleted )
|
||||||
{
|
{
|
||||||
_triaDS->ElementNodes( tria, nodeIDs );
|
_triaDS->ElementNodes( tria, nodeIDs );
|
||||||
if ( nodeIDs[0]-1 < nbNbNodes &&
|
if ( nodeIDs[0]-1 < nbBndNodes &&
|
||||||
nodeIDs[1]-1 < nbNbNodes &&
|
nodeIDs[1]-1 < nbBndNodes &&
|
||||||
nodeIDs[2]-1 < nbNbNodes )
|
nodeIDs[2]-1 < nbBndNodes )
|
||||||
return &tria;
|
return &tria;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -373,14 +373,29 @@ void SMESH_Delaunay::ToPython() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
int nodeIDs[3];
|
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 )
|
for ( int i = 0; i < _triaDS->NbElements(); ++i )
|
||||||
{
|
{
|
||||||
const BRepMesh_Triangle& t = _triaDS->GetElement( i+1 );
|
const BRepMesh_Triangle& t = _triaDS->GetElement( i+1 );
|
||||||
if ( t.Movability() == BRepMesh_Deleted )
|
if ( t.Movability() == BRepMesh_Deleted )
|
||||||
continue;
|
deletedElems.push_back( i+1 );
|
||||||
|
// continue;
|
||||||
_triaDS->ElementNodes( t, nodeIDs );
|
_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";
|
const char* fileName = "/tmp/Delaunay.py";
|
||||||
SMESH_File file( fileName, false );
|
SMESH_File file( fileName, false );
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
//-------------------------------------------------------------------------------------
|
//-------------------------------------------------------------------------------------
|
||||||
// A macro makes description of a caught exception and calls onExceptionFun(const char*).
|
// A macro makes description of a caught exception and calls onExceptionFun(const char*).
|
||||||
// Several onExceptionFun() are defined here: throwSalomeEx(), doNothing() and returnError().
|
// 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 ) \
|
#define SMESH_CATCH( onExceptionFun ) \
|
||||||
} \
|
} \
|
||||||
|
Loading…
Reference in New Issue
Block a user