Salome HOME
Porting GUI documentation on Doxygen tool.
[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; font-family:'Times New Roman' , serif; }
17 p.whs3 { margin-top:0pt; margin-bottom:0pt; }
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 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; font-weight:bold; font-size:13.5pt; }
22 p.whs8 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
23 p.whs9 { font-family:'Lucida Console' , monospace; }
24 p.whs10 { font-family:'Times New Roman' , serif; }
25 p.whs11 { margin-left:36px; font-family:'Lucida Console' , monospace; }
26 p.whs12 { margin-left:36px; }
27 p.whs13 { margin-left:0px; font-family:'Times New Roman' , serif; }
28 p.whs14 { font-family:'Lucida Console' , monospace; margin-left:0px; }
29 -->
30 </style><script type="text/javascript" language="JavaScript">
31 <!--
32 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
33 {
34   var strNSS = "<style type='text/css'>";
35   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
36   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
37   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
38   strNSS += "h4.whs4 {margin-top:1pt;margin-bottom:1pt; }";
39   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
40   strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
41   strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";
42   strNSS += "p.whs8 {margin-top:1pt;margin-bottom:1pt; }";
43   strNSS += "p.whs13 {margin-left:1pt; }";
44   strNSS += "p.whs14 {margin-left:1pt; }";
45   strNSS +="</style>";
46   document.write(strNSS);
47 }
48 //-->
49 </script>
50 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
51 <!--
52 function reDo() {
53   if (innerWidth != origWidth || innerHeight != origHeight)
54      location.reload();
55 }
56 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
57         origWidth = innerWidth;
58         origHeight = innerHeight;
59         onresize = reDo;
60 }
61 onerror = null; 
62 //-->
63 </script>
64 <style type="text/css">
65 <!--
66 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
67 p.WebHelpNavBar { text-align:right; }
68 -->
69 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
70 <script type="text/javascript" language="javascript" src="whver.js"></script>
71 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
72 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
73 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
74 <script type="text/javascript" language="javascript1.2">
75 <!--
76 if (window.gbWhTopic)
77 {
78         if (window.setRelStartPage)
79         {
80         addTocInfo("MESH module\nTUI Scripts\nModifying Meshes");
81 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
82 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
83
84         }
85
86
87         if (window.setRelStartPage)
88         {
89         setRelStartPage("index.htm");
90
91                 autoSync(1);
92                 sendSyncInfo();
93                 sendAveInfoOut();
94         }
95
96 }
97 else
98         if (window.gbIE4)
99                 document.location.reload();
100 //-->
101 </script>
102 </head>
103 <body><script type="text/javascript" language="javascript1.2">
104 <!--
105 if (window.writeIntopicBar)
106         writeIntopicBar(4);
107 //-->
108 </script>
109 <h1>Modifying Meshes</h1>
110
111 <h3><a name=bookmark>Adding Nodes and Elements</a></h3>
112
113 <h4>Add Node</h4>
114
115 <p class="whs1">import SMESH_mechanic</p>
116
117 <p class="whs1">&nbsp;</p>
118
119 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
120
121 <p class="whs1">&nbsp;</p>
122
123 <p class="whs2"># add node</p>
124
125 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">new_id 
126  = mesh.AddNode(50, 10, 0)</span></p>
127
128 <p class="whs1">print &quot;&quot;</p>
129
130 <p class="whs1">if new_id == 0: 
131  print &quot;KO node addition.&quot;</p>
132
133 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
134  &quot;New Node has been added with ID &quot;, new_id &nbsp;</p>
135
136 <p class="whs1">&nbsp;</p>
137
138 <h4>Add Edge</h4>
139
140 <p class="whs1">import SMESH_mechanic</p>
141
142 <p class="whs1">&nbsp;</p>
143
144 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
145
146 <p class="whs1">print &quot;&quot;</p>
147
148 <p class="whs1">&nbsp;</p>
149
150 <p class="whs2"># add node</p>
151
152 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">n1 
153  = mesh.AddNode(50, 10, 0)</span></p>
154
155 <p class="whs1">if n1 == 0: print 
156  &quot;KO node addition.&quot; </p>
157
158 <p class="whs1">&nbsp;</p>
159
160 <p class="whs2"># add edge</p>
161
162 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">e1 
163  = mesh.AddEdge([n1, 38])</span></p>
164
165 <p class="whs1">if e1 == 0: print 
166  &quot;KO edge addition.&quot;</p>
167
168 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
169  &quot;New Edge has been added with ID &quot;, e1 </p>
170
171 <h4>Add Triangle</h4>
172
173 <p class="whs1">import SMESH_mechanic</p>
174
175 <p class="whs1">&nbsp;</p>
176
177 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
178
179 <p class="whs1">print &quot;&quot;</p>
180
181 <p class="whs1">&nbsp;</p>
182
183 <p class="whs2"># add node</p>
184
185 <p class="whs1">n1 = mesh.AddNode(50, 
186  10, 0)</p>
187
188 <p class="whs1">if n1 == 0: print 
189  &quot;KO node addition.&quot;</p>
190
191 <p class="whs1">&nbsp;</p>
192
193 <p class="whs2"># add triangle</p>
194
195 <p class="whs1">t1 = mesh.AddFace([n1, 
196  38, 39])</p>
197
198 <p class="whs1">if t1 == 0: print 
199  &quot;KO triangle addition.&quot;</p>
200
201 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
202  &quot;New Triangle has been added with ID &quot;, t1 </p>
203
204 <h4>Add Quadrangle</h4>
205
206 <p class="whs1">import SMESH_mechanic</p>
207
208 <p class="whs1">&nbsp;</p>
209
210 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
211
212 <p class="whs1">print &quot;&quot;</p>
213
214 <p class="whs3">&nbsp;</p>
215
216 <p class="whs3"># add node</p>
217
218 <p class="whs1">n1 = mesh.AddNode(50, 
219  10, 0)</p>
220
221 <p class="whs1">if n1 == 0: print 
222  &quot;KO node addition.&quot;</p>
223
224 <p class="whs1">&nbsp;</p>
225
226 <p class="whs1">n2 = mesh.AddNode(40, 
227  20, 0)</p>
228
229 <p class="whs1">if n2 == 0: print 
230  &quot;KO node addition.&quot;</p>
231
232 <p class="whs1">&nbsp;</p>
233
234 <p class="whs3"># add quadrangle</p>
235
236 <p class="whs1">q1 = mesh.AddFace([n2, 
237  n1, 38, 39])</p>
238
239 <p class="whs1">if q1 == 0: print 
240  &quot;KO quadrangle addition.&quot;</p>
241
242 <p class="whs3"><span style="font-family: 'Lucida Console', monospace;">else: 
243  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
244  &quot;New Quadrangle has been added with ID &quot;, q1</span> </p>
245
246 <h4>Add Tetrahedron</h4>
247
248 <p class="whs1">import SMESH_mechanic</p>
249
250 <p class="whs1">&nbsp;</p>
251
252 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
253
254 <p class="whs1">print &quot;&quot;</p>
255
256 <p class="whs1">&nbsp;</p>
257
258 <p class="whs2"># add node</p>
259
260 <p class="whs1">n1 = mesh.AddNode(50, 
261  10, 0)</p>
262
263 <p class="whs1">if n1 == 0: print 
264  &quot;KO node addition.&quot;</p>
265
266 <p class="whs1">&nbsp;</p>
267
268 <p class="whs2"># add tetrahedron</p>
269
270 <p class="whs1">t1 = mesh.AddVolume([n1, 
271  38, 39, 246])</p>
272
273 <p class="whs1">if t1 == 0: print 
274  &quot;KO tetrahedron addition.&quot;</p>
275
276 <p class="whs3"><span style="font-family: 'Lucida Console', monospace;">else: 
277  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
278  &quot;New Tetrahedron has been added with ID &quot;, t1</span> </p>
279
280 <h4>Add Hexahedron</h4>
281
282 <p class="whs1">import SMESH_mechanic</p>
283
284 <p class="whs1">&nbsp;</p>
285
286 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
287
288 <p class="whs1">print &quot;&quot;</p>
289
290 <p class="whs1">&nbsp;</p>
291
292 <p class="whs2"># add nodes</p>
293
294 <p class="whs1">nId1 = mesh.AddNode(50, 
295  10, 0)</p>
296
297 <p class="whs1">nId2 = mesh.AddNode(47, 
298  12, 0)</p>
299
300 <p class="whs1">nId3 = mesh.AddNode(50, 
301  10, 10)</p>
302
303 <p class="whs1">nId4 = mesh.AddNode(47, 
304  12, 10)</p>
305
306 <p class="whs1">&nbsp;</p>
307
308 <p class="whs1">if nId1 == 0 or 
309  nId2 == 0 or nId3 == 0 or nId4 == 0: print &quot;KO node addition.&quot;</p>
310
311 <p class="whs1">&nbsp;</p>
312
313 <p class="whs2"># add hexahedron</p>
314
315 <p class="whs1">vId = mesh.AddVolume([nId2, 
316  nId1, 38, 39, nId4, nId3, 245, 246])</p>
317
318 <p class="whs1">if vId == 0: print 
319  &quot;KO Hexahedron addition.&quot;</p>
320
321 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
322  &quot;New Hexahedron has been added with ID &quot;, vId </p>
323
324 <p class="whs1">&nbsp;</p>
325
326 <h4>Add Polygon</h4>
327
328 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
329  math</span></p>
330
331 <p class="whs1">import salome</p>
332
333 <p class="whs1">&nbsp;</p>
334
335 <p class="whs1">import smesh</p>
336
337 <p class="whs1">&nbsp;</p>
338
339 <p class="whs2"># create an empty mesh 
340  structure</p>
341
342 <p class="whs1">mesh = smesh.Mesh() 
343  </p>
344
345 <p class="whs1">&nbsp;</p>
346
347 <p class="whs2"># a method to build 
348  a polygonal mesh element with &lt;nb_vert&gt; angles:</p>
349
350 <p class="whs1">def MakePolygon 
351  (a_mesh, x0, y0, z0, radius, nb_vert):</p>
352
353 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;al 
354  = 2.0 * math.pi / nb_vert</p>
355
356 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;node_ids 
357  = []</p>
358
359 <p class="whs1">&nbsp;</p>
360
361 <p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 
362  Create nodes for a polygon</p>
363
364 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;for 
365  ii in range(nb_vert):</p>
366
367 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nid 
368  = mesh.AddNode(x0 + radius * math.cos(ii*al),</p>
369
370 <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;y0 
371  + radius * math.sin(ii*al),</p>
372
373 <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;z0)</p>
374
375 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node_ids.append(nid)</p>
376
377 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
378
379 <p class="whs1">&nbsp;</p>
380
381 <p class="whs2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 
382  Create a polygon</p>
383
384 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;return 
385  mesh.AddPolygonalFace(node_ids)</p>
386
387 <p class="whs1">&nbsp;</p>
388
389 <p class="whs2"># Create three polygons</p>
390
391 <p class="whs1">f1 = MakePolygon(mesh, 
392  0, 0, &nbsp;0, 
393  30, 13)</p>
394
395 <p class="whs1">f2 = MakePolygon(mesh, 
396  0, 0, 10, 21, &nbsp;9)</p>
397
398 <p class="whs1">f3 = MakePolygon(mesh, 
399  0, 0, 20, 13, &nbsp;6)</p>
400
401 <p class="whs1">&nbsp;</p>
402
403 <p class="whs1">salome.sg.updateObjBrowser(1) 
404  </p>
405
406 <h4>Add Polyhedron</h4>
407
408 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
409  salome</span></p>
410
411 <p class="whs1">import math</p>
412
413 <p class="whs1">&nbsp;</p>
414
415 <p class="whs2"># create an empty mesh 
416  structure</p>
417
418 <p class="whs1">mesh = smesh.Mesh() 
419  &nbsp;</p>
420
421 <p class="whs1">&nbsp;</p>
422
423 <p class="whs2"># Create nodes for 
424  12-hedron with pentagonal faces</p>
425
426 <p class="whs1">al = 2 * math.pi 
427  / 5.0</p>
428
429 <p class="whs1">cosal = math.cos(al)</p>
430
431 <p class="whs1">aa = 13</p>
432
433 <p class="whs1">rr = aa / (2.0 * 
434  math.sin(al/2.0))</p>
435
436 <p class="whs1">dr = 2.0 * rr * 
437  cosal</p>
438
439 <p class="whs1">r1 = rr + dr</p>
440
441 <p class="whs1">dh = rr * math.sqrt(2.0 
442  * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
443
444 <p class="whs1">hh = 2.0 * dh - 
445  dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
446
447 <p class="whs1">&nbsp;</p>
448
449 <p class="whs1">dd = [] <span style="font-family: 'Times New Roman', serif;"># 
450  top</span></p>
451
452 <p class="whs1">cc = [] <span style="font-family: 'Times New Roman', serif;"># 
453  below top</span></p>
454
455 <p class="whs1">bb = [] <span style="font-family: 'Times New Roman', serif;"># 
456  above bottom</span></p>
457
458 <p class="whs1">aa = [] <span style="font-family: 'Times New Roman', serif;"># 
459  bottom</span></p>
460
461 <p class="whs1">&nbsp;</p>
462
463 <p class="whs1">for i in range(5):</p>
464
465 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;cos_bot 
466  = math.cos(i*al)</p>
467
468 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;sin_bot 
469  = math.sin(i*al)</p>
470
471 <p class="whs1">&nbsp;</p>
472
473 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;<span 
474  style="margin-top: 0pt;
475                 margin-bottom: 0pt;
476                 font-family: 'Lucida Console', monospace;">cos_top 
477  = math.cos(i*al + al/2.0)</span></p>
478
479 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;sin_top 
480  = math.sin(i*al + al/2.0)</p>
481
482 <p class="whs1">&nbsp;</p>
483
484 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;nd 
485  = mesh.AddNode(rr * cos_top, rr * sin_top, hh &nbsp;&nbsp;&nbsp;&nbsp;) 
486  <span style="font-family: 'Times New Roman', serif;"># top</span></p>
487
488 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;nc 
489  = mesh.AddNode(r1 * cos_top, r1 * sin_top, hh - dh) <span style="font-family: 'Times New Roman', serif;"># 
490  below top</span></p>
491
492 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;nb 
493  = mesh.AddNode(r1 * cos_bot, r1 * sin_bot, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dh) 
494  <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
495
496 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;na 
497  = mesh.AddNode(rr * cos_bot, rr * sin_bot, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0) 
498  <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
499
500 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;dd.append(nd) 
501  <span style="font-family: 'Times New Roman', serif;"># top</span></p>
502
503 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;cc.append(nc) 
504  <span style="font-family: 'Times New Roman', serif;"># below top</span></p>
505
506 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;bb.append(nb) 
507  <span style="font-family: 'Times New Roman', serif;"># above bottom</span></p>
508
509 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;aa.append(na) 
510  <span style="font-family: 'Times New Roman', serif;"># bottom</span></p>
511
512 <p class="whs1">&nbsp;</p>
513
514 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
515
516 <p class="whs1">&nbsp;</p>
517
518 <p class="whs2"># Create a polyhedral 
519  volume (12-hedron with pentagonal faces)</p>
520
521 <p class="whs1">MeshEditor.AddPolyhedralVolume([dd[0], 
522  dd[1], dd[2], dd[3], dd[4], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
523  top</span></p>
524
525 <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;dd[0], 
526  cc[0], bb[1], cc[1], dd[1], &nbsp;# 
527  -</p>
528
529 <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;dd[1], 
530  cc[1], bb[2], cc[2], dd[2], &nbsp;# 
531  -</p>
532
533 <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;dd[2], 
534  cc[2], bb[3], cc[3], dd[3], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
535  - below top</span></p>
536
537 <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;dd[3], 
538  cc[3], bb[4], cc[4], dd[4], &nbsp;# 
539  -</p>
540
541 <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;dd[4], 
542  cc[4], bb[0], cc[0], dd[0], &nbsp;# 
543  -</p>
544
545 <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;aa[4], 
546  bb[4], cc[4], bb[0], aa[0], &nbsp;# 
547  .</p>
548
549 <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;aa[3], 
550  bb[3], cc[3], bb[4], aa[4], &nbsp;# 
551  .</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aa[2], 
554  bb[2], cc[2], bb[3], aa[3], &nbsp;<span style="font-family: 'Times New Roman', serif;"># 
555  . above bottom</span></p>
556
557 <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;aa[1], 
558  bb[1], cc[1], bb[2], aa[2], &nbsp;# 
559  .</p>
560
561 <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;aa[0], 
562  bb[0], cc[0], bb[1], aa[1], &nbsp;# 
563  .</p>
564
565 <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;aa[0], 
566  aa[1], aa[2], aa[3], aa[4]], <span style="font-family: 'Times New Roman', serif;"># 
567  bottom</span></p>
568
569 <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>
570
571 <p class="whs1">salome.sg.updateObjBrowser(1) 
572  </p>
573
574 <p class="whs1">&nbsp;</p>
575
576 <h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
577
578 <h4 class="whs4">Removing Nodes</h4>
579
580 <p class="whs3">&nbsp;</p>
581
582 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import 
583  SMESH_mechanic</span></p>
584
585 <p class="whs1">&nbsp;</p>
586
587 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
588
589 <p class="whs1">&nbsp;</p>
590
591 <p class="whs2"># remove nodes #246 
592  and #255</p>
593
594 <p class="whs1">res = mesh.RemoveNodes([246, 
595  255])</p>
596
597 <p class="whs1">if res == 1: print 
598  &quot;Nodes removing is OK!&quot;</p>
599
600 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
601  &quot;KO nodes removing.&quot; </p>
602
603 <p class="whs3">&nbsp;</p>
604
605 <h4>Removing Elements</h4>
606
607 <p class="whs1">import SMESH_mechanic</p>
608
609 <p class="whs1">&nbsp;</p>
610
611 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
612
613 <p class="whs1">&nbsp;</p>
614
615 <p class="whs2"># remove three elements: 
616  #850, #859 and #814</p>
617
618 <p class="whs1">res = mesh.RemoveElements([850, 
619  859, 814])</p>
620
621 <p class="whs1">if res == 1: print 
622  &quot;Elements removing is OK!&quot;</p>
623
624 <p class="whs1">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
625  &quot;KO Elements removing.&quot; &nbsp;</p>
626
627 <p class="whs1">&nbsp;</p>
628
629 <h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
630
631 <p class="whs5">import SMESH_mechanic</p>
632
633 <p class="whs5">&nbsp;</p>
634
635 <p class="whs5">mesh = SMESH_mechanic.mesh</p>
636
637 <p class="whs6">&nbsp;</p>
638
639 <p class="whs6"><span style="font-family: 'Lucida Console', monospace;">mesh.RenumberNodes()</span> 
640  </p>
641
642 <h3><a name=bookmark3>Moving Nodes</a></h3>
643
644 <p class="whs1">import SMESH_mechanic</p>
645
646 <p class="whs1">&nbsp;</p>
647
648 <p class="whs1">mesh = SMESH_mechanic.mesh</p>
649
650 <p class="whs3">&nbsp;</p>
651
652 <p class="whs3"># move node #38</p>
653
654 <p class="whs1">mesh.MoveNode(38, 
655  20., 10., 0.) </p>
656
657 <p class="whs1">&nbsp;</p>
658
659 <p class="whs2">&nbsp;</p>
660
661 <p class="whs7"><a name=bookmark14
662                                                                         style="font-weight: bold; font-size: 13.5pt;">Mesh 
663  through point</a></p>
664
665 <p class="whs3">&nbsp;</p>
666
667 <p class="whs1">from geompy import 
668  *</p>
669
670 <p class="whs1">from smesh import 
671  *</p>
672
673 <p class="whs1">&nbsp;</p>
674
675 <p class="whs1">box = MakeBoxDXDYDZ(200, 
676  200, 200)</p>
677
678 <p class="whs1">&nbsp;</p>
679
680 <p class="whs1">mesh = Mesh( box 
681  )</p>
682
683 <p class="whs1">mesh.Segment().AutomaticLength(0.1)</p>
684
685 <p class="whs1">mesh.Quadrangle()</p>
686
687 <p class="whs1">mesh.Compute()</p>
688
689 <p class="whs3">&nbsp;</p>
690
691 <p class="whs3"># find node at (0,0,0)</p>
692
693 <p class="whs1">node000 = None</p>
694
695 <p class="whs1">for vId in SubShapeAllIDs( 
696  box, ShapeType[&quot;VERTEX&quot;]):</p>
697
698 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;if 
699  node000: break</p>
700
701 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;nodeIds 
702  = mesh.GetSubMeshNodesId( vId, True )</p>
703
704 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;for 
705  node in nodeIds:</p>
706
707 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xyz 
708  = mesh.GetNodeXYZ( node )</p>
709
710 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if 
711  xyz[0] == 0 and xyz[1] == 0 and xyz[2] == 0 :</p>
712
713 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node000 
714  = node</p>
715
716 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
717
718 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
719
720 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;pass</p>
721
722 <p class="whs1">if not node000:</p>
723
724 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise 
725  &quot;node000 not found&quot;</p>
726
727 <p class="whs3">&nbsp;</p>
728
729 <p class="whs3"># find node000 using the 
730  tested function </p>
731
732 <p class="whs1">n = mesh.FindNodeClosestTo( 
733  -1,-1,-1 )</p>
734
735 <p class="whs1">if not n == node000:</p>
736
737 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise 
738  &quot;FindNodeClosestTo() returns &quot; + str( n ) + &quot; != &quot; 
739  + str( node000 )</p>
740
741 <p class="whs3">&nbsp;</p>
742
743 <p class="whs3"># check if any node will 
744  be found for a point inside a box</p>
745
746 <p class="whs1">n = mesh.FindNodeClosestTo( 
747  100, 100, 100 )</p>
748
749 <p class="whs1">if not n &gt; 0:</p>
750
751 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise 
752  &quot;FindNodeClosestTo( 100, 100, 100 ) fails&quot;</p>
753
754 <p class="whs3">&nbsp;</p>
755
756 <p class="whs3"># move node000 to a new 
757  location</p>
758
759 <p class="whs1">x,y,z = -10, -10, 
760  -10</p>
761
762 <p class="whs1">n = mesh.MeshToPassThroughAPoint( 
763  x,y,z )</p>
764
765 <p class="whs1">if not n == node000:</p>
766
767 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise 
768  &quot;FindNodeClosestTo() returns &quot; + str( n ) + &quot; != &quot; 
769  + str( node000 )</p>
770
771 <p class="whs3">&nbsp;</p>
772
773 <p class="whs3"># check the coordinates 
774  of the node000</p>
775
776 <p class="whs1">xyz = mesh.GetNodeXYZ( 
777  node000 )</p>
778
779 <p class="whs1">if not ( xyz[0] 
780  == x and xyz[1] == y and xyz[2] == z) :</p>
781
782 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise 
783  &quot;Wrong coordinates: &quot; + str( xyz ) + &quot; != &quot; + str( 
784  [x,y,z] )</p>
785
786 <h3><a name=bookmark4>Diagonal Inversion</a></h3>
787
788 <p class="whs5">import salome</p>
789
790 <p class="whs5">import smesh</p>
791
792 <p class="whs5">&nbsp;</p>
793
794 <p class="whs8"># create an empty mesh 
795  structure</p>
796
797 <p class="whs5">mesh = smesh.Mesh() 
798  </p>
799
800 <p class="whs5">&nbsp;</p>
801
802 <p class="whs8"># create the following 
803  mesh:</p>
804
805 <p class="whs5"># .----.----.----.</p>
806
807 <p class="whs5"># | &nbsp;&nbsp;/| 
808  &nbsp;&nbsp;/| 
809  &nbsp;&nbsp;/|</p>
810
811 <p class="whs5"># | &nbsp;/ 
812  | &nbsp;/ | &nbsp;/ 
813  |</p>
814
815 <p class="whs5"># | / &nbsp;| 
816  / &nbsp;| / &nbsp;|</p>
817
818 <p class="whs5"># |/ &nbsp;&nbsp;|/ 
819  &nbsp;&nbsp;|/ 
820  &nbsp;&nbsp;|</p>
821
822 <p class="whs5"># .----.----.----.</p>
823
824 <p class="whs5">&nbsp;</p>
825
826 <p class="whs5">bb = [0, 0, 0, 0]</p>
827
828 <p class="whs5">tt = [0, 0, 0, 0]</p>
829
830 <p class="whs5">ff = [0, 0, 0, 0, 
831  0, 0]</p>
832
833 <p class="whs5">&nbsp;</p>
834
835 <p class="whs5">bb[0] = mesh.AddNode( 
836  0., 0., 0.)</p>
837
838 <p class="whs5">bb[1] = mesh.AddNode(10., 
839  0., 0.)</p>
840
841 <p class="whs5">bb[2] = mesh.AddNode(20., 
842  0., 0.)</p>
843
844 <p class="whs5">bb[3] = mesh.AddNode(30., 
845  0., 0.)</p>
846
847 <p class="whs5">&nbsp;</p>
848
849 <p class="whs5">tt[0] = mesh.AddNode( 
850  0., 15., 0.)</p>
851
852 <p class="whs5">tt[1] = mesh.AddNode(10., 
853  15., 0.)</p>
854
855 <p class="whs5">tt[2] = mesh.AddNode(20., 
856  15., 0.)</p>
857
858 <p class="whs5">tt[3] = mesh.AddNode(30., 
859  15., 0.)</p>
860
861 <p class="whs5">&nbsp;</p>
862
863 <p class="whs5">ff[0] = mesh.AddFace([bb[0], 
864  bb[1], tt[1]])</p>
865
866 <p class="whs5">ff[1] = mesh.AddFace([bb[0], 
867  tt[1], tt[0]])</p>
868
869 <p class="whs5">ff[2] = mesh.AddFace([bb[1], 
870  bb[2], tt[2]])</p>
871
872 <p class="whs5">ff[3] = mesh.AddFace([bb[1], 
873  tt[2], tt[1]])</p>
874
875 <p class="whs5">ff[4] = mesh.AddFace([bb[2], 
876  bb[3], tt[3]])</p>
877
878 <p class="whs5">ff[5] = mesh.AddFace([bb[2], 
879  tt[3], tt[2]])</p>
880
881 <p class="whs5">&nbsp;</p>
882
883 <p class="whs8"># inverse the diagonal 
884  bb[1] - tt[2]</p>
885
886 <p class="whs5">print &quot;\nDiagonal 
887  inversion ... &quot;,</p>
888
889 <p class="whs5">res = mesh.InverseDiag(bb[1], 
890  tt[2])</p>
891
892 <p class="whs5">if not res: print 
893  &quot;failed!&quot;</p>
894
895 <p class="whs5">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
896  &quot;done.&quot;</p>
897
898 <p class="whs6">&nbsp;</p>
899
900 <p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
901  </p>
902
903 <h3><a name=bookmark5>Uniting two Triangles</a></h3>
904
905 <p class="whs9">import salome</p>
906
907 <p class="whs9">import smesh</p>
908
909 <p>&nbsp;</p>
910
911 <p># create an empty mesh structure</p>
912
913 <p class="whs9">mesh = smesh.Mesh() 
914  </p>
915
916 <p>&nbsp;</p>
917
918 <p># create the following mesh:</p>
919
920 <p class="whs9"># .----.----.----.</p>
921
922 <p class="whs9"># | &nbsp;&nbsp;/| 
923  &nbsp;&nbsp;/| 
924  &nbsp;&nbsp;/|</p>
925
926 <p class="whs9"># | &nbsp;/ 
927  | &nbsp;/ | &nbsp;/ 
928  |</p>
929
930 <p class="whs9"># | / &nbsp;| 
931  / &nbsp;| / &nbsp;|</p>
932
933 <p class="whs9"># |/ &nbsp;&nbsp;|/ 
934  &nbsp;&nbsp;|/ 
935  &nbsp;&nbsp;|</p>
936
937 <p class="whs9"># .----.----.----.</p>
938
939 <p>&nbsp;</p>
940
941 <p class="whs9">bb = [0, 0, 0, 0]</p>
942
943 <p class="whs9">tt = [0, 0, 0, 0]</p>
944
945 <p class="whs9">ff = [0, 0, 0, 0, 
946  0, 0]</p>
947
948 <p class="whs9">&nbsp;</p>
949
950 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">bb[0] 
951  = mesh.AddNode( 0., 0., 0.)</span></p>
952
953 <p class="whs9">bb[1] = mesh.AddNode(10., 
954  0., 0.)</p>
955
956 <p class="whs9">bb[2] = mesh.AddNode(20., 
957  0., 0.)</p>
958
959 <p class="whs9">bb[3] = mesh.AddNode(30., 
960  0., 0.)</p>
961
962 <p class="whs9">&nbsp;</p>
963
964 <p class="whs9">tt[0] = mesh.AddNode( 
965  0., 15., 0.)</p>
966
967 <p class="whs9">tt[1] = mesh.AddNode(10., 
968  15., 0.)</p>
969
970 <p class="whs9">tt[2] = mesh.AddNode(20., 
971  15., 0.)</p>
972
973 <p class="whs9">tt[3] = mesh.AddNode(30., 
974  15., 0.)</p>
975
976 <p class="whs9">&nbsp;</p>
977
978 <p class="whs9">ff[0] = mesh.AddFace([bb[0], 
979  bb[1], tt[1]])</p>
980
981 <p class="whs9">ff[1] = mesh.AddFace([bb[0], 
982  tt[1], tt[0]])</p>
983
984 <p class="whs9">ff[2] = mesh.AddFace([bb[1], 
985  bb[2], tt[2]])</p>
986
987 <p class="whs9">ff[3] = mesh.AddFace([bb[1], 
988  tt[2], tt[1]])</p>
989
990 <p class="whs9">ff[4] = mesh.AddFace([bb[2], 
991  bb[3], tt[3]])</p>
992
993 <p class="whs9">ff[5] = mesh.AddFace([bb[2], 
994  tt[3], tt[2]]) </p>
995
996 <p>&nbsp;</p>
997
998 <p># delete the diagonal bb[1] - tt[2]</p>
999
1000 <p class="whs9">print &quot;\nUnite 
1001  two triangles ... &quot;,</p>
1002
1003 <p class="whs9">res = mesh.DeleteDiag(bb[1], 
1004  tt[2])</p>
1005
1006 <p class="whs9">if not res: print 
1007  &quot;failed!&quot;</p>
1008
1009 <p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
1010  &quot;done.&quot;</p>
1011
1012 <p class="whs9">&nbsp;</p>
1013
1014 <p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1015  </p>
1016
1017 <h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
1018
1019 <p class="whs9">import salome</p>
1020
1021 <p class="whs9">import smesh</p>
1022
1023 <p class="whs9">&nbsp;</p>
1024
1025 <p class="whs10"># create an empty mesh 
1026  structure</p>
1027
1028 <p class="whs9">mesh = smesh.Mesh() 
1029  </p>
1030
1031 <p class="whs9">&nbsp;</p>
1032
1033 <p class="whs10"># create the following 
1034  mesh:</p>
1035
1036 <p class="whs9"># .----.----.----.</p>
1037
1038 <p class="whs9"># | &nbsp;&nbsp;/| 
1039  &nbsp;&nbsp;/| 
1040  &nbsp;&nbsp;/|</p>
1041
1042 <p class="whs9"># | &nbsp;/ 
1043  | &nbsp;/ | &nbsp;/ 
1044  |</p>
1045
1046 <p class="whs9"># | / &nbsp;| 
1047  / &nbsp;| / &nbsp;|</p>
1048
1049 <p class="whs9"># |/ &nbsp;&nbsp;|/ 
1050  &nbsp;&nbsp;|/ 
1051  &nbsp;&nbsp;|</p>
1052
1053 <p class="whs9"># .----.----.----.</p>
1054
1055 <p class="whs9">&nbsp;</p>
1056
1057 <p class="whs9">bb = [0, 0, 0, 0]</p>
1058
1059 <p class="whs9">tt = [0, 0, 0, 0]</p>
1060
1061 <p class="whs9">ff = [0, 0, 0, 0, 
1062  0, 0]</p>
1063
1064 <p class="whs9">&nbsp;</p>
1065
1066 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">bb[0] 
1067  = mesh.AddNode( 0., 0., 0.)</span></p>
1068
1069 <p class="whs9">bb[1] = mesh.AddNode(10., 
1070  0., 0.)</p>
1071
1072 <p class="whs9">bb[2] = mesh.AddNode(20., 
1073  0., 0.)</p>
1074
1075 <p class="whs9">bb[3] = mesh.AddNode(30., 
1076  0., 0.)</p>
1077
1078 <p class="whs9">&nbsp;</p>
1079
1080 <p class="whs9">tt[0] = mesh.AddNode( 
1081  0., 15., 0.)</p>
1082
1083 <p class="whs9">tt[1] = mesh.AddNode(10., 
1084  15., 0.)</p>
1085
1086 <p class="whs9">tt[2] = mesh.AddNode(20., 
1087  15., 0.)</p>
1088
1089 <p class="whs9">tt[3] = mesh.AddNode(30., 
1090  15., 0.)</p>
1091
1092 <p class="whs9">&nbsp;</p>
1093
1094 <p class="whs9">ff[0] = mesh.AddFace([bb[0], 
1095  bb[1], tt[1]])</p>
1096
1097 <p class="whs9">ff[1] = mesh.AddFace([bb[0], 
1098  tt[1], tt[0]])</p>
1099
1100 <p class="whs9">ff[2] = mesh.AddFace([bb[1], 
1101  bb[2], tt[2]])</p>
1102
1103 <p class="whs9">ff[3] = mesh.AddFace([bb[1], 
1104  tt[2], tt[1]])</p>
1105
1106 <p class="whs9">ff[4] = mesh.AddFace([bb[2], 
1107  bb[3], tt[3]])</p>
1108
1109 <p class="whs9">ff[5] = mesh.AddFace([bb[2], 
1110  tt[3], tt[2]])</p>
1111
1112 <p class="whs9">&nbsp;</p>
1113
1114 <p class="whs10"># unite a set of triangles</p>
1115
1116 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">print 
1117  &quot;\nUnite a set of triangles ... &quot;,</span></p>
1118
1119 <p class="whs9">res = mesh.TriToQuad([ff[2], 
1120  ff[3], ff[4], ff[5]], smesh.FT_MinimumAngle, 60.)</p>
1121
1122 <p class="whs9">if not res: print 
1123  &quot;failed!&quot;</p>
1124
1125 <p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
1126  &quot;done.&quot;</p>
1127
1128 <p class="whs9">&nbsp;</p>
1129
1130 <p class="whs9">salome.sg.updateObjBrowser(1) 
1131  &nbsp;</p>
1132
1133 <h3><a name=bookmark12>Orientation</a></h3>
1134
1135 <p class="whs9">import salome</p>
1136
1137 <p class="whs9">import smesh</p>
1138
1139 <p class="whs9">&nbsp;</p>
1140
1141 <p># create an empty mesh structure</p>
1142
1143 <p class="whs9">mesh = smesh.Mesh() 
1144  </p>
1145
1146 <p class="whs9">&nbsp;</p>
1147
1148 <p class="whs10"># build five quadrangles:</p>
1149
1150 <p class="whs9">dx = 10</p>
1151
1152 <p class="whs9">dy = 20</p>
1153
1154 <p class="whs9">&nbsp;</p>
1155
1156 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">n1 
1157  &nbsp;= mesh.AddNode(0.0 
1158  * dx, 0, 0)</span></p>
1159
1160 <p class="whs9">n2 &nbsp;= 
1161  mesh.AddNode(1.0 * dx, 0, 0)</p>
1162
1163 <p class="whs9">n3 &nbsp;= 
1164  mesh.AddNode(2.0 * dx, 0, 0)</p>
1165
1166 <p class="whs9">n4 &nbsp;= 
1167  mesh.AddNode(3.0 * dx, 0, 0)</p>
1168
1169 <p class="whs9">n5 &nbsp;= 
1170  mesh.AddNode(4.0 * dx, 0, 0)</p>
1171
1172 <p class="whs9">n6 &nbsp;= 
1173  mesh.AddNode(5.0 * dx, 0, 0)</p>
1174
1175 <p class="whs9">n7 &nbsp;= 
1176  mesh.AddNode(0.0 * dx, dy, 0)</p>
1177
1178 <p class="whs9">n8 &nbsp;= 
1179  mesh.AddNode(1.0 * dx, dy, 0)</p>
1180
1181 <p class="whs9">n9 &nbsp;= 
1182  mesh.AddNode(2.0 * dx, dy, 0)</p>
1183
1184 <p class="whs9">n10 = mesh.AddNode(3.0 
1185  * dx, dy, 0)</p>
1186
1187 <p class="whs9">n11 = mesh.AddNode(4.0 
1188  * dx, dy, 0)</p>
1189
1190 <p class="whs9">n12 = mesh.AddNode(5.0 
1191  * dx, dy, 0)</p>
1192
1193 <p class="whs9">&nbsp;</p>
1194
1195 <p class="whs9">f1 = mesh.AddFace([n1, 
1196  n2, n8 , n7 ])</p>
1197
1198 <p class="whs9">f2 = mesh.AddFace([n2, 
1199  n3, n9 , n8 ])</p>
1200
1201 <p class="whs9">f3 = mesh.AddFace([n3, 
1202  n4, n10, n9 ])</p>
1203
1204 <p class="whs9">f4 = mesh.AddFace([n4, 
1205  n5, n11, n10])</p>
1206
1207 <p class="whs9">f5 = mesh.AddFace([n5, 
1208  n6, n12, n11]) </p>
1209
1210 <p class="whs9">&nbsp;</p>
1211
1212 <p class="whs10"># Change the orientation 
1213  of the second and the fourth faces.</p>
1214
1215 <p class="whs9">mesh.Reorient([2, 
1216  4])</p>
1217
1218 <p class="whs9">&nbsp;</p>
1219
1220 <p class="whs9">salome.sg.updateObjBrowser(1) 
1221  </p>
1222
1223 <p class="whs9">&nbsp;</p>
1224
1225 <h3><a name=bookmark7>Cutting Quadrangles</a></h3>
1226
1227 <p class="whs9">import SMESH_mechanic</p>
1228
1229 <p class="whs9">&nbsp;</p>
1230
1231 <p class="whs9">smesh = SMESH_mechanic.smesh</p>
1232
1233 <p class="whs9">mesh &nbsp;= 
1234  SMESH_mechanic.mesh</p>
1235
1236 <p class="whs9">&nbsp;</p>
1237
1238 <p class="whs10"># cut two quadrangles: 
1239  405 and 406</p>
1240
1241 <p class="whs9">mesh.QuadToTri([405, 
1242  406], smesh.FT_MinimumAngle) &nbsp;</p>
1243
1244 <p class="whs10">&nbsp;</p>
1245
1246 <h3><a name=bookmark8>Smoothing</a></h3>
1247
1248 <p class="whs9">import salome</p>
1249
1250 <p class="whs9">import geompy</p>
1251
1252 <p class="whs9">&nbsp;</p>
1253
1254 <p class="whs9">import SMESH_mechanic</p>
1255
1256 <p class="whs9">&nbsp;</p>
1257
1258 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">smesh 
1259  = SMESH_mechanic.smesh</span></p>
1260
1261 <p class="whs9">mesh = SMESH_mechanic.mesh</p>
1262
1263 <p class="whs9">&nbsp;</p>
1264
1265 <p class="whs10"># select the top face</p>
1266
1267 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">faces 
1268  = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, geompy.ShapeType[&quot;FACE&quot;])</span></p>
1269
1270 <p class="whs9">face = faces[3]</p>
1271
1272 <p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, 
1273  face, &quot;face planar with hole&quot;)</p>
1274
1275 <p class="whs9">&nbsp;</p>
1276
1277 <p class="whs9"># create a group of 
1278  faces to be smoothed</p>
1279
1280 <p class="whs9">GroupSmooth = mesh.GroupOnGeom(face, 
1281  &quot;Group of faces (smooth)&quot;, smesh.FACE)</p>
1282
1283 <p class="whs9">&nbsp;</p>
1284
1285 <p class="whs9"># perform smoothing</p>
1286
1287 <p class="whs9">&nbsp;</p>
1288
1289 <p class="whs9"># boolean SmoothObject(Object, 
1290  IDsOfFixedNodes, MaxNbOfIterations, MaxAspectRatio, Method)</p>
1291
1292 <p class="whs9">res = mesh.SmoothObject(GroupSmooth, 
1293  [], 20, 2., smesh.CENTROIDAL_SMOOTH)</p>
1294
1295 <p class="whs9">print &quot;\nSmoothing 
1296  ... &quot;,</p>
1297
1298 <p class="whs9">if not res: print 
1299  &quot;failed!&quot;</p>
1300
1301 <p class="whs9">else: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print 
1302  &quot;done.&quot;</p>
1303
1304 <p class="whs9">&nbsp;</p>
1305
1306 <p class="whs9">salome.sg.updateObjBrowser(1) 
1307  </p>
1308
1309 <p class="whs9">&nbsp;</p>
1310
1311 <h3><a name=bookmark9>Extrusion</a></h3>
1312
1313 <p class="whs9">import salome</p>
1314
1315 <p class="whs9">import geompy</p>
1316
1317 <p class="whs9">&nbsp;</p>
1318
1319 <p class="whs9">import SMESH_mechanic</p>
1320
1321 <p class="whs9">&nbsp;</p>
1322
1323 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">smesh 
1324  = SMESH_mechanic.smesh</span></p>
1325
1326 <p class="whs9">mesh = SMESH_mechanic.mesh 
1327  </p>
1328
1329 <p class="whs9">&nbsp;</p>
1330
1331 <p class="whs10"># select the top face</p>
1332
1333 <p class="whs9">faces = geompy.SubShapeAllSorted(SMESH_mechanic.shape_mesh, 
1334  geompy.ShapeType[&quot;FACE&quot;])</p>
1335
1336 <p class="whs9">face = faces[7]</p>
1337
1338 <p class="whs9">geompy.addToStudyInFather(SMESH_mechanic.shape_mesh, 
1339  face, &quot;face circular top&quot;)</p>
1340
1341 <p class="whs9">&nbsp;</p>
1342
1343 <p class="whs9"># create a vector 
1344  for extrusion</p>
1345
1346 <p class="whs9">point = smesh.PointStruct(0., 
1347  0., 5.)</p>
1348
1349 <p class="whs9">vector = smesh.DirStruct(point)</p>
1350
1351 <p class="whs9">&nbsp;</p>
1352
1353 <p class="whs9"># create a group to 
1354  be extruded</p>
1355
1356 <p class="whs9">GroupTri = mesh.GroupOnGeom(face, 
1357  &quot;Group of faces (extrusion)&quot;, smesh.FACE)</p>
1358
1359 <p class="whs9">&nbsp;</p>
1360
1361 <p class="whs9"># perform extrusion 
1362  of the group</p>
1363
1364 <p class="whs9">mesh.ExtrusionSweepObject(GroupTri, 
1365  vector, 5)</p>
1366
1367 <p class="whs9">&nbsp;</p>
1368
1369 <p class="whs10"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1370  </p>
1371
1372 <h3><a name=bookmark10>Extrusion along a Path</a></h3>
1373
1374 <p class="whs9">import math</p>
1375
1376 <p class="whs9">import salome</p>
1377
1378 <p class="whs9">&nbsp;</p>
1379
1380 <p class="whs10"># Geometry</p>
1381
1382 <p class="whs9">import geompy</p>
1383
1384 <p class="whs10">&nbsp;</p>
1385
1386 <p class="whs10"># 1. Create points</p>
1387
1388 <p class="whs9">points = [[0, 0], 
1389  [50, 30], [50, 110], [0, 150], [-80, 150], [-130, 70], [-130, -20]]</p>
1390
1391 <p class="whs9">&nbsp;</p>
1392
1393 <p class="whs9">iv = 1</p>
1394
1395 <p class="whs9">vertices = []</p>
1396
1397 <p class="whs9">for point in points:</p>
1398
1399 <p class="whs11">vert 
1400  = geompy.MakeVertex(point[0], point[1], 0)</p>
1401
1402 <p class="whs11">geompy.addToStudy(vert, 
1403  &quot;Vertex_&quot; + `iv`)</p>
1404
1405 <p class="whs11">vertices.append(vert)</p>
1406
1407 <p class="whs11">iv 
1408  += 1</p>
1409
1410 <p class="whs11">pass</p>
1411
1412 <p class="whs10">&nbsp;</p>
1413
1414 <p class="whs10"># 2. Create edges and 
1415  wires</p>
1416
1417 <p class="whs9">Edge_straight = geompy.MakeEdge(vertices[0], 
1418  vertices[4])</p>
1419
1420 <p class="whs9">Edge_bezierrr = geompy.MakeBezier(vertices)</p>
1421
1422 <p class="whs9">Wire_polyline = geompy.MakePolyline(vertices)</p>
1423
1424 <p class="whs9">Edge_Circle &nbsp;&nbsp;= 
1425  geompy.MakeCircleThreePnt(vertices[0], vertices[1], vertices[2])</p>
1426
1427 <p class="whs9">&nbsp;</p>
1428
1429 <p class="whs9">geompy.addToStudy(Edge_straight, 
1430  &quot;Edge_straight&quot;)</p>
1431
1432 <p class="whs9">geompy.addToStudy(Edge_bezierrr, 
1433  &quot;Edge_bezierrr&quot;)</p>
1434
1435 <p class="whs9">geompy.addToStudy(Wire_polyline, 
1436  &quot;Wire_polyline&quot;)</p>
1437
1438 <p class="whs9">geompy.addToStudy(Edge_Circle 
1439  &nbsp;, &quot;Edge_Circle&quot;)</p>
1440
1441 <p class="whs10">&nbsp;</p>
1442
1443 <p class="whs10"># 3. Explode wire on 
1444  edges, as they will be used for mesh extrusion</p>
1445
1446 <p class="whs9">Wire_polyline_edges 
1447  = geompy.SubShapeAll(Wire_polyline, geompy.ShapeType[&quot;EDGE&quot;])</p>
1448
1449 <p class="whs9">for ii in range(len(Wire_polyline_edges)):</p>
1450
1451 <p class="whs11">geompy.addToStudyInFather(Wire_polyline, 
1452  Wire_polyline_edges[ii], &quot;Edge_&quot; + `ii + 1`)</p>
1453
1454 <p class="whs11">pass</p>
1455
1456 <p class="whs12">&nbsp;</p>
1457
1458 <p class="whs10"># Mesh</p>
1459
1460 <p class="whs9">import smesh</p>
1461
1462 <p class="whs9">&nbsp;</p>
1463
1464 <p class="whs13"># Mesh 
1465  the given shape with the given 1d hypothesis</p>
1466
1467 <p class="whs14">def 
1468  Mesh1D(shape1d, nbSeg, name):</p>
1469
1470 <p class="whs14">&nbsp;&nbsp;mesh1d_tool 
1471  = smesh.Mesh(shape1d, name)</p>
1472
1473 <p class="whs14">&nbsp;&nbsp;algo 
1474  = mesh1d_tool.Segment()</p>
1475
1476 <p class="whs14">&nbsp;&nbsp;hyp 
1477  &nbsp;= algo.NumberOfSegments(nbSeg)</p>
1478
1479 <p class="whs14">&nbsp;&nbsp;isDone 
1480  = mesh1d_tool.Compute()</p>
1481
1482 <p class="whs14">&nbsp;&nbsp;if 
1483  not isDone: print 'Mesh ', name, ': computation failed'</p>
1484
1485 <p class="whs14">&nbsp;&nbsp;return 
1486  mesh1d_tool</p>
1487
1488 <p class="whs13"># Create 
1489  a mesh with six nodes, seven edges and two quadrangle faces</p>
1490
1491 <p class="whs14">def 
1492  MakeQuadMesh2(mesh_name):</p>
1493
1494 <p class="whs14">&nbsp;&nbsp;quad_1 
1495  = smesh.Mesh(name = mesh_name)</p>
1496
1497 <p class="whs14">&nbsp;&nbsp;</p>
1498
1499 <p class="whs14">&nbsp;&nbsp;<span 
1500  style="font-family: 'Times New Roman', serif;"># 
1501  six nodes</span></p>
1502
1503 <p class="whs14">&nbsp;&nbsp;n1 
1504  = quad_1.AddNode(0, 20, 10)</p>
1505
1506 <p class="whs14">&nbsp;&nbsp;n2 
1507  = quad_1.AddNode(0, 40, 10)</p>
1508
1509 <p class="whs14">&nbsp;&nbsp;n3 
1510  = quad_1.AddNode(0, 40, 30)</p>
1511
1512 <p class="whs14">&nbsp;&nbsp;n4 
1513  = quad_1.AddNode(0, 20, 30)</p>
1514
1515 <p class="whs14">&nbsp;&nbsp;n5 
1516  = quad_1.AddNode(0, &nbsp;0, 
1517  30)</p>
1518
1519 <p class="whs14">&nbsp;&nbsp;n6 
1520  = quad_1.AddNode(0, &nbsp;0, 
1521  10)</p>
1522
1523 <p class="whs14">&nbsp;&nbsp;</p>
1524
1525 <p class="whs14">&nbsp;&nbsp;<span 
1526  style="font-family: 'Times New Roman', serif;"># 
1527  seven edges</span></p>
1528
1529 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n1, 
1530  n2]) # 1</p>
1531
1532 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n2, 
1533  n3]) # 2</p>
1534
1535 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n3, 
1536  n4]) # 3</p>
1537
1538 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n4, 
1539  n1]) # 4</p>
1540
1541 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n4, 
1542  n5]) # 5</p>
1543
1544 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n5, 
1545  n6]) # 6</p>
1546
1547 <p class="whs14">&nbsp;&nbsp;quad_1.AddEdge([n6, 
1548  n1]) # 7</p>
1549
1550 <p class="whs14">&nbsp;</p>
1551
1552 <p class="whs14">&nbsp;&nbsp;<span 
1553  style="font-family: 'Times New Roman', serif;"># 
1554  two quadrangle faces</span></p>
1555
1556 <p class="whs14">&nbsp;&nbsp;quad_1.AddFace([n1, 
1557  n2, n3, n4]) # 8</p>
1558
1559 <p class="whs14">&nbsp;&nbsp;quad_1.AddFace([n1, 
1560  n4, n5, n6]) # 9</p>
1561
1562 <p class="whs14">&nbsp;&nbsp;return 
1563  [quad_1, [1,2,3,4,5,6,7], [8,9]]</p>
1564
1565 <p class="whs14">&nbsp;</p>
1566
1567 <p class="whs13"># Path 
1568  meshes</p>
1569
1570 <p class="whs14">Edge_straight_mesh 
1571  = Mesh1D(Edge_straight, 7, &quot;Edge_straight&quot;)</p>
1572
1573 <p class="whs14">Edge_bezierrr_mesh 
1574  = Mesh1D(Edge_bezierrr, 7, &quot;Edge_bezierrr&quot;)</p>
1575
1576 <p class="whs14">Wire_polyline_mesh 
1577  = Mesh1D(Wire_polyline, 3, &quot;Wire_polyline&quot;)</p>
1578
1579 <p class="whs14">Edge_Circle_mesh 
1580  &nbsp;&nbsp;= 
1581  Mesh1D(Edge_Circle &nbsp;, 
1582  8, &quot;Edge_Circle&quot;)</p>
1583
1584 <p class="whs14">&nbsp;</p>
1585
1586 <p class="whs13"># Initial 
1587  meshes (to be extruded)</p>
1588
1589 <p class="whs14">[quad_1, 
1590  ee_1, ff_1] = MakeQuadMesh2(&quot;quad_1&quot;)</p>
1591
1592 <p class="whs14">[quad_2, 
1593  ee_2, ff_2] = MakeQuadMesh2(&quot;quad_2&quot;)</p>
1594
1595 <p class="whs14">[quad_3, 
1596  ee_3, ff_3] = MakeQuadMesh2(&quot;quad_3&quot;)</p>
1597
1598 <p class="whs14">[quad_4, 
1599  ee_4, ff_4] = MakeQuadMesh2(&quot;quad_4&quot;)</p>
1600
1601 <p class="whs14">[quad_5, 
1602  ee_5, ff_5] = MakeQuadMesh2(&quot;quad_5&quot;)</p>
1603
1604 <p class="whs14">[quad_6, 
1605  ee_6, ff_6] = MakeQuadMesh2(&quot;quad_6&quot;)</p>
1606
1607 <p class="whs14">[quad_7, 
1608  ee_7, ff_7] = MakeQuadMesh2(&quot;quad_7&quot;)</p>
1609
1610 <p class="whs14">&nbsp;</p>
1611
1612 <p class="whs13"># ExtrusionAlongPath</p>
1613
1614 <p class="whs13"># IDsOfElements, 
1615  PathMesh, PathShape, NodeStart,</p>
1616
1617 <p class="whs13"># HasAngles, 
1618  Angles, HasRefPoint, RefPoint</p>
1619
1620 <p class="whs14">refPoint 
1621  = smesh.PointStruct(0, 0, 0)</p>
1622
1623 <p class="whs14">a10 
1624  = 10.0*math.pi/180.0</p>
1625
1626 <p class="whs14">a45 
1627  = 45.0*math.pi/180.0</p>
1628
1629 <p class="whs14">&nbsp;</p>
1630
1631 <p class="whs13"># 1. 
1632  Extrusion of two mesh edges along a straight path</p>
1633
1634 <p class="whs14">error 
1635  = quad_1.ExtrusionAlongPath([1,2], Edge_straight_mesh, Edge_straight, 
1636  1,</p>
1637
1638 <p class="whs14">&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;&nbsp;0, 
1639  [], 0, refPoint)</p>
1640
1641 <p class="whs14">&nbsp;</p>
1642
1643 <p class="whs13"># 2. 
1644  Extrusion of one mesh edge along a curved path</p>
1645
1646 <p class="whs14">error 
1647  = quad_2.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
1648
1649 <p class="whs14">&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;&nbsp;0, 
1650  [], 0, refPoint)</p>
1651
1652 <p class="whs14">&nbsp;</p>
1653
1654 <p class="whs13"># 3. 
1655  Extrusion of one mesh edge along a curved path with usage of angles</p>
1656
1657 <p class="whs14">error 
1658  = quad_3.ExtrusionAlongPath([2], Edge_bezierrr_mesh, Edge_bezierrr, 1,</p>
1659
1660 <p class="whs14">&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;&nbsp;1, 
1661  [a45, a45, a45, 0, -a45, -a45, -a45], 0, refPoint)</p>
1662
1663 <p class="whs14">&nbsp;</p>
1664
1665 <p class="whs13"># 4. 
1666  Extrusion of one mesh edge along the path, which is a part of a meshed 
1667  wire</p>
1668
1669 <p class="whs14">error 
1670  = quad_4.ExtrusionAlongPath([4], Wire_polyline_mesh, Wire_polyline_edges[0], 
1671  1,</p>
1672
1673 <p class="whs14">&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;&nbsp;1, 
1674  [a10, a10, a10], 0, refPoint)</p>
1675
1676 <p class="whs14">&nbsp;</p>
1677
1678 <p class="whs13"># 5. 
1679  Extrusion of two mesh faces along the path, which is a part of a meshed 
1680  wire</p>
1681
1682 <p class="whs14">error 
1683  = quad_5.ExtrusionAlongPath(ff_5 , Wire_polyline_mesh, Wire_polyline_edges[2], 
1684  4,</p>
1685
1686 <p class="whs14">&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;&nbsp;0, 
1687  [], 0, refPoint)</p>
1688
1689 <p class="whs14">&nbsp;</p>
1690
1691 <p class="whs13"># 6. 
1692  Extrusion of two mesh faces along a closed path</p>
1693
1694 <p class="whs14">error 
1695  = quad_6.ExtrusionAlongPath(ff_6 , Edge_Circle_mesh, Edge_Circle, 1,</p>
1696
1697 <p class="whs14">&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;&nbsp;0, 
1698  [], 0, refPoint)</p>
1699
1700 <p class="whs14">&nbsp;</p>
1701
1702 <p class="whs13"># 7. 
1703  Extrusion of two mesh faces along a closed path with usage of angles</p>
1704
1705 <p class="whs14">error 
1706  = quad_7.ExtrusionAlongPath(ff_7, Edge_Circle_mesh, Edge_Circle, 1,</p>
1707
1708 <p class="whs14">&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;&nbsp;1, 
1709  [a45, -a45, a45, -a45, a45, -a45, a45, -a45], 0, refPoint)</p>
1710
1711 <p class="whs14">&nbsp;</p>
1712
1713 <p class="whs14">salome.sg.updateObjBrowser(1) 
1714  </p>
1715
1716 <h3><a name=bookmark11>Revolution</a></h3>
1717
1718 <p class="whs9">import math</p>
1719
1720 <p class="whs9">&nbsp;</p>
1721
1722 <p class="whs9">import SMESH_mechanic</p>
1723
1724 <p class="whs9">&nbsp;</p>
1725
1726 <p class="whs9"><span style="font-family: 'Lucida Console', monospace;">mesh 
1727  &nbsp;= SMESH_mechanic.mesh</span></p>
1728
1729 <p class="whs9">smesh = SMESH_mechanic.smesh</p>
1730
1731 <p class="whs9">&nbsp;</p>
1732
1733 <p class="whs10"># create a group of faces 
1734  to be revolved</p>
1735
1736 <p class="whs9">FacesRotate = [492, 
1737  493, 502, 503]</p>
1738
1739 <p class="whs9">GroupRotate = mesh.CreateGroup(SMESH.FACE,&quot;Group 
1740  of faces (rotate)&quot;)</p>
1741
1742 <p class="whs9">GroupRotate.Add(FacesRotate)</p>
1743
1744 <p class="whs10">&nbsp;</p>
1745
1746 <p class="whs10"># define revolution angle 
1747  and axis</p>
1748
1749 <p class="whs9">angle45 = 45 * math.pi 
1750  / 180</p>
1751
1752 <p class="whs9">axisXYZ = SMESH.AxisStruct(-38.3128, 
1753  -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
1754
1755 <p class="whs9">&nbsp;</p>
1756
1757 <p class="whs10"># perform revolution 
1758  of an object</p>
1759
1760 <p class="whs9">mesh.RotationSweepObject(GroupRotate, 
1761  axisXYZ, angle45, 4, 1e-5) </p>
1762
1763 <p class="whs10">&nbsp;</p>
1764
1765 <h3><a name=bookmark13>Pattern Mapping</a></h3>
1766
1767 <p class="whs9">import geompy</p>
1768
1769 <p class="whs9">&nbsp;</p>
1770
1771 <p class="whs9">import smesh</p>
1772
1773 <p class="whs9">&nbsp;</p>
1774
1775 <p class="whs9"># define the geometry</p>
1776
1777 <p class="whs10">Box_1 = geompy.MakeBoxDXDYDZ(200., 
1778  200., 200.)</p>
1779
1780 <p class="whs10">geompy.addToStudy(Box_1, 
1781  &quot;Box_1&quot;)</p>
1782
1783 <p class="whs10">&nbsp;</p>
1784
1785 <p class="whs10">faces = geompy.SubShapeAll(Box_1, 
1786  geompy.ShapeType[&quot;FACE&quot;])</p>
1787
1788 <p class="whs10">Face_1 = faces[0]</p>
1789
1790 <p class="whs10">Face_2 = faces[1]</p>
1791
1792 <p class="whs10">&nbsp;</p>
1793
1794 <p class="whs10">geompy.addToStudyInFather(Box_1, 
1795  Face_1, &quot;Face_1&quot;)</p>
1796
1797 <p class="whs10">geompy.addToStudyInFather(Box_1, 
1798  Face_2, &quot;Face_2&quot;)</p>
1799
1800 <p class="whs10">&nbsp;</p>
1801
1802 <p class="whs9"># build a quadrangle 
1803  mesh 3x3 on Face_1</p>
1804
1805 <p class="whs10">Mesh_1 = smesh.Mesh(Face_1)</p>
1806
1807 <p class="whs10">algo1D = Mesh_1.Segment()</p>
1808
1809 <p class="whs10">algo1D.NumberOfSegments(3)</p>
1810
1811 <p class="whs10">Mesh_1.Quadrangle()</p>
1812
1813 <p class="whs10">&nbsp;</p>
1814
1815 <p class="whs10">isDone = Mesh_1.Compute()</p>
1816
1817 <p class="whs10">if not isDone: print 
1818  'Mesh Mesh_1 : computation failed'</p>
1819
1820 <p class="whs10">&nbsp;</p>
1821
1822 <p class="whs9"># build a triangle 
1823  mesh on Face_2</p>
1824
1825 <p class="whs10">Mesh_2 = smesh.Mesh(Face_2)</p>
1826
1827 <p class="whs10">&nbsp;</p>
1828
1829 <p class="whs10">algo1D = Mesh_2.Segment()</p>
1830
1831 <p class="whs10">algo1D.NumberOfSegments(1)</p>
1832
1833 <p class="whs10">algo2D = Mesh_2.Triangle()</p>
1834
1835 <p class="whs10">algo2D.MaxElementArea(240)</p>
1836
1837 <p class="whs10">&nbsp;</p>
1838
1839 <p class="whs10">isDone = Mesh_2.Compute()</p>
1840
1841 <p class="whs10">if not isDone: print 
1842  'Mesh Mesh_2 : computation failed'</p>
1843
1844 <p class="whs10">&nbsp;</p>
1845
1846 <p class="whs9"># create a pattern</p>
1847
1848 <p class="whs10">pattern = smesh.GetPattern()</p>
1849
1850 <p class="whs10">&nbsp;</p>
1851
1852 <p class="whs10">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(), 
1853  Face_2, 0)</p>
1854
1855 <p class="whs10">if (isDone != 1): print 
1856  'LoadFromFace :', pattern.GetErrorCode()</p>
1857
1858 <p class="whs10">&nbsp;</p>
1859
1860 <p class="whs9"># apply the pattern 
1861  to a face of the first mesh</p>
1862
1863 <p class="whs10">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(), 
1864  [17], 0, 0)</p>
1865
1866 <p class="whs10">&nbsp;</p>
1867
1868 <p class="whs10">isDone = pattern.MakeMesh(Mesh_1.GetMesh(), 
1869  0, 0)</p>
1870
1871 <p class="whs10">if (isDone != 1): print 
1872  'MakeMesh :', pattern.GetErrorCode() &nbsp;</p>
1873
1874 <script type="text/javascript" language="javascript1.2">
1875 <!--
1876 if (window.writeIntopicBar)
1877         writeIntopicBar(0);
1878 //-->
1879 </script>
1880 </body>
1881 </html>