From: Pascale Noyret Date: Tue, 7 Jul 2009 08:16:39 +0000 (+0000) Subject: Sous Epaisseur version initiale X-Git-Tag: V1_0OpenTurns~80 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=36279ad9228837aeb33ebff87cf9a42196ca7a00;p=modules%2Feficas.git Sous Epaisseur version initiale --- diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 74b0ec27..7bca6d9c 100644 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -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 index 00000000..9a0097be --- /dev/null +++ b/Sous_epaisseur/SEP_Cata_V0.py @@ -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 index 00000000..cfc72b75 --- /dev/null +++ b/Sous_epaisseur/SEP_Cata_V1.py @@ -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 index 00000000..40a96afc --- /dev/null +++ b/Sous_epaisseur/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/Sous_epaisseur/catalogues_sep.ini b/Sous_epaisseur/catalogues_sep.ini new file mode 100644 index 00000000..68ba272c --- /dev/null +++ b/Sous_epaisseur/catalogues_sep.ini @@ -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 index 00000000..def14dc4 --- /dev/null +++ b/Sous_epaisseur/configuration_SEP.py @@ -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 index 00000000..2e57ce3d --- /dev/null +++ b/Sous_epaisseur/editeur.ini @@ -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 index 00000000..c29caf84 --- /dev/null +++ b/Sous_epaisseur/prefs.py @@ -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 index 00000000..c29caf84 --- /dev/null +++ b/Sous_epaisseur/prefs_SEP.py @@ -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 index 00000000..bd8236ca --- /dev/null +++ b/Sous_epaisseur/properties.py @@ -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 index 00000000..815529e0 --- /dev/null +++ b/Sous_epaisseur/qtEficas_SEP.py @@ -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 index 00000000..e94077f3 --- /dev/null +++ b/Sous_epaisseur/sdistSEP.py @@ -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 index 00000000..d4855725 --- /dev/null +++ b/Sous_epaisseur/style.py @@ -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) diff --git a/generator/generator_SEP.py b/generator/generator_SEP.py index 7439809a..b8db416f 100644 --- a/generator/generator_SEP.py +++ b/generator/generator_SEP.py @@ -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