mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-02-05 09:04:17 +05:00
IMP 23613: EDF 15565 - Ponctual elements
This commit is contained in:
parent
fc9c05a33c
commit
baf83bed41
@ -66,15 +66,19 @@ class MyIterator: public SMDS_ElemIterator
|
|||||||
MyIterator(SMDSAbs_ElementType type, const SMESHDS_SubMesh* subMesh)
|
MyIterator(SMDSAbs_ElementType type, const SMESHDS_SubMesh* subMesh)
|
||||||
: myType(type), myElem(0)
|
: myType(type), myElem(0)
|
||||||
{
|
{
|
||||||
if ( subMesh ) {
|
if ( subMesh )
|
||||||
if ( myType == SMDSAbs_Node )
|
{
|
||||||
|
if ( myType == SMDSAbs_Node ||
|
||||||
|
myType == SMDSAbs_0DElement ||
|
||||||
|
myType == SMDSAbs_Ball )
|
||||||
myNodeIt = subMesh->GetNodes();
|
myNodeIt = subMesh->GetNodes();
|
||||||
else {
|
else
|
||||||
myElemIt = subMesh->GetElements();
|
myElemIt = subMesh->GetElements();
|
||||||
|
|
||||||
|
if ( myType != SMDSAbs_Node )
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
bool more()
|
bool more()
|
||||||
{
|
{
|
||||||
if ( myType == SMDSAbs_Node && myNodeIt )
|
if ( myType == SMDSAbs_Node && myNodeIt )
|
||||||
@ -85,15 +89,30 @@ class MyIterator: public SMDS_ElemIterator
|
|||||||
{
|
{
|
||||||
if ( myType == SMDSAbs_Node && myNodeIt )
|
if ( myType == SMDSAbs_Node && myNodeIt )
|
||||||
return myNodeIt->next();
|
return myNodeIt->next();
|
||||||
|
|
||||||
const SMDS_MeshElement* res = myElem;
|
const SMDS_MeshElement* res = myElem;
|
||||||
myElem = 0;
|
myElem = 0;
|
||||||
while ( myElemIt && myElemIt->more() ) {
|
|
||||||
|
if ( myElemIt )
|
||||||
|
while ( myElemIt->more() ) {
|
||||||
myElem = myElemIt->next();
|
myElem = myElemIt->next();
|
||||||
if ( myElem && myElem->GetType() == myType )
|
if ( myElem && myElem->GetType() == myType )
|
||||||
break;
|
break;
|
||||||
else
|
else
|
||||||
myElem = 0;
|
myElem = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !myElem && myNodeIt ) // look for a 0D element
|
||||||
|
while ( myNodeIt->more() ) {
|
||||||
|
const SMDS_MeshNode* n = myNodeIt->next();
|
||||||
|
if (( myElemIt = n->GetInverseElementIterator( myType )) &&
|
||||||
|
( myElemIt->more() ))
|
||||||
|
{
|
||||||
|
myElem = myElemIt->next();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -125,6 +144,10 @@ bool SMESHDS_GroupOnGeom::Contains (const int theID)
|
|||||||
|
|
||||||
bool SMESHDS_GroupOnGeom::Contains (const SMDS_MeshElement* elem)
|
bool SMESHDS_GroupOnGeom::Contains (const SMDS_MeshElement* elem)
|
||||||
{
|
{
|
||||||
|
if ( GetType() == SMDSAbs_0DElement ||
|
||||||
|
GetType() == SMDSAbs_Ball )
|
||||||
|
return elem ? mySubMesh->Contains( elem->GetNode(0) ) : false;
|
||||||
|
|
||||||
return mySubMesh->Contains( elem );
|
return mySubMesh->Contains( elem );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ static SMESH::ElementType elementType(GEOM::GEOM_Object_var geom)
|
|||||||
{
|
{
|
||||||
if ( !geom->_is_nil() ) {
|
if ( !geom->_is_nil() ) {
|
||||||
switch ( geom->GetShapeType() ) {
|
switch ( geom->GetShapeType() ) {
|
||||||
case GEOM::VERTEX: return SMESH::NODE;
|
case GEOM::VERTEX: return SMESH::ELEM0D; // NODE; -- 0023613
|
||||||
case GEOM::EDGE: return SMESH::EDGE;
|
case GEOM::EDGE: return SMESH::EDGE;
|
||||||
case GEOM::WIRE: return SMESH::EDGE;
|
case GEOM::WIRE: return SMESH::EDGE;
|
||||||
case GEOM::FACE: return SMESH::FACE;
|
case GEOM::FACE: return SMESH::FACE;
|
||||||
|
Loading…
Reference in New Issue
Block a user