PAL14858 (The Mesh Info Dialog Box is too slow)

+  SMDS_MeshInfo          myInfo;
This commit is contained in:
eap 2007-09-25 08:38:44 +00:00
parent d11bd3433d
commit 179804804f
2 changed files with 78 additions and 40 deletions

View File

@ -156,6 +156,7 @@ SMDS_MeshNode * SMDS_Mesh::AddNodeWithID(double x, double y, double z, int ID)
SMDS_MeshNode * node=new SMDS_MeshNode(x, y, z); SMDS_MeshNode * node=new SMDS_MeshNode(x, y, z);
myNodes.Add(node); myNodes.Add(node);
myNodeIDFactory->BindID(ID,node); myNodeIDFactory->BindID(ID,node);
myInfo.myNbNodes++;
return node; return node;
}else }else
return NULL; return NULL;
@ -209,6 +210,7 @@ SMDS_MeshEdge* SMDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
node1->AddInverseElement(edge); node1->AddInverseElement(edge);
node2->AddInverseElement(edge); node2->AddInverseElement(edge);
myEdges.Add(edge); myEdges.Add(edge);
myInfo.myNbEdges++;
return edge; return edge;
} }
else { else {
@ -341,6 +343,7 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshEdge * e1,
CheckMemory(); CheckMemory();
SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3); SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3);
myFaces.Add(face); myFaces.Add(face);
myInfo.myNbTriangles++;
if (!registerElement(ID, face)) { if (!registerElement(ID, face)) {
RemoveElement(face, false); RemoveElement(face, false);
@ -380,6 +383,7 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshEdge * e1,
CheckMemory(); CheckMemory();
SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3,e4); SMDS_MeshFace * face = new SMDS_FaceOfEdges(e1,e2,e3,e4);
myFaces.Add(face); myFaces.Add(face);
myInfo.myNbQuadrangles++;
if (!registerElement(ID, face)) if (!registerElement(ID, face))
{ {
@ -449,6 +453,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
SMDS_MeshFace * f4=FindFaceOrCreate(n2,n3,n4); SMDS_MeshFace * f4=FindFaceOrCreate(n2,n3,n4);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4); volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbTetras++;
} }
else if(hasConstructionEdges()) { else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented"); MESSAGE("Error : Not implemented");
@ -457,6 +462,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
else { else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4); volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbTetras++;
} }
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
@ -533,6 +539,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
SMDS_MeshFace * f4=FindFaceOrCreate(n3,n4,n5); SMDS_MeshFace * f4=FindFaceOrCreate(n3,n4,n5);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4); volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPyramids++;
} }
else if(hasConstructionEdges()) { else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented"); MESSAGE("Error : Not implemented");
@ -541,6 +548,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
else { else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5); volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPyramids++;
} }
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
@ -622,6 +630,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
SMDS_MeshFace * f5=FindFaceOrCreate(n3,n6,n4,n1); SMDS_MeshFace * f5=FindFaceOrCreate(n3,n6,n4,n1);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5); volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPrisms++;
} }
else if(hasConstructionEdges()) { else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented"); MESSAGE("Error : Not implemented");
@ -630,6 +639,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
else { else {
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6); volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPrisms++;
} }
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
@ -723,6 +733,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
SMDS_MeshFace * f6=FindFaceOrCreate(n3,n4,n8,n7); SMDS_MeshFace * f6=FindFaceOrCreate(n3,n4,n8,n7);
volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6); volume=new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbHexas++;
} }
else if(hasConstructionEdges()) { else if(hasConstructionEdges()) {
MESSAGE("Error : Not implemented"); MESSAGE("Error : Not implemented");
@ -732,6 +743,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
// volume=new SMDS_HexahedronOfNodes(n1,n2,n3,n4,n5,n6,n7,n8); // volume=new SMDS_HexahedronOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8); volume=new SMDS_VolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbHexas++;
} }
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
@ -774,6 +786,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
CheckMemory(); CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4); SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbTetras++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -817,6 +830,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
CheckMemory(); CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5); SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPyramids++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -862,6 +876,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshFace * f1,
CheckMemory(); CheckMemory();
SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6); SMDS_MeshVolume * volume = new SMDS_VolumeOfFaces(f1,f2,f3,f4,f5,f6);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPrisms++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -908,6 +923,7 @@ SMDS_MeshFace* SMDS_Mesh::AddPolygonalFaceWithID
if ( !nodes[ i ] ) return 0; if ( !nodes[ i ] ) return 0;
face = new SMDS_PolygonalFaceOfNodes(nodes); face = new SMDS_PolygonalFaceOfNodes(nodes);
myFaces.Add(face); myFaces.Add(face);
myInfo.myNbPolygons++;
} }
if (!registerElement(ID, face)) { if (!registerElement(ID, face)) {
@ -972,6 +988,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddPolyhedralVolumeWithID
if ( !nodes[ i ] ) return 0; if ( !nodes[ i ] ) return 0;
volume = new SMDS_PolyhedralVolumeOfNodes(nodes, quantities); volume = new SMDS_PolyhedralVolumeOfNodes(nodes, quantities);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbPolyhedrons++;
} }
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
@ -1031,23 +1048,24 @@ SMDS_MeshFace * SMDS_Mesh::createTriangle(const SMDS_MeshNode * node1,
{ {
if ( !node1 || !node2 || !node3) return 0; if ( !node1 || !node2 || !node3) return 0;
CheckMemory(); CheckMemory();
if(hasConstructionEdges()) if(hasConstructionEdges())
{ {
SMDS_MeshEdge *edge1, *edge2, *edge3; SMDS_MeshEdge *edge1, *edge2, *edge3;
edge1=FindEdgeOrCreate(node1,node2); edge1=FindEdgeOrCreate(node1,node2);
edge2=FindEdgeOrCreate(node2,node3); edge2=FindEdgeOrCreate(node2,node3);
edge3=FindEdgeOrCreate(node3,node1); edge3=FindEdgeOrCreate(node3,node1);
SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3); SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3);
myFaces.Add(face); myFaces.Add(face);
return face; return face;
} }
else else
{ {
SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3); SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3);
myFaces.Add(face); myFaces.Add(face);
return face; return face;
} }
myInfo.myNbTriangles++;
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1061,24 +1079,25 @@ SMDS_MeshFace * SMDS_Mesh::createQuadrangle(const SMDS_MeshNode * node1,
{ {
if ( !node1 || !node2 || !node3 || !node4 ) return 0; if ( !node1 || !node2 || !node3 || !node4 ) return 0;
CheckMemory(); CheckMemory();
if(hasConstructionEdges()) if(hasConstructionEdges())
{ {
SMDS_MeshEdge *edge1, *edge2, *edge3, *edge4; SMDS_MeshEdge *edge1, *edge2, *edge3, *edge4;
edge1=FindEdgeOrCreate(node1,node2); edge1=FindEdgeOrCreate(node1,node2);
edge2=FindEdgeOrCreate(node2,node3); edge2=FindEdgeOrCreate(node2,node3);
edge3=FindEdgeOrCreate(node3,node4); edge3=FindEdgeOrCreate(node3,node4);
edge4=FindEdgeOrCreate(node4,node1); edge4=FindEdgeOrCreate(node4,node1);
SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3,edge4); SMDS_MeshFace * face = new SMDS_FaceOfEdges(edge1,edge2,edge3,edge4);
myFaces.Add(face); myFaces.Add(face);
return face; return face;
} }
else else
{ {
SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3,node4); SMDS_MeshFace * face = new SMDS_FaceOfNodes(node1,node2,node3,node4);
myFaces.Add(face); myFaces.Add(face);
return face; return face;
} }
myInfo.myNbTriangles++;
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -1364,7 +1383,8 @@ SMDS_MeshEdge* SMDS_Mesh::FindEdgeOrCreate(const SMDS_MeshNode * node1,
CheckMemory(); CheckMemory();
toReturn=new SMDS_MeshEdge(node1,node2); toReturn=new SMDS_MeshEdge(node1,node2);
myEdges.Add(toReturn); myEdges.Add(toReturn);
} myInfo.myNbEdges++;
}
return toReturn; return toReturn;
} }
@ -2286,14 +2306,17 @@ void SMDS_Mesh::RemoveElement(const SMDS_MeshElement * elem,
case SMDSAbs_Edge: case SMDSAbs_Edge:
myEdges.Remove(static_cast<SMDS_MeshEdge*> myEdges.Remove(static_cast<SMDS_MeshEdge*>
(const_cast<SMDS_MeshElement*>(*it))); (const_cast<SMDS_MeshElement*>(*it)));
myInfo.RemoveEdge(*it);
break; break;
case SMDSAbs_Face: case SMDSAbs_Face:
myFaces.Remove(static_cast<SMDS_MeshFace*> myFaces.Remove(static_cast<SMDS_MeshFace*>
(const_cast<SMDS_MeshElement*>(*it))); (const_cast<SMDS_MeshElement*>(*it)));
myInfo.RemoveFace(*it);
break; break;
case SMDSAbs_Volume: case SMDSAbs_Volume:
myVolumes.Remove(static_cast<SMDS_MeshVolume*> myVolumes.Remove(static_cast<SMDS_MeshVolume*>
(const_cast<SMDS_MeshElement*>(*it))); (const_cast<SMDS_MeshElement*>(*it)));
myInfo.RemoveVolume(*it);
break; break;
} }
//MESSAGE( "SMDS: RM elem " << (*it)->GetID() ); //MESSAGE( "SMDS: RM elem " << (*it)->GetID() );
@ -2312,6 +2335,7 @@ void SMDS_Mesh::RemoveElement(const SMDS_MeshElement * elem,
//MESSAGE( "SMDS: RM node " << (*it)->GetID() ); //MESSAGE( "SMDS: RM node " << (*it)->GetID() );
myNodes.Remove(static_cast<SMDS_MeshNode*> myNodes.Remove(static_cast<SMDS_MeshNode*>
(const_cast<SMDS_MeshElement*>(*it))); (const_cast<SMDS_MeshElement*>(*it)));
myInfo.myNbNodes--;
myNodeIDFactory->ReleaseID((*it)->GetID()); myNodeIDFactory->ReleaseID((*it)->GetID());
removedNodes.push_back( (*it) ); removedNodes.push_back( (*it) );
delete *it; delete *it;
@ -2336,6 +2360,7 @@ void SMDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elem)
SMDS_ElemIteratorPtr itFe = n->GetInverseElementIterator(); SMDS_ElemIteratorPtr itFe = n->GetInverseElementIterator();
if (!itFe->more()) { // free node if (!itFe->more()) { // free node
myNodes.Remove(const_cast<SMDS_MeshNode*>(n)); myNodes.Remove(const_cast<SMDS_MeshNode*>(n));
myInfo.myNbNodes--;
myNodeIDFactory->ReleaseID(elem->GetID()); myNodeIDFactory->ReleaseID(elem->GetID());
delete elem; delete elem;
} }
@ -2357,14 +2382,17 @@ void SMDS_Mesh::RemoveFreeElement(const SMDS_MeshElement * elem)
case SMDSAbs_Edge: case SMDSAbs_Edge:
myEdges.Remove(static_cast<SMDS_MeshEdge*> myEdges.Remove(static_cast<SMDS_MeshEdge*>
(const_cast<SMDS_MeshElement*>(elem))); (const_cast<SMDS_MeshElement*>(elem)));
myInfo.RemoveEdge(elem);
break; break;
case SMDSAbs_Face: case SMDSAbs_Face:
myFaces.Remove(static_cast<SMDS_MeshFace*> myFaces.Remove(static_cast<SMDS_MeshFace*>
(const_cast<SMDS_MeshElement*>(elem))); (const_cast<SMDS_MeshElement*>(elem)));
myInfo.RemoveFace(elem);
break; break;
case SMDSAbs_Volume: case SMDSAbs_Volume:
myVolumes.Remove(static_cast<SMDS_MeshVolume*> myVolumes.Remove(static_cast<SMDS_MeshVolume*>
(const_cast<SMDS_MeshElement*>(elem))); (const_cast<SMDS_MeshElement*>(elem)));
myInfo.RemoveVolume(elem);
break; break;
default: default:
break; break;
@ -2555,6 +2583,7 @@ SMDS_MeshEdge* SMDS_Mesh::AddEdgeWithID(const SMDS_MeshNode * n1,
node2->AddInverseElement(edge); node2->AddInverseElement(edge);
node12->AddInverseElement(edge); node12->AddInverseElement(edge);
myEdges.Add(edge); myEdges.Add(edge);
myInfo.myNbQuadEdges++;
return edge; return edge;
} }
else { else {
@ -2616,6 +2645,7 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
SMDS_QuadraticFaceOfNodes* face = SMDS_QuadraticFaceOfNodes* face =
new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n12,n23,n31); new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n12,n23,n31);
myFaces.Add(face); myFaces.Add(face);
myInfo.myNbQuadTriangles++;
if (!registerElement(ID, face)) { if (!registerElement(ID, face)) {
RemoveElement(face, false); RemoveElement(face, false);
@ -2682,6 +2712,7 @@ SMDS_MeshFace* SMDS_Mesh::AddFaceWithID(const SMDS_MeshNode * n1,
SMDS_QuadraticFaceOfNodes* face = SMDS_QuadraticFaceOfNodes* face =
new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n4,n12,n23,n34,n41); new SMDS_QuadraticFaceOfNodes(n1,n2,n3,n4,n12,n23,n34,n41);
myFaces.Add(face); myFaces.Add(face);
myInfo.myNbQuadQuadrangles++;
if (!registerElement(ID, face)) { if (!registerElement(ID, face)) {
RemoveElement(face, false); RemoveElement(face, false);
@ -2760,6 +2791,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
SMDS_QuadraticVolumeOfNodes * volume = SMDS_QuadraticVolumeOfNodes * volume =
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n12,n23,n31,n14,n24,n34); new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n12,n23,n31,n14,n24,n34);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbQuadTetras++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -2850,6 +2882,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n12,n23, new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n12,n23,
n34,n41,n15,n25,n35,n45); n34,n41,n15,n25,n35,n45);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbQuadPyramids++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -2948,6 +2981,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n12,n23,n31, new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n12,n23,n31,
n45,n56,n64,n14,n25,n36); n45,n56,n64,n14,n25,n36);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbQuadPrisms++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);
@ -3061,6 +3095,7 @@ SMDS_MeshVolume* SMDS_Mesh::AddVolumeWithID(const SMDS_MeshNode * n1,
new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8,n12,n23,n34,n41, new SMDS_QuadraticVolumeOfNodes(n1,n2,n3,n4,n5,n6,n7,n8,n12,n23,n34,n41,
n56,n67,n78,n85,n15,n26,n37,n48); n56,n67,n78,n85,n15,n26,n37,n48);
myVolumes.Add(volume); myVolumes.Add(volume);
myInfo.myNbQuadHexas++;
if (!registerElement(ID, volume)) { if (!registerElement(ID, volume)) {
RemoveElement(volume, false); RemoveElement(volume, false);

View File

@ -34,6 +34,7 @@
#include "SMDS_MeshFace.hxx" #include "SMDS_MeshFace.hxx"
#include "SMDS_MeshVolume.hxx" #include "SMDS_MeshVolume.hxx"
#include "SMDS_MeshElementIDFactory.hxx" #include "SMDS_MeshElementIDFactory.hxx"
#include "SMDS_MeshInfo.hxx"
#include "SMDS_ElemIterator.hxx" #include "SMDS_ElemIterator.hxx"
#include <NCollection_Map.hxx> #include <NCollection_Map.hxx>
@ -494,6 +495,7 @@ public:
int MaxElementID() const; int MaxElementID() const;
int MinElementID() const; int MinElementID() const;
const SMDS_MeshInfo& GetMeshInfo() const { return myInfo; }
int NbNodes() const; int NbNodes() const;
int NbEdges() const; int NbEdges() const;
@ -556,15 +558,16 @@ private:
// Fields PRIVATE // Fields PRIVATE
SetOfNodes myNodes; SetOfNodes myNodes;
SetOfEdges myEdges; SetOfEdges myEdges;
SetOfFaces myFaces; SetOfFaces myFaces;
SetOfVolumes myVolumes; SetOfVolumes myVolumes;
SMDS_Mesh *myParent; SMDS_Mesh * myParent;
std::list<SMDS_Mesh *> myChildren; std::list<SMDS_Mesh *> myChildren;
SMDS_MeshElementIDFactory *myNodeIDFactory; SMDS_MeshElementIDFactory *myNodeIDFactory;
SMDS_MeshElementIDFactory *myElementIDFactory; SMDS_MeshElementIDFactory *myElementIDFactory;
SMDS_MeshInfo myInfo;
bool myHasConstructionEdges; bool myHasConstructionEdges;
bool myHasConstructionFaces; bool myHasConstructionFaces;
bool myHasInverseElements; bool myHasInverseElements;