wolfhece 1.8.13__py3-none-any.whl → 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolfhece/GraphNotebook.py +0 -1
- wolfhece/PyCrosssections.py +591 -5
- wolfhece/PyDraw.py +1151 -413
- wolfhece/PyGui.py +2 -4
- wolfhece/PyParams.py +1515 -852
- wolfhece/PyVertex.py +73 -73
- wolfhece/PyVertexvectors.py +226 -808
- wolfhece/RatingCurve.py +19 -6
- wolfhece/apps/wolf2D.py +11 -0
- wolfhece/apps/wolfcompare2Darrays.py +51 -22
- wolfhece/bernoulli/NetworkOpenGL.py +337 -341
- wolfhece/drawing_obj.py +25 -0
- wolfhece/hydrology/Catchment.py +77 -77
- wolfhece/hydrology/Optimisation.py +206 -53
- wolfhece/hydrology/PostProcessHydrology.py +22 -22
- wolfhece/hydrology/SubBasin.py +17 -17
- wolfhece/hydrology/constant.py +4 -0
- wolfhece/hydrology/cst_exchanges.py +2 -1
- wolfhece/lazviewer/processing/estimate_normals/estimate_normals.cp310-win_amd64.pyd +0 -0
- wolfhece/lazviewer/vfuncs/vfuncs.cp310-win_amd64.pyd +0 -0
- wolfhece/libs/WolfDll.dll +0 -0
- wolfhece/libs/wolfogl.cp310-win_amd64.pyd +0 -0
- wolfhece/libs/wolfpy.cp310-win_amd64.pyd +0 -0
- wolfhece/mesh2d/wolf2dprev.py +4 -4
- wolfhece/multiprojects.py +13 -13
- wolfhece/pylogging.py +1 -1
- wolfhece/pyviews.py +23 -23
- wolfhece/wolf_array.py +69 -152
- wolfhece/wolf_texture.py +39 -16
- wolfhece/wolfresults_2D.py +1 -1
- {wolfhece-1.8.13.dist-info → wolfhece-2.0.0.dist-info}/METADATA +3 -2
- {wolfhece-1.8.13.dist-info → wolfhece-2.0.0.dist-info}/RECORD +37 -33
- wolfhece/apps/wolfgpu.py +0 -19
- /wolfhece/lazviewer/processing/estimate_normals/{estimate_normals.pyd → estimate_normals.cp39-win_amd64.pyd} +0 -0
- /wolfhece/lazviewer/vfuncs/{vfuncs.pyd → vfuncs.cp39-win_amd64.pyd} +0 -0
- {wolfhece-1.8.13.dist-info → wolfhece-2.0.0.dist-info}/LICENCE +0 -0
- {wolfhece-1.8.13.dist-info → wolfhece-2.0.0.dist-info}/WHEEL +0 -0
- {wolfhece-1.8.13.dist-info → wolfhece-2.0.0.dist-info}/top_level.txt +0 -0
@@ -15,7 +15,7 @@ import wx.lib.mixins.listctrl as listmix
|
|
15
15
|
from os.path import dirname, join, curdir
|
16
16
|
import re
|
17
17
|
from math import pi,ceil,sin,cos,sqrt
|
18
|
-
import logging
|
18
|
+
import logging
|
19
19
|
|
20
20
|
try:
|
21
21
|
from OpenGL.GL import *
|
@@ -29,7 +29,7 @@ except:
|
|
29
29
|
|
30
30
|
from ..PyTranslate import _
|
31
31
|
from ..pylogging import create_wxlogwindow
|
32
|
-
from ..PyParams import Wolf_Param
|
32
|
+
from ..PyParams import Wolf_Param, Type_Param, key_Param
|
33
33
|
from ..PyPalette import wolfpalette
|
34
34
|
try:
|
35
35
|
from ..libs import wolfpy
|
@@ -39,7 +39,7 @@ except:
|
|
39
39
|
msg+=_(' If your Python version is not 3.7.x or 3.9.x, you need to compile an adapted library with compile_wcython.py in wolfhece library path')
|
40
40
|
msg+=_(' See comments in compile_wcython.py or launch *python compile_wcython.py build_ext --inplace* in :')
|
41
41
|
msg+=' ' + dirname(__file__)
|
42
|
-
|
42
|
+
|
43
43
|
raise Exception(msg)
|
44
44
|
|
45
45
|
cubeVertices = ((100,100,0),(100,10,0),(100,200,0),(10,100,0))
|
@@ -82,7 +82,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
82
82
|
SaveNet=fileMenu.Append(wx.ID_SAVE, _('&Save'))
|
83
83
|
Launch=fileMenu.Append(wx.ID_ANY, _('&Launch Simulation'))
|
84
84
|
fileMenu.AppendSeparator()
|
85
|
-
|
85
|
+
|
86
86
|
imp = wx.Menu()
|
87
87
|
self.Network0D=False
|
88
88
|
NWoE=imp.Append(wx.ID_ANY, _('Import EPANET'))
|
@@ -107,7 +107,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
107
107
|
self.menubar=menubar
|
108
108
|
self.SetMenuBar(self.menubar)
|
109
109
|
#Ouvrir box pour ajouter nouveau jeu ou nouveau lien
|
110
|
-
#On associe les différents évènements
|
110
|
+
#On associe les différents évènements
|
111
111
|
|
112
112
|
#Partie Toolbar
|
113
113
|
self.count = 5
|
@@ -123,7 +123,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
123
123
|
self.Bind(wx.EVT_TOOL, self.OnQuit, texit)
|
124
124
|
# self.Bind(wx.EVT_TOOL, self.OnUndo, tundo)
|
125
125
|
# self.Bind(wx.EVT_TOOL, self.OnRedo, tredo)
|
126
|
-
|
126
|
+
|
127
127
|
self.SetSize((600, 600))
|
128
128
|
self.SetTitle(_('Network 0D'))
|
129
129
|
self.Centre()
|
@@ -190,7 +190,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
190
190
|
#self=self.canvas.mpl_connect('button_press_event', self.OnClick)
|
191
191
|
#Préparation des capacité externes liées à la manipulation de l'affichage
|
192
192
|
self.Add_Properties()
|
193
|
-
#Sous-routine pour extraire l'ensemble des numéros de vecteur et de noeuds
|
193
|
+
#Sous-routine pour extraire l'ensemble des numéros de vecteur et de noeuds
|
194
194
|
#Création du réseau afin de l'afficher en rendant comme résultat les éléments d'une structure OpenGL
|
195
195
|
TTTime=[0.0,0.0,0.0,0.0,0.0,0.0,0.0]
|
196
196
|
start = time.time()
|
@@ -290,7 +290,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
290
290
|
namepath=dlg.GetPath()
|
291
291
|
t=1
|
292
292
|
dlg.Destroy()
|
293
|
-
|
293
|
+
|
294
294
|
def OnOpen(self, e):
|
295
295
|
"""Obtention du patch menant au fichier ".vecz" pour obtenir fichier "zones" """
|
296
296
|
dlg = wx.FileDialog(self, _("Choose the .vecz file"),
|
@@ -332,7 +332,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
332
332
|
#New_frame=NewEdgeFrame('New edge in the network',self)
|
333
333
|
#self.frame_number += 1
|
334
334
|
|
335
|
-
|
335
|
+
|
336
336
|
def Initialise_Network(self):
|
337
337
|
"""Initialisation des variables du système"""
|
338
338
|
self.Nodes={}
|
@@ -340,7 +340,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
340
340
|
self.Nodes['IncJunctions']={}
|
341
341
|
Test=0
|
342
342
|
|
343
|
-
|
343
|
+
|
344
344
|
def Assoc_element(self):
|
345
345
|
"""Procédure utilisée pour identifier le noeud ou vecteur le plus proche d'un clic effectué par l'utilisateur"""
|
346
346
|
Index,dist=closest_node(self.LocNode, self.List_Nodes_OGL['CoordPlan'][:])
|
@@ -371,31 +371,31 @@ class Bernoulli_Frame(wx.Frame):
|
|
371
371
|
|
372
372
|
return Test
|
373
373
|
|
374
|
-
|
374
|
+
|
375
375
|
def Node_To_add(self,e):
|
376
376
|
"""Procédure d'ajout d'un noeud au sein du réseau"""
|
377
377
|
Test=1
|
378
378
|
#Nouvelle fenêtre s'ouvrant permettant ainsi d'ajouter les coordonnées du noeud
|
379
379
|
New_frame=NewNodeFrame('New node in the network',self)
|
380
|
-
#
|
381
|
-
|
380
|
+
#
|
381
|
+
|
382
382
|
def Edge_To_add(self,e):
|
383
383
|
"""Procédure d'ajout d'un Edge au sein du réseau"""
|
384
|
-
Test=1
|
384
|
+
Test=1
|
385
385
|
#Parcours du Graph à faire afin de s'assurer qu'au minimum deux noeuds sont bien présents au sein du réseau
|
386
386
|
New_frame=NewEdgeFrame('New edge in the network',self)
|
387
|
-
|
388
|
-
|
387
|
+
|
388
|
+
|
389
389
|
def Pattern_To_add(self,e):
|
390
390
|
"""Procédure d'ajout d'un Pattern au sein du réseau"""
|
391
|
-
Test=1
|
391
|
+
Test=1
|
392
392
|
#Nouvelle fenêtre permettant d'à la fois
|
393
393
|
#New_Pattern=NewPatternFrame('New pattern in the network',self)
|
394
394
|
dia = MyDialog(self, -1, 'Add new patterns (Quit to activate your choices)')
|
395
395
|
dia.ShowModal()
|
396
396
|
dia.Destroy()
|
397
397
|
|
398
|
-
|
398
|
+
|
399
399
|
def Edition_Evaluation(self,e):
|
400
400
|
"""Mise à jour des variables d'édition notamment pour arrêter ou commencer la phase d'édition du réseau"""
|
401
401
|
self.First_Node=[]
|
@@ -419,7 +419,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
419
419
|
def Network_To_Show(self):
|
420
420
|
"""Mise en place d'une procédure uniquement dédiée à initier la représentation du réseau """
|
421
421
|
self.Show_Network()
|
422
|
-
|
422
|
+
|
423
423
|
def onMotion(self, evt):
|
424
424
|
"""This is a bind event for the mouse moving on the MatPlotLib graph
|
425
425
|
screen. It will give the x,y coordinates of the mouse pointer.
|
@@ -434,8 +434,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
434
434
|
y = ""
|
435
435
|
|
436
436
|
self.Text.SetLabelText("x : %s ,y: %s" % (x,y))
|
437
|
-
|
438
|
-
|
437
|
+
|
438
|
+
|
439
439
|
def Print_VectorData(self):
|
440
440
|
"""Sous-routine utilisée pour ouvrir une nouvelle fenêtre locale via un clic gauche afin d'afficher les informations du vecteur sélectionné"""
|
441
441
|
#Ouverture d'une nouvelle fenêtre
|
@@ -450,7 +450,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
450
450
|
title = 'Vector ID: '+VecName
|
451
451
|
frame = Mywin(parent=self,title=title,MainW=self,Type_Element=0)
|
452
452
|
|
453
|
-
|
453
|
+
|
454
454
|
def Print_NodeData(self):
|
455
455
|
"""Sous-routine utilisée pour ouvrir une nouvelle fenêtre locale via un clic gauche afin d'afficher les informations du noeud sélectionné"""
|
456
456
|
#Ouverture d'une nouvelle fenêtre
|
@@ -466,7 +466,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
466
466
|
title = 'Node ID: '+NodeName
|
467
467
|
frame = Mywin(parent=self,title=title,MainW=self,Type_Element=1)
|
468
468
|
|
469
|
-
|
469
|
+
|
470
470
|
def Import_Directory(self):
|
471
471
|
"""On vient demander à l'utilisateur de fournir le fichier principal de son réseau, dans laquel il souhaite sauvegarder celui-ci potentiellement"""
|
472
472
|
dlg = wx.DirDialog(self, "Choose the Network directory")
|
@@ -480,8 +480,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
480
480
|
dlg.Destroy()
|
481
481
|
Name='Test_Network'
|
482
482
|
return Name,Directory
|
483
|
-
|
484
|
-
|
483
|
+
|
484
|
+
|
485
485
|
def Prepare_Network(self,pathname):
|
486
486
|
"""On vient écrire dans le dossier remis par l'utilisateur les paramètres afin de les afficher à l'écran pour éventuellement les modifier via l'utilisateur"""
|
487
487
|
#Partie exportation des fichiers principaux généraux
|
@@ -489,8 +489,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
489
489
|
self.ParamFile=pathname+'\\General_Network.param'
|
490
490
|
self.GeneralParam = Wolf_Param(self, filename=self.ParamFile)
|
491
491
|
Test=1
|
492
|
-
|
493
|
-
|
492
|
+
|
493
|
+
|
494
494
|
def Import_General_Parameters(self,namepath):
|
495
495
|
"""On va recherche les différents paramètres généraux utiles de la simulation selon leur catégorie afin de former un dictionnaire"""
|
496
496
|
#Dossier Principal
|
@@ -562,16 +562,16 @@ class Bernoulli_Frame(wx.Frame):
|
|
562
562
|
Test=1
|
563
563
|
return Param
|
564
564
|
|
565
|
-
|
565
|
+
|
566
566
|
def Update_Param(self):
|
567
567
|
"""Mise-à-jour des paramètres sur base de la sauvegarde du fichier de paramètres"""
|
568
568
|
ParFrame=self.GeneralParam
|
569
569
|
for group in ParFrame.myparams.keys():
|
570
570
|
for param_name in ParFrame.myparams[group].keys():
|
571
|
-
self.Param[group][param_name]=ParFrame.myparams[group][param_name][
|
571
|
+
self.Param[group][param_name]=ParFrame.myparams[group][param_name][key_Param.VALUE]
|
572
572
|
Test=1
|
573
573
|
Test=1
|
574
|
-
|
574
|
+
|
575
575
|
def Select_Node(self,LocNode,List_Nodes):
|
576
576
|
#Choix à faire du premier ou second noeud de l'Edge : on vient donc associer selon les coordonnées du noeud, celui qui est le plus proche
|
577
577
|
#Loc_Node,dis=closest_node(LocNode, Discr_Nodes['Coord'][:])
|
@@ -617,10 +617,10 @@ class Bernoulli_Frame(wx.Frame):
|
|
617
617
|
self.Last_Node=[]
|
618
618
|
Test=1
|
619
619
|
|
620
|
-
|
620
|
+
|
621
621
|
def Show_Network(self):
|
622
622
|
"""Sous-routine spécifique dédiée à l'affichage du réseau"""
|
623
|
-
self.Centre()
|
623
|
+
self.Centre()
|
624
624
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
625
625
|
|
626
626
|
#Partie Figure
|
@@ -669,12 +669,12 @@ class Bernoulli_Frame(wx.Frame):
|
|
669
669
|
|
670
670
|
frame_sizer.Add(self.canvas, 0, wx.EXPAND)
|
671
671
|
|
672
|
-
|
672
|
+
|
673
673
|
self.SetSizer(frame_sizer)
|
674
674
|
Test=1
|
675
675
|
#self.Fit()
|
676
|
-
|
677
|
-
|
676
|
+
|
677
|
+
|
678
678
|
def Gen_Param_To_show(self,e):
|
679
679
|
"""Sous-routine pour l'ouverture d'une frame permettant d'illustrer les paramètres généraux de résolution du système"""
|
680
680
|
if self.GeneralParam is not None:
|
@@ -683,8 +683,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
683
683
|
# #New_frame=GenParamFrame('Used parameters in the network',self)
|
684
684
|
# ParamFile=join(self.mainpath, 'General_Network.param')
|
685
685
|
# self.GeneralParam=Wolf_Param(self,filename=ParamFile)
|
686
|
-
|
687
|
-
|
686
|
+
|
687
|
+
|
688
688
|
def General_Parameters_Menu(self):
|
689
689
|
"""Menu permettant d'accéder au contenu des paramètres généraux du dossier afin de réaliser comment est construit le réseau"""
|
690
690
|
AddMenu = wx.Menu()
|
@@ -693,8 +693,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
693
693
|
MenuName='Show'
|
694
694
|
General_Download=AddMenu.Append(wx.ID_ANY, MenuName)
|
695
695
|
self.Bind(wx.EVT_MENU, self.Gen_Param_To_show, General_Download)
|
696
|
-
|
697
|
-
|
696
|
+
|
697
|
+
|
698
698
|
def Pattern_To_show(self,e):
|
699
699
|
"""Affichage du Pattern sous format de Tableau + possibilité affichage graphique Matplotlib"""
|
700
700
|
Test=1
|
@@ -703,7 +703,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
703
703
|
New_frame=NewPatternFrame('Used pattern in the network',self)
|
704
704
|
test=1
|
705
705
|
|
706
|
-
|
706
|
+
|
707
707
|
def Patterns_Exchange_Menu(self):
|
708
708
|
"""Mise en place des Menus de Pattern"""
|
709
709
|
|
@@ -727,7 +727,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
727
727
|
|
728
728
|
Test=1
|
729
729
|
|
730
|
-
|
730
|
+
|
731
731
|
def Patterns_Pumps_Menu(self):
|
732
732
|
"""Mise en place des Menus de Pattern"""
|
733
733
|
|
@@ -752,7 +752,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
752
752
|
|
753
753
|
Test=1
|
754
754
|
|
755
|
-
|
755
|
+
|
756
756
|
def Pump_To_show(self,e):
|
757
757
|
"""Affichage du Pattern sous format de Tableau + possibilité affichage graphique Matplotlib"""
|
758
758
|
Test=1
|
@@ -761,8 +761,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
761
761
|
New_frame=NewPumpFrame('Used pump in the network',self)
|
762
762
|
|
763
763
|
test=1
|
764
|
-
|
765
|
-
|
764
|
+
|
765
|
+
|
766
766
|
def SaveNetwork(self,e):
|
767
767
|
"""Procedure d'écriture des différents fichiers du réseau implémenté pour sauvegarder modifications ou exécuter simulation"""
|
768
768
|
#Première étape liée au choix du dossier où le nouveau dossier réseau est placé ainsi que le nom de ce dossier réseau
|
@@ -801,14 +801,14 @@ class Bernoulli_Frame(wx.Frame):
|
|
801
801
|
|
802
802
|
self.mainpath=pathname
|
803
803
|
return pathname
|
804
|
-
|
805
|
-
|
804
|
+
|
805
|
+
|
806
806
|
def Find_Spec_Elem(self,e):
|
807
807
|
"""Evènement permettant d'identifier la position immédiate d'un noeud ou d'une canalisation sur base de son nom"""
|
808
808
|
#Nouvelle fenêtre s'ouvrant permettant ainsi d'ajouter le nom de l'élément ainsi que le type d'élément à rechercher
|
809
809
|
New_frame=IdElementFrame('Researched element in the network',self)
|
810
|
-
|
811
|
-
|
810
|
+
|
811
|
+
|
812
812
|
def Show_Spec_Elem(self,e):
|
813
813
|
"""Sous-routine destinée à aller chercher les informations paramétriques disponibles pour étudier l'influence des paramètres sur indicateur de réseau"""
|
814
814
|
#Première étape est de demander à l'utilisateur de fournir nom de fichier où trouver l'étude paramétrique du réseau
|
@@ -842,7 +842,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
842
842
|
if(File_To_Read):
|
843
843
|
with open(namepath) as f:
|
844
844
|
content = f.readlines()
|
845
|
-
content = [x.rstrip('\n') for x in content]
|
845
|
+
content = [x.rstrip('\n') for x in content]
|
846
846
|
for NewLine in content:
|
847
847
|
NewLine=NewLine.lstrip()
|
848
848
|
if(NewLine==NewParam):
|
@@ -876,8 +876,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
876
876
|
New_frame=ParamToShow(self,'Parameters to show')
|
877
877
|
else:
|
878
878
|
self.Show_Param_Clients=True
|
879
|
-
|
880
|
-
|
879
|
+
|
880
|
+
|
881
881
|
def analyse_params(self):
|
882
882
|
"""Analyse de tous les paramètres présents """
|
883
883
|
Test_Node=2
|
@@ -963,7 +963,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
963
963
|
cpt_elem += 1
|
964
964
|
return Test_Node,Test_Vector,Loc_Param_Color
|
965
965
|
|
966
|
-
|
966
|
+
|
967
967
|
def analyse_params_Clients(self):
|
968
968
|
"""Analyse de tous les paramètres présents pour évaluer la présence et proportions de clients selon chaque méthode d'aggrégation"""
|
969
969
|
Test_Node=2
|
@@ -1051,13 +1051,13 @@ class Bernoulli_Frame(wx.Frame):
|
|
1051
1051
|
cpt_elem += 1
|
1052
1052
|
return Test_Node,Test_Vector,Loc_Param_Color
|
1053
1053
|
|
1054
|
-
|
1054
|
+
|
1055
1055
|
def Add_Properties(self):
|
1056
1056
|
"""Sous-routine destinée à initier les capacités de l'affichage (zoom, ...)"""
|
1057
1057
|
self.Zoom=0
|
1058
1058
|
self.NodeZoom=0
|
1059
1059
|
self.ZoomN=[[],[],[],[]]
|
1060
|
-
|
1060
|
+
|
1061
1061
|
def Zoom_Elem(self,e):
|
1062
1062
|
"""#Sous-routine permettant d'initialiser la procédure de Zoom consistant à sélectionner les deux coins opposés d'un rectangle pour définir
|
1063
1063
|
#zone de zoom"""
|
@@ -1103,7 +1103,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
1103
1103
|
self.menubar.Refresh()
|
1104
1104
|
Test=1
|
1105
1105
|
|
1106
|
-
|
1106
|
+
|
1107
1107
|
def LaunchSimul(self,e):
|
1108
1108
|
"""Sous-routine dédiée au lancement d'une simulation en ouvrant notamment une fenêtre qui permet d'identifier le type de simulation voulue par l'utilisateur"""
|
1109
1109
|
#Il faut sauvegarder le réseau si des modifications ont été réalisées ou si le réseau est nouveau
|
@@ -1112,8 +1112,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
1112
1112
|
else:
|
1113
1113
|
Text='There is no saved network. Try again.'
|
1114
1114
|
logging.info(Text)
|
1115
|
-
|
1116
|
-
|
1115
|
+
|
1116
|
+
|
1117
1117
|
def Verified_Launch(self):
|
1118
1118
|
"""Simulation permettant le lancement de la simulation ainsi que sauvegarde des résultats"""
|
1119
1119
|
if(not(self.Saved_Network)):
|
@@ -1143,7 +1143,7 @@ class Bernoulli_Frame(wx.Frame):
|
|
1143
1143
|
|
1144
1144
|
def Provide_Values(self,file):
|
1145
1145
|
with open(file) as f:
|
1146
|
-
content = f.read().splitlines()
|
1146
|
+
content = f.read().splitlines()
|
1147
1147
|
|
1148
1148
|
#On ferme le fichier créé uniquement pour obtenir les noms
|
1149
1149
|
|
@@ -1165,8 +1165,8 @@ class Bernoulli_Frame(wx.Frame):
|
|
1165
1165
|
cpt_Node+=1
|
1166
1166
|
Test=1
|
1167
1167
|
return Nodes
|
1168
|
-
|
1169
|
-
|
1168
|
+
|
1169
|
+
|
1170
1170
|
def Attr_Values_Vectors(self,Zones,Q,NameListVec,ID_Zone,total_div_time):
|
1171
1171
|
"""S'applique à une catégorie d'élément dans le réseau"""
|
1172
1172
|
cpt_vec=0
|
@@ -1296,7 +1296,7 @@ class MyCanvasBase(glcanvas.GLCanvas):
|
|
1296
1296
|
self.new_edge=self.loc_new_edge
|
1297
1297
|
if(hasattr(self,'Edition_Mode_Local')):
|
1298
1298
|
self.Edition_Mode=self.Edition_Mode_Local
|
1299
|
-
#Clic gauche renvoie des informations minimes sur le noeud ou tronçon le plus proche
|
1299
|
+
#Clic gauche renvoie des informations minimes sur le noeud ou tronçon le plus proche
|
1300
1300
|
if(self.Parent.Edition_Mode):
|
1301
1301
|
Test=1
|
1302
1302
|
#Clic gauche utilisé directement pour faire les liaisons entre les noeuds en venant soit sélectionner le premier noeud ou le second noeud pour faire la liaison
|
@@ -1331,7 +1331,7 @@ class MyCanvasBase(glcanvas.GLCanvas):
|
|
1331
1331
|
self.Edition_Mode=self.Edition_Mode_Local
|
1332
1332
|
#clic droit ouvre sur une fenêtre ouvrant sur la plupart des attributs de l'élément afin de les modifier (écriture souple ou lourde)
|
1333
1333
|
if(self.Parent.Edition_Mode):
|
1334
|
-
#Le clic droit amène directement dans la sous-routine d'ajout de noeud
|
1334
|
+
#Le clic droit amène directement dans la sous-routine d'ajout de noeud
|
1335
1335
|
New_frame=NewNodeFrame('New node in the network',self)
|
1336
1336
|
else:
|
1337
1337
|
#Clic Droit
|
@@ -1345,17 +1345,17 @@ class MyCanvasBase(glcanvas.GLCanvas):
|
|
1345
1345
|
#self.Show_Results=False
|
1346
1346
|
#Test temporaire afin de réaliser cette fois une surimpression du réseau en affichant des résultats
|
1347
1347
|
#Phase de reconnaissance des coordonnées afin d'y associer l'élément le plus proche
|
1348
|
-
test=1
|
1349
|
-
|
1348
|
+
test=1
|
1349
|
+
|
1350
1350
|
#La fermeture de la fenêtre secondaire vient donc indiquer que l'utilisateur a potentiellement renseigné ce qui l'intéressait.
|
1351
1351
|
#def OnChildFrameClose(self, event):
|
1352
|
-
|
1352
|
+
|
1353
1353
|
# self.child_frame.Close()
|
1354
1354
|
# self.child_frame.Destroy()
|
1355
1355
|
|
1356
1356
|
# Test=1
|
1357
1357
|
class CubeCanvas(MyCanvasBase):
|
1358
|
-
|
1358
|
+
|
1359
1359
|
#Procédure pour créer le réseau : on doit conserver les proportions dans l'affichage final
|
1360
1360
|
def wireCube(self):
|
1361
1361
|
Coord=[]
|
@@ -1374,7 +1374,7 @@ class CubeCanvas(MyCanvasBase):
|
|
1374
1374
|
Test_Node=0
|
1375
1375
|
Parent=self.GetParent()
|
1376
1376
|
TypeNode=['IncJunctions','Reservoirs']
|
1377
|
-
#Partie colorisation pour affichage de résultats selon
|
1377
|
+
#Partie colorisation pour affichage de résultats selon
|
1378
1378
|
if(hasattr(Parent,'Show_Param_Results')):
|
1379
1379
|
if(bool(Parent.Show_Param_Results)):
|
1380
1380
|
Test_Node,Test_Vector,Param_Color=Parent.analyse_params()
|
@@ -1473,7 +1473,7 @@ class CubeCanvas(MyCanvasBase):
|
|
1473
1473
|
self.PosVert.append(cubeVertex)
|
1474
1474
|
self.IndEdge.append(cpt_edge)
|
1475
1475
|
for i in range(3):
|
1476
|
-
Coord[i].append(self.List_Nodes_OGL['Coord'][cubeVertex][i])
|
1476
|
+
Coord[i].append(self.List_Nodes_OGL['Coord'][cubeVertex][i])
|
1477
1477
|
cpt_edge=cpt_edge+1
|
1478
1478
|
self.MaxCoord=[]
|
1479
1479
|
self.MinCoord=[]
|
@@ -1511,7 +1511,7 @@ class CubeCanvas(MyCanvasBase):
|
|
1511
1511
|
DeltaZoom=[]
|
1512
1512
|
for Coord in Parent.ZoomN:
|
1513
1513
|
Size += 1
|
1514
|
-
if(Size<3):
|
1514
|
+
if(Size<3):
|
1515
1515
|
Index = 0
|
1516
1516
|
for Position in Coord:
|
1517
1517
|
Loc_Pos[Index].append(Position)
|
@@ -1661,7 +1661,7 @@ class CubeCanvas(MyCanvasBase):
|
|
1661
1661
|
Pos=Parent.Nodes[Type][NameNode]['IndPos']
|
1662
1662
|
Reduc_R[Pos]=Parent.Nodes[Type][NameNode]['Radius']
|
1663
1663
|
PartParam[Pos]=Parent.Nodes[Type][NameNode]['Part_Params']
|
1664
|
-
|
1664
|
+
|
1665
1665
|
end = time.time()
|
1666
1666
|
TTTime[3]=end-start
|
1667
1667
|
start = time.time()
|
@@ -1685,13 +1685,13 @@ class CubeCanvas(MyCanvasBase):
|
|
1685
1685
|
if(self.List_Nodes_OGL['TypeNode'][cpt_node]!='Reservoirs'):
|
1686
1686
|
glVertex3dv(cubeVertex)
|
1687
1687
|
cpt_edge=cpt_edge+1
|
1688
|
-
|
1688
|
+
|
1689
1689
|
cpt_node=cpt_node+1
|
1690
1690
|
if(Test_Node!=2):
|
1691
|
-
glEnd()
|
1691
|
+
glEnd()
|
1692
1692
|
cpt_node=0
|
1693
1693
|
cpt_edge=0
|
1694
|
-
glColor3f(0.0, 0.0, 0.0)
|
1694
|
+
glColor3f(0.0, 0.0, 0.0)
|
1695
1695
|
#On s'occupe ensuite des réservoirs
|
1696
1696
|
for cubeVertex in self.NewVertiList:
|
1697
1697
|
if(self.List_Nodes_OGL['SpecNode'][cpt_node]==1):
|
@@ -1776,14 +1776,14 @@ class CubeCanvas(MyCanvasBase):
|
|
1776
1776
|
return
|
1777
1777
|
#Dessin adapté pour les carrés utilisés pour représenter les réservoirs
|
1778
1778
|
def draw_square(self,x, y, width,MinSize,SizeMax,SizMax):
|
1779
|
-
glBegin(GL_QUADS)
|
1779
|
+
glBegin(GL_QUADS)
|
1780
1780
|
widthx=width*SizeMax[0]*MinSize/SizMax[0]
|
1781
1781
|
widthy=width*SizeMax[1]*MinSize/SizMax[1]
|
1782
|
-
glVertex2f(x + widthx/2.0, y+widthy/2.0)
|
1783
|
-
glVertex2f(x + widthx/2.0, y-widthy/2.0)
|
1784
|
-
glVertex2f(x - widthx/2.0, y-widthy/2.0)
|
1785
|
-
glVertex2f(x - widthx/2.0, y+widthy/2.0)
|
1786
|
-
glEnd()
|
1782
|
+
glVertex2f(x + widthx/2.0, y+widthy/2.0)
|
1783
|
+
glVertex2f(x + widthx/2.0, y-widthy/2.0)
|
1784
|
+
glVertex2f(x - widthx/2.0, y-widthy/2.0)
|
1785
|
+
glVertex2f(x - widthx/2.0, y+widthy/2.0)
|
1786
|
+
glEnd()
|
1787
1787
|
|
1788
1788
|
#Sous-routine générale pour le dessin d'éléments particuliers de type connecteur
|
1789
1789
|
def DrawSpecEl(self,NewVertiList,cubeEdge,Case,Length,MinSize,SizeMax,SizMax):
|
@@ -1815,8 +1815,8 @@ class CubeCanvas(MyCanvasBase):
|
|
1815
1815
|
glColor3f(color[0],color[1],color[2])
|
1816
1816
|
glVertex3f(Node1[0],Node1[1],0.0)
|
1817
1817
|
glVertex3f(Node2[0],Node2[1],0.0)
|
1818
|
-
glVertex3f(Node3[0],Node3[1],0.0)
|
1819
|
-
glEnd()
|
1818
|
+
glVertex3f(Node3[0],Node3[1],0.0)
|
1819
|
+
glEnd()
|
1820
1820
|
|
1821
1821
|
def refresh2d(self,width,height):
|
1822
1822
|
#glViewport(0, 0, width, height)
|
@@ -1842,22 +1842,22 @@ class CubeCanvas(MyCanvasBase):
|
|
1842
1842
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
1843
1843
|
#glClearColor(0,0,1,0)
|
1844
1844
|
glLoadIdentity()
|
1845
|
-
self.refresh2d(width,height)
|
1846
|
-
glColor3f(0.0, 0.0, 0.0)
|
1845
|
+
self.refresh2d(width,height)
|
1846
|
+
glColor3f(0.0, 0.0, 0.0)
|
1847
1847
|
self.wireCube()
|
1848
1848
|
|
1849
1849
|
#glTranslatef(0.0, 0.0, -5)
|
1850
1850
|
|
1851
1851
|
|
1852
1852
|
self.SwapBuffers()
|
1853
|
-
|
1853
|
+
|
1854
1854
|
|
1855
1855
|
class NewNodeFrame(wx.Frame):
|
1856
1856
|
"""
|
1857
|
-
Frame utilisée pour permettre la mise en place du nouveau noeud
|
1857
|
+
Frame utilisée pour permettre la mise en place du nouveau noeud
|
1858
1858
|
"""
|
1859
1859
|
def __init__(self, title, parent):
|
1860
|
-
super(NewNodeFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
1860
|
+
super(NewNodeFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
1861
1861
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
1862
1862
|
parent.Edition_Mode_Local=True
|
1863
1863
|
|
@@ -1888,52 +1888,52 @@ class NewNodeFrame(wx.Frame):
|
|
1888
1888
|
else:
|
1889
1889
|
self.Default_Values=['Node_1','J','0.0','0.0','0.0','0']
|
1890
1890
|
|
1891
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
1891
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
1892
1892
|
|
1893
|
-
self.Centre()
|
1893
|
+
self.Centre()
|
1894
1894
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
1895
1895
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
1896
|
-
|
1896
|
+
|
1897
1897
|
#Message d'annonce pour savoir ce qui est à réaliser
|
1898
1898
|
Message='Characteristics of the new node'
|
1899
1899
|
self.message = wx.StaticText(self, -1, Message)
|
1900
1900
|
frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
1901
|
-
|
1902
|
-
#Partiée à la grille des coordonnées du noeud
|
1901
|
+
|
1902
|
+
#Partiée à la grille des coordonnées du noeud
|
1903
1903
|
self.panel = PanelGeneral(self)
|
1904
1904
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
1905
1905
|
#Partie liée aux choix de validation ou d'annulation
|
1906
1906
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
1907
1907
|
self.btn=wx.Button(self,-1,"Add")
|
1908
1908
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
1909
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Node)
|
1909
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Node)
|
1910
1910
|
|
1911
1911
|
self.btn2=wx.Button(self,-1,"Close")
|
1912
1912
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
1913
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
1913
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
1914
1914
|
|
1915
1915
|
self.btn3=wx.Button(self,-1,"Browse")
|
1916
1916
|
sz2.Add(self.btn3,0, wx.ALL, 10)
|
1917
|
-
self.btn3.Bind(wx.EVT_BUTTON,self.BrowseFile)
|
1917
|
+
self.btn3.Bind(wx.EVT_BUTTON,self.BrowseFile)
|
1918
1918
|
|
1919
1919
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
1920
1920
|
self.SetAutoLayout(True)
|
1921
1921
|
self.SetSizerAndFit(frame_sizer)
|
1922
1922
|
self.Show()
|
1923
1923
|
Test=1
|
1924
|
-
|
1924
|
+
|
1925
1925
|
#Sous-routine utilisée dans le but d'ajouter un noeud supplémentaire au réseau déjà présent
|
1926
1926
|
def Saved_Node(self, e):
|
1927
1927
|
|
1928
1928
|
Main=self.GetParent()
|
1929
|
-
#Il faut rechercher les valeurs dans la grille pour ajouter un nouveau noeud en faisant test sur le type de noeud
|
1929
|
+
#Il faut rechercher les valeurs dans la grille pour ajouter un nouveau noeud en faisant test sur le type de noeud
|
1930
1930
|
MyPanel=self.panel
|
1931
1931
|
Nb_Rows=MyPanel.thegrid.GetNumberRows()
|
1932
1932
|
Valid_Test=True
|
1933
1933
|
#Sauvegarde des valeurs de la grille
|
1934
1934
|
MyPanel.GridValues=[]
|
1935
1935
|
for Row in range(Nb_Rows):
|
1936
|
-
MyPanel.GridValues.append( MyPanel.thegrid.GetCellValue(Row,0))
|
1936
|
+
MyPanel.GridValues.append( MyPanel.thegrid.GetCellValue(Row,0))
|
1937
1937
|
for Row in range(Nb_Rows):
|
1938
1938
|
Value=MyPanel.GridValues[Row]
|
1939
1939
|
if(MyPanel.Main_Attr[Row]==self.Main_Attr[1]):
|
@@ -1944,8 +1944,8 @@ class NewNodeFrame(wx.Frame):
|
|
1944
1944
|
None, "The proposed format for the type of Node is not good. Impose the J Format ?", "Incorrect format", wx.YES_NO | wx.CANCEL | wx.CENTRE
|
1945
1945
|
)
|
1946
1946
|
result = dlg.ShowModal()
|
1947
|
-
self.Centre()
|
1948
|
-
self.Show()
|
1947
|
+
self.Centre()
|
1948
|
+
self.Show()
|
1949
1949
|
Valid_Test=False
|
1950
1950
|
if result == wx.ID_YES:
|
1951
1951
|
Type_Node='j'
|
@@ -1980,7 +1980,7 @@ class NewNodeFrame(wx.Frame):
|
|
1980
1980
|
Test=1
|
1981
1981
|
return Test
|
1982
1982
|
#Remplacement via les données réelles
|
1983
|
-
|
1983
|
+
|
1984
1984
|
#L'annulation étant choisie par l'utilisateur, l'option est donc levée et la fenêtre est simplement fermée
|
1985
1985
|
def CloseFrame(self, e):
|
1986
1986
|
Test=1
|
@@ -2000,7 +2000,7 @@ class NewNodeFrame(wx.Frame):
|
|
2000
2000
|
if(pathfile!='X'):
|
2001
2001
|
#On a bien un fichier valide à lire
|
2002
2002
|
Main=self.GetParent()
|
2003
|
-
Main.Nodes,Main.AttrNode,Main.ListedAttr,Main.DftAttrNode,Main.FoundAttr=Import_Nodes_Attributes(pathfile,Main.List_Nodes_OGL,Main.Param,Type_Analysis)
|
2003
|
+
Main.Nodes,Main.AttrNode,Main.ListedAttr,Main.DftAttrNode,Main.FoundAttr=Import_Nodes_Attributes(pathfile,Main.List_Nodes_OGL,Main.Param,Type_Analysis)
|
2004
2004
|
Test=1
|
2005
2005
|
if(bool(Main.Nodes['Reservoirs']) or bool(Main.Nodes['IncJunctions'])):
|
2006
2006
|
Main.NewNetwork=True
|
@@ -2019,7 +2019,7 @@ class NewNodeFrame(wx.Frame):
|
|
2019
2019
|
else:
|
2020
2020
|
Message='There is no node in the network. Repeat again the procedure with the right directory.'
|
2021
2021
|
logging.info(Message)
|
2022
|
-
|
2022
|
+
|
2023
2023
|
#Recherche du dossier pour partager les données sur les noeuds
|
2024
2024
|
def OnOpen(self):
|
2025
2025
|
namepath='X'
|
@@ -2029,7 +2029,7 @@ class NewNodeFrame(wx.Frame):
|
|
2029
2029
|
t=1
|
2030
2030
|
dlg.Destroy()
|
2031
2031
|
return namepath
|
2032
|
-
|
2032
|
+
|
2033
2033
|
#Préparation de la nouvelle frame pour aller rechercher les attributs manquants pour chaque élément du type
|
2034
2034
|
def PrepareNewFrame(self):
|
2035
2035
|
Main=self.GetParent()
|
@@ -2125,7 +2125,7 @@ class NewSubNodeFrame(wx.Frame):
|
|
2125
2125
|
Frame utilisée pour ajouter les paramètres propres à chaque catégorie d'élément connecteur
|
2126
2126
|
"""
|
2127
2127
|
def __init__(self, title, parent):
|
2128
|
-
super(NewSubNodeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2128
|
+
super(NewSubNodeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2129
2129
|
|
2130
2130
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
2131
2131
|
#Les attributs dépendent du type d'élément qui est ajouté par l'utilisateur
|
@@ -2150,7 +2150,7 @@ class NewSubNodeFrame(wx.Frame):
|
|
2150
2150
|
self.Default_Values.append('XX')
|
2151
2151
|
cpt_ptrn+=1
|
2152
2152
|
|
2153
|
-
self.Centre()
|
2153
|
+
self.Centre()
|
2154
2154
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2155
2155
|
|
2156
2156
|
#Message d'annonce pour savoir ce qui est à réaliser
|
@@ -2158,18 +2158,18 @@ class NewSubNodeFrame(wx.Frame):
|
|
2158
2158
|
self.message = wx.StaticText(self, -1, Message)
|
2159
2159
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
2160
2160
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
2161
|
-
#Partiée à la grille des coordonnées du noeud
|
2161
|
+
#Partiée à la grille des coordonnées du noeud
|
2162
2162
|
self.panel = PanelGeneral(self)
|
2163
2163
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
2164
2164
|
#Partie liée aux choix de validation ou d'annulation
|
2165
2165
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
2166
2166
|
self.btn=wx.Button(self,-1,"Ok")
|
2167
2167
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2168
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Node)
|
2168
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Node)
|
2169
2169
|
|
2170
2170
|
self.btn2=wx.Button(self,-1,"Close")
|
2171
2171
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2172
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2172
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2173
2173
|
|
2174
2174
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2175
2175
|
self.SetAutoLayout(True)
|
@@ -2184,7 +2184,7 @@ class NewSubNodeFrame(wx.Frame):
|
|
2184
2184
|
logging.info(Message)
|
2185
2185
|
self.Close()
|
2186
2186
|
self.Destroy()
|
2187
|
-
|
2187
|
+
|
2188
2188
|
#On va donc replacer l'ensemble des informations obtenues pour le réseau
|
2189
2189
|
def Saved_char_Node(self,e):
|
2190
2190
|
self.parent.Save_Valid_Node()
|
@@ -2229,7 +2229,7 @@ class NewAttrNodeFrame(wx.Frame):
|
|
2229
2229
|
Ajout des paramètres absents selon catégorie de noeuds
|
2230
2230
|
"""
|
2231
2231
|
def __init__(self, title, parent):
|
2232
|
-
super(NewAttrNodeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2232
|
+
super(NewAttrNodeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2233
2233
|
|
2234
2234
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
2235
2235
|
#Les attributs dépendent du type d'élément qui est ajouté par l'utilisateur
|
@@ -2240,7 +2240,7 @@ class NewAttrNodeFrame(wx.Frame):
|
|
2240
2240
|
self.Main_Attr=parent.MissingAttr
|
2241
2241
|
self.Default_Values=parent.DftValue
|
2242
2242
|
|
2243
|
-
self.Centre()
|
2243
|
+
self.Centre()
|
2244
2244
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2245
2245
|
|
2246
2246
|
#Message d'annonce pour savoir ce qui est à réaliser
|
@@ -2248,18 +2248,18 @@ class NewAttrNodeFrame(wx.Frame):
|
|
2248
2248
|
self.message = wx.StaticText(self, -1, Message)
|
2249
2249
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
2250
2250
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
2251
|
-
#Partiée à la grille des coordonnées du noeud
|
2251
|
+
#Partiée à la grille des coordonnées du noeud
|
2252
2252
|
self.panel = PanelGeneral(self)
|
2253
2253
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
2254
2254
|
#Partie liée aux choix de validation ou d'annulation
|
2255
2255
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
2256
2256
|
self.btn=wx.Button(self,-1,"Ok")
|
2257
2257
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2258
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Node)
|
2258
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Node)
|
2259
2259
|
|
2260
2260
|
self.btn2=wx.Button(self,-1,"Close")
|
2261
2261
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2262
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2262
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2263
2263
|
|
2264
2264
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2265
2265
|
self.SetAutoLayout(True)
|
@@ -2271,7 +2271,7 @@ class NewAttrNodeFrame(wx.Frame):
|
|
2271
2271
|
def CloseFrame(self, e):
|
2272
2272
|
Test=1
|
2273
2273
|
self.Saved_char_Node(e)
|
2274
|
-
|
2274
|
+
|
2275
2275
|
#On va donc replacer l'ensemble des informations obtenues pour le réseau
|
2276
2276
|
def Saved_char_Node(self,e):
|
2277
2277
|
Test=1
|
@@ -2320,13 +2320,13 @@ class Draw_Options(wx.Frame):
|
|
2320
2320
|
"""
|
2321
2321
|
Ouverture d'une nouvelle fenêtre permettant de laisser le choix à l'utilisateur de sélectionner ce qu'il souhaite afficher
|
2322
2322
|
"""
|
2323
|
-
def __init__(self, parent, title,MainW):
|
2324
|
-
super(Draw_Options, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2323
|
+
def __init__(self, parent, title,MainW):
|
2324
|
+
super(Draw_Options, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2325
2325
|
#panel = MyPanel(self,MainW)
|
2326
|
-
#panel = wx.Panel(self)
|
2327
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
2326
|
+
#panel = wx.Panel(self)
|
2327
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
2328
2328
|
|
2329
|
-
self.Centre()
|
2329
|
+
self.Centre()
|
2330
2330
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2331
2331
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
2332
2332
|
#Message d'annonce pour savoir ce qui est à réaliser
|
@@ -2343,23 +2343,23 @@ class Draw_Options(wx.Frame):
|
|
2343
2343
|
#dlg1=sz2.Add(wx.Button(self, wx.ID_OK, ""), 0, wx.ALL, 10)
|
2344
2344
|
self.btn=wx.Button(self,-1,"Ok")
|
2345
2345
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2346
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Param_Read)
|
2346
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Param_Read)
|
2347
2347
|
|
2348
2348
|
#dlg2=sz2.Add(wx.Button(self, wx.ID_CANCEL, ""), 0, wx.ALL, 10)
|
2349
2349
|
self.btn2=wx.Button(self,-1,"Annuler")
|
2350
2350
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2351
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2351
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2352
2352
|
|
2353
2353
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2354
2354
|
self.SetAutoLayout(True)
|
2355
2355
|
self.SetSizerAndFit(frame_sizer)
|
2356
|
-
self.Show()
|
2357
|
-
self.CenterOnScreen()
|
2356
|
+
self.Show()
|
2357
|
+
self.CenterOnScreen()
|
2358
2358
|
#self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
2359
2359
|
Test=1
|
2360
2360
|
#fdRet = dlgF.ShowModal()
|
2361
2361
|
List_Params=[]
|
2362
|
-
|
2362
|
+
|
2363
2363
|
#L'utilisateur choisit ok, mais on doit bien également s'assurer que des cases ont été cochées pour être capable d'afficher les résultats
|
2364
2364
|
def Param_Read(self, e):
|
2365
2365
|
Test=1
|
@@ -2393,10 +2393,10 @@ class Draw_Options(wx.Frame):
|
|
2393
2393
|
self.Destroy()
|
2394
2394
|
|
2395
2395
|
class ParamToShow(wx.Frame):
|
2396
|
-
def __init__(self, parent, title):
|
2397
|
-
super(ParamToShow, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2398
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
2399
|
-
self.Centre()
|
2396
|
+
def __init__(self, parent, title):
|
2397
|
+
super(ParamToShow, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2398
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
2399
|
+
self.Centre()
|
2400
2400
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2401
2401
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
2402
2402
|
#Message d'annonce pour savoir ce qui est à réaliser
|
@@ -2417,16 +2417,16 @@ class ParamToShow(wx.Frame):
|
|
2417
2417
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
2418
2418
|
self.btn=wx.Button(self,-1,"Ok")
|
2419
2419
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2420
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Param_Read)
|
2420
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Param_Read)
|
2421
2421
|
|
2422
2422
|
self.btn2=wx.Button(self,-1,"Annuler")
|
2423
2423
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2424
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2424
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2425
2425
|
|
2426
2426
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2427
2427
|
self.SetAutoLayout(True)
|
2428
2428
|
self.SetSizerAndFit(frame_sizer)
|
2429
|
-
self.Show()
|
2429
|
+
self.Show()
|
2430
2430
|
#L'utilisateur choisit ok, mais on doit bien également s'assurer que des cases ont été cochées pour être capable d'afficher les résultats
|
2431
2431
|
def Param_Read(self, e):
|
2432
2432
|
Parent=self.GetParent()
|
@@ -2443,14 +2443,14 @@ class ParamToShow(wx.Frame):
|
|
2443
2443
|
self.Close()
|
2444
2444
|
self.Destroy()
|
2445
2445
|
|
2446
|
-
#
|
2446
|
+
#
|
2447
2447
|
class NewEdgeFrame(wx.Frame):
|
2448
2448
|
"""
|
2449
|
-
Frame utilisée pour permettre la mise en place du nouveau élément connecteur
|
2449
|
+
Frame utilisée pour permettre la mise en place du nouveau élément connecteur
|
2450
2450
|
"""
|
2451
2451
|
def __init__(self, title, parent):
|
2452
|
-
super(NewEdgeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2453
|
-
|
2452
|
+
super(NewEdgeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2453
|
+
|
2454
2454
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
2455
2455
|
parent.Edition_Mode_Local=True
|
2456
2456
|
#Préparation des données par défaut et des attributs principaux
|
@@ -2476,17 +2476,17 @@ class NewEdgeFrame(wx.Frame):
|
|
2476
2476
|
NameNode2=MainW.Ident_Nodes[1]
|
2477
2477
|
self.Default_Values=[NameNode1,NameNode2,Edge_Name,'P']
|
2478
2478
|
|
2479
|
-
self.Centre()
|
2479
|
+
self.Centre()
|
2480
2480
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2481
2481
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
2482
|
-
|
2482
|
+
|
2483
2483
|
#Message d'annonce pour savoir ce qui est à réaliser
|
2484
2484
|
Message='Characteristics of the new edge'
|
2485
2485
|
self.message = wx.StaticText(self, -1, Message)
|
2486
2486
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
2487
2487
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
2488
2488
|
self.parent=parent
|
2489
|
-
#Partiée à la grille des coordonnées du noeud
|
2489
|
+
#Partiée à la grille des coordonnées du noeud
|
2490
2490
|
#self.panel = PanelEdge(self,parent)
|
2491
2491
|
self.panel = PanelGeneral(self)
|
2492
2492
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
@@ -2494,15 +2494,15 @@ class NewEdgeFrame(wx.Frame):
|
|
2494
2494
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
2495
2495
|
self.btn=wx.Button(self,-1,"Add")
|
2496
2496
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2497
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Save_Grid)
|
2497
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Save_Grid)
|
2498
2498
|
|
2499
2499
|
self.btn2=wx.Button(self,-1,"Close")
|
2500
2500
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2501
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2501
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2502
2502
|
|
2503
2503
|
self.btn3=wx.Button(self,-1,"Browse")
|
2504
2504
|
sz2.Add(self.btn3,0, wx.ALL, 10)
|
2505
|
-
self.btn3.Bind(wx.EVT_BUTTON,self.Browse_Edge)
|
2505
|
+
self.btn3.Bind(wx.EVT_BUTTON,self.Browse_Edge)
|
2506
2506
|
|
2507
2507
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2508
2508
|
self.SetAutoLayout(True)
|
@@ -2526,8 +2526,8 @@ class NewEdgeFrame(wx.Frame):
|
|
2526
2526
|
Parent.Browse_Method=False
|
2527
2527
|
Parent.First_Node=[]
|
2528
2528
|
Parent.Last_Node=[]
|
2529
|
-
#Il faut rechercher les valeurs dans la grille pour ajouter un nouveau noeud en faisant test sur le type de noeud
|
2530
|
-
|
2529
|
+
#Il faut rechercher les valeurs dans la grille pour ajouter un nouveau noeud en faisant test sur le type de noeud
|
2530
|
+
|
2531
2531
|
self.Main_Attr=['First Node Name','Second Node Name']
|
2532
2532
|
Valid_Test=True
|
2533
2533
|
Node_pos=[]
|
@@ -2569,7 +2569,7 @@ class NewEdgeFrame(wx.Frame):
|
|
2569
2569
|
break
|
2570
2570
|
if(Attr_Node[0]==1 and Attr_Node[1]==1):
|
2571
2571
|
self.Pos_Nodo=Pos_Node
|
2572
|
-
#On doit en réalité un nouveau subPanel pour permettre à l'utilisateur de renseigner l'ensemble des paramètres liés
|
2572
|
+
#On doit en réalité un nouveau subPanel pour permettre à l'utilisateur de renseigner l'ensemble des paramètres liés
|
2573
2573
|
#à la catégorie d'éléments (pipes, pump ou valve)
|
2574
2574
|
if(self.Edge_Extract_Option==1):
|
2575
2575
|
self.Name_Edge=Name_Edge
|
@@ -2586,14 +2586,14 @@ class NewEdgeFrame(wx.Frame):
|
|
2586
2586
|
Message=Empl_Node[Id_Node]+' Node is not présent in '+Node_pos[0]
|
2587
2587
|
logging.info(Message)
|
2588
2588
|
|
2589
|
-
self.Centre()
|
2590
|
-
self.Show()
|
2589
|
+
self.Centre()
|
2590
|
+
self.Show()
|
2591
2591
|
Valid_Test=False
|
2592
2592
|
else:
|
2593
2593
|
logging.info('Le type de l élément n est pas valide')
|
2594
2594
|
return Test
|
2595
2595
|
#Remplacement via les données réelles
|
2596
|
-
|
2596
|
+
|
2597
2597
|
#Sous-routine ayant pour but de récupérer les coordonnées des noeuds extrême d'un élément connecteur du réseau
|
2598
2598
|
def Ident_Coordinates(self):
|
2599
2599
|
Parent=self.GetParent()
|
@@ -2673,7 +2673,7 @@ class NewEdgeFrame(wx.Frame):
|
|
2673
2673
|
#On vient reset du coup également la grille pour que la valeur par défaut repasse au noeud suivant
|
2674
2674
|
DfltName='Edge_'+str(Nb_cat_edges+2)
|
2675
2675
|
MyPanel=self.panel
|
2676
|
-
MyPanel.thegrid.SetCellValue(2,0, DfltName)
|
2676
|
+
MyPanel.thegrid.SetCellValue(2,0, DfltName)
|
2677
2677
|
|
2678
2678
|
#L'annulation étant choisie par l'utilisateur, l'option est donc levée et la fenêtre est simplement fermée
|
2679
2679
|
def CloseFrame(self, e):
|
@@ -2864,13 +2864,13 @@ class NewEdgeFrame(wx.Frame):
|
|
2864
2864
|
Parent=self.GetParent()
|
2865
2865
|
Parent.Browse_Method=False
|
2866
2866
|
|
2867
|
-
#
|
2867
|
+
#
|
2868
2868
|
class NewSubEdgeFrame(wx.Frame):
|
2869
2869
|
"""
|
2870
|
-
Frame utilisée pour ajouter les paramètres propres à chaque catégorie d'élément connecteur
|
2870
|
+
Frame utilisée pour ajouter les paramètres propres à chaque catégorie d'élément connecteur
|
2871
2871
|
"""
|
2872
2872
|
def __init__(self, title, parent):
|
2873
|
-
super(NewSubEdgeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2873
|
+
super(NewSubEdgeFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
2874
2874
|
|
2875
2875
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
2876
2876
|
#Les attributs dépendent du type d'élément qui est ajouté par l'utilisateur
|
@@ -2914,7 +2914,7 @@ class NewSubEdgeFrame(wx.Frame):
|
|
2914
2914
|
self.Default_Values[cpt_attrib]=str(Length)
|
2915
2915
|
cpt_attrib+=1
|
2916
2916
|
|
2917
|
-
self.Centre()
|
2917
|
+
self.Centre()
|
2918
2918
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
2919
2919
|
|
2920
2920
|
#Message d'annonce pour savoir ce qui est à réaliser
|
@@ -2922,18 +2922,18 @@ class NewSubEdgeFrame(wx.Frame):
|
|
2922
2922
|
self.message = wx.StaticText(self, -1, Message)
|
2923
2923
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
2924
2924
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
2925
|
-
#Partiée à la grille des coordonnées du noeud
|
2925
|
+
#Partiée à la grille des coordonnées du noeud
|
2926
2926
|
self.panel = PanelGeneral(self)
|
2927
2927
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
2928
2928
|
#Partie liée aux choix de validation ou d'annulation
|
2929
2929
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
2930
2930
|
self.btn=wx.Button(self,-1,"Ok")
|
2931
2931
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
2932
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Edge)
|
2932
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_char_Edge)
|
2933
2933
|
|
2934
2934
|
self.btn2=wx.Button(self,-1,"Close")
|
2935
2935
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
2936
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2936
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
2937
2937
|
|
2938
2938
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
2939
2939
|
self.SetAutoLayout(True)
|
@@ -2946,7 +2946,7 @@ class NewSubEdgeFrame(wx.Frame):
|
|
2946
2946
|
Test=1
|
2947
2947
|
self.Close()
|
2948
2948
|
self.Destroy()
|
2949
|
-
|
2949
|
+
|
2950
2950
|
#On va donc replacer l'ensemble des informations obtenues pour le réseau
|
2951
2951
|
def Saved_char_Edge(self,e):
|
2952
2952
|
if(self.parent.Edge_Extract_Option==1):
|
@@ -3016,7 +3016,7 @@ class NewSubPumpFrame(wx.Frame):
|
|
3016
3016
|
Frame utilisée pour ajouter les coefficients propres à une nouvelle pompe placée dans le réseau selon type de pompe
|
3017
3017
|
"""
|
3018
3018
|
def __init__(self, title, parent):
|
3019
|
-
super(NewSubPumpFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3019
|
+
super(NewSubPumpFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3020
3020
|
#Préparation de l'initialisation du panel
|
3021
3021
|
self.parent=parent
|
3022
3022
|
MainEdge=parent.GetParent()
|
@@ -3043,7 +3043,7 @@ class NewSubPumpFrame(wx.Frame):
|
|
3043
3043
|
self.Main_Attr.append('Coeff_P'+str(i+1))
|
3044
3044
|
self.Default_Values.append('0.0')
|
3045
3045
|
|
3046
|
-
self.Centre()
|
3046
|
+
self.Centre()
|
3047
3047
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3048
3048
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3049
3049
|
self.Name_Edge=parent.Name_Edge
|
@@ -3052,18 +3052,18 @@ class NewSubPumpFrame(wx.Frame):
|
|
3052
3052
|
self.message = wx.StaticText(self, -1, Message)
|
3053
3053
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3054
3054
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
3055
|
-
#Partiée à la grille des coordonnées du noeud
|
3055
|
+
#Partiée à la grille des coordonnées du noeud
|
3056
3056
|
self.panel = PanelGeneral(self)
|
3057
3057
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
3058
3058
|
#Partie liée aux choix de validation ou d'annulation
|
3059
3059
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
3060
3060
|
self.btn=wx.Button(self,-1,"Ok")
|
3061
3061
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
3062
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Coef_Pumps)
|
3062
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Coef_Pumps)
|
3063
3063
|
|
3064
3064
|
self.btn2=wx.Button(self,-1,"Close")
|
3065
3065
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3066
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3066
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3067
3067
|
|
3068
3068
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3069
3069
|
self.SetAutoLayout(True)
|
@@ -3076,7 +3076,7 @@ class NewSubPumpFrame(wx.Frame):
|
|
3076
3076
|
Test=1
|
3077
3077
|
self.Close()
|
3078
3078
|
self.Destroy()
|
3079
|
-
|
3079
|
+
|
3080
3080
|
#On va donc replacer l'ensemble des informations obtenues pour la pompe étudiée
|
3081
3081
|
def Saved_Coef_Pumps(self,e):
|
3082
3082
|
Test=1
|
@@ -3099,7 +3099,7 @@ class NewSubValveFrame(wx.Frame):
|
|
3099
3099
|
Sous-routine liée à la mise en place des coefficients de fonctionnement de chaque valve
|
3100
3100
|
"""
|
3101
3101
|
def __init__(self, title, parent):
|
3102
|
-
super(NewSubValveFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3102
|
+
super(NewSubValveFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3103
3103
|
#Préparation de l'initialisation du panel
|
3104
3104
|
self.parent=parent
|
3105
3105
|
MainEdge=parent.GetParent()
|
@@ -3116,7 +3116,7 @@ class NewSubValveFrame(wx.Frame):
|
|
3116
3116
|
self.Nb_Coeffs=2
|
3117
3117
|
self.Default_Values=['1.0','2.0']
|
3118
3118
|
|
3119
|
-
self.Centre()
|
3119
|
+
self.Centre()
|
3120
3120
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3121
3121
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3122
3122
|
self.Name_Edge=parent.Name_Edge
|
@@ -3125,18 +3125,18 @@ class NewSubValveFrame(wx.Frame):
|
|
3125
3125
|
self.message = wx.StaticText(self, -1, Message)
|
3126
3126
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3127
3127
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
3128
|
-
#Partiée à la grille des coordonnées du noeud
|
3128
|
+
#Partiée à la grille des coordonnées du noeud
|
3129
3129
|
self.panel = PanelGeneral(self)
|
3130
3130
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
3131
3131
|
#Partie liée aux choix de validation ou d'annulation
|
3132
3132
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
3133
3133
|
self.btn=wx.Button(self,-1,"Ok")
|
3134
3134
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
3135
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Coef_Valves)
|
3135
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Coef_Valves)
|
3136
3136
|
|
3137
3137
|
self.btn2=wx.Button(self,-1,"Close")
|
3138
3138
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3139
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3139
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3140
3140
|
|
3141
3141
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3142
3142
|
self.SetAutoLayout(True)
|
@@ -3149,7 +3149,7 @@ class NewSubValveFrame(wx.Frame):
|
|
3149
3149
|
Test=1
|
3150
3150
|
self.Close()
|
3151
3151
|
self.Destroy()
|
3152
|
-
|
3152
|
+
|
3153
3153
|
#On va donc replacer l'ensemble des informations obtenues pour la pompe étudiée
|
3154
3154
|
def Saved_Coef_Valves(self,e):
|
3155
3155
|
Test=1
|
@@ -3162,10 +3162,10 @@ class NewSubValveFrame(wx.Frame):
|
|
3162
3162
|
#Création de la grille permettant l'implémentation des coefficients de la pompe selon type de loi
|
3163
3163
|
|
3164
3164
|
class PanelGeneral(wx.Panel):
|
3165
|
-
|
3165
|
+
|
3166
3166
|
def __init__(self, parent):
|
3167
3167
|
super(PanelGeneral, self).__init__(parent)
|
3168
|
-
|
3168
|
+
|
3169
3169
|
self.Main_Attr=parent.Main_Attr
|
3170
3170
|
Default_Values=parent.Default_Values
|
3171
3171
|
Nb_attrib=len(self.Main_Attr)
|
@@ -3184,7 +3184,7 @@ class PanelGeneral(wx.Panel):
|
|
3184
3184
|
mygrid.SetRowLabelValue(cpt_row,Attr)
|
3185
3185
|
mygrid.SetCellAlignment(cpt_row, 0, wx.ALIGN_CENTRE, wx.ALIGN_CENTRE)
|
3186
3186
|
mygrid.SetCellValue(cpt_row,0, Default_Values[cpt_row])
|
3187
|
-
self.GridValues.append(Default_Values[cpt_row])
|
3187
|
+
self.GridValues.append(Default_Values[cpt_row])
|
3188
3188
|
cpt_row=cpt_row+1
|
3189
3189
|
#mygrid.AutoSizeColumns(False)
|
3190
3190
|
mygrid.SetRowLabelSize(150)
|
@@ -3199,36 +3199,36 @@ class PanelGeneral(wx.Panel):
|
|
3199
3199
|
Test=1
|
3200
3200
|
self.modified_grid=False
|
3201
3201
|
self.thegrid.Bind(grid.EVT_GRID_CELL_CHANGED, self.Saved_Modifications)
|
3202
|
-
|
3202
|
+
|
3203
3203
|
def Saved_Modifications(self,e):
|
3204
3204
|
self.modified_grid=True
|
3205
3205
|
#Sauvegarde des valeurs de la grille
|
3206
3206
|
Nb_Rows=self.thegrid.GetNumberRows()
|
3207
3207
|
self.GridValues=[]
|
3208
3208
|
for Row in range(Nb_Rows):
|
3209
|
-
self.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
3209
|
+
self.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
3210
3210
|
|
3211
3211
|
|
3212
|
-
#
|
3212
|
+
#
|
3213
3213
|
class NewPatternFrame2(wx.Frame):
|
3214
3214
|
"""
|
3215
3215
|
Frame utilisée pour permettre la mise en place du nouveau pattern
|
3216
3216
|
"""
|
3217
3217
|
def __init__(self, title, parent):
|
3218
|
-
super(NewPatternFrame2, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3218
|
+
super(NewPatternFrame2, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3219
3219
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3220
3220
|
parent.Edition_Mode_Local=True
|
3221
3221
|
|
3222
|
-
self.Centre()
|
3222
|
+
self.Centre()
|
3223
3223
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3224
3224
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3225
|
-
|
3225
|
+
|
3226
3226
|
#Message d'annonce pour savoir ce qui est à réaliser
|
3227
3227
|
Message='Characteristics of the new Pattern'
|
3228
3228
|
self.message = wx.StaticText(self, -1, Message)
|
3229
3229
|
#frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3230
3230
|
frame_sizer.Add(self.message, 0, wx.EXPAND)
|
3231
|
-
|
3231
|
+
|
3232
3232
|
#Partie liée à l'ajout des informations du Pattern
|
3233
3233
|
self.panel = PanelPattern(self,parent)
|
3234
3234
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
@@ -3236,11 +3236,11 @@ class NewPatternFrame2(wx.Frame):
|
|
3236
3236
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
3237
3237
|
self.btn=wx.Button(self,-1,"Ok")
|
3238
3238
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
3239
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Pattern)
|
3239
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Saved_Pattern)
|
3240
3240
|
|
3241
3241
|
self.btn2=wx.Button(self,-1,"Annuler")
|
3242
3242
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3243
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3243
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3244
3244
|
|
3245
3245
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3246
3246
|
self.SetAutoLayout(True)
|
@@ -3262,27 +3262,27 @@ class PanelPattern(wx.Panel):
|
|
3262
3262
|
def __init__(self, parent,MainW):
|
3263
3263
|
super(PanelPattern, self).__init__(parent)
|
3264
3264
|
|
3265
|
-
#
|
3265
|
+
#
|
3266
3266
|
class GenParamFrame(wx.Frame):
|
3267
3267
|
"""
|
3268
3268
|
Frame utilisée pour permettre la mise en évidence des paramètres généraux actuels de résolution
|
3269
3269
|
"""
|
3270
3270
|
def __init__(self, title, parent):
|
3271
|
-
super(GenParamFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3271
|
+
super(GenParamFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3272
3272
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3273
3273
|
parent.Edition_Mode_Local=True
|
3274
3274
|
|
3275
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
3275
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
3276
3276
|
|
3277
|
-
self.Centre()
|
3277
|
+
self.Centre()
|
3278
3278
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3279
3279
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3280
|
-
|
3280
|
+
|
3281
3281
|
#Message d'annonce pour savoir ce qui est à réaliser
|
3282
3282
|
Message='General parameters of the Network'
|
3283
3283
|
self.message = wx.StaticText(self, -1, Message)
|
3284
3284
|
frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3285
|
-
|
3285
|
+
|
3286
3286
|
#Partiée liée à l'affichage des informations du pattern (menu défilant ?)
|
3287
3287
|
self.panel = PanelParams(self,parent)
|
3288
3288
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
@@ -3291,18 +3291,18 @@ class GenParamFrame(wx.Frame):
|
|
3291
3291
|
|
3292
3292
|
self.btn2=wx.Button(self,-1,"Save Modifications")
|
3293
3293
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3294
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModifications)
|
3294
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModifications)
|
3295
3295
|
|
3296
3296
|
self.btn2=wx.Button(self,-1,"Annuler")
|
3297
3297
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3298
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3298
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3299
3299
|
|
3300
3300
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3301
3301
|
self.SetAutoLayout(True)
|
3302
3302
|
self.SetSizerAndFit(frame_sizer)
|
3303
3303
|
self.Show()
|
3304
3304
|
|
3305
|
-
|
3305
|
+
|
3306
3306
|
#L'annulation étant choisie par l'utilisateur, la fenêtre est simplement fermée
|
3307
3307
|
def CloseFrame(self, e):
|
3308
3308
|
self.Close()
|
@@ -3339,8 +3339,8 @@ class GenParamFrame(wx.Frame):
|
|
3339
3339
|
None, Dial, "Wrong Entry", wx.OK | wx.CENTRE
|
3340
3340
|
)
|
3341
3341
|
result = dlg.ShowModal()
|
3342
|
-
self.Centre()
|
3343
|
-
self.Show()
|
3342
|
+
self.Centre()
|
3343
|
+
self.Show()
|
3344
3344
|
if result == wx.ID_YES:
|
3345
3345
|
Test=1
|
3346
3346
|
self.Destroy()
|
@@ -3357,10 +3357,10 @@ class PanelParams(wx.Panel):
|
|
3357
3357
|
"""
|
3358
3358
|
Création de la grille permettant l'affichage des principaux attributs du réseau
|
3359
3359
|
"""
|
3360
|
-
|
3360
|
+
|
3361
3361
|
def __init__(self, parent,MainW):
|
3362
3362
|
super(PanelParams, self).__init__(parent)
|
3363
|
-
|
3363
|
+
|
3364
3364
|
#Initialisation des grilles liées à chaque dossier important : paramètres généraux, temps et optimisation
|
3365
3365
|
self.list_ctrl_params = [0,0,0]
|
3366
3366
|
for i in range(len(self.list_ctrl_params)):
|
@@ -3431,31 +3431,31 @@ class PanelParams(wx.Panel):
|
|
3431
3431
|
#L'entrée soumise n'est donc pas valide : il faut prévenir l'utilisateur via ouverture fenêtre
|
3432
3432
|
Test=1
|
3433
3433
|
break
|
3434
|
-
|
3434
|
+
|
3435
3435
|
cpt_special += 1
|
3436
3436
|
return Value,Comment
|
3437
3437
|
|
3438
|
-
#
|
3438
|
+
#
|
3439
3439
|
class NewPatternFrame(wx.Frame):
|
3440
3440
|
"""
|
3441
3441
|
Frame utilisée pour permettre la mise en place du pattern
|
3442
3442
|
"""
|
3443
3443
|
def __init__(self, title, parent):
|
3444
|
-
super(NewPatternFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3444
|
+
super(NewPatternFrame, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3445
3445
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3446
3446
|
parent.Edition_Mode_Local=True
|
3447
3447
|
|
3448
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
3448
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
3449
3449
|
|
3450
|
-
self.Centre()
|
3450
|
+
self.Centre()
|
3451
3451
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3452
3452
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3453
|
-
|
3453
|
+
|
3454
3454
|
#Message d'annonce pour savoir ce qui est à réaliser
|
3455
3455
|
Message='Characteristics of the Pattern'
|
3456
3456
|
self.message = wx.StaticText(self, -1, Message)
|
3457
3457
|
frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3458
|
-
|
3458
|
+
|
3459
3459
|
#Partiée liée à l'affichage des informations du pattern (menu défilant ?)
|
3460
3460
|
self.panel = PanelPattern(self,parent)
|
3461
3461
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
@@ -3463,22 +3463,22 @@ class NewPatternFrame(wx.Frame):
|
|
3463
3463
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
3464
3464
|
self.btn=wx.Button(self,-1,"Show Pattern")
|
3465
3465
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
3466
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Show_Pattern)
|
3466
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Show_Pattern)
|
3467
3467
|
|
3468
3468
|
self.btn2=wx.Button(self,-1,"Save")
|
3469
3469
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3470
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModPattern)
|
3470
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModPattern)
|
3471
3471
|
|
3472
3472
|
self.btn2=wx.Button(self,-1,"Annuler")
|
3473
3473
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3474
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3474
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3475
3475
|
|
3476
3476
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3477
3477
|
self.SetAutoLayout(True)
|
3478
3478
|
self.SetSizerAndFit(frame_sizer)
|
3479
3479
|
self.Show()
|
3480
3480
|
|
3481
|
-
|
3481
|
+
|
3482
3482
|
#L'annulation étant choisie par l'utilisateur, la fenêtre est simplement fermée
|
3483
3483
|
def CloseFrame(self, e):
|
3484
3484
|
self.Close()
|
@@ -3503,7 +3503,7 @@ class NewPatternFrame(wx.Frame):
|
|
3503
3503
|
|
3504
3504
|
#
|
3505
3505
|
class MyDialog(wx.Dialog):
|
3506
|
-
"""
|
3506
|
+
"""
|
3507
3507
|
Méthode d'ajout du pattern
|
3508
3508
|
"""
|
3509
3509
|
|
@@ -3564,7 +3564,7 @@ class MyDialog(wx.Dialog):
|
|
3564
3564
|
self.Bind (wx.EVT_BUTTON, self.OnClear, id=12)
|
3565
3565
|
self.Bind (wx.EVT_BUTTON, self.OnClose, id=13)
|
3566
3566
|
self.Bind (wx.EVT_BUTTON, self.AutRead, id=14)
|
3567
|
-
|
3567
|
+
|
3568
3568
|
def OnAdd(self, event):
|
3569
3569
|
if not self.tc1.GetValue() or not self.tc2.GetValue():
|
3570
3570
|
return
|
@@ -3671,27 +3671,27 @@ class MyDialog(wx.Dialog):
|
|
3671
3671
|
else:
|
3672
3672
|
break
|
3673
3673
|
|
3674
|
-
#
|
3674
|
+
#
|
3675
3675
|
class NewPumpFrame(wx.Frame):
|
3676
3676
|
"""
|
3677
3677
|
Frame utilisée pour permettre la mise en place d'une pompe
|
3678
3678
|
"""
|
3679
3679
|
def __init__(self, title, parent):
|
3680
|
-
super(NewPumpFrame, self).__init__(parent, title = title,size = (700,700),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3680
|
+
super(NewPumpFrame, self).__init__(parent, title = title,size = (700,700),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3681
3681
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3682
3682
|
parent.Edition_Mode_Local=True
|
3683
3683
|
|
3684
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
3684
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
3685
3685
|
|
3686
|
-
self.Centre()
|
3686
|
+
self.Centre()
|
3687
3687
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
3688
3688
|
#frame_sizer.Add(panel, 1, wx.EXPAND| wx.LEFT | wx.RIGHT, wx.ALIGN_CENTER)
|
3689
|
-
|
3689
|
+
|
3690
3690
|
#Message d'annonce pour savoir ce qui est à réaliser
|
3691
3691
|
Message='Characteristics of the Pump'
|
3692
3692
|
self.message = wx.StaticText(self, -1, Message)
|
3693
3693
|
frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
3694
|
-
|
3694
|
+
|
3695
3695
|
#Partiée liée à l'affichage des informations du pattern (menu défilant ?)
|
3696
3696
|
self.panel = PanelPump(self,parent)
|
3697
3697
|
frame_sizer.Add(self.panel, 1, wx.EXPAND)
|
@@ -3699,22 +3699,22 @@ class NewPumpFrame(wx.Frame):
|
|
3699
3699
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
3700
3700
|
self.btn=wx.Button(self,-1,"Show Pump")
|
3701
3701
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
3702
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Show_Pump)
|
3702
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Show_Pump)
|
3703
3703
|
|
3704
3704
|
self.btn2=wx.Button(self,-1,"Save")
|
3705
3705
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3706
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModPump)
|
3706
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.SaveModPump)
|
3707
3707
|
|
3708
3708
|
self.btn2=wx.Button(self,-1,"Annuler")
|
3709
3709
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
3710
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3710
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
3711
3711
|
|
3712
3712
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
3713
3713
|
self.SetAutoLayout(True)
|
3714
3714
|
self.SetSizerAndFit(frame_sizer)
|
3715
3715
|
self.Show()
|
3716
3716
|
|
3717
|
-
|
3717
|
+
|
3718
3718
|
#L'annulation étant choisie par l'utilisateur, la fenêtre est simplement fermée
|
3719
3719
|
def CloseFrame(self, e):
|
3720
3720
|
self.Close()
|
@@ -3763,7 +3763,7 @@ class PanelPattern(wx.Panel):
|
|
3763
3763
|
"""
|
3764
3764
|
def __init__(self, parent,MainW):
|
3765
3765
|
super(PanelPattern, self).__init__(parent)
|
3766
|
-
|
3766
|
+
|
3767
3767
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
3768
3768
|
|
3769
3769
|
#Mise en place de la liste de contrôle
|
@@ -3781,7 +3781,7 @@ class PanelPattern(wx.Panel):
|
|
3781
3781
|
self.list_ctrl.InsertColumn(i, "Value")
|
3782
3782
|
else:
|
3783
3783
|
self.list_ctrl.InsertColumn(i, "Ctrl Position")
|
3784
|
-
|
3784
|
+
|
3785
3785
|
index = 0
|
3786
3786
|
row_position = 0
|
3787
3787
|
for row in MainW.Patterns[IDPattern]['Values']:
|
@@ -3794,21 +3794,21 @@ class PanelPattern(wx.Panel):
|
|
3794
3794
|
self.list_ctrl.SetColumnWidth(row_position, wx.LIST_AUTOSIZE)
|
3795
3795
|
row_position += 1
|
3796
3796
|
index = 0
|
3797
|
-
|
3797
|
+
|
3798
3798
|
sizer = wx.BoxSizer(wx.VERTICAL)
|
3799
3799
|
sizer.Add(self.list_ctrl, 0, wx.ALL|wx.EXPAND, 5)
|
3800
3800
|
self.SetSizer(sizer)
|
3801
3801
|
|
3802
|
-
#
|
3802
|
+
#
|
3803
3803
|
class PatternShow(wx.Frame):
|
3804
3804
|
"""
|
3805
3805
|
Frame utilisée pour permettre la mise en place du nouveau noeud
|
3806
3806
|
"""
|
3807
3807
|
def __init__(self, title, parent):
|
3808
|
-
super(PatternShow, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3808
|
+
super(PatternShow, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3809
3809
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3810
3810
|
|
3811
|
-
self.Centre()
|
3811
|
+
self.Centre()
|
3812
3812
|
MainW=self.Parent.Parent
|
3813
3813
|
IDPattern=MainW.PosPattern
|
3814
3814
|
|
@@ -3850,7 +3850,7 @@ class PatternShow(wx.Frame):
|
|
3850
3850
|
TimeVal.append(TimeLoc)
|
3851
3851
|
Val=float(MainW.Patterns[IDPattern]['Values'][1][i])
|
3852
3852
|
ValPtrn.append(Val)
|
3853
|
-
#Evaluation du Pattern selon le type de Pattern
|
3853
|
+
#Evaluation du Pattern selon le type de Pattern
|
3854
3854
|
if(MainW.Patterns[IDPattern]['Meth_Interp']=='2' or MainW.Patterns[IDPattern]['Meth_Interp']=='0'):
|
3855
3855
|
#Echange de type optimisation avec donc valeurs d'échanges constantes sur chaque pas de temps
|
3856
3856
|
Test=1
|
@@ -3891,7 +3891,7 @@ class PatternShow(wx.Frame):
|
|
3891
3891
|
frame_sizer.Add(self.canvas, 1, wx.EXPAND)
|
3892
3892
|
self.SetSizer(frame_sizer)
|
3893
3893
|
self.Fit()
|
3894
|
-
self.Show()
|
3894
|
+
self.Show()
|
3895
3895
|
Test=1
|
3896
3896
|
|
3897
3897
|
#
|
@@ -3901,7 +3901,7 @@ class PanelPump(wx.Panel):
|
|
3901
3901
|
"""
|
3902
3902
|
def __init__(self, parent,MainW):
|
3903
3903
|
super(PanelPump, self).__init__(parent)
|
3904
|
-
|
3904
|
+
|
3905
3905
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
3906
3906
|
Index=len(MainW.Zones[1]['Name'])
|
3907
3907
|
#Mise en place de la liste de contrôle
|
@@ -3941,9 +3941,9 @@ class PanelPump(wx.Panel):
|
|
3941
3941
|
index += 1
|
3942
3942
|
pos=1
|
3943
3943
|
id_coeff=0
|
3944
|
-
for Coeff in MainW.Zones[1]['Coefficients'][PosPump]:
|
3944
|
+
for Coeff in MainW.Zones[1]['Coefficients'][PosPump]:
|
3945
3945
|
Name='Pump coeff.'+normal[id_coeff]
|
3946
|
-
self.list_ctrl_pump.InsertItem(index, Name)
|
3946
|
+
self.list_ctrl_pump.InsertItem(index, Name)
|
3947
3947
|
self.list_ctrl_pump.SetItem(index, row_position, str(float(MainW.Zones[1]['Coefficients'][PosPump][id_coeff])))
|
3948
3948
|
pos += 1
|
3949
3949
|
id_coeff +=1
|
@@ -3956,16 +3956,16 @@ class PanelPump(wx.Panel):
|
|
3956
3956
|
sizer.Add(self.list_ctrl_pump, 1, wx.ALL|wx.EXPAND, 5)
|
3957
3957
|
self.SetSizer(sizer)
|
3958
3958
|
|
3959
|
-
#
|
3959
|
+
#
|
3960
3960
|
class PumpShow(wx.Frame):
|
3961
3961
|
"""
|
3962
3962
|
Frame utilisée pour permettre d'afficher la courbe de pompe utilisée
|
3963
3963
|
"""
|
3964
3964
|
def __init__(self, title, parent):
|
3965
|
-
super(PumpShow, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3965
|
+
super(PumpShow, self).__init__(parent, title = title,size = (400,300),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
3966
3966
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
3967
3967
|
|
3968
|
-
self.Centre()
|
3968
|
+
self.Centre()
|
3969
3969
|
MainW=self.Parent.Parent
|
3970
3970
|
IDPump=MainW.IDLocPump
|
3971
3971
|
|
@@ -3989,7 +3989,7 @@ class PumpShow(wx.Frame):
|
|
3989
3989
|
#Prochaine étape est de reconstruire la loi sur base des coefficients proposés
|
3990
3990
|
HeadVal=[]
|
3991
3991
|
ValPtrn=[]
|
3992
|
-
#Evaluation du Pattern selon le type de Pattern
|
3992
|
+
#Evaluation du Pattern selon le type de Pattern
|
3993
3993
|
if(MainW.Zones[1]['Type'][MainW.PosPump]==2):
|
3994
3994
|
#Pompe de type "3 points" avec H(Q)=C-BQ^A
|
3995
3995
|
if(len(CoeffList)==3):
|
@@ -4005,40 +4005,40 @@ class PumpShow(wx.Frame):
|
|
4005
4005
|
frame_sizer.Add(self.canvas, 1, wx.EXPAND)
|
4006
4006
|
self.SetSizer(frame_sizer)
|
4007
4007
|
self.Fit()
|
4008
|
-
self.Show()
|
4008
|
+
self.Show()
|
4009
4009
|
|
4010
|
-
#
|
4011
|
-
class Mywin(wx.Frame):
|
4010
|
+
#
|
4011
|
+
class Mywin(wx.Frame):
|
4012
4012
|
"""
|
4013
4013
|
Nouvelle fenêtre pour la mise en valeur de données liées à un vecteur ou tout type de noeud
|
4014
4014
|
"""
|
4015
4015
|
|
4016
|
-
def __init__(self, parent, title, MainW, Type_Element):
|
4017
|
-
super(Mywin, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4016
|
+
def __init__(self, parent, title, MainW, Type_Element):
|
4017
|
+
super(Mywin, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4018
4018
|
self.Type_Element=Type_Element
|
4019
4019
|
if(Type_Element==0):
|
4020
4020
|
panel = MyVectorPanel(self,MainW)
|
4021
4021
|
else:
|
4022
4022
|
panel = MyNodePanel(self,MainW)
|
4023
|
-
#panel = wx.Panel(self)
|
4024
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
4023
|
+
#panel = wx.Panel(self)
|
4024
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
4025
4025
|
#On vient donc afficher dans le petit tableau d'exportation le nom de l'attribut ainsi que sa valeur
|
4026
4026
|
Test=1
|
4027
|
-
self.Centre()
|
4027
|
+
self.Centre()
|
4028
4028
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
4029
4029
|
frame_sizer.Add(panel, 1, wx.EXPAND)
|
4030
4030
|
self.SetSizerAndFit(frame_sizer)
|
4031
4031
|
#self.SetWindowStyle(wx.FRAME_FLOAT_ON_PARENT)
|
4032
|
-
self.Show()
|
4033
|
-
#self.Fit()
|
4032
|
+
self.Show()
|
4033
|
+
#self.Fit()
|
4034
4034
|
Test=1
|
4035
4035
|
self.OrigFrame=MainW
|
4036
4036
|
self.locpanel=panel
|
4037
4037
|
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
|
4038
4038
|
|
4039
|
-
def OnClicked(self, event):
|
4039
|
+
def OnClicked(self, event):
|
4040
4040
|
btn = event.GetEventObject().GetLabel()
|
4041
|
-
|
4041
|
+
|
4042
4042
|
#Vérification à la sortie de la fenêtre si des valeurs ont été modifiées et si c'est le cas, demande pour enregistrer les modifications
|
4043
4043
|
def OnCloseWindow(self, event):
|
4044
4044
|
#On va rechercher si un évènement de modification a été identifié
|
@@ -4052,8 +4052,8 @@ class Mywin(wx.Frame):
|
|
4052
4052
|
None, "Do you want to save the modifications ?", "Save the results", wx.YES_NO | wx.CANCEL | wx.CENTRE
|
4053
4053
|
)
|
4054
4054
|
result = dlg.ShowModal()
|
4055
|
-
self.Centre()
|
4056
|
-
self.Show()
|
4055
|
+
self.Centre()
|
4056
|
+
self.Show()
|
4057
4057
|
if result == wx.ID_YES:
|
4058
4058
|
Test=1
|
4059
4059
|
self.Save_Modifications()
|
@@ -4075,7 +4075,7 @@ class Mywin(wx.Frame):
|
|
4075
4075
|
NumZone=MainW.List_Nodes_OGL['IdZone'][Index]
|
4076
4076
|
NumVec=MainW.List_Nodes_OGL['NbrElVec'][Index]
|
4077
4077
|
Main_Attr=MainW.Zones[NumZone]['Princ_Attrib']
|
4078
|
-
for Attrib in Main_Attr:
|
4078
|
+
for Attrib in Main_Attr:
|
4079
4079
|
if(Attrib in MainW.Zones[NumZone]):
|
4080
4080
|
if(bool(MainW.Zones[NumZone][Attrib])):
|
4081
4081
|
if(isinstance(MainW.Zones[NumZone][Attrib][NumVec],list)):
|
@@ -4113,7 +4113,7 @@ class Mywin(wx.Frame):
|
|
4113
4113
|
MainW.Nodes[TypeNode][NameNode][SubAttr[0]][cpt_pos]=self.GridValues[cpt_val]
|
4114
4114
|
else:
|
4115
4115
|
MainW.Nodes[TypeNode][NameNode][SubAttr[0]]=self.GridValues[cpt_val]
|
4116
|
-
return Test
|
4116
|
+
return Test
|
4117
4117
|
|
4118
4118
|
#
|
4119
4119
|
class MyVectorPanel(wx.Panel):
|
@@ -4123,7 +4123,7 @@ class MyVectorPanel(wx.Panel):
|
|
4123
4123
|
|
4124
4124
|
def __init__(self, parent,MainW):
|
4125
4125
|
super(MyVectorPanel, self).__init__(parent)
|
4126
|
-
|
4126
|
+
|
4127
4127
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
4128
4128
|
MyVectorPanel.MainW=MainW
|
4129
4129
|
self.parent=parent
|
@@ -4136,7 +4136,7 @@ class MyVectorPanel(wx.Panel):
|
|
4136
4136
|
Val_Attr=[]
|
4137
4137
|
normal = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-=()"
|
4138
4138
|
Main_Attr=MainW.Zones[NumZone]['Princ_Attrib']
|
4139
|
-
for Attrib in Main_Attr:
|
4139
|
+
for Attrib in Main_Attr:
|
4140
4140
|
if(Attrib in MainW.Zones[NumZone]):
|
4141
4141
|
PosEl=Main_Attr.index(Attrib)
|
4142
4142
|
if(bool(MainW.Zones[NumZone][Attrib])):
|
@@ -4179,7 +4179,7 @@ class MyVectorPanel(wx.Panel):
|
|
4179
4179
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
4180
4180
|
self.btn=wx.Button(self,-1,"Spec. Results")
|
4181
4181
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
4182
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4182
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4183
4183
|
sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
4184
4184
|
#Elément supplémentaire est lié à la nature du vecteur et de la présence de variables supplémentaires additionnelles
|
4185
4185
|
if(NumZone==2):
|
@@ -4191,7 +4191,7 @@ class MyVectorPanel(wx.Panel):
|
|
4191
4191
|
self.btn=wx.Button(self,-1,"Open. Factor valve")
|
4192
4192
|
sz3.Add(self.btn,0, wx.ALL, 10)
|
4193
4193
|
self.Spec_case=2
|
4194
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4194
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4195
4195
|
sizer.Add(sz3, 0, wx.ALIGN_CENTER)
|
4196
4196
|
|
4197
4197
|
self.thegrid=mygrid
|
@@ -4199,16 +4199,16 @@ class MyVectorPanel(wx.Panel):
|
|
4199
4199
|
Test=1
|
4200
4200
|
self.parent.modified_grid=False
|
4201
4201
|
self.thegrid.Bind(grid.EVT_GRID_CELL_CHANGED, self.Saved_Modifications)
|
4202
|
-
|
4202
|
+
|
4203
4203
|
def Saved_Modifications(self,e):
|
4204
4204
|
self.parent.modified_grid=True
|
4205
4205
|
#Sauvegarde des valeurs de la grille
|
4206
4206
|
Nb_Rows=self.thegrid.GetNumberRows()
|
4207
4207
|
self.parent.GridValues=[]
|
4208
4208
|
for Row in range(Nb_Rows):
|
4209
|
-
self.parent.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
4209
|
+
self.parent.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
4210
4210
|
Test=1
|
4211
|
-
#On vient ainsi lancer l'initialisation d'une nouvelle fenêtre afin de montrer les résultats
|
4211
|
+
#On vient ainsi lancer l'initialisation d'une nouvelle fenêtre afin de montrer les résultats
|
4212
4212
|
def Show_Spec_Results(self,e):
|
4213
4213
|
Test=1
|
4214
4214
|
title='Node results'
|
@@ -4226,8 +4226,8 @@ class MyVectorPanel(wx.Panel):
|
|
4226
4226
|
None, Dial, "No available data", wx.OK | wx.CENTRE
|
4227
4227
|
)
|
4228
4228
|
result = dlg.ShowModal()
|
4229
|
-
self.Centre()
|
4230
|
-
self.Show()
|
4229
|
+
self.Centre()
|
4230
|
+
self.Show()
|
4231
4231
|
if result == wx.ID_YES:
|
4232
4232
|
Test=1
|
4233
4233
|
self.Destroy()
|
@@ -4240,7 +4240,7 @@ class MyNodePanel(wx.Panel):
|
|
4240
4240
|
|
4241
4241
|
def __init__(self, parent,MainW):
|
4242
4242
|
super(MyNodePanel, self).__init__(parent)
|
4243
|
-
|
4243
|
+
|
4244
4244
|
#Initialisation de la grille = évaluation du nombre d'attributs à afficher
|
4245
4245
|
self.MainW=MainW
|
4246
4246
|
self.parent=parent
|
@@ -4311,7 +4311,7 @@ class MyNodePanel(wx.Panel):
|
|
4311
4311
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
4312
4312
|
self.btn=wx.Button(self,-1,"Spec. Results")
|
4313
4313
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
4314
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4314
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Show_Spec_Results)
|
4315
4315
|
|
4316
4316
|
sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
4317
4317
|
|
@@ -4326,8 +4326,8 @@ class MyNodePanel(wx.Panel):
|
|
4326
4326
|
Nb_Rows=self.thegrid.GetNumberRows()
|
4327
4327
|
self.parent.GridValues=[]
|
4328
4328
|
for Row in range(Nb_Rows):
|
4329
|
-
self.parent.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
4330
|
-
#On vient ainsi lancer l'initialisation d'une nouvelle fenêtre afin de montrer les résultats
|
4329
|
+
self.parent.GridValues.append(self.thegrid.GetCellValue(Row,0))
|
4330
|
+
#On vient ainsi lancer l'initialisation d'une nouvelle fenêtre afin de montrer les résultats
|
4331
4331
|
def Show_Spec_Results(self,e):
|
4332
4332
|
Test=1
|
4333
4333
|
title='Node results'
|
@@ -4344,20 +4344,20 @@ class MyNodePanel(wx.Panel):
|
|
4344
4344
|
None, Dial, "No available data", wx.OK | wx.CENTRE
|
4345
4345
|
)
|
4346
4346
|
result = dlg.ShowModal()
|
4347
|
-
self.Centre()
|
4348
|
-
self.Show()
|
4347
|
+
self.Centre()
|
4348
|
+
self.Show()
|
4349
4349
|
if result == wx.ID_YES:
|
4350
4350
|
Test=1
|
4351
4351
|
self.Destroy()
|
4352
4352
|
|
4353
4353
|
#
|
4354
|
-
class Spec_Results(wx.Frame):
|
4354
|
+
class Spec_Results(wx.Frame):
|
4355
4355
|
"""
|
4356
4356
|
Nouvelle fenêtre pour la mise en valeur des résultats d'un noeud ou d'une canalisation
|
4357
4357
|
"""
|
4358
4358
|
|
4359
|
-
def __init__(self, parent, title, Type_Element):
|
4360
|
-
super(Spec_Results, self).__init__(parent, title = title,size = (600,500),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4359
|
+
def __init__(self, parent, title, Type_Element):
|
4360
|
+
super(Spec_Results, self).__init__(parent, title = title,size = (600,500),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4361
4361
|
|
4362
4362
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
4363
4363
|
#Implémentation de la Figure
|
@@ -4415,7 +4415,7 @@ class Spec_Results(wx.Frame):
|
|
4415
4415
|
frame_sizer.Add(self.canvas, 1, wx.EXPAND)
|
4416
4416
|
self.SetSizer(frame_sizer)
|
4417
4417
|
self.Fit()
|
4418
|
-
self.Show()
|
4418
|
+
self.Show()
|
4419
4419
|
|
4420
4420
|
#
|
4421
4421
|
class MyFrame_Slider(wx.Frame):
|
@@ -4425,15 +4425,15 @@ class MyFrame_Slider(wx.Frame):
|
|
4425
4425
|
|
4426
4426
|
def __init__(self, parent, title,Max_Val):
|
4427
4427
|
super(MyFrame_Slider, self).__init__(parent, title =title, size = (400,200))
|
4428
|
-
|
4429
|
-
|
4428
|
+
|
4429
|
+
|
4430
4430
|
self.panel = MyPanel_Slider(self,Max_Val,parent)
|
4431
4431
|
self.Show()
|
4432
4432
|
|
4433
4433
|
class MyPanel_Slider(wx.Panel):
|
4434
4434
|
def __init__(self, parent,Max_Val,MainW):
|
4435
4435
|
super(MyPanel_Slider, self).__init__(parent)
|
4436
|
-
|
4436
|
+
|
4437
4437
|
vbox = wx.BoxSizer(wx.VERTICAL)
|
4438
4438
|
#Partie message d'introduction
|
4439
4439
|
Message='Choice of the time step'
|
@@ -4442,7 +4442,7 @@ class MyPanel_Slider(wx.Panel):
|
|
4442
4442
|
#Partie liée à la revue automatique des différents pas de temps en permettant aussi un temps de lecture
|
4443
4443
|
Choices=['Automatic Review']
|
4444
4444
|
Name_Box='Draw_Box'
|
4445
|
-
#Ajout de la possibilité de faire
|
4445
|
+
#Ajout de la possibilité de faire
|
4446
4446
|
#frame_sizer = wx.BoxSizer(wx.HORIZONTAL)
|
4447
4447
|
#self.CheckBox = wx.CheckListBox(self, choices=Choices, name=Name_Box)
|
4448
4448
|
#frame_sizer.Add(self.CheckBox, 1, wx.EXPAND | wx.LEFT | wx.RIGHT)
|
@@ -4453,18 +4453,18 @@ class MyPanel_Slider(wx.Panel):
|
|
4453
4453
|
self.MaxVal=Max_Val
|
4454
4454
|
self.slider = wx.Slider(self, value=1, minValue=1, maxValue=Max_Val,
|
4455
4455
|
style=wx.SL_HORIZONTAL | wx.SL_LABELS)
|
4456
|
-
|
4456
|
+
|
4457
4457
|
vbox.Add(self.slider,-1, flag = wx.EXPAND | wx.TOP, border = 5)
|
4458
|
-
|
4458
|
+
|
4459
4459
|
self.btn=wx.Button(self,-1,"Ok")
|
4460
|
-
vbox.Add(self.btn,0, wx.CENTER)
|
4460
|
+
vbox.Add(self.btn,0, wx.CENTER)
|
4461
4461
|
self.btn.Bind(wx.EVT_BUTTON,self.Slider_Read)
|
4462
4462
|
|
4463
4463
|
self.Frame=MainW
|
4464
4464
|
self.slider.Bind(wx.EVT_SLIDER, self.OnSliderScroll)
|
4465
4465
|
self.SetSizerAndFit(vbox)
|
4466
4466
|
self.Center()
|
4467
|
-
|
4467
|
+
|
4468
4468
|
#On identifie de la sorte le nouveau réseau à afficher
|
4469
4469
|
def Slider_Read(self, e):
|
4470
4470
|
Test=1
|
@@ -4483,7 +4483,7 @@ class MyPanel_Slider(wx.Panel):
|
|
4483
4483
|
Nb_cases=int(self.MaxVal)-int(Frame_loc.Time_Step)+1
|
4484
4484
|
else:
|
4485
4485
|
Nb_cases=1
|
4486
|
-
for cpt_cases in range(Nb_cases):
|
4486
|
+
for cpt_cases in range(Nb_cases):
|
4487
4487
|
Loc_step=Frame_loc.Time_Step+cpt_cases
|
4488
4488
|
#Frame_loc.Show_Results,Frame_loc.ExtrNodes,Frame_loc.ExtrVectors=Show_Results(Frame_loc.Param_Simul,Frame_loc.Zones,Frame_loc.Nodes,Loc_step)
|
4489
4489
|
MainW.Show_Results,MainW.ExtrNodes,MainW.ExtrVectors=Show_Results(MainW.Param_Simul,MainW.Zones,MainW.Nodes,Loc_step)
|
@@ -4511,7 +4511,7 @@ class MyPanel_Slider(wx.Panel):
|
|
4511
4511
|
class LineBuilder:
|
4512
4512
|
"""
|
4513
4513
|
Partie liée à la mise en place d'actions lorsque l'utilisateur souhaite obtenir des informations à propos du réseau ou souhaite le modifier/construire
|
4514
|
-
Construction de segments pour le réseau
|
4514
|
+
Construction de segments pour le réseau
|
4515
4515
|
"""
|
4516
4516
|
|
4517
4517
|
def __init__(self, line):
|
@@ -4530,24 +4530,24 @@ class LineBuilder:
|
|
4530
4530
|
xdata=self.xs
|
4531
4531
|
ydata=self.xs
|
4532
4532
|
|
4533
|
-
#
|
4533
|
+
#
|
4534
4534
|
class IdElementFrame(wx.Frame):
|
4535
4535
|
"""
|
4536
4536
|
Partie liée à la construction
|
4537
4537
|
"""
|
4538
4538
|
def __init__(self, title, parent):
|
4539
|
-
super(IdElementFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4539
|
+
super(IdElementFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4540
4540
|
#Ajout d'un nouveau noeud entraîne à l'activiation du mode d'édition du réseau
|
4541
4541
|
parent.Edition_Mode_Local=True
|
4542
4542
|
|
4543
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
4543
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
4544
4544
|
|
4545
|
-
self.Centre()
|
4545
|
+
self.Centre()
|
4546
4546
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
4547
4547
|
#Message d'annonce pour savoir ce qui est à réaliser
|
4548
4548
|
Message='What are you looking for ? Node or Link ?'
|
4549
4549
|
#Préparation du choix d'éléments
|
4550
|
-
#Choix disponibles selon les éléments présents au sein du réseau
|
4550
|
+
#Choix disponibles selon les éléments présents au sein du réseau
|
4551
4551
|
TypeNode=['Reservoirs','IncJunctions']
|
4552
4552
|
TypeEl=['Pipe','Pump','Valve','Deversoir']
|
4553
4553
|
ChoicesEleme=[]
|
@@ -4577,12 +4577,12 @@ class IdElementFrame(wx.Frame):
|
|
4577
4577
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
4578
4578
|
self.btn=wx.Button(self,-1,"Ok")
|
4579
4579
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
4580
|
-
self.btn.Bind(wx.EVT_BUTTON,self.Recherche)
|
4580
|
+
self.btn.Bind(wx.EVT_BUTTON,self.Recherche)
|
4581
4581
|
|
4582
4582
|
|
4583
4583
|
self.btn2=wx.Button(self,-1,"Close")
|
4584
4584
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
4585
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
4585
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
4586
4586
|
|
4587
4587
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
4588
4588
|
self.SetAutoLayout(True)
|
@@ -4631,7 +4631,7 @@ class ExtractElement(wx.Panel):
|
|
4631
4631
|
def __init__(self, parent,MainW,Message,ChoicesEleme,NameBoxes,Name_Element,Init_Pos):
|
4632
4632
|
super(ExtractElement, self).__init__(parent)
|
4633
4633
|
|
4634
|
-
self.Centre()
|
4634
|
+
self.Centre()
|
4635
4635
|
self.Name_Element=Name_Element
|
4636
4636
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
4637
4637
|
|
@@ -4639,7 +4639,7 @@ class ExtractElement(wx.Panel):
|
|
4639
4639
|
frame_sizer.Add(self.message, 0, wx.TOP | wx.LEFT | wx.RIGHT | wx.EXPAND)
|
4640
4640
|
|
4641
4641
|
#Partie liée à la box pour les choix d'éléments
|
4642
|
-
self.rbox = wx.RadioBox(self, label = 'Elements', pos = (80,10), choices = ChoicesEleme, majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
|
4642
|
+
self.rbox = wx.RadioBox(self, label = 'Elements', pos = (80,10), choices = ChoicesEleme, majorDimension = 1, style = wx.RA_SPECIFY_ROWS)
|
4643
4643
|
#self.rbox.Bind(wx.EVT_RADIOBOX, self.OnRadiogroup)
|
4644
4644
|
#Partie pour définir l'élément de base sélectionné dans la RadioBox
|
4645
4645
|
self.rbox.SetSelection(Init_Pos)
|
@@ -4649,24 +4649,24 @@ class ExtractElement(wx.Panel):
|
|
4649
4649
|
self.IDName='NotAName'
|
4650
4650
|
#Partie pour nom élément si cela est nécessaire
|
4651
4651
|
if(self.Name_Element):
|
4652
|
-
nm = wx.StaticBox(self, -1,NameBoxes[0])
|
4652
|
+
nm = wx.StaticBox(self, -1,NameBoxes[0])
|
4653
4653
|
nmbox = wx.BoxSizer(wx.HORIZONTAL)
|
4654
|
-
fn = wx.StaticText(self, -1,NameBoxes[1])
|
4655
|
-
nmbox.Add(fn, 0, wx.ALL|wx.CENTER, 5)
|
4656
|
-
nm1 = wx.TextCtrl(self, -1, style = wx.ALIGN_LEFT)
|
4657
|
-
#nm2 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT)
|
4658
|
-
#ln = wx.StaticText(panel, -1, "Last Name")
|
4659
|
-
nm1.Bind(wx.EVT_TEXT,self.OnKeyTyped)
|
4660
|
-
nmbox.Add(nm1, 0, wx.ALL|wx.CENTER, 5)
|
4654
|
+
fn = wx.StaticText(self, -1,NameBoxes[1])
|
4655
|
+
nmbox.Add(fn, 0, wx.ALL|wx.CENTER, 5)
|
4656
|
+
nm1 = wx.TextCtrl(self, -1, style = wx.ALIGN_LEFT)
|
4657
|
+
#nm2 = wx.TextCtrl(panel, -1, style = wx.ALIGN_LEFT)
|
4658
|
+
#ln = wx.StaticText(panel, -1, "Last Name")
|
4659
|
+
nm1.Bind(wx.EVT_TEXT,self.OnKeyTyped)
|
4660
|
+
nmbox.Add(nm1, 0, wx.ALL|wx.CENTER, 5)
|
4661
4661
|
#nmbox.Add(nm2, 0, wx.ALL|wx.CENTER, 5)
|
4662
|
-
nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL)
|
4662
|
+
nmSizer = wx.StaticBoxSizer(nm, wx.VERTICAL)
|
4663
4663
|
nmSizer.Add(nmbox, 0, wx.ALL|wx.CENTER, 10)
|
4664
|
-
frame_sizer.Add(nmSizer,0, wx.ALL|wx.CENTER, 5)
|
4664
|
+
frame_sizer.Add(nmSizer,0, wx.ALL|wx.CENTER, 5)
|
4665
4665
|
self.SetSizerAndFit(frame_sizer)
|
4666
4666
|
self.TypeElement=-1
|
4667
|
-
def OnKeyTyped(self, event):
|
4667
|
+
def OnKeyTyped(self, event):
|
4668
4668
|
if(self.Name_Element):
|
4669
|
-
self.IDName=event.GetString()
|
4669
|
+
self.IDName=event.GetString()
|
4670
4670
|
self.TypeElement = self.rbox.StringSelection
|
4671
4671
|
r=1
|
4672
4672
|
|
@@ -4676,11 +4676,11 @@ class IdSimulationFrame(wx.Frame):
|
|
4676
4676
|
Identification du type de simulation désirées par l'utilisateur : capacité de modifier avant lancement
|
4677
4677
|
"""
|
4678
4678
|
def __init__(self, title, parent):
|
4679
|
-
super(IdSimulationFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4679
|
+
super(IdSimulationFrame, self).__init__(parent, title = title,size = (300,200),style=wx.DEFAULT_FRAME_STYLE|wx.FRAME_FLOAT_ON_PARENT)
|
4680
4680
|
|
4681
|
-
vbox = wx.BoxSizer(wx.VERTICAL)
|
4681
|
+
vbox = wx.BoxSizer(wx.VERTICAL)
|
4682
4682
|
self.parent=parent
|
4683
|
-
self.Centre()
|
4683
|
+
self.Centre()
|
4684
4684
|
frame_sizer = wx.BoxSizer(wx.VERTICAL)
|
4685
4685
|
#Message d'annonce pour savoir ce qui est à réaliser
|
4686
4686
|
Message='Which simulation do you want to launch ?'
|
@@ -4713,11 +4713,11 @@ class IdSimulationFrame(wx.Frame):
|
|
4713
4713
|
sz2 = wx.BoxSizer(wx.HORIZONTAL)
|
4714
4714
|
self.btn=wx.Button(self,-1,"Ok")
|
4715
4715
|
sz2.Add(self.btn,0, wx.ALL, 10)
|
4716
|
-
self.btn.Bind(wx.EVT_BUTTON,self.ApplyChoice)
|
4716
|
+
self.btn.Bind(wx.EVT_BUTTON,self.ApplyChoice)
|
4717
4717
|
|
4718
4718
|
self.btn2=wx.Button(self,-1,"Close")
|
4719
4719
|
sz2.Add(self.btn2,0, wx.ALL, 10)
|
4720
|
-
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
4720
|
+
self.btn2.Bind(wx.EVT_BUTTON,self.CloseFrame)
|
4721
4721
|
|
4722
4722
|
frame_sizer.Add(sz2, 0, wx.ALIGN_CENTER)
|
4723
4723
|
self.SetAutoLayout(True)
|
@@ -4740,9 +4740,9 @@ class IdSimulationFrame(wx.Frame):
|
|
4740
4740
|
|
4741
4741
|
def Extract_SubStrings(String,Special_char):
|
4742
4742
|
"""
|
4743
|
-
Python code to sort a list by creating
|
4743
|
+
Python code to sort a list by creating
|
4744
4744
|
Extract_SubStrings : extraction de substrings séparés par des caractères spéciaux
|
4745
|
-
|
4745
|
+
|
4746
4746
|
string : string complet auquel on va donc extraire la liste de substrings séparés par des caractères spéciaux
|
4747
4747
|
special_char : caractère spécial utilisé pour séparer les substrings entre eux
|
4748
4748
|
"""
|
@@ -4886,13 +4886,13 @@ def Init_Zones():
|
|
4886
4886
|
Zones[loc_zone]['Diameter']=[]
|
4887
4887
|
if(loc_zone==2):
|
4888
4888
|
Zones[loc_zone]['Width']=[]
|
4889
|
-
Zones[loc_zone]['Height']=[]
|
4890
|
-
Zones[loc_zone]['Type_Valve']=[]
|
4889
|
+
Zones[loc_zone]['Height']=[]
|
4890
|
+
Zones[loc_zone]['Type_Valve']=[]
|
4891
4891
|
Zones[loc_zone]['Opening_Factor']=[]
|
4892
4892
|
Zones[loc_zone]['Coeff_Valve']=[]
|
4893
4893
|
if(loc_zone==1):
|
4894
4894
|
Zones[loc_zone]['Type_Law']=[]
|
4895
|
-
Zones[loc_zone]['Nb_Coefficients']=[]
|
4895
|
+
Zones[loc_zone]['Nb_Coefficients']=[]
|
4896
4896
|
return Zones
|
4897
4897
|
|
4898
4898
|
#Sous-routine de calcul de distance entre deux noeuds
|
@@ -4917,7 +4917,7 @@ def Export_vecz(Zones,filename):
|
|
4917
4917
|
Next_line='\n'
|
4918
4918
|
text_line='0 0'
|
4919
4919
|
file.write(text_line+Next_line)
|
4920
|
-
|
4920
|
+
|
4921
4921
|
NbZones=len(Zones)
|
4922
4922
|
file.write(str(len(Zones))+Next_line)
|
4923
4923
|
Blank=' '
|
@@ -4925,7 +4925,7 @@ def Export_vecz(Zones,filename):
|
|
4925
4925
|
Line2='"...", 5, 0.000000, 0.000000,#FALSE#,#FALSE#,"arial", 10, 0,#FALSE#'
|
4926
4926
|
Line3='#TRUE#'
|
4927
4927
|
IERR=0
|
4928
|
-
|
4928
|
+
|
4929
4929
|
for i in range(NbZones):
|
4930
4930
|
file.write('zone'+Next_line)
|
4931
4931
|
NbVectors=0
|
@@ -4954,9 +4954,9 @@ def Export_vecz(Zones,filename):
|
|
4954
4954
|
|
4955
4955
|
def Create_Network(Zones):
|
4956
4956
|
"""Creation du réseau en vue de l'affichage via networkx et également sauvegarde de l'ensemble des noeuds présents au sein du réseau"""
|
4957
|
-
|
4957
|
+
|
4958
4958
|
#cp = cProfile.Profile()
|
4959
|
-
#cp.enable()
|
4959
|
+
#cp.enable()
|
4960
4960
|
myfig = plt.figure()
|
4961
4961
|
ax = myfig.add_subplot(111)
|
4962
4962
|
#plt.figure()
|
@@ -5043,7 +5043,7 @@ def Create_Network(Zones):
|
|
5043
5043
|
#List_Nodes['TypeEl'].append('Vector')
|
5044
5044
|
#List_Nodes['InitNode'].append(-1)
|
5045
5045
|
Last_Node=Cpt_Total_Node
|
5046
|
-
|
5046
|
+
|
5047
5047
|
|
5048
5048
|
if(k==0 or (k==NbrVertex-1)):
|
5049
5049
|
New_Node=True
|
@@ -5091,11 +5091,11 @@ def Create_Network(Zones):
|
|
5091
5091
|
List_Add_Nodes.append((CoordX,CoordY,CoordZ))
|
5092
5092
|
edges_to_add.append((First_Node,Last_Node))
|
5093
5093
|
First_Node=Last_Node
|
5094
|
-
|
5095
|
-
cpt_vec=cpt_vec+1
|
5094
|
+
|
5095
|
+
cpt_vec=cpt_vec+1
|
5096
5096
|
|
5097
5097
|
#plot=edges_to_add[0]
|
5098
|
-
# Vec_Name=Zones[i]['Name'][j]
|
5098
|
+
# Vec_Name=Zones[i]['Name'][j]
|
5099
5099
|
if(Complete_Creation):
|
5100
5100
|
List_Tuples=int(sum(map(len, edges_to_add))/2)
|
5101
5101
|
for s in range(List_Tuples):
|
@@ -5191,9 +5191,9 @@ def Prepare_Node_Values(G_loc):
|
|
5191
5191
|
cpt_elem=0
|
5192
5192
|
for u in G_loc.nodes():
|
5193
5193
|
cpt_elem=cpt_elem+1
|
5194
|
-
Loc_Val=G_loc.nodes[u][
|
5194
|
+
Loc_Val=G_loc.nodes[u][key_Param.VALUE]+float(cpt_elem)/float(1000000000)
|
5195
5195
|
values.append(Loc_Val)
|
5196
|
-
if(G_loc.nodes[u][
|
5196
|
+
if(G_loc.nodes[u][key_Param.VALUE]==0):
|
5197
5197
|
Test=1
|
5198
5198
|
return values
|
5199
5199
|
|
@@ -5230,8 +5230,8 @@ def Set_Up_Vector_Values(Zones,Param_Simul,Timing):
|
|
5230
5230
|
Zones[Loc_Zone]['ShowVal'][Loc_Vec]='X'
|
5231
5231
|
return Extr
|
5232
5232
|
|
5233
|
-
#Sous-routine permettant d'identifier l'index du noeud le plus proche d'une liste
|
5234
|
-
#node tuple de type (x,y)
|
5233
|
+
#Sous-routine permettant d'identifier l'index du noeud le plus proche d'une liste
|
5234
|
+
#node tuple de type (x,y)
|
5235
5235
|
# nodes liste de tuple de type [(x1,y1),(x2,y2),...]
|
5236
5236
|
def closest_node(node, nodes):
|
5237
5237
|
nodes = np.asarray(nodes)
|
@@ -5326,7 +5326,7 @@ def Import_Nodes_Attributes(namepath,List_Nodes,Param,Type_Analysis):
|
|
5326
5326
|
NodeTime[1]=end-start
|
5327
5327
|
start=time.time()
|
5328
5328
|
|
5329
|
-
#Recherche des différents attributs importants pour les réservoirs
|
5329
|
+
#Recherche des différents attributs importants pour les réservoirs
|
5330
5330
|
Found_Node={}
|
5331
5331
|
Found_Node['Reservoirs']=[]
|
5332
5332
|
Found_Node['IncJunctions']=[]
|
@@ -5369,7 +5369,7 @@ def Import_Nodes_Attributes(namepath,List_Nodes,Param,Type_Analysis):
|
|
5369
5369
|
Test=1
|
5370
5370
|
return Nodes,MainAttr,ListedAttr,DftAttr,Found_Node
|
5371
5371
|
|
5372
|
-
#Sous-routine
|
5372
|
+
#Sous-routine
|
5373
5373
|
def Build_List_Nodes(List_Nodes,Nodes):
|
5374
5374
|
Test=1
|
5375
5375
|
TypeN=['Reservoirs','IncJunctions']
|
@@ -5417,7 +5417,7 @@ def Import_Vector_Attributes(namepath,Zones,Param,List_Position):
|
|
5417
5417
|
Zones=Add_Indirect_Position(Zones,List_Position)
|
5418
5418
|
return Zones
|
5419
5419
|
|
5420
|
-
def Define_Node_Pos(Nodes,Type_Node,List_Nodes):
|
5420
|
+
def Define_Node_Pos(Nodes,Type_Node,List_Nodes):
|
5421
5421
|
i=0
|
5422
5422
|
ListCoord=[]
|
5423
5423
|
for NodeName in Nodes[Type_Node]:
|
@@ -5498,7 +5498,7 @@ def Add_Node_Attributes(El_List,MainDir,List_Attr,Attr_File,Spec_Case):
|
|
5498
5498
|
if(File_To_Read):
|
5499
5499
|
with open(filename) as f:
|
5500
5500
|
content = f.readlines()
|
5501
|
-
content = [x.rstrip('\n') for x in content]
|
5501
|
+
content = [x.rstrip('\n') for x in content]
|
5502
5502
|
|
5503
5503
|
if(Spec_Case==1):
|
5504
5504
|
for NodeName in El_List:
|
@@ -5555,7 +5555,7 @@ def Add_Pattern_Dft_Value(Nodes):
|
|
5555
5555
|
#Partie liée aux attributs cette fois pour les différents types de vecteurs
|
5556
5556
|
def Add_Vector_Attributes(Zones,MainDir,List_Attr,Attr_File):
|
5557
5557
|
#cp = cProfile.Profile()
|
5558
|
-
#cp.enable()
|
5558
|
+
#cp.enable()
|
5559
5559
|
Found_File=[1]*len(List_Attr)
|
5560
5560
|
Cpt_attrib=-1
|
5561
5561
|
for Attr in List_Attr:
|
@@ -5607,19 +5607,19 @@ def Add_Vector_Time(Zones,LocDir,Param):
|
|
5607
5607
|
if(Nb_total_Time>Nb_Time_steps):
|
5608
5608
|
Nb_Lines_to_read=Nb_Time_steps
|
5609
5609
|
Nb_remaining_Lines=Nb_total_Time-Nb_Time_steps
|
5610
|
-
|
5610
|
+
|
5611
5611
|
cpt_file=0
|
5612
5612
|
for loc_file in local_file:
|
5613
5613
|
filename=LocDir+loc_file
|
5614
5614
|
if(os.path.isfile(filename)):
|
5615
5615
|
with open(filename) as f:
|
5616
5616
|
content = f.readlines()
|
5617
|
-
content = [x.rstrip('\n') for x in content]
|
5617
|
+
content = [x.rstrip('\n') for x in content]
|
5618
5618
|
NbVec=int(Zones[Id_Zone[cpt_file]]['NbrVec'])
|
5619
5619
|
zeroArray = [0.0] * Nb_total_Time
|
5620
5620
|
Zones[Id_Zone[cpt_file]][Arg_Attr[cpt_file]]=[zeroArray[:] for i in range(NbVec)]
|
5621
5621
|
Zones[Id_Zone[cpt_file]]['ShowVal']=[0.0]*NbVec
|
5622
|
-
|
5622
|
+
|
5623
5623
|
cpt_Entry=0
|
5624
5624
|
Nb_Entries=len(content)
|
5625
5625
|
for Nb_Entry in range(len(content)):
|
@@ -5711,7 +5711,7 @@ def Add_Spec_Vec_Attributes(Zones,MainDir):
|
|
5711
5711
|
file = open(LocDir,'r')
|
5712
5712
|
Found_Pump=False
|
5713
5713
|
Spec_Pump=False
|
5714
|
-
#Structure du fichier:
|
5714
|
+
#Structure du fichier:
|
5715
5715
|
#Type element,Numéro élément de son type, Nom Element
|
5716
5716
|
#Param sigmoïde H(Q),Param sigmoïde P(Q)
|
5717
5717
|
#Param sigmoïde Hbep(Q),Param sigmoïde Pbep(Q)
|
@@ -5732,7 +5732,7 @@ def Add_Spec_Vec_Attributes(Zones,MainDir):
|
|
5732
5732
|
if(not(Spec_Pump)):
|
5733
5733
|
Zones=Initialise_Sigm_Pump(Zones)
|
5734
5734
|
Test=1
|
5735
|
-
#Première ligne dédiée
|
5735
|
+
#Première ligne dédiée
|
5736
5736
|
Value=file.readline().rstrip('\n')
|
5737
5737
|
Value=re.split(r'\,', Value)
|
5738
5738
|
if(len(Value)==2):
|
@@ -5766,7 +5766,7 @@ def Add_Spec_Vec_Attributes(Zones,MainDir):
|
|
5766
5766
|
else:
|
5767
5767
|
Found_Files[1]=0
|
5768
5768
|
|
5769
|
-
|
5769
|
+
|
5770
5770
|
Test=1
|
5771
5771
|
return Zones,Found_Files
|
5772
5772
|
|
@@ -5849,7 +5849,7 @@ def Add_Node_Time3(Nodes,Type_Node,LocDir,Param):
|
|
5849
5849
|
if(File_To_Read):
|
5850
5850
|
with open(LocFile) as f:
|
5851
5851
|
content = f.readlines()
|
5852
|
-
content = [x.strip() for x in content]
|
5852
|
+
content = [x.strip() for x in content]
|
5853
5853
|
end=time.time()
|
5854
5854
|
NodeTime=end-start
|
5855
5855
|
|
@@ -5961,7 +5961,7 @@ def Import_Patterns(MainPath):
|
|
5961
5961
|
Test=1
|
5962
5962
|
return Patterns
|
5963
5963
|
|
5964
|
-
#Lecture d'une catégorie d'informations pour compléter
|
5964
|
+
#Lecture d'une catégorie d'informations pour compléter
|
5965
5965
|
def Read_Pattern_Attributes(Patterns,Ptrn_Dir,Name_file,Attr_Name,Param_Case,SubAttributes,Dflt_Val):
|
5966
5966
|
Attr_file=Ptrn_Dir+Name_file
|
5967
5967
|
Special_char=','
|
@@ -6000,7 +6000,7 @@ def Read_PatternsDir(Patterns,Ptrn_Dir,SubAttributes):
|
|
6000
6000
|
Days=[[],[]]
|
6001
6001
|
Calendar=[]
|
6002
6002
|
Loc_Val=Dflt_Val
|
6003
|
-
#On vient remplir les valeurs
|
6003
|
+
#On vient remplir les valeurs
|
6004
6004
|
if(not(Ptrn_Name in Patterns)):
|
6005
6005
|
Patterns[Ptrn_Name]={}
|
6006
6006
|
cpt_attr=0
|
@@ -6080,7 +6080,7 @@ def Export_Vec_Attributes(Zones,Param,Path):
|
|
6080
6080
|
except OSError:
|
6081
6081
|
logging.warning("Creation of the directory %s failed" % Directory)
|
6082
6082
|
#Deuxième étape est donc d'ajouter les différents fichiers d'attributs
|
6083
|
-
Attributes=[[],[],[],[]]
|
6083
|
+
Attributes=[[],[],[],[]]
|
6084
6084
|
ListFilename=[[],[],[],[]]
|
6085
6085
|
Attributes[0]=['Diameter','IC_Cond','Length','Material','Rough_Coeff']
|
6086
6086
|
ListFilename[0]=['\\Diameter.D','\\IC_Vector.D','\\Length.D','\\Material.S','\\Rugosity.D']
|
@@ -6206,14 +6206,14 @@ def Export_Node_Attributes(Nodes,Path):
|
|
6206
6206
|
except OSError:
|
6207
6207
|
logging.warning("Creation of the directory %s failed" % Directory[1])
|
6208
6208
|
#Deuxième étape est donc d'ajouter les différents fichiers d'attributs
|
6209
|
-
Attributes=[[],[]]
|
6209
|
+
Attributes=[[],[]]
|
6210
6210
|
Type=['Reservoirs','IncJunctions']
|
6211
6211
|
ListFilename=[[],[]]
|
6212
6212
|
Attributes[0]=['SECTION','IC_V','Max_H','Min_H','Patterns']
|
6213
6213
|
ListFilename[0]=['\\SECTION.D','\\IC_Reservoir.D','\\Max_Height.D','\\Minimum_H.D','\\BC_Water_Exchanges.S']
|
6214
6214
|
Attributes[1]=['Patterns','Consumers']
|
6215
6215
|
ListFilename[1]=['\\BC_Water_Exchanges.S','\\ConsMeters.I']
|
6216
|
-
#On s'assure de la validité
|
6216
|
+
#On s'assure de la validité
|
6217
6217
|
Attr=Attributes[1][0]
|
6218
6218
|
Dflt_Name='X'
|
6219
6219
|
Filename=Dflt_Name
|
@@ -6459,7 +6459,3 @@ if __name__=='__main__':
|
|
6459
6459
|
ex = Bernoulli_Frame(None)
|
6460
6460
|
ex.Show()
|
6461
6461
|
app.MainLoop()
|
6462
|
-
|
6463
|
-
|
6464
|
-
|
6465
|
-
|