X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_VtkFace.cxx;h=724a7ec211588565a55d5e698bb22567c54cf1d7;hp=66a7b1229bfc241eb0252c9d5645653c2a420b42;hb=ccb5e3c25bf204e839c0094f50f543eacedba5e6;hpb=7eda9ca931ed2a11cb5e4637e4ffe19f5c061115 diff --git a/src/SMDS/SMDS_VtkFace.cxx b/src/SMDS/SMDS_VtkFace.cxx index 66a7b1229..724a7ec21 100644 --- a/src/SMDS/SMDS_VtkFace.cxx +++ b/src/SMDS/SMDS_VtkFace.cxx @@ -44,53 +44,37 @@ SMDS_VtkFace::~SMDS_VtkFace() void SMDS_VtkFace::init(const std::vector& nodeIds, SMDS_Mesh* mesh) { SMDS_MeshFace::init(); - vtkUnstructuredGrid* grid = mesh->getGrid(); myMeshId = mesh->getMeshId(); vtkIdType aType = VTK_TRIANGLE; switch (nodeIds.size()) { - case 3: - aType = VTK_TRIANGLE; - break; - case 4: - aType = VTK_QUAD; - break; - case 6: - aType = VTK_QUADRATIC_TRIANGLE; - break; - case 8: - aType = VTK_QUADRATIC_QUAD; - break; - case 9: - aType = VTK_BIQUADRATIC_QUAD; - break; - case 7: - aType = VTK_BIQUADRATIC_TRIANGLE; - break; - default: - aType = VTK_POLYGON; - break; + case 3: aType = VTK_TRIANGLE; break; + case 4: aType = VTK_QUAD; break; + case 6: aType = VTK_QUADRATIC_TRIANGLE; break; + case 8: aType = VTK_QUADRATIC_QUAD; break; + case 9: aType = VTK_BIQUADRATIC_QUAD; break; + case 7: aType = VTK_BIQUADRATIC_TRIANGLE;break; + default: aType = VTK_POLYGON; } - myVtkID = grid->InsertNextLinkedCell(aType, nodeIds.size(), (vtkIdType*) &nodeIds[0]); + myVtkID = mesh->getGrid()->InsertNextLinkedCell(aType, nodeIds.size(), (vtkIdType*) &nodeIds[0]); mesh->setMyModified(); - //MESSAGE("SMDS_VtkFace::init myVtkID " << myVtkID); } void SMDS_VtkFace::initPoly(const std::vector& nodeIds, SMDS_Mesh* mesh) { SMDS_MeshFace::init(); - vtkUnstructuredGrid* grid = mesh->getGrid(); myMeshId = mesh->getMeshId(); - myVtkID = grid->InsertNextLinkedCell(VTK_POLYGON, nodeIds.size(), (vtkIdType*) &nodeIds[0]); + vtkIdType aType = VTK_POLYGON; + myVtkID = mesh->getGrid()->InsertNextLinkedCell(aType, nodeIds.size(), (vtkIdType*) &nodeIds[0]); mesh->setMyModified(); } void SMDS_VtkFace::initQuadPoly(const std::vector& nodeIds, SMDS_Mesh* mesh) { SMDS_MeshFace::init(); - vtkUnstructuredGrid* grid = mesh->getGrid(); myMeshId = mesh->getMeshId(); - myVtkID = grid->InsertNextLinkedCell(VTK_QUADRATIC_POLYGON, nodeIds.size(), (vtkIdType*) &nodeIds[0]); + vtkIdType aType = VTK_QUADRATIC_POLYGON; + myVtkID = mesh->getGrid()->InsertNextLinkedCell(aType, nodeIds.size(), (vtkIdType*) &nodeIds[0]); mesh->setMyModified(); } @@ -101,14 +85,14 @@ bool SMDS_VtkFace::ChangeNodes(const SMDS_MeshNode* nodes[], const int nbNodes) vtkIdType* pts = 0; grid->GetCellPoints(myVtkID, npts, pts); if (nbNodes != npts) - { - MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << nbNodes); - return false; - } + { + MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << nbNodes); + return false; + } for (int i = 0; i < nbNodes; i++) - { - pts[i] = nodes[i]->getVtkId(); - } + { + pts[i] = nodes[i]->getVtkId(); + } SMDS_Mesh::_meshList[myMeshId]->setMyModified(); return true; } @@ -136,11 +120,11 @@ int SMDS_VtkFace::NbEdges() const nbEdges = 4; break; case VTK_QUADRATIC_POLYGON: - nbEdges = grid->GetCell(myVtkID)->GetNumberOfPoints() / 2; + nbEdges = NbNodes() / 2; break; case VTK_POLYGON: default: - nbEdges = grid->GetCell(myVtkID)->GetNumberOfPoints(); + nbEdges = NbNodes(); break; } return nbEdges; @@ -154,8 +138,9 @@ int SMDS_VtkFace::NbFaces() const int SMDS_VtkFace::NbNodes() const { vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); - int nbPoints = grid->GetCell(myVtkID)->GetNumberOfPoints(); - return nbPoints; + vtkIdType *pts, npts; + grid->GetCellPoints( myVtkID, npts, pts ); + return npts; } /*! @@ -217,6 +202,10 @@ bool SMDS_VtkFace::IsPoly() const bool SMDS_VtkFace::IsMediumNode(const SMDS_MeshNode* node) const { vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); + vtkIdType npts = 0; + vtkIdType* pts = 0; + grid->GetCellPoints(myVtkID, npts, pts); + vtkIdType aVtkType = grid->GetCellType(this->myVtkID); int rankFirstMedium = 0; switch (aVtkType) @@ -230,15 +219,12 @@ bool SMDS_VtkFace::IsMediumNode(const SMDS_MeshNode* node) const rankFirstMedium = 4; // medium nodes are of rank 4,5,6,7 break; case VTK_QUADRATIC_POLYGON: - rankFirstMedium = grid->GetCell(myVtkID)->GetNumberOfPoints() / 2; + rankFirstMedium = npts / 2; break; default: //MESSAGE("wrong element type " << aVtkType); return false; } - vtkIdType npts = 0; - vtkIdType* pts = 0; - grid->GetCellPoints(myVtkID, npts, pts); vtkIdType nodeId = node->getVtkId(); for (int rank = 0; rank < npts; rank++) { @@ -261,7 +247,7 @@ bool SMDS_VtkFace::IsMediumNode(const SMDS_MeshNode* node) const int SMDS_VtkFace::NbCornerNodes() const { vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid(); - int nbPoints = grid->GetCell(myVtkID)->GetNumberOfPoints(); + int nbPoints = NbNodes(); vtkIdType aVtkType = grid->GetCellType(myVtkID); switch ( aVtkType ) {