Version: 6.3.1
Public Member Functions | Private Slots | Private Member Functions | Private Attributes

SMESHGUI_RemoveNodesDlg Class Reference

#include <SMESHGUI_RemoveNodesDlg.h>

Inheritance diagram for SMESHGUI_RemoveNodesDlg:
Inheritance graph
[legend]

Public Member Functions

 SMESHGUI_RemoveNodesDlg (SMESHGUI *)
 ~SMESHGUI_RemoveNodesDlg ()

Private Slots

void ClickOnOk ()
void ClickOnCancel ()
void ClickOnApply ()
void ClickOnHelp ()
void SetEditCurrentArgument ()
void SelectionIntoArgument ()
void DeactivateActiveDialog ()
void ActivateThisDialog ()
void onTextChange (const QString &)
void setFilters ()
void updateButtons ()

Private Member Functions

void Init ()
void closeEvent (QCloseEvent *)
void enterEvent (QEvent *)
void hideEvent (QHideEvent *)
void keyPressEvent (QKeyEvent *)

Private Attributes

LightApp_SelectionMgr * mySelectionMgr
SVTK_Selector * mySelector
SMESHGUImySMESHGUI
int myNbOkNodes
int myConstructorId
QLineEdit * myEditCurrentArgument
bool myBusy
SMESH::SMESH_Mesh_var myMesh
SMESH_ActormyActor
QGroupBoxGroupConstructors
QRadioButton * Constructor1
QGroupBoxGroupButtons
QPushButton * buttonOk
QPushButton * buttonCancel
QPushButton * buttonApply
QPushButton * buttonHelp
QGroupBoxGroupC1
QLabel * TextLabelC1A1
QPushButton * SelectButtonC1A1
QLineEdit * LineEditC1A1
QString myHelpFileName
SMESHGUI_FilterDlgmyFilterDlg

Detailed Description

Definition at line 56 of file SMESHGUI_RemoveNodesDlg.h.


Constructor & Destructor Documentation

SMESHGUI_RemoveNodesDlg::SMESHGUI_RemoveNodesDlg ( SMESHGUI theModule)

Definition at line 81 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESH.GetResourceMgr(), batchmode_smesh.Init(), MARGIN, and SPACING.

  : QDialog(SMESH::GetDesktop(theModule)),
    mySelector(SMESH::GetViewWindow(theModule)->GetSelector()),
    mySelectionMgr(SMESH::GetSelectionMgr(theModule)),
    mySMESHGUI(theModule),
    myBusy(false),
    myFilterDlg(0)
{
  setModal( false );
  setAttribute( Qt::WA_DeleteOnClose, true );
  setWindowTitle(tr("SMESH_REMOVE_NODES_TITLE"));
  setSizeGripEnabled(true);
  
  QPixmap image0 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_DLG_REM_NODE")));
  QPixmap image1 (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));

  QVBoxLayout* SMESHGUI_RemoveNodesDlgLayout = new QVBoxLayout(this);
  SMESHGUI_RemoveNodesDlgLayout->setSpacing(SPACING);
  SMESHGUI_RemoveNodesDlgLayout->setMargin(MARGIN);

  /***************************************************************/
  GroupConstructors = new QGroupBox(tr("SMESH_NODES"), this);
  QButtonGroup* ButtonGroup = new QButtonGroup(this);
  QHBoxLayout* GroupConstructorsLayout = new QHBoxLayout(GroupConstructors);
  GroupConstructorsLayout->setSpacing(SPACING);
  GroupConstructorsLayout->setMargin(MARGIN);

  Constructor1 = new QRadioButton(GroupConstructors);
  Constructor1->setIcon(image0);
  Constructor1->setChecked(true);

  GroupConstructorsLayout->addWidget(Constructor1);
  ButtonGroup->addButton(Constructor1, 0);

  /***************************************************************/
  GroupC1 = new QGroupBox(tr("SMESH_REMOVE"), this);
  QHBoxLayout* GroupC1Layout = new QHBoxLayout(GroupC1);
  GroupC1Layout->setSpacing(SPACING);
  GroupC1Layout->setMargin(MARGIN);

  TextLabelC1A1 = new QLabel(tr("SMESH_ID_NODES"), GroupC1);
  SelectButtonC1A1 = new QPushButton(GroupC1);
  SelectButtonC1A1->setIcon(image1);
  LineEditC1A1 = new QLineEdit(GroupC1);
  LineEditC1A1->setValidator(new SMESHGUI_IdValidator(this));
  LineEditC1A1->setMaxLength(-1);
  QPushButton* filterBtn = new QPushButton( tr( "SMESH_BUT_FILTER" ), GroupC1 );
  connect(filterBtn,   SIGNAL(clicked()), this, SLOT(setFilters()));

  GroupC1Layout->addWidget(TextLabelC1A1);
  GroupC1Layout->addWidget(SelectButtonC1A1);
  GroupC1Layout->addWidget(LineEditC1A1);
  GroupC1Layout->addWidget(filterBtn );

  /***************************************************************/
  GroupButtons = new QGroupBox(this);
  QHBoxLayout* GroupButtonsLayout = new QHBoxLayout(GroupButtons);
  GroupButtonsLayout->setSpacing(SPACING);
  GroupButtonsLayout->setMargin(MARGIN);

  buttonOk = new QPushButton(tr("SMESH_BUT_APPLY_AND_CLOSE"), GroupButtons);
  buttonOk->setAutoDefault(true);
  buttonOk->setDefault(true);
  buttonApply = new QPushButton(tr("SMESH_BUT_APPLY"), GroupButtons);
  buttonApply->setAutoDefault(true);
  buttonCancel = new QPushButton(tr("SMESH_BUT_CLOSE"), GroupButtons);
  buttonCancel->setAutoDefault(true);
  buttonHelp = new QPushButton(tr("SMESH_BUT_HELP"), GroupButtons);
  buttonHelp->setAutoDefault(true);

  GroupButtonsLayout->addWidget(buttonOk);
  GroupButtonsLayout->addSpacing(10);
  GroupButtonsLayout->addWidget(buttonApply);
  GroupButtonsLayout->addSpacing(10);
  GroupButtonsLayout->addStretch();
  GroupButtonsLayout->addWidget(buttonCancel);
  GroupButtonsLayout->addWidget(buttonHelp);

  /***************************************************************/
  SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupConstructors);
  SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupC1);
  SMESHGUI_RemoveNodesDlgLayout->addWidget(GroupButtons);

  myHelpFileName = "removing_nodes_and_elements_page.html#removing_nodes_anchor";

  Init(); /* Initialisations */
}
SMESHGUI_RemoveNodesDlg::~SMESHGUI_RemoveNodesDlg ( )

Definition at line 173 of file SMESHGUI_RemoveNodesDlg.cxx.

References myFilterDlg.

{
  if ( myFilterDlg ) {
    myFilterDlg->setParent( 0 );
    delete myFilterDlg;
    myFilterDlg = 0;
  }
}

Member Function Documentation

void SMESHGUI_RemoveNodesDlg::ActivateThisDialog ( ) [private, slot]

Definition at line 438 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESHGUI.EmitSignalDeactivateDialog(), SMESH.GetViewWindow(), GroupButtons, GroupC1, GroupConstructors, mySMESHGUI, SelectionIntoArgument(), SMESHGUI.SetActiveDialogBox(), and SMESH.SetPointRepresentation().

Referenced by enterEvent().

{
  /* Emit a signal to deactivate the active dialog */
  mySMESHGUI->EmitSignalDeactivateDialog();

  GroupConstructors->setEnabled(true);
  GroupC1->setEnabled(true);
  GroupButtons->setEnabled(true);

  mySMESHGUI->SetActiveDialogBox((QDialog*)this); // ??

  SMESH::SetPointRepresentation(true);
  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
    aViewWindow->SetSelectionMode(NodeSelection);

  SelectionIntoArgument(); // ??
}
void SMESHGUI_RemoveNodesDlg::ClickOnApply ( ) [private, slot]

Definition at line 223 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESHGUI.isActiveStudyLocked(), SMESHGUI.Modified(), myEditCurrentArgument, myMesh, myNbOkNodes, mySelector, mySMESHGUI, SMESH.SetPointRepresentation(), and SMESH.UpdateView().

Referenced by ClickOnOk(), and Init().

{
  if (mySMESHGUI->isActiveStudyLocked())
    return;

  if (myNbOkNodes) {
    QStringList aListId = myEditCurrentArgument->text().split(" ", QString::SkipEmptyParts);
    SMESH::long_array_var anArrayOfIdeces = new SMESH::long_array;
    anArrayOfIdeces->length(aListId.count());
    for (int i = 0; i < aListId.count(); i++)
      anArrayOfIdeces[i] = aListId[ i ].toInt();

    bool aResult = false;
    try {
      SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor();
      aResult = aMeshEditor->RemoveNodes(anArrayOfIdeces.in());
    } catch (const SALOME::SALOME_Exception& S_ex) {
      SalomeApp_Tools::QtCatchCorbaException(S_ex);
      myEditCurrentArgument->clear();
    } catch (...){
      myEditCurrentArgument->clear();
    }

    if (aResult) {
      myEditCurrentArgument->clear();
      mySelector->ClearIndex();
      SMESH::UpdateView();
      SMESHGUI::Modified();
    }

    SMESH::SetPointRepresentation(true);
  }
}
void SMESHGUI_RemoveNodesDlg::ClickOnCancel ( ) [private, slot]

Definition at line 271 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESH.GetCurrentVtkView(), SMESH.GetViewWindow(), mySelectionMgr, mySMESHGUI, SMESH.RemoveFilters(), SMESHGUI.ResetState(), and SMESH.SetPointRepresentation().

Referenced by ClickOnOk(), closeEvent(), hideEvent(), and Init().

{
  //mySelectionMgr->clearSelected();
  if (SMESH::GetCurrentVtkView()) {
    SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters
    SMESH::SetPointRepresentation(false);
  }
  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
    aViewWindow->SetSelectionMode(ActorSelection);
  disconnect(mySelectionMgr, 0, this, 0);
  mySelectionMgr->clearFilters();
  mySMESHGUI->ResetState();
  reject();
}
void SMESHGUI_RemoveNodesDlg::ClickOnHelp ( ) [private, slot]

Definition at line 290 of file SMESHGUI_RemoveNodesDlg.cxx.

References myHelpFileName, and mySMESHGUI.

Referenced by Init(), and keyPressEvent().

{
  LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
  if (app) 
    app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
  else {
    QString platform;
#ifdef WIN32
    platform = "winapplication";
#else
    platform = "application";
#endif
    SUIT_MessageBox::warning(this, tr("WRN_WARNING"),
                             tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
                             arg(app->resourceMgr()->stringValue("ExternalBrowser", 
                                                                 platform)).
                             arg(myHelpFileName));
  }
}
void SMESHGUI_RemoveNodesDlg::ClickOnOk ( ) [private, slot]

Definition at line 261 of file SMESHGUI_RemoveNodesDlg.cxx.

References ClickOnApply(), and ClickOnCancel().

Referenced by Init().

void SMESHGUI_RemoveNodesDlg::closeEvent ( QCloseEvent *  ) [private]

Definition at line 470 of file SMESHGUI_RemoveNodesDlg.cxx.

References ClickOnCancel().

{
  /* same than click on cancel button */
  ClickOnCancel();
}
void SMESHGUI_RemoveNodesDlg::DeactivateActiveDialog ( ) [private, slot]

Definition at line 423 of file SMESHGUI_RemoveNodesDlg.cxx.

References GroupButtons, GroupC1, GroupConstructors, mySMESHGUI, SMESHGUI.ResetState(), and SMESHGUI.SetActiveDialogBox().

Referenced by Init().

{
  if (GroupConstructors->isEnabled()) {
    GroupConstructors->setEnabled(false);
    GroupC1->setEnabled(false);
    GroupButtons->setEnabled(false);
    mySMESHGUI->ResetState(); // ??
    mySMESHGUI->SetActiveDialogBox(0); // ??
  }
}
void SMESHGUI_RemoveNodesDlg::enterEvent ( QEvent *  ) [private]

Definition at line 460 of file SMESHGUI_RemoveNodesDlg.cxx.

References ActivateThisDialog(), and GroupConstructors.

{
  if (!GroupConstructors->isEnabled())
    ActivateThisDialog();
}
void SMESHGUI_RemoveNodesDlg::hideEvent ( QHideEvent *  ) [private]

Definition at line 480 of file SMESHGUI_RemoveNodesDlg.cxx.

References ClickOnCancel().

{
  if (!isMinimized())
    ClickOnCancel();
}
void SMESHGUI_RemoveNodesDlg::Init ( ) [private]

Definition at line 186 of file SMESHGUI_RemoveNodesDlg.cxx.

References buttonApply, buttonCancel, buttonHelp, buttonOk, ClickOnApply(), ClickOnCancel(), ClickOnHelp(), ClickOnOk(), Constructor1, DeactivateActiveDialog(), SMESH.GetViewWindow(), LineEditC1A1, myActor, myBusy, myConstructorId, myEditCurrentArgument, myNbOkNodes, mySelectionMgr, mySMESHGUI, onTextChange(), SelectButtonC1A1, SelectionIntoArgument(), SMESHGUI.SetActiveDialogBox(), SetEditCurrentArgument(), and SMESH.SetPointRepresentation().

{
  myConstructorId = 0;
  Constructor1->setChecked(true);
  myEditCurrentArgument = LineEditC1A1;

  myNbOkNodes = 0;
  mySMESHGUI->SetActiveDialogBox((QDialog*)this);
  myActor = 0;
  myBusy = false;

  /* signals and slots connections */
  connect(buttonOk,     SIGNAL(clicked()), this, SLOT(ClickOnOk()));
  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
  connect(buttonApply,  SIGNAL(clicked()), this, SLOT(ClickOnApply()));
  connect(buttonHelp,   SIGNAL(clicked()), this, SLOT(ClickOnHelp()));

  connect(SelectButtonC1A1, SIGNAL (clicked()),   this, SLOT(SetEditCurrentArgument()));
  connect(mySMESHGUI, SIGNAL (SignalDeactivateActiveDialog()), this, SLOT(DeactivateActiveDialog()));
  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), this, SLOT(SelectionIntoArgument()));
  /* to close dialog if study change */
  connect(mySMESHGUI, SIGNAL (SignalCloseAllDialogs()), this, SLOT(ClickOnCancel()));
  connect(myEditCurrentArgument, SIGNAL(textChanged(const QString&)),
          SLOT(onTextChange(const QString&)));
  
  SMESH::SetPointRepresentation(true);
  
  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
    aViewWindow->SetSelectionMode(NodeSelection);

  SelectionIntoArgument();
}
void SMESHGUI_RemoveNodesDlg::keyPressEvent ( QKeyEvent *  e) [private]

Definition at line 490 of file SMESHGUI_RemoveNodesDlg.cxx.

References ClickOnHelp().

{
  QDialog::keyPressEvent( e );
  if ( e->isAccepted() )
    return;

  if ( e->key() == Qt::Key_F1 ) {
    e->accept();
    ClickOnHelp();
  }
}
void SMESHGUI_RemoveNodesDlg::onTextChange ( const QString &  theNewText) [private, slot]

Definition at line 314 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESH_Actor.GetObject(), SMESH.GetViewWindow(), Handle(), myActor, myBusy, myNbOkNodes, mySelector, mySMESHGUI, and updateButtons().

Referenced by Init().

{
  if (myBusy) return;
  myBusy = true;

  myNbOkNodes = 0;

  // hilight entered nodes
  if(myActor){
    if(SMDS_Mesh* aMesh = myActor->GetObject()->GetMesh()){
      Handle(SALOME_InteractiveObject) anIO = myActor->getIO();
           
      TColStd_MapOfInteger newIndices;
      
      QStringList aListId = theNewText.split(" ", QString::SkipEmptyParts);
      for (int i = 0; i < aListId.count(); i++) {
        if (const SMDS_MeshNode *aNode = aMesh->FindNode(aListId[i].toInt())) {
          newIndices.Add(aNode->GetID());
          myNbOkNodes++;
        }
      }

      mySelector->AddOrRemoveIndex(anIO,newIndices,false);
      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
        aViewWindow->highlight(anIO,true,true);
    }
  }

  myBusy = false;
  updateButtons();
}
void SMESHGUI_RemoveNodesDlg::SelectionIntoArgument ( ) [private, slot]

Definition at line 350 of file SMESHGUI_RemoveNodesDlg.cxx.

References SMESH.FindActorByEntry(), SMESH.GetMeshByIO(), SMESH.GetNameOfSelectedNodes(), GroupButtons, Handle(), myActor, myBusy, myEditCurrentArgument, myFilterDlg, myMesh, myNbOkNodes, mySelectionMgr, mySelector, and updateButtons().

Referenced by ActivateThisDialog(), Init(), and SetEditCurrentArgument().

{
  if (myBusy) return;                                  // busy
  if (myFilterDlg && myFilterDlg->isVisible()) return; // filter dlg active
  if (!GroupButtons->isEnabled()) return;              // inactive
    
  // clear

  myNbOkNodes = 0;
  myActor = 0;

  myBusy = true;
  myEditCurrentArgument->setText("");
  myBusy = false;

  // get selected mesh
  SALOME_ListIO aList;
  mySelectionMgr->selectedObjects(aList,SVTK_Viewer::Type());

  int nbSel = aList.Extent();
  if (nbSel == 1) {

    Handle(SALOME_InteractiveObject) anIO = aList.First();
    myMesh = SMESH::GetMeshByIO(anIO);

    if (!myMesh->_is_nil()) {

      myActor = SMESH::FindActorByEntry(anIO->getEntry());
      if (myActor) {

        // get selected nodes
        QString aString = "";
        int nbNodes = SMESH::GetNameOfSelectedNodes(mySelector,anIO,aString);
        if (nbNodes > 0) {
          myBusy = true;
          myEditCurrentArgument->setText(aString);
          myBusy = false;
          
          // OK
          
          myNbOkNodes = nbNodes;
        } // if (nbNodes > 0)
      } // if (myActor)
    } // if (!myMesh->_is_nil())
  } // if (nbSel == 1)

  updateButtons();        
}
void SMESHGUI_RemoveNodesDlg::SetEditCurrentArgument ( ) [private, slot]

Definition at line 403 of file SMESHGUI_RemoveNodesDlg.cxx.

References LineEditC1A1, myConstructorId, myEditCurrentArgument, SelectButtonC1A1, and SelectionIntoArgument().

Referenced by Init().

{
  QPushButton* send = (QPushButton*)sender();
  switch (myConstructorId) {
  case 0: /* default constructor */
    {
      if(send == SelectButtonC1A1) {
        LineEditC1A1->setFocus();
        myEditCurrentArgument = LineEditC1A1;
      }
      SelectionIntoArgument();
      break;
    }
  }
}
void SMESHGUI_RemoveNodesDlg::setFilters ( ) [private, slot]

Definition at line 506 of file SMESHGUI_RemoveNodesDlg.cxx.

References LineEditC1A1, myFilterDlg, myMesh, mySMESHGUI, SMESH.NODE, SMESHGUI_FilterDlg.SetMesh(), SMESHGUI_FilterDlg.SetSelection(), and SMESHGUI_FilterDlg.SetSourceWg().

{
  if(myMesh->_is_nil()) {
    SUIT_MessageBox::critical(this,
                              tr("SMESH_ERROR"),
                              tr("NO_MESH_SELECTED"));
   return;
  }
  if ( !myFilterDlg )
    myFilterDlg = new SMESHGUI_FilterDlg( mySMESHGUI, SMESH::NODE );

  myFilterDlg->SetSelection();
  myFilterDlg->SetMesh( myMesh );
  myFilterDlg->SetSourceWg( LineEditC1A1 );

  myFilterDlg->show();
}
void SMESHGUI_RemoveNodesDlg::updateButtons ( ) [private, slot]

Definition at line 528 of file SMESHGUI_RemoveNodesDlg.cxx.

References buttonApply, buttonOk, and myNbOkNodes.

Referenced by onTextChange(), and SelectionIntoArgument().

{
  buttonOk->setEnabled(myNbOkNodes > 0);
  buttonApply->setEnabled(myNbOkNodes > 0);
}

Field Documentation

QPushButton* SMESHGUI_RemoveNodesDlg.buttonApply [private]

Definition at line 88 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), and updateButtons().

QPushButton* SMESHGUI_RemoveNodesDlg.buttonCancel [private]

Definition at line 87 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init().

QPushButton* SMESHGUI_RemoveNodesDlg.buttonHelp [private]

Definition at line 89 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init().

QPushButton* SMESHGUI_RemoveNodesDlg.buttonOk [private]

Definition at line 86 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), and updateButtons().

QRadioButton* SMESHGUI_RemoveNodesDlg.Constructor1 [private]

Definition at line 84 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init().

Definition at line 90 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by ActivateThisDialog(), and DeactivateActiveDialog().

Definition at line 93 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), SetEditCurrentArgument(), and setFilters().

Definition at line 81 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), onTextChange(), and SelectionIntoArgument().

Definition at line 79 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), onTextChange(), and SelectionIntoArgument().

Definition at line 76 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), and SetEditCurrentArgument().

Definition at line 95 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by ClickOnHelp().

SMESH::SMESH_Mesh_var SMESHGUI_RemoveNodesDlg.myMesh [private]

Definition at line 80 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by ClickOnApply(), SelectionIntoArgument(), and setFilters().

LightApp_SelectionMgr* SMESHGUI_RemoveNodesDlg.mySelectionMgr [private]

Definition at line 71 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by ClickOnCancel(), Init(), and SelectionIntoArgument().

SVTK_Selector* SMESHGUI_RemoveNodesDlg.mySelector [private]

Definition at line 72 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by ClickOnApply(), onTextChange(), and SelectionIntoArgument().

Definition at line 92 of file SMESHGUI_RemoveNodesDlg.h.

Referenced by Init(), and SetEditCurrentArgument().

Definition at line 91 of file SMESHGUI_RemoveNodesDlg.h.

Copyright © 2007-2011 CEA/DEN, EDF R&D, OPEN CASCADE
Copyright © 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS