Пример #1
0
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)
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
 def OnDFusion(self, idel):
     grp = ui.e_file(idel)
     dofusion(idel, grp.buildfullpath() + ui._("TousDens") + ".gabe")
Пример #7
0
 def OnFusion(self, idel):
     grp = ui.e_file(idel)
     dofusion(idel, grp.buildfullpath() + "fusion.gabe")
Пример #8
0
 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)
Пример #9
0
 def OnFusion(self,idel):
     grp=ui.e_file(idel)
     dofusion(idel,grp.buildfullpath()+"fusion.gabe")
Пример #10
0
 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)