def MakeHtmlReport(folderwxid): #Actualisation de l'interface import buildhtmlreport buildhtmlreport._ = _ #surcharge de la méthode de traduction sppsreportbuilder = buildhtmlreport.ReportBuilder() mainfolder = ui.e_file(folderwxid) #instance du dossier ui.application.sendevent(mainfolder, ui.idevent.IDEVENT_RELOAD_FOLDER) subelementsid = mainfolder.childs( ) #Recuperation des sous dossiers et fichiers rotated = zip(*subelementsid) #Inversion lignes, colonnes #Recuperation des données pour les récepteurs ponctuels prfolder = rotated[0][rotated[2].index(u'Punctual receivers')] pr_dict = GetPonctualReceiversData(prfolder) #Recuperation des données pour les récepteurs surfacique if 'recepteurss' in rotated[2]: mainrsfold = ui.e_file(rotated[0][rotated[2].index( u'recepteurss')]).buildfullpath() + "\\Global\\" rscutpath = mainrsfold + "rs_cut.csbin" rs_data = {} if os.path.exists(rscutpath): rs_data.update( recsurf_report_stats.BuildSoundLevelDistributionArray( rscutpath)) rs_modelpath = mainrsfold + "Niveau_Sonore.csbin" if os.path.exists(rs_modelpath): rs_data.update( recsurf_report_stats.BuildSoundLevelDistributionArray( rs_modelpath)) sppsreportbuilder.SetSurfaceReceiverData(rs_data) #Generation du rapport sppsreportbuilder.SetPonctualReceiverData(pr_dict) #Sauvegarde au format CSV SaveDataToCSV(pr_dict, mainfolder.buildfullpath()) #Sauvegarde du rapport sppsreportbuilder.BuildHtmlCode(ScriptFolder, mainfolder.buildfullpath(), ui.application.getlocale()) #Actualisation de l'interface ui.application.sendevent(mainfolder, ui.idevent.IDEVENT_RELOAD_FOLDER)
def GetMixedLevel(folderwxid): """ Retourne un tableau contenant le niveau sonore global et toute bande des récepteurs ponctuels d'un dossier folderwxid identifiant wxid de l'élément dossier contenant les récepteurs ponctuels. """ i_cols = [] myfrequency_labels = [] #folder devient l'objet dossier recplist = [] folder = ui.element(folderwxid) # retrieve computation result main folder location folderpath = ui.e_file(folder.getinfos()["parentid"]).buildfullpath() recpPosition = extractReceiverPositionFromXml( os.path.join(folderpath, 'config.xml')) for child in folder.childs(): if child[1] == ui.element_type.ELEMENT_TYPE_REPORT_FOLDER: recplist.append(child[0]) #Pour chaque récepteur on demande a l'application les données traitées du fichier ( niveau sonore et cumuls ) intensityElements = {} for idrecp in recplist: #recp devient l'objet ayant comme indice idrecp (entier) parent = ui.element(idrecp) #application.sendevent(pere,idevent.IDEVENT_RELOAD_FOLDER) receiverName = parent.getinfos()["label"] #on recupere les données calculées elid = parent.getelementbylibelle('Punctual receiver intensity') if elid != -1: intensity = ui.element(elid) intensityElements[receiverName] = intensity for receiverInfo in recpPosition: receiverName, rx, ry, rz = receiverInfo if receiverName in intensityElements: intensity = intensityElements[receiverName] #on stocke dans gridspl le tableau des niveaux de pression gridparam = ui.application.getdataarray(intensity) values = gridparam[-1][1:] #retrieve the last row if len(myfrequency_labels) == 0: myfrequency_labels = list(gridparam[0][1:]) myfrequency_labels.insert(0, "z") myfrequency_labels.insert(0, "y") myfrequency_labels.insert(0, "x") myfrequency_labels.insert(0, "") myReceiverRow = [receiverName, rx, ry, rz] for idxyz in range(len(values)): I = values[idxyz] * 1 myReceiverRow.append(I) i_cols.append(myReceiverRow) i_cols.insert(0, myfrequency_labels) return i_cols
def GetMixedLevel(folderwxid): """ Retourne un tableau contenant le niveau sonore global et toute bande des récepteurs ponctuels d'un dossier folderwxid identifiant wxid de l'élément dossier contenant les récepteurs ponctuels. """ i_cols=[] myfrequency_labels=[] #folder devient l'objet dossier recplist=[] folder=ui.element(folderwxid) # retrieve computation result main folder location folderpath = ui.e_file(folder.getinfos()["parentid"]).buildfullpath() recpPosition = extractReceiverPositionFromXml(os.path.join(folderpath, 'config.xml')) for child in folder.childs(): if child[1]==ui.element_type.ELEMENT_TYPE_REPORT_FOLDER: recplist.append(child[0]) #Pour chaque récepteur on demande a l'application les données traitées du fichier ( niveau sonore et cumuls ) intensityElements = {} for idrecp in recplist: #recp devient l'objet ayant comme indice idrecp (entier) parent=ui.element(idrecp) #application.sendevent(pere,idevent.IDEVENT_RELOAD_FOLDER) receiverName=parent.getinfos()["label"] #on recupere les données calculées elid = parent.getelementbylibelle('Punctual receiver intensity') if elid != -1: intensity=ui.element(elid) intensityElements[receiverName] = intensity for receiverInfo in recpPosition: receiverName, rx, ry, rz = receiverInfo if receiverName in intensityElements: intensity = intensityElements[receiverName] #on stocke dans gridspl le tableau des niveaux de pression gridparam=ui.application.getdataarray(intensity) values=gridparam[-1][1:] #retrieve the last row if len(myfrequency_labels)==0: myfrequency_labels=list(gridparam[0][1:]) myfrequency_labels.insert(0, "z") myfrequency_labels.insert(0, "y") myfrequency_labels.insert(0, "x") myfrequency_labels.insert(0, "") myReceiverRow = [receiverName,rx,ry,rz] for idxyz in range(len(values)): I=values[idxyz]*1 myReceiverRow.append(I) i_cols.append(myReceiverRow) i_cols.insert(0,myfrequency_labels) return i_cols
def GetMixedLevel(folderwxid): """ Retourne un tableau contenant le niveau sonore global et toute bande des récepteurs ponctuels d'un dossier folderwxid identifiant wxid de l'élément dossier contenant les récepteurs ponctuels. """ i_cols = [] # Initialisation myfrequency_labels = [] # Initialisation # folder devient l'objet dossier recplist = [] # Initialisation folder = ui.element(folderwxid) # retrieve computation result main folder location folderpath = ui.e_file(folder.getinfos()["parentid"]).buildfullpath() recpPosition = extractReceiverPositionFromXml(os.path.join(folderpath, 'config.xml')) for child in folder.childs(): if child[1] == ui.element_type.ELEMENT_TYPE_REPORT_FOLDER: recplist.append(child[0]) # On incrémente le vecteur "recplist" avec le nombre de récepteurs # Pour chaque récepteur on demande a l'application les données traitées du fichier ( niveau sonore et cumuls ) splElements = {} for idrecp in recplist: # On regarde pour un récepteur donné # recp devient l'objet ayant comme indice idrecp (entier) parent = ui.element(idrecp) # On sélectionne la ligne correspondantau récepteur "Ri" # application.sendevent(pere,idevent.IDEVENT_RELOAD_FOLDER) receiverName = parent.getinfos()[u"label"] # Dans "receiverName" nous plaçons le nom du récepteur "Ri" # on recupere les données calculées idel = parent.getelementbylibelle("Sound level") if idel != -1: splElement = ui.element(idel) splElements[receiverName] = splElement for receiverInfo in recpPosition: receiverName, rx, ry, rz = receiverInfo if receiverName in splElements: splElement = splElements[receiverName] # on stocke dans gridspl le tableau des niveaux de pression fullsplgrid = zip(*ui.application.getdataarray(splElement)) splgrid = fullsplgrid[-1][1:-1] # retrieve the last row if len(myfrequency_labels) == 0: myfrequency_labels = list(fullsplgrid[0][1:-1]) myfrequency_labels.insert(0, "z") myfrequency_labels.insert(0, "y") myfrequency_labels.insert(0, "x") myfrequency_labels.insert(0, "") myWRow = [receiverName,rx,ry,rz] for idfreq in range(len(splgrid)): w = (p0 * 10 ** (splgrid[idfreq] / 10.)) / ( rho * cel ** 2) # Calcul de la densité pour chaque bande de fréquence myWRow.append(w) # Alimentation d'un vecteur densité i_cols.append(myWRow) i_cols.insert(0, myfrequency_labels) # Insertion de la fréquence return i_cols
def MakeHtmlReport(folderwxid): #Actualisation de l'interface import buildhtmlreport buildhtmlreport._ = _ #surcharge de la méthode de traduction sppsreportbuilder=buildhtmlreport.ReportBuilder() mainfolder=ui.e_file(folderwxid) #instance du dossier ui.application.sendevent(mainfolder,ui.idevent.IDEVENT_RELOAD_FOLDER) subelementsid=mainfolder.childs() #Recuperation des sous dossiers et fichiers rotated=zip(*subelementsid) #Inversion lignes, colonnes #Recuperation des données pour les récepteurs ponctuels prfolder=rotated[0][rotated[2].index(u'Punctual receivers')] pr_dict=GetPonctualReceiversData(prfolder) #Recuperation des données pour les récepteurs surfacique if 'recepteurss' in rotated[2]: mainrsfold=ui.e_file(rotated[0][rotated[2].index(u'recepteurss')]).buildfullpath()+"\\Global\\" rscutpath=mainrsfold+"rs_cut.csbin" rs_data={} if os.path.exists(rscutpath): rs_data.update(recsurf_report_stats.BuildSoundLevelDistributionArray(rscutpath)) rs_modelpath=mainrsfold+"Niveau_Sonore.csbin" if os.path.exists(rs_modelpath): rs_data.update(recsurf_report_stats.BuildSoundLevelDistributionArray(rs_modelpath)) sppsreportbuilder.SetSurfaceReceiverData(rs_data) #Generation du rapport sppsreportbuilder.SetPonctualReceiverData(pr_dict) #Sauvegarde au format CSV SaveDataToCSV(pr_dict,mainfolder.buildfullpath()) #Sauvegarde du rapport sppsreportbuilder.BuildHtmlCode(ScriptFolder,mainfolder.buildfullpath(),ui.application.getlocale()) #Actualisation de l'interface ui.application.sendevent(mainfolder,ui.idevent.IDEVENT_RELOAD_FOLDER)
def OnDFusion(self, idel): grp = ui.e_file(idel) dofusion(idel, grp.buildfullpath() + ui._("TousDens") + ".gabe")
def OnFusion(self, idel): grp = ui.e_file(idel) dofusion(idel, grp.buildfullpath() + "fusion.gabe")
def OnMakeSPLNormalGrid(self, idel): grp = ui.e_file(idel) if MakeSPLNormalGrid(idel, (grp.buildfullpath().decode('cp1252') + _("SPL_norm") + ".gabe").encode("cp1252")): #raffraichie l'arbre de résultat ui.application.sendevent(grp, ui.idevent.IDEVENT_RELOAD_FOLDER)
def OnFusion(self,idel): grp=ui.e_file(idel) dofusion(idel,grp.buildfullpath()+"fusion.gabe")
def OnMakeSPLNormalGrid(self,idel): grp=ui.e_file(idel) if MakeSPLNormalGrid(idel,(grp.buildfullpath().decode('cp1252')+_("SPL_norm")+".gabe").encode("cp1252")): #raffraichie l'arbre de résultat ui.application.sendevent(grp,ui.idevent.IDEVENT_RELOAD_FOLDER)