X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMDS%2FSMDS_VtkEdge.cxx;h=75a96b966ecf4eb33cc1fad64a4b7f0d3f885fe6;hp=d35f635421c596ca2158158d400d5afa01e3d6d6;hb=9d4adbe924eef5d9b1fe663db83bc8a438d4671e;hpb=3c1d19eebfa38b5cb48ddf6c955186fd6c840f34 diff --git a/src/SMDS/SMDS_VtkEdge.cxx b/src/SMDS/SMDS_VtkEdge.cxx index d35f63542..75a96b966 100644 --- a/src/SMDS/SMDS_VtkEdge.cxx +++ b/src/SMDS/SMDS_VtkEdge.cxx @@ -27,7 +27,10 @@ void SMDS_VtkEdge::init(std::vector nodeIds, SMDS_Mesh* mesh) vtkUnstructuredGrid* grid = mesh->getGrid(); myIdInShape = -1; myMeshId = mesh->getMeshId(); - myVtkID = grid->InsertNextLinkedCell(VTK_LINE, nodeIds.size(), &nodeIds[0]); + vtkIdType aType = VTK_LINE; + if (nodeIds.size() == 3) + aType = VTK_QUADRATIC_EDGE; + myVtkID = grid->InsertNextLinkedCell(aType, nodeIds.size(), &nodeIds[0]); } bool SMDS_VtkEdge::ChangeNodes(const SMDS_MeshNode * node1, @@ -43,7 +46,9 @@ void SMDS_VtkEdge::Print(std::ostream & OS) const int SMDS_VtkEdge::NbNodes() const { - return 2; + vtkUnstructuredGrid* grid =SMDS_Mesh::_meshList[myMeshId]->getGrid(); + int nbPoints = grid->GetCell(myVtkID)->GetNumberOfPoints(); + return nbPoints; } int SMDS_VtkEdge::NbEdges() const @@ -53,12 +58,19 @@ int SMDS_VtkEdge::NbEdges() const SMDSAbs_EntityType SMDS_VtkEdge::GetEntityType() const { - return SMDSEntity_Edge; + if (NbNodes() == 2) + return SMDSEntity_Edge; + else + return SMDSEntity_Quad_Edge; } vtkIdType SMDS_VtkEdge::GetVtkType() const { - return VTK_LINE; + if (NbNodes() == 2) + return VTK_LINE; + else + return VTK_QUADRATIC_EDGE; + } /*! @@ -69,7 +81,15 @@ vtkIdType SMDS_VtkEdge::GetVtkType() const const SMDS_MeshNode* SMDS_VtkEdge::GetNode(const int ind) const { - return 0; + return SMDS_MeshElement::GetNode(ind); // --- a optimiser ! +} + +bool SMDS_VtkEdge::IsQuadratic() const +{ + if (this->NbNodes() > 2) + return true; + else + return false; } SMDS_ElemIteratorPtr SMDS_VtkEdge::elementsIterator(SMDSAbs_ElementType type) const