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)
--- /dev/null
+## -*- 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),
+ ),
+)
+
+
--- /dev/null
+## -*- 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),
+ ),
+)
+
--- /dev/null
+# -*- coding: utf-8 -*-
--- /dev/null
+# 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'),
+)
+
--- /dev/null
+# -*- 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
+
+
--- /dev/null
+# 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'),
+ )
+
--- /dev/null
+# -*- 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
+
--- /dev/null
+# -*- 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
+
--- /dev/null
+#@ 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
--- /dev/null
+#!/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)
--- /dev/null
+# -*- 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()
+
--- /dev/null
+# -*- 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)
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
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