Salome HOME
add images in binary
[modules/smesh.git] / doc / salome / gui / SMESH / modifying_meshes.htm
1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
2
3 <html>
4
5 <head>
6 <title>Modifying Meshes</title>
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>
9 <!--
10 P { margin-top:0pt; margin-bottom:0pt; }
11 LI.kadov-P {  }
12 -->
13 </style><style type="text/css">
14 <!--
15 p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
16 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
17 p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
18 h4.whs4 { margin-top:0pt; margin-bottom:0pt; }
19 p.whs5 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
20 p.whs6 { margin-top:0.5pt; margin-bottom:0pt; }
21 p.whs7 { font-family:'Lucida Console' , monospace; }
22 p.whs8 { font-family:'Times New Roman' , serif; }
23 p.whs9 { margin-left:40px; font-family:'Lucida Console' , monospace; }
24 -->
25 </style><script type="text/javascript" language="JavaScript">
26 <!--
27 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
28 {
29   var strNSS = "<style type='text/css'>";
30   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
31   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
32   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
33   strNSS += "h4.whs4 {margin-top:1pt;margin-bottom:1pt; }";
34   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
35   strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
36   strNSS +="</style>";
37   document.write(strNSS);
38 }
39 //-->
40 </script>
41 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
42 <!--
43 function reDo() {
44   if (innerWidth != origWidth || innerHeight != origHeight)
45      location.reload();
46 }
47 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
48         origWidth = innerWidth;
49         origHeight = innerHeight;
50         onresize = reDo;
51 }
52 onerror = null; 
53 //-->
54 </script>
55 <style type="text/css">
56 <!--
57 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
58 p.WebHelpNavBar { text-align:right; }
59 -->
60 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
61 <script type="text/javascript" language="javascript" src="whver.js"></script>
62 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
63 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
64 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
65 <script type="text/javascript" language="javascript1.2">
66 <!--
67 if (window.gbWhTopic)
68 {
69         if (window.setRelStartPage)
70         {
71         addTocInfo("MESH module\nTUI Scripts\nModifying Meshes");
72 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
73 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
74
75         }
76
77
78         if (window.setRelStartPage)
79         {
80         setRelStartPage("index.htm");
81
82                 autoSync(1);
83                 sendSyncInfo();
84                 sendAveInfoOut();
85         }
86
87 }
88 else
89         if (window.gbIE4)
90                 document.location.reload();
91 //-->
92 </script>
93 </head>
94 <body><script type="text/javascript" language="javascript1.2">
95 <!--
96 if (window.writeIntopicBar)
97         writeIntopicBar(4);
98 //-->
99 </script>
100 <h1>Modifying Meshes</h1>
101
102 <h3><a name=bookmark>Adding Nodes and Elements</a></h3>
103
104 <h4>Add Node</h4>
105
106 <p class="whs1">import SMESH</p>
107
108 <p class="whs1">import SMESH_mechanic</p>
109
110 <p class="whs1">&nbsp;</p>
111
112 <p class="whs1">smesh &nbsp;= 
113  SMESH_mechanic.smesh</p>
114
115 <p class="whs1">mesh &nbsp;&nbsp;= 
116  SMESH_mechanic.mesh</p>
117
118 <p class="whs1">salome = SMESH_mechanic.salome</p>
119
120 <p class="whs2">&nbsp;</p>
121
122 <p class="whs2"># add node</p>
123
124 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
125
126 <p class="whs1">if aMeshEditor.AddNode(50, 
127  10, 0) == 1:</p>
128
129 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
130  &quot;Node addition is OK!&quot;</p>
131
132 <p class="whs1">else:</p>
133
134 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
135  &quot;KO node addition.&quot;</p>
136
137 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
138
139 <p class="whs1">salome.sg.updateObjBrowser(1) 
140  </p>
141
142 <p class="whs1">&nbsp;</p>
143
144 <h4>Add Edge</h4>
145
146 <p class="whs1">import SMESH</p>
147
148 <p class="whs1">import SMESH_mechanic</p>
149
150 <p class="whs1">&nbsp;</p>
151
152 <p class="whs1">smesh &nbsp;= 
153  SMESH_mechanic.smesh</p>
154
155 <p class="whs1">mesh &nbsp;&nbsp;= 
156  SMESH_mechanic.mesh</p>
157
158 <p class="whs1">salome = SMESH_mechanic.salome</p>
159
160 <p class="whs2">&nbsp;</p>
161
162 <p class="whs2"># add node</p>
163
164 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
165
166 <p class="whs1">if aMeshEditor.AddNode(50, 
167  10, 0) == 1:</p>
168
169 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
170  &quot;Node addition is OK!&quot;</p>
171
172 <p class="whs1">else:</p>
173
174 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
175  &quot;KO node addition.&quot;</p>
176
177 <p class="whs1">&nbsp;</p>
178
179 <p class="whs2"># add edge</p>
180
181 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
182
183 <p class="whs1">if aMeshEditor.AddEdge([LastNodeId, 
184  38]) == 1:</p>
185
186 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
187  &quot;Edge addition is OK!&quot;</p>
188
189 <p class="whs1">else:</p>
190
191 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
192  &quot;KO edge addition.&quot;</p>
193
194 <p class="whs1">&nbsp;</p>
195
196 <p class="whs1">salome.sg.updateObjBrowser(1) 
197  </p>
198
199 <p class="whs1">&nbsp;</p>
200
201 <h4>Add Triangle</h4>
202
203 <p class="whs1">import SMESH</p>
204
205 <p class="whs1">import SMESH_mechanic</p>
206
207 <p class="whs1">&nbsp;</p>
208
209 <p class="whs1">smesh &nbsp;= 
210  SMESH_mechanic.smesh</p>
211
212 <p class="whs1">mesh &nbsp;&nbsp;= 
213  SMESH_mechanic.mesh</p>
214
215 <p class="whs1">salome = SMESH_mechanic.salome</p>
216
217 <p class="whs1">&nbsp;</p>
218
219 <p class="whs2"># add node</p>
220
221 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
222
223 <p class="whs1">if aMeshEditor.AddNode(50, 
224  10, 0) == 1:</p>
225
226 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
227  &quot;Node addition is OK!&quot;</p>
228
229 <p class="whs1">else:</p>
230
231 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
232  &quot;KO node addition.&quot;</p>
233
234 <p class="whs1">&nbsp;</p>
235
236 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
237
238 <p class="whs2">&nbsp;</p>
239
240 <p class="whs2"># add triangle</p>
241
242 <p class="whs1">if aMeshEditor.AddFace([LastNodeId, 
243  38, 39]) == 1:</p>
244
245 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
246  &quot;Triangle addition is OK!&quot;</p>
247
248 <p class="whs1">else:</p>
249
250 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
251  &quot;KO triangle addition.&quot;</p>
252
253 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
254
255 <p class="whs1">salome.sg.updateObjBrowser(1) 
256  </p>
257
258 <p class="whs1">&nbsp;</p>
259
260 <h4>Add Quadrangle</h4>
261
262 <p class="whs1">import SMESH</p>
263
264 <p class="whs1">import SMESH_mechanic</p>
265
266 <p class="whs1">&nbsp;</p>
267
268 <p class="whs1">smesh &nbsp;= 
269  SMESH_mechanic.smesh</p>
270
271 <p class="whs1">mesh &nbsp;&nbsp;= 
272  SMESH_mechanic.mesh</p>
273
274 <p class="whs1">salome = SMESH_mechanic.salome</p>
275
276 <p class="whs1">&nbsp;</p>
277
278 <p class="whs2"># add node</p>
279
280 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
281
282 <p class="whs1">if aMeshEditor.AddNode(50, 
283  10, 0) == 1:</p>
284
285 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
286  &quot;Node addition is OK!&quot;</p>
287
288 <p class="whs1">else:</p>
289
290 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
291  &quot;KO node addition.&quot;</p>
292
293 <p class="whs1">&nbsp;</p>
294
295 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
296
297 <p class="whs2">&nbsp;</p>
298
299 <p class="whs2"># add quadrangle</p>
300
301 <p class="whs1">if aMeshEditor.AddNode(40, 
302  20, 0) == 1:</p>
303
304 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
305  &quot;Node addition is OK!&quot;</p>
306
307 <p class="whs1">else:</p>
308
309 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
310  &quot;KO node addition.&quot;</p>
311
312 <p class="whs1">if aMeshEditor.AddFace([mesh.NbNodes(), 
313  LastNodeId, 38, 39]) == 1:</p>
314
315 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
316  &quot;Quadrangle addition is OK!&quot;</p>
317
318 <p class="whs1">else:</p>
319
320 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
321  &quot;KO quadrangle addition.&quot;</p>
322
323 <p class="whs1">&nbsp;</p>
324
325 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
326  </p>
327
328 <p class="whs2">&nbsp;</p>
329
330 <h4>Add Tetrahedron</h4>
331
332 <p class="whs1">import SMESH</p>
333
334 <p class="whs1">import SMESH_mechanic</p>
335
336 <p class="whs1">&nbsp;</p>
337
338 <p class="whs1">smesh &nbsp;= 
339  SMESH_mechanic.smesh</p>
340
341 <p class="whs1">mesh &nbsp;&nbsp;= 
342  SMESH_mechanic.mesh</p>
343
344 <p class="whs1">salome = SMESH_mechanic.salome</p>
345
346 <p class="whs1">&nbsp;</p>
347
348 <p class="whs2"># add node</p>
349
350 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
351
352 <p class="whs1">if aMeshEditor.AddNode(50, 
353  10, 0) == 1:</p>
354
355 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
356  &quot;Node addition is OK!&quot;</p>
357
358 <p class="whs1">else:</p>
359
360 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
361  &quot;KO node addition.&quot;</p>
362
363 <p class="whs1">&nbsp;</p>
364
365 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
366
367 <p class="whs2">&nbsp;</p>
368
369 <p class="whs2"># add tetrahedron</p>
370
371 <p class="whs1">if aMeshEditor.AddVolume([LastNodeId, 
372  38, 39, 246]) == 1:</p>
373
374 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
375  &quot;Tetrahedron addition is OK!&quot;</p>
376
377 <p class="whs1">else:</p>
378
379 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
380  &quot;KO tetrahedron addition.&quot;</p>
381
382 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
383
384 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
385  </p>
386
387 <p class="whs2">&nbsp;</p>
388
389 <h4>Add Hexahedron</h4>
390
391 <p class="whs1">import SMESH</p>
392
393 <p class="whs1">import SMESH_mechanic</p>
394
395 <p class="whs1">&nbsp;</p>
396
397 <p class="whs1">smesh &nbsp;= 
398  SMESH_mechanic.smesh</p>
399
400 <p class="whs1">mesh &nbsp;&nbsp;= 
401  SMESH_mechanic.mesh</p>
402
403 <p class="whs1">salome = SMESH_mechanic.salome</p>
404
405 <p class="whs1">&nbsp;</p>
406
407 <p class="whs2"># add nodes</p>
408
409 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
410
411 <p class="whs1">if aMeshEditor.AddNode(50, 
412  10, 0) == 1:</p>
413
414 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
415  &quot;Node addition is OK!&quot;</p>
416
417 <p class="whs1">else:</p>
418
419 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
420  &quot;KO node addition.&quot;</p>
421
422 <p class="whs1">aNodeId1 = mesh.NbNodes()</p>
423
424 <p class="whs1">&nbsp;</p>
425
426 <p class="whs1">if aMeshEditor.AddNode(47, 
427  12, 0) == 1:</p>
428
429 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
430  &quot;Node addition is OK!&quot;</p>
431
432 <p class="whs1">else:</p>
433
434 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
435  &quot;KO node addition.&quot;</p>
436
437 <p class="whs1">aNodeId2 = mesh.NbNodes()</p>
438
439 <p class="whs1">&nbsp;</p>
440
441 <p class="whs1">if aMeshEditor.AddNode(50, 
442  10, 10) == 1:</p>
443
444 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
445  &quot;Node addition is OK!&quot;</p>
446
447 <p class="whs1">else:</p>
448
449 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
450  &quot;KO node addition.&quot;</p>
451
452 <p class="whs1">aNodeId3 = mesh.NbNodes()</p>
453
454 <p class="whs1">&nbsp;</p>
455
456 <p class="whs1">if aMeshEditor.AddNode(47, 
457  12, 10) == 1:</p>
458
459 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
460  &quot;Node addition is OK!&quot;</p>
461
462 <p class="whs1">else:</p>
463
464 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
465  &quot;KO node addition.&quot;</p>
466
467 <p class="whs1">aNodeId4 = mesh.NbNodes()</p>
468
469 <p class="whs1">&nbsp;</p>
470
471 <p class="whs2"># add hexahedron</p>
472
473 <p class="whs1">if aMeshEditor.AddVolume([aNodeId2, 
474  aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:</p>
475
476 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
477  &quot;Hexahedron addition is OK!&quot;</p>
478
479 <p class="whs1">else:</p>
480
481 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
482  &quot;KO Hexahedron addition.&quot;</p>
483
484 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
485
486 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
487  </p>
488
489 <p class="whs2">&nbsp;</p>
490
491 <h4>Add Polygon</h4>
492
493 <p class="whs1">import salome</p>
494
495 <p class="whs1">import geompy</p>
496
497 <p class="whs1">import math</p>
498
499 <p class="whs1">&nbsp;</p>
500
501 <p class="whs1">import StdMeshers</p>
502
503 <p class="whs1">&nbsp;</p>
504
505 <p class="whs2"># GEOM module </p>
506
507 <p class="whs1">shape_mesh = geompy.MakeCylinderRH(13, 
508  77)</p>
509
510 <p class="whs1">geompy.addToStudy(shape_mesh, 
511  &quot;cylinder&quot;)</p>
512
513 <p class="whs1">&nbsp;</p>
514
515 <p class="whs2"># SMESH module</p>
516
517 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
518  &quot;SMESH&quot;)</p>
519
520 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
521
522 <p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
523
524 <p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
525
526 <p class="whs1">&nbsp;</p>
527
528 <p class="whs2"># a method to build a polygonal 
529  mesh element with nb_vert angles:</p>
530
531 <p class="whs1">def MakePolygon 
532  (a_mesh, x0, y0, z0, radius, nb_vert):</p>
533
534 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;node_start_id 
535  = a_mesh.NbNodes() + 1</p>
536
537 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;al 
538  = 2.0 * math.pi / nb_vert</p>
539
540 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;node_ids 
541  = []</p>
542
543 <p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;</p>
544
545 <p class="whs2"># Create nodes for a polyhedron</p>
546
547 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;for 
548  ii in range(nb_vert):</p>
549
550 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(x0 
551  + radius * math.cos(ii*al),</p>
552
553 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y0 
554  + radius * math.sin(ii*al),</p>
555
556 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;z0)</p>
557
558 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node_ids.append(node_start_id 
559  + ii)</p>
560
561 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
562
563 <p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;</p>
564
565 <p class="whs2"># Create a polygon</p>
566
567 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddPolygonalFace(node_ids)</p>
568
569 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;return 
570  0</p>
571
572 <p class="whs1">&nbsp;</p>
573
574 <p class="whs2"># Create three polygons</p>
575
576 <p class="whs1">MakePolygon(mesh, 
577  0, 0, &nbsp;0, 
578  30, 13)</p>
579
580 <p class="whs1">MakePolygon(mesh, 
581  0, 0, 10, 21, &nbsp;9)</p>
582
583 <p class="whs1">MakePolygon(mesh, 
584  0, 0, 20, 13, &nbsp;6)</p>
585
586 <p class="whs1">&nbsp;</p>
587
588 <p class="whs1">salome.sg.updateObjBrowser(1) 
589  &nbsp;</p>
590
591 <p class="whs1">&nbsp;</p>
592
593 <h4>Add polyhedron</h4>
594
595 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
596  salome</span></p>
597
598 <p class="whs1">import geompy</p>
599
600 <p class="whs1">import math</p>
601
602 <p class="whs1">&nbsp;</p>
603
604 <p class="whs1">#import SMESH</p>
605
606 <p class="whs1">import StdMeshers</p>
607
608 <p class="whs1">&nbsp;</p>
609
610 <p class="whs3"># GEOM</p>
611
612 <p class="whs1">shape_mesh = geompy.MakeCylinderRH(13, 
613  77)</p>
614
615 <p class="whs1">geompy.addToStudy(shape_mesh, 
616  &quot;cylinder&quot;)</p>
617
618 <p class="whs1">&nbsp;</p>
619
620 <p class="whs3"># SMESH</p>
621
622 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
623  &quot;SMESH&quot;)</p>
624
625 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
626
627 <p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
628
629 <p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
630
631 <p class="whs1">&nbsp;</p>
632
633 <p class="whs3"># Now we are going 
634  to create a 12-hedron:</p>
635
636 <p class="whs3">&nbsp;</p>
637
638 <p class="whs3"># Create nodes for 
639  polyhedron</p>
640
641 <p class="whs1">al = 2 * math.pi 
642  / 5.0</p>
643
644 <p class="whs1">cosal = math.cos(al)</p>
645
646 <p class="whs1">&nbsp;</p>
647
648 <p class="whs1">aa = 13</p>
649
650 <p class="whs1">rr = aa / (2.0 * 
651  math.sin(al/2.0))</p>
652
653 <p class="whs1">dr = 2.0 * rr * 
654  cosal</p>
655
656 <p class="whs1">r1 = rr + dr</p>
657
658 <p class="whs1">dh = rr * math.sqrt(2.0 
659  * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
660
661 <p class="whs1">hh = 2.0 * dh - 
662  dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
663
664 <p class="whs1">&nbsp;</p>
665
666 <p class="whs1">for i in range(5):</p>
667
668 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(rr*math.cos(i*al), 
669  rr*math.sin(i*al), &nbsp;0) 
670  <span style="font-family: 'Times New Roman', serif;"># 1,3,5,7, 9 # bottom</span></p>
671
672 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(r1*math.cos(i*al), 
673  r1*math.sin(i*al), dh) <span style="font-family: 'Times New Roman', serif;"># 
674  2,4,6,8,10 # above bottom</span></p>
675
676 <p class="whs1">&nbsp;</p>
677
678 <p class="whs1">for i in range(5):</p>
679
680 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(rr*math.cos(i*al 
681  + al/2.0),</p>
682
683 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rr*math.sin(i*al 
684  + al/2.0), hh) # 11,13,15,17,19 <span style="font-family: 'Times New Roman', serif;"># 
685  top</span></p>
686
687 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;MeshEditor.AddNode(r1*math.cos(i*al 
688  + al/2.0),</p>
689
690 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1*math.sin(i*al 
691  + al/2.0), hh - dh) # 12,14,16,18,20 <span style="font-family: 'Times New Roman', serif;"># 
692  below top</span></p>
693
694 <p class="whs1">&nbsp;</p>
695
696 <p class="whs3"># Create a polyhedral 
697  volume</p>
698
699 <p class="whs1">MeshEditor.AddPolyhedralVolume([ 
700  1, &nbsp;3, &nbsp;5, 
701  &nbsp;7, &nbsp;9, 
702  &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
703  bottom</span></p>
704
705 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1, 
706  &nbsp;2, 12, 
707  &nbsp;4, &nbsp;3, 
708  &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
709  .</span></p>
710
711 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3, 
712  &nbsp;4, 14, 
713  &nbsp;6, &nbsp;5, 
714  &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
715  .</span></p>
716
717 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5, 
718  &nbsp;6, 16, 
719  &nbsp;8, &nbsp;7, 
720  &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
721  . above bottom</span></p>
722
723 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7, 
724  &nbsp;8, 18, 
725  10, &nbsp;9, 
726  &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
727  .</span></p>
728
729 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9, 
730  10, 20, &nbsp;2, 
731  &nbsp;1, &nbsp;<span 
732  style="font-family: 'Times New Roman', serif;"># 
733  .</span></p>
734
735 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11, 
736  12, &nbsp;4, 
737  14, 13, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
738  -</span></p>
739
740 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13, 
741  14, &nbsp;6, 
742  16, 15, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
743  -</span></p>
744
745 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;15, 
746  16, &nbsp;8, 
747  18, 17, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
748  - below top</span></p>
749
750 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17, 
751  18, 10, 20, 19, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
752  -</span></p>
753
754 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;19, 
755  20, &nbsp;2, 
756  12, 11, &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
757  -</span></p>
758
759 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11, 
760  13, 15, 17, 19], <span style="font-family: 'Times New Roman', serif;"># 
761  top</span></p>
762
763 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[5,5,5,5,5,5,5,5,5,5,5,5])</p>
764
765 <p class="whs1">&nbsp;</p>
766
767 <p class="whs1">salome.sg.updateObjBrowser(1) 
768  &nbsp;</p>
769
770 <p class="whs1">&nbsp;</p>
771
772 <h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
773
774 <h4 class="whs4">Removing Nodes</h4>
775
776 <p class="whs2">&nbsp;</p>
777
778 <p class="whs1">import SMESH</p>
779
780 <p class="whs1">import SMESH_mechanic</p>
781
782 <p class="whs1">&nbsp;</p>
783
784 <p class="whs1">smesh &nbsp;= 
785  SMESH_mechanic.smesh</p>
786
787 <p class="whs1">mesh &nbsp;&nbsp;= 
788  SMESH_mechanic.mesh</p>
789
790 <p class="whs1">salome = SMESH_mechanic.salome</p>
791
792 <p class="whs2">&nbsp;</p>
793
794 <p class="whs2"># add node</p>
795
796 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
797
798 <p class="whs1">if aMeshEditor.RemoveNodes([246, 
799  255]) == 1:</p>
800
801 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
802  &quot;Node removing is OK!&quot;</p>
803
804 <p class="whs1">else:</p>
805
806 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print 
807  &quot;KO node removing.&quot;</p>
808
809 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
810
811 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
812  </p>
813
814 <p class="whs2">&nbsp;</p>
815
816 <h4>Removing Elements</h4>
817
818 <p class="whs1">import SMESH</p>
819
820 <p class="whs1">import SMESH_mechanic</p>
821
822 <p class="whs1">&nbsp;</p>
823
824 <p class="whs1">smesh &nbsp;= 
825  SMESH_mechanic.smesh</p>
826
827 <p class="whs1">mesh &nbsp;&nbsp;= 
828  SMESH_mechanic.mesh</p>
829
830 <p class="whs1">salome = SMESH_mechanic.salome</p>
831
832 <p class="whs1">&nbsp;</p>
833
834 <p class="whs1">anEditor = mesh.GetMeshEditor()</p>
835
836 <p class="whs1">anEditor.RemoveElements([850, 
837  859, 814])</p>
838
839 <p class="whs1">&nbsp;</p>
840
841 <p class="whs1">salome.sg.updateObjBrowser(1) 
842  </p>
843
844 <p class="whs1">&nbsp;</p>
845
846 <h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
847
848 <p class="whs5">import SMESH</p>
849
850 <p class="whs5">import SMESH_mechanic</p>
851
852 <p class="whs5">&nbsp;</p>
853
854 <p class="whs5">mesh &nbsp;&nbsp;= 
855  SMESH_mechanic.mesh</p>
856
857 <p class="whs5">salome = SMESH_mechanic.salome</p>
858
859 <p class="whs5">&nbsp;</p>
860
861 <p class="whs5">anEditor = mesh.GetMeshEditor()</p>
862
863 <p class="whs5">anEditor.RenumberNodes()</p>
864
865 <p class="whs5">&nbsp;</p>
866
867 <p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
868  </p>
869
870 <p class="whs6">&nbsp;</p>
871
872 <p>&nbsp;</p>
873
874 <h3><a name=bookmark3>Moving Nodes</a></h3>
875
876 <p class="whs1">import SMESH</p>
877
878 <p class="whs1">import SMESH_mechanic</p>
879
880 <p class="whs1">&nbsp;</p>
881
882 <p class="whs1">smesh &nbsp;= 
883  SMESH_mechanic.smesh</p>
884
885 <p class="whs1">mesh &nbsp;&nbsp;= 
886  SMESH_mechanic.mesh</p>
887
888 <p class="whs1">salome = SMESH_mechanic.salome</p>
889
890 <p class="whs1">&nbsp;</p>
891
892 <p class="whs2"># move node</p>
893
894 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
895
896 <p class="whs1">aMeshEditor.MoveNode(38, 
897  20, 10, 0)</p>
898
899 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
900
901 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
902  </p>
903
904 <p class="whs2">&nbsp;</p>
905
906 <h3><a name=bookmark4>Diagonal Inversion</a></h3>
907
908 <p class="whs1">import SMESH</p>
909
910 <p class="whs1">import SMESH_mechanic</p>
911
912 <p class="whs1">&nbsp;</p>
913
914 <p class="whs1">smesh &nbsp;= 
915  SMESH_mechanic.smesh</p>
916
917 <p class="whs1">mesh &nbsp;&nbsp;= 
918  SMESH_mechanic.mesh</p>
919
920 <p class="whs1">salome = SMESH_mechanic.salome</p>
921
922 <p class="whs1">&nbsp;</p>
923
924 <p class="whs2"># inverse diagonal</p>
925
926 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
927
928 <p class="whs1">aMeshEditor.InverseDiag(700, 
929  642)</p>
930
931 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;</p>
932
933 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
934  </p>
935
936 <p class="whs2">&nbsp;</p>
937
938 <h3><a name=bookmark5>Uniting two Triangles</a></h3>
939
940 <p class="whs7">import SMESH</p>
941
942 <p class="whs7">import SMESH_mechanic</p>
943
944 <p class="whs7">&nbsp;</p>
945
946 <p class="whs7">smesh &nbsp;= 
947  SMESH_mechanic.smesh</p>
948
949 <p class="whs7">mesh &nbsp;&nbsp;= 
950  SMESH_mechanic.mesh</p>
951
952 <p class="whs7">salome = SMESH_mechanic.salome</p>
953
954 <p class="whs7">&nbsp;</p>
955
956 <p># delete diagonal</p>
957
958 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
959
960 <p class="whs7">aMeshEditor.DeleteDiag(700, 
961  642)</p>
962
963 <p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
964
965 <p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
966  </p>
967
968 <p>&nbsp;</p>
969
970 <h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
971
972 <p class="whs7">import SMESH</p>
973
974 <p class="whs7">import SMESH_mechanic</p>
975
976 <p class="whs7">&nbsp;</p>
977
978 <p class="whs7">smesh &nbsp;= 
979  SMESH_mechanic.smesh</p>
980
981 <p class="whs7">mesh &nbsp;&nbsp;= 
982  SMESH_mechanic.mesh</p>
983
984 <p class="whs7">salome = SMESH_mechanic.salome</p>
985
986 <p class="whs7">&nbsp;</p>
987
988 <p># unite a set of triangles</p>
989
990 <p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
991
992 <p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
993
994 <p class="whs7">&nbsp;</p>
995
996 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
997
998 <p class="whs7">aMeshEditor.TriToQuad([1145, 
999  1147, 1159, 1135], aFunctor, 60)</p>
1000
1001 <p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
1002
1003 <p class="whs7">salome.sg.updateObjBrowser(1) 
1004  </p>
1005
1006 <p class="whs7">&nbsp;</p>
1007
1008 <h3><a name=bookmark12>Orientation</a></h3>
1009
1010 <p class="whs7"><span style="font-family: 'Lucida Console', monospace;">import 
1011  salome</span></p>
1012
1013 <p class="whs7">import geompy</p>
1014
1015 <p class="whs7">&nbsp;</p>
1016
1017 <p class="whs7">import StdMeshers</p>
1018
1019 <p class="whs7">&nbsp;</p>
1020
1021 <p class="whs8"># GEOM module</p>
1022
1023 <p class="whs7">shape_mesh = geompy.MakeCylinderRH(13, 
1024  77)</p>
1025
1026 <p class="whs7">geompy.addToStudy(shape_mesh, 
1027  &quot;cylinder&quot;)</p>
1028
1029 <p class="whs7">&nbsp;</p>
1030
1031 <p class="whs8"># SMESH module</p>
1032
1033 <p class="whs7">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
1034  &quot;SMESH&quot;)</p>
1035
1036 <p class="whs7">smesh.SetCurrentStudy(salome.myStudy)</p>
1037
1038 <p class="whs7">mesh = smesh.CreateMesh(shape_mesh)</p>
1039
1040 <p class="whs7">MeshEditor = mesh.GetMeshEditor()</p>
1041
1042 <p class="whs7">&nbsp;</p>
1043
1044 <p class="whs8"># build five quadrangles:</p>
1045
1046 <p class="whs7">node_start_id = mesh.NbNodes() 
1047  + 1</p>
1048
1049 <p class="whs7">dx = 10</p>
1050
1051 <p class="whs7">dy = 20</p>
1052
1053 <p class="whs7">&nbsp;</p>
1054
1055 <p class="whs7">MeshEditor.AddNode(0.0 
1056  * dx, 0, 0) # 1</p>
1057
1058 <p class="whs7">MeshEditor.AddNode(1.0 
1059  * dx, 0, 0) # 2</p>
1060
1061 <p class="whs7">MeshEditor.AddNode(2.0 
1062  * dx, 0, 0) # 3</p>
1063
1064 <p class="whs7">MeshEditor.AddNode(3.0 
1065  * dx, 0, 0) # 4</p>
1066
1067 <p class="whs7">MeshEditor.AddNode(4.0 
1068  * dx, 0, 0) # 5</p>
1069
1070 <p class="whs7">MeshEditor.AddNode(5.0 
1071  * dx, 0, 0) # 6</p>
1072
1073 <p class="whs7">&nbsp;</p>
1074
1075 <p class="whs7">MeshEditor.AddNode(0.0 
1076  * dx, dy, 0) # 7</p>
1077
1078 <p class="whs7">MeshEditor.AddNode(1.0 
1079  * dx, dy, 0) # 8</p>
1080
1081 <p class="whs7">MeshEditor.AddNode(2.0 
1082  * dx, dy, 0) # 9</p>
1083
1084 <p class="whs7">MeshEditor.AddNode(3.0 
1085  * dx, dy, 0) # 10</p>
1086
1087 <p class="whs7">MeshEditor.AddNode(4.0 
1088  * dx, dy, 0) # 11</p>
1089
1090 <p class="whs7">MeshEditor.AddNode(5.0 
1091  * dx, dy, 0) # 12</p>
1092
1093 <p class="whs7">&nbsp;</p>
1094
1095 <p class="whs7">MeshEditor.AddFace([1, 
1096  2, &nbsp;8, &nbsp;7])</p>
1097
1098 <p class="whs7">MeshEditor.AddFace([2, 
1099  3, &nbsp;9, &nbsp;8])</p>
1100
1101 <p class="whs7">MeshEditor.AddFace([3, 
1102  4, 10, &nbsp;9])</p>
1103
1104 <p class="whs7">MeshEditor.AddFace([4, 
1105  5, 11, 10])</p>
1106
1107 <p class="whs7">MeshEditor.AddFace([5, 
1108  6, 12, 11])</p>
1109
1110 <p class="whs7">&nbsp;</p>
1111
1112 <p class="whs8"># Change orientation 
1113  of the second and the fourth faces.</p>
1114
1115 <p class="whs7">MeshEditor.Reorient([2, 
1116  4])</p>
1117
1118 <p class="whs7">&nbsp;</p>
1119
1120 <p class="whs7">salome.sg.updateObjBrowser(1) 
1121  &nbsp;</p>
1122
1123 <p class="whs7">&nbsp;</p>
1124
1125 <h3><a name=bookmark7>Cutting Quadrangles</a></h3>
1126
1127 <p class="whs7">import SMESH</p>
1128
1129 <p class="whs7">import SMESH_mechanic</p>
1130
1131 <p class="whs7">&nbsp;</p>
1132
1133 <p class="whs7">smesh &nbsp;= 
1134  SMESH_mechanic.smesh</p>
1135
1136 <p class="whs7">mesh &nbsp;&nbsp;= 
1137  SMESH_mechanic.mesh</p>
1138
1139 <p class="whs7">salome = SMESH_mechanic.salome</p>
1140
1141 <p class="whs7">&nbsp;</p>
1142
1143 <p class="whs8"># unite a set of triangles</p>
1144
1145 <p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
1146
1147 <p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
1148
1149 <p class="whs7">&nbsp;</p>
1150
1151 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1152
1153 <p class="whs7">aMeshEditor.QuadToTri([405, 
1154  406], aFunctor)</p>
1155
1156 <p class="whs7">&nbsp;&nbsp;&nbsp;&nbsp;</p>
1157
1158 <p class="whs7">salome.sg.updateObjBrowser(1) 
1159  </p>
1160
1161 <p class="whs8">&nbsp;</p>
1162
1163 <h3><a name=bookmark8>Smoothing</a></h3>
1164
1165 <p class="whs7">import SMESH</p>
1166
1167 <p class="whs7">import SMESH_mechanic</p>
1168
1169 <p class="whs7">&nbsp;</p>
1170
1171 <p class="whs7">smesh &nbsp;= 
1172  SMESH_mechanic.smesh</p>
1173
1174 <p class="whs7">mesh &nbsp;&nbsp;= 
1175  SMESH_mechanic.mesh</p>
1176
1177 <p class="whs7">salome = SMESH_mechanic.salome</p>
1178
1179 <p class="whs7">&nbsp;</p>
1180
1181 <p class="whs8"># smooth</p>
1182
1183 <p class="whs7">FacesSmooth = [911, 
1184  931, 950, 864, 932]</p>
1185
1186 <p class="whs7">GroupSmooth = mesh.CreateGroup(SMESH.FACE,&quot;Group 
1187  of faces (smooth)&quot;)</p>
1188
1189 <p class="whs7">GroupSmooth.Add(FacesSmooth)</p>
1190
1191 <p class="whs7">&nbsp;</p>
1192
1193 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1194
1195 <p class="whs7">aMeshEditor.SmoothObject(GroupSmooth, 
1196  [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
1197
1198 <p class="whs7">&nbsp;</p>
1199
1200 <p class="whs7">salome.sg.updateObjBrowser(1) 
1201  </p>
1202
1203 <p class="whs7">&nbsp;</p>
1204
1205 <p class="whs7">&nbsp;</p>
1206
1207 <h3><a name=bookmark9>Extrusion</a></h3>
1208
1209 <p class="whs8">import SMESH</p>
1210
1211 <p class="whs8">import SMESH_mechanic</p>
1212
1213 <p class="whs8">&nbsp;</p>
1214
1215 <p class="whs8">smesh &nbsp;= 
1216  SMESH_mechanic.smesh</p>
1217
1218 <p class="whs8">mesh &nbsp;&nbsp;= 
1219  SMESH_mechanic.mesh</p>
1220
1221 <p class="whs8">salome = SMESH_mechanic.salome</p>
1222
1223 <p class="whs7">&nbsp;</p>
1224
1225 <p class="whs8"># extrusion of the group</p>
1226
1227 <p class="whs8">point = SMESH.PointStruct(0, 
1228  0, 5)</p>
1229
1230 <p class="whs8">vector = SMESH.DirStruct(point)</p>
1231
1232 <p class="whs8">FacesTriToQuad = [2381, 
1233  2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393, 
1234  2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405, 
1235  2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 
1236  2418, 2419, 2420, 2421, 2422]</p>
1237
1238 <p class="whs8">&nbsp;</p>
1239
1240 <p class="whs8">GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,&quot;Group 
1241  of faces (quad)&quot;)</p>
1242
1243 <p class="whs8">GroupTriToQuad.Add(FacesTriToQuad)</p>
1244
1245 <p class="whs8">&nbsp;</p>
1246
1247 <p class="whs8">aMeshEditor = mesh.GetMeshEditor()</p>
1248
1249 <p class="whs8">aMeshEditor.ExtrusionSweepObject(GroupTriToQuad, 
1250  vector, 5)</p>
1251
1252 <p class="whs8">&nbsp;</p>
1253
1254 <p class="whs8">salome.sg.updateObjBrowser(1) 
1255  </p>
1256
1257 <p class="whs8">&nbsp;</p>
1258
1259 <h3><a name=bookmark10>Extrusion along a Path</a></h3>
1260
1261 <p class="whs7">import geompy</p>
1262
1263 <p class="whs7">import smesh</p>
1264
1265 <p class="whs7">import salome</p>
1266
1267 <p class="whs7">import SMESH</p>
1268
1269 <p class="whs7">&nbsp;</p>
1270
1271 <p class="whs8"># create a face to be 
1272  meshed</p>
1273
1274 <p class="whs7">px = geompy.MakeVertex(100., 
1275  0. &nbsp;, 0. 
1276  &nbsp;)</p>
1277
1278 <p class="whs7">py = geompy.MakeVertex(0. 
1279  &nbsp;, 100., 
1280  0. &nbsp;)</p>
1281
1282 <p class="whs7">pz = geompy.MakeVertex(0. 
1283  &nbsp;, 0. &nbsp;, 
1284  100.)</p>
1285
1286 <p class="whs7">&nbsp;</p>
1287
1288 <p class="whs7">vxy = geompy.MakeVector(px, 
1289  py)</p>
1290
1291 <p class="whs7">arc = geompy.MakeArc(py, 
1292  pz, px)</p>
1293
1294 <p class="whs7">&nbsp;</p>
1295
1296 <p class="whs7">wire = geompy.MakeWire([vxy, 
1297  arc])</p>
1298
1299 <p class="whs7">isPlanarFace = 1</p>
1300
1301 <p class="whs7">&nbsp;</p>
1302
1303 <p class="whs7">face1 = geompy.MakeFace(wire, 
1304  isPlanarFace)</p>
1305
1306 <p class="whs7">id_face1 = geompy.addToStudy(face1, 
1307  &quot;Face1&quot;)</p>
1308
1309 <p class="whs7">&nbsp;</p>
1310
1311 <p class="whs8"># create a 2D mesh on 
1312  the face</p>
1313
1314 <p class="whs7">trias = smesh.Mesh(face1, 
1315  &quot;Face : 2D mesh&quot;)</p>
1316
1317 <p class="whs7">&nbsp;</p>
1318
1319 <p class="whs7">algo = trias.Segment()</p>
1320
1321 <p class="whs7">algo.NumberOfSegments(6)</p>
1322
1323 <p class="whs7">&nbsp;</p>
1324
1325 <p class="whs7">algo = trias.Triangle()</p>
1326
1327 <p class="whs7">algo.LengthFromEdges()</p>
1328
1329 <p class="whs7">&nbsp;</p>
1330
1331 <p class="whs7">trias.Compute()</p>
1332
1333 <p class="whs7">&nbsp;</p>
1334
1335 <p class="whs8"># create a path mesh</p>
1336
1337 <p class="whs7">px1 = geompy.MakeVertex(100., 
1338  100. &nbsp;, 
1339  0. &nbsp;)</p>
1340
1341 <p class="whs7">py1 = geompy.MakeVertex(-100. 
1342  &nbsp;, -100., 
1343  0. &nbsp;)</p>
1344
1345 <p class="whs7">pz1 = geompy.MakeVertex(0. 
1346  &nbsp;, 0. &nbsp;, 
1347  50.)</p>
1348
1349 <p class="whs7">&nbsp;</p>
1350
1351 <p class="whs7">circle = geompy.MakeCircleThreePnt(py1, 
1352  pz1, px1)</p>
1353
1354 <p class="whs7">id_circle = geompy.addToStudy(circle, 
1355  &quot;Path&quot;)</p>
1356
1357 <p class="whs7">&nbsp;</p>
1358
1359 <p class="whs7">circlemesh = smesh.Mesh(circle, 
1360  &quot;Path mesh&quot;)</p>
1361
1362 <p class="whs7">&nbsp;</p>
1363
1364 <p class="whs7">algo = circlemesh.Segment()</p>
1365
1366 <p class="whs7">algo.NumberOfSegments(10)</p>
1367
1368 <p class="whs7">&nbsp;</p>
1369
1370 <p class="whs7">circlemesh.Compute()</p>
1371
1372 <p class="whs7">&nbsp;</p>
1373
1374 <p class="whs8"># extrusion of the mesh</p>
1375
1376 <p class="whs8"># The mesh &quot;trias&quot; 
1377  will be extruded along another mesh, which is a sub-mesh of &quot;circlemesh&quot;,</p>
1378
1379 <p class="whs8"><span style="font-family: 'Times New Roman', serif;"># 
1380  corresponding to geometry &quot;circle&quot;. In this particular case 
1381  the path mesh will be the whole &quot;circlemesh&quot;</span></p>
1382
1383 <p class="whs8">&nbsp;</p>
1384
1385 <p class="whs7">aMeshEditor = trias.GetMesh().GetMeshEditor()</p>
1386
1387 <p class="whs7">aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(), 
1388  circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
1389
1390 <p class="whs7">&nbsp;</p>
1391
1392 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1393  </p>
1394
1395 <h3><a name=bookmark11>Revolution</a></h3>
1396
1397 <p class="whs7">import SMESH</p>
1398
1399 <p class="whs7">import SMESH_mechanic</p>
1400
1401 <p class="whs7">import math</p>
1402
1403 <p class="whs7">&nbsp;</p>
1404
1405 <p class="whs7">smesh &nbsp;= 
1406  SMESH_mechanic.smesh</p>
1407
1408 <p class="whs7">mesh &nbsp;&nbsp;= 
1409  SMESH_mechanic.mesh</p>
1410
1411 <p class="whs7">salome = SMESH_mechanic.salome</p>
1412
1413 <p class="whs8">&nbsp;</p>
1414
1415 <p class="whs8"># rotate a sweep object</p>
1416
1417 <p class="whs7">FacesRotate = [492, 
1418  493, 502, 503]</p>
1419
1420 <p class="whs7">GroupRotate = mesh.CreateGroup(SMESH.FACE,&quot;Group 
1421  of faces (rotate)&quot;)</p>
1422
1423 <p class="whs7">GroupRotate.Add(FacesRotate)</p>
1424
1425 <p class="whs7">angle45 = &nbsp;45*math.pi/180</p>
1426
1427 <p class="whs7">axisXYZ = SMESH.AxisStruct(-38.3128, 
1428  -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
1429
1430 <p class="whs7">&nbsp;</p>
1431
1432 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1433
1434 <p class="whs7">aMeshEditor.RotationSweepObject(GroupRotate, 
1435  axisXYZ, angle45, 4, 1e-5)</p>
1436
1437 <p class="whs7">&nbsp;</p>
1438
1439 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1440  </p>
1441
1442 <p class="whs8">&nbsp;</p>
1443
1444 <h3><a name=bookmark13>Pattern Mapping</a></h3>
1445
1446 <p class="whs7">import salome</p>
1447
1448 <p class="whs7">import geompy</p>
1449
1450 <p class="whs7">import SMESH, smesh</p>
1451
1452 <p class="whs7">&nbsp;</p>
1453
1454 <p class="whs7">geompy.init_geom(salome.myStudy)</p>
1455
1456 <p class="whs7">smesh.smesh.SetCurrentStudy(salome.myStudy)</p>
1457
1458 <p class="whs7">&nbsp;</p>
1459
1460 <p class="whs8"># define geometry</p>
1461
1462 <p class="whs7">Box_1 = geompy.MakeBoxDXDYDZ(200, 
1463  200, 200)</p>
1464
1465 <p class="whs7">geompy.addToStudy(Box_1, 
1466  &quot;Box_1&quot;)</p>
1467
1468 <p class="whs7">&nbsp;</p>
1469
1470 <p class="whs7">faces = geompy.SubShapeAll(Box_1, 
1471  geompy.ShapeType[&quot;FACE&quot;])</p>
1472
1473 <p class="whs7">Face_1 = faces[0]</p>
1474
1475 <p class="whs7">Face_2 = faces[1]</p>
1476
1477 <p class="whs7">geompy.addToStudyInFather(Box_1, 
1478  Face_1, &quot;Face_1&quot;)</p>
1479
1480 <p class="whs7">geompy.addToStudyInFather(Box_1, 
1481  Face_2, &quot;Face_2&quot;)</p>
1482
1483 <p class="whs7">&nbsp;</p>
1484
1485 <p class="whs8"># build quadrangle mesh 
1486  3x3 on Face_1</p>
1487
1488 <p class="whs7">Mesh_1 = smesh.Mesh(Face_1)</p>
1489
1490 <p class="whs7">Wire_discretisation 
1491  = Mesh_1.Segment()</p>
1492
1493 <p class="whs7">Wire_discretisation.NumberOfSegments(3)</p>
1494
1495 <p class="whs7">Mesh_1.Quadrangle()</p>
1496
1497 <p class="whs7">&nbsp;</p>
1498
1499 <p class="whs7">isDone = Mesh_1.Compute()</p>
1500
1501 <p class="whs7">if not isDone: print 
1502  'Mesh Mesh_1 : computation failed'</p>
1503
1504 <p class="whs7">&nbsp;</p>
1505
1506 <p class="whs8"># pattern the mesh</p>
1507
1508 <p class="whs7">Mesh_2 = smesh.Mesh(Face_2)</p>
1509
1510 <p class="whs7">Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments', 
1511  'libStdMeshersEngine.so')</p>
1512
1513 <p class="whs7">Nb_Segments_1.SetNumberOfSegments(1)</p>
1514
1515 <p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2, 
1516  Nb_Segments_1)</p>
1517
1518 <p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2, 
1519  Wire_discretisation.GetAlgorithm())</p>
1520
1521 <p class="whs7">Triangle_Mefisto = 
1522  Mesh_2.Triangle()</p>
1523
1524 <p class="whs7">Max_Element_Area = 
1525  Triangle_Mefisto.MaxElementArea(240)</p>
1526
1527 <p class="whs7">&nbsp;</p>
1528
1529 <p class="whs7">isDone = Mesh_2.Compute()</p>
1530
1531 <p class="whs7">if not isDone: print 
1532  'Mesh Mesh_2 : computation failed'</p>
1533
1534 <p class="whs7">&nbsp;</p>
1535
1536 <p class="whs8"># create a pattern</p>
1537
1538 <p class="whs7">pattern = smesh.smesh.GetPattern()</p>
1539
1540 <p class="whs7">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), 
1541  Face_2, 0)</p>
1542
1543 <p class="whs7">if (isDone != 1):</p>
1544
1545 <p class="whs9">print 
1546  'LoadFromFace :', pattern.GetErrorCode()</p>
1547
1548 <p class="whs7">&nbsp;</p>
1549
1550 <p class="whs8"># apply the pattern to 
1551  a face of the first mesh</p>
1552
1553 <p class="whs7">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), 
1554  [17], 0, 0)</p>
1555
1556 <p class="whs7">isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 
1557  0, 0)</p>
1558
1559 <p class="whs7">if (isDone != 1):</p>
1560
1561 <p class="whs9">print 
1562  'MakeMesh :', pattern.GetErrorCode()</p>
1563
1564 <p class="whs7">&nbsp;</p>
1565
1566 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1567  </p>
1568
1569 <script type="text/javascript" language="javascript1.2">
1570 <!--
1571 if (window.writeIntopicBar)
1572         writeIntopicBar(0);
1573 //-->
1574 </script>
1575 </body>
1576 </html>