Salome HOME
PAL12557: SMESH Documentation for scripts is not up to date.
[modules/smesh.git] / doc / salome / gui / SMESH / transforming_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>Transforming 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 type="text/css">\r
9 <!--\r
10 h3.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
11 h4.whs2 { margin-top:0pt; margin-bottom:0pt; }\r
12 p.whs3 { font-family:'Lucida Console' , monospace; margin-top:0pt; margin-bottom:0pt; }\r
13 p.whs4 { margin-top:0pt; margin-bottom:0pt; font-weight:bold; color:#ff0000; }\r
14 p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
15 p.whs6 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }\r
16 p.whs7 { margin-top:0pt; margin-bottom:0pt; }\r
17 -->\r
18 </style><script type="text/javascript" language="JavaScript">\r
19 <!--\r
20 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
21 {\r
22   var strNSS = "<style type='text/css'>";\r
23   strNSS += "h3.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
24   strNSS += "h4.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
25   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";\r
26   strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";\r
27   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";\r
28   strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";\r
29   strNSS += "p.whs7 {margin-top:1pt;margin-bottom:1pt; }";\r
30   strNSS +="</style>";\r
31   document.write(strNSS);\r
32 }\r
33 //-->\r
34 </script>\r
35 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
36 <!--\r
37 function reDo() {\r
38   if (innerWidth != origWidth || innerHeight != origHeight)\r
39      location.reload();\r
40 }\r
41 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
42         origWidth = innerWidth;\r
43         origHeight = innerHeight;\r
44         onresize = reDo;\r
45 }\r
46 onerror = null; \r
47 //-->\r
48 </script>\r
49 <style type="text/css">\r
50 <!--\r
51 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
52 p.WebHelpNavBar { text-align:right; }\r
53 -->\r
54 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
55 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
56 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
57 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
58 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
59 <script type="text/javascript" language="javascript1.2">\r
60 <!--\r
61 if (window.gbWhTopic)\r
62 {\r
63         if (window.setRelStartPage)\r
64         {\r
65         addTocInfo("MESH module\nTUI Scripts\nTransforming Meshes");\r
66 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
67 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
68 \r
69         }\r
70 \r
71 \r
72         if (window.setRelStartPage)\r
73         {\r
74         setRelStartPage("index.htm");\r
75 \r
76                 autoSync(1);\r
77                 sendSyncInfo();\r
78                 sendAveInfoOut();\r
79         }\r
80 \r
81 }\r
82 else\r
83         if (window.gbIE4)\r
84                 document.location.reload();\r
85 //-->\r
86 </script>\r
87 </head>\r
88 <body><script type="text/javascript" language="javascript1.2">\r
89 <!--\r
90 if (window.writeIntopicBar)\r
91         writeIntopicBar(4);\r
92 //-->\r
93 </script>\r
94 <h1>Transforming Meshes</h1>\r
95 \r
96 <h3 class="whs1">Transforming Meshes</h3>\r
97 \r
98 <h4 class="whs2">&nbsp;</h4>\r
99 \r
100 <h4 class="whs2"><a name=bookmark>Translation</a></h4>\r
101 \r
102 <p class="whs3">&nbsp;</p>\r
103 \r
104 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
105  Attention! This script has been written using the old approach basing \r
106  on direct usage of SMESH idl interface.</B></font></span></p>\r
107 \r
108 <p class="whs4"># For the moment smesh package doesn't provide \r
109  methods to translate meshes. </p>\r
110 \r
111 <p class="whs4"># In the next SALOME version the scripts will \r
112  be updated to use only the commands from smesh package.</p>\r
113 \r
114 <p class="whs5">&nbsp;</p>\r
115 \r
116 <p class="whs5">import SMESH</p>\r
117 \r
118 <p class="whs5">import SMESH_mechanic</p>\r
119 \r
120 <p class="whs5">&nbsp;</p>\r
121 \r
122 <p class="whs5">mesh = SMESH_mechanic.mesh</p>\r
123 \r
124 <p class="whs5">anEditor = mesh.GetMeshEditor()</p>\r
125 \r
126 <p class="whs5">&nbsp;</p>\r
127 \r
128 <p class="whs6"># define translation \r
129  vector</p>\r
130 \r
131 <p class="whs5">point = SMESH.PointStruct(-150., \r
132  -150., 0.)</p>\r
133 \r
134 <p class="whs5">vector = SMESH.DirStruct(point)</p>\r
135 \r
136 <p class="whs5">&nbsp;</p>\r
137 \r
138 <p class="whs6"># translate a mesh</p>\r
139 \r
140 <p class="whs5">doCopy = 1</p>\r
141 \r
142 <p class="whs5">anEditor.TranslateObject(mesh, \r
143  vector, doCopy) </p>\r
144 \r
145 <p class="whs7">&nbsp;</p>\r
146 \r
147 <h4 class="whs2"><a name=bookmark1>Rotation</a></h4>\r
148 \r
149 <p class="whs3">&nbsp;</p>\r
150 \r
151 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
152  Attention! This script has been written using the old approach basing \r
153  on direct usage of SMESH idl interface.</B></font></span></p>\r
154 \r
155 <p class="whs4"># For the moment smesh package doesn't provide \r
156  methods to rotate meshes. </p>\r
157 \r
158 <p class="whs4"># In the next SALOME version the scripts will \r
159  be updated to use only the commands from smesh package.</p>\r
160 \r
161 <p class="whs3">&nbsp;</p>\r
162 \r
163 <p class="whs3">import math</p>\r
164 \r
165 <p class="whs3">import SMESH</p>\r
166 \r
167 <p class="whs3">import SMESH_mechanic</p>\r
168 \r
169 <p class="whs3">&nbsp;</p>\r
170 \r
171 <p class="whs3">mesh = SMESH_mechanic.mesh</p>\r
172 \r
173 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>\r
174 \r
175 <p class="whs3">&nbsp;</p>\r
176 \r
177 <p class="whs6"># define rotation axis \r
178  and angle</p>\r
179 \r
180 <p class="whs3">axisXYZ = SMESH.AxisStruct(0., 0., 0., \r
181  5., 5., 20.)</p>\r
182 \r
183 <p class="whs3">angle270 = 1.5 * math.pi</p>\r
184 \r
185 <p class="whs3">&nbsp;</p>\r
186 \r
187 <p class="whs6"># rotate a mesh</p>\r
188 \r
189 <p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle270, \r
190  1) </p>\r
191 \r
192 <p class="whs7">&nbsp;</p>\r
193 \r
194 <h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>\r
195 \r
196 <p class="whs3">&nbsp;</p>\r
197 \r
198 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
199  Attention! This script has been written using the old approach basing \r
200  on direct usage of SMESH idl interface.</B></font></span></p>\r
201 \r
202 <p class="whs4"># For the moment smesh package doesn't provide \r
203  methods to create symmetrical copies of meshes. </p>\r
204 \r
205 <p class="whs4"># In the next SALOME version the scripts will \r
206  be updated to use only the commands from smesh package.</p>\r
207 \r
208 <p class="whs3">&nbsp;</p>\r
209 \r
210 <p class="whs3">import math</p>\r
211 \r
212 <p class="whs3">import SMESH</p>\r
213 \r
214 <p class="whs3">import SMESH_mechanic</p>\r
215 \r
216 <p class="whs3">&nbsp;</p>\r
217 \r
218 <p class="whs3">mesh = SMESH_mechanic.mesh</p>\r
219 \r
220 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>\r
221 \r
222 <p class="whs3">&nbsp;</p>\r
223 \r
224 <p class="whs6"># create a symmetrical \r
225  copy of the mesh mirrored through a point</p>\r
226 \r
227 <p class="whs3">axis = SMESH.AxisStruct(0, 0, 0, 0, 0, \r
228  0)</p>\r
229 \r
230 <p class="whs3">anEditor.MirrorObject(mesh, axis, SMESH.SMESH_MeshEditor.POINT, \r
231  1) </p>\r
232 \r
233 <p class="whs7">&nbsp;</p>\r
234 \r
235 <h4 class="whs2"><a name=bookmark3>Merging \r
236  Nodes</a></h4>\r
237 \r
238 <p class="whs3">&nbsp;</p>\r
239 \r
240 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
241  Attention! This script has been written using the old approach basing \r
242  on direct usage of SMESH idl interface.</B></font></span></p>\r
243 \r
244 <p class="whs4"># For the moment smesh package doesn't provide \r
245  methods to merge nodes. </p>\r
246 \r
247 <p class="whs4"># In the next SALOME version the scripts will \r
248  be updated to use only the commands from smesh package.</p>\r
249 \r
250 <p class="whs6">&nbsp;</p>\r
251 \r
252 <p class="whs5">import SMESH_mechanic</p>\r
253 \r
254 <p class="whs5">mesh = SMESH_mechanic.mesh</p>\r
255 \r
256 <p class="whs5">&nbsp;</p>\r
257 \r
258 <p class="whs5">aMeshEditor = mesh.GetMeshEditor()</p>\r
259 \r
260 <p class="whs5">&nbsp;</p>\r
261 \r
262 <p class="whs6"># merge nodes</p>\r
263 \r
264 <p class="whs5">Tolerance = 25.0</p>\r
265 \r
266 <p class="whs5">&nbsp;</p>\r
267 \r
268 <p class="whs5">GroupsOfNodes = \r
269  aMeshEditor.FindCoincidentNodes(Tolerance)</p>\r
270 \r
271 <p class="whs7"><span style="font-family: 'Lucida Console', monospace;">aMeshEditor.MergeNodes(GroupsOfNodes)</span> \r
272  </p>\r
273 \r
274 <p class="whs7">&nbsp;</p>\r
275 \r
276 <h4><a name=bookmark8>Merging Elements</a></h4>\r
277 \r
278 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
279  Attention! This script has been written using the old approach basing \r
280  on direct usage of SMESH idl interface.</B></font></span></p>\r
281 \r
282 <p class="whs4"># For the moment smesh package doesn't provide \r
283  methods to merge elements. </p>\r
284 \r
285 <p class="whs4"># In the next SALOME version the scripts will \r
286  be updated to use only the commands from smesh package.</p>\r
287 \r
288 <p class="whs6">&nbsp;</p>\r
289 \r
290 <p class="whs5">import salome</p>\r
291 \r
292 <p class="whs5">import geompy</p>\r
293 \r
294 <p class="whs5">import smesh</p>\r
295 \r
296 <p class="whs5">import SMESH</p>\r
297 \r
298 <p class="whs5">&nbsp;</p>\r
299 \r
300 <p class="whs6"># create a face to \r
301  be meshed</p>\r
302 \r
303 <p class="whs5">px = geompy.MakeVertex(100., \r
304  0. &nbsp;, 0. \r
305  &nbsp;)</p>\r
306 \r
307 <p class="whs5">py = geompy.MakeVertex(0. \r
308  &nbsp;, 100., \r
309  0. &nbsp;)</p>\r
310 \r
311 <p class="whs5">pz = geompy.MakeVertex(0. \r
312  &nbsp;, 0. &nbsp;, \r
313  100.)</p>\r
314 \r
315 <p class="whs5">&nbsp;</p>\r
316 \r
317 <p class="whs5">vxy = geompy.MakeVector(px, \r
318  py)</p>\r
319 \r
320 <p class="whs5">arc = geompy.MakeArc(py, \r
321  pz, px)</p>\r
322 \r
323 <p class="whs5">&nbsp;</p>\r
324 \r
325 <p class="whs5">wire = geompy.MakeWire([vxy, \r
326  arc])</p>\r
327 \r
328 <p class="whs5">isPlanarFace = 1</p>\r
329 \r
330 <p class="whs5">&nbsp;</p>\r
331 \r
332 <p class="whs5">face1 = geompy.MakeFace(wire, \r
333  isPlanarFace)</p>\r
334 \r
335 <p class="whs5">id_face1 = geompy.addToStudy(face1, \r
336  &quot;Face1&quot;)</p>\r
337 \r
338 <p class="whs5">&nbsp;</p>\r
339 \r
340 <p class="whs6"># create a circle to \r
341  be an extrusion path</p>\r
342 \r
343 <p class="whs5">px1 = geompy.MakeVertex( \r
344  100., &nbsp;100., \r
345  &nbsp;0.)</p>\r
346 \r
347 <p class="whs5">py1 = geompy.MakeVertex(-100., \r
348  -100., &nbsp;0.)</p>\r
349 \r
350 <p class="whs5">pz1 = geompy.MakeVertex( \r
351  &nbsp;&nbsp;0., \r
352  &nbsp;&nbsp;&nbsp;0., \r
353  50.)</p>\r
354 \r
355 <p class="whs5">&nbsp;</p>\r
356 \r
357 <p class="whs5">circle = geompy.MakeCircleThreePnt(py1, \r
358  pz1, px1)</p>\r
359 \r
360 <p class="whs5">id_circle = geompy.addToStudy(circle, \r
361  &quot;Path&quot;)</p>\r
362 \r
363 <p class="whs5">&nbsp;</p>\r
364 \r
365 <p class="whs6"># create a 2D mesh \r
366  on the face</p>\r
367 \r
368 <p class="whs5">trias = smesh.Mesh(face1, \r
369  &quot;Face : 2D mesh&quot;)</p>\r
370 \r
371 <p class="whs5">&nbsp;</p>\r
372 \r
373 <p class="whs5">algo1D = trias.Segment()</p>\r
374 \r
375 <p class="whs5">algo1D.NumberOfSegments(6)</p>\r
376 \r
377 <p class="whs5">algo2D = trias.Triangle()</p>\r
378 \r
379 <p class="whs5">algo2D.LengthFromEdges()</p>\r
380 \r
381 <p class="whs5">&nbsp;</p>\r
382 \r
383 <p class="whs5">trias.Compute()</p>\r
384 \r
385 <p class="whs5">tri_mesh = trias.GetMesh()</p>\r
386 \r
387 <p class="whs6">&nbsp;</p>\r
388 \r
389 <p class="whs6"># create a path mesh</p>\r
390 \r
391 <p class="whs5">circlemesh = smesh.Mesh(circle, \r
392  &quot;Path mesh&quot;)</p>\r
393 \r
394 <p class="whs5">algo = circlemesh.Segment()</p>\r
395 \r
396 <p class="whs5">algo.NumberOfSegments(10)</p>\r
397 \r
398 <p class="whs5">circlemesh.Compute()</p>\r
399 \r
400 <p class="whs6">&nbsp;</p>\r
401 \r
402 <p class="whs6"># extrusion of the \r
403  mesh</p>\r
404 \r
405 <p class="whs5">aMeshEditor = tri_mesh.GetMeshEditor()</p>\r
406 \r
407 <p class="whs5">aMeshEditor.ExtrusionAlongPathObject(tri_mesh, \r
408  circlemesh.GetMesh(), circle,</p>\r
409 \r
410 <p class="whs5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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
411  0, [], 0, SMESH.PointStruct(0, 0, 0))</p>\r
412 \r
413 <p class="whs6"># merge nodes</p>\r
414 \r
415 <p class="whs5">print &quot;Number \r
416  of nodes before MergeNodes:&quot;, tri_mesh.NbNodes()</p>\r
417 \r
418 <p class="whs5">&nbsp;</p>\r
419 \r
420 <p class="whs5">tolerance = 0.001</p>\r
421 \r
422 <p class="whs5">array_of_nodes_groups \r
423  = aMeshEditor.FindCoincidentNodes(tolerance)</p>\r
424 \r
425 <p class="whs5">aMeshEditor.MergeNodes(array_of_nodes_groups)</p>\r
426 \r
427 <p class="whs5">&nbsp;</p>\r
428 \r
429 <p class="whs5">print &quot;Number \r
430  of nodes after MergeNodes:&quot;, tri_mesh.NbNodes()</p>\r
431 \r
432 <p class="whs5">print &quot;&quot;</p>\r
433 \r
434 <p class="whs5">print &quot;Number \r
435  of elements before MergeEqualElements:&quot;</p>\r
436 \r
437 <p class="whs5">print &quot;Edges \r
438  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: \r
439  &quot;, tri_mesh.NbEdges()</p>\r
440 \r
441 <p class="whs5">print &quot;Triangles \r
442  &nbsp;: &quot;, \r
443  tri_mesh.NbTriangles()</p>\r
444 \r
445 <p class="whs5">print &quot;Quadrangles: \r
446  &quot;, tri_mesh.NbQuadrangles()</p>\r
447 \r
448 <p class="whs5">print &quot;Volumes \r
449  &nbsp;&nbsp;&nbsp;: \r
450  &quot;, tri_mesh.NbVolumes()</p>\r
451 \r
452 <p class="whs6">&nbsp;</p>\r
453 \r
454 <p class="whs6"># merge elements</p>\r
455 \r
456 <p class="whs5">aMeshEditor.MergeEqualElements()</p>\r
457 \r
458 <p class="whs5">&nbsp;</p>\r
459 \r
460 <p class="whs5">print &quot;Number \r
461  of elements after MergeEqualElements:&quot;</p>\r
462 \r
463 <p class="whs5">print &quot;Edges \r
464  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: \r
465  &quot;, tri_mesh.NbEdges()</p>\r
466 \r
467 <p class="whs5">print &quot;Triangles \r
468  &nbsp;: &quot;, \r
469  tri_mesh.NbTriangles()</p>\r
470 \r
471 <p class="whs5">print &quot;Quadrangles: \r
472  &quot;, tri_mesh.NbQuadrangles()</p>\r
473 \r
474 <p class="whs5">print &quot;Volumes \r
475  &nbsp;&nbsp;&nbsp;: \r
476  &quot;, tri_mesh.NbVolumes()</p>\r
477 \r
478 <p class="whs5">&nbsp;</p>\r
479 \r
480 <p class="whs5">salome.sg.updateObjBrowser(1) \r
481  </p>\r
482 \r
483 <p class="whs5">&nbsp;</p>\r
484 \r
485 <h3>Sewing Meshes</h3>\r
486 \r
487 <h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>\r
488 \r
489 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
490  Attention! This script has been written using the old approach basing \r
491  on direct usage of SMESH idl interface.</B></font></span></p>\r
492 \r
493 <p class="whs4"># For the moment smesh package doesn't provide \r
494  methods to sew meshes border to border. </p>\r
495 \r
496 <p class="whs4"># In the next SALOME version the scripts will \r
497  be updated to use only the commands from smesh package.</p>\r
498 \r
499 <p class="whs7">&nbsp;</p>\r
500 \r
501 <p class="whs5">import geompy</p>\r
502 \r
503 <p class="whs5">import smesh</p>\r
504 \r
505 <p class="whs5">&nbsp;</p>\r
506 \r
507 <p class="whs6"># create two faces \r
508  of a box</p>\r
509 \r
510 <p class="whs5">box1 = geompy.MakeBox(0., \r
511  0., -10., 30., 20., 25.)</p>\r
512 \r
513 <p class="whs5">facesList1 = geompy.SubShapeAll(box1, \r
514  geompy.ShapeType[&quot;FACE&quot;])</p>\r
515 \r
516 <p class="whs5">face1 = facesList1[2]</p>\r
517 \r
518 <p class="whs5">&nbsp;</p>\r
519 \r
520 <p class="whs5">box2 = geompy.MakeBox(0., \r
521  5., 0., 20., 20., 15.)</p>\r
522 \r
523 <p class="whs5">facesList2 = geompy.SubShapeAll(box2, \r
524  geompy.ShapeType[&quot;FACE&quot;])</p>\r
525 \r
526 <p class="whs5">face2 = facesList2[1]</p>\r
527 \r
528 <p class="whs5">&nbsp;</p>\r
529 \r
530 <p class="whs5">edgesList = geompy.SubShapeAll(face2, \r
531  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
532 \r
533 <p class="whs5">edge1 = edgesList[2]</p>\r
534 \r
535 <p class="whs5">&nbsp;</p>\r
536 \r
537 <p class="whs5">aComp = geompy.MakeCompound([face1, \r
538  face2])</p>\r
539 \r
540 <p class="whs5">geompy.addToStudy(aComp, \r
541  &quot;Two faces&quot;)</p>\r
542 \r
543 <p class="whs5">&nbsp;</p>\r
544 \r
545 <p class="whs6"># create a mesh on \r
546  two faces</p>\r
547 \r
548 <p class="whs5">mesh = smesh.Mesh(aComp, \r
549  &quot;Two faces : quadrangle mesh&quot;)</p>\r
550 \r
551 <p class="whs5">&nbsp;</p>\r
552 \r
553 <p class="whs5">algo1D = mesh.Segment()</p>\r
554 \r
555 <p class="whs5">algo1D.NumberOfSegments(9)</p>\r
556 \r
557 <p class="whs5">algo2D = mesh.Quadrangle()</p>\r
558 \r
559 <p class="whs5">&nbsp;</p>\r
560 \r
561 <p class="whs5">algo_local = mesh.Segment(edge1)</p>\r
562 \r
563 <p class="whs5">algo_local.Arithmetic1D(1, \r
564  4)</p>\r
565 \r
566 <p class="whs5">algo_local.Propagation()</p>\r
567 \r
568 <p class="whs5">&nbsp;</p>\r
569 \r
570 <p class="whs5">mesh.Compute()</p>\r
571 \r
572 <p class="whs5">&nbsp;</p>\r
573 \r
574 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
575 \r
576 <p class="whs5">&nbsp;</p>\r
577 \r
578 <p class="whs6"># sew border to side</p>\r
579 \r
580 <p class="whs6"># FirstNodeIDOnFreeBorder, \r
581  SecondNodeIDOnFreeBorder, LastNodeIDOnFreeBorder,</p>\r
582 \r
583 <p class="whs6"># FirstNodeIDOnSide, \r
584  LastNodeIDOnSide,</p>\r
585 \r
586 <p class="whs6"># CreatePolygons, CreatePolyedrs</p>\r
587 \r
588 <p class="whs5">anEditor.SewBorderToSide(5, \r
589  45, 6, 113, 109, 0, 0) </p>\r
590 \r
591 <h4><a name=bookmark5>Sew Conform Free Borders</a></h4>\r
592 \r
593 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
594  Attention! This script has been written using the old approach basing \r
595  on direct usage of SMESH idl interface.</B></font></span></p>\r
596 \r
597 <p class="whs4"># For the moment smesh package doesn't provide \r
598  methods to sew conform free borders. </p>\r
599 \r
600 <p class="whs4"># In the next SALOME version the scripts will \r
601  be updated to use only the commands from smesh package.</p>\r
602 \r
603 <p class="whs5">&nbsp;</p>\r
604 \r
605 <p class="whs5">import geompy</p>\r
606 \r
607 <p class="whs5">import smesh</p>\r
608 \r
609 <p class="whs5">&nbsp;</p>\r
610 \r
611 <p class="whs6"># create two faces \r
612  of the box</p>\r
613 \r
614 <p class="whs5">box1 = geompy.MakeBox(0., \r
615  0., -10., 20., 20., 15.)</p>\r
616 \r
617 <p class="whs5">facesList1 = geompy.SubShapeAll(box1, \r
618  geompy.ShapeType[&quot;FACE&quot;])</p>\r
619 \r
620 <p class="whs5">face1 = facesList1[2]</p>\r
621 \r
622 <p class="whs5">&nbsp;</p>\r
623 \r
624 <p class="whs5">box2 = geompy.MakeBox(0., \r
625  5., 0., 20., 20., 15.)</p>\r
626 \r
627 <p class="whs5">facesList2 = geompy.SubShapeAll(box2, \r
628  geompy.ShapeType[&quot;FACE&quot;])</p>\r
629 \r
630 <p class="whs5">face2 = facesList2[1]</p>\r
631 \r
632 <p class="whs5">&nbsp;</p>\r
633 \r
634 <p class="whs5">edgesList = geompy.SubShapeAll(face2, \r
635  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
636 \r
637 <p class="whs5">edge1 = edgesList[2]</p>\r
638 \r
639 <p class="whs5">&nbsp;</p>\r
640 \r
641 <p class="whs5">aComp = geompy.MakeCompound([face1, \r
642  face2])</p>\r
643 \r
644 <p class="whs5">geompy.addToStudy(aComp, \r
645  &quot;Two faces&quot;)</p>\r
646 \r
647 <p class="whs5">&nbsp;</p>\r
648 \r
649 <p class="whs6"># create a mesh on \r
650  two faces</p>\r
651 \r
652 <p class="whs5">mesh = smesh.Mesh(aComp, \r
653  &quot;Two faces : quadrangle mesh&quot;)</p>\r
654 \r
655 <p class="whs5">&nbsp;</p>\r
656 \r
657 <p class="whs5">algo1D = mesh.Segment()</p>\r
658 \r
659 <p class="whs5">algo1D.NumberOfSegments(9)</p>\r
660 \r
661 <p class="whs5">algo2D = mesh.Quadrangle()</p>\r
662 \r
663 <p class="whs5">&nbsp;</p>\r
664 \r
665 <p class="whs5">algo_local = mesh.Segment(edge1)</p>\r
666 \r
667 <p class="whs5">algo_local.Arithmetic1D(1, \r
668  4)</p>\r
669 \r
670 <p class="whs5">algo_local.Propagation()</p>\r
671 \r
672 <p class="whs5">&nbsp;</p>\r
673 \r
674 <p class="whs5">mesh.Compute()</p>\r
675 \r
676 <p class="whs5">&nbsp;</p>\r
677 \r
678 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
679 \r
680 <p class="whs5">&nbsp;</p>\r
681 \r
682 <p class="whs6"># sew conform free \r
683  borders</p>\r
684 \r
685 <p class="whs6"># FirstNodeID1, SecondNodeID1, \r
686  LastNodeID1, FirstNodeID2, SecondNodeID2</p>\r
687 \r
688 <p class="whs5">anEditor.SewConformFreeBorders(5, \r
689  45, 6, 3, 24) </p>\r
690 \r
691 <h4><a name=bookmark6>Sew Free Borders</a></h4>\r
692 \r
693 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
694  Attention! This script has been written using the old approach basing \r
695  on direct usage of SMESH idl interface.</B></font></span></p>\r
696 \r
697 <p class="whs4"># For the moment smesh package doesn't provide \r
698  methods to sew free borders. </p>\r
699 \r
700 <p class="whs4"># In the next SALOME version the scripts will \r
701  be updated to use only the commands from smesh package.</p>\r
702 \r
703 <p class="whs7">&nbsp;</p>\r
704 \r
705 <p class="whs5">import geompy</p>\r
706 \r
707 <p class="whs5">import smesh</p>\r
708 \r
709 <p class="whs5">&nbsp;</p>\r
710 \r
711 <p class="whs6"># create two faces \r
712  of the box</p>\r
713 \r
714 <p class="whs5">box1 = geompy.MakeBox(0., \r
715  0., 0., 20., 20., 15.)</p>\r
716 \r
717 <p class="whs5">facesList1 = geompy.SubShapeAll(box1, \r
718  geompy.ShapeType[&quot;FACE&quot;])</p>\r
719 \r
720 <p class="whs5">face1 = facesList1[2]</p>\r
721 \r
722 <p class="whs5">&nbsp;</p>\r
723 \r
724 <p class="whs5">box2 = geompy.MakeBox(0., \r
725  5., 0., 20., 20., 15.)</p>\r
726 \r
727 <p class="whs5">facesList2 = geompy.SubShapeAll(box2, \r
728  geompy.ShapeType[&quot;FACE&quot;])</p>\r
729 \r
730 <p class="whs5">face2 = facesList2[1]</p>\r
731 \r
732 <p class="whs5">&nbsp;</p>\r
733 \r
734 <p class="whs5">edgesList = geompy.SubShapeAll(face2, \r
735  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
736 \r
737 <p class="whs5">edge1 = edgesList[2]</p>\r
738 \r
739 <p class="whs5">&nbsp;</p>\r
740 \r
741 <p class="whs5">aComp = geompy.MakeCompound([face1, \r
742  face2])</p>\r
743 \r
744 <p class="whs5">geompy.addToStudy(aComp, \r
745  &quot;Two faces&quot;)</p>\r
746 \r
747 <p class="whs5">&nbsp;</p>\r
748 \r
749 <p class="whs6"># create a mesh on \r
750  two faces</p>\r
751 \r
752 <p class="whs5">mesh = smesh.Mesh(aComp, \r
753  &quot;Two faces : quadrangle mesh&quot;)</p>\r
754 \r
755 <p class="whs5">&nbsp;</p>\r
756 \r
757 <p class="whs5">algo1D = mesh.Segment()</p>\r
758 \r
759 <p class="whs5">algo1D.NumberOfSegments(4)</p>\r
760 \r
761 <p class="whs5">algo2D = mesh.Quadrangle()</p>\r
762 \r
763 <p class="whs5">&nbsp;</p>\r
764 \r
765 <p class="whs5">algo_local = mesh.Segment(edge1)</p>\r
766 \r
767 <p class="whs5">algo_local.Arithmetic1D(1, \r
768  4)</p>\r
769 \r
770 <p class="whs5">algo_local.Propagation()</p>\r
771 \r
772 <p class="whs5">&nbsp;</p>\r
773 \r
774 <p class="whs5">mesh.Compute()</p>\r
775 \r
776 <p class="whs5">&nbsp;</p>\r
777 \r
778 <p class="whs6"># sew free borders</p>\r
779 \r
780 <p class="whs6"># FirstNodeID1, SecondNodeID1, \r
781  LastNodeID1,</p>\r
782 \r
783 <p class="whs6"># FirstNodeID2, SecondNodeID2, \r
784  LastNodeID2, CreatePolygons, CreatePolyedrs</p>\r
785 \r
786 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
787 \r
788 <p class="whs7"><span style="font-family: 'Lucida Console', monospace;">anEditor.SewFreeBorders(6, \r
789  21, 5, 1, 12, 3, 0, 0)</span> </p>\r
790 \r
791 <h4><a name=bookmark7>Sew Side Elements</a></h4>\r
792 \r
793 <p class="whs4"><span style="font-weight: bold; color: #ff0000;"><font color=red ><B># \r
794  Attention! This script has been written using the old approach basing \r
795  on direct usage of SMESH idl interface.</B></font></span></p>\r
796 \r
797 <p class="whs4"># For the moment smesh package doesn't provide \r
798  methods to sew side elements. </p>\r
799 \r
800 <p class="whs4"># In the next SALOME version the scripts will \r
801  be updated to use only the commands from smesh package.</p>\r
802 \r
803 <p class="whs5">import geompy</p>\r
804 \r
805 <p class="whs5">import smesh</p>\r
806 \r
807 <p class="whs5">&nbsp;</p>\r
808 \r
809 <p class="whs6"># create two boxes</p>\r
810 \r
811 <p class="whs5">box1 = geompy.MakeBox(0., \r
812  &nbsp;0., 0., \r
813  10., 10., 10.)</p>\r
814 \r
815 <p class="whs5">box2 = geompy.MakeBox(0., \r
816  15., 0., 20., 25., 10.)</p>\r
817 \r
818 <p class="whs5">&nbsp;</p>\r
819 \r
820 <p class="whs5">EdgesList = geompy.SubShapeAll(box2, \r
821  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
822 \r
823 <p class="whs5">&nbsp;</p>\r
824 \r
825 <p class="whs5">aComp = geompy.MakeCompound([box1, \r
826  box2])</p>\r
827 \r
828 <p class="whs5">geompy.addToStudy(aComp, \r
829  &quot;Two boxes&quot;)</p>\r
830 \r
831 <p class="whs5">&nbsp;</p>\r
832 \r
833 <p class="whs6"># create a mesh on \r
834  two boxes</p>\r
835 \r
836 <p class="whs5">mesh = smesh.Mesh(aComp, \r
837  &quot;Two faces : quadrangle mesh&quot;)</p>\r
838 \r
839 <p class="whs5">&nbsp;</p>\r
840 \r
841 <p class="whs5">algo1D = mesh.Segment()</p>\r
842 \r
843 <p class="whs5">algo1D.NumberOfSegments(2)</p>\r
844 \r
845 <p class="whs5">algo2D = mesh.Quadrangle()</p>\r
846 \r
847 <p class="whs5">&nbsp;</p>\r
848 \r
849 <p class="whs5">algo_local = mesh.Segment(EdgesList[8])</p>\r
850 \r
851 <p class="whs5">algo_local.NumberOfSegments(4)</p>\r
852 \r
853 <p class="whs5">algo_local.Propagation()</p>\r
854 \r
855 <p class="whs5">&nbsp;</p>\r
856 \r
857 <p class="whs5">mesh.Compute()</p>\r
858 \r
859 <p class="whs5">&nbsp;</p>\r
860 \r
861 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>\r
862 \r
863 <p class="whs5">&nbsp;</p>\r
864 \r
865 <p class="whs6"># sew side elements</p>\r
866 \r
867 <p class="whs6"># IDsOfSide1Elements, \r
868  IDsOfSide2Elements,</p>\r
869 \r
870 <p class="whs6"># NodeID1OfSide1ToMerge, \r
871  NodeID1OfSide2ToMerge, NodeID2OfSide1ToMerge, NodeID2OfSide2ToMerge</p>\r
872 \r
873 <p class="whs5">anEditor.SewSideElements([69, \r
874  70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)</p>\r
875 \r
876 <script type="text/javascript" language="javascript1.2">\r
877 <!--\r
878 if (window.writeIntopicBar)\r
879         writeIntopicBar(0);\r
880 //-->\r
881 </script>\r
882 </body>\r
883 </html>\r