Salome HOME
d460c302f464e4a8658b49ddde3a67a8936f8645
[modules/smesh.git] / doc / salome / gui / SMESH / constructing_meshes.htm
1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
2 \r
3 <html>\r
4 \r
5 <head>\r
6 <title>Constructing Meshes</title>\r
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">\r
9 <!--\r
10 p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
11 p.whs2 { margin-top:0pt; margin-bottom:0pt; }\r
12 p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0px; margin-bottom:0px; }\r
13 p.whs4 { margin-top:0px; margin-bottom:0px; }\r
14 p.whs5 { margin-top:0px; margin-bottom:0px; font-family:'Times New Roman' , serif; }\r
15 -->\r
16 </style><script type="text/javascript" language="JavaScript">\r
17 <!--\r
18 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
19 {\r
20   var strNSS = "<style type='text/css'>";\r
21   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
22   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
23   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";\r
24   strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";\r
25   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";\r
26   strNSS +="</style>";\r
27   document.write(strNSS);\r
28 }\r
29 //-->\r
30 </script>\r
31 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
32 <!--\r
33 function reDo() {\r
34   if (innerWidth != origWidth || innerHeight != origHeight)\r
35      location.reload();\r
36 }\r
37 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
38         origWidth = innerWidth;\r
39         origHeight = innerHeight;\r
40         onresize = reDo;\r
41 }\r
42 onerror = null; \r
43 //-->\r
44 </script>\r
45 <style type="text/css">\r
46 <!--\r
47 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
48 p.WebHelpNavBar { text-align:right; }\r
49 -->\r
50 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
51 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
52 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
53 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
54 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
55 <script type="text/javascript" language="javascript1.2">\r
56 <!--\r
57 if (window.gbWhTopic)\r
58 {\r
59         if (window.setRelStartPage)\r
60         {\r
61         addTocInfo("MESH module\nTUI Scripts\nCreating Meshes");\r
62 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
63 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
64 \r
65         }\r
66 \r
67 \r
68         if (window.setRelStartPage)\r
69         {\r
70         setRelStartPage("index.htm");\r
71 \r
72                 autoSync(1);\r
73                 sendSyncInfo();\r
74                 sendAveInfoOut();\r
75         }\r
76 \r
77 }\r
78 else\r
79         if (window.gbIE4)\r
80                 document.location.reload();\r
81 //-->\r
82 </script>\r
83 </head>\r
84 <body><script type="text/javascript" language="javascript1.2">\r
85 <!--\r
86 if (window.writeIntopicBar)\r
87         writeIntopicBar(4);\r
88 //-->\r
89 </script>\r
90 <h1>Creating Meshes</h1>\r
91 \r
92 <p>At first see <a href="smesh_py_introduction.htm">Example of 3d mesh generation</a>, using <b>smesh</b> package.\r
93 <p>Other examples of python scripts will be also updated soon to use <b>smesh</b> package instead of direct usage of idl interface.\r
94 \r
95 <h3><a name=bookmark>Construction of a Mesh</a></h3>\r
96 \r
97 <p>Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use <b>smesh</b> package.\r
98 <br>&nbsp;\r
99 \r
100 <p class="whs1">import salome</p>\r
101 \r
102 <p class="whs1">import geompy</p>\r
103 \r
104 <p class="whs1">import StdMeshers</p>\r
105 \r
106 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
107  &quot;SMESH&quot;)</p>\r
108 \r
109 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
110 \r
111 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>\r
112 \r
113 <p class="whs2">&nbsp;</p>\r
114 \r
115 <p class="whs2"># create a box</p>\r
116 \r
117 <p class="whs1">box = geompy.MakeBox(0., \r
118  0., 0., 100., 200., 300.)</p>\r
119 \r
120 <p class="whs2">&nbsp;</p>\r
121 \r
122 <p class="whs2"># add box to the study</p>\r
123 \r
124 <p class="whs1">idbox = geompy.addToStudy(box, \r
125  &quot;box&quot;)</p>\r
126 \r
127 <p class="whs2">&nbsp;</p>\r
128 \r
129 <p class="whs2"># create a hypothesis</p>\r
130 \r
131 <p class="whs1">print &quot;-------------------------- \r
132  create Hypothesis&quot;</p>\r
133 \r
134 <p class="whs1">print &quot;-------------------------- \r
135  NumberOfSegments&quot;</p>\r
136 \r
137 <p class="whs1">numberOfSegments \r
138  = 7</p>\r
139 \r
140 <p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
141  &quot;libStdMeshersEngine.so&quot;)</p>\r
142 \r
143 <p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>\r
144 \r
145 <p class="whs1">print hypNbSeg.GetName()</p>\r
146 \r
147 <p class="whs1">print hypNbSeg.GetId()</p>\r
148 \r
149 <p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>\r
150 \r
151 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg), \r
152  &quot;NumberOfSegments_10&quot;)</p>\r
153 \r
154 <p class="whs1">print &quot;-------------------------- \r
155  MaxElementArea&quot;</p>\r
156 \r
157 <p class="whs1">maxElementArea = \r
158  800</p>\r
159 \r
160 <p class="whs1">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
161  &quot;libStdMeshersEngine.so&quot;)</p>\r
162 \r
163 <p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>\r
164 \r
165 <p class="whs1">print hypArea.GetName()</p>\r
166 \r
167 <p class="whs1">print hypArea.GetId()</p>\r
168 \r
169 <p class="whs1">print hypArea.GetMaxElementArea()</p>\r
170 \r
171 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea), \r
172  &quot;MaxElementArea_500&quot;)</p>\r
173 \r
174 <p class="whs1">print &quot;-------------------------- \r
175  MaxElementVolume&quot;</p>\r
176 \r
177 <p class="whs1">maxElementVolume \r
178  = 900</p>\r
179 \r
180 <p class="whs1">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, \r
181  &quot;libStdMeshersEngine.so&quot;)</p>\r
182 \r
183 <p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>\r
184 \r
185 <p class="whs1">print hypVolume.GetName()</p>\r
186 \r
187 <p class="whs1">print hypVolume.GetId()</p>\r
188 \r
189 <p class="whs1">print hypVolume.GetMaxElementVolume()</p>\r
190 \r
191 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume), \r
192  &quot;MaxElementVolume_500&quot;)</p>\r
193 \r
194 <p class="whs2">&nbsp;</p>\r
195 \r
196 <p class="whs2"># create algorithms</p>\r
197 \r
198 <p class="whs1">print &quot;-------------------------- \r
199  create Algorithms&quot;</p>\r
200 \r
201 <p class="whs1">print &quot;-------------------------- \r
202  Regular_1D&quot;</p>\r
203 \r
204 <p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
205  &quot;libStdMeshersEngine.so&quot;)</p>\r
206 \r
207 <p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D), \r
208  &quot;Wire Discretisation&quot;)</p>\r
209 \r
210 <p class="whs1">print &quot;-------------------------- \r
211  MEFISTO_2D&quot;</p>\r
212 \r
213 <p class="whs1">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
214  &quot;libStdMeshersEngine.so&quot;)</p>\r
215 \r
216 <p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
217  &quot;MEFISTO_2D&quot;)</p>\r
218 \r
219 <p class="whs2">&nbsp;</p>\r
220 \r
221 <p class="whs2"># initialize a mesh with \r
222  the box</p>\r
223 \r
224 <p class="whs1">mesh = smesh.CreateMesh(box)</p>\r
225 \r
226 <p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh), \r
227  &quot;MeshBox&quot;)</p>\r
228 \r
229 <p class="whs2">&nbsp;</p>\r
230 \r
231 <p class="whs2"># add the hypothesis to \r
232  the box</p>\r
233 \r
234 <p class="whs1">print &quot;-------------------------- \r
235  add hypothesis to the box&quot;</p>\r
236 \r
237 <p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>\r
238 \r
239 <p class="whs1">mesh.AddHypothesis(box,hypArea)</p>\r
240 \r
241 <p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>\r
242 \r
243 <p class="whs1">mesh.AddHypothesis(box,regular1D)</p>\r
244 \r
245 <p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>\r
246 \r
247 <p class="whs2">&nbsp;</p>\r
248 \r
249 <p class="whs2"># compute the mesh</p>\r
250 \r
251 <p class="whs1">print &quot;-------------------------- \r
252  compute the mesh of the box&quot;</p>\r
253 \r
254 <p class="whs1">ret = smesh.Compute(mesh,box)</p>\r
255 \r
256 <p class="whs1">print ret</p>\r
257 \r
258 <p class="whs1">if ret == 0:</p>\r
259 \r
260 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
261  &quot;probleme when computing the mesh&quot;</p>\r
262 \r
263 <p class="whs1">salome.sg.updateObjBrowser(1)</p>\r
264 \r
265 <p class="whs1">&nbsp;</p>\r
266 \r
267 <h3><a name=bookmark1>Construction of a Submesh</a></h3>\r
268 \r
269 <p class="whs3">&nbsp;</p>\r
270 \r
271 <p class="whs3"><span style="font-family: 'Lucida Console', monospace;">from \r
272  geompy import *</span></p>\r
273 \r
274 <p class="whs3">import smesh</p>\r
275 \r
276 <p class="whs4">&nbsp;</p>\r
277 \r
278 <p class="whs4"># create vertices</p>\r
279 \r
280 <p class="whs3">Point111 = MakeVertex( 0, &nbsp;0, \r
281  &nbsp;0)</p>\r
282 \r
283 <p class="whs3">Point211 = MakeVertex(10, &nbsp;0, \r
284  &nbsp;0)</p>\r
285 \r
286 <p class="whs3">Point121 = MakeVertex( 0, 10, &nbsp;0)</p>\r
287 \r
288 <p class="whs3">Point221 = MakeVertex(10, 10, &nbsp;0)</p>\r
289 \r
290 <p class="whs3">Point112 = MakeVertex( 0, &nbsp;0, \r
291  10)</p>\r
292 \r
293 <p class="whs3">Point212 = MakeVertex(10, &nbsp;0, \r
294  10)</p>\r
295 \r
296 <p class="whs3">Point122 = MakeVertex( 0, 10, 10)</p>\r
297 \r
298 <p class="whs3">Point222 = MakeVertex(10, 10, 10)</p>\r
299 \r
300 <p class="whs4">&nbsp;</p>\r
301 \r
302 <p class="whs4"># create edges</p>\r
303 \r
304 <p class="whs3">EdgeX111 = MakeEdge(Point111, Point211)</p>\r
305 \r
306 <p class="whs3">EdgeX121 = MakeEdge(Point121, Point221)</p>\r
307 \r
308 <p class="whs3">EdgeX112 = MakeEdge(Point112, Point212)</p>\r
309 \r
310 <p class="whs3">EdgeX122 = MakeEdge(Point122, Point222)</p>\r
311 \r
312 <p class="whs3">EdgeY11 = MakeEdge(Point111, Point121)</p>\r
313 \r
314 <p class="whs3">EdgeY21 = MakeEdge(Point211, Point221)</p>\r
315 \r
316 <p class="whs3">EdgeY12 = MakeEdge(Point112, Point122)</p>\r
317 \r
318 <p class="whs3">EdgeY22 = MakeEdge(Point212, Point222)</p>\r
319 \r
320 <p class="whs3">EdgeZ111 = MakeEdge(Point111, Point112)</p>\r
321 \r
322 <p class="whs3">EdgeZ211 = MakeEdge(Point211, Point212)</p>\r
323 \r
324 <p class="whs3">EdgeZ121 = MakeEdge(Point121, Point122)</p>\r
325 \r
326 <p class="whs3">EdgeZ221 = MakeEdge(Point221, Point222)</p>\r
327 \r
328 <p class="whs4">&nbsp;</p>\r
329 \r
330 <p class="whs4"># create faces</p>\r
331 \r
332 <p class="whs3">FaceX11 = MakeQuad(EdgeY11, EdgeZ111, \r
333  EdgeY12, EdgeZ121)</p>\r
334 \r
335 <p class="whs3">FaceX21 = MakeQuad(EdgeY21, EdgeZ211, \r
336  EdgeY22, EdgeZ221)</p>\r
337 \r
338 <p class="whs3">FaceY111 = MakeQuad(EdgeX111, EdgeZ111, \r
339  EdgeX112, EdgeZ211)</p>\r
340 \r
341 <p class="whs3">FaceY121 = MakeQuad(EdgeX121, EdgeZ121, \r
342  EdgeX122, EdgeZ221)</p>\r
343 \r
344 <p class="whs3">FaceZ11 = MakeQuad(EdgeX111, EdgeY11, \r
345  EdgeX121, EdgeY21)</p>\r
346 \r
347 <p class="whs3">FaceZ12 = MakeQuad(EdgeX112, EdgeY12, \r
348  EdgeX122, EdgeY22)</p>\r
349 \r
350 <p class="whs4">&nbsp;</p>\r
351 \r
352 <p class="whs4"># create a solid</p>\r
353 \r
354 <p class="whs3">Block = MakeHexa(FaceX11, FaceX21, FaceY111, \r
355  FaceY121, FaceZ11, FaceZ12)</p>\r
356 \r
357 <p class="whs4">&nbsp;</p>\r
358 \r
359 <p class="whs4"># create a compound</p>\r
360 \r
361 <p class="whs3">box = MakeCompound([Block])</p>\r
362 \r
363 <p class="whs4">&nbsp;</p>\r
364 \r
365 <p class="whs4"># add in the study</p>\r
366 \r
367 <p class="whs3">box_id = addToStudy(box, &quot;Box compound&quot;)</p>\r
368 \r
369 <p class="whs4">&nbsp;</p>\r
370 \r
371 <p class="whs4"># create hexahedral mesh \r
372  on the box</p>\r
373 \r
374 <p class="whs3">hexa = smesh.Mesh(box, &quot;Box compound \r
375  : hexahedrical mesh&quot;)</p>\r
376 \r
377 <p class="whs3">algo = hexa.Segment()</p>\r
378 \r
379 <p class="whs4">&nbsp;</p>\r
380 \r
381 <p class="whs4"># define &quot;NumberOfSegments&quot; \r
382  hypothesis to cut the edge in a fixed number of segments</p>\r
383 \r
384 <p class="whs3">algo.NumberOfSegments(4)</p>\r
385 \r
386 <p class="whs4">&nbsp;</p>\r
387 \r
388 <p class="whs4"># creates a quadrangle \r
389  2D algorithm for the faces</p>\r
390 \r
391 <p class="whs3">hexa.Quadrangle()</p>\r
392 \r
393 <p class="whs4">&nbsp;</p>\r
394 \r
395 <p class="whs4"># construct a submesh with \r
396  a local hypothesis</p>\r
397 \r
398 <p class="whs3">algo = hexa.Segment(EdgeX111)</p>\r
399 \r
400 <p class="whs4">&nbsp;</p>\r
401 \r
402 <p class="whs4"># define &quot;Arithmetic1D&quot; \r
403  hypothesis to cut an edge in several segments with increasing arithmetic \r
404  length </p>\r
405 \r
406 <p class="whs3">algo.Arithmetic1D(1, 4)</p>\r
407 \r
408 <p class="whs4">&nbsp;</p>\r
409 \r
410 <p class="whs4"># define &quot;Propagation&quot; \r
411  hypothesis that propagates all other hypothesis on all edges on the opposite \r
412  side in case of quadrangular faces</p>\r
413 \r
414 <p class="whs3">algo.Propagation()</p>\r
415 \r
416 <p class="whs4">&nbsp;</p>\r
417 \r
418 <p class="whs4"># compute the mesh</p>\r
419 \r
420 <p class="whs3">hexa.Compute() </p>\r
421 \r
422 <p class="whs3">&nbsp;</p>\r
423 \r
424 <h3><a name=bookmark2>Editing of a mesh</a></h3>\r
425 \r
426 <p>Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use <b>smesh</b> package.\r
427 <br>&nbsp;\r
428 \r
429 <p class="whs3">&nbsp;</p>\r
430 \r
431 <p class="whs3"><span style="font-family: 'Lucida Console', monospace;">import \r
432  salome</span></p>\r
433 \r
434 <p class="whs3">import geompy</p>\r
435 \r
436 <p class="whs3">import SMESH</p>\r
437 \r
438 <p class="whs3">import StdMeshers</p>\r
439 \r
440 <p class="whs3">&nbsp;</p>\r
441 \r
442 <p class="whs3">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
443  &quot;SMESH&quot;)</p>\r
444 \r
445 <p class="whs3">smesh.SetCurrentStudy(salome.myStudy)</p>\r
446 \r
447 <p class="whs3">&nbsp;</p>\r
448 \r
449 <p class="whs3">box &nbsp;&nbsp;= \r
450  geompy.MakeBox(0., 0., 0., 20., 20., 20.)</p>\r
451 \r
452 <p class="whs3">idbox = geompy.addToStudy(box, &quot;box&quot;)</p>\r
453 \r
454 <p class="whs3">&nbsp;</p>\r
455 \r
456 <p class="whs3">subShapeList = geompy.SubShapeAll(box, \r
457  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
458 \r
459 <p class="whs3">edge &nbsp;&nbsp;= \r
460  subShapeList[0]</p>\r
461 \r
462 <p class="whs3">name &nbsp;&nbsp;= \r
463  geompy.SubShapeName(edge, box)</p>\r
464 \r
465 <p class="whs3">idedge = geompy.addToStudyInFather(box, \r
466  edge, name)</p>\r
467 \r
468 <p class="whs3">&nbsp;</p>\r
469 \r
470 <p class="whs3">box &nbsp;= \r
471  salome.IDToObject(idbox)</p>\r
472 \r
473 <p class="whs3">edge = salome.IDToObject(idedge)</p>\r
474 \r
475 <p class="whs3">&nbsp;</p>\r
476 \r
477 <p class="whs3">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
478  &quot;libStdMeshersEngine.so&quot;)</p>\r
479 \r
480 <p class="whs3">hyp1.SetNumberOfSegments(3)</p>\r
481 \r
482 <p class="whs3">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
483  &quot;libStdMeshersEngine.so&quot;)</p>\r
484 \r
485 <p class="whs3">hyp2.SetMaxElementArea(10)</p>\r
486 \r
487 <p class="whs3">hyp3 = smesh.CreateHypothesis(&quot;Arithmetic1D&quot;, \r
488  &quot;libStdMeshersEngine.so&quot;)</p>\r
489 \r
490 <p class="whs3">hyp3.SetLength(1,1)</p>\r
491 \r
492 <p class="whs3">hyp3.SetLength(6,0)</p>\r
493 \r
494 <p class="whs3">hyp4 = smesh.CreateHypothesis(&quot;Propagation&quot;, \r
495  &quot;libStdMeshersEngine.so&quot;)</p>\r
496 \r
497 <p class="whs3">&nbsp;</p>\r
498 \r
499 <p class="whs3">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
500  &quot;libStdMeshersEngine.so&quot;)</p>\r
501 \r
502 <p class="whs3">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
503  &quot;libStdMeshersEngine.so&quot;)</p>\r
504 \r
505 <p class="whs3">&nbsp;</p>\r
506 \r
507 <p class="whs3">mesh = smesh.CreateMesh(box)</p>\r
508 \r
509 <p class="whs3">mesh.AddHypothesis(box,hyp1)</p>\r
510 \r
511 <p class="whs3">mesh.AddHypothesis(box,hyp2)</p>\r
512 \r
513 <p class="whs3">mesh.AddHypothesis(box,algo1)</p>\r
514 \r
515 <p class="whs3">mesh.AddHypothesis(box,algo2)</p>\r
516 \r
517 <p class="whs3">mesh.AddHypothesis(edge,hyp3)</p>\r
518 \r
519 <p class="whs3">mesh.AddHypothesis(edge,hyp4)</p>\r
520 \r
521 <p class="whs3">mesh.AddHypothesis(edge,algo1)</p>\r
522 \r
523 <p class="whs3">&nbsp;</p>\r
524 \r
525 <p class="whs3">smesh.Compute(mesh,box)</p>\r
526 \r
527 <p class="whs3">salome.sg.updateObjBrowser(1)</p>\r
528 \r
529 <p class="whs3">&nbsp;</p>\r
530 \r
531 <p class="whs5"># remove a hypothesis</p>\r
532 \r
533 <p class="whs3">mesh.RemoveHypothesis(edge,hyp4)</p>\r
534 \r
535 <p class="whs3">&nbsp;</p>\r
536 \r
537 <p class="whs3">smesh.Compute(mesh,box)</p>\r
538 \r
539 <p class="whs3">salome.sg.updateObjBrowser(1)</p>\r
540 \r
541 <p class="whs3">&nbsp;</p>\r
542 \r
543 <p class="whs5"># change the value \r
544  of the hypothesis</p>\r
545 \r
546 <p class="whs3">hyp2.SetMaxElementArea(2)</p>\r
547 \r
548 <p class="whs3">mesh.AddHypothesis(box,hyp2)</p>\r
549 \r
550 <p class="whs3">&nbsp;</p>\r
551 \r
552 <p class="whs3">smesh.Compute(mesh,box)</p>\r
553 \r
554 <p class="whs3">salome.sg.updateObjBrowser(1) </p>\r
555 \r
556 <p class="whs4">&nbsp;</p>\r
557 \r
558 <h3><a name=bookmark3>Export of a Mesh</a></h3>\r
559 \r
560 <p>Attention! This script was written using old approach, based on direct usage of SMESH idl interface. To be updated for version 3.2.1 to use <b>smesh</b> package.\r
561 <br>&nbsp;\r
562 \r
563 <p class="whs4">&nbsp;</p>\r
564 \r
565 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
566  salome</span></p>\r
567 \r
568 <p class="whs1">import geompy</p>\r
569 \r
570 <p class="whs1">import StdMeshers</p>\r
571 \r
572 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
573  &quot;SMESH&quot;)</p>\r
574 \r
575 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
576 \r
577 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>\r
578 \r
579 <p class="whs2">&nbsp;</p>\r
580 \r
581 <p class="whs2"># create a box</p>\r
582 \r
583 <p class="whs1">box = geompy.MakeBox(0., \r
584  0., 0., 100., 200., 300.)</p>\r
585 \r
586 <p class="whs2">&nbsp;</p>\r
587 \r
588 <p class="whs2"># add the box to the study</p>\r
589 \r
590 <p class="whs1">idbox = geompy.addToStudy(box, \r
591  &quot;box&quot;)</p>\r
592 \r
593 <p class="whs2">&nbsp;</p>\r
594 \r
595 <p class="whs2"># create a hypothesis</p>\r
596 \r
597 <p class="whs1">print &quot;-------------------------- \r
598  create Hypothesis&quot;</p>\r
599 \r
600 <p class="whs1">print &quot;-------------------------- \r
601  NumberOfSegments&quot;</p>\r
602 \r
603 <p class="whs1">numberOfSegments \r
604  = 7</p>\r
605 \r
606 <p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
607  &quot;libStdMeshersEngine.so&quot;)</p>\r
608 \r
609 <p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>\r
610 \r
611 <p class="whs1">print hypNbSeg.GetName()</p>\r
612 \r
613 <p class="whs1">print hypNbSeg.GetId()</p>\r
614 \r
615 <p class="whs1">print hypNbSeg.GetNumberOfSegments()</p>\r
616 \r
617 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypNbSeg), \r
618  &quot;NumberOfSegments_10&quot;)</p>\r
619 \r
620 <p class="whs1">print &quot;-------------------------- \r
621  MaxElementArea&quot;</p>\r
622 \r
623 <p class="whs1">maxElementArea = \r
624  800</p>\r
625 \r
626 <p class="whs1">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
627  &quot;libStdMeshersEngine.so&quot;)</p>\r
628 \r
629 <p class="whs1">hypArea.SetMaxElementArea(maxElementArea)</p>\r
630 \r
631 <p class="whs1">print hypArea.GetName()</p>\r
632 \r
633 <p class="whs1">print hypArea.GetId()</p>\r
634 \r
635 <p class="whs1">print hypArea.GetMaxElementArea()</p>\r
636 \r
637 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypArea), \r
638  &quot;MaxElementArea_500&quot;)</p>\r
639 \r
640 <p class="whs1">print &quot;-------------------------- \r
641  MaxElementVolume&quot;</p>\r
642 \r
643 <p class="whs1">maxElementVolume \r
644  = 900</p>\r
645 \r
646 <p class="whs1">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, \r
647  &quot;libStdMeshersEngine.so&quot;)</p>\r
648 \r
649 <p class="whs1">hypVolume.SetMaxElementVolume(maxElementVolume)</p>\r
650 \r
651 <p class="whs1">print hypVolume.GetName()</p>\r
652 \r
653 <p class="whs1">print hypVolume.GetId()</p>\r
654 \r
655 <p class="whs1">print hypVolume.GetMaxElementVolume()</p>\r
656 \r
657 <p class="whs1">smeshgui.SetName(salome.ObjectToID(hypVolume), \r
658  &quot;MaxElementVolume_500&quot;)</p>\r
659 \r
660 <p class="whs2">&nbsp;</p>\r
661 \r
662 <p class="whs2"># create algorithms</p>\r
663 \r
664 <p class="whs1">print &quot;-------------------------- \r
665  create Algorithms&quot;</p>\r
666 \r
667 <p class="whs1">print &quot;-------------------------- \r
668  Regular_1D&quot;</p>\r
669 \r
670 <p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
671  &quot;libStdMeshersEngine.so&quot;)</p>\r
672 \r
673 <p class="whs1">smeshgui.SetName(salome.ObjectToID(regular1D), \r
674  &quot;Wire Discretisation&quot;)</p>\r
675 \r
676 <p class="whs1">print &quot;-------------------------- \r
677  MEFISTO_2D&quot;</p>\r
678 \r
679 <p class="whs1">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
680  &quot;libStdMeshersEngine.so&quot;)</p>\r
681 \r
682 <p class="whs1">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
683  &quot;MEFISTO_2D&quot;)</p>\r
684 \r
685 <p class="whs2">&nbsp;</p>\r
686 \r
687 <p class="whs2"># initialize a mesh with \r
688  the box</p>\r
689 \r
690 <p class="whs1">mesh = smesh.CreateMesh(box)</p>\r
691 \r
692 <p class="whs1">smeshgui.SetName(salome.ObjectToID(mesh), \r
693  &quot;MeshBox&quot;)</p>\r
694 \r
695 <p class="whs1">&nbsp;</p>\r
696 \r
697 <p class="whs2"># add the hypothesis to \r
698  the box</p>\r
699 \r
700 <p class="whs1">print &quot;-------------------------- \r
701  add hypothesis to the box&quot;</p>\r
702 \r
703 <p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>\r
704 \r
705 <p class="whs1">mesh.AddHypothesis(box,hypArea)</p>\r
706 \r
707 <p class="whs1">mesh.AddHypothesis(box,hypVolume)</p>\r
708 \r
709 <p class="whs1">mesh.AddHypothesis(box,regular1D)</p>\r
710 \r
711 <p class="whs1">mesh.AddHypothesis(box,mefisto2D)</p>\r
712 \r
713 <p class="whs2">&nbsp;</p>\r
714 \r
715 <p class="whs2"># compute the mesh</p>\r
716 \r
717 <p class="whs1">print &quot;-------------------------- \r
718  compute the mesh of the box&quot;</p>\r
719 \r
720 <p class="whs1">ret = smesh.Compute(mesh,box)</p>\r
721 \r
722 <p class="whs1">print ret</p>\r
723 \r
724 <p class="whs1">if ret == 0:</p>\r
725 \r
726 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
727  &quot;probleme when computing the mesh&quot;</p>\r
728 \r
729 <p class="whs1">salome.sg.updateObjBrowser(1)</p>\r
730 \r
731 <p class="whs1">mesh.ExportMED(&quot;/tmp/meshMED.med&quot;,0)</p>\r
732 \r
733 <p class="whs2">&nbsp;</p>\r
734 \r
735 <p class="whs4">&nbsp;</p>\r
736 \r
737 <script type="text/javascript" language="javascript1.2">\r
738 <!--\r
739 if (window.writeIntopicBar)\r
740         writeIntopicBar(0);\r
741 //-->\r
742 </script>\r
743 </body>\r
744 </html>\r