X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=Noyau%2FN_MCCOMPO.py;h=51ad79608815b8db1949ba43696ecc7cb1d2d2c2;hb=a7d5f18fe322c770026b50343adc09ed0472c192;hp=739b73048ea2d4a4cef5550cb986d79481b61371;hpb=f1ca95b49f76bed371d3bc90fc94bd12a6f17523;p=tools%2Feficas.git diff --git a/Noyau/N_MCCOMPO.py b/Noyau/N_MCCOMPO.py index 739b7304..51ad7960 100644 --- a/Noyau/N_MCCOMPO.py +++ b/Noyau/N_MCCOMPO.py @@ -1,4 +1,4 @@ -#@ MODIF N_MCCOMPO Noyau DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS +#@ MODIF N_MCCOMPO Noyau DATE 21/03/2005 AUTEUR DURAND C.DURAND # -*- coding: iso-8859-1 -*- # CONFIGURATION MANAGEMENT OF EDF VERSION # ====================================================================== @@ -57,7 +57,9 @@ class MCCOMPO(N_OBJECT.OBJECT): # On construit les sous entites presentes ou obligatoires # 1- les entites présentes dans les arguments et dans la définition # 2- les entités non présentes dans les arguments, présentes dans la définition avec un défaut + # Phase 1.1 : on traite d'abord les SIMP pour enregistrer les mots cles globaux for k,v in self.definition.entites.items(): + if v.label != 'SIMP':continue if args.has_key(k) or v.statut=='o' : # # Creation par appel de la methode __call__ de la definition de la sous entite k de self @@ -75,6 +77,20 @@ class MCCOMPO(N_OBJECT.OBJECT): if args.has_key(k): del args[k] + # Phase 1.2 : on traite les autres entites que SIMP + for k,v in self.definition.entites.items(): + if v.label == 'SIMP':continue + if args.has_key(k) or v.statut=='o' : + # + # Creation par appel de la methode __call__ de la definition de la sous entite k de self + # si une valeur existe dans args ou est obligatoire (generique si toutes les + # entites ont l attribut statut ) + # + objet=self.definition.entites[k](val=args.get(k,None),nom=k,parent=self) + mc_liste.append(objet) + if args.has_key(k): + del args[k] + # Phase 2: # On construit les objets (en général, blocs) conditionnés par les mots-clés précédemment créés. # A ce stade, mc_liste ne contient que les fils de l'objet courant @@ -206,8 +222,11 @@ class MCCOMPO(N_OBJECT.OBJECT): etape = self.get_etape() if etape : dict_mc_globaux_fac = self.recherche_mc_globaux_facultatifs() - dict_mc_globaux_fac.update(etape.mc_globaux) - if self.jdc : dict_mc_globaux_fac.update(self.jdc.mc_globaux) + for k,v in etape.mc_globaux.items(): + dict_mc_globaux_fac[k]=v.get_valeur() + if self.jdc : + for k,v in self.jdc.mc_globaux.items(): + dict_mc_globaux_fac[k]=v.get_valeur() return dict_mc_globaux_fac else : return {} @@ -225,7 +244,7 @@ class MCCOMPO(N_OBJECT.OBJECT): if v.position != 'global' : continue if v.statut == 'o':continue obj = v(val=None,nom=k,parent=etape) - dico[k]=obj + dico[k]=obj.get_valeur() return dico def supprime(self): @@ -375,3 +394,24 @@ class MCCOMPO(N_OBJECT.OBJECT): for cle in daux.keys(): dico[cle] = daux[cle] return dico + + def get_mcs_with_co(self,co): + """ + Cette methode retourne l'objet MCSIMP fils de self + qui a le concept co comme valeur. + En principe, elle ne doit etre utilisee que pour les concepts + instances de la classe CO + """ + l=[] + for child in self.mc_liste: + l.extend(child.get_mcs_with_co(co)) + return l + + def get_all_co(self): + """ + Cette methode retourne tous les concepts instances de CO + """ + l=[] + for child in self.mc_liste: + l.extend(child.get_all_co()) + return l