mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-01-14 19:15:33 +05:00
1642 lines
60 KiB
C++
1642 lines
60 KiB
C++
// Copyright (C) 2011-2024 CEA, EDF
|
|
//
|
|
// This library is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU Lesser General Public
|
|
// License as published by the Free Software Foundation; either
|
|
// version 2.1 of the License, or (at your option) any later version.
|
|
//
|
|
// This library is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// Lesser General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Lesser General Public
|
|
// License along with this library; if not, write to the Free Software
|
|
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//
|
|
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
|
|
//
|
|
|
|
#include "SMESHGUI_HomardBoundaryDlg.h"
|
|
|
|
#include "SMESHGUI_HomardAdaptDlg.h"
|
|
#include "SMESHGUI_HomardListGroup.h"
|
|
|
|
#include "SMESHGUI_Utils.h"
|
|
|
|
#include <QFileDialog>
|
|
#include <QMessageBox>
|
|
|
|
#include "SalomeApp_Tools.h"
|
|
#include "SMESHGUI_HomardUtils.h"
|
|
#include <utilities.h>
|
|
|
|
#include <SUIT_Desktop.h>
|
|
#include <SUIT_MessageBox.h>
|
|
#include <SUIT_ResourceMgr.h>
|
|
#include <SUIT_Session.h>
|
|
#include <SUIT_ViewManager.h>
|
|
|
|
#include "math.h"
|
|
#define PI 3.141592653589793
|
|
|
|
using namespace std;
|
|
|
|
// ----------------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryAn::SMESH_CreateBoundaryAn(SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName) :
|
|
/* Constructs a SMESH_CreateBoundaryAn
|
|
appele pour une vraie creation
|
|
initialise un cylindre et non une sphere
|
|
*/
|
|
QDialog(0), SMESH_Ui_CreateBoundaryAn(),
|
|
_parent(parent),
|
|
_Name (""),
|
|
_Type(1),
|
|
_BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
|
|
_BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
|
|
_Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
|
|
_Xmin(0), _Xmax(0), _Xincr(0), _Ymin(0), _Ymax(0), _Yincr(0), _Zmin(0), _Zmax(0), _Zincr(0), _DMax(0),
|
|
_BoundaryAnXcone1(0), _BoundaryAnYcone1(0), _BoundaryAnZcone1(0), _BoundaryAnRayon1(0),
|
|
_BoundaryAnXcone2(0), _BoundaryAnYcone2(0), _BoundaryAnZcone2(0), _BoundaryAnRayon2(0),
|
|
_BoundaryAnXaxisCone(0), _BoundaryAnYaxisCone(0), _BoundaryAnZaxisCone(0),
|
|
_BoundaryAnXorigCone(0), _BoundaryAnYorigCone(0), _BoundaryAnZorigCone(0),
|
|
_BoundaryAngle(0),
|
|
_BoundaryAnToreXcentre(0), _BoundaryAnToreYcentre(0), _BoundaryAnToreZcentre(0),
|
|
_BoundaryAnToreXaxe(0), _BoundaryAnToreYaxe(0), _BoundaryAnToreZaxe(0),
|
|
_BoundaryAnToreRRev(0), _BoundaryAnToreRPri(0),
|
|
Chgt (false)
|
|
{
|
|
MESSAGE("Constructeur") ;
|
|
myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
|
|
setupUi(this);
|
|
setModal(modal);
|
|
|
|
// Gestion des icones
|
|
QPixmap pix ;
|
|
QIcon IS ;
|
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
|
pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
|
|
IS=QIcon(pix);
|
|
RBSphere->setIcon(IS);
|
|
pix = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
|
|
IS=QIcon(pix);
|
|
RBCylindre->setIcon(IS);
|
|
pix = resMgr->loadPixmap( "HOMARD", "cone.png" );
|
|
IS=QIcon(pix);
|
|
RBCone->setIcon(IS);
|
|
pix = resMgr->loadPixmap( "HOMARD", "conepointvector.png" );
|
|
IS=QIcon(pix);
|
|
RB_Def_angle->setIcon(IS);
|
|
pix = resMgr->loadPixmap( "HOMARD", "conedxyz.png" );
|
|
IS=QIcon(pix);
|
|
RB_Def_radius->setIcon(IS);
|
|
pix = resMgr->loadPixmap( "HOMARD", "toruspointvector.png" );
|
|
IS=QIcon(pix);
|
|
RBTore->setIcon(IS);
|
|
|
|
InitConnect( );
|
|
|
|
SetNewName() ;
|
|
InitValBoundaryAn(); // Cherche les valeurs de la boite englobante le maillage
|
|
InitMinMax(); // Initialise les bornes des boutons
|
|
SetCylinder(); // Propose un cylindre en premier choix
|
|
}
|
|
|
|
// -------------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryAn::SMESH_CreateBoundaryAn(SMESHGUI_HomardAdaptDlg* parent,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName):
|
|
QDialog(0), SMESH_Ui_CreateBoundaryAn(),
|
|
_parent(parent),
|
|
_Name (""),
|
|
_Type(1),
|
|
_BoundaryAnXcentre(0), _BoundaryAnYcentre(0), _BoundaryAnZcentre(0), _BoundaryAnRayon(0),
|
|
_BoundaryAnXaxis(0), _BoundaryAnYaxis(0), _BoundaryAnZaxis(0),
|
|
// Pour affichage lors de l edition d une BoundaryAn sans nom de Cas
|
|
_Xcentre(0), _Ycentre(0), _Zcentre(0), _Rayon(0),
|
|
_Xmin(1), _Xmax(1), _Xincr(1), _Ymin(1), _Ymax(1), _Yincr(1), _Zmin(1), _Zmax(1), _Zincr(1), _DMax(1),
|
|
Chgt (false)
|
|
{
|
|
// MESSAGE("Debut de SMESH_CreateBoundaryAn")
|
|
myHomardGen = SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0);
|
|
setupUi(this);
|
|
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
|
|
QPixmap pix = resMgr->loadPixmap( "HOMARD", "spherepoint.png" );
|
|
QIcon IS=QIcon(pix);
|
|
RBSphere->setIcon(IS);
|
|
QPixmap pix2 = resMgr->loadPixmap( "HOMARD", "cylinderpointvector.png" );
|
|
QIcon IS2=QIcon(pix2);
|
|
RBCylindre->setIcon(IS2);
|
|
QPixmap pix3 = resMgr->loadPixmap( "HOMARD", "cone.png" );
|
|
QIcon IS3=QIcon(pix3);
|
|
RBCone->setIcon(IS3);
|
|
QPixmap pix4 = resMgr->loadPixmap( "HOMARD", "conepointvector.png" );
|
|
QIcon IS4=QIcon(pix4);
|
|
RB_Def_angle->setIcon(IS4);
|
|
QPixmap pix5 = resMgr->loadPixmap( "HOMARD", "conedxyz.png" );
|
|
QIcon IS5=QIcon(pix5);
|
|
RB_Def_radius->setIcon(IS5);
|
|
setModal(true);
|
|
InitConnect();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryAn::~SMESH_CreateBoundaryAn()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
// no need to delete child widgets, Qt does it all for us
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::InitConnect()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
connect( RBCylindre, SIGNAL(clicked()) , this, SLOT(SetCylinder()) ) ;
|
|
connect( RBSphere, SIGNAL(clicked()) , this, SLOT(SetSphere()) ) ;
|
|
connect( RBCone, SIGNAL(clicked()) , this, SLOT(SetCone()) ) ;
|
|
connect( RB_Def_radius, SIGNAL(clicked()) , this, SLOT(SetConeR()) );
|
|
connect( RB_Def_angle, SIGNAL(clicked()) , this, SLOT(SetConeA()) );
|
|
connect( RBTore, SIGNAL(clicked()) , this, SLOT(SetTore()) ) ;
|
|
connect( buttonOk, SIGNAL( pressed() ), this, SLOT( PushOnOK() ) );
|
|
connect( buttonApply, SIGNAL( pressed() ), this, SLOT( PushOnApply() ) );
|
|
connect( buttonCancel, SIGNAL( pressed() ), this, SLOT( close() ) );
|
|
connect( buttonHelp, SIGNAL( pressed() ), this, SLOT( PushOnHelp() ) );
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::InitValBoundaryAn()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
//
|
|
// 1. Les coordonnees extremes du maillage
|
|
//
|
|
SMESHHOMARD::HOMARD_Cas_var aCas = myHomardGen->GetCase();
|
|
SMESHHOMARD::extrema_var MesExtremes = aCas->GetBoundingBox();
|
|
int num = MesExtremes->length() ;
|
|
ASSERT(num == 10);
|
|
_Xmin=MesExtremes[0]; _Xmax=MesExtremes[1]; _Xincr=MesExtremes[2];
|
|
_Ymin=MesExtremes[3]; _Ymax=MesExtremes[4]; _Yincr=MesExtremes[5];
|
|
_Zmin=MesExtremes[6]; _Zmax=MesExtremes[7]; _Zincr=MesExtremes[8];
|
|
_DMax=MesExtremes[9];
|
|
MESSAGE ("_Xmin : " << _Xmin << " _Xmax : " << _Xmax << " _Xincr : " << _Xincr ) ;
|
|
MESSAGE ("_Ymin : " << _Ymin << " _Ymax : " << _Ymax << " _Yincr : " << _Yincr ) ;
|
|
MESSAGE ("_Zmin : " << _Zmin << " _Zmax : " << _Zmax << " _Zincr : " << _Zincr) ;
|
|
MESSAGE ("_DMax : " << _DMax);
|
|
|
|
// 2. Caracteristiques des frontieres
|
|
// en X
|
|
_Xcentre=(_Xmin + _Xmax)/2.;
|
|
// en Y
|
|
_Ycentre=(_Ymin + _Ymax)/2.;
|
|
// en Z
|
|
_Zcentre=(_Zmin + _Zmax)/2.;
|
|
// Rayon
|
|
_Rayon= _DMax/4.;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::InitMinMax()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
// Cylindre
|
|
// . X du centre
|
|
SpinBox_Xcent->setValue(_Xcentre);
|
|
SpinBox_Xcent->setSingleStep(_Xincr);
|
|
// . Y du centre
|
|
SpinBox_Ycent->setValue(_Ycentre);
|
|
SpinBox_Ycent->setSingleStep(_Yincr);
|
|
// . Z du centre
|
|
SpinBox_Zcent->setValue(_Zcentre);
|
|
SpinBox_Zcent->setSingleStep(_Zincr);
|
|
// . X de l'axe
|
|
SpinBox_Xaxis->setValue(0.);
|
|
SpinBox_Xaxis->setSingleStep(0.1);
|
|
// . Y de l'axe
|
|
SpinBox_Yaxis->setValue(0.);
|
|
SpinBox_Yaxis->setSingleStep(0.1);
|
|
// . Z de l'axe
|
|
SpinBox_Zaxis->setValue(1.);
|
|
SpinBox_Zaxis->setSingleStep(0.1);
|
|
// . Rayon
|
|
SpinBox_Radius->setValue(_Rayon);
|
|
SpinBox_Radius->setSingleStep(_Rayon/10.);
|
|
|
|
// Sphere
|
|
// . X du centre
|
|
SpinBox_Xcentre->setValue(_Xcentre);
|
|
SpinBox_Xcentre->setSingleStep(_Xincr);
|
|
// . Y du centre
|
|
SpinBox_Ycentre->setValue(_Ycentre);
|
|
SpinBox_Ycentre->setSingleStep(_Yincr);
|
|
// . Z du centre
|
|
SpinBox_Zcentre->setValue(_Zcentre);
|
|
SpinBox_Zcentre->setSingleStep(_Zincr);
|
|
// . Rayon
|
|
SpinBox_Rayon->setValue(_Rayon);
|
|
SpinBox_Rayon->setSingleStep(_Rayon/10.);
|
|
|
|
// Cone en rayons
|
|
// . X des centres
|
|
_BoundaryAnXcone1 = _Xcentre ;
|
|
SpinBox_Cone_X1->setSingleStep(_Xincr);
|
|
_BoundaryAnXcone2 = _Xcentre ;
|
|
SpinBox_Cone_X2->setSingleStep(_Xincr);
|
|
// . Y des centres
|
|
_BoundaryAnYcone1 = _Ycentre ;
|
|
SpinBox_Cone_Y1->setSingleStep(_Yincr);
|
|
_BoundaryAnYcone2 = _Ycentre ;
|
|
SpinBox_Cone_Y2->setSingleStep(_Yincr);
|
|
// . Z des centres
|
|
_BoundaryAnZcone1 = _Zmin ;
|
|
SpinBox_Cone_Z1->setSingleStep(_Zincr);
|
|
_BoundaryAnZcone2 = _Zmax ;
|
|
SpinBox_Cone_Z2->setSingleStep(_Zincr);
|
|
// . Rayons/Angles
|
|
_BoundaryAnRayon1 = 0. ;
|
|
_BoundaryAnRayon2 = _Rayon ;
|
|
SpinBox_Cone_V2->setSingleStep(_Rayon/10.);
|
|
|
|
// Cone en angle
|
|
convertRayonAngle(1) ;
|
|
SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
|
|
SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
|
|
SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
|
|
SpinBox_Cone_V1->setValue(_BoundaryAngle);
|
|
SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
|
|
SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
|
|
SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
|
|
|
|
// Tore
|
|
// . X du centre
|
|
SpinBoxToreXcent->setValue(_Xcentre);
|
|
SpinBoxToreXcent->setSingleStep(_Xincr);
|
|
// . Y du centre
|
|
SpinBoxToreYcent->setValue(_Ycentre);
|
|
SpinBoxToreYcent->setSingleStep(_Yincr);
|
|
// . Z du centre
|
|
SpinBoxToreZcent->setValue(_Zcentre);
|
|
SpinBoxToreZcent->setSingleStep(_Zincr);
|
|
// . X de l'axe
|
|
SpinBoxToreXaxe->setValue(0.);
|
|
SpinBoxToreXaxe->setSingleStep(0.1);
|
|
// . Y de l'axe
|
|
SpinBoxToreYaxe->setValue(0.);
|
|
SpinBoxToreYaxe->setSingleStep(0.1);
|
|
// . Z de l'axe
|
|
SpinBoxToreZaxe->setValue(1.);
|
|
SpinBoxToreZaxe->setSingleStep(0.1);
|
|
// . Rayon de revolution
|
|
SpinBoxToreRRev->setValue(_Rayon);
|
|
SpinBoxToreRRev->setSingleStep(_Rayon/10.);
|
|
// . Rayon primaire
|
|
SpinBoxToreRPri->setValue(_Rayon/3.);
|
|
SpinBoxToreRPri->setSingleStep(_Rayon/20.);
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
bool SMESH_CreateBoundaryAn::PushOnApply()
|
|
// ------------------------------------------------------------------------
|
|
// Appele lorsque l'un des boutons Ok ou Apply est presse
|
|
//
|
|
{
|
|
if (LEName->text().trimmed()=="")
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_BOUN_NAME") );
|
|
return false;
|
|
}
|
|
|
|
switch (_Type)
|
|
{
|
|
case 1 : // il s agit d un cylindre
|
|
{
|
|
if ((_BoundaryAnXcentre != SpinBox_Xcent->value()) ||
|
|
(_BoundaryAnYcentre != SpinBox_Ycent->value()) ||
|
|
(_BoundaryAnZcentre != SpinBox_Zcent->value()) ||
|
|
(_BoundaryAnRayon != SpinBox_Radius->value()) ||
|
|
(_BoundaryAnXaxis != SpinBox_Xaxis->value()) ||
|
|
(_BoundaryAnYaxis != SpinBox_Yaxis->value()) ||
|
|
(_BoundaryAnZaxis != SpinBox_Zaxis->value()) )
|
|
{
|
|
Chgt = true;
|
|
_BoundaryAnXaxis= SpinBox_Xaxis->value();
|
|
_BoundaryAnYaxis= SpinBox_Yaxis->value();
|
|
_BoundaryAnZaxis= SpinBox_Zaxis->value();
|
|
_BoundaryAnXcentre=SpinBox_Xcent->value();
|
|
_BoundaryAnYcentre=SpinBox_Ycent->value();
|
|
_BoundaryAnZcentre=SpinBox_Zcent->value();
|
|
_BoundaryAnRayon=SpinBox_Radius->value();
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 2 : // il s agit d une sphere
|
|
{
|
|
if ((_BoundaryAnXcentre != SpinBox_Xcentre->value()) ||
|
|
(_BoundaryAnYcentre != SpinBox_Ycentre->value()) ||
|
|
(_BoundaryAnZcentre != SpinBox_Zcentre->value()) ||
|
|
(_BoundaryAnRayon != SpinBox_Rayon->value()) )
|
|
{
|
|
Chgt = true;
|
|
_BoundaryAnXcentre=SpinBox_Xcentre->value();
|
|
_BoundaryAnYcentre=SpinBox_Ycentre->value();
|
|
_BoundaryAnZcentre=SpinBox_Zcentre->value();
|
|
_BoundaryAnRayon=SpinBox_Rayon->value();
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 3 : // il s agit d un cone defini par un axe et un angle
|
|
{
|
|
if ((_BoundaryAnXaxisCone != SpinBox_Cone_X1->value()) ||
|
|
(_BoundaryAnYaxisCone != SpinBox_Cone_Y1->value()) ||
|
|
(_BoundaryAnZaxisCone != SpinBox_Cone_Z1->value()) ||
|
|
(_BoundaryAnXorigCone != SpinBox_Cone_X2->value()) ||
|
|
(_BoundaryAnYorigCone != SpinBox_Cone_Y2->value()) ||
|
|
(_BoundaryAnZorigCone != SpinBox_Cone_Z2->value()) ||
|
|
(_BoundaryAngle != SpinBox_Cone_V1->value()) )
|
|
{
|
|
Chgt = true;
|
|
_BoundaryAnXaxisCone = SpinBox_Cone_X1->value() ;
|
|
_BoundaryAnYaxisCone = SpinBox_Cone_Y1->value() ;
|
|
_BoundaryAnZaxisCone = SpinBox_Cone_Z1->value() ;
|
|
_BoundaryAnXorigCone = SpinBox_Cone_X2->value() ;
|
|
_BoundaryAnYorigCone = SpinBox_Cone_Y2->value() ;
|
|
_BoundaryAnZorigCone = SpinBox_Cone_Z2->value() ;
|
|
_BoundaryAngle = SpinBox_Cone_V1->value() ;
|
|
}
|
|
break;
|
|
}
|
|
|
|
case 4 : // il s agit d un cone defini par les 2 rayons
|
|
{
|
|
if ((_BoundaryAnXcone1 != SpinBox_Cone_X1->value()) ||
|
|
(_BoundaryAnYcone1 != SpinBox_Cone_Y1->value()) ||
|
|
(_BoundaryAnZcone1 != SpinBox_Cone_Z1->value()) ||
|
|
(_BoundaryAnRayon1 != SpinBox_Cone_V1->value()) ||
|
|
(_BoundaryAnXcone2 != SpinBox_Cone_X2->value()) ||
|
|
(_BoundaryAnYcone2 != SpinBox_Cone_Y2->value()) ||
|
|
(_BoundaryAnZcone2 != SpinBox_Cone_Z2->value()) ||
|
|
(_BoundaryAnRayon2 != SpinBox_Cone_V2->value()) )
|
|
{
|
|
Chgt = true;
|
|
_BoundaryAnXcone1 = SpinBox_Cone_X1->value() ;
|
|
_BoundaryAnYcone1 = SpinBox_Cone_Y1->value() ;
|
|
_BoundaryAnZcone1 = SpinBox_Cone_Z1->value() ;
|
|
_BoundaryAnRayon1 = SpinBox_Cone_V1->value() ;
|
|
_BoundaryAnXcone2 = SpinBox_Cone_X2->value() ;
|
|
_BoundaryAnYcone2 = SpinBox_Cone_Y2->value() ;
|
|
_BoundaryAnZcone2 = SpinBox_Cone_Z2->value() ;
|
|
_BoundaryAnRayon2 = SpinBox_Cone_V2->value() ;
|
|
}
|
|
break;
|
|
}
|
|
case 5 : // il s agit d un tore
|
|
{
|
|
if ((_BoundaryAnToreXcentre != SpinBoxToreXcent->value()) ||
|
|
(_BoundaryAnToreYcentre != SpinBoxToreYcent->value()) ||
|
|
(_BoundaryAnToreZcentre != SpinBoxToreZcent->value()) ||
|
|
(_BoundaryAnToreRRev != SpinBoxToreRRev->value()) ||
|
|
(_BoundaryAnToreRPri != SpinBoxToreRPri->value()) ||
|
|
(_BoundaryAnToreXaxe != SpinBoxToreXaxe->value()) ||
|
|
(_BoundaryAnToreYaxe != SpinBoxToreYaxe->value()) ||
|
|
(_BoundaryAnToreZaxe != SpinBoxToreZaxe->value()) )
|
|
{
|
|
Chgt = true;
|
|
_BoundaryAnToreXcentre= SpinBoxToreXcent->value();
|
|
_BoundaryAnToreYcentre= SpinBoxToreYcent->value();
|
|
_BoundaryAnToreZcentre= SpinBoxToreZcent->value();
|
|
_BoundaryAnToreRRev=SpinBoxToreRRev->value();
|
|
_BoundaryAnToreRPri=SpinBoxToreRPri->value();
|
|
_BoundaryAnToreXaxe=SpinBoxToreXaxe->value();
|
|
_BoundaryAnToreYaxe=SpinBoxToreYaxe->value();
|
|
_BoundaryAnToreZaxe=SpinBoxToreZaxe->value();
|
|
}
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
// Controles
|
|
// L'axe pour un cylindre
|
|
if ( _Type == 5 )
|
|
{
|
|
double daux = _BoundaryAnXaxis*_BoundaryAnXaxis + _BoundaryAnYaxis*_BoundaryAnYaxis + _BoundaryAnZaxis*_BoundaryAnZaxis ;
|
|
if ( daux < 0.0000001 )
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_AXE") );
|
|
return false;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Création ou mise à jour de la frontière
|
|
//
|
|
bool bOK = CreateOrUpdateBoundaryAn();
|
|
|
|
//if ( bOK ) { HOMARD_UTILS::updateObjBrowser() ; }
|
|
|
|
return bOK;
|
|
|
|
}
|
|
// ---------------------------------------------------
|
|
bool SMESH_CreateBoundaryAn::CreateOrUpdateBoundaryAn()
|
|
//----------------------------------------------------
|
|
// Creation de l'objet boundary
|
|
{
|
|
MESSAGE("Debut de CreateOrUpdateBoundaryAn avec _Type ="<<_Type<<", _Name ="<<_Name.toStdString().c_str()<<" et LEName ="<<LEName->text().trimmed().toStdString().c_str());
|
|
//
|
|
if (_Name != LEName->text().trimmed())
|
|
{
|
|
_Name = LEName->text().trimmed() ;
|
|
try
|
|
{
|
|
switch (_Type)
|
|
{
|
|
case 1 : // il s agit d un cylindre
|
|
{ aBoundaryAn = myHomardGen->CreateBoundaryCylinder(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
|
|
break;
|
|
}
|
|
case 2 : // il s agit d une sphere
|
|
{ aBoundaryAn = myHomardGen->CreateBoundarySphere(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
|
|
break;
|
|
}
|
|
case 3 : // il s agit d un cone defini par un axe et un angle
|
|
{ aBoundaryAn = myHomardGen->CreateBoundaryConeA(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXaxisCone, _BoundaryAnYaxisCone, _BoundaryAnZaxisCone, _BoundaryAngle, \
|
|
_BoundaryAnXorigCone, _BoundaryAnYorigCone, _BoundaryAnYorigCone);
|
|
break;
|
|
}
|
|
case 4 : // il s agit d un cone defini par les 2 rayons
|
|
{ aBoundaryAn = myHomardGen->CreateBoundaryConeR(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXcone1, _BoundaryAnYcone1, _BoundaryAnZcone1, _BoundaryAnRayon1, \
|
|
_BoundaryAnXcone2, _BoundaryAnYcone2, _BoundaryAnZcone2, _BoundaryAnRayon2);
|
|
break;
|
|
}
|
|
case 5 : // il s agit d un tore
|
|
{ aBoundaryAn = myHomardGen->CreateBoundaryTorus(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnToreXcentre, _BoundaryAnToreYcentre, _BoundaryAnToreZcentre, _BoundaryAnToreXaxe, _BoundaryAnToreYaxe, _BoundaryAnToreZaxe, _BoundaryAnToreRRev, _BoundaryAnToreRPri );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
catch( SALOME::SALOME_Exception& S_ex )
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr(CORBA::string_dup(S_ex.details.text)) );
|
|
return false ;
|
|
}
|
|
_parent->AddBoundaryAn(_Name);
|
|
|
|
return true;
|
|
}
|
|
else {
|
|
QMessageBox::warning( 0, QObject::tr("HOM_WARNING"),
|
|
QObject::tr("HOM_SELECT_OBJECT_4") );
|
|
return false ;
|
|
}
|
|
MESSAGE("Fin de CreateOrUpdateBoundaryAn");
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::PushOnOK()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
if (PushOnApply()) this->close();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::PushOnHelp()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESH::ShowHelpFile(QString("homard_create_boundary.html#analytical-boundary"));
|
|
}
|
|
|
|
// -----------------------------------
|
|
void SMESH_CreateBoundaryAn::SetNewName()
|
|
// -----------------------------------
|
|
{
|
|
// Recherche d'un nom par defaut qui n'existe pas encore
|
|
|
|
SMESHHOMARD::listeBoundarys_var MyObjects = myHomardGen->GetAllBoundarysName();
|
|
int num = 0; QString aName="";
|
|
while (aName=="" )
|
|
{
|
|
aName.setNum(num+1) ;
|
|
aName.insert(0, QString("Boun_")) ;
|
|
for ( int i=0; i<MyObjects->length(); i++)
|
|
{
|
|
if ( aName == QString(MyObjects[i]))
|
|
{
|
|
num ++ ;
|
|
aName = "" ;
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
LEName->setText(aName);
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetCylinder()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetCylinder");
|
|
gBCylindre->setVisible(1);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(0);
|
|
//
|
|
_Type=1;
|
|
//
|
|
adjustSize();
|
|
// MESSAGE("Fin de SetCylinder")
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetSphere()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetSphere");
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(1);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(0);
|
|
//
|
|
_Type=2;
|
|
//
|
|
adjustSize();
|
|
// MESSAGE("Fin de SetSphere")
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetConeR()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetConeR");
|
|
//
|
|
// Stockage et conversion des valeurs si elles ont change
|
|
if ((_BoundaryAnXaxisCone != SpinBox_Cone_X1->value()) ||
|
|
(_BoundaryAnYaxisCone != SpinBox_Cone_Y1->value()) ||
|
|
(_BoundaryAnZaxisCone != SpinBox_Cone_Z1->value()) ||
|
|
(_BoundaryAnXorigCone != SpinBox_Cone_X2->value()) ||
|
|
(_BoundaryAnYorigCone != SpinBox_Cone_Y2->value()) ||
|
|
(_BoundaryAnZorigCone != SpinBox_Cone_Z2->value()) ||
|
|
(_BoundaryAngle != SpinBox_Cone_V1->value()) )
|
|
{
|
|
MESSAGE("Stockage et conversion");
|
|
_BoundaryAnXaxisCone = SpinBox_Cone_X1->value() ;
|
|
_BoundaryAnYaxisCone = SpinBox_Cone_Y1->value() ;
|
|
_BoundaryAnZaxisCone = SpinBox_Cone_Z1->value() ;
|
|
_BoundaryAnXorigCone = SpinBox_Cone_X2->value() ;
|
|
_BoundaryAnYorigCone = SpinBox_Cone_Y2->value() ;
|
|
_BoundaryAnZorigCone = SpinBox_Cone_Z2->value() ;
|
|
_BoundaryAngle = SpinBox_Cone_V1->value() ;
|
|
convertRayonAngle(-1) ;
|
|
}
|
|
//
|
|
_Type=4;
|
|
//
|
|
TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X centre 1", 0));
|
|
SpinBox_Cone_X1->setValue(_BoundaryAnXcone1);
|
|
TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y centre 1", 0));
|
|
SpinBox_Cone_Y1->setValue(_BoundaryAnYcone1);
|
|
TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z centre 1", 0));
|
|
SpinBox_Cone_Z1->setValue(_BoundaryAnZcone1);
|
|
//
|
|
TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Radius 1", 0));
|
|
SpinBox_Cone_V1->setSingleStep(_Rayon/10.);
|
|
SpinBox_Cone_V1->setMaximum(100000.*_DMax);
|
|
SpinBox_Cone_V1->setValue(_BoundaryAnRayon1);
|
|
//
|
|
TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre 2", 0));
|
|
SpinBox_Cone_X2->setValue(_BoundaryAnXcone2);
|
|
TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre 2", 0));
|
|
SpinBox_Cone_Y2->setValue(_BoundaryAnYcone2);
|
|
TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre 2", 0));
|
|
SpinBox_Cone_Z2->setValue(_BoundaryAnZcone2);
|
|
//
|
|
TLCone_V2->setVisible(1);
|
|
SpinBox_Cone_V2->setVisible(1);
|
|
TLCone_V2->setText(QApplication::translate("CreateBoundaryAn", "Radius 2", 0));
|
|
SpinBox_Cone_V2->setValue(_BoundaryAnRayon2);
|
|
//
|
|
// MESSAGE("Fin de SetConeR")
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetConeA()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetConeA");
|
|
// Stockage et conversion des valeurs si elles ont change
|
|
if ((_BoundaryAnXcone1 != SpinBox_Cone_X1->value()) ||
|
|
(_BoundaryAnYcone1 != SpinBox_Cone_Y1->value()) ||
|
|
(_BoundaryAnZcone1 != SpinBox_Cone_Z1->value()) ||
|
|
(_BoundaryAnRayon1 != SpinBox_Cone_V1->value()) ||
|
|
(_BoundaryAnXcone2 != SpinBox_Cone_X2->value()) ||
|
|
(_BoundaryAnYcone2 != SpinBox_Cone_Y2->value()) ||
|
|
(_BoundaryAnZcone2 != SpinBox_Cone_Z2->value()) ||
|
|
(_BoundaryAnRayon2 != SpinBox_Cone_V2->value()) )
|
|
{
|
|
MESSAGE("Stockage et conversion");
|
|
_BoundaryAnXcone1 = SpinBox_Cone_X1->value() ;
|
|
_BoundaryAnYcone1 = SpinBox_Cone_Y1->value() ;
|
|
_BoundaryAnZcone1 = SpinBox_Cone_Z1->value() ;
|
|
_BoundaryAnRayon1 = SpinBox_Cone_V1->value() ;
|
|
_BoundaryAnXcone2 = SpinBox_Cone_X2->value() ;
|
|
_BoundaryAnYcone2 = SpinBox_Cone_Y2->value() ;
|
|
_BoundaryAnZcone2 = SpinBox_Cone_Z2->value() ;
|
|
_BoundaryAnRayon2 = SpinBox_Cone_V2->value() ;
|
|
convertRayonAngle(1) ;
|
|
}
|
|
//
|
|
_Type=3;
|
|
//
|
|
TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X axis", 0));
|
|
SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
|
|
TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y axis", 0));
|
|
SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
|
|
TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z axis", 0));
|
|
SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
|
|
//
|
|
TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0));
|
|
SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
|
|
TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0));
|
|
SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
|
|
TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0));
|
|
SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
|
|
//
|
|
TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Angle", 0));
|
|
SpinBox_Cone_V1->setValue(_BoundaryAngle);
|
|
SpinBox_Cone_V1->setSingleStep(1.);
|
|
SpinBox_Cone_V1->setMaximum(90.);
|
|
//
|
|
TLCone_V2->setVisible(0);
|
|
SpinBox_Cone_V2->setVisible(0);
|
|
// MESSAGE("Fin de SetConeA")
|
|
}
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetCone()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetCone");
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(1);
|
|
gBTore->setVisible(0);
|
|
//
|
|
if ( RB_Def_radius->isChecked() )
|
|
{
|
|
SetConeR();
|
|
}
|
|
else
|
|
{
|
|
SetConeA();
|
|
}
|
|
//
|
|
adjustSize();
|
|
// MESSAGE("Fin de SetCone")
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::SetTore()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
MESSAGE("Debut de SetTore");
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(1);
|
|
//
|
|
_Type=5;
|
|
//
|
|
adjustSize();
|
|
// MESSAGE("Fin de SetTore")
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryAn::convertRayonAngle(int option)
|
|
// ------------------------------------------------------------------------
|
|
// Conversion entre les deux formulations du cone :
|
|
// par deux rayons ou avec un axe et un angle.
|
|
// Voir sfcoi1 de HOMARD
|
|
{
|
|
MESSAGE("Debut de convertRayonAngle, option = "<<option);
|
|
//
|
|
// o
|
|
// ! .
|
|
// ! .
|
|
// RA! .
|
|
// ! o
|
|
// ! RB! .
|
|
// ! ! .
|
|
// A----------------B----------O
|
|
//
|
|
// Thales : RA/RB = AO/BO ==> BO = AB*RB/(RA-RB)
|
|
// Angle : tg(alpha) = RA/AO
|
|
//
|
|
double daux ;
|
|
// De rayon vers angle :
|
|
if ( option == 1 )
|
|
{
|
|
double xa, ya, za, ra ;
|
|
double xb, yb, zb, rb ;
|
|
// Positionnement de A vers B, avec RA>RB
|
|
if ( _BoundaryAnRayon1 > _BoundaryAnRayon2 )
|
|
{
|
|
xa = _BoundaryAnXcone1 ;
|
|
ya = _BoundaryAnYcone1 ;
|
|
za = _BoundaryAnZcone1 ;
|
|
ra = _BoundaryAnRayon1 ;
|
|
xb = _BoundaryAnXcone2 ;
|
|
yb = _BoundaryAnYcone2 ;
|
|
zb = _BoundaryAnZcone2 ;
|
|
rb = _BoundaryAnRayon2 ;
|
|
}
|
|
else
|
|
{
|
|
xa = _BoundaryAnXcone2 ;
|
|
ya = _BoundaryAnYcone2 ;
|
|
za = _BoundaryAnZcone2 ;
|
|
ra = _BoundaryAnRayon2 ;
|
|
xb = _BoundaryAnXcone1 ;
|
|
yb = _BoundaryAnYcone1 ;
|
|
zb = _BoundaryAnZcone1 ;
|
|
rb = _BoundaryAnRayon1 ;
|
|
}
|
|
// Axe : relie les deux centres, de A vers B. L'axe est normalise
|
|
_BoundaryAnXaxisCone = xb - xa ;
|
|
_BoundaryAnYaxisCone = yb - ya ;
|
|
_BoundaryAnZaxisCone = zb - za ;
|
|
daux = sqrt ( _BoundaryAnXaxisCone*_BoundaryAnXaxisCone + _BoundaryAnYaxisCone*_BoundaryAnYaxisCone + _BoundaryAnZaxisCone*_BoundaryAnZaxisCone ) ;
|
|
_BoundaryAnXaxisCone = _BoundaryAnXaxisCone/daux ;
|
|
_BoundaryAnYaxisCone = _BoundaryAnYaxisCone/daux ;
|
|
_BoundaryAnZaxisCone = _BoundaryAnZaxisCone/daux ;
|
|
// Origine
|
|
daux = daux * rb / (ra-rb) ;
|
|
_BoundaryAnXorigCone = xb + daux*_BoundaryAnXaxisCone ;
|
|
_BoundaryAnYorigCone = yb + daux*_BoundaryAnYaxisCone ;
|
|
_BoundaryAnZorigCone = zb + daux*_BoundaryAnZaxisCone ;
|
|
// Angle en degre
|
|
daux = ra / sqrt((_BoundaryAnXorigCone-xa)*(_BoundaryAnXorigCone-xa) + (_BoundaryAnYorigCone-ya)*(_BoundaryAnYorigCone-ya) + (_BoundaryAnZorigCone-za)*(_BoundaryAnZorigCone-za) ) ;
|
|
_BoundaryAngle = atan(daux)*180./PI ;
|
|
}
|
|
// D'angle vers rayon :
|
|
else
|
|
{
|
|
double xax, yax, zax ;
|
|
// L'axe est normalise
|
|
daux = sqrt ( _BoundaryAnXaxisCone*_BoundaryAnXaxisCone + _BoundaryAnYaxisCone*_BoundaryAnYaxisCone + _BoundaryAnZaxisCone*_BoundaryAnZaxisCone ) ;
|
|
xax = _BoundaryAnXaxisCone/daux ;
|
|
yax = _BoundaryAnYaxisCone/daux ;
|
|
zax = _BoundaryAnZaxisCone/daux ;
|
|
// Centre 1 : l'origine
|
|
_BoundaryAnXcone1 = _BoundaryAnXorigCone ;
|
|
_BoundaryAnYcone1 = _BoundaryAnYorigCone ;
|
|
_BoundaryAnZcone1 = _BoundaryAnZorigCone ;
|
|
// Rayon 1 : nul
|
|
_BoundaryAnRayon1 = 0. ;
|
|
// Centre 2 : l'origine decalee d'une longueur arbitraire le long de l'axe
|
|
_BoundaryAnXcone2 = _BoundaryAnXorigCone + _DMax*xax ;
|
|
_BoundaryAnYcone2 = _BoundaryAnYorigCone + _DMax*yax ;
|
|
_BoundaryAnZcone2 = _BoundaryAnZorigCone + _DMax*zax ;
|
|
// Rayon 2 : a calculer
|
|
_BoundaryAnRayon2 = _DMax*tan(_BoundaryAngle*PI/180.) ;
|
|
}
|
|
// MESSAGE("Fin de convertRayonAngle")
|
|
}
|
|
|
|
// -------------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryCAO::SMESH_CreateBoundaryCAO(SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName, QString aName)
|
|
// ---------------------------------------------------------------------------------
|
|
/* Constructs a SMESH_CreateBoundaryCAO */
|
|
:
|
|
QDialog(0), SMESH_Ui_CreateBoundaryCAO(),
|
|
_parent(parent), _aName(aName),
|
|
myHomardGen(SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0))
|
|
{
|
|
MESSAGE("Constructeur");
|
|
setupUi(this);
|
|
setModal(modal);
|
|
InitConnect();
|
|
|
|
if ( _aName == QString("") ) {SetNewName();};
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryCAO::~SMESH_CreateBoundaryCAO()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
// no need to delete child widgets, Qt does it all for us
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::InitConnect()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
connect( PushFichier, SIGNAL(pressed()), this, SLOT(SetCAOFile()));
|
|
connect( buttonOk, SIGNAL(pressed()), this, SLOT( PushOnOK()));
|
|
connect( buttonApply, SIGNAL(pressed()), this, SLOT( PushOnApply()));
|
|
connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
|
|
connect( buttonHelp, SIGNAL(pressed()), this, SLOT( PushOnHelp()));
|
|
connect( CBGroupe, SIGNAL(stateChanged(int)), this, SLOT( SetFiltrage()));
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
bool SMESH_CreateBoundaryCAO::PushOnApply()
|
|
// ------------------------------------------------------------------------
|
|
// Appele lorsque l'un des boutons Ok ou Apply est presse
|
|
//
|
|
{
|
|
// Verifications
|
|
|
|
QString aName=LEName->text().trimmed();
|
|
if (aName=="") {
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_BOUN_NAME") );
|
|
return false;
|
|
}
|
|
|
|
// La CAO
|
|
QString aCAOFile=LEFileName->text().trimmed();
|
|
if (aCAOFile ==QString(""))
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_BOUN_CAO") );
|
|
return false;
|
|
}
|
|
|
|
// Creation de l'objet CORBA si ce n'est pas deja fait sous le meme nom
|
|
if ( _aName != aName )
|
|
{
|
|
try
|
|
{
|
|
_aName=aName;
|
|
aBoundary=myHomardGen->CreateBoundaryCAO(CORBA::string_dup(_aName.toStdString().c_str()), aCAOFile.toStdString().c_str());
|
|
_parent->AddBoundaryCAO(_aName);
|
|
}
|
|
catch( SALOME::SALOME_Exception& S_ex )
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr(CORBA::string_dup(S_ex.details.text)) );
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Les groupes
|
|
AssocieLesGroupes();
|
|
|
|
//HOMARD_UTILS::updateObjBrowser();
|
|
return true;
|
|
}
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::PushOnOK()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
if (PushOnApply()) this->close();
|
|
if ( _parent ) { _parent->raise(); _parent->activateWindow(); };
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::PushOnHelp()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESH::ShowHelpFile(QString("homard_create_boundary.html#cao-boundary"));
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::AssocieLesGroupes()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
|
|
aSeqGroupe->length(_listeGroupesBoundary.size());
|
|
QStringList::const_iterator it;
|
|
int i=0;
|
|
for (it = _listeGroupesBoundary.constBegin(); it != _listeGroupesBoundary.constEnd(); it++)
|
|
aSeqGroupe[i++]=(*it).toStdString().c_str();
|
|
aBoundary->SetGroups(aSeqGroupe);
|
|
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::SetNewName()
|
|
// --------------------------------------------------
|
|
{
|
|
|
|
SMESHHOMARD::listeBoundarys_var MyObjects = myHomardGen->GetAllBoundarysName();
|
|
int num = 0; QString aName="";
|
|
while (aName == QString("") )
|
|
{
|
|
aName.setNum(num+1) ;
|
|
aName.insert(0, QString("Boun_")) ;
|
|
for ( int i=0; i<MyObjects->length(); i++)
|
|
{
|
|
if ( aName == QString(MyObjects[i]))
|
|
{
|
|
num ++ ;
|
|
aName = "" ;
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
LEName->setText(aName);
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::SetCAOFile()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
QString aCAOFile = SMESH_HOMARD_QT_COMMUN::PushNomFichier( false, QString("xao") );
|
|
if (!(aCAOFile.isEmpty())) LEFileName->setText(aCAOFile);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::setGroups (QStringList listGroup)
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
_listeGroupesBoundary = listGroup;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryCAO::SetFiltrage()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
if (!CBGroupe->isChecked()) return;
|
|
|
|
SMESH_CreateListGroupCAO *aDlg = new SMESH_CreateListGroupCAO
|
|
(this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
|
|
"Case_1", _listeGroupesBoundary);
|
|
aDlg->show();
|
|
}
|
|
|
|
// -------------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryDi::SMESH_CreateBoundaryDi(SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName, QString aName)
|
|
// ---------------------------------------------------------------------------------
|
|
/* Constructs a SMESH_CreateBoundaryDi */
|
|
:
|
|
QDialog(0), SMESH_Ui_CreateBoundaryDi(),
|
|
_parent(parent), _aName(aName),
|
|
myHomardGen(SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen0))
|
|
{
|
|
MESSAGE("Constructeur") ;
|
|
setupUi(this);
|
|
setModal(modal);
|
|
InitConnect();
|
|
|
|
if ( _aName == QString("") ) {SetNewName();};
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
SMESH_CreateBoundaryDi::~SMESH_CreateBoundaryDi()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
// no need to delete child widgets, Qt does it all for us
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::InitConnect()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
connect( PushFichier, SIGNAL(pressed()), this, SLOT(SetMeshFile()));
|
|
connect( buttonOk, SIGNAL(pressed()), this, SLOT( PushOnOK()));
|
|
connect( buttonApply, SIGNAL(pressed()), this, SLOT( PushOnApply()));
|
|
connect( buttonCancel, SIGNAL(pressed()), this, SLOT(close()));
|
|
connect( buttonHelp, SIGNAL(pressed()), this, SLOT( PushOnHelp()));
|
|
connect( CBGroupe, SIGNAL(stateChanged(int)), this, SLOT( SetFiltrage()));
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
bool SMESH_CreateBoundaryDi::PushOnApply()
|
|
// ------------------------------------------------------------------------
|
|
// Appele lorsque l'un des boutons Ok ou Apply est presse
|
|
//
|
|
{
|
|
// Verifications
|
|
|
|
QString aName=LEName->text().trimmed();
|
|
if (aName=="") {
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_BOUN_NAME") );
|
|
return false;
|
|
}
|
|
|
|
// Le maillage de la frontiere discrete
|
|
QString aMeshFile=LEFileName->text().trimmed();
|
|
if (aMeshFile ==QString(""))
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_BOUN_MESH") );
|
|
return false;
|
|
}
|
|
|
|
// Le nom du maillage de la frontiere discrete
|
|
QString aMeshName = SMESH_HOMARD_QT_COMMUN::LireNomMaillage(aMeshFile);
|
|
if (aMeshName == "" )
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr("HOM_MED_FILE_2") );
|
|
return false;
|
|
}
|
|
|
|
// Creation de l'objet CORBA si ce n'est pas deja fait sous le meme nom
|
|
if ( _aName != aName )
|
|
{
|
|
try
|
|
{
|
|
_aName=aName;
|
|
aBoundary=myHomardGen->CreateBoundaryDi(CORBA::string_dup(_aName.toStdString().c_str()), aMeshName.toStdString().c_str(), aMeshFile.toStdString().c_str());
|
|
_parent->AddBoundaryDi(_aName);
|
|
}
|
|
catch( SALOME::SALOME_Exception& S_ex )
|
|
{
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr(CORBA::string_dup(S_ex.details.text)) );
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// Les groupes
|
|
AssocieLesGroupes();
|
|
|
|
//HOMARD_UTILS::updateObjBrowser();
|
|
return true;
|
|
}
|
|
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::PushOnOK()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
if (PushOnApply()) this->close();
|
|
if ( _parent ) { _parent->raise(); _parent->activateWindow(); };
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::PushOnHelp()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESH::ShowHelpFile(QString("homard_create_boundary.html#discrete-boundary"));
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::AssocieLesGroupes()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::ListGroupType_var aSeqGroupe = new SMESHHOMARD::ListGroupType;
|
|
aSeqGroupe->length(_listeGroupesBoundary.size());
|
|
QStringList::const_iterator it;
|
|
int i=0;
|
|
for (it = _listeGroupesBoundary.constBegin(); it != _listeGroupesBoundary.constEnd(); it++)
|
|
aSeqGroupe[i++]=(*it).toStdString().c_str();
|
|
aBoundary->SetGroups(aSeqGroupe);
|
|
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::SetNewName()
|
|
// --------------------------------------------------
|
|
{
|
|
|
|
SMESHHOMARD::listeBoundarys_var MyObjects = myHomardGen->GetAllBoundarysName();
|
|
int num = 0; QString aName="";
|
|
while (aName == QString("") )
|
|
{
|
|
aName.setNum(num+1) ;
|
|
aName.insert(0, QString("Boun_")) ;
|
|
for ( int i=0; i<MyObjects->length(); i++)
|
|
{
|
|
if ( aName == QString(MyObjects[i]))
|
|
{
|
|
num ++ ;
|
|
aName = "" ;
|
|
break ;
|
|
}
|
|
}
|
|
}
|
|
LEName->setText(aName);
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::SetMeshFile()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
QString aMeshFile = SMESH_HOMARD_QT_COMMUN::PushNomFichier( false, QString("med") );
|
|
if (!(aMeshFile.isEmpty())) LEFileName->setText(aMeshFile);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::setGroups (QStringList listGroup)
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
_listeGroupesBoundary = listGroup;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_CreateBoundaryDi::SetFiltrage()
|
|
// // ------------------------------------------------------------------------
|
|
{
|
|
if (!CBGroupe->isChecked()) return;
|
|
|
|
SMESH_CreateListGroup *aDlg = new SMESH_CreateListGroup
|
|
(this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
|
|
"Case_1", _listeGroupesBoundary);
|
|
aDlg->show();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------
|
|
SMESH_EditBoundaryAn::SMESH_EditBoundaryAn( SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName, QString Name ):
|
|
// ------------------------------------------------------------------------
|
|
/* Constructs a SMESH_EditBoundaryAn
|
|
herite de SMESH_CreateBoundaryAn
|
|
*/
|
|
SMESH_CreateBoundaryAn(parent, myHomardGen0, caseName)
|
|
{
|
|
MESSAGE("Debut de SMESH_EditBoundaryAn pour " << Name.toStdString().c_str());
|
|
setWindowTitle(QObject::tr("HOM_BOUN_A_EDIT_WINDOW_TITLE"));
|
|
_Name=Name;
|
|
aBoundaryAn = myHomardGen->GetBoundary(_Name.toStdString().c_str());
|
|
InitValEdit();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
SMESH_EditBoundaryAn::~SMESH_EditBoundaryAn()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
// no need to delete child widgets, Qt does it all for us
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValEdit()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
LEName->setText(_Name);
|
|
LEName->setReadOnly(true);
|
|
_Type = aBoundaryAn->GetType();
|
|
MESSAGE("_Type : "<<_Type);
|
|
InitValBoundaryAnLimit();
|
|
InitValBoundaryAn();
|
|
switch (_Type)
|
|
{
|
|
case 1 : // il s agit d un cylindre
|
|
{
|
|
InitValBoundaryAnCylindre();
|
|
SetCylinder();
|
|
break;
|
|
}
|
|
case 2: // il s agit d une sphere
|
|
{
|
|
InitValBoundaryAnSphere();
|
|
SetSphere();
|
|
break;
|
|
}
|
|
case 3: // il s agit d un cone defini par un axe et un angle
|
|
{
|
|
InitValBoundaryAnConeA();
|
|
SetConeA();
|
|
break;
|
|
}
|
|
case 4: // il s agit d un cone defini par les 2 rayons
|
|
{
|
|
InitValBoundaryAnConeR();
|
|
SetConeR();
|
|
break;
|
|
}
|
|
case 5: // il s agit d un tore
|
|
{
|
|
InitValBoundaryAnTore();
|
|
SetTore();
|
|
break;
|
|
}
|
|
};
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnLimit()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordLimits = aBoundaryAn->GetLimit();
|
|
ASSERT(mesCoordLimits->length() == 3 );
|
|
_Xincr=mesCoordLimits[0];
|
|
_Yincr=mesCoordLimits[1];
|
|
_Zincr=mesCoordLimits[2];
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnCylindre()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCoords();
|
|
ASSERT(mesCoordBoundary->length() == 7 );
|
|
_BoundaryAnXcentre=mesCoordBoundary[0];
|
|
_BoundaryAnYcentre=mesCoordBoundary[1];
|
|
_BoundaryAnZcentre=mesCoordBoundary[2];
|
|
_BoundaryAnXaxis=mesCoordBoundary[3];
|
|
_BoundaryAnYaxis=mesCoordBoundary[4];
|
|
_BoundaryAnZaxis=mesCoordBoundary[5];
|
|
_BoundaryAnRayon=mesCoordBoundary[6];
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnSphere()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCoords();
|
|
ASSERT(mesCoordBoundary->length() == 4 );
|
|
_BoundaryAnXcentre=mesCoordBoundary[0];
|
|
_BoundaryAnYcentre=mesCoordBoundary[1];
|
|
_BoundaryAnZcentre=mesCoordBoundary[2];
|
|
_BoundaryAnRayon=mesCoordBoundary[3];
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnConeA()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCoords();
|
|
ASSERT(mesCoordBoundary->length() == 7 );
|
|
_BoundaryAnXaxisCone=mesCoordBoundary[0];
|
|
_BoundaryAnYaxisCone=mesCoordBoundary[1];
|
|
_BoundaryAnZaxisCone=mesCoordBoundary[2];
|
|
_BoundaryAngle=mesCoordBoundary[3];
|
|
_BoundaryAnXorigCone=mesCoordBoundary[4];
|
|
_BoundaryAnYorigCone=mesCoordBoundary[5];
|
|
_BoundaryAnZorigCone=mesCoordBoundary[6];
|
|
convertRayonAngle(-1) ;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnConeR()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCoords();
|
|
ASSERT(mesCoordBoundary->length() == 8 );
|
|
_BoundaryAnXcone1=mesCoordBoundary[0];
|
|
_BoundaryAnYcone1=mesCoordBoundary[1];
|
|
_BoundaryAnZcone1=mesCoordBoundary[2];
|
|
_BoundaryAnRayon1=mesCoordBoundary[3];
|
|
_BoundaryAnXcone2=mesCoordBoundary[4];
|
|
_BoundaryAnYcone2=mesCoordBoundary[5];
|
|
_BoundaryAnZcone2=mesCoordBoundary[6];
|
|
_BoundaryAnRayon2=mesCoordBoundary[7];
|
|
convertRayonAngle(1) ;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::InitValBoundaryAnTore()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
SMESHHOMARD::double_array_var mesCoordBoundary = aBoundaryAn->GetCoords();
|
|
ASSERT(mesCoordBoundary->length() == 8 );
|
|
_BoundaryAnXcentre=mesCoordBoundary[0];
|
|
_BoundaryAnYcentre=mesCoordBoundary[1];
|
|
_BoundaryAnZcentre=mesCoordBoundary[2];
|
|
_BoundaryAnXaxis=mesCoordBoundary[3];
|
|
_BoundaryAnYaxis=mesCoordBoundary[4];
|
|
_BoundaryAnZaxis=mesCoordBoundary[5];
|
|
_BoundaryAnRayon1=mesCoordBoundary[6];
|
|
_BoundaryAnRayon2=mesCoordBoundary[7];
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::SetCylinder()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
gBCylindre->setVisible(1);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(0);
|
|
RBCylindre->setChecked(1);
|
|
_Type=1;
|
|
RBSphere->setDisabled(true);
|
|
RBCone->setDisabled(true);
|
|
RBTore->setDisabled(true);
|
|
|
|
SpinBox_Xcent->setValue(_BoundaryAnXcentre);
|
|
SpinBox_Ycent->setValue(_BoundaryAnYcentre);
|
|
SpinBox_Zcent->setValue(_BoundaryAnZcentre);
|
|
|
|
SpinBox_Xaxis->setValue(_BoundaryAnXaxis);
|
|
SpinBox_Yaxis->setValue(_BoundaryAnYaxis);
|
|
SpinBox_Zaxis->setValue(_BoundaryAnZaxis);
|
|
|
|
|
|
SpinBox_Xaxis->setSingleStep(0.1);
|
|
SpinBox_Xcentre->setSingleStep(_Xincr);
|
|
SpinBox_Yaxis->setSingleStep(0.1);
|
|
SpinBox_Ycentre->setSingleStep(_Yincr);
|
|
SpinBox_Zaxis->setSingleStep(0.1);
|
|
SpinBox_Zcentre->setSingleStep(_Zincr);
|
|
// Rayon
|
|
SpinBox_Radius->setValue(_BoundaryAnRayon);
|
|
SpinBox_Radius->setSingleStep(_BoundaryAnRayon/10.);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::SetSphere()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(1);
|
|
RBSphere->setChecked(1);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(0);
|
|
RBCylindre->setDisabled(true);
|
|
RBCone->setDisabled(true);
|
|
RBTore->setDisabled(true);
|
|
_Type=2 ;
|
|
|
|
SpinBox_Xcentre->setValue(_BoundaryAnXcentre);
|
|
if ( _Xincr > 0) { SpinBox_Xcentre->setSingleStep(_Xincr); }
|
|
else { SpinBox_Xcentre->setSingleStep(1) ; }
|
|
|
|
SpinBox_Ycentre->setValue(_BoundaryAnYcentre);
|
|
if ( _Yincr > 0) { SpinBox_Ycentre->setSingleStep(_Yincr); }
|
|
else { SpinBox_Ycentre->setSingleStep(1) ; }
|
|
|
|
SpinBox_Zcentre->setValue(_BoundaryAnZcentre);
|
|
if ( _Zincr > 0) { SpinBox_Zcentre->setSingleStep(_Zincr); }
|
|
else { SpinBox_Zcentre->setSingleStep(1);}
|
|
|
|
SpinBox_Rayon->setValue(_BoundaryAnRayon);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::SetConeA()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(1);
|
|
RBCone->setChecked(1);
|
|
gBTore->setVisible(0);
|
|
RB_Def_angle->setChecked(1);
|
|
RBCylindre->setDisabled(true);
|
|
RBSphere->setDisabled(true);
|
|
RBTore->setDisabled(true);
|
|
_Type=3;
|
|
//
|
|
TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X axis", 0));
|
|
SpinBox_Cone_X1->setValue(_BoundaryAnXaxisCone);
|
|
TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y axis", 0));
|
|
SpinBox_Cone_Y1->setValue(_BoundaryAnYaxisCone);
|
|
TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z axis", 0));
|
|
SpinBox_Cone_Z1->setValue(_BoundaryAnZaxisCone);
|
|
//
|
|
TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre", 0));
|
|
SpinBox_Cone_X2->setValue(_BoundaryAnXorigCone);
|
|
TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre", 0));
|
|
SpinBox_Cone_Y2->setValue(_BoundaryAnYorigCone);
|
|
TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre", 0));
|
|
SpinBox_Cone_Z2->setValue(_BoundaryAnZorigCone);
|
|
//
|
|
TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Angle", 0));
|
|
SpinBox_Cone_V1->setValue(_BoundaryAngle);
|
|
SpinBox_Cone_V1->setSingleStep(1.);
|
|
SpinBox_Cone_V1->setMaximum(90.);
|
|
//
|
|
TLCone_V2->setVisible(0);
|
|
SpinBox_Cone_V2->setVisible(0);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::SetConeR()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(1);
|
|
gBTore->setVisible(0);
|
|
RBCone->setChecked(1);
|
|
RB_Def_radius->setChecked(1);
|
|
RBCylindre->setDisabled(true);
|
|
RBSphere->setDisabled(true);
|
|
RBTore->setDisabled(true);
|
|
_Type=4;
|
|
//
|
|
TLCone_X1->setText(QApplication::translate("CreateBoundaryAn", "X centre 1", 0));
|
|
SpinBox_Cone_X1->setValue(_BoundaryAnXcone1);
|
|
TLCone_Y1->setText(QApplication::translate("CreateBoundaryAn", "Y centre 1", 0));
|
|
SpinBox_Cone_Y1->setValue(_BoundaryAnYcone1);
|
|
TLCone_Z1->setText(QApplication::translate("CreateBoundaryAn", "Z centre 1", 0));
|
|
SpinBox_Cone_Z1->setValue(_BoundaryAnZcone1);
|
|
//
|
|
TLCone_V1->setText(QApplication::translate("CreateBoundaryAn", "Radius 1", 0));
|
|
SpinBox_Cone_V1->setSingleStep(_Rayon/10.);
|
|
SpinBox_Cone_V1->setMaximum(100000.*_DMax);
|
|
SpinBox_Cone_V1->setValue(_BoundaryAnRayon1);
|
|
//
|
|
TLCone_X2->setText(QApplication::translate("CreateBoundaryAn", "X centre 2", 0));
|
|
SpinBox_Cone_X2->setValue(_BoundaryAnXcone2);
|
|
TLCone_Y2->setText(QApplication::translate("CreateBoundaryAn", "Y centre 2", 0));
|
|
SpinBox_Cone_Y2->setValue(_BoundaryAnYcone2);
|
|
TLCone_Z2->setText(QApplication::translate("CreateBoundaryAn", "Z centre 2", 0));
|
|
SpinBox_Cone_Z2->setValue(_BoundaryAnZcone2);
|
|
//
|
|
TLCone_V2->setVisible(1);
|
|
SpinBox_Cone_V2->setVisible(1);
|
|
TLCone_V2->setText(QApplication::translate("CreateBoundaryAn", "Radius 2", 0));
|
|
SpinBox_Cone_V2->setValue(_BoundaryAnRayon2);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryAn::SetTore()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
gBCylindre->setVisible(0);
|
|
gBSphere->setVisible(0);
|
|
gBCone->setVisible(0);
|
|
gBTore->setVisible(1);
|
|
RBTore->setChecked(1);
|
|
_Type=5;
|
|
RBCylindre->setDisabled(true);
|
|
RBSphere->setDisabled(true);
|
|
RBCone->setDisabled(true);
|
|
|
|
SpinBoxToreXcent->setValue(_BoundaryAnXcentre);
|
|
SpinBoxToreYcent->setValue(_BoundaryAnYcentre);
|
|
SpinBoxToreZcent->setValue(_BoundaryAnZcentre);
|
|
|
|
SpinBoxToreXaxe->setValue(_BoundaryAnXaxis);
|
|
SpinBoxToreYaxe->setValue(_BoundaryAnYaxis);
|
|
SpinBoxToreZaxe->setValue(_BoundaryAnZaxis);
|
|
|
|
|
|
SpinBoxToreXaxe->setSingleStep(0.1);
|
|
SpinBoxToreXcent->setSingleStep(_Xincr);
|
|
SpinBoxToreYaxe->setSingleStep(0.1);
|
|
SpinBoxToreYcent->setSingleStep(_Yincr);
|
|
SpinBoxToreZaxe->setSingleStep(0.1);
|
|
SpinBoxToreZcent->setSingleStep(_Zincr);
|
|
// Rayon de revolution
|
|
SpinBoxToreRRev->setValue(_BoundaryAnRayon1);
|
|
SpinBoxToreRRev->setSingleStep(_BoundaryAnRayon1/10.);
|
|
// Rayon primaire
|
|
SpinBoxToreRPri->setValue(_BoundaryAnRayon2);
|
|
SpinBoxToreRPri->setSingleStep(_BoundaryAnRayon2/10.);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ---------------------------------------------------
|
|
bool SMESH_EditBoundaryAn::CreateOrUpdateBoundaryAn()
|
|
//----------------------------------------------------
|
|
// Mise a jour des attributs de la BoundaryAn
|
|
{
|
|
switch (_Type)
|
|
{
|
|
case 1 : // il s agit d un cylindre
|
|
{
|
|
aBoundaryAn->SetCylinder(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon );
|
|
break;
|
|
}
|
|
case 2 : // il s agit d une sphere
|
|
{
|
|
aBoundaryAn->SetSphere(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnRayon);
|
|
break;
|
|
}
|
|
case 3 : // il s agit d un cone defini par un axe et un angle
|
|
{
|
|
aBoundaryAn = myHomardGen->CreateBoundaryConeA(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXaxisCone, _BoundaryAnYaxisCone, _BoundaryAnZaxisCone, _BoundaryAngle, \
|
|
_BoundaryAnXorigCone, _BoundaryAnYorigCone, _BoundaryAnYorigCone);
|
|
break;
|
|
}
|
|
case 4 : // il s agit d un cone defini par les 2 rayons
|
|
{
|
|
aBoundaryAn = myHomardGen->CreateBoundaryConeR(CORBA::string_dup(_Name.toStdString().c_str()), \
|
|
_BoundaryAnXcone1, _BoundaryAnYcone1, _BoundaryAnZcone1, _BoundaryAnRayon1, \
|
|
_BoundaryAnXcone2, _BoundaryAnYcone2, _BoundaryAnZcone2, _BoundaryAnRayon2);
|
|
break;
|
|
}
|
|
case 5 : // il s agit d un tore
|
|
{
|
|
aBoundaryAn->SetTorus(_BoundaryAnXcentre, _BoundaryAnYcentre, _BoundaryAnZcentre, _BoundaryAnXaxis, _BoundaryAnYaxis, _BoundaryAnZaxis, _BoundaryAnRayon1, _BoundaryAnRayon2 );
|
|
break;
|
|
}
|
|
}
|
|
if (Chgt) myHomardGen->InvalideBoundary(_Name.toStdString().c_str());
|
|
//HOMARD_UTILS::updateObjBrowser();
|
|
return true;
|
|
}
|
|
|
|
// --------------------------------------------------------------------------------------
|
|
/* Constructs a SMESH_EditBoundaryCAO
|
|
herite de SMESH_CreateBoundaryCAO
|
|
*/
|
|
// --------------------------------------------------------------------------------------
|
|
SMESH_EditBoundaryCAO::SMESH_EditBoundaryCAO( SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName, QString Name):
|
|
SMESH_CreateBoundaryCAO(parent, modal, myHomardGen0, caseName, Name)
|
|
{
|
|
MESSAGE("Debut de Boundary pour " << Name.toStdString().c_str());
|
|
setWindowTitle(QObject::tr("HOM_BOUN_C_EDIT_WINDOW_TITLE"));
|
|
try {
|
|
aBoundary = myHomardGen->GetBoundary(CORBA::string_dup(_aName.toStdString().c_str()));
|
|
InitValEdit();
|
|
}
|
|
catch( SALOME::SALOME_Exception& S_ex ) {
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr(CORBA::string_dup(S_ex.details.text)) );
|
|
return;
|
|
}
|
|
|
|
SMESHHOMARD::ListGroupType_var maListe = aBoundary->GetGroups();
|
|
for ( int i = 0; i < maListe->length(); i++ )
|
|
_listeGroupesBoundary << QString(maListe[i]);
|
|
|
|
}
|
|
// ------------------------------
|
|
SMESH_EditBoundaryCAO::~SMESH_EditBoundaryCAO()
|
|
// ------------------------------
|
|
{
|
|
}
|
|
// ------------------------------
|
|
void SMESH_EditBoundaryCAO::InitValEdit()
|
|
// ------------------------------
|
|
{
|
|
LEName->setText(_aName);
|
|
LEName->setReadOnly(true);
|
|
|
|
QString aDataFile = aBoundary->GetDataFile();
|
|
LEFileName->setText(aDataFile);
|
|
LEFileName->setReadOnly(1);
|
|
PushFichier->setVisible(0);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------
|
|
bool SMESH_EditBoundaryCAO::PushOnApply()
|
|
// ------------------------------
|
|
{
|
|
return true;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryCAO::SetFiltrage()
|
|
// ------------------------------------------------------------------------
|
|
{
|
|
if (!CBGroupe->isChecked()) return;
|
|
//SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
|
|
//SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
|
|
|
|
SMESH_EditListGroupCAO *aDlg = new SMESH_EditListGroupCAO
|
|
(this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
|
|
"Case_1", _listeGroupesBoundary) ;
|
|
aDlg->show();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------
|
|
/* Constructs a SMESH_EditBoundaryDi
|
|
herite de SMESH_CreateBoundaryDi
|
|
*/
|
|
// ------------------------------------------------------------------------------------
|
|
SMESH_EditBoundaryDi::SMESH_EditBoundaryDi( SMESHGUI_HomardAdaptDlg* parent, bool modal,
|
|
SMESHHOMARD::HOMARD_Gen_var myHomardGen0,
|
|
QString caseName, QString Name):
|
|
SMESH_CreateBoundaryDi(parent, modal, myHomardGen0, caseName, Name)
|
|
{
|
|
MESSAGE("Debut de Boundary pour " << Name.toStdString().c_str());
|
|
setWindowTitle(QObject::tr("HOM_BOUN_D_EDIT_WINDOW_TITLE"));
|
|
try {
|
|
aBoundary = myHomardGen->GetBoundary(CORBA::string_dup(_aName.toStdString().c_str()));
|
|
InitValEdit();
|
|
}
|
|
catch( SALOME::SALOME_Exception& S_ex ) {
|
|
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
|
|
QObject::tr(CORBA::string_dup(S_ex.details.text)) );
|
|
return;
|
|
}
|
|
|
|
SMESHHOMARD::ListGroupType_var maListe = aBoundary->GetGroups();
|
|
for ( int i = 0; i < maListe->length(); i++ )
|
|
_listeGroupesBoundary << QString(maListe[i]);
|
|
|
|
}
|
|
// ------------------------------
|
|
SMESH_EditBoundaryDi::~SMESH_EditBoundaryDi()
|
|
// ------------------------------
|
|
{
|
|
}
|
|
// ------------------------------
|
|
void SMESH_EditBoundaryDi::InitValEdit()
|
|
// ------------------------------
|
|
{
|
|
LEName->setText(_aName);
|
|
LEName->setReadOnly(true);
|
|
|
|
QString aDataFile = aBoundary->GetDataFile();
|
|
LEFileName->setText(aDataFile);
|
|
LEFileName->setReadOnly(1);
|
|
PushFichier->setVisible(0);
|
|
//
|
|
adjustSize();
|
|
}
|
|
// ------------------------------
|
|
bool SMESH_EditBoundaryDi::PushOnApply()
|
|
// ------------------------------
|
|
{
|
|
return true;
|
|
}
|
|
// ------------------------------------------------------------------------
|
|
void SMESH_EditBoundaryDi::SetFiltrage()
|
|
// // ------------------------------------------------------------------------
|
|
{
|
|
if (!CBGroupe->isChecked()) return;
|
|
SMESHHOMARD::HOMARD_Cas_var monCas = myHomardGen->GetCase();
|
|
SMESHHOMARD::ListGroupType_var _listeGroupesCas = monCas->GetGroups();
|
|
|
|
SMESH_EditListGroup *aDlg = new SMESH_EditListGroup
|
|
(this, true, SMESHHOMARD::HOMARD_Gen::_duplicate(myHomardGen),
|
|
"Case_1", _listeGroupesBoundary);
|
|
aDlg->show();
|
|
}
|