myIdInShape = -1;
myMeshId = mesh->getMeshId();
vtkIdType aType = VTK_TRIANGLE;
- if (nodeIds.size() == 4)
- aType = VTK_QUAD;
+ 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;
+ default: aType = VTK_TRIANGLE; break;
+ }
myVtkID = grid->InsertNextLinkedCell(aType, nodeIds.size(), &nodeIds[0]);
}
int SMDS_VtkFace::NbEdges() const
{
- return NbNodes();
+ switch(NbNodes())
+ {
+ case 3:
+ case 6: return 3;
+ case 4:
+ case 8: return 4;
+ default: MESSAGE("invalid number of nodes");
+ }
+ return 0;
}
int SMDS_VtkFace::NbFaces() const
const SMDS_MeshNode*
SMDS_VtkFace::GetNode(const int ind) const
{
- return 0;
+ return SMDS_MeshElement::GetNode(ind); // --- a optimiser !
+}
+
+bool SMDS_VtkFace::IsQuadratic() const
+{
+ if (this->NbNodes() > 5)
+ return true;
+ else
+ return false;
}
SMDSAbs_EntityType SMDS_VtkFace::GetEntityType() const
{
- int nbNodes = NbNodes();
- if (nbNodes == 3)
- return SMDSEntity_Triangle;
- else
- return SMDSEntity_Quadrangle;
+ SMDSAbs_EntityType aType = SMDSEntity_Triangle;
+ switch(NbNodes())
+ {
+ case 3:
+ case 6: aType = SMDSEntity_Triangle; break;
+ case 4:
+ case 8: aType = SMDSEntity_Quadrangle; break;
+ }
+ return aType;
}
vtkIdType SMDS_VtkFace::GetVtkType() const
{
- int nbNodes = NbNodes();
- if (nbNodes == 3)
- return VTK_TRIANGLE;
- else
- return VTK_QUAD;
-
+ switch(NbNodes())
+ {
+ case 3: return VTK_TRIANGLE;
+ case 6: return VTK_QUADRATIC_TRIANGLE;
+ case 4: return VTK_QUAD;
+ case 8: return VTK_QUADRATIC_QUAD;
+ }
}
SMDS_ElemIteratorPtr SMDS_VtkFace::elementsIterator(SMDSAbs_ElementType type) const