-// Copyright (C) 2010-2013 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2014 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
case 9:
aType = VTK_BIQUADRATIC_QUAD;
break;
+ case 7:
+ aType = VTK_BIQUADRATIC_TRIANGLE;
+ break;
default:
aType = VTK_POLYGON;
break;
{
case VTK_TRIANGLE:
case VTK_QUADRATIC_TRIANGLE:
+ case VTK_BIQUADRATIC_TRIANGLE:
nbEdges = 3;
break;
case VTK_QUAD:
return SMDS_Mesh::_meshList[myMeshId]->FindNodeVtk( pts[ ind ]);
}
+/*!
+ * \brief Check if a node belongs to the element
+ * \param node - the node to check
+ * \retval int - node index within the element, -1 if not found
+ */
+int SMDS_VtkFace::GetNodeIndex( const SMDS_MeshNode* node ) const
+{
+ vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
+ vtkIdType npts, *pts;
+ grid->GetCellPoints( this->myVtkID, npts, pts );
+ for ( vtkIdType i = 0; i < npts; ++i )
+ if ( pts[i] == node->getVtkId() )
+ return i;
+ return -1;
+}
+
bool SMDS_VtkFace::IsQuadratic() const
{
vtkUnstructuredGrid* grid = SMDS_Mesh::_meshList[myMeshId]->getGrid();
case VTK_QUADRATIC_TRIANGLE:
case VTK_QUADRATIC_QUAD:
case VTK_BIQUADRATIC_QUAD:
+ case VTK_BIQUADRATIC_TRIANGLE:
return true;
break;
default:
switch (aVtkType)
{
case VTK_QUADRATIC_TRIANGLE:
+ case VTK_BIQUADRATIC_TRIANGLE:
rankFirstMedium = 3; // medium nodes are of rank 3,4,5
break;
case VTK_QUADRATIC_QUAD:
switch ( aVtkType ) {
case VTK_TRIANGLE:
case VTK_QUADRATIC_TRIANGLE:
- return SMDSGeom_TRIANGLE;
+ case VTK_BIQUADRATIC_TRIANGLE: return SMDSGeom_TRIANGLE;
+
case VTK_QUAD:
case VTK_QUADRATIC_QUAD:
- case VTK_BIQUADRATIC_QUAD:
- return SMDSGeom_QUADRANGLE;
- case VTK_POLYGON:
- return SMDSGeom_POLYGON;
+ case VTK_BIQUADRATIC_QUAD: return SMDSGeom_QUADRANGLE;
+
+ case VTK_POLYGON: return SMDSGeom_POLYGON;
default:;
}
return SMDSGeom_NONE;
}
}
-SMDS_ElemIteratorPtr SMDS_VtkFace::nodesIteratorToUNV() const
+SMDS_NodeIteratorPtr SMDS_VtkFace::nodesIteratorToUNV() const
{
- return SMDS_ElemIteratorPtr(new SMDS_VtkCellIteratorToUNV(SMDS_Mesh::_meshList[myMeshId], myVtkID, GetEntityType()));
+ return SMDS_NodeIteratorPtr(new SMDS_VtkCellIteratorToUNV(SMDS_Mesh::_meshList[myMeshId], myVtkID, GetEntityType()));
}
-SMDS_ElemIteratorPtr SMDS_VtkFace::interlacedNodesElemIterator() const
+SMDS_NodeIteratorPtr SMDS_VtkFace::interlacedNodesIterator() const
{
- return SMDS_ElemIteratorPtr(new SMDS_VtkCellIteratorToUNV(SMDS_Mesh::_meshList[myMeshId], myVtkID, GetEntityType()));
+ return nodesIteratorToUNV();
}
//! change only the first node, used for temporary triangles in quadrangle to triangle adaptor