Fix for issue 0019935: EDF 793 SMESH: Drawing of a line on a non-planar surface. To draw only connectivity lines.

This commit is contained in:
akl 2008-08-01 07:39:10 +00:00
parent c003632371
commit bc3f3f9c01
4 changed files with 21 additions and 7 deletions

View File

@ -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();

View File

@ -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];

View File

@ -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();

View File

@ -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;