-// void UpdateObjBrowser (bool)
-// {
-// //SMESHGUI::activeStudy()->updateObjBrowser(true);
-// //SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>
-// // (SUIT_Session::session()->activeApplication());
-// //if (anApp) anApp->objectBrowser()->updateTree();
-// SMESHGUI::GetSMESHGUI()->updateObjBrowser();
-// }
-}
+ void ShowHelpFile (const QString& theHelpFileName)
+ {
+ LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
+ if (app) {
+ SMESHGUI* gui = SMESHGUI::GetSMESHGUI();
+ app->onHelpContextModule(gui ? app->moduleName(gui->moduleName()) : QString(""),
+ theHelpFileName);
+ }
+ else {
+ SUIT_MessageBox::warning(0, QObject::tr("WRN_WARNING"),
+ QObject::tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
+ arg(app->resourceMgr()->stringValue("ExternalBrowser",
+ "application")).
+ arg(theHelpFileName));
+ }
+ }
+
+ //=======================================================================
+ /**
+ Return normale to a given face
+ */
+ //=======================================================================
+ gp_XYZ getNormale( const SMDS_MeshFace* theFace )
+ {
+ gp_XYZ n;
+ int aNbNode = theFace->NbNodes();
+ TColgp_Array1OfXYZ anArrOfXYZ(1,4);
+ SMDS_ElemIteratorPtr aNodeItr = theFace->nodesIterator();
+ int i = 1;
+ for ( ; aNodeItr->more() && i <= 4; i++ ) {
+ SMDS_MeshNode* aNode = (SMDS_MeshNode*)aNodeItr->next();
+ anArrOfXYZ.SetValue(i, gp_XYZ( aNode->X(), aNode->Y(), aNode->Z() ) );
+ }
+
+ gp_XYZ q1 = anArrOfXYZ.Value(2) - anArrOfXYZ.Value(1);
+ gp_XYZ q2 = anArrOfXYZ.Value(3) - anArrOfXYZ.Value(1);
+ n = q1 ^ q2;
+ if ( aNbNode > 3 ) {
+ gp_XYZ q3 = anArrOfXYZ.Value(4) - anArrOfXYZ.Value(1);
+ n += q2 ^ q3;
+ }
+ double len = n.Modulus();
+ if ( len > 0 )
+ n /= len;
+ return n;
+ }
+
+} // end of namespace SMESH