Fix crash during preview

This commit is contained in:
gdd 2012-08-10 14:01:12 +00:00
parent beabd65174
commit 779adc8fa5

View File

@ -464,21 +464,25 @@ SMESH::MeshPreviewStruct* SMESH_MeshEditor_i::GetPreviewData()
typedef map<int, int> TNodesMap;
TNodesMap nodesMap;
TPreviewMesh * aPreviewMesh = dynamic_cast< TPreviewMesh* >( myEditor.GetMesh() );
SMDSAbs_ElementType previewType = aPreviewMesh->myPreviewType;
SMESHDS_Mesh* aMeshDS = myEditor.GetMeshDS();
int nbEdges = aMeshDS->NbEdges();
int nbFaces = aMeshDS->NbFaces();
int nbVolum = aMeshDS->NbVolumes();
myPreviewData = new SMESH::MeshPreviewStruct();
myPreviewData->nodesXYZ.length(aMeshDS->NbNodes());
TPreviewMesh * aPreviewMesh = dynamic_cast< TPreviewMesh* >( myEditor.GetMesh() );
SMDSAbs_ElementType previewType = SMDSAbs_All;
if (aPreviewMesh) {
previewType = aPreviewMesh->myPreviewType;
switch ( previewType ) {
case SMDSAbs_Edge : nbFaces = nbVolum = 0; break;
case SMDSAbs_Face : nbEdges = nbVolum = 0; break;
case SMDSAbs_Volume: nbEdges = nbFaces = 0; break;
default:;
}
myPreviewData = new SMESH::MeshPreviewStruct();
myPreviewData->nodesXYZ.length(aMeshDS->NbNodes());
}
myPreviewData->elementTypes.length(nbEdges + nbFaces + nbVolum);
int i = 0, j = 0;
SMDS_ElemIteratorPtr itMeshElems = aMeshDS->elementsIterator();