From 003b5a3e7657e0476c517d3ac9b126a02561ce8d Mon Sep 17 00:00:00 2001 From: akl Date: Fri, 1 Aug 2008 08:14:33 +0000 Subject: [PATCH] Fix for issue 0019935: EDF 793 SMESH: Drawing of a line on a non-planar surface. To draw only connectivity lines. --- src/OBJECT/SMESH_Actor.cxx | 2 ++ src/OBJECT/SMESH_Object.cxx | 8 ++++++-- src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx | 12 ++++++++---- src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx | 5 ++++- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index b54b4df79..b22919124 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -167,6 +167,7 @@ SMESH_ActorDef::SMESH_ActorDef() aFilter->RegisterCellsWithType(VTK_PYRAMID); aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); //Definition 1D divice of the actor @@ -1054,6 +1055,7 @@ void SMESH_ActorDef::SetEntityMode(unsigned int theMode){ aFilter->RegisterCellsWithType(VTK_PYRAMID); aFilter->RegisterCellsWithType(VTK_QUADRATIC_TETRA); aFilter->RegisterCellsWithType(VTK_QUADRATIC_HEXAHEDRON); + aFilter->RegisterCellsWithType(VTK_QUADRATIC_WEDGE); aFilter->RegisterCellsWithType(VTK_CONVEX_POINT_SET); } aFilter->Update(); diff --git a/src/OBJECT/SMESH_Object.cxx b/src/OBJECT/SMESH_Object.cxx index 9bdc652a0..b05f519d1 100644 --- a/src/OBJECT/SMESH_Object.cxx +++ b/src/OBJECT/SMESH_Object.cxx @@ -112,7 +112,10 @@ static inline vtkIdType getCellType( const SMDSAbs_ElementType theType, else if ( theNbNodes == 20 ) { return VTK_QUADRATIC_HEXAHEDRON; } - else if ( theNbNodes==13 || theNbNodes==15 ) { + else if ( theNbNodes == 15 ) { + return VTK_QUADRATIC_WEDGE; + } + else if ( theNbNodes==13 ) { return VTK_CONVEX_POINT_SET; } else return VTK_EMPTY_CELL; @@ -404,7 +407,8 @@ void SMESH_VisualObjDef::buildElemPrs() for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]); } else if (aNbNodes == 15) { - static int anIds[] = {0,2,1,3,5,4,8,7,6,11,10,9,12,14,13}; + //static int anIds[] = {0,2,1,3,5,4,8,7,6,11,10,9,12,14,13}; + static int anIds[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14}; for (int k = 0; k < aNbNodes; k++) aConnectivities.push_back(anIds[k]); //for (int k = 0; k < aNbNodes; k++) { // int nn = aConnectivities[k]; diff --git a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx index 95aa3f8e9..cc2e4b16f 100644 --- a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx @@ -222,8 +222,8 @@ namespace SMESH aType = VTK_CONVEX_POINT_SET; break; case QUAD_PENTAHEDRON: - //aType = VTK_QUADRATIC_WEDGE; // NOT SUPPORTED IN VTK4.2 - aType = VTK_CONVEX_POINT_SET; + aType = VTK_QUADRATIC_WEDGE; + //aType = VTK_CONVEX_POINT_SET; break; case QUAD_HEXAHEDRON: aType = VTK_QUADRATIC_HEXAHEDRON; @@ -238,9 +238,13 @@ namespace SMESH } else { // VTK cell connectivity opposites the MED one for volumic elements - if ( theIds.size() > 8 ? !theReverse : theReverse ) { - ReverseConnectivity( theIds, theType ); + if( aType != VTK_QUADRATIC_WEDGE) { + if ( theIds.size() > 8 ? !theReverse : theReverse ) { + ReverseConnectivity( theIds, theType ); + } } + else if(theReverse) + ReverseConnectivity( theIds, theType ); } myGrid->Reset(); diff --git a/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx b/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx index 0013564ff..b6f52b58a 100644 --- a/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx @@ -136,7 +136,10 @@ vtkIdType getCellType( const SMDSAbs_ElementType theType, else if ( theNbNodes == 20 ) { return VTK_QUADRATIC_HEXAHEDRON; } - else if ( theNbNodes==13 || theNbNodes==15 ) { + else if ( theNbNodes==15 ) { + return VTK_QUADRATIC_WEDGE; + } + else if ( theNbNodes==13 ) { return VTK_CONVEX_POINT_SET; } else return VTK_EMPTY_CELL;