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