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