Merge remote-tracking branch 'origin/V8_3_BR' into ngr/python3_dev

Conflicts:
	src/Tools/ZCracksPlug/casTests/launchCas.py
	src/Tools/padder/spadderpy/gui/inputdialog.py
	src/Tools/padder/spadderpy/gui/plugindialog.py
	src/Tools/padder/unittests/usecase_meshJobManager.py
This commit is contained in:
Gilles DAVID 2017-04-18 15:43:53 +02:00
commit e8173b4ff1
24 changed files with 420 additions and 215 deletions

View File

@ -31,11 +31,11 @@ ENDIF(WIN32)
STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8) SET(${PROJECT_NAME_UC}_MAJOR_VERSION 8)
SET(${PROJECT_NAME_UC}_MINOR_VERSION 2) SET(${PROJECT_NAME_UC}_MINOR_VERSION 3)
SET(${PROJECT_NAME_UC}_PATCH_VERSION 0) SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
SET(${PROJECT_NAME_UC}_VERSION SET(${PROJECT_NAME_UC}_VERSION
${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION}) ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
SET(${PROJECT_NAME_UC}_VERSION_DEV 1) SET(${PROJECT_NAME_UC}_VERSION_DEV 0)
# Common CMake macros # Common CMake macros
# =================== # ===================

View File

@ -3,8 +3,8 @@
\page skew_page Skew \page skew_page Skew
\n \b Skew mesh quality criterion reflects the angle between the lines \n \b Skew mesh quality criterion reflects the angle between the lines
that join opposite sides of a quadrangle element or the greatesr angle that join opposite sides of a quadrangle element or the greatest angle
between three medians in triangle elements. This mesh quality between a median and a midline in a triangle element. This mesh quality
criterion can be applied to elements composed of 4 and 3 nodes criterion can be applied to elements composed of 4 and 3 nodes
(quadrangles and triangles). (quadrangles and triangles).

View File

@ -226,6 +226,8 @@ SET(SMESH_RESOURCES_FILES
mesh_extmeth_surf_offset_smooth.png mesh_extmeth_surf_offset_smooth.png
mesh_extmeth_face_offset.png mesh_extmeth_face_offset.png
mesh_quality.png mesh_quality.png
mesh_show.png
mesh_hide.png
) )
INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA}) INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA})

BIN
resources/mesh_hide.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

BIN
resources/mesh_show.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@ -73,6 +73,19 @@ SMESH_Gen::SMESH_Gen()
//vtkDebugLeaks::SetExitError(0); //vtkDebugLeaks::SetExitError(0);
} }
namespace
{
// a structure used to nullify SMESH_Gen field of SMESH_Hypothesis,
// which is needed for SMESH_Hypothesis not deleted before ~SMESH_Gen()
struct _Hyp : public SMESH_Hypothesis
{
void NullifyGen()
{
_gen = 0;
}
};
}
//============================================================================= //=============================================================================
/*! /*!
* Destructor * Destructor
@ -84,9 +97,16 @@ SMESH_Gen::~SMESH_Gen()
std::map < int, StudyContextStruct * >::iterator i_sc = _mapStudyContext.begin(); std::map < int, StudyContextStruct * >::iterator i_sc = _mapStudyContext.begin();
for ( ; i_sc != _mapStudyContext.end(); ++i_sc ) for ( ; i_sc != _mapStudyContext.end(); ++i_sc )
{ {
delete i_sc->second->myDocument; StudyContextStruct* context = i_sc->second;
delete i_sc->second; std::map < int, SMESH_Hypothesis * >::iterator i_hyp = context->mapHypothesis.begin();
} for ( ; i_hyp != context->mapHypothesis.end(); ++i_hyp )
{
if ( _Hyp* h = static_cast< _Hyp*>( i_hyp->second ))
h->NullifyGen();
}
delete context->myDocument;
delete context;
}
} }
//============================================================================= //=============================================================================

View File

@ -25,20 +25,18 @@
// Author : Paul RASCLE, EDF // Author : Paul RASCLE, EDF
// Module : SMESH // Module : SMESH
// //
#include "SMESH_Hypothesis.hxx"
#include "SMESH_Gen.hxx"
#include "SMESHDS_Mesh.hxx" #include "SMESHDS_Mesh.hxx"
#include "SMESH_Gen.hxx" #include "SMESH_Hypothesis.hxx"
#include "SMESH_Mesh.hxx" #include "SMESH_Mesh.hxx"
#include "SMESH_subMesh.hxx"
#include "utilities.h"
using namespace std; using namespace std;
//============================================================================= //=============================================================================
/*! /*!
* *
*/ */
//============================================================================= //=============================================================================
@ -63,8 +61,11 @@ SMESH_Hypothesis::SMESH_Hypothesis(int hypId,
SMESH_Hypothesis::~SMESH_Hypothesis() SMESH_Hypothesis::~SMESH_Hypothesis()
{ {
StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId); if ( _gen )
myStudyContext->mapHypothesis[_hypId] = 0; {
StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId);
myStudyContext->mapHypothesis[_hypId] = 0;
}
} }
//============================================================================= //=============================================================================
@ -77,20 +78,20 @@ int SMESH_Hypothesis::GetDim() const
{ {
int dim = 0; int dim = 0;
switch (_type) switch (_type)
{ {
case ALGO_1D: dim = 1; break; case ALGO_1D: dim = 1; break;
case ALGO_2D: dim = 2; break; case ALGO_2D: dim = 2; break;
case ALGO_3D: dim = 3; break; case ALGO_3D: dim = 3; break;
case ALGO_0D: dim = 0; break; case ALGO_0D: dim = 0; break;
case PARAM_ALGO: case PARAM_ALGO:
dim = ( _param_algo_dim < 0 ) ? -_param_algo_dim : _param_algo_dim; break; dim = ( _param_algo_dim < 0 ) ? -_param_algo_dim : _param_algo_dim; break;
} }
return dim; return dim;
} }
//============================================================================= //=============================================================================
/*! /*!
* *
*/ */
//============================================================================= //=============================================================================

View File

@ -4020,8 +4020,8 @@ void SMESHGUI::initialize( CAM_Application* app )
createSMESHAction( SMESHOp::OpPropertiesArea, "MEASURE_AREA", "ICON_MEASURE_AREA" ); createSMESHAction( SMESHOp::OpPropertiesArea, "MEASURE_AREA", "ICON_MEASURE_AREA" );
createSMESHAction( SMESHOp::OpPropertiesVolume, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" ); createSMESHAction( SMESHOp::OpPropertiesVolume, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" );
createSMESHAction( SMESHOp::OpHide, "HIDE" ); createSMESHAction( SMESHOp::OpHide, "HIDE", "ICON_HIDE" );
createSMESHAction( SMESHOp::OpShow, "SHOW" ); createSMESHAction( SMESHOp::OpShow, "SHOW", "ICON_SHOW" );
createSMESHAction( SMESHOp::OpShowOnly, "DISPLAY_ONLY" ); createSMESHAction( SMESHOp::OpShowOnly, "DISPLAY_ONLY" );
createSMESHAction( SMESHOp::OpSortChild, "SORT_CHILD_ITEMS" ); createSMESHAction( SMESHOp::OpSortChild, "SORT_CHILD_ITEMS" );

View File

@ -631,5 +631,13 @@
<source>ICON_MEASURE_BND_BOX</source> <source>ICON_MEASURE_BND_BOX</source>
<translation>mesh_bounding_box.png</translation> <translation>mesh_bounding_box.png</translation>
</message> </message>
<message>
<source>ICON_SHOW</source>
<translation>mesh_show.png</translation>
</message>
<message>
<source>ICON_HIDE</source>
<translation>mesh_hide.png</translation>
</message>
</context> </context>
</TS> </TS>

View File

@ -169,6 +169,7 @@ struct SMESH_TNodeXYZ : public gp_XYZ
double SquareDistance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).SquareModulus(); } double SquareDistance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).SquareModulus(); }
bool operator==(const SMESH_TNodeXYZ& other) const { return _node == other._node; } bool operator==(const SMESH_TNodeXYZ& other) const { return _node == other._node; }
}; };
typedef SMESH_TNodeXYZ SMESH_NodeXYZ;
//-------------------------------------------------- //--------------------------------------------------
/*! /*!

View File

@ -610,6 +610,148 @@ const char* SMESH_Swig::AddSubMeshOnShape(const char* theMeshEntry,
return ""; return "";
} }
/*!
\brief Gets window with specified identifier
\internal
\param id window identifier
\return pointer on the window
*/
SUIT_ViewWindow* getWnd( const int id )
{
SUIT_ViewWindow* resWnd = 0;
SUIT_Session* aSession = SUIT_Session::session();
SUIT_Application* anApplication = aSession->activeApplication();
SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>(anApplication);
if ( app ) {
ViewManagerList vmlist = app->viewManagers();
foreach( SUIT_ViewManager* vm, vmlist ) {
QVector<SUIT_ViewWindow*> vwlist = vm->getViews();
foreach ( SUIT_ViewWindow* vw, vwlist ) {
if ( id == vw->getId() ) {
resWnd = vw;
break;
}
}
}
}
return resWnd;
}
class TGetActorAspect: public SALOME_Event
{
public:
typedef actorAspect TResult;
TResult myResult;
const char* _entry;
int _wid;
TGetActorAspect( const char* Mesh_Entry, int viewId )
{
_entry = Mesh_Entry;
_wid = viewId;
}
virtual void Execute()
{
SMESH_Actor* anActor;
if (_wid)
{
SUIT_ViewWindow* w = getWnd(_wid);
anActor = SMESH::FindActorByEntry( w, _entry );
}
else
anActor = SMESH::FindActorByEntry( _entry );
if ( !anActor )
{
MESSAGE("GetActorAspect: no actor corresponding to: " << _entry);
return;
}
anActor->GetSufaceColor(myResult.surfaceColor.r,
myResult.surfaceColor.g,
myResult.surfaceColor.b,
myResult.surfaceColor.delta);
anActor->GetVolumeColor(myResult.volumeColor.r,
myResult.volumeColor.g,
myResult.volumeColor.b,
myResult.volumeColor.delta);
anActor->GetEdgeColor(myResult.edgeColor.r,
myResult.edgeColor.g,
myResult.edgeColor.b);
anActor->GetNodeColor(myResult.nodeColor.r,
myResult.nodeColor.g,
myResult.nodeColor.b);
myResult.opacity= anActor->GetOpacity();
MESSAGE("opacity: " << myResult.opacity);
}
};
actorAspect SMESH_Swig::GetActorAspect( const char* Mesh_Entry, int viewId )
{
return ProcessEvent(new TGetActorAspect( Mesh_Entry, viewId));
}
void SMESH_Swig::SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId )
{
class TSetActorAspect: public SALOME_Event
{
public:
const char* _entry;
actorAspect _actorPres;
int _wid;
TSetActorAspect(const actorAspect& actorPres, const char* Mesh_Entry, int viewId )
{
_entry = Mesh_Entry;
_actorPres = actorPres;
_wid = viewId;
}
virtual void Execute()
{
SMESH_Actor* anActor;
if (_wid)
{
SUIT_ViewWindow* w = getWnd(_wid);
anActor = SMESH::FindActorByEntry( w, _entry );
}
else
anActor = SMESH::FindActorByEntry( _entry );
if ( !anActor )
{
MESSAGE("SetActorAspect: no actor corresponding to: " << _entry);
return;
}
anActor->SetSufaceColor(_actorPres.surfaceColor.r,
_actorPres.surfaceColor.g,
_actorPres.surfaceColor.b,
_actorPres.surfaceColor.delta);
anActor->SetVolumeColor(_actorPres.volumeColor.r,
_actorPres.volumeColor.g,
_actorPres.volumeColor.b,
_actorPres.volumeColor.delta);
anActor->SetEdgeColor(_actorPres.edgeColor.r,
_actorPres.edgeColor.g,
_actorPres.edgeColor.b);
anActor->SetNodeColor(_actorPres.nodeColor.r,
_actorPres.nodeColor.g,
_actorPres.nodeColor.b);
anActor->SetOpacity(_actorPres.opacity);
if (_wid)
{
SUIT_ViewWindow* w = getWnd(_wid);
w->repaint();
}
else
{
SUIT_Session* aSession = SUIT_Session::session();
SUIT_Application* anApplication = aSession->activeApplication();
SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(anApplication);
SUIT_ViewManager* vman = anApp->getViewManager(VTKViewer_Viewer::Type(),true);
vman->getActiveView()->repaint();
}
}
};
ProcessVoidEvent(new TSetActorAspect(actorPres, Mesh_Entry, viewId));
}
void SMESH_Swig::CreateAndDisplayActor( const char* Mesh_Entry ) void SMESH_Swig::CreateAndDisplayActor( const char* Mesh_Entry )
{ {
// SMESH_Actor* Mesh = smeshGUI->ReadScript(aM); // SMESH_Actor* Mesh = smeshGUI->ReadScript(aM);

View File

@ -58,6 +58,37 @@ enum
Ball = BallSelection Ball = BallSelection
}; };
typedef struct
{
double r, g, b;
int delta;
} surfaceColorStruct;
typedef struct
{
double r, g, b;
int delta;
} volumeColorStruct;
typedef struct
{
double r, g, b;
} edgeColorStruct;
typedef struct
{
double r, g, b;
} nodeColorStruct;
struct actorAspect
{
surfaceColorStruct surfaceColor;
volumeColorStruct volumeColor;
edgeColorStruct edgeColor;
nodeColorStruct nodeColor;
double opacity;
};
class SMESH_SWIG_EXPORT SMESH_Swig class SMESH_SWIG_EXPORT SMESH_Swig
{ {
public: public:
@ -94,6 +125,9 @@ public:
*/ */
void SetMeshIcon( const char*, const bool, const bool ); void SetMeshIcon( const char*, const bool, const bool );
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
// --------------------- for the test purposes ----------------------- // --------------------- for the test purposes -----------------------
int getSelectionMode(); int getSelectionMode();
void select( const char *id, std::vector<int> ids, bool append = false ); void select( const char *id, std::vector<int> ids, bool append = false );

View File

@ -68,6 +68,37 @@ enum
Ball Ball
}; };
typedef struct
{
double r, g, b;
int delta;
} surfaceColorStruct;
typedef struct
{
double r, g, b;
int delta;
} volumeColorStruct;
typedef struct
{
double r, g, b;
} edgeColorStruct;
typedef struct
{
double r, g, b;
} nodeColorStruct;
struct actorAspect
{
surfaceColorStruct surfaceColor;
volumeColorStruct volumeColor;
edgeColorStruct edgeColor;
nodeColorStruct nodeColor;
double opacity;
};
class SMESH_Swig class SMESH_Swig
{ {
public: public:
@ -97,6 +128,9 @@ class SMESH_Swig
void CreateAndDisplayActor( const char* Mesh_Entry ); void CreateAndDisplayActor( const char* Mesh_Entry );
void EraseActor( const char* Mesh_Entry, const bool allViewers = false ); void EraseActor( const char* Mesh_Entry, const bool allViewers = false );
actorAspect GetActorAspect(const char* Mesh_Entry, int viewId = 0 );
void SetActorAspect( const actorAspect& actorPres, const char* Mesh_Entry, int viewId = 0 );
// --------------------- for the test purposes ----------------------- // --------------------- for the test purposes -----------------------
int getSelectionMode(); int getSelectionMode();
void select( const char *id, std::vector<int> ids, bool append = false ); void select( const char *id, std::vector<int> ids, bool append = false );

View File

@ -2,15 +2,20 @@ import sys, os, shutil, pickle, tempfile
from Zcracks import main, genereCrack, Zset from Zcracks import main, genereCrack, Zset
from Zcracks import utilityFunctions as uF from Zcracks import utilityFunctions as uF
os.environ['QT_QPA_PLATFORM_PLUGIN_PATH']=os.path.join(os.environ['QTDIR'],'plugins','platforms')
if 'MESHGEMSHOME' in os.environ:
meshgemsdir=os.environ['MESHGEMSHOME']
if len(meshgemsdir) > 0:
meshgems=meshgemsdir.split(os.sep)[-1]
uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
#commande="/bin/bash -c ""source $HOME/zebulon/Z8.6.6_NEW/do_config_bash""" #commande="/bin/bash -c ""source $HOME/zebulon/Z8.6.6_NEW/do_config_bash"""
#os.system(commande) #os.system(commande)
def IHM(): def IHM():
try: from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QApplication
except:
from PyQt4.QtGui import QApplication
app = QApplication(sys.argv) app = QApplication(sys.argv)
myapp = main.ShipHolderApplication() myapp = main.ShipHolderApplication()
@ -31,8 +36,7 @@ def SCRIPT(dataFile=None, data=None, dim=3, names=None):
print(data) print(data)
tmpdir=tempfile.mkdtemp() tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
if names==None: names={'saneGeoName':'salome_sane', 'crackGeoName':'salome_crack', 'crackedGeoName':'salome_cracked'} if names==None: names={'saneGeoName':'salome_sane', 'crackGeoName':'salome_crack', 'crackedGeoName':'salome_cracked'}

View File

@ -18,13 +18,13 @@ import string
#tmpdir = "/local00/home/B27118/projets/Zcracks/Zcracks/casTests/tmpdir" #tmpdir = "/local00/home/B27118/projets/Zcracks/Zcracks/casTests/tmpdir"
#if not os.path.isdir(tmpdir): os.mkdir(tmpdir) #if not os.path.isdir(tmpdir): os.mkdir(tmpdir)
tmpdir=tempfile.mktemp(prefix='tmpZcracks') tmpdir=tempfile.mkdtemp(prefix='tmpZcracks')
print("tmpdir=", tmpdir) print("tmpdir=", tmpdir)
meshgemsdir=os.environ('MESHGEMSHOME') #meshgemsdir=os.environ('MESHGEMSHOME')
if len(meshgemsdir) > 0: #if len(meshgemsdir) > 0:
meshgems=string.split(meshgemsdir,os.sep)[-1] #meshgems=string.split(meshgemsdir,os.sep)[-1]
uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems) #uF.removeFromSessionPath('LD_LIBRARY_PATH', meshgems)
def LAUNCH(listCas=[]): def LAUNCH(listCas=[]):
if not isinstance(listCas, list): listCas=[listCas] if not isinstance(listCas, list): listCas=[listCas]
@ -194,7 +194,7 @@ def LAUNCH(listCas=[]):
OK=[] OK=[]
NOOK=[] NOOK=[]
for s in list(synthese.keys()): for s in synthese:
if synthese[s]: if synthese[s]:
OK.append(s) OK.append(s)
else: else:

View File

@ -1,13 +1,9 @@
import sys, pickle, tempfile, shutil import sys, pickle, tempfile, shutil
from os import path, getpid, environ, remove, system from os import path, getpid, environ, remove, system
try: from PyQt5.QtCore import *
from PyQt5.QtCore import * from PyQt5.QtGui import *
from PyQt5.QtGui import * from PyQt5.QtWidgets import *
from PyQt5.QtWidgets import *
except:
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from . import utilityFunctions as uF from . import utilityFunctions as uF
from . import genereCrack, Zset, output, zcracks_ui from . import genereCrack, Zset, output, zcracks_ui
@ -21,8 +17,6 @@ from .zcracks_ui import Ui_Zui
# --------------------- # ---------------------
uF.removeFromSessionPath('LD_LIBRARY_PATH', 'Meshgems-2111')
def stringToFloat(string, typ=float): def stringToFloat(string, typ=float):
if str(string).replace(' ','')=='': if str(string).replace(' ','')=='':
out=[] out=[]
@ -78,25 +72,6 @@ class ShipHolderApplication(QGroupBox):
self.verbose=1 self.verbose=1
#self.connect(self.ui.CBQuad, SIGNAL("toggled(bool)"),self.pressQuad)
#self.connect(self.ui.btReset, SIGNAL("clicked()"),self.pressReset)
#self.connect(self.ui.btCancel, SIGNAL("clicked()"),self.pressCancel)
#self.connect(self.ui.btApply, SIGNAL("clicked()"),self.pressApply)
#self.connect(self.ui.btApplyClose, SIGNAL("clicked()"),self.pressApplyClose)
#self.connect(self.ui.btLoad, SIGNAL("clicked()"),self.pressCharger)
#self.connect(self.ui.btSave, SIGNAL("clicked()"),self.pressSauver)
#self.connect(self.ui.btLoadCracked, SIGNAL("clicked()"),self.pressLoadCracked)
#self.connect(self.ui.btLoadSane, SIGNAL("clicked()"),self.pressLoadSane)
#self.connect(self.ui.btGrVol, SIGNAL("clicked()"),self.pressLoadGroupVOL)
#self.connect(self.ui.btGrFace, SIGNAL("clicked()"),self.pressLoadGroupFACE)
#self.connect(self.ui.btGrEdge, SIGNAL("clicked()"),self.pressLoadGroupEDGE)
#self.connect(self.ui.btGrNode, SIGNAL("clicked()"),self.pressLoadGroupNODE)
#self.connect(self.ui.btGrAll, SIGNAL("clicked()"),self.pressLoadGroupALL)
#self.connect(self.ui.btVisu, SIGNAL("clicked()"),self.pressVisu)
#self.connect(self.ui.CBAdvanced, SIGNAL("toggled(bool)"),self.pressAdvanced)
self.ui.CBQuad.toggled.connect(self.pressQuad) self.ui.CBQuad.toggled.connect(self.pressQuad)
self.ui.btReset.clicked.connect(self.pressReset) self.ui.btReset.clicked.connect(self.pressReset)
self.ui.btCancel.clicked.connect(self.pressCancel) self.ui.btCancel.clicked.connect(self.pressCancel)
@ -144,9 +119,9 @@ class ShipHolderApplication(QGroupBox):
def pressQuad(self): def pressQuad(self):
if self.ui.CBQuad.isChecked(): if self.ui.CBQuad.isChecked():
self.ui.CBBarsoum.setEnabled(True) self.ui.CBBarsoum.setEnabled(True)
self.ui.valGradation.setText(QString('2.3')) self.ui.valGradation.setText('2.3')
else: else:
self.ui.valGradation.setText(QString('1.3')) self.ui.valGradation.setText('1.3')
self.ui.CBBarsoum.setChecked(False) self.ui.CBBarsoum.setChecked(False)
self.ui.CBBarsoum.setEnabled(False) self.ui.CBBarsoum.setEnabled(False)
@ -162,10 +137,10 @@ class ShipHolderApplication(QGroupBox):
tab=onglet.findChildren(QTableWidget)[0] tab=onglet.findChildren(QTableWidget)[0]
for irow in range(tab.rowCount()): for irow in range(tab.rowCount()):
if tab.item(irow,0) != None: if tab.item(irow,0) != None:
tab.item(irow,0).setText(QString('')) tab.item(irow,0).setText('')
self.ui.valGradation.setText(QString('1.3')) self.ui.valGradation.setText('1.3')
self.ui.valLayers.setText(QString('5')) self.ui.valLayers.setText('6')
self.ui.valIterations.setText(QString('2')) self.ui.valIterations.setText('2')
self.ui.CBIs2D.setChecked(False) self.ui.CBIs2D.setChecked(False)
self.ui.CBRefine.setChecked(False) self.ui.CBRefine.setChecked(False)
@ -257,7 +232,7 @@ class ShipHolderApplication(QGroupBox):
fileNames = fileDiag.selectedFiles() fileNames = fileDiag.selectedFiles()
filedef = fileNames[0] filedef = fileNames[0]
filedef = addExtension(str(filedef), 'med') filedef = addExtension(str(filedef), 'med')
self.ui.valCrackedName.setText(QString(filedef)) self.ui.valCrackedName.setText(filedef)
def pressLoadSane(self): def pressLoadSane(self):
@ -268,7 +243,7 @@ class ShipHolderApplication(QGroupBox):
if fileDiag.exec_() : if fileDiag.exec_() :
fileNames = fileDiag.selectedFiles() fileNames = fileDiag.selectedFiles()
filedef = fileNames[0] filedef = fileNames[0]
self.ui.valSaneName.setText(QString(filedef)) self.ui.valSaneName.setText(filedef)
def pressCharger(self): def pressCharger(self):
@ -287,23 +262,15 @@ class ShipHolderApplication(QGroupBox):
for cont, obj in enumerate(self.lineEditObjects): for cont, obj in enumerate(self.lineEditObjects):
if self.lineEditTypes[cont] in [float, int]: if self.lineEditTypes[cont] in [float, int]:
obj.setText(QString(self.data['TXT'+self.lineEditNames[cont]])) obj.setText(self.data['TXT'+self.lineEditNames[cont]])
else: else:
obj.setText(QString(self.data[self.lineEditNames[cont]])) obj.setText(self.data[self.lineEditNames[cont]])
self.ui.CBQuad.setChecked(True if 'quad' in list(self.data.keys()) and self.data['quad'] else False) self.ui.CBQuad.setChecked(True if 'quad' in list(self.data.keys()) and self.data['quad'] else False)
self.ui.CBBarsoum.setChecked(True if 'barsoum' in list(self.data.keys()) and self.data['barsoum'] else False) self.ui.CBBarsoum.setChecked(True if 'barsoum' in list(self.data.keys()) and self.data['barsoum'] else False)
self.ui.CBIs2D.setChecked(True if 'is2D' in list(self.data.keys()) and self.data['is2D'] else False) self.ui.CBIs2D.setChecked(True if 'is2D' in list(self.data.keys()) and self.data['is2D'] else False)
self.ui.CBRefine.setChecked(True if 'refine' in list(self.data.keys()) and self.data['refine'] else False) self.ui.CBRefine.setChecked(True if 'refine' in list(self.data.keys()) and self.data['refine'] else False)
#if self.data['quad']: self.ui.CBQuad.setChecked(True)
#if self.data['barsoum']: self.ui.CBBarsoum.setChecked(True)
#if self.data['is2D']: self.ui.CBIs2D.setChecked(True)
#if self.data['refine']: self.ui.CBRefine.setChecked(True)
self.setTableParameters() self.setTableParameters()
@ -451,7 +418,7 @@ class ShipHolderApplication(QGroupBox):
if tab.item(irow,0) == None: if tab.item(irow,0) == None:
item = QTableWidgetItem() item = QTableWidgetItem()
tab.setItem(irow, 0, item) tab.setItem(irow, 0, item)
tab.item(irow,0).setText(QString(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)])) tab.item(irow,0).setText(self.data['TXTcrack'][str(self.ui.tabWidget.tabText(iongl))][str(label)])
if str(self.ui.tabWidget.tabText(iongl)) == self.data['TXTcrack']['actif']: if str(self.ui.tabWidget.tabText(iongl)) == self.data['TXTcrack']['actif']:
self.ui.tabWidget.setCurrentWidget(onglet) self.ui.tabWidget.setCurrentWidget(onglet)
@ -475,19 +442,19 @@ class ShipHolderApplication(QGroupBox):
for group in objetSain.GetGroups(): for group in objetSain.GetGroups():
if (self.GroupToLoad in ['VOL','ALL']) and (group.GetType()==SMESH.VOLUME): if (self.GroupToLoad in ['VOL','ALL']) and (group.GetType()==SMESH.VOLUME):
groupsVOL+=group.GetName().replace(' ','')+" " groupsVOL+=self.cleanGroupName(group)
nGr+=1 nGr+=1
if (self.GroupToLoad in ['FACE','ALL']) and (group.GetType()==SMESH.FACE): if (self.GroupToLoad in ['FACE','ALL']) and (group.GetType()==SMESH.FACE):
groupsFAC+=group.GetName().replace(' ','')+" " groupsFAC+=self.cleanGroupName(group)
nGr+=1 nGr+=1
if (self.GroupToLoad in ['EDGE','ALL']) and (group.GetType()==SMESH.EDGE): if (self.GroupToLoad in ['EDGE','ALL']) and (group.GetType()==SMESH.EDGE):
groupsEDG+=group.GetName().replace(' ','')+" " groupsEDG+=self.cleanGroupName(group)
nGr+=1 nGr+=1
if (self.GroupToLoad in ['NODE','ALL']) and (group.GetType()==SMESH.NODE): if (self.GroupToLoad in ['NODE','ALL']) and (group.GetType()==SMESH.NODE):
groupsNOD+=group.GetName().replace(' ','')+" " groupsNOD+=self.cleanGroupName(group)
nGr+=1 nGr+=1
if groupsVOL!='': self.ui.valGrVol.setText(groupsVOL) if groupsVOL!='': self.ui.valGrVol.setText(groupsVOL)
@ -503,6 +470,24 @@ class ShipHolderApplication(QGroupBox):
remove(f) remove(f)
except: except:
pass pass
def cleanGroupName(self, group):
name=group.GetName()
while name.endswith(' '): name=name[:-1]
if ' ' in name:
message('A','%s group has a space in its name --> ignored' %name)
return('')
else:
return(name+" ")
def checkNamesSpaces(self, names):
if type(names) is str: names=[names]
ok=True
for n in names:
if ' ' in n:
message('E','%s has a space in its name, please remove it' %n, goOn=True)
ok=False
return(ok)
# --------------------------------- # ---------------------------------

View File

@ -22,9 +22,9 @@ class output():
pass pass
f = open(self.tmpFile,'w') f = open(self.tmpFile,'w')
f.write('\n ------------------------------\n') f.write('\n ------------------------------\n')
f.write(' | BIENVENU DANS L\'INTERFACE |\n') f.write(' | BIENVENUE DANS L\'INTERFACE |\n')
f.write(' | ZCRACKS DE SALOME |\n') f.write(' | ZCRACKS DE SALOME |\n')
f.write(' | VERSION ALPHA |\n') f.write(' | VERSION BETA |\n')
f.write(' ------------------------------\n\n') f.write(' ------------------------------\n\n')
f.close() f.close()

View File

@ -178,7 +178,13 @@ def extendElsets(meshFile, outFile=None):
smesh = smeshBuilder.New(theStudy) smesh = smeshBuilder.New(theStudy)
([mesh], status) = smesh.CreateMeshesFromMED(meshFile) ([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
if mesh.NbVolumes()>0:
case2D=False
mesh.Reorient2DBy3D( [ mesh ], mesh, 1 )
else:
case2D=True
mesh=cleanGroups(mesh) mesh=cleanGroups(mesh)
# Node color status # Node color status
@ -339,91 +345,6 @@ def getMaxAspectRatio(tmpdir):
return(float(maxAR)) return(float(maxAR))
#def extendElsets(meshFile):
#if not path.isfile(meshFile):
#message('E','Mesh med file is not valid')
#return(-1)
#import SMESH, salome
##salome.salome_init()
#theStudy = salome.myStudy
#from salome.smesh import smeshBuilder
#smesh = smeshBuilder.New(theStudy)
#([mesh], status) = smesh.CreateMeshesFromMED(meshFile)
## Node color status
#nodeList=mesh.GetNodesId()
#colorList=[0]*len(nodeList)
## Init using SIDE0 SIDE1
#for group in mesh.GetGroups():
#if group.GetType()==SMESH.FACE :
#color=0
#if group.GetName()[0:4]=='SIDE0' :
#color=1
#elif group.GetName()[0:4]=='SIDE1' :
#color=2
#else : continue
## Get faces
#faces=group.GetIDs()
## Set faces nodes to given color
#for face_id in faces :
#for face_node_id in mesh.GetElemNodes(face_id) :
#colorList[face_node_id-1]=color
## Propagates color using elem connectivity
## Always propagates max color
#volElemList=mesh.GetElementsByType(SMESH.VOLUME)
#ifChanged=True
#while ifChanged :
#ifChanged=False
#minColor=100
#maxColor=0
#for elemId in volElemList:
#for elemNodeId in mesh.GetElemNodes(elemId) :
#nodeColor=colorList[elemNodeId-1]
#if nodeColor<minColor : minColor=nodeColor
#if nodeColor>maxColor : maxColor=nodeColor
#if minColor!=maxColor :
#ifChanged = True
#for elemNodeId in mesh.GetElemNodes(elemId) :
#colorList[elemNodeId-1]=maxColor
#velem0 = []
#velem1 = []
#for elemId in volElemList:
#elemNodesId=mesh.GetElemNodes(elemId)
#elemColor=colorList[elemNodesId[0]-1]
#if(elemColor==1) : velem0.append(elemId)
#if(elemColor==2) : velem1.append(elemId)
#mesh.MakeGroupByIds('SIDE_co',SMESH.VOLUME,velem0)
#mesh.MakeGroupByIds('SIDE_ext',SMESH.VOLUME,velem1)
#surfElemList=mesh.GetElementsByType(SMESH.FACE)
#selem0 = []
#selem1 = []
#nbelem0=0
#nbelem1=0
#for elemId in surfElemList:
#elemNodesId=mesh.GetElemNodes(elemId)
#elemColor=colorList[elemNodesId[0]-1]
#if(elemColor==1) : selem0.append(elemId)
#if(elemColor==2) : selem1.append(elemId)
#mesh.MakeGroupByIds('SIDE_co',SMESH.FACE,selem0)
#mesh.MakeGroupByIds('SIDE_ext',SMESH.FACE,selem1)
#maxAR=0.
#for elem in volElemList:
#maxAR=max(mesh.GetAspectRatio(elem),maxAR)
#for elem in surfElemList:
#maxAR=max(mesh.GetAspectRatio(elem),maxAR)
#mesh.ExportMED(meshFile, 0, SMESH.MED_V2_2, 1, None ,1)
#return(maxAR)
def removeFromSessionPath(envVar, patern): def removeFromSessionPath(envVar, patern):

View File

@ -146,11 +146,12 @@ bool SPADDERPluginTester_i::testsmesh(CORBA::Long studyId)
// //
extern "C" extern "C"
{ {
PortableServer::ObjectId * SPADDERPluginTesterEngine_factory( CORBA::ORB_ptr orb, SPADDERPLUGINTESTERENGINE_EXPORT PortableServer::ObjectId *
PortableServer::POA_ptr poa, SPADDERPluginTesterEngine_factory( CORBA::ORB_ptr orb,
PortableServer::ObjectId * contId, PortableServer::POA_ptr poa,
const char *instanceName, PortableServer::ObjectId * contId,
const char *interfaceName) const char *instanceName,
const char *interfaceName)
{ {
MESSAGE("PortableServer::ObjectId * SPADDERPluginTesterEngine_factory()"); MESSAGE("PortableServer::ObjectId * SPADDERPluginTesterEngine_factory()");
SPADDERPluginTester_i * myEngine = new SPADDERPluginTester_i(orb, poa, contId, instanceName, interfaceName); SPADDERPluginTester_i * myEngine = new SPADDERPluginTester_i(orb, poa, contId, instanceName, interfaceName);

View File

@ -22,13 +22,23 @@
#ifndef _SPADDER_PLUGINTESTER_HXX_ #ifndef _SPADDER_PLUGINTESTER_HXX_
#define _SPADDER_PLUGINTESTER_HXX_ #define _SPADDER_PLUGINTESTER_HXX_
#ifdef WIN32
#if defined SPADDERPLUGINTESTERENGINE_EXPORTS || defined SPADDERPluginTesterEngine_EXPORTS
#define SPADDERPLUGINTESTERENGINE_EXPORT __declspec( dllexport )
#else
#define SPADDERPLUGINTESTERENGINE_EXPORT __declspec( dllimport )
#endif
#else
#define SPADDERPLUGINTESTERENGINE_EXPORT
#endif
// include the stubs generating from SPADDERPluginTest.idl // include the stubs generating from SPADDERPluginTest.idl
#include <SALOMEconfig.h> #include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SPADDERPluginTest) #include CORBA_SERVER_HEADER(SPADDERPluginTest)
#include <SALOME_Component.hh> #include <SALOME_Component.hh>
#include "SALOME_Component_i.hxx" #include "SALOME_Component_i.hxx"
class SPADDERPluginTester_i: class SPADDERPLUGINTESTERENGINE_EXPORT SPADDERPluginTester_i:
public virtual POA_SPADDERPluginTest::SPADDERPluginTester, public virtual POA_SPADDERPluginTest::SPADDERPluginTester,
public Engines_Component_i public Engines_Component_i
{ {

View File

@ -38,6 +38,14 @@ from salome.smesh.spadder.gui.inputdata import InputData
DEBUG_MODE=True DEBUG_MODE=True
GROUPNAME_MAXLENGTH=8 GROUPNAME_MAXLENGTH=8
INPUTDATA_KEY_FILES="meshfiles"
INPUTDATA_KEY_PARAM="parameters"
PARAM_KEY_NBITER = "NbIteration"
PARAM_KEY_RMAXRMIN = "RmaxRmin"
PARAM_NBITER_DEFAULT_VALUE = 10
PARAM_RMAXRMIN_DEFAULT_VALUE = 3
class InputDialog(GenericDialog): class InputDialog(GenericDialog):
TBL_HEADER_LABEL=["Input Mesh", "Output group name"] TBL_HEADER_LABEL=["Input Mesh", "Output group name"]
@ -116,7 +124,8 @@ class InputDialog(GenericDialog):
# name item. # name item.
# Setup default values for numerical parameters # Setup default values for numerical parameters
self.__ui.txtParamNbIter.setValue(3) self.__ui.txtParamNbIter.setValue(PARAM_NBITER_DEFAULT_VALUE)
self.__ui.txtParamRmaxRmin.setValue(PARAM_RMAXRMIN_DEFAULT_VALUE)
# Note that PADDER does not support group name longer than 8 # Note that PADDER does not support group name longer than 8
# characters. We apply then this limit in the gui field. # characters. We apply then this limit in the gui field.
@ -138,7 +147,7 @@ class InputDialog(GenericDialog):
self.__ui.txtSmeshObject.setEnabled(False) self.__ui.txtSmeshObject.setEnabled(False)
self.__ui.btnAddInput.setEnabled(False) self.__ui.btnAddInput.setEnabled(False)
self.__selectedMesh = None self.__selectedMesh = None
self.__dictInputData = {} self.__dictInputFiles = {}
self.__nbConcreteMesh = 0 self.__nbConcreteMesh = 0
self.__nbSteelbarMesh = 0 self.__nbSteelbarMesh = 0
@ -231,7 +240,7 @@ class InputDialog(GenericDialog):
""" """
# if the entry already exists, we remove it to replace by a # if the entry already exists, we remove it to replace by a
# new one # new one
if meshName in self.__dictInputData: if meshName in self.__dictInputFiles:
self.__delInputFromMap(meshName) self.__delInputFromMap(meshName)
inputData = InputData() inputData = InputData()
@ -240,7 +249,7 @@ class InputDialog(GenericDialog):
inputData.meshType = meshType inputData.meshType = meshType
inputData.groupName = groupName inputData.groupName = groupName
# The key of the map is the mesh name # The key of the map is the mesh name
self.__dictInputData[meshName] = inputData self.__dictInputFiles[meshName] = inputData
if inputData.meshType == InputData.MESHTYPES.CONCRETE: if inputData.meshType == InputData.MESHTYPES.CONCRETE:
self.__nbConcreteMesh += 1 self.__nbConcreteMesh += 1
else: else:
@ -272,7 +281,7 @@ class InputDialog(GenericDialog):
This function removes the specified entry from the internal This function removes the specified entry from the internal
map (for data management purpose) map (for data management purpose)
""" """
inputData = self.__dictInputData.pop(meshName) inputData = self.__dictInputFiles.pop(meshName)
if inputData.meshType == InputData.MESHTYPES.CONCRETE: if inputData.meshType == InputData.MESHTYPES.CONCRETE:
self.__nbConcreteMesh -= 1 self.__nbConcreteMesh -= 1
else: else:
@ -283,33 +292,51 @@ class InputDialog(GenericDialog):
print("nb steelbar mesh ",self.__nbSteelbarMesh) print("nb steelbar mesh ",self.__nbSteelbarMesh)
def setData(self, listInputData=[]): def setData(self, dictInputData={}):
""" """
This function fills the dialog widgets with values provided by This function fills the dialog widgets with values provided by
the specified data list. the specified data list.
""" """
self.clear() self.clear()
for inputData in listInputData: if INPUTDATA_KEY_FILES in dictInputData:
listInputData = dictInputData["meshfiles"]
for inputData in listInputData:
meshName = inputData.meshName meshName = inputData.meshName
meshObject = inputData.meshObject meshObject = inputData.meshObject
meshType = inputData.meshType meshType = inputData.meshType
groupName = inputData.groupName groupName = inputData.groupName
self.__addInputInGui(meshName, meshObject, meshType, groupName) self.__addInputInGui(meshName, meshObject, meshType, groupName)
self.__addInputInMap(meshName, meshObject, meshType, groupName) self.__addInputInMap(meshName, meshObject, meshType, groupName)
if not DEBUG_MODE: if not DEBUG_MODE:
self.onSelectSmeshObject() self.onSelectSmeshObject()
if INPUTDATA_KEY_PARAM in dictInputData:
dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
if PARAM_KEY_NBITER in dictInputParameters:
self.__ui.txtParamNbIter.setValue(dictInputParameters[PARAM_KEY_NBITER])
if PARAM_KEY_RMAXRMIN in dictInputParameters:
self.__ui.txtParamRminRmax.setValue(dictInputParameters[PARAM_KEY_RMAXRMIN])
def getData(self): def getData(self):
""" """
This function returns a list of InputData that corresponds to This function returns a list of InputData that corresponds to
the data in the dialog widgets of the current dialog. the data in the dialog widgets of the current dialog.
""" """
# Get the list of mesh files
# Note that the values() function returns a copy of the list # Note that the values() function returns a copy of the list
# of values. # of values.
return list(self.__dictInputData.values()) dictInputData={}
dictInputData[INPUTDATA_KEY_FILES] = self.__dictInputFiles.values()
# Get the list of additionnal parameters
dictInputParameters = {}
dictInputParameters[PARAM_KEY_NBITER] = self.__ui.txtParamNbIter.value()
dictInputParameters[PARAM_KEY_RMAXRMIN] = self.__ui.txtParamRmaxRmin.value()
dictInputData[INPUTDATA_KEY_PARAM] = dictInputParameters
return dictInputData
def checkData(self): def checkData(self):
""" """
@ -328,7 +355,6 @@ class InputDialog(GenericDialog):
return True return True
#def setParameters(self,
# ============================================================================== # ==============================================================================
# Basic use case # Basic use case

View File

@ -111,7 +111,7 @@
</property> </property>
<item> <item>
<property name="text"> <property name="text">
<string>Béton</string> <string>Beton</string>
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset>
@ -213,9 +213,9 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="lblParamRminRmax"> <widget class="QLabel" name="lblParamRmaxRmin">
<property name="text"> <property name="text">
<string>Rmin / Rmax</string> <string>Rmax / Rmin</string>
</property> </property>
</widget> </widget>
</item> </item>
@ -227,7 +227,7 @@
<widget class="QSpinBox" name="txtParamNbIter"/> <widget class="QSpinBox" name="txtParamNbIter"/>
</item> </item>
<item> <item>
<widget class="QDoubleSpinBox" name="txtParamRminRmax"/> <widget class="QDoubleSpinBox" name="txtParamRmaxRmin"/>
</item> </item>
</layout> </layout>
</item> </item>

View File

@ -23,7 +23,8 @@
from qtsalome import QDialog, QIcon, Qt from qtsalome import QDialog, QIcon, Qt
from salome.smesh.spadder.gui.plugindialog_ui import Ui_PluginDialog from salome.smesh.spadder.gui.plugindialog_ui import Ui_PluginDialog
from salome.smesh.spadder.gui.inputdialog import InputDialog from salome.smesh.spadder.gui.inputdialog import InputDialog, INPUTDATA_KEY_FILES, INPUTDATA_KEY_PARAM
from salome.smesh.spadder.gui.inputdialog import PARAM_KEY_NBITER, PARAM_KEY_RMAXRMIN
from salome.smesh.spadder.gui.inputdata import InputData from salome.smesh.spadder.gui.inputdata import InputData
# __GBO__: uncomment this line and comment the previous one to use the # __GBO__: uncomment this line and comment the previous one to use the
# demo input dialog instead of the real one. # demo input dialog instead of the real one.
@ -218,6 +219,7 @@ class PluginDialog(QDialog):
This function clears the log area and the states of the buttons This function clears the log area and the states of the buttons
""" """
self.__listInputData = [] self.__listInputData = []
self.__dictInputParameters = {}
self.__ui.txtLog.clear() self.__ui.txtLog.clear()
self.__setGuiState(["CAN_SELECT"]) self.__setGuiState(["CAN_SELECT"])
self.__isRunning = False self.__isRunning = False
@ -241,7 +243,10 @@ class PluginDialog(QDialog):
windows to process the validation event (see the slot windows to process the validation event (see the slot
onProcessInput which is connected to this event). onProcessInput which is connected to this event).
''' '''
self.__inputDialog.setData(self.__listInputData) dictInputData = {}
dictInputData[INPUTDATA_KEY_FILES] = self.__listInputData
dictInputData[INPUTDATA_KEY_PARAM] = self.__dictInputParameters
self.__inputDialog.setData(dictInputData)
self.__inputDialog.open() self.__inputDialog.open()
def onProcessInput(self): def onProcessInput(self):
@ -252,7 +257,10 @@ class PluginDialog(QDialog):
""" """
# The processing simply consists in requesting the input data # The processing simply consists in requesting the input data
# from the dialog window. # from the dialog window.
self.__listInputData = self.__inputDialog.getData() dictInputData = self.__inputDialog.getData()
self.__listInputData = dictInputData[INPUTDATA_KEY_FILES]
self.__dictInputParameters = dictInputData[INPUTDATA_KEY_PARAM]
self.__ui.lblStatusBar.setText("Input data OK") self.__ui.lblStatusBar.setText("Input data OK")
self.__log("INF: Press \"Compute\" to start the job") self.__log("INF: Press \"Compute\" to start the job")
self.__setGuiState(["CAN_SELECT", "CAN_COMPUTE"]) self.__setGuiState(["CAN_SELECT", "CAN_COMPUTE"])
@ -283,8 +291,16 @@ class PluginDialog(QDialog):
group_name = inputData.groupName) group_name = inputData.groupName)
meshJobFileList.append(parameter) meshJobFileList.append(parameter)
# And to create a list of the additional parameters.
# WARN: the CORBA interface requires string values.
meshJobParameterList=[]
for inputParameterKey in self.__dictInputParameters:
value = self.__dictInputParameters[inputParameterKey]
parameter = MESHJOB.MeshJobParameter(name=inputParameterKey,value=str(value))
meshJobParameterList.append(parameter)
jobManager = self.__getJobManager() jobManager = self.__getJobManager()
self.__jobid = jobManager.initialize(meshJobFileList, self.__configId) self.__jobid = jobManager.initialize(meshJobFileList, meshJobParameterList, self.__configId)
if self.__jobid < 0: if self.__jobid < 0:
self.__log("ERR: the job can't be initialized") self.__log("ERR: the job can't be initialized")
self.__log("ERR: %s"%jobManager.getLastErrorMessage()) self.__log("ERR: %s"%jobManager.getLastErrorMessage())

View File

@ -83,7 +83,7 @@ PADDERTESTDIR = getPadderTestDir(defaultConfig)
# padder.cfg). # padder.cfg).
# #
def test00_parameters(): def test00_parameters():
"""Test using a concrete mesh and a single steelbar mesh""" """Test using a concrete mesh and a single steelbar mesh"""
file_concrete=os.path.join(spadder.getTestDataDir(),"concrete.med") file_concrete=os.path.join(spadder.getTestDataDir(),"concrete.med")
file_steelbar=os.path.join(spadder.getTestDataDir(),"ferraill.med") file_steelbar=os.path.join(spadder.getTestDataDir(),"ferraill.med")
@ -109,7 +109,7 @@ def test01_parameters():
file_type=MESHJOB.MED_CONCRETE, file_type=MESHJOB.MED_CONCRETE,
group_name="concrete") group_name="concrete")
meshJobFileList.append(param) meshJobFileList.append(param)
medfile = os.path.join(datadir,"ferraill.med") medfile = os.path.join(datadir,"ferraill.med")
param = MESHJOB.MeshJobFile(file_name=medfile, param = MESHJOB.MeshJobFile(file_name=medfile,
file_type=MESHJOB.MED_STEELBAR, file_type=MESHJOB.MED_STEELBAR,
@ -121,7 +121,7 @@ def test01_parameters():
file_type=MESHJOB.MED_STEELBAR, file_type=MESHJOB.MED_STEELBAR,
group_name="ferrtran") group_name="ferrtran")
meshJobFileList.append(param) meshJobFileList.append(param)
return meshJobFileList return meshJobFileList
def test02_parameters(): def test02_parameters():
@ -161,7 +161,7 @@ def test03_parameters():
meshJobFileList = test03_parameters() meshJobFileList = test03_parameters()
meshJobParameterList = [] meshJobParameterList = []
param = MESHJOB.MeshJobParameter(name="RminRmax",value="1.5") param = MESHJOB.MeshJobParameter(name="RmaxRmin",value="1.5")
meshJobParameterList.append(param) meshJobParameterList.append(param)
param = MESHJOB.MeshJobParameter(name="NbIteration",value="3") param = MESHJOB.MeshJobParameter(name="NbIteration",value="3")
meshJobParameterList.append(param) meshJobParameterList.append(param)
@ -174,7 +174,7 @@ if jobid<0:
msg = component.getLastErrorMessage() msg = component.getLastErrorMessage()
print("ERR: %s"%msg) print("ERR: %s"%msg)
sys.exit(1) sys.exit(1)
created = False created = False
nbiter = 0 nbiter = 0
while not created: while not created:
@ -217,11 +217,11 @@ while not ended:
ended=True ended=True
time.sleep(0.5) time.sleep(0.5)
nbiter+=1 nbiter+=1
if state not in end_states: if state not in end_states:
print("ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state)) print("ERR: jobid = "+str(jobid)+" ended abnormally with state="+str(state))
msg = component.getLastErrorMessage() msg = component.getLastErrorMessage()
print("ERR: %s"%msg) print("ERR: %s"%msg)
else: else:
print("OK: jobid = "+str(jobid)+" ended with state="+str(state)) print("OK: jobid = "+str(jobid)+" ended with state="+str(state))
meshJobResults = component.finalize(jobid) meshJobResults = component.finalize(jobid)