From fa81d2b092e271891d8d6029f7a5aa72db27267a Mon Sep 17 00:00:00 2001 From: eficas <> Date: Mon, 27 Feb 2006 09:21:11 +0000 Subject: [PATCH] PN Pour Visualisation Elt Structures --- Editeur/TroisDPal.py | 47 ++++++ Editeur/panels.py | 12 ++ Editeur/panelsSalome.py | 310 ------------------------------------- Editeur/uniqueassdpanel.py | 1 + 4 files changed, 60 insertions(+), 310 deletions(-) create mode 100644 Editeur/TroisDPal.py diff --git a/Editeur/TroisDPal.py b/Editeur/TroisDPal.py new file mode 100644 index 00000000..28a92944 --- /dev/null +++ b/Editeur/TroisDPal.py @@ -0,0 +1,47 @@ +# -*- 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 contient la classe 3Dpilote qui va creer les ordres + de pilotage de l idl PAL pour un element de structure +""" +import generator + +class TroisDPilote: + + def __init__(self,node,appli,parent): + self.node=node + self.appli=appli + self.parent=parent + + def envoievisu(self): + """ + """ + format="vers3DSalome" + if generator.plugins.has_key(format): + # Le generateur existe on l'utilise + g=generator.plugins[format]() + texte=g.gener(self.node) + else: + print "Le generateur n a pas ete trouvé" + print "Erreur ! Erreur!" + return "" + self.appli.envoievisu(texte) + diff --git a/Editeur/panels.py b/Editeur/panels.py index 0610919f..df621595 100644 --- a/Editeur/panels.py +++ b/Editeur/panels.py @@ -113,6 +113,12 @@ class Panel(Frame) : self.bouton_sup.place(relx=0.25,rely = 0.5,relheight = 0.8,anchor='center') self.bouton_cata.place(relx=0.5,rely = 0.5,relheight = 0.8,anchor='center') self.bouton_doc.place(relx=0.75,rely = 0.5,relheight = 0.8,anchor='center') + elif ((hasattr( self.parent.appli, 'salome' )) and (self.node.item.GetLabelText()[0] == 'AFFE_CARA_ELEM : ')) : + self.bouton_visu = Button(self.fr_but, text = " 3D ", command=self.visu_3D, width=14) + self.bouton_sup.place(relx=0.20,rely = 0.5,relheight = 0.8,anchor='center') + self.bouton_visu.place(relx=0.5,rely = 0.5,relheight = 0.8,anchor='center') + self.bouton_doc.place(relx=0.80,rely = 0.5,relheight = 0.8,anchor='center') + else: self.bouton_sup.place(relx=0.3,rely = 0.5,relheight = 0.8,anchor='center') self.bouton_doc.place(relx=0.7,rely = 0.5,relheight = 0.8,anchor='center') @@ -124,6 +130,12 @@ class Panel(Frame) : except Exception,e: traceback.print_exc() + def visu_3D(self) : + import TroisDPal + troisD=TroisDPal.TroisDPilote(self.node.item,self.parent.appli,self.parent) + troisD.envoievisu() + + def efface(self): self.node.efface() diff --git a/Editeur/panelsSalome.py b/Editeur/panelsSalome.py index b0d7aefe..6e18abeb 100644 --- a/Editeur/panelsSalome.py +++ b/Editeur/panelsSalome.py @@ -21,11 +21,8 @@ from uniqueassdpanel import UNIQUE_ASSD_Panel_Reel from Noyau.N_CR import justify_text import traceback -#import SalomePyQt import salome # CS_pbruno à poubelliser import images -#import SMESH_utils -#sgQt=SalomePyQt.SalomePyQt() @@ -93,8 +90,6 @@ class SALOME_UNIQUE_ASSD_Panel_Reel (UNIQUE_ASSD_Panel_Reel): class SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel(PLUSIEURS_BASE_OR_UNELISTE_Panel): "" - - class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel): def __init__(self,parent,panneau,node): @@ -141,8 +136,6 @@ class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel): self.c = Button( self.frame_choix, text='Visualiser',command=self.displayInSalomeGeom ) self.c.place( relx=0.3, rely=0.0,relwidth=0.55) - #self.c.place(relx=0.08,rely=0.55,relwidth=0.35) - #self.c.place(relx=0.08,rely=0.55 ) def displayInSalomeGeom( self ): if self.selected_valeur: @@ -151,309 +144,6 @@ class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel): self.parent.appli.affiche_infos(msgError) -""" -class SALOME_PLUSIEURS_BASE_Panel(PLUSIEURS_BASE_Panel): - - def convertit_group_no_from_salome(self,liste_in): - newr=[] - #try: - if ( 1 == 1 ) : - for entree in liste_in : - travail=[] - travail.append(entree) - entryname_list=SMESH_utils.entryToName(salome.myStudy,travail) - entreeName=entryname_list[0] - if dict_geom_numgroupe.has_key(entreeName): - r=dict_geom_numgroupe[entreeName] - else: - r=SMESH_utils.getAsterGroupNo(salome.myStudy,travail) - dict_geom_numgroupe[entreeName]=r - for i in r : - newr.append(i) - #except: - else : - print "pas de groupe de noeuds associé" - showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de noeuds") - return newr - - def convertit_group_maille_from_salome(self,liste_in): - newr=[] - #try: - if [ 1 == 1 ]: - print liste_in - for entree in liste_in : - travail=[] - travail.append(entree) - entryname_list=SMESH_utils.entryToName(salome.myStudy,travail) - entreeName=entryname_list[0] - if dict_geom_numgroupe.has_key(entreeName): - r=dict_geom_numgroupe[entreeName] - else: - r=SMESH_utils.getAsterGroupMa(salome.myStudy,travail) - dict_geom_numgroupe[entreeName]=r - if r != None : - for i in r : - newr.append(i) - #except: - else : - print "pas de groupe de maille associé" - showerror("Pas de groupe associé","Cet Objet ne peut pas être défini comme un ensemble de groupe de maille") - return newr - - def convertit_entrees_en_valeurs(self,entrychaine): - if SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel.__dict__.has_key(self.clef_fonction): - print 'CS_pbruno AAAAAAAAAAAAA' - valeur=apply(SALOME_PLUSIEURS_BASE_OR_UNELISTE_Panel.__dict__[self.clef_fonction],(self,entrychaine)) - else : - if (self.clef_fonction.find("GROUP_NO") != -1) and (self.clef_fonction.find("GROUP_MA") != -1) : - print 'CS_pbruno BBBBBBBBBBBBBBBBBBB' - if (self.clef_fonction.find("GROUP_NO") < self.clef_fonction.find("GROUP_MA")) : - print 'CS_pbruno CCCCCCCCCCCCCCCCCCCCCCCCCC' - valeur=self.convertit_group_maille_from_salome(entrychaine) - else : - print 'CS_pbruno DDDDDDDDDDDDDDDDDDDDDDDDD' - valeur=self.convertit_group_no_from_salome(entrychaine) - elif self.clef_fonction.find("GROUP_NO") != -1 : - print 'CS_pbruno EEEEEEEEEEEEEEEEEEEEEEEEE' - valeur=self.convertit_group_no_from_salome(entrychaine) - else : - print 'CS_pbruno FFFFFFFFFFFFFFFFFFFFFFFF' - if self.clef_fonction.find("GROUP_MA") != -1 : - print 'CS_pbruno GGGGGGGGGGGGGGGGGGGGGGGGGGG' - valeur=self.convertit_group_maille_from_salome(entrychaine) - else : - print 'CS_pbruno HHHHHHHHHHHHHHHHHHHHHH' - print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - print "Pb pas de fonction de conversion de la valeur Salome en valeur Aster" - print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" - valeur=[] - print "VALEUR", valeur - return valeur - - def sup_valeur_from_salome(self,name=None): - #"" - Méthode qui sert à retirer de la liste des valeurs la valeur sélectionnée - #"" - liste_valeurs = self.Liste_valeurs.get_liste() - liste_valeurs_salome=self.Liste_valeurs_salome.get_liste() - entrychaine=salome.sg.getAllSelected() - - try: - valeur = self.convertit_entrees_en_valeurs(entrychaine) - for i in valeur : - if i in liste_valeurs : - liste_valeurs.remove(i) - print "enleve" , i - except: - # la valeur sélectionnée n'est pas dans la liste - pass - - entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine) - self.entrygroupe.delete(0,END) - self.sortie.delete(0,END) - for entryname in entryname_list: - try: - liste_valeurs_salome.remove(entryname) - except: - print "la valeur ", entryname, "n est pas dans la liste" - entryname=entryname + " " - self.sortie.insert(0,entryname) - self.selected_valeur = None - self.Liste_valeurs.put_liste(liste_valeurs) - self.Liste_valeurs_salome.put_liste(liste_valeurs_salome) - self.recalcule() - - def visu_in_salome(self): - liste_valeurs = self.Liste_valeurs.get_liste() - entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs) - - def visu3D_in_salome(self): - liste_valeurs = self.Liste_valeurs.get_liste() - entryname_list=SMESH_utils.VisuGroupe(salome.myStudy,liste_valeurs) - - def recalcule(self): - liste_valeurs_salome=self.Liste_valeurs_salome.get_liste() - groups={} - liste_valeurs = self.Liste_valeurs.get_liste() - for valeur in liste_valeurs_salome: - r=dict_geom_numgroupe[valeur] - for i in r : - if i not in liste_valeurs : - liste_valeurs.append(i) - self.Liste_valeurs.put_liste(liste_valeurs) - - - def add_valeur_from_salome(self,name=None): - entrychaine=salome.sg.getAllSelected() - self.sortie.delete(0,END) - self.entrygroupe.delete(0,END) - if entrychaine != '': - entryname_list=SMESH_utils.entryToName(salome.myStudy,entrychaine) - touteslesvaleurs = self.convertit_entrees_en_valeurs(entrychaine) - - valeur=[] - liste_valeurs = self.Liste_valeurs.get_liste() - for i in touteslesvaleurs: - if i not in liste_valeurs: - valeur.append(i) - - if valeur==[]: - entryname_list=[] - - liste_valeurs_salome = self.Liste_valeurs_salome.get_liste() - for entryname in entryname_list: - if entryname not in liste_valeurs_salome: - liste_valeurs_salome.append(entryname) - entryname=entryname + " " - self.entrygroupe.insert(0,entryname) - self.Liste_valeurs_salome.put_liste(liste_valeurs_salome) - - if self.node.item.wait_reel(): - print "wait_reel()" - valeur = self.traite_reel(valeur) - if self.node.item.wait_geom(): - print "wait_geom()" - val,test1 = valeur,1 - else: - print "else wait" - val,test1 = self.node.item.object.eval_valeur(valeur) - - if test1 : - test2 = self.node.item.object.verif_type(val) - if test2 : - liste_valeurs = self.Liste_valeurs.get_liste() - if len(liste_valeurs) >= max : - self.parent.appli.affiche_infos("La liste a déjà atteint le nombre maximum d'éléments, ajout refusé") - self.erase_valeur() - return - if type(val) == type([]): - for groupe in val: - liste_valeurs.append(groupe) - else: - liste_valeurs.append(val) - self.Liste_valeurs.put_liste(liste_valeurs) - self.parent.appli.affiche_infos("Nouvelle valeur acceptée") - else: - self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé") - else: - print "impossible d'évaluer %s" %val - self.parent.appli.affiche_infos("Valeur incorrecte : ajout à la liste refusé") - - - def makeValeurPage(self,page): - #"" - Crée la page de saisie d'une liste de valeurs à priori quelconques, - cad qui ne sont pas à choisir dans une liste prédéfinie - #"" - - # On récupère la bulle d'aide du panneau, l'objet, l'aide,min et max (cardinalité de la liste), - # et la liste des valeurs déjà affectées à l'objet courant - bulle_aide=self.get_bulle_aide() - objet_mc = self.node.item.get_definition() - aide = self.get_aide() - aide = justify_text(texte=aide) - min,max = self.node.item.GetMinMax() - self.clef_fonction= self.node.item.clef_fonction - l_valeurs = self.node.item.GetListeValeurs() - - self.frame1 = Frame(page,relief='groove',bd=2) - self.frame2 = Frame(page) - self.frame1.place(relx=0.,rely=0.,relwidth=1.,relheight=0.85) - self.frame2.place(relx=0.,rely=0.85,relwidth=1,relheight=0.15) - self.frame_right = Frame(self.frame1) - self.frame_right.place(relx=0.35,rely=0.,relwidth=0.65,relheight=1.) - - # création des frames internes - self.frame_valeurs = Frame(self.frame1) - self.frame_valeurs.place(relx=0.0,rely=0.0,relwidth=0.35,relheight=0.95) - - self.frame_choix = Frame(self.frame_right) - self.frame_choix.place(relx=0.0,rely=0.0,relwidth=1,relheight=0.9) - self.frame_valeurs_salome = Frame(self.frame_right) - self.frame_valeurs_salome.place(relx=0.02,rely=0.7,relwidth=0.9,relheight=0.3) - - self.frame_boutons = Frame(self.frame2) - self.frame_boutons.place(relx=0.1,rely=0.,relwidth=0.5,relheight=1.) - self.frame_aide = Frame(self.frame2) - self.frame_aide.place(relx=0.6,rely=0.,relwidth=0.5,relheight=1) - - for fram in (self.frame1,self.frame2,self.frame_right,self.frame_valeurs, - self.frame_choix,self.frame_aide,self.frame_boutons): - fram.bind("",lambda e,s=self,a=bulle_aide : s.parent.appli.affiche_aide(e,a)) - fram.bind("",self.parent.appli.efface_aide) - - # création des objets dans les frames - liste_commandes_valeurs = (("",self.selectValeur), - ("",self.deselectValeur), - ("",self.sup_valeur_sans_into)) - self.Liste_valeurs = ListeChoix(self,self.frame_valeurs,l_valeurs, - liste_commandes = liste_commandes_valeurs, - titre="Valeur(s) actuelle(s)") - - # PN : pour ajouter les validators - self.make_entry(frame = self.frame_choix,command = self.add_valeur_plusieurs_base,y=0.55) - - bouton_valeurs_fichier = Button(self.frame_choix, - text="Importer ...", - command=self.select_in_file) - bouton_valeurs_fichier.place(relx=0.28,rely=0.65,relwidth=0.6) - - self.ajout_valeurs = None - self.b = Button(self.frame_choix,text='ajout select.',command=self.add_valeur_from_salome) - - self.b.place(relx=0.03,rely=0.05,relwidth=0.35) - self.entrygroupe = Entry(self.frame_choix,relief='sunken') - self.entrygroupe.place(relx=0.4,rely=0.05,relwidth=0.6) - - self.a = Button(self.frame_choix,text='enlev. select.',command=self.sup_valeur_from_salome) - self.a.place(relx=0.03,rely=0.2,relwidth=0.35) - self.sortie = Entry(self.frame_choix,relief='sunken') - self.sortie.place(relx=0.4,rely=0.2,relwidth=0.6) - self.c = Button(self.frame_choix,text='Visualiser',command=self.visu_in_salome) - self.c.place(relx=0.03,rely=0.35,relwidth=0.35) - - self.genea =self.node.item.get_genealogie() - print self.genea - if "AFFE_CARA_ELEM" in self.genea : - self.d=Button(self.frame_choix,text='Visu 3D',command=self.visu3D_in_salome) - self.d.place(relx=0.47,rely=0.35,relwidth=0.35) - - l_salome_valeurs=self.node.item.get_salome_valeurs() - self.Liste_valeurs_salome=ListeChoix(self,self.frame_valeurs_salome,l_salome_valeurs, - liste_commandes = liste_commandes_valeurs, - titre="Valeur(s) Salome actuelle(s) ") - self.Liste_valeurs_salome.affiche_liste() - - - # boutons Ajouter et Supprimer - bouton_add = Button(self.frame_choix, - image = images.get_image('arrow_left'), - command = self.add_valeur_plusieurs_base) - bouton_sup = Button(self.frame_choix, - image = images.get_image('arrow_right'), - command = self.sup_valeur_sans_into) - bouton_add.place(relx=0.08,rely=0.55) - bouton_sup.place(relx=0.08,rely=0.65) - - # affichage de l'aide - self.frame_aide.update() - self.aide = Label(self.frame_aide, text = aide, - justify='center', anchor='center', - wraplength=int(self.frame_aide.winfo_width()*0.8)) - self.aide.place(relx=0.5,rely=0.5,anchor='center',relwidth=1) - self.Liste_valeurs.affiche_liste() - - # boutons Accepter et Annuler - bouton_accepter = Button(self.frame_boutons, - text='Valider', - command = lambda s=self,m=min,M=max : s.accepte_modifs_valeur(m,M)) - bouton_annuler = Button(self.frame_boutons, - text = 'Annuler', - command = self.annule_modifs_valeur) - for but in (bouton_accepter,bouton_annuler): - but.pack(side='left',padx=5) - -""" # ------------------------------------------------------------------------------# diff --git a/Editeur/uniqueassdpanel.py b/Editeur/uniqueassdpanel.py index f40e8991..6498a2c7 100644 --- a/Editeur/uniqueassdpanel.py +++ b/Editeur/uniqueassdpanel.py @@ -168,6 +168,7 @@ class UNIQUE_ASSD_Panel(UNIQUE_Panel): Exécute command """ if len(self.listbox.get()) == 0 : return + if len(self.listbox.getcurselection()) == 0 : return choix = self.listbox.getcurselection()[0] self.valeur_choisie.set(choix) apply(command,(),{}) -- 2.39.2