| **Write()** |
| Writes the schema into the file ``schema.xml``, in the |
| directory of the case |
+| Writes the schema into the file of the schema |
+| By default, it is the file ``schema.xml``, in the |
+| directory of the case. If ``WriteOnFile`` was used before |
+| the writings are into this new file. |
| |
| Returns an integer: |
| * 0: the writing is done |
| Returns the name of the MED file of the very first mesh |
| for the computation |
+---------------------------------------------------------------+
+| .. module:: SetXMLFile |
+| |
+| **SetXMLFile(xml_file)** |
+| Defines the xml file |
+| |
+| - ``mesh_file`` : the name of the xml file |
++---------------------------------------------------------------+
+| .. module:: GetXMLFile |
+| |
+| **GetXMLFile()** |
+| Returns the name of the xml file |
++---------------------------------------------------------------+
Example
| .. module:: Write |
| |
| **Write()** |
-| Ecrit le schéma dans le fichier ``schema.xml``, dans le |
-| répertoire du cas |
+| Ecrit le schéma dans le fichier lié au schéma |
+| Par défaut, c'est le fichier ``schema.xml``, dans le |
+| répertoire du cas. Si ``WriteOnFile`` a été utilisé |
+| auparavant, l'écriture a lieu dans le nouveau fichier. |
| |
| Retourne un entier : |
| * 0 : écriture réussie |
| Retourne le nom du fichier MED du tout premier maillage |
| de calcul |
+---------------------------------------------------------------+
+| .. module:: SetXMLFile |
+| |
+| **SetXMLFile(xml_file)** |
+| Définit le fichier xml pour l'écriture |
+| |
+| - ``xml_file`` : le nom du fichier xml |
++---------------------------------------------------------------+
+| .. module:: GetXMLFile |
+| |
+| **GetXMLFile()** |
+| Retourne le nom du fichier xml |
++---------------------------------------------------------------+
Exemple
void SetScriptFile(in string ScriptFile) raises (SALOME::SALOME_Exception);
string GetScriptFile() raises (SALOME::SALOME_Exception);
+ void SetXMLFile(in string XMLFile) raises (SALOME::SALOME_Exception);
+ string GetXMLFile() raises (SALOME::SALOME_Exception);
+
long Write() raises (SALOME::SALOME_Exception);
long WriteOnFile( in string YACSFile ) raises (SALOME::SALOME_Exception);
return _ScriptFile;
}
//=============================================================================
+void HOMARD_YACS::SetXMLFile( const char* XMLFile )
+{
+ _XMLFile = std::string( XMLFile );
+}
+//=============================================================================
+std::string HOMARD_YACS::GetXMLFile() const
+{
+ return _XMLFile;
+}
+//=============================================================================
//=============================================================================
// Liens avec les autres structures
//=============================================================================
void SetScriptFile( const char* ScriptFile );
std::string GetScriptFile() const;
+ void SetXMLFile( const char* XMLFile );
+ std::string GetXMLFile() const;
+
// Liens avec les autres structures
void SetCaseName( const char* NomCas );
std::string GetCaseName() const;
std::string _MeshFile;
std::string _ScriptFile;
int _Type;
+ std::string _XMLFile;
};
#endif
//=============================================================================
//=============================================================================
-YACSDriver::YACSDriver(const std::string YACSFile, const std::string DirName):
- _YACSFile( "" ), _DirName( "" ),
+YACSDriver::YACSDriver(const std::string XMLFile, const std::string DirName):
+ _XMLFile( "" ), _DirName( "" ),
_Texte( "" ),
_Texte_parametres( "" ),
_noeud_1( "CreateHypothesis" ),
_bLu( false )
{
- MESSAGE("YACSFile = "<<YACSFile<<", DirName ="<<DirName);
- _YACSFile = YACSFile;
+ MESSAGE("XMLFile = "<<XMLFile<<", DirName ="<<DirName);
+ _XMLFile = XMLFile;
_DirName = DirName;
}
//=============================================================================
void YACSDriver::CreeFichier( )
{
//
- MESSAGE("CreeFichier sur le fichier "<<_YACSFile);
- std::ofstream Fic(_YACSFile.c_str(), std::ios::out ) ;
+ MESSAGE("CreeFichier sur le fichier "<<_XMLFile);
+ std::ofstream Fic(_XMLFile.c_str(), std::ios::out ) ;
if (Fic.is_open() == true) { Fic << _Texte << std::endl ; }
Fic.close() ;
//
class YACSDriver
{
public:
- YACSDriver(const std::string YACSFile, const std::string DirName) ;
+ YACSDriver(const std::string XMLFile, const std::string DirName) ;
~YACSDriver() ;
//
void TexteAdd( const std::string ligne ) ;
//
public:
- std::string _YACSFile ;
+ std::string _XMLFile ;
std::string _DirName ;
std::string _Texte ;
std::string _Texte_parametres ;
_PTR(SObject) obj = chercheMonObjet();
if (obj)
{
- // Suppression d'un cas
- if (HOMARD_UTILS::isCase(obj))
+ // Suppression d'une frontiere
+ if ( HOMARD_UTILS::isBoundaryDi(obj) or HOMARD_UTILS::isBoundaryAn(obj) )
{
try
- { homardGen->DeleteCase(_ObjectName.toStdString().c_str(), 1); }
+ { homardGen->DeleteBoundary(_ObjectName.toStdString().c_str()); }
catch( SALOME::SALOME_Exception& S_ex )
{
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
return false;
}
}
- // Suppression d'une iteration
- else if (HOMARD_UTILS::isIter(obj))
+ // Suppression d'un cas
+ else if (HOMARD_UTILS::isCase(obj))
{
try
- { homardGen->DeleteIteration(_ObjectName.toStdString().c_str(), 1); }
+ { homardGen->DeleteCase(_ObjectName.toStdString().c_str(), 1); }
catch( SALOME::SALOME_Exception& S_ex )
{
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
return false;
}
}
- // Suppression d'une zone
- else if (HOMARD_UTILS::isZone(obj))
+ // Suppression d'une iteration
+ else if (HOMARD_UTILS::isIter(obj))
{
try
- { homardGen->DeleteZone(_ObjectName.toStdString().c_str()); }
+ { homardGen->DeleteIteration(_ObjectName.toStdString().c_str(), 1); }
catch( SALOME::SALOME_Exception& S_ex )
{
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
return false;
}
}
- // Suppression d'une frontiere
- else if ( HOMARD_UTILS::isBoundaryDi(obj) or HOMARD_UTILS::isBoundaryAn(obj) )
+ // Suppression d'un schema YACS
+ else if (HOMARD_UTILS::isYACS(obj))
{
try
- { homardGen->DeleteBoundary(_ObjectName.toStdString().c_str()); }
+ { homardGen->DeleteYACS(_ObjectName.toStdString().c_str(), 1); }
+ catch( SALOME::SALOME_Exception& S_ex )
+ {
+ QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
+ QObject::tr(CORBA::string_dup(S_ex.details.text)) );
+ getApp()->updateObjectBrowser();
+ return false;
+ }
+ }
+ // Suppression d'une zone
+ else if (HOMARD_UTILS::isZone(obj))
+ {
+ try
+ { homardGen->DeleteZone(_ObjectName.toStdString().c_str()); }
catch( SALOME::SALOME_Exception& S_ex )
{
QMessageBox::critical( 0, QObject::tr("HOM_ERROR"),
{
// Option = 0 : On ne supprime pas le fichier du schema associe
// Option = 1 : On supprime le fichier du schema associe
- // Pour detruire une iteration courante
MESSAGE ( "DeleteYACS : nomYACS = " << nomYACS << ", avec option = " << Option );
HOMARD::HOMARD_YACS_var myYACS = myContextMap[GetCurrentStudyID()]._mesYACSs[nomYACS];
if (CORBA::is_nil(myYACS))
throw SALOME::SALOME_Exception(es);
return 1 ;
};
- ASSERT("Programmer le menage du fichier"!=0);
+ // Suppression eventuelle du fichier XML
+ if ( Option == 1 )
+ {
+ std::string nomFichier = myYACS->GetXMLFile();
+ std::string commande = "rm -rf " + nomFichier ;
+ MESSAGE ( "commande = " << commande );
+ if ((system(commande.c_str())) != 0)
+ {
+ SALOME::ExceptionStruct es;
+ es.type = SALOME::BAD_PARAM;
+ es.text = "The xml file for the schema YACS cannot be removed." ;
+ throw SALOME::SALOME_Exception(es);
+ return 2 ;
+ }
+ }
// comme on a un _var comme pointeur CORBA, on ne se preoccupe pas du delete
myContextMap[GetCurrentStudyID()]._mesYACSs.erase(nomYACS);
SALOMEDS::Study::ListOfSObject_var listSO = myCurrentStudy->FindObjectByName(nomYACS, ComponentDataType());
};
std::string nomDir = myIteration->GetDirName();
std::string nomFichier = myIteration->GetMeshFile();
- std::string commande= "rm -rf " + std::string(nomDir);
+ std::string commande = "rm -rf " + std::string(nomDir);
if ( Option == 1 ) { commande = commande + ";rm -rf " + std::string(nomFichier) ; }
MESSAGE ( "commande = " << commande );
if ((system(commande.c_str())) != 0)
if (etatMenage == 1)
{
MESSAGE (". Menage du repertoire DirCompute = " << DirCompute.str());
- std::string commande= "rm -rf " + DirCompute.str()+"/*" ;
+ std::string commande = "rm -rf " + DirCompute.str()+"/*" ;
int codret = system(commande.c_str());
if (codret != 0)
{
aResultSO = PublishCaseInStudy(theStudy, aStudyBuilder, aCase, theName);
else if(!aHypo->_is_nil())
aResultSO = PublishHypotheseInStudy(theStudy, aStudyBuilder, aHypo, theName);
- else if(!aZone->_is_nil())
- aResultSO = PublishZoneInStudy(theStudy, aStudyBuilder, aZone, theName);
else if(!aYACS->_is_nil())
aResultSO = PublishYACSInStudy(theStudy, aStudyBuilder, aYACS, theName);
+ else if(!aZone->_is_nil())
+ aResultSO = PublishZoneInStudy(theStudy, aStudyBuilder, aZone, theName);
aStudyBuilder->CommitCommand();
PublishCaseUnderYACS(nomYACS, nomCas);
// D. Caracterisation
+ // D.1. Options
myYACS->SetDirName( DirName ) ;
myYACS->SetMeshFile( MeshFile ) ;
myYACS->SetScriptFile( ScriptFile ) ;
myYACS->SetCaseName( nomCas ) ;
+ // D.2. Defaut
+ // D.2.1. Type constant
myYACS->SetType( 1 ) ;
+ // D.2.2. Fichier de sauvegarde dans le repertoire du cas
+ HOMARD::HOMARD_Cas_ptr caseyacs = GetCase(nomCas) ;
+ std::string dirnamecase = caseyacs->GetDirName() ;
+ std::string XMLFile ;
+ XMLFile = dirnamecase + "/schema.xml" ;
+ myYACS->SetXMLFile( XMLFile.c_str() ) ;
return HOMARD::HOMARD_YACS::_duplicate(myYACS);
}
// Le repertoire du cas
HOMARD::HOMARD_YACS_var myYACS = myContextMap[GetCurrentStudyID()]._mesYACSs[nomYACS];
ASSERT(!CORBA::is_nil(myYACS));
- std::string casename = myYACS->GetCaseName() ;
- HOMARD::HOMARD_Cas_ptr caseyacs = GetCase(casename.c_str()) ;
- std::string dirnamecase = caseyacs->GetDirName() ;
-// Le nom par defaut du fichier du schema
- std::string YACSFile ;
- YACSFile = dirnamecase + "/schema.xml" ;
+// Le nom du fichier du schema
+ std::string XMLFile ;
+ XMLFile = myYACS->GetXMLFile() ;
- int codret = YACSWriteOnFile(nomYACS, YACSFile.c_str()) ;
+ int codret = YACSWriteOnFile(nomYACS, XMLFile.c_str()) ;
return codret ;
}
//=============================================================================
-// Ecriture d'un schema YACS
+// Ecriture d'un schema YACS sur un fichier donne
//=============================================================================
-CORBA::Long HOMARD_Gen_i::YACSWriteOnFile(const char* nomYACS, const char* YACSFile)
+CORBA::Long HOMARD_Gen_i::YACSWriteOnFile(const char* nomYACS, const char* XMLFile)
{
- INFOS ( "YACSWriteOnFile : Ecriture de " << nomYACS << " sur " << YACSFile );
+ INFOS ( "YACSWriteOnFile : Ecriture de " << nomYACS << " sur " << XMLFile );
// A. Prealable
int codret = 0;
// F. Le fichier du schema de reference
// HOMARD_ROOT_DIR : repertoire ou se trouve le module HOMARD
- std::string YACSFile_base ;
- if ( getenv("HOMARD_ROOT_DIR") != NULL ) { YACSFile_base = getenv("HOMARD_ROOT_DIR") ; }
+ std::string XMLFile_base ;
+ if ( getenv("HOMARD_ROOT_DIR") != NULL ) { XMLFile_base = getenv("HOMARD_ROOT_DIR") ; }
else
{
SALOME::ExceptionStruct es ;
throw SALOME::SALOME_Exception(es);
return 0;
}
- YACSFile_base += "/share/salome/resources/homard/yacs_01." + _LangueShort + ".xml" ;
+ XMLFile_base += "/share/salome/resources/homard/yacs_01." + _LangueShort + ".xml" ;
// if ( _Langue ==
- MESSAGE("YACSFile_base ="<<YACSFile_base);
+ MESSAGE("XMLFile_base ="<<XMLFile_base);
// G. Lecture du schema de reference et insertion des donnees propres au fil de la rencontre des mots-cles
- YACSDriver* myDriver = new YACSDriver(YACSFile, DirName);
- std::ifstream fichier( YACSFile_base.c_str() );
+ YACSDriver* myDriver = new YACSDriver(XMLFile, DirName);
+ std::ifstream fichier( XMLFile_base.c_str() );
if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
{
// G.1. Lecture du schema de reference et insertion des donnees propres au fil de la rencontre des mots-cles
// H. Publication du fichier dans l'arbre
std::string Commentaire = "xml" ;
- PublishFileUnderYACS(nomYACS, YACSFile, Commentaire.c_str());
+ PublishFileUnderYACS(nomYACS, XMLFile, Commentaire.c_str());
return codret ;
}
// YACS
HOMARD::HOMARD_YACS_ptr CreateYACSSchema (const char* YACSName, const char* nomCas, const char* ScriptFile, const char* DirName, const char* MeshFile);
CORBA::Long YACSWrite(const char* nomYACS);
- CORBA::Long YACSWriteOnFile(const char* nomYACS, const char* YACSFile);
+ CORBA::Long YACSWriteOnFile(const char* nomYACS, const char* XMLFile);
std::string YACSDriverTexteZone(HOMARD::HOMARD_Hypothesis_var myHypo, YACSDriver* myDriver);
std::string YACSDriverTexteBoundary(HOMARD::HOMARD_Cas_var myCase, YACSDriver* myDriver);
return CORBA::string_dup( myHomardYACS->GetScriptFile().c_str() );
}
//=============================================================================
+void HOMARD_YACS_i::SetXMLFile( const char* XMLFile )
+{
+ ASSERT( myHomardYACS );
+ MESSAGE ( "SetXMLFile : SetXMLFile = " << XMLFile );
+ myHomardYACS->SetXMLFile( XMLFile );
+}
+//=============================================================================
+char* HOMARD_YACS_i::GetXMLFile()
+{
+ ASSERT( myHomardYACS );
+ return CORBA::string_dup( myHomardYACS->GetXMLFile().c_str() );
+}
+//=============================================================================
//=============================================================================
// Liens avec les autres structures
//=============================================================================
//=============================================================================
CORBA::Long HOMARD_YACS_i::Write()
{
- MESSAGE ( "Write : ecriture du schema");
//
char* nomYACS = GetName() ;
return _gen_i->YACSWrite(nomYACS) ;
}
//=============================================================================
-CORBA::Long HOMARD_YACS_i::WriteOnFile( const char* YACSFile )
+CORBA::Long HOMARD_YACS_i::WriteOnFile( const char* XMLFile )
{
- MESSAGE ( "WriteOnFile : ecriture du schema sur " << YACSFile );
+ MESSAGE ( "WriteOnFile : ecriture du schema sur " << XMLFile );
ASSERT( myHomardYACS );
//
+// Memorisation du fichier associe
+ SetXMLFile( XMLFile ) ;
+//
// Nom du schema
char* nomYACS = GetName() ;
- MESSAGE ( "WriteOnFile : ecriture du schema " << nomYACS);
- return _gen_i->YACSWriteOnFile(nomYACS, YACSFile) ;
+ return _gen_i->YACSWriteOnFile(nomYACS, XMLFile) ;
}
//=============================================================================
//=============================================================================
void SetScriptFile( const char* ScriptFile );
char* GetScriptFile();
+ void SetXMLFile( const char* XMLFile );
+ char* GetXMLFile();
CORBA::Long Write() ;
- CORBA::Long WriteOnFile( const char* YACSFile ) ;
+ CORBA::Long WriteOnFile( const char* XMLFile ) ;
// Liens avec les autres structures
void SetCaseName( const char* NomCas );