mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-27 22:00:33 +05:00
0022876: EDF 8425 SMESH: Get the normal of a face in the GUI
This commit is contained in:
parent
1b1945a31c
commit
15963fa362
@ -1046,6 +1046,16 @@ SMESHGUI_ElemInfo::XYZ SMESHGUI_ElemInfo::gravityCenter( const SMDS_MeshElement*
|
|||||||
return xyz;
|
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<const SMDS_MeshFace*>( element ) );
|
||||||
|
return XYZ(n.X(), n.Y(), n.Z());
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\brief This slot is called from "Show Previous" button click.
|
\brief This slot is called from "Show Previous" button click.
|
||||||
Shows information on the previous group of the items.
|
Shows information on the previous group of the items.
|
||||||
@ -1423,6 +1433,12 @@ void SMESHGUI_SimpleElemInfo::information( const QList<long>& ids )
|
|||||||
// Gravity center
|
// Gravity center
|
||||||
XYZ gc = gravityCenter( e );
|
XYZ gc = gravityCenter( e );
|
||||||
myInfo->append( QString( "<b>%1:</b> (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "GRAVITY_CENTER" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) );
|
myInfo->append( QString( "<b>%1:</b> (%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( "<b>%1:</b> (%2, %3, %4)" ).arg( SMESHGUI_ElemInfo::tr( "NORMAL_VECTOR" ) ).arg( gc.x() ).arg( gc.y() ).arg( gc.z() ) );
|
||||||
|
}
|
||||||
|
|
||||||
// Element position
|
// Element position
|
||||||
if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) {
|
if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) {
|
||||||
@ -1967,6 +1983,23 @@ void SMESHGUI_TreeElemInfo::information( const QList<long>& ids )
|
|||||||
QTreeWidgetItem* zItem = createItem( gcItem );
|
QTreeWidgetItem* zItem = createItem( gcItem );
|
||||||
zItem->setText( 0, "Z" );
|
zItem->setText( 0, "Z" );
|
||||||
zItem->setText( 1, QString::number( gc.z(), precision > 0 ? 'f' : 'g', qAbs( precision ) ) );
|
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
|
// element position
|
||||||
SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer();
|
SMESH::SMESH_Mesh_ptr aMesh = actor()->GetObject()->GetMeshServer();
|
||||||
if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) {
|
if ( e->GetType() >= SMDSAbs_Edge && e->GetType() <= SMDSAbs_Volume ) {
|
||||||
|
@ -158,6 +158,7 @@ protected:
|
|||||||
{
|
{
|
||||||
double myX, myY, myZ;
|
double myX, myY, myZ;
|
||||||
XYZ() { myX = myY = myZ = 0.0; }
|
XYZ() { myX = myY = myZ = 0.0; }
|
||||||
|
XYZ(double x, double y, double z) { myX = x; myY = y; myZ = z; }
|
||||||
void add( double x, double y, double z ) { myX += x; myY += y; myZ += z; }
|
void add( double x, double y, double z ) { myX += x; myY += y; myZ += z; }
|
||||||
void divide( double a ) { if ( a != 0.) { myX /= a; myY /= a; myZ /= a; } }
|
void divide( double a ) { if ( a != 0.) { myX /= a; myY /= a; myZ /= a; } }
|
||||||
double x() const { return myX; }
|
double x() const { return myX; }
|
||||||
@ -176,6 +177,7 @@ protected:
|
|||||||
Connectivity nodeConnectivity( const SMDS_MeshNode* );
|
Connectivity nodeConnectivity( const SMDS_MeshNode* );
|
||||||
QString formatConnectivity( Connectivity, int );
|
QString formatConnectivity( Connectivity, int );
|
||||||
XYZ gravityCenter( const SMDS_MeshElement* );
|
XYZ gravityCenter( const SMDS_MeshElement* );
|
||||||
|
XYZ normal( const SMDS_MeshElement* );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void itemInfo( int );
|
void itemInfo( int );
|
||||||
|
@ -7102,6 +7102,10 @@ as they are of improper type:
|
|||||||
<source>GRAVITY_CENTER</source>
|
<source>GRAVITY_CENTER</source>
|
||||||
<translation>Gravity Center</translation>
|
<translation>Gravity Center</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>NORMAL_VECTOR</source>
|
||||||
|
<translation>Normal</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>NODE</source>
|
<source>NODE</source>
|
||||||
<translation>Node</translation>
|
<translation>Node</translation>
|
||||||
|
@ -7103,6 +7103,10 @@ en raison de leurs types incompatibles:
|
|||||||
<source>GRAVITY_CENTER</source>
|
<source>GRAVITY_CENTER</source>
|
||||||
<translation>CENTRE DE GRAVITÉ</translation>
|
<translation>CENTRE DE GRAVITÉ</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>NORMAL_VECTOR</source>
|
||||||
|
<translation>Normal</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>NODE</source>
|
<source>NODE</source>
|
||||||
<translation>Nœud</translation>
|
<translation>Nœud</translation>
|
||||||
|
@ -6988,6 +6988,10 @@
|
|||||||
<source>GRAVITY_CENTER</source>
|
<source>GRAVITY_CENTER</source>
|
||||||
<translation>重心</translation>
|
<translation>重心</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>NORMAL_VECTOR</source>
|
||||||
|
<translation>通常</translation>
|
||||||
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>NODE</source>
|
<source>NODE</source>
|
||||||
<translation>ノード</translation>
|
<translation>ノード</translation>
|
||||||
|
Loading…
Reference in New Issue
Block a user