2 #include "SMDS_VtkVolume.hxx"
3 #include "SMDS_MeshNode.hxx"
4 #include "SMDS_Mesh.hxx"
5 #include "SMDS_VtkCellIterator.hxx"
12 SMDS_VtkVolume::SMDS_VtkVolume()
16 SMDS_VtkVolume::SMDS_VtkVolume(std::vector<vtkIdType> nodeIds, SMDS_Mesh* mesh)
21 void SMDS_VtkVolume::init(std::vector<vtkIdType> nodeIds, SMDS_Mesh* mesh)
23 vtkUnstructuredGrid* grid = mesh->getGrid();
24 myMeshId = mesh->getMeshId();
25 myVtkID = grid->InsertNextLinkedCell(GetType(), nodeIds.size(), &nodeIds[0]);
28 bool SMDS_VtkVolume::ChangeNodes(const SMDS_MeshNode* nodes[],
31 // utilise dans SMDS_Mesh
35 SMDS_VtkVolume::~SMDS_VtkVolume()
39 void SMDS_VtkVolume::Print(ostream & OS) const
41 OS << "volume <" << GetID() << "> : ";
44 int SMDS_VtkVolume::NbFaces() const
52 default: MESSAGE("invalid number of nodes");
57 int SMDS_VtkVolume::NbNodes() const
59 vtkUnstructuredGrid* grid =SMDS_Mesh::_meshList[myMeshId]->getGrid();
60 int nbPoints = grid->GetCell(myVtkID)->GetNumberOfPoints();
64 int SMDS_VtkVolume::NbEdges() const
72 default: MESSAGE("invalid number of nodes");
77 SMDS_ElemIteratorPtr SMDS_VtkVolume::elementsIterator(SMDSAbs_ElementType type) const
82 return SMDS_ElemIteratorPtr(new SMDS_VtkCellIterator(SMDS_Mesh::_meshList[myMeshId], myVtkID));
84 MESSAGE("ERROR : Iterator not implemented");
85 return SMDS_ElemIteratorPtr((SMDS_ElemIterator*)NULL);
89 SMDSAbs_ElementType SMDS_VtkVolume::GetType() const
91 return SMDSAbs_Volume;
95 * \brief Return node by its index
96 * \param ind - node index
97 * \retval const SMDS_MeshNode* - the node
99 const SMDS_MeshNode* SMDS_VtkVolume::GetNode(const int ind) const
104 SMDSAbs_EntityType SMDS_VtkVolume::GetEntityType() const
106 SMDSAbs_EntityType aType = SMDSEntity_Tetra;
109 case 4: aType = SMDSEntity_Tetra; break;
110 case 5: aType = SMDSEntity_Pyramid; break;
111 case 6: aType = SMDSEntity_Penta; break;
113 default: aType = SMDSEntity_Hexa; break;