]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
Sous Epaisseur version initiale
authorPascale Noyret <pascale.noyret@edf.fr>
Tue, 7 Jul 2009 08:16:39 +0000 (08:16 +0000)
committerPascale Noyret <pascale.noyret@edf.fr>
Tue, 7 Jul 2009 08:16:39 +0000 (08:16 +0000)
14 files changed:
InterfaceQT4/editor.py
Sous_epaisseur/SEP_Cata_V0.py [new file with mode: 0644]
Sous_epaisseur/SEP_Cata_V1.py [new file with mode: 0644]
Sous_epaisseur/__init__.py [new file with mode: 0644]
Sous_epaisseur/catalogues_sep.ini [new file with mode: 0644]
Sous_epaisseur/configuration_SEP.py [new file with mode: 0644]
Sous_epaisseur/editeur.ini [new file with mode: 0644]
Sous_epaisseur/prefs.py [new file with mode: 0644]
Sous_epaisseur/prefs_SEP.py [new file with mode: 0644]
Sous_epaisseur/properties.py [new file with mode: 0644]
Sous_epaisseur/qtEficas_SEP.py [new file with mode: 0755]
Sous_epaisseur/sdistSEP.py [new file with mode: 0644]
Sous_epaisseur/style.py [new file with mode: 0644]
generator/generator_SEP.py

index 74b0ec27c92caf5786839c92692c46d58bfcdd6f..7bca6d9c4d5ff7ec935c94f5493d17c28a8ab049 100644 (file)
@@ -583,7 +583,7 @@ class JDCEditor(QSplitter):
             try : 
             #if 1 :
                self.tubePy=self.generator.getTubePy()
-               fileTube = '/tmp/tube.py'
+               fileTube = fn[:fn.rfind(".")] + '.py'
                if self.tubePy != '' :
                   f=open(fileTube,'w')
                   f.write(self.tubePy)
diff --git a/Sous_epaisseur/SEP_Cata_V0.py b/Sous_epaisseur/SEP_Cata_V0.py
new file mode 100644 (file)
index 0000000..9a0097b
--- /dev/null
@@ -0,0 +1,33 @@
+## -*- coding: utf-8 -*-
+#
+## --------------------------------------------------
+## debut entete
+## --------------------------------------------------
+#
+from Accas import *
+#
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'SEP',
+                 execmodul = None,
+                # regles = ( AU_MOINS_UN ( 'M_TUBE','MAILLAGE_COUDE','CHARGE_LIMITE ), ),
+                 regles = ( AU_MOINS_UN ( 'S_EP_INTERNE',), ),
+                 ) # Fin JDC_CATA
+#
+
+S_EP_INTERNE= MACRO (nom       = 'S_EP_INTERNE',
+              op        = None,
+              sd_prod   = None,
+              reentrant = 'n',
+              UIinfo    = {"groupes":("Outils métier",)},
+              fr        = "Sous epaisseur  ",
+              dir_name  = SIMP(statut='o', typ='TXM',),
+              methode   = SIMP(statut='o', typ='TXM',into=('generatrices','tortue',),),
+              PARA_GEOM = FACT( statut='o',
+                               max=1,
+                               r_ext=SIMP(statut='o', typ='R', defaut=228.6,val_min=100,val_max=300),
+                               unite=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),),
+                               ep_nominale=SIMP(statut='o', typ='R', defaut=22.000),   
+                               ),
+)
+
+
diff --git a/Sous_epaisseur/SEP_Cata_V1.py b/Sous_epaisseur/SEP_Cata_V1.py
new file mode 100644 (file)
index 0000000..cfc72b7
--- /dev/null
@@ -0,0 +1,126 @@
+## -*- coding: utf-8 -*-
+#
+## --------------------------------------------------
+## debut entete
+## --------------------------------------------------
+#
+from Accas import *
+
+#
+#CONTEXT.debug = 1
+JdC = JDC_CATA ( code = 'SEP',
+                execmodul = None,
+                # regles=(AU_MOINS_UN('SOUS_EPAISSEUR_INTERNE','SOUS_EPAISSEUR_EXTERNE',),),
+                  regles=( UN_PARMI('S_EP_INTERNE','MACRO_OUTIL1','MACRO_OUTIL2'),),
+                       )# Fin JDC_CATA
+#
+
+
+S_EP_INTERNE= MACRO (nom       = 'S_EP_INTERNE',
+              op        = None,
+              sd_prod   = None,
+              reentrant = 'n',
+              UIinfo    = {"groupes":("Outils métier",)},
+              fr        = "sous epaisseur  ",
+              dir_name  = SIMP(statut='o', typ='TXM',),
+              TYPE_SEP = SIMP(statut='o', typ='TXM',into=('TUBE_SOUS_EPAISSEUR','COUDE_SOUS_EPAISSEUR',)),
+              b_tube_sous_epaisseur =BLOC(condition = "TYPE_SEP == 'TUBE_SOUS_EPAISSEUR' ",
+              regles = (AU_MOINS_UN('MAIL_TUBE','CHARGE_LIMITE')),
+              MAIL_TUBE = FACT( statut='f',max='**',
+            fr        = "Parametres maillage du tube  ",
+            unite_longueur=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),),
+                               r_ext=SIMP(statut='o', typ='R', defaut=228.6,val_min=100,val_max=300, fr="rayon exterieur du tube"),
+                          ep_nominale=SIMP(statut='o', typ='R', defaut=22.0, fr="epaisseur nominale du tube sans sous epaisseur"),
+            nb_seg_amortissement=SIMP(statut='o', typ='I', defaut=11, fr="nombre de segments dans la longueur d'amortissement"),
+            nb_seg_transition=SIMP(statut='o', typ='I', defaut=4, fr="nombre de segments dans longueur de transition"),
+            nb_seg_generatrices=SIMP(statut='o', typ='I', defaut=5, fr="nombre de segments dans la longueur des génératrices dans la zone de sous épaisseur"),
+            petite_distance=SIMP(statut='o', typ='R', defaut=100.0, fr="distance entre deux abscisses de points de mesure au dessous de laquelle on discrétise avec nb_seg_petites_distances au lieu de nb_seg_generatrices"),
+            nb_seg_petites_distances=SIMP(statut='o', typ='I', defaut=3, fr="nombre de segments dans les aretes dont la longueur est inferieur a petite distance"),
+            nb_seg_arc=SIMP(statut='o', typ='I', defaut=5, fr="nombre de segments dans l'arc du tube entre deux generatrices"),
+            nb_seg_ep=SIMP(statut='o', typ='I', defaut=3, fr="nombre de segments dans l'epaisseur du tube"),
+                                          ),
+            CHARGE_LIMITE = FACT( statut='f',max='**',
+            fr        = "Parametres pour calcul de charge limite  ",
+            unite_mem=SIMP(statut='o', typ='TXM', defaut='Mo',into=('Mo',),),
+            memoire=SIMP(statut='o', typ='R', defaut=4096.,val_min=4096.,val_max=8000.),
+            unite_temps=SIMP(statut='o', typ='TXM', defaut='h',into=('h',),),
+            temps=SIMP(statut='o', typ='R', defaut=50.),
+            version_aster=SIMP(statut='o', typ='TXM', defaut='STA8',into=('STA8','STA9','STA9_mpi'),),
+            unite_sig=SIMP(statut='o', typ='TXM', defaut='MPa',into=('PA','MPa'),),
+            E=SIMP(statut='o', typ='R', defaut=200000., fr="Module d'Young"),
+            NU=SIMP(statut='o', typ='R', defaut=0.3, fr="coefficient de poisson"),
+            SY=SIMP(statut='o', typ='R', defaut=98.7, fr="limite d'elasticite"),
+            D_SIGM_EPSI=SIMP(statut='o', typ='R', defaut=100.0, fr="pente de la courbe d'ecrouissage"),
+                               ),
+            ),
+           b_coude_sous_epaisseur =BLOC(condition = "TYPE_SEP == 'COUDE_SOUS_EPAISSEUR' ",
+              regles = (AU_MOINS_UN('MAIL_COUDE','CHARGE_LIMITE')),
+              MAIL_COUDE = FACT( statut='f',max='**',
+            fr        = "Parametres maillage du coude  ",
+            unite_longueur=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),),
+            R_coude=SIMP(statut='o', typ='R', defaut=381.,val_min=100,val_max=500,fr="rayon du coude"),
+            r_ext=SIMP(statut='o', typ='R', defaut=136.5,val_min=100,val_max=200,fr="rayon exterieur"),
+            ep_nominale=SIMP(statut='o', typ='R', defaut=15.1,fr="epaisseur nominale sans sous epaisseur"),
+            angle_coude=SIMP(statut='o', typ='R', defaut=90,fr="angle du coude"),
+            orientation_coude=SIMP(statut='o', typ='TXM', defaut='D',into=('D','G'),fr="orientation du coude"),
+            longueur_prolongement_amont=SIMP(statut='o', typ='R', defaut=150.,fr="longueur du prolongement amont"),
+            longueur_prolongement_aval=SIMP(statut='o', typ='R', defaut=150.,fr="longueur du prologenment aval"),
+            pas_mesure=SIMP(statut='o', typ='I', defaut=80,fr="pas de la mesure"),
+            debut_mesure=SIMP(statut='o', typ='R', defaut=40.,fr="distance de la premiere mesure"),
+            angle_mesure=SIMP(statut='o', typ='R', defaut=45.,fr="angle entre deux generatrices"),
+            nb_arcs_filling=SIMP(statut='o', typ='I', defaut=10,fr="nombre d'arcs a generer pour l'interpolations par arcs entre les generatrices"),
+            nb_seg_prolongement_amont = SIMP(statut='o', typ='I', defaut=6, fr="nombre de segments dans la longueur de prolongement amont"),
+            nb_seg_prolongement_aval  = SIMP(statut='o', typ='I', defaut=6, fr="nombre de segments dans la longueur de prolongement aval"),
+            nb_seg_amortissement=SIMP(statut='o', typ='R', defaut=11, fr="nombre de segments dans la longueur d'amortissement"),
+            nb_seg_transition=SIMP(statut='o', typ='R', defaut=4, fr="nombre de segments dans longueur de transition"),
+            nb_seg_generatrices=SIMP(statut='o', typ='R', defaut=5, fr="nombre de segments dans la longueur des génératrices dans la zone de sous épaisseur"),
+            nb_seg_arc_bas=SIMP(statut='o', typ='R', defaut=5, fr="nombre de segments dans l'arc du coude entre deux generatrices"),
+            nb_seg_ep=SIMP(statut='o', typ='R', defaut=3, fr="nombre de segments dans l'epaissuer"),
+                               ),
+            CHARGE_LIMITE = FACT( statut='f',max='**',
+            fr        = "Parametres pour calcul de charge limite  ",
+            unite_mem=SIMP(statut='o', typ='TXM', defaut='Mo',into=('Mo',),),
+            memoire=SIMP(statut='o', typ='R', defaut=4096,val_min=4096,val_max=8000),
+            unite_temps=SIMP(statut='o', typ='TXM', defaut='h',into=('h',),),
+            temps=SIMP(statut='o', typ='R', defaut=50.),
+            version_aster=SIMP(statut='o', typ='TXM', defaut='STA8',into=('STA8','STA9','STA9_mpi'),),
+            unite_sig=SIMP(statut='o', typ='TXM', defaut='MPa',into=('PA','MPa'),),
+            E=SIMP(statut='o', typ='R', defaut=200000, fr="Module d'Young"),
+            NU=SIMP(statut='o', typ='R', defaut=0.3, fr="coefficient de poisson"),
+            SY=SIMP(statut='o', typ='R', defaut=98.7, fr="limite d'elasticite"),
+            D_SIGM_EPSI=SIMP(statut='o', typ='R', defaut=100.0, fr="pente de la courbe d'ecrouissage"),
+                               ),
+            ),
+)
+
+
+MACRO_OUTIL1= MACRO (nom       = 'MACRO_OUTIL1',
+              op        = None,
+              sd_prod   = None,
+              reentrant = 'n',
+              UIinfo    = {"groupes":("Outils métier",)},
+              fr        = "Outil 1",
+              dir_name  = SIMP(statut='o', typ='TXM',),
+              PARA_GEOM = FACT( statut='o',
+                               max=1,
+                               r_ext=SIMP(statut='o', typ='R', defaut=228.6,val_min=100,val_max=300),
+                               unite=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),),
+                               ep_nominale=SIMP(statut='o', typ='R', defaut=22.000),   
+                               ),
+)
+
+MACRO_OUTIL2= MACRO (nom       = 'MACRO_OUTIL2',
+              op        = None,
+              sd_prod   = None,
+              reentrant = 'n',
+              UIinfo    = {"groupes":("Outils métier",)},
+              fr        = "Outil 2",
+              dir_name  = SIMP(statut='o', typ='TXM',),
+              PARA_GEOM = FACT( statut='o',
+                               max=1,
+                               r_ext=SIMP(statut='o', typ='R', defaut=228.6,val_min=100,val_max=300),
+                               unite=SIMP(statut='o', typ='TXM', defaut='mm',into=('mm',),),
+                               ep_nominale=SIMP(statut='o', typ='R', defaut=22.000),   
+                               ),
+)
+
diff --git a/Sous_epaisseur/__init__.py b/Sous_epaisseur/__init__.py
new file mode 100644 (file)
index 0000000..40a96af
--- /dev/null
@@ -0,0 +1 @@
+# -*- coding: utf-8 -*-
diff --git a/Sous_epaisseur/catalogues_sep.ini b/Sous_epaisseur/catalogues_sep.ini
new file mode 100644 (file)
index 0000000..68ba272
--- /dev/null
@@ -0,0 +1,10 @@
+# Choix des catalogues
+import os
+#rep_cata=os.path.dirname(os.path.abspath(__file__))
+rep_cata=os.getcwd()
+
+catalogues = (
+  #('SEP','V0',os.path.join(rep_cata,'SEP_Cata_V0.py'),'SEP','SEP'),
+  ('SEP','V1',os.path.join(rep_cata,'SEP_Cata_V1.py'),'SEP','SEP'),
+)
+
diff --git a/Sous_epaisseur/configuration_SEP.py b/Sous_epaisseur/configuration_SEP.py
new file mode 100644 (file)
index 0000000..def14dc
--- /dev/null
@@ -0,0 +1,193 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+"""
+    Ce module sert pour charger les paramètres de configuration d'EFICAS
+"""
+# Modules Python
+import os, sys, string, types, re
+import traceback
+from PyQt4.QtGui  import *
+
+# Modules Eficas
+from Editeur import utils
+
+class CONFIG:
+
+  #-----------------------------------
+  def __init__(self,appli,repIni):
+  #-----------------------------------
+
+  # Classe de base permettant de lire, afficher
+  # et sauvegarder les fichiers utilisateurs 
+  # On a deux directories : la directory generale (Repertoire d instal + Nom du code
+  #                       Par exemple : ~/Install_Eficas/EficasV1_14/Openturns_Wrapper
+  # et la directorie de l utilisateur 
+  #                      HOME/.Eficas_SousEp
+  # Le fichier prefs.py va etre lu dans la directory generale puis surcharge eventuellement 
+  # par celui de l utilisateur
+  # le fichier de catalogue va etre lu dans la directory de l utilisateur s il exite
+  # dans le fichier general sinon
+      self.appli   = appli  
+      self.code    = appli.code
+      self.salome  = appli.salome
+      self.repIni = repIni
+      self.fic_prefs ="prefs.py"
+
+      if self.appli: 
+         self.parent=appli.top
+         #self.appli.format_fichier="openturns_study"
+      else:         self.parent=None
+
+
+      self.labels=("rep_user","INSTALLDIR","path_doc","exec_acrobat","rep_cata","initialdir","savedir")
+
+      # Valeurs par defaut
+      self.rep_user     = os.path.join(os.environ['HOME'],'.Eficas_SousEp')
+      self.initialdir   = self.rep_user
+      self.path_doc     = self.rep_user
+      self.savedir      = self.rep_user
+      self.exec_acrobat = self.rep_user
+      #Lecture des fichiers utilisateurs
+      self.lecture_fichier_ini_standard()
+      self.lecture_fichier_ini_utilisateur()
+      self.lecture_catalogues()
+
+  #--------------------------------------
+  def lecture_fichier_ini_standard(self):
+  #--------------------------------------
+  # Verifie l'existence du fichier "standard"
+  # appelle la lecture de ce fichier
+      self.fic_ini = os.path.join(self.repIni,self.fic_prefs)
+      if not os.path.isfile(self.fic_ini):
+          QMessageBox.critical( None, "Import du fichier de Configuration", 
+                               "Erreur à la lecture du fichier de configuration "+self.fic_ini+".py" )
+          sys.exit(0)
+      import prefs
+      for k in self.labels :
+         try :
+            valeur=getattr(prefs,k)
+            setattr(self,k,valeur)
+         except :
+            pass
+              
+
+  #--------------------------------------
+  def lecture_fichier_ini_utilisateur(self):
+  #--------------------------------------
+  # Surcharge les paramètres standards par les paramètres utilisateur s'ils existent
+      self.fic_ini_utilisateur = os.path.join(self.rep_user,self.fic_prefs)
+      #if not os.path.isfile(self.fic_ini_utilisateur+".py"):
+      if not os.path.isfile(self.fic_ini_utilisateur):
+        return
+      from utils import read_file
+      txt = utils.read_file(self.fic_ini_utilisateur)
+      from styles import style
+      d=locals()
+      try:
+         exec txt in d
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + self.fic_ini_utilisateur )
+         sys.exit(0)
+      for k in self.labels :
+         try :
+            setattr(self,k,d[k])
+         except :
+            pass
+
+
+
+  #--------------------------------------
+  def lecture_catalogues(self):
+  #--------------------------------------
+      rep_mat=" " # Compatbilite Aster
+      fic_cata  ="catalogues_sep.ini"
+      fic_ini = os.path.join(self.repIni,fic_cata)
+      fic_user= os.path.join(self.rep_user,fic_cata)
+      if  os.path.isfile(fic_user):
+          fichier = fic_user
+      else  :
+          fichier = fic_ini
+          if not os.path.isfile(fic_ini) :
+             QMessageBox.critical( None, "Erreur a l'import du fichier des Catalogues", 
+                       "Le fichier de configuration des catalogues "+fic_ini+" n a pas été trouvé" )
+             sys.exit(0)
+
+      print fic_cata
+      from utils import read_file
+      txt = utils.read_file(fichier)
+      d=locals()
+      try:
+         exec txt in d
+         self.catalogues=d["catalogues"]
+      except :
+         l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
+         QMessageBox.critical( None, "Import du fichier de Configuration", 
+                       "Erreur à la lecture du fichier de configuration " + fichier )
+         sys.exit(0)
+
+
+
+  #--------------------------------------
+  def save_params(self):
+  #--------------------------------------
+  # sauvegarde
+  # les nouveaux paramètres dans le fichier de configuration utilisateur
+  #
+       print "a ecrire PNPNPN"
+#      l_param=('exec_acrobat', 'repIni','catalogues','rep_travail','rep_mat','path_doc')
+#      texte=""
+#      for clef in l_param :
+#          if hasattr(self,clef):
+#             valeur=getattr(self,clef)
+#             texte= texte + clef+"    = " + repr(valeur) +"\n"
+#
+#
+#      # recuperation des repertoires materiaux
+#      try :
+#          for item in self.catalogues :
+#              try :
+#                  (code,version,cata,format,defaut)=item
+#              except :
+#                  (code,version,cata,format)=item
+#              codeSansPoint=re.sub("\.","",version)
+#              chaine="rep_mat_"+codeSansPoint
+#              if hasattr(self,chaine):
+#                 valeur=getattr(self,chaine)
+#                 texte= texte + chaine+"      = '" + str(valeur) +"'\n"
+#      except :
+#             pass
+#
+#      f=open(self.fic_ini_utilisateur,'w+')
+#      f.write(texte) 
+#      f.close()
+#
+
+
+def make_config(appli,rep):
+    return CONFIG(appli,rep)
+
+def make_config_style(appli,rep):
+    return None
+
+
diff --git a/Sous_epaisseur/editeur.ini b/Sous_epaisseur/editeur.ini
new file mode 100644 (file)
index 0000000..2e57ce3
--- /dev/null
@@ -0,0 +1,44 @@
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os
+
+from Sous_epaisseur import prefs
+
+rep_cata = os.path.join(prefs.REPINI,'Cata')
+print rep_cata
+
+# Accès à la documentation Aster
+path_doc              = os.path.join(rep_cata,'..','Doc')
+exec_acrobat    =       "acroread"
+# Utilisateur/Développeur
+isdeveloppeur   =       "NON"
+path_cata_dev   =       "/tmp/cata"
+# Répertoire temporaire
+rep_travail     =   "/tmp"
+# Répertoire initial
+initialdir=os.curdir
+
+# Choix des catalogues
+
+catalogues = (
+              ('Sous_epaisseur','v1.0',os.path.join(rep_cata,'cataSEP01'),'python'),
+             )
+
diff --git a/Sous_epaisseur/prefs.py b/Sous_epaisseur/prefs.py
new file mode 100644 (file)
index 0000000..c29caf8
--- /dev/null
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os,sys
+
+# REPINI sert à localiser le fichier editeur.ini
+# Obligatoire
+REPINI=os.path.dirname(os.path.abspath(__file__))
+repIni=REPINI
+
+# INSTALLDIR sert à localiser l'installation d'Eficas
+# Obligatoire
+INSTALLDIR=os.path.join(REPINI,'..')
+
+# CODE_PATH sert à localiser Noyau et Validation éventuellement
+# non contenus dans la distribution EFICAS
+# Par défaut on utilise les modules de INSTALLDIR
+# Peut valoir None (defaut)
+CODE_PATH = None
+
+# la variable code donne le nom du code a selectionner
+code="SEP" 
+
+# lang indique la langue utilisée pour les chaines d'aide : fr ou ang
+lang='fr'
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+encoding='iso-8859-1'
+
+
+EditeurDir=INSTALLDIR+"/Editeur"
+sys.path[:0]=[INSTALLDIR]
+
+ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
+
+# Preference
+if os.name == 'nt':
+   userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
+else :
+   userprefs=os.path.expanduser("~/.Eficas_SEP/prefs.py")
+
+if os.path.isfile(userprefs):
+   try:
+      execfile(userprefs)
+   except:
+      pass
+
diff --git a/Sous_epaisseur/prefs_SEP.py b/Sous_epaisseur/prefs_SEP.py
new file mode 100644 (file)
index 0000000..c29caf8
--- /dev/null
@@ -0,0 +1,65 @@
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+import os,sys
+
+# REPINI sert à localiser le fichier editeur.ini
+# Obligatoire
+REPINI=os.path.dirname(os.path.abspath(__file__))
+repIni=REPINI
+
+# INSTALLDIR sert à localiser l'installation d'Eficas
+# Obligatoire
+INSTALLDIR=os.path.join(REPINI,'..')
+
+# CODE_PATH sert à localiser Noyau et Validation éventuellement
+# non contenus dans la distribution EFICAS
+# Par défaut on utilise les modules de INSTALLDIR
+# Peut valoir None (defaut)
+CODE_PATH = None
+
+# la variable code donne le nom du code a selectionner
+code="SEP" 
+
+# lang indique la langue utilisée pour les chaines d'aide : fr ou ang
+lang='fr'
+
+# Codage des strings qui accepte les accents (en remplacement de 'ascii')
+encoding='iso-8859-1'
+
+
+EditeurDir=INSTALLDIR+"/Editeur"
+sys.path[:0]=[INSTALLDIR]
+
+ICONDIR=os.path.join(INSTALLDIR,'Editeur','icons')
+
+# Preference
+if os.name == 'nt':
+   userprefs = os.sep.join( [ os.environ['HOMEDRIVE'], os.environ['HOMEPATH'], 'Eficas_install', 'prefs.py' ])
+else :
+   userprefs=os.path.expanduser("~/.Eficas_SEP/prefs.py")
+
+if os.path.isfile(userprefs):
+   try:
+      execfile(userprefs)
+   except:
+      pass
+
diff --git a/Sous_epaisseur/properties.py b/Sous_epaisseur/properties.py
new file mode 100644 (file)
index 0000000..bd8236c
--- /dev/null
@@ -0,0 +1,24 @@
+#@ MODIF properties Accas DATE 11/06/2008 AUTEUR aster M.ADMINISTRATEUR
+# RESPONSABLE D6BHHHH J-P.LEFEBVRE
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2001  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR   
+# (AT YOUR OPTION) ANY LATER VERSION.                                 
+#
+# THIS PROGRAM 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    
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.                            
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE   
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,       
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.      
+# ======================================================================
+#     IDENTIFICATION DU GESTIONNAIRE DE COMMANDE ACCAS A PARTIR
+#     DE LA VERSION DU CODE_ASTER ASSOCIE
+#----------------------------------------------------------------------
+version = "0.1"
+date = "20/05/2009"
+exploit = False
diff --git a/Sous_epaisseur/qtEficas_SEP.py b/Sous_epaisseur/qtEficas_SEP.py
new file mode 100755 (executable)
index 0000000..815529e
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#            CONFIGURATION MANAGEMENT OF EDF VERSION
+# ======================================================================
+# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM 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
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
+# ======================================================================
+
+"""
+   Ce module sert à lancer EFICAS configuré pour Code_Aster
+"""
+# Modules Python
+
+# Modules Eficas
+import prefs
+from InterfaceQT4 import eficas_go
+#from InterfaceQT import eficas_go
+
+eficas_go.lance_eficas(code=prefs.code)
diff --git a/Sous_epaisseur/sdistSEP.py b/Sous_epaisseur/sdistSEP.py
new file mode 100644 (file)
index 0000000..e94077f
--- /dev/null
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+"""
+     Ce module sert à construire les distributions d'EFICAS pour SEP
+     en fonction du tag CVS courant
+     Les distributions sont :
+      - un tar.gz pour UNIX ne contenant pas mxTextTools
+     L'utilisation de ce module est la suivante :
+      1- Se mettre dans un répertoire de travail
+      2- Configurer son environnement pour utiliser le référentiel CVS EFICAS
+      3- Exporter les sources d'EficasV1 par la commande :
+            cvs export -r TAG -d Eficas_export EficasV1
+         ou TAG est le tag CVS de la version que l'on veut distribuer (par exemple V1_1p1)
+      5- Aller dans le répertoire Eficas_export
+      6- Executer le script sdist.py
+             python sdist.py
+         Ce qui a pour effet de creer un repertoire dist contenant la distribution
+         et de la copier dans le répertoire indiqué par dir_download s'il est accessible
+
+"""
+import os,shutil,glob,sys
+import types
+
+nom_distrib="QTEficasSEP_V1_0"
+path_distrib=os.path.join("dist",nom_distrib)
+dir_download= "/home/eficas/WWW/telechargement/eficas"
+
+def main():
+   if os.path.isdir('dist'):shutil.rmtree('dist')
+
+   copyfiles('.',path_distrib,['LICENSE.TERMS','INSTALL','NEWS'])
+
+   copyfiles('../Editeur',os.path.join(path_distrib,'Editeur'),['*.py','faqs.txt'])
+   copyfiles('../InterfaceQT4',os.path.join(path_distrib,'InterfaceQT4'),['*.py','faqs.txt'])
+   copyfiles('../UiQT4',os.path.join(path_distrib,'UiQT4'),['*.ui','makefile'])
+   copyfiles('../Sous_epaisseur',os.path.join(path_distrib,'Sous_epaisseur'),['*.py','*.ini'])
+   copyfiles('../Ihm',os.path.join(path_distrib,'Ihm'),['*.py'])
+   copyfiles('../Extensions',os.path.join(path_distrib,'Extensions'),['*.py'])
+   copyfiles('../Misc',os.path.join(path_distrib,'Misc'),['*.py'])
+   copyfiles('../Accas',os.path.join(path_distrib,'Accas'),['*.py'])
+   # AIDE
+   copyfiles('../AIDE',os.path.join(path_distrib,'AIDE'),['*.py'])
+   copyfiles('../AIDE/fichiers',os.path.join(path_distrib,'AIDE','fichiers'),['*'])
+   copyfiles('.',os.path.join(path_distrib,'AIDE','fichiers'),['INSTALL','NEWS'])
+   copyfiles('../Editeur',os.path.join(path_distrib,'AIDE','fichiers'),['faqs.txt'])
+   #                           ______________________
+
+   copyfiles('../convert',os.path.join(path_distrib,'convert'),['*.py'])
+   os.system("rm -rf .././convert/Parserv5 ")
+   os.system("rm -rf .././convert/convert_asterv5.py ")
+   copyfiles('../generator',os.path.join(path_distrib,'generator'),['*.py'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.gif'])
+   copyfiles('../Editeur/icons',os.path.join(path_distrib,'Editeur','icons'),['*.png'])
+   copyfiles('../Editeur/Patrons/',os.path.join(path_distrib,'Editeur','Patrons'),['*.com*'])
+
+   copyfiles('../Noyau',os.path.join(path_distrib,'Noyau'),['*.py'])
+   copyfiles('../Validation',os.path.join(path_distrib,'Validation'),['*.py'])
+
+   
+   tarball= maketarball('dist',nom_distrib,nom_distrib)
+   try:
+      shutil.copy(tarball,dir_download)
+   except:
+      print "Repertoire de download inconnu : ",dir_download
+
+
+
+def make_dir(dir_cible):
+   if type(dir_cible) is not types.StringType:
+      raise "make_dir : dir_cible doit etre une string (%s)" % `dir_cible`
+   head,tail=os.path.split(dir_cible)
+   tails=[tail]
+   while head and tail and not os.path.isdir(head):
+      head,tail=os.path.split(head)
+      tails.insert(0, tail)
+
+   for d in tails:
+      head = os.path.join(head, d)
+      if not os.path.isdir(head):os.mkdir(head)
+
+
+def copyfiles(dir_origin,dir_cible,listfiles):
+   if not os.path.isdir(dir_cible):make_dir(dir_cible)
+   for glob_files in listfiles:
+      for file in glob.glob(os.path.join(dir_origin,glob_files)):
+         shutil.copy(file,dir_cible)
+
+
+def maketarball(dir_trav,dir_cible,nom_tar):
+   prev=os.getcwd()
+   print prev
+   os.chdir(dir_trav)
+   os.system("tar -cf "+nom_tar+".tar "+dir_cible)
+   os.system("gzip -f9 "+nom_tar+".tar ")
+   os.chdir(prev)
+   return os.path.join(dir_trav,nom_tar+".tar.gz")
+
+
+main()
+
diff --git a/Sous_epaisseur/style.py b/Sous_epaisseur/style.py
new file mode 100644 (file)
index 0000000..d485572
--- /dev/null
@@ -0,0 +1,66 @@
+# -*- coding: utf-8 -*-
+"""
+Pour modifier le style d'EFICAS  il faut ajouter un fichier style.py qui contiendra les
+informations sur le style voulu dans son repertoire Eficas_install.
+
+La methode la plus simple consiste à modifier directement les attributs de l'objet style dans le 
+fichier style.py d'Eficas_install. Exemple::
+
+    style.background='yellow'
+
+pour modifier la couleur du background.
+
+Il existe une autre méthode qui peut être utilisée quand on veut modifier plusieurs propriétés à la fois.
+
+Le fichier style.py doit définir une nouvelle classe qui dérive de la classe de base STYLE avec des attributs
+de classe qui définiront le nouveau style (par exemple, si on veut modifier le background)::
+
+   class STYLE(STYLE):
+       background='yellow'
+
+Il faut ensuite instancier cette classe, dans ce meme fichier, en donnant le nom style à l'objet cree::
+
+   style=STYLE()
+
+Tous les attributs de classe possibles sont visibles dans le module Editeur/basestyle.py::
+
+    background='gray90'
+    foreground='black'
+    entry_background='white'
+    list_background='white'
+    list_select_background='#00008b'
+    list_select_foreground='grey'
+    tooltip_background="yellow"
+
+    standard = ("Helvetica",12)
+    standard_italique = ("Helvetica",12,'italic')
+    standard_gras = ("Helvetica",12,'bold')
+    standard_gras_souligne = ("Helvetica",12,'bold','underline')
+
+    canvas = ('Helvetica',10)
+    canvas_italique = ('Helvetica',10,'italic')
+    canvas_gras = ("Helvetica",10,'bold')
+    canvas_gras_italique = ("Helvetica",12,'bold','italic')
+
+    standard12 = ("Helvetica",14)
+    standard12_gras = ("Helvetica",14,'bold')
+    standard12_gras_italique = ( "Helvetica",14,'bold','italic')
+
+
+Le fichier style.py contenu dans le répertoire Aster permet de spécifier des propriétés globales pour une installation.
+Les modifications de style contenues dans ce fichier et dans le fichier style.py d'Eficas_install
+sont prises en compte dans cet ordre.
+"""
+
+p1=10
+p2=14
+f1="Helvetica"
+
+style.background='gray90'
+style.foreground='black'
+style.standard = (f1,p1)
+style.standard_italique = (f1,p1,'italic')
+style.standard_gras = (f1,p1,'bold')
+style.canvas_italique = (f1,p1,'italic')
+style.canvas_gras = (f1,p1,'bold')
+style.statusfont = (f1,p2)
index 7439809ab1324ec98b293f0463250ecf648ea5c6..b8db416fc9c4baee0180cece1a8e63872cb412d9 100644 (file)
@@ -54,7 +54,9 @@ class SEPGenerator(PythonGenerator):
 
    def gener(self,obj,format='brut'):
       self.initDico()
+      # Cette instruction génère le contenu du fichier de commandes (persistance)
       self.text=PythonGenerator.gener(self,obj,format)
+      # Cette instruction génère le contenu du fichier de paramètres python
       self.genereSEP()
       return self.text
 
@@ -62,36 +64,98 @@ class SEPGenerator(PythonGenerator):
       return self.texteTubePy
 
    def genereSEP(self) :
+      '''
+      Prépare le contenu du fichier de paramètres python. Le contenu
+      peut ensuite être obtenu au moyen de la fonction getTubePy().
+      '''
+      #self.__genereSEP_withVariables()
+      self.__genereSEP_withDico()
+
+   def __genereSEP_withVariables(self) :
+      '''
+      Les paramètres sont transcrits sous forme de variables nom=valeur.
+      '''
       self.texteTubePy="# Parametres generes par Eficas \n"
       for MC in self.dictMCVal.keys():
         ligne = MC +"="+ repr(self.dictMCVal[MC])+'\n'
          self.texteTubePy=self.texteTubePy+ligne
+
       print self.texteTubePy
 
+      # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
       fichier=os.path.join(os.path.dirname(__file__),"tube.py")
       f=open(fichier,'r')
       for ligne in f.readlines():
          self.texteTubePy=self.texteTubePy+ligne
       f.close
 
+   def __genereSEP_withDico(self) :
+      """
+      Les paramètres sont transcrits sous la forme d'un dictionnaire nom=valeur.
+      """
+      from Sous_epaisseur import properties
+      self.texteTubePy="# -*- coding: utf-8 -*-\n"
+      self.texteTubePy+="# ======================================================================================\n"
+      self.texteTubePy+="# FICHIER GENERE PAR EFICAS - OUTIL MÉTIER SOUS-EPAISSEUR - "
+      self.texteTubePy+="VERSION "+str(properties.version)+" du "+str(properties.date)+"\n"
+      self.texteTubePy+="# ======================================================================================\n"
+      self.texteTubePy+="\n"
+      self.texteTubePy+="# Parametres Utilisateur Eficas \n"
+      self.texteTubePy+="parameters={}\n"
+      
+      for MC in self.dictMCVal.keys():
+        ligne = "parameters['"+MC+"']="+ repr(self.dictMCVal[MC])+'\n'
+         self.texteTubePy=self.texteTubePy+ligne
+
+      # On ajoute des paramètres de configuration pour contrôle de
+      # cohérence avec la procédure outil métier
+      self.texteTubePy+="# Parametres de Configuration Eficas \n"
+      ligne = "parameters['OMVERSION']="+str(properties.version)+"\n"
+      self.texteTubePy+=ligne
+
+      # __GBO__: Tester self.tube pour aiguiller en fonction du cas (au besoin)
+      self.texteTubePy+="\n"
+      self.texteTubePy+="# Exécution de la procédure outil métier \n"
+      self.texteTubePy+="import os,sys\n"
+      self.texteTubePy+="sys.path.insert(0,os.environ['OM_ROOT_DIR'])\n"
+      self.texteTubePy+="import om_data\n"
+      self.texteTubePy+="om_data.setParameters(parameters)\n"
+      self.texteTubePy+="def run():\n"
+      self.texteTubePy+="    import om_smeca\n"
+      self.texteTubePy+="\n"
+      self.texteTubePy+='if __name__ == "__main__":\n'
+      self.texteTubePy+="    run()\n"
+
+      # For debug only
+      print self.texteTubePy
+
+
    def initDico(self) :
       self.tube=0
       self.coude=0
       self.dictMCVal={}
       self.texteTubePy=""
 
+   # __GBO__: surcharge de PythonGenerator:
+   # voir example generator_cuve2dg.py (genea)
    def generMCSIMP(self,obj) :
       """
       Convertit un objet MCSIMP en texte python
       Remplit le dictionnaire des MCSIMP si nous ne sommes ni dans une loi, ni dans une variable
       """
+      clef=""
+      for i in obj.get_genealogie() :
+         clef=clef+"__"+i
+      #self.dictMCVal[obj.nom]=obj.valeur
+      self.dictMCVal[clef]=obj.valeur
+
       s=PythonGenerator.generMCSIMP(self,obj)
-      self.dictMCVal[obj.nom]=obj.valeur
       return s
   
+   # __GBO__: surcharge de PythonGenerator
    def generMACRO_ETAPE(self,obj):
       print obj.nom
-      if obj.nom == "M_TUBE" :
+      if obj.nom == "S_EP_INTERNE" :
         self.tube=1
       if obj.nom == "M_COUDE" :
         self.coude=1