]> SALOME platform Git repositories - modules/hexablock.git/blob - src/TEST_PY/tape_edf/hexa_tape.py
Salome HOME
Abu : Nouvelle syntaxe geompy
[modules/hexablock.git] / src / TEST_PY / tape_edf / hexa_tape.py
1
2 # Hexa : Utilitaires de creation de la tape
3
4 import hexablock
5 ###  import geompy
6 geompy = hexablock.geompy
7
8 nbr_points = 0
9
10 the_doc   = None
11 the_shape = None
12 the_name  = "xxxx"
13
14 tab_x = []
15 tab_z = []
16
17 x_moy = 0.0
18 z_moy = 0.0
19 z_min = 0.0
20 z_max = 0.0
21
22 Epsilon = 1e-4
23
24 # ======================================================== add_document
25 def add_document (name, load_geom=True) :
26
27     global the_doc, the_shape, the_name
28
29     the_name  = name
30     the_doc   = hexablock.addDocument (name)
31     the_shape = None
32
33     if load_geom :
34        brep      = 'cas_edf/' + name + '.brep'
35        geom      = geompy.ImportBREP (brep)
36        the_shape = hexablock.addShape (the_doc, geom , name)
37
38     return the_doc
39
40 # ============================================================= add_edge
41 def add_edge (nro, v1,v2, ass=True) :
42    edge = the_doc.addEdge (v1,v2)
43    if ass :
44       edge.addAssociation (the_shape, nro, 0.0, 1.0)
45    return edge
46
47 # ============================================================= mailler0
48 def mailler0 (doc=None) :
49
50     if doc == None :
51        doc = the_doc
52
53     law = doc.addLaw('Uniform', 3)
54     for j in range(doc.countPropagation()) :
55         propa = doc.getPropagation(j)
56         propa.setLaw(law)
57
58     mesh_hexas = hexablock.mesh(doc)
59     return  mesh_hexas
60
61 # ============================================================= mailler
62 def mailler (doc=None) :
63
64     if doc == None :
65        doc = the_doc
66
67     doc.addLaws (10, True)
68     mesh_hexas = hexablock.mesh(doc)
69     return  mesh_hexas
70
71 # ============================================================= egalite
72 def egalite (px, py) :
73     delta = py - px
74     return delta > -Epsilon and delta < Epsilon
75
76 # ============================================================= add_value
77 def add_value (table, value) :
78
79     pasla = True
80     for val in table :
81         if egalite (val, value) :
82            pasla = False
83
84     if pasla :
85        table.append (value)
86
87 # ========================================================== raz_points
88 def raz_points () :
89
90     global nbr_points, x_moy, y_fix, z_min, z_max
91     global tab_x, tab_z
92     nbr_points = 0
93     x_moy      = 0
94     y_fix      = 0
95
96     tab_x = []
97     tab_z = []
98
99 # ============================================================= add_point
100 def add_point (px, py, pz) :
101
102     global nbr_points, x_moy, y_fix, z_min, z_max
103     global tab_x, tab_z
104
105     if nbr_points == 0 :
106        x_moy = px
107        z_min = pz
108        z_max = pz
109     else :
110        x_moy  += px
111        if pz < z_min : z_min = pz
112        if pz > z_max : z_max = pz
113
114     y_fix       = py
115     nbr_points += 1
116
117     tab_x.append (px)
118     tab_z.append (pz)
119
120 # ========================================================== gen_cylinder
121 def gen_cylinder () :
122
123     global nbr_points, x_moy, y_fix, z_min
124     global tab_x, tab_z
125     x_moy = x_moy / nbr_points
126
127     ta = [ 0, 90, 180, 270, 360 ]
128     tab_ray  = []
129     tab_haut = []
130
131     for val in tab_x :
132         if val > x_moy :
133            add_value (tab_ray,  val-x_moy)
134
135     tab_ray.sort()
136
137     for val in tab_z :
138         add_value (tab_haut, val)
139
140     tab_haut.sort()
141
142     orig = the_doc.addVertex (x_moy, y_fix, 0)
143     vx   = the_doc.addVector (1, 0, 0)
144     vz   = the_doc.addVector (0, 0, 1)
145     grid = the_doc.makePipe (orig, vx, vz, tab_ray, ta, tab_haut)
146     return grid
147
148
149 # ========================================================== gen_vis
150 def gen_vis () :
151
152     global nbr_points, x_moy, y_fix, z_min
153     global tab_x, tab_z
154     x_moy = x_moy / nbr_points
155
156     xmed = tab_x [0] - x_moy
157     xmax = xmed
158     xmin = xmed
159
160     for px in tab_x :
161         if px > x_moy :
162            val = px - x_moy
163            if val < xmin :
164               xmin = val
165            elif val > xmax :
166               xmed = xmax
167               xmax = val
168            elif val < xmax and val > xmed :
169               xmed = val
170
171     z_top = z_min
172     for val in tab_z :
173         if val < z_max and val > z_top :
174            z_top = val
175
176     tr = [ xmin,  xmed,  xmax ]
177     tz = [ z_min, z_top, z_max ]
178     ta = [ 0, 90, 180, 270, 360 ]
179
180     orig = the_doc.addVertex (x_moy, y_fix, 0)
181     vx   = the_doc.addVector (1, 0, 0)
182     vz   = the_doc.addVector (0, 0, 1)
183
184     grid = the_doc.makePipe (orig, vx, vz, tr, ta, tz)
185
186     for na in range (4) :
187         grid.getHexaIJK (1, na, 0).remove()
188
189     return grid
190
191