X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_MeshInfo.cxx;h=f997d9a70cf4c018548878ec1701f3447516ca71;hb=bf4083bfeee4e1ae00e16e8643d501cb8ff9142c;hp=e91afa388e3d91e894bc3caf141d2a711369106e;hpb=bf19a0694870cb73285c27a6ddbd4252daefc4dd;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx index e91afa388..f997d9a70 100644 --- a/src/SMESHGUI/SMESHGUI_MeshInfo.cxx +++ b/src/SMESHGUI/SMESHGUI_MeshInfo.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -306,11 +306,13 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) QLabel* a2DQuaBiQuad = createField(); QLabel* a2DPolLab = new QLabel( tr( "POLYGONS_LAB" ), this ); QLabel* a2DPolTotal = createField(); + QLabel* a2DPolLin = createField(); + QLabel* a2DPolQuad = createField(); myWidgets[ index++ ] << a2DLine; myWidgets[ index++ ] << a2DLab << a2DTotal << a2DLin << a2DQuad << a2DBiQuad; myWidgets[ index++ ] << a2DTriLab << a2DTriTotal << a2DTriLin << a2DTriQuad << a2DTriBiQuad; myWidgets[ index++ ] << a2DQuaLab << a2DQuaTotal << a2DQuaLin << a2DQuaQuad << a2DQuaBiQuad; - myWidgets[ index++ ] << a2DPolLab << a2DPolTotal; + myWidgets[ index++ ] << a2DPolLab << a2DPolTotal << a2DPolLin << a2DPolQuad; // ... 3D elements QWidget* a3DLine = createLine(); @@ -414,6 +416,8 @@ SMESHGUI_MeshInfo::SMESHGUI_MeshInfo( QWidget* parent ) l->addWidget( a2DQuaBiQuad, 17, 4 ); l->addWidget( a2DPolLab, 18, 0 ); l->addWidget( a2DPolTotal, 18, 1 ); + l->addWidget( a2DPolLin, 18, 2 ); + l->addWidget( a2DPolQuad, 18, 3 ); l->addWidget( a3DLine, 19, 1, 1, 4 ); l->addWidget( a3DLab, 20, 0 ); l->addWidget( a3DTotal, 20, 1 ); @@ -503,8 +507,9 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myWidgets[i1D][iQuadratic]->setProperty( "text", QString::number( info[SMDSEntity_Quad_Edge] ) ); long nbTriangles = info[SMDSEntity_Triangle] + info[SMDSEntity_Quad_Triangle] + info[SMDSEntity_BiQuad_Triangle]; long nbQuadrangles = info[SMDSEntity_Quadrangle] + info[SMDSEntity_Quad_Quadrangle] + info[SMDSEntity_BiQuad_Quadrangle]; + long nb2DPolygons = info[SMDSEntity_Polygon] + info[SMDSEntity_Quad_Polygon]; long nb2DLinear = info[SMDSEntity_Triangle] + info[SMDSEntity_Quadrangle] + info[SMDSEntity_Polygon]; - long nb2DQuadratic = info[SMDSEntity_Quad_Triangle] + info[SMDSEntity_Quad_Quadrangle]; + long nb2DQuadratic = info[SMDSEntity_Quad_Triangle] + info[SMDSEntity_Quad_Quadrangle] + info[SMDSEntity_Quad_Polygon]; long nb2DBiQuadratic = info[SMDSEntity_BiQuad_Triangle] + info[SMDSEntity_BiQuad_Quadrangle]; long nb2DTotal = nb2DLinear + nb2DQuadratic + nb2DBiQuadratic; @@ -520,7 +525,9 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Quadrangle] ) ); myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Quadrangle] ) ); myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_BiQuad_Quadrangle] ) ); - myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( info[SMDSEntity_Polygon] ) ); + myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( nb2DPolygons )); + myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( info[SMDSEntity_Polygon] ) ); + myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( info[SMDSEntity_Quad_Polygon] ) ); long nbTetrahedrons = info[SMDSEntity_Tetra] + info[SMDSEntity_Quad_Tetra]; long nbHexahedrons = info[SMDSEntity_Hexa] + info[SMDSEntity_Quad_Hexa] + info[SMDSEntity_TriQuad_Hexa]; long nbPyramids = info[SMDSEntity_Pyramid] + info[SMDSEntity_Quad_Pyramid]; @@ -583,6 +590,8 @@ void SMESHGUI_MeshInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", "?" ); myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", "?" ); myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", "?" ); + myWidgets[i2DPolygons][iLinear] ->setProperty( "text", "?" ); + myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", "?" ); myWidgets[i2DPolygons][iTotal] ->setProperty( "text", "?" ); myWidgets[iNb][iTotal] ->setProperty( "text", "?" ); myWidgets[iNb][iLinear] ->setProperty( "text", "?" ); @@ -712,6 +721,8 @@ void SMESHGUI_MeshInfo::clear() myWidgets[i2DQuadrangles][iLinear] ->setProperty( "text", QString::number( 0 ) ); myWidgets[i2DQuadrangles][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); myWidgets[i2DQuadrangles][iBiQuadratic] ->setProperty( "text", QString::number( 0 ) ); + myWidgets[i2DPolygons][iLinear] ->setProperty( "text", QString::number( 0 ) ); + myWidgets[i2DPolygons][iQuadratic] ->setProperty( "text", QString::number( 0 ) ); myWidgets[i2DPolygons][iTotal] ->setProperty( "text", QString::number( 0 ) ); myWidgets[i3D][iTotal] ->setProperty( "text", QString::number( 0 ) ); myWidgets[i3D][iLinear] ->setProperty( "text", QString::number( 0 ) ); @@ -836,6 +847,8 @@ void SMESHGUI_MeshInfo::saveInfo( QTextStream &out ) out << QString( SPACING_INFO*3, ' ' ) << tr( "BI_QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DQuadrangles][iBiQuadratic]->property( "text" ) ).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "POLYGONS_LAB" ) << "\n"; out << QString( SPACING_INFO*3, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i2DPolygons][iTotal]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i2DPolygons][iLinear]->property( "text" ) ).toString() << "\n"; + out << QString( SPACING_INFO*3, ' ' ) << tr( "QUADRATIC_LAB" ) << ": " << ( myWidgets[i2DPolygons][iQuadratic]->property( "text" ) ).toString() << "\n"; out << QString( SPACING_INFO, ' ' ) << tr( "3D_LAB" ) << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "TOTAL_LAB" ) << ": " << ( myWidgets[i3D][iTotal]->property( "text" ) ).toString() << "\n"; out << QString( SPACING_INFO*2, ' ' ) << tr( "LINEAR_LAB" ) << ": " << ( myWidgets[i3D][iLinear]->property( "text" ) ).toString() << "\n"; @@ -1046,6 +1059,16 @@ SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::gravityCenter( const SMDS_MeshElement* return xyz; } +/*! + \brief Calculate normal vector to the mesh face + \param element mesh face +*/ +SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::normal( const SMDS_MeshElement* element ) +{ + gp_XYZ n = SMESH::getNormale( dynamic_cast( element ) ); + return XYZ(n.X(), n.Y(), n.Z()); +} + /*! \brief This slot is called from "Show Previous" button click. Shows information on the previous group of the items. @@ -1423,6 +1446,12 @@ void SMESHGUI_SimpleElemInfo::information( const QList& ids ) // Gravity center XYZ gc = gravityCenter( e ); myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) ); + + // Normal vector + if( e->GetType() == SMDSAbs_Face ) { + XYZ gc = normal( e ); + myInfo->append( QString( "%1: (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) ); + } // Element position if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) { @@ -1967,6 +1996,23 @@ void SMESHGUI_TreeElemInfo::information( const QList& ids ) QTreeWidgetItem* zItem = createItem( gcItem ); zItem->setText( 0, "Z" ); zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + + // normal vector + if( e->GetType() == SMDSAbs_Face ) { + XYZ gc = normal( e ); + QTreeWidgetItem* nItem = createItem( elemItem, Bold ); + nItem->setText( 0, SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" ) ); + QTreeWidgetItem* xItem = createItem( nItem ); + xItem->setText( 0, "X" ); + xItem->setText( 1, QString::number( gc.x(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + QTreeWidgetItem* yItem = createItem( nItem ); + yItem->setText( 0, "Y" ); + yItem->setText( 1, QString::number( gc.y(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + QTreeWidgetItem* zItem = createItem( nItem ); + zItem->setText( 0, "Z" ); + zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) ); + } + // element position SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer(); if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) { @@ -3340,7 +3386,8 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) // free nodes computeFreeNodesInfo(); // double nodes - computeDoubleNodesInfo(); + if ( Max( (int)mesh->NbNodes(), (int)mesh->NbElements() ) <= ctrlLimit ) + computeDoubleNodesInfo(); } else { myButtons[0]->setEnabled( true ); @@ -3380,6 +3427,11 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myButtons[4]->setEnabled( true ); myButtons[5]->setEnabled( true ); } +#ifdef DISABLE_PLOT2DVIEWER + myMainLayout->setRowStretch(11,0); + for( int i=22; i<=24; i++) + myMainLayout->itemAt(i)->widget()->setVisible( false ); +#endif } else { myMainLayout->setRowStretch(11,0); @@ -3402,6 +3454,11 @@ void SMESHGUI_CtrlInfo::showInfo( SMESH::SMESH_IDSource_ptr obj ) myButtons[7]->setEnabled( true ); myButtons[8]->setEnabled( true ); } +#ifdef DISABLE_PLOT2DVIEWER + myMainLayout->setRowStretch(16,0); + for( int i=32; i<=34; i++) + myMainLayout->itemAt(i)->widget()->setVisible( false ); +#endif } else { myMainLayout->setRowStretch(16,0); @@ -3481,6 +3538,7 @@ void SMESHGUI_CtrlInfo::computeOverConstrainedVolumesInfo() void SMESHGUI_CtrlInfo::computeAspectRatio() { +#ifndef DISABLE_PLOT2DVIEWER myButtons[5]->setEnabled( false ); if ( myObject->_is_nil() ) return; @@ -3494,10 +3552,12 @@ void SMESHGUI_CtrlInfo::computeAspectRatio() myPlot->replot(); } delete aHistogram; +#endif } void SMESHGUI_CtrlInfo::computeAspectRatio3D() { +#ifndef DISABLE_PLOT2DVIEWER myButtons[8]->setEnabled( false ); if ( myObject->_is_nil() ) return; @@ -3511,6 +3571,7 @@ void SMESHGUI_CtrlInfo::computeAspectRatio3D() myPlot3D->replot(); } delete aHistogram; +#endif } /*! @@ -3540,6 +3601,7 @@ void SMESHGUI_CtrlInfo::setTolerance( double theTolerance ) myWidgets[2]->setText(""); } +#ifndef DISABLE_PLOT2DVIEWER Plot2d_Histogram* SMESHGUI_CtrlInfo::getHistogram( SMESH::NumericalFunctor_ptr aNumFun ) { SMESH::SMESH_Mesh_var mesh = myObject->GetMesh(); @@ -3569,6 +3631,7 @@ Plot2d_Histogram* SMESHGUI_CtrlInfo::getHistogram( SMESH::NumericalFunctor_ptr a } return aHistogram; } +#endif void SMESHGUI_CtrlInfo::saveInfo( QTextStream &out ) { out << QString( 20, '-' ) << "\n";