From bc3f3f9c011298bbb208e56cf37a504f054135c2 Mon Sep 17 00:00:00 2001 From: akl Date: Fri, 1 Aug 2008 07:39:10 +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 | 3 +++ src/OBJECT/SMESH_Object.cxx | 8 ++++++-- src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx | 12 ++++++++---- src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx | 5 ++++- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/OBJECT/SMESH_Actor.cxx b/src/OBJECT/SMESH_Actor.cxx index e51332050..3c4f5c5b5 100644 --- a/src/OBJECT/SMESH_Actor.cxx +++ b/src/OBJECT/SMESH_Actor.cxx @@ -168,7 +168,9 @@ 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 //--------------------------------- @@ -1055,6 +1057,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 3cd1cc620..e29b9111f 100644 --- a/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_AddQuadraticElementDlg.cxx @@ -220,8 +220,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; @@ -236,9 +236,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 61900244e..f1895d3cc 100644 --- a/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshEditPreview.cxx @@ -137,7 +137,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; -- 2.39.2