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