From c5ef8a1ee16cde4f04d93bd5e82aabce02bfb904 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Mon, 2 Apr 2018 16:52:45 +0200 Subject: [PATCH] FEM: vtk mesh builder, add some logs and code improvements --- src/Mod/Fem/App/FemVTKTools.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index 9c4ee433ec..c07f0afe67 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -441,19 +441,29 @@ void FemVTKTools::exportVTKMesh(const FemMesh* mesh, vtkSmartPointer(mesh->getSMesh()); SMESHDS_Mesh* meshDS = smesh->GetMeshDS(); - //start with the nodes + // nodes + Base::Console().Message(" Start: VTK mesh builder nodes.\n"); + vtkSmartPointer points = vtkSmartPointer::New(); SMDS_NodeIteratorPtr aNodeIter = meshDS->nodesIterator(); - for(; aNodeIter->more(); ) { + while (aNodeIter->more()) { const SMDS_MeshNode* node = aNodeIter->next(); // why float, not double? double coords[3] = {double(node->X()*scale), double(node->Y()*scale), double(node->Z()*scale)}; points->InsertPoint(node->GetID()-1, coords); // memory is allocated by VTK points size = max node id, points will be insterted in SMESH point gaps too } grid->SetPoints(points); + // nodes debugging + const SMDS_MeshInfo& info = meshDS->GetMeshInfo(); + Base::Console().Message(" Size of nodes in SMESH grid: %i.\n", info.NbNodes()); + const vtkIdType nNodes = grid->GetNumberOfPoints(); + Base::Console().Message(" Size of nodes in VTK grid: %i.\n", nNodes); + Base::Console().Message(" End: VTK mesh builder nodes.\n"); + // faces SMDS_FaceIteratorPtr aFaceIter = meshDS->facesIterator(); exportFemMeshFaces(grid, aFaceIter); + // volumes SMDS_VolumeIteratorPtr aVolIter = meshDS->volumesIterator(); exportFemMeshCells(grid, aVolIter); @@ -471,6 +481,7 @@ void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh) vtkSmartPointer grid = vtkSmartPointer::New(); exportVTKMesh(mesh, grid); //vtkSmartPointer dataset = vtkDataSet::SafeDownCast(grid); + Base::Console().Message("Start: writeing mesh data ======================\n"); if(f.hasExtension("vtu")){ writeVTKFile(filename, grid); }