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