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