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