From 52ffb07d757cffd37fd031085cc554cb2e488ceb Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 6 Mar 2013 08:36:13 +0000 Subject: [PATCH] 0021859: SMESH : Add conversion from QUAD8 to QUAD9 and from HEXA20 to HEXA27 add criterion SMESH::FT_EntityType --- src/SMESHGUI/SMESHGUI_FilterDlg.cxx | 66 ++++++++++++++++- src/SMESHGUI/SMESH_msg_en.ts | 110 ++++++++++++++++++++++++++-- 2 files changed, 165 insertions(+), 11 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx index f1097018a..1ea95a44a 100755 --- a/src/SMESHGUI/SMESHGUI_FilterDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_FilterDlg.cxx @@ -1137,6 +1137,7 @@ bool SMESHGUI_FilterTable::IsValid (const bool theMess, const int theEntityType) aCriterion == SMESH::FT_BelongToCylinder || aCriterion == SMESH::FT_BelongToGenSurface || aCriterion == SMESH::FT_ElemGeomType || + aCriterion == SMESH::FT_EntityType || aCriterion == SMESH::FT_CoplanarFaces || aCriterion == SMESH::FT_LyingOnGeom) { @@ -1253,6 +1254,8 @@ void SMESHGUI_FilterTable::GetCriterion (const int theRow, } else if ( aCriterionType == SMESH::FT_ElemGeomType ) theCriterion.Threshold = (double)((ComboItem*)aTable->item(theRow, 2))->value(); + else if ( aCriterionType == SMESH::FT_EntityType ) + theCriterion.Threshold = (double)((ComboItem*)aTable->item(theRow, 2))->value(); else if ( aCriterionType == SMESH::FT_CoplanarFaces ) theCriterion.ThresholdID = aTable->text(theRow, 2).toLatin1().constData(); else if ( aCriterionType != SMESH::FT_RangeOfIds && @@ -1329,6 +1332,11 @@ void SMESHGUI_FilterTable::SetCriterion (const int theRow, ComboItem* typeBox = (ComboItem*)aTable->item(theRow, 2); typeBox->setValue( (int)(theCriterion.Threshold + 0.5) ); } + else if (theCriterion.Type == SMESH::FT_EntityType ) + { + ComboItem* typeBox = (ComboItem*)aTable->item(theRow, 2); + typeBox->setValue( (int)(theCriterion.Threshold + 0.5) ); + } else if (theCriterion.Type == SMESH::FT_CoplanarFaces ) { aTable->item( theRow, 2 )->setText( QString( theCriterion.ThresholdID ) ); @@ -1651,10 +1659,40 @@ static QList geomTypes( const int theType ) return typeIds; } +//======================================================================= +// name : entityTypes +// Purpose : returns available entity types of elements +//======================================================================= + +static QList entityTypes( const int theType ) +{ + QList typeIds; + + if ( theType == SMESH::EDGE ) + { + typeIds.append( SMDSEntity_Edge ); + typeIds.append( SMDSEntity_Quad_Edge ); + } + if ( theType == SMESH::FACE ) + { + typeIds.append( SMDSEntity_Quadrangle ); + typeIds.append( SMDSEntity_Quad_Quadrangle ); + typeIds.append( SMDSEntity_BiQuad_Quadrangle ); + } + if ( theType == SMESH::VOLUME ) + { + typeIds.append( SMDSEntity_Hexa ); + typeIds.append( SMDSEntity_Quad_Hexa ); + typeIds.append( SMDSEntity_TriQuad_Hexa ); + } + return typeIds; +} + //======================================================================= // name : SMESHGUI_FilterTable::onCriterionChanged() // Purpose : Provides reaction on change of criterion //======================================================================= + void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, const int entityType) { int aType = entityType == -1 ? GetType() : entityType; @@ -1689,8 +1727,8 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con aCriterionType == SMESH::FT_Length2D || aCriterionType == SMESH::FT_MaxElementLength2D || aCriterionType == SMESH::FT_MaxElementLength3D || - aCriterionType == SMESH::FT_Volume3D; - + aCriterionType == SMESH::FT_Volume3D || + aCriterionType == SMESH::FT_EntityType; int aPrecision = 0; if ( anIsDoubleCriterion ) { const char* aPrecisionType = getPrecision( aCriterionType ); @@ -1710,6 +1748,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con if ( (aCriterionType != SMESH::FT_GroupColor && clrBtn) || (aCriterionType != SMESH::FT_ElemGeomType && isComboItem) || + (aCriterionType != SMESH::FT_EntityType && isComboItem) || (aCriterionType != SMESH::FT_MultiConnection && isIntSpinItem) || (!anIsDoubleCriterion && isDoubleSpinItem) || anIsPrecisionChanged ) @@ -1722,6 +1761,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con } if ( (aCriterionType == SMESH::FT_GroupColor && !clrBtn) || (aCriterionType == SMESH::FT_ElemGeomType && !isComboItem) || + (aCriterionType == SMESH::FT_EntityType && !isComboItem) || (aCriterionType == SMESH::FT_MultiConnection && !isIntSpinItem) || (anIsDoubleCriterion && !isDoubleSpinItem) || anIsPrecisionChanged ) @@ -1742,6 +1782,18 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con ComboItem* typeBox = new ComboItem( typeNames ); aTable->setItem( row, 2, typeBox ); } + else if ( aCriterionType == SMESH::FT_EntityType ) { + QList typeIds = entityTypes( aType ); + QMap typeNames; + QList::const_iterator anIter = typeIds.begin(); + for ( int i = 0; anIter != typeIds.end(); ++anIter, ++i) + { + QString typeKey = QString( "ENTITY_TYPE_%1" ).arg( *anIter ); + typeNames[ *anIter ] = tr( typeKey.toLatin1().data() ); + } + ComboItem* typeBox = new ComboItem( typeNames ); + aTable->setItem( row, 2, typeBox ); + } else if ( aCriterionType == SMESH::FT_MultiConnection ) { IntSpinItem* intSpin = new IntSpinItem( 0 ); aTable->setItem( row, 2, intSpin ); @@ -1771,7 +1823,8 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con aCriterionType == SMESH::FT_LinearOrQuadratic || aCriterionType == SMESH::FT_GroupColor || aCriterionType == SMESH::FT_ElemGeomType || - aCriterionType == SMESH::FT_CoplanarFaces + aCriterionType == SMESH::FT_CoplanarFaces || + aCriterionType == SMESH::FT_EntityType ) { bool isSignalsBlocked = aTable->signalsBlocked(); @@ -1783,6 +1836,7 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con aTable->item(row, 2)->setText( QString("") ); aTable->setEditable(aCriterionType == SMESH::FT_GroupColor || aCriterionType == SMESH::FT_ElemGeomType || + aCriterionType == SMESH::FT_EntityType || aCriterionType == SMESH::FT_CoplanarFaces, row, 2); aTable->blockSignals( isSignalsBlocked ); } @@ -1802,7 +1856,8 @@ void SMESHGUI_FilterTable::onCriterionChanged (const int row, const int col, con aTable->setEditable(true, row, 2); } else if (aCriterionType == SMESH::FT_GroupColor || - aCriterionType == SMESH::FT_ElemGeomType) + aCriterionType == SMESH::FT_ElemGeomType || + aCriterionType == SMESH::FT_EntityType) { if (!aTable->isEditable(row, 2)) aTable->setEditable(true, row, 2); @@ -2034,6 +2089,7 @@ const QMap& SMESHGUI_FilterTable::getCriteria (const int theType) aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR"); aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE"); aCriteria[ SMESH::FT_EqualEdges ] = tr("EQUAL_EDGE"); + aCriteria[ SMESH::FT_EntityType ] = tr("ENTITY_TYPE"); } return aCriteria; } @@ -2066,6 +2122,7 @@ const QMap& SMESHGUI_FilterTable::getCriteria (const int theType) aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE"); aCriteria[ SMESH::FT_CoplanarFaces ] = tr("COPLANAR_FACES"); aCriteria[ SMESH::FT_EqualFaces ] = tr("EQUAL_FACE"); + aCriteria[ SMESH::FT_EntityType ] = tr("ENTITY_TYPE"); } return aCriteria; } @@ -2087,6 +2144,7 @@ const QMap& SMESHGUI_FilterTable::getCriteria (const int theType) aCriteria[ SMESH::FT_GroupColor ] = tr("GROUP_COLOR"); aCriteria[ SMESH::FT_ElemGeomType ] = tr("GEOM_TYPE"); aCriteria[ SMESH::FT_EqualVolumes ] = tr("EQUAL_VOLUME"); + aCriteria[ SMESH::FT_EntityType ] = tr("ENTITY_TYPE"); } return aCriteria; } diff --git a/src/SMESHGUI/SMESH_msg_en.ts b/src/SMESHGUI/SMESH_msg_en.ts index 5e82b9bb1..ebd89c1da 100644 --- a/src/SMESHGUI/SMESH_msg_en.ts +++ b/src/SMESHGUI/SMESH_msg_en.ts @@ -4634,13 +4634,17 @@ Do you want to restore original submesh priority? RADIOBTN_1 - Convert to quadratic + Convert to linear RADIOBTN_2 - Convert from quadratic + Convert to quadratic - + + RADIOBTN_3 + Convert to bi-quadratic + + NON_CONFORM_WARNING Warning: mesh can become non-conformal @@ -5196,6 +5200,10 @@ Please check input data and try again COPLANAR_FACES Coplanar faces + + NUMBEROFNODESINELEMENT + Number Of Nodes In Element + COPY_FROM Copy from... @@ -5216,10 +5224,6 @@ Please check input data and try again EDGES Edges - - ENTITY_TYPE - Entity type - EQUAL_TO Equal to @@ -5367,6 +5371,98 @@ Please enter correct value and try again ELEMENTS Elements + + ENTITY_TYPE + Entity type + + + ENTITY_TYPE_0 + POINT1 + + + ENTITY_TYPE_2 + SEG2 + + + ENTITY_TYPE_3 + SEG3 + + + ENTITY_TYPE_4 + TRIA3 + + + ENTITY_TYPE_5 + TRIA6 + + + ENTITY_TYPE_6 + QUAD4 + + + ENTITY_TYPE_7 + QUAD8 + + + ENTITY_TYPE_8 + QUAD9 + + + ENTITY_TYPE_9 + TETRA4 + + + ENTITY_TYPE_10 + TETRA10 + + + ENTITY_TYPE_11 + PYRA5 + + + ENTITY_TYPE_12 + PYRA13 + + + ENTITY_TYPE_13 + PENTA6 + + + ENTITY_TYPE_14 + PENTA15 + + + ENTITY_TYPE_15 + HEXA8 + + + ENTITY_TYPE_16 + HEXA20 + + + ENTITY_TYPE_17 + HEXA27 + + + ENTITY_TYPE_18 + OCTA12 + + + ENTITY_TYPE_19 + POLYGONE + + + ENTITY_TYPE_20 + POLYEDRE + + + ENTITY_TYPE_21 + NONE + + + ENTITY_TYPE_22 + BALL + GEOM_TYPE Geometry type