1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
\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
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; }
\r
14 p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
\r
16 </style><script type="text/javascript" language="JavaScript">
\r
18 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
\r
20 var strNSS = "<style type='text/css'>";
\r
21 strNSS += "h3.whs1 {margin-top:1pt;margin-bottom:1pt; }";
\r
22 strNSS += "h4.whs2 {margin-top:1pt;margin-bottom:1pt; }";
\r
23 strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
\r
24 strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";
\r
25 strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
\r
26 strNSS +="</style>";
\r
27 document.write(strNSS);
\r
31 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
\r
34 if (innerWidth != origWidth || innerHeight != origHeight)
\r
37 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
\r
38 origWidth = innerWidth;
\r
39 origHeight = innerHeight;
\r
45 <style type="text/css">
\r
47 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
\r
48 p.WebHelpNavBar { text-align:right; }
\r
50 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
\r
51 <script type="text/javascript" language="javascript" src="whver.js"></script>
\r
52 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
\r
53 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
\r
54 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
\r
55 <script type="text/javascript" language="javascript1.2">
\r
57 if (window.gbWhTopic)
\r
59 if (window.setRelStartPage)
\r
61 addTocInfo("MESH module\nTUI Scripts\nTransforming Meshes");
\r
62 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
\r
63 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
\r
68 if (window.setRelStartPage)
\r
70 setRelStartPage("index.htm");
\r
80 document.location.reload();
\r
84 <body><script type="text/javascript" language="javascript1.2">
\r
86 if (window.writeIntopicBar)
\r
90 <h1>Transforming Meshes</h1>
\r
92 <h3 class="whs1">Transforming Meshes</h3>
\r
94 <h4 class="whs2"> </h4>
\r
96 <h4 class="whs2"><a name=bookmark>Translation</a></h4>
\r
98 <p class="whs3"> </p>
\r
100 <p class="whs3">import SMESH</p>
\r
102 <p class="whs3">import SMESH_mechanic</p>
\r
104 <p class="whs3"> </p>
\r
106 <p class="whs3">mesh =
\r
107 SMESH_mechanic.mesh</p>
\r
109 <p class="whs3">salome = SMESH_mechanic.salome</p>
\r
111 <p class="whs4"> </p>
\r
113 <p class="whs4"># translate a mesh</p>
\r
115 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>
\r
117 <p class="whs3">point = SMESH.PointStruct(-150, -150,
\r
120 <p class="whs3">vector = SMESH.DirStruct(point) </p>
\r
122 <p class="whs3">anEditor.TranslateObject(mesh, vector,
\r
125 <p class="whs4"> </p>
\r
127 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
130 <p class="whs4"> </p>
\r
132 <h4 class="whs2"><a name=bookmark1>Rotation</a></h4>
\r
134 <p class="whs3"> </p>
\r
136 <p class="whs3">import SMESH</p>
\r
138 <p class="whs3">import SMESH_mechanic</p>
\r
140 <p class="whs3"> </p>
\r
142 <p class="whs3">import math</p>
\r
144 <p class="whs3">mesh =
\r
145 SMESH_mechanic.mesh</p>
\r
147 <p class="whs3">salome = SMESH_mechanic.salome</p>
\r
149 <p class="whs4"> </p>
\r
151 <p class="whs4"># rotate a mesh </p>
\r
153 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>
\r
155 <p class="whs3">axisXYZ = SMESH.AxisStruct(0, 0, 0, 5,
\r
158 <p class="whs3">angle180 = 1.5*math.pi</p>
\r
160 <p class="whs3">anEditor.RotateObject(mesh, axisXYZ, angle180,
\r
163 <p class="whs3"> </p>
\r
165 <p class="whs5">salome.sg.updateObjBrowser(1)</p>
\r
167 <p class="whs4"> </p>
\r
169 <p class="whs4"> </p>
\r
171 <h4 class="whs2"><a name=bookmark2>Symmetry</a></h4>
\r
173 <p class="whs3"> </p>
\r
175 <p class="whs3">import SMESH</p>
\r
177 <p class="whs3">import SMESH_mechanic</p>
\r
179 <p class="whs3"> </p>
\r
181 <p class="whs3">import math</p>
\r
183 <p class="whs3">mesh =
\r
184 SMESH_mechanic.mesh</p>
\r
186 <p class="whs3">salome = SMESH_mechanic.salome</p>
\r
188 <p class="whs4"> </p>
\r
190 <p class="whs4"># create a symmetrical
\r
191 copy of the mesh mirrored through a point</p>
\r
193 <p class="whs3">anEditor = mesh.GetMeshEditor()</p>
\r
195 <p class="whs3">anEditor.MirrorObject(mesh, SMESH.AxisStruct(0,
\r
196 0, 0, 0, 0, 0), SMESH.SMESH_MeshEditor.POINT, 1) </p>
\r
198 <p class="whs3"> </p>
\r
200 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
203 <p class="whs4"> </p>
\r
205 <p class="whs4"> </p>
\r
207 <h4 class="whs2"><a name=bookmark3>Merging
\r
210 <p class="whs3"> </p>
\r
212 <p class="whs3">import SMESH</p>
\r
214 <p class="whs3">import SMESH_mechanic</p>
\r
216 <p class="whs3"> </p>
\r
218 <p class="whs3">smesh =
\r
219 SMESH_mechanic.smesh</p>
\r
221 <p class="whs3">mesh =
\r
222 SMESH_mechanic.mesh</p>
\r
224 <p class="whs3">salome = SMESH_mechanic.salome</p>
\r
226 <p class="whs4"> </p>
\r
228 <p class="whs4"># merge nodes</p>
\r
230 <p class="whs3">aMeshEditor = mesh.GetMeshEditor()</p>
\r
232 <p class="whs3">Tolerance = 25.0</p>
\r
234 <p class="whs3"> </p>
\r
236 <p class="whs3">GroupsOfNodes = aMeshEditor.FindCoincidentNodes(Tolerance)</p>
\r
238 <p class="whs3">aMeshEditor.MergeNodes(GroupsOfNodes)</p>
\r
240 <p class="whs3"> </p>
\r
242 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
245 <p class="whs4"> </p>
\r
247 <h4><a name=bookmark8>Merging Elements</a></h4>
\r
249 <p class="whs5">import geompy</p>
\r
251 <p class="whs5">import smesh</p>
\r
253 <p class="whs5">import salome</p>
\r
255 <p class="whs5">import SMESH</p>
\r
257 <p class="whs4"> </p>
\r
259 <p class="whs4"># create a face to be meshed</p>
\r
261 <p class="whs5">px = geompy.MakeVertex(100.,
\r
265 <p class="whs5">py = geompy.MakeVertex(0.
\r
269 <p class="whs5">pz = geompy.MakeVertex(0.
\r
270 , 0. ,
\r
273 <p class="whs5"> </p>
\r
275 <p class="whs5">vxy = geompy.MakeVector(px,
\r
278 <p class="whs5">arc = geompy.MakeArc(py,
\r
281 <p class="whs5"> </p>
\r
283 <p class="whs5">wire = geompy.MakeWire([vxy,
\r
286 <p class="whs5">isPlanarFace = 1</p>
\r
288 <p class="whs5"> </p>
\r
290 <p class="whs5">face1 = geompy.MakeFace(wire,
\r
293 <p class="whs5">id_face1 = geompy.addToStudy(face1,
\r
294 "Face1")</p>
\r
296 <p class="whs4"> </p>
\r
298 <p class="whs4"># create a 2D mesh on the
\r
301 <p class="whs5">trias = smesh.Mesh(face1,
\r
302 "Face : 2D mesh")</p>
\r
304 <p class="whs5"> </p>
\r
306 <p class="whs5">algo = trias.Segment()</p>
\r
308 <p class="whs5">algo.NumberOfSegments(6)</p>
\r
310 <p class="whs5"> </p>
\r
312 <p class="whs5">algo = trias.Triangle()</p>
\r
314 <p class="whs5">algo.LengthFromEdges()</p>
\r
316 <p class="whs5"> </p>
\r
318 <p class="whs5">trias.Compute()</p>
\r
320 <p class="whs5"> </p>
\r
322 <p class="whs5">tri_mesh = trias.GetMesh()</p>
\r
324 <p class="whs4"> </p>
\r
326 <p class="whs4"># create a path mesh</p>
\r
328 <p class="whs5">px1 = geompy.MakeVertex(100.,
\r
332 <p class="whs5">py1 = geompy.MakeVertex(-100.
\r
336 <p class="whs5">pz1 = geompy.MakeVertex(0.
\r
337 , 0. ,
\r
340 <p class="whs5"> </p>
\r
342 <p class="whs5">circle = geompy.MakeCircleThreePnt(py1,
\r
345 <p class="whs5">id_circle = geompy.addToStudy(circle,
\r
346 "Path")</p>
\r
348 <p class="whs5"> </p>
\r
350 <p class="whs5">circlemesh = smesh.Mesh(circle,
\r
351 "Path mesh")</p>
\r
353 <p class="whs5"> </p>
\r
355 <p class="whs5">algo = circlemesh.Segment()</p>
\r
357 <p class="whs5">algo.NumberOfSegments(10)</p>
\r
359 <p class="whs5"> </p>
\r
361 <p class="whs5">circlemesh.Compute()</p>
\r
363 <p class="whs4"> </p>
\r
365 <p class="whs4"># extrusion of the mesh</p>
\r
367 <p class="whs5">aMeshEditor = tri_mesh.GetMeshEditor()</p>
\r
369 <p class="whs5">aMeshEditor.ExtrusionAlongPathObject(tri_mesh,
\r
370 circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
\r
372 <p class="whs4"> </p>
\r
374 <p class="whs4"># merge nodes</p>
\r
376 <p class="whs5">print "Number
\r
377 of nodes before MergeNodes:", tri_mesh.NbNodes()</p>
\r
379 <p class="whs5"> </p>
\r
381 <p class="whs5">tolerance = 0.001</p>
\r
383 <p class="whs5">array_of_nodes_groups
\r
384 = aMeshEditor.FindCoincidentNodes(tolerance)</p>
\r
386 <p class="whs5">aMeshEditor.MergeNodes(array_of_nodes_groups)</p>
\r
388 <p class="whs5"> </p>
\r
390 <p class="whs5">print "Number
\r
391 of nodes after MergeNodes:", tri_mesh.NbNodes()</p>
\r
393 <p class="whs5">print ""</p>
\r
395 <p class="whs5">print "Number
\r
396 of elements before MergeEqualElements:"</p>
\r
398 <p class="whs5">print "Edges
\r
399 :
\r
400 ", tri_mesh.NbEdges()</p>
\r
402 <p class="whs5">print "Triangles
\r
404 tri_mesh.NbTriangles()</p>
\r
406 <p class="whs5">print "Quadrangles:
\r
407 ", tri_mesh.NbQuadrangles()</p>
\r
409 <p class="whs5">print "Volumes
\r
410 :
\r
411 ", tri_mesh.NbVolumes()</p>
\r
413 <p class="whs4"> </p>
\r
415 <p class="whs4"># merge elements</p>
\r
417 <p class="whs5">aMeshEditor.MergeEqualElements()</p>
\r
419 <p class="whs5"> </p>
\r
421 <p class="whs5">print "Number
\r
422 of elements after MergeEqualElements:"</p>
\r
424 <p class="whs5">print "Edges
\r
425 :
\r
426 ", tri_mesh.NbEdges()</p>
\r
428 <p class="whs5">print "Triangles
\r
430 tri_mesh.NbTriangles()</p>
\r
432 <p class="whs5">print "Quadrangles:
\r
433 ", tri_mesh.NbQuadrangles()</p>
\r
435 <p class="whs5">print "Volumes
\r
436 :
\r
437 ", tri_mesh.NbVolumes()</p>
\r
439 <p class="whs5"> </p>
\r
441 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
444 <h3>Sewing Meshes</h3>
\r
446 <h4><a name=bookmark4>Sew Meshes Border to Border</a></h4>
\r
448 <p class="whs5">import salome</p>
\r
450 <p class="whs5">import geompy</p>
\r
452 <p class="whs5">import smesh</p>
\r
454 <p class="whs4"> </p>
\r
456 <p class="whs4"># create two faces of a
\r
459 <p class="whs5">box1 = geompy.MakeBox(0.,
\r
460 0., -10., 30., 20., 25.)</p>
\r
462 <p class="whs5">subShapeList1 =
\r
463 geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
\r
465 <p class="whs5"> </p>
\r
467 <p class="whs5">box2 = geompy.MakeBox(0.,
\r
468 5., 0., 20., 20., 15.)</p>
\r
470 <p class="whs5">subShapeList2 =
\r
471 geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
\r
473 <p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
\r
474 1 ], geompy.ShapeType["EDGE"])</p>
\r
476 <p class="whs5"> </p>
\r
478 <p class="whs5">aComp = geompy.MakeCompound(
\r
479 [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
\r
481 <p class="whs5">idComp = geompy.addToStudy(
\r
482 aComp, "Two faces" )</p>
\r
484 <p class="whs5">aCompobj =
\r
485 salome.IDToObject( idComp )</p>
\r
487 <p class="whs5"> </p>
\r
489 <p class="whs4"># create a mesh on two
\r
492 <p class="whs4"> </p>
\r
494 <p class="whs5">mesh = smesh.Mesh(aCompobj,
\r
495 "Two faces : quadrangle mesh")</p>
\r
497 <p class="whs5">algo = mesh.Segment()</p>
\r
499 <p class="whs5"> </p>
\r
501 <p class="whs4"># define "NumberOfSegments"
\r
502 hypothesis to cut an edge in a fixed number of segments</p>
\r
504 <p class="whs5">algo.NumberOfSegments(9)</p>
\r
506 <p class="whs4"> </p>
\r
508 <p class="whs4"># create a quadrangle 2D
\r
509 algorithm for faces</p>
\r
511 <p class="whs5">mesh.Quadrangle()</p>
\r
513 <p class="whs4"> </p>
\r
515 <p class="whs4"># create a local hypothesis</p>
\r
517 <p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
\r
519 <p class="whs4"> </p>
\r
521 <p class="whs4"># define "Arithmetic1D"
\r
522 hypothesis to cut an edge in several segments with increasing arithmetic
\r
525 <p class="whs5">algo.Arithmetic1D(1,
\r
528 <p class="whs4"> </p>
\r
530 <p class="whs4"># define "Propagation"
\r
531 hypothesis that propagates all other hypothesis on all edges on the opposite
\r
532 side in case of quadrangular faces</p>
\r
534 <p class="whs5">algo.Propagation()</p>
\r
536 <p class="whs5">mesh.Compute()</p>
\r
538 <p class="whs4"> </p>
\r
540 <p class="whs4"># sew free borders</p>
\r
542 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
\r
544 <p class="whs5">anEditor.SewBorderToSide(5,
\r
545 45, 6, 113, 109, 0, 0)</p>
\r
547 <p class="whs5"> </p>
\r
549 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
552 <p class="whs4"> </p>
\r
554 <h4><a name=bookmark5>Sew Conform Free Borders</a></h4>
\r
556 <p class="whs5">import salome</p>
\r
558 <p class="whs5">import geompy</p>
\r
560 <p class="whs5">import smesh</p>
\r
562 <p class="whs4"> </p>
\r
564 <p class="whs4"># create two faces of the
\r
567 <p class="whs5">box1 = geompy.MakeBox(0.,
\r
568 0., -10., 20., 20., 15.)</p>
\r
570 <p class="whs5">subShapeList1 =
\r
571 geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
\r
573 <p class="whs5"> </p>
\r
575 <p class="whs5">box2 = geompy.MakeBox(0.,
\r
576 5., 0., 20., 20., 15.)</p>
\r
578 <p class="whs5">subShapeList2 =
\r
579 geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
\r
581 <p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
\r
582 1 ], geompy.ShapeType["EDGE"])</p>
\r
584 <p class="whs5"> </p>
\r
586 <p class="whs5">aComp = geompy.MakeCompound(
\r
587 [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
\r
589 <p class="whs5">idComp = geompy.addToStudy(
\r
590 aComp, "Two faces" )</p>
\r
592 <p class="whs5">aCompobj =
\r
593 salome.IDToObject( idComp )</p>
\r
595 <p class="whs4"> </p>
\r
597 <p class="whs4"># create a mesh on two
\r
600 <p class="whs5">mesh = smesh.Mesh(aCompobj,
\r
601 "Two faces : quadrangle mesh")</p>
\r
603 <p class="whs5">algo = mesh.Segment()</p>
\r
605 <p class="whs4"> </p>
\r
607 <p class="whs4"># define "NumberOfSegments"
\r
608 hypothesis to cut an edge in a fixed number of segments</p>
\r
610 <p class="whs5">algo.NumberOfSegments(9)</p>
\r
612 <p class="whs4"> </p>
\r
614 <p class="whs4"># create a quadrangle 2D
\r
615 algorithm for faces</p>
\r
617 <p class="whs5">mesh.Quadrangle()</p>
\r
619 <p class="whs4"> </p>
\r
621 <p class="whs4"># create a local hypothesis</p>
\r
623 <p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
\r
625 <p class="whs4"> </p>
\r
627 <p class="whs4"># define "Arithmetic1D"
\r
628 hypothesis to cut an edge in several segments with increasing arithmetic
\r
631 <p class="whs5">algo.Arithmetic1D(1,
\r
634 <p class="whs4"> </p>
\r
636 <p class="whs4"># define "Propagation"
\r
637 hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;">
\r
638 the opposite side in case of quadrangular faces</span></p>
\r
640 <p class="whs5">algo.Propagation()</p>
\r
642 <p class="whs5">mesh.Compute()</p>
\r
644 <p class="whs4"> </p>
\r
646 <p class="whs4"># sew free borders</p>
\r
648 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
\r
650 <p class="whs5">anEditor.SewConformFreeBorders(5,
\r
653 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
656 <p class="whs4"> </p>
\r
658 <h4><a name=bookmark6>Sew Free Borders</a></h4>
\r
660 <p class="whs5">import salome</p>
\r
662 <p class="whs5">import geompy</p>
\r
664 <p class="whs5">import smesh</p>
\r
666 <p class="whs4"> </p>
\r
668 <p class="whs4"># create two faces of the
\r
671 <p class="whs5">box1 = geompy.MakeBox(0.,
\r
672 0., 0., 20., 20., 15.)</p>
\r
674 <p class="whs5">subShapeList1 =
\r
675 geompy.SubShapeAll(box1, geompy.ShapeType["FACE"])</p>
\r
677 <p class="whs4"> </p>
\r
679 <p class="whs5">box2 = geompy.MakeBox(0.,
\r
680 5., 0., 20., 20., 15.)</p>
\r
682 <p class="whs5">subShapeList2 =
\r
683 geompy.SubShapeAll(box2, geompy.ShapeType["FACE"])</p>
\r
685 <p class="whs5">EdgesList = geompy.SubShapeAll(subShapeList2[
\r
686 1 ], geompy.ShapeType["EDGE"])</p>
\r
688 <p class="whs5"> </p>
\r
690 <p class="whs5">aComp = geompy.MakeCompound(
\r
691 [subShapeList1[ 2 ], subShapeList2[ 1 ]] )</p>
\r
693 <p class="whs5">idComp = geompy.addToStudy(
\r
694 aComp, "Two faces" )</p>
\r
696 <p class="whs5">aCompobj =
\r
697 salome.IDToObject( idComp )</p>
\r
699 <p class="whs5"> </p>
\r
701 <p class="whs4"># create a mesh on two
\r
704 <p class="whs5">mesh = smesh.Mesh(aCompobj,
\r
705 "Two faces : quadrangle mesh")</p>
\r
707 <p class="whs5">algo = mesh.Segment()</p>
\r
709 <p class="whs4"> </p>
\r
711 <p class="whs4"># define "NumberOfSegments"
\r
712 hypothesis to cut an edge in a fixed number of segments</p>
\r
714 <p class="whs5">algo.NumberOfSegments(4)</p>
\r
716 <p class="whs4"> </p>
\r
718 <p class="whs4"># creates a quadrangle
\r
719 2D algorithm for faces</p>
\r
721 <p class="whs5">mesh.Quadrangle()</p>
\r
723 <p class="whs4"> </p>
\r
725 <p class="whs4"># create a local hypothesis</p>
\r
727 <p class="whs5">algo = mesh.Segment(EdgesList[2])</p>
\r
729 <p class="whs4"> </p>
\r
731 <p class="whs4"># define "Arithmetic1D"
\r
732 hypothesis to cut an edge in several segments with increasing
\r
733 arithmetic length</p>
\r
735 <p class="whs5">algo.Arithmetic1D(1,
\r
738 <p class="whs4"> </p>
\r
740 <p class="whs4"># define "Propagation"
\r
741 hypothesis that propagate all other hypothesis on all edges on<span style="margin-top: 0pt; margin-bottom: 0pt;">
\r
742 the opposite side in case of quadrangular faces</span></p>
\r
744 <p class="whs5">algo.Propagation()</p>
\r
746 <p class="whs5">mesh.Compute()</p>
\r
748 <p class="whs4"> </p>
\r
750 <p class="whs4"># sew free borders</p>
\r
752 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
\r
754 <p class="whs5">anEditor.SewFreeBorders(6,
\r
755 21, 5, 1, 12, 3, 0, 0)</p>
\r
757 <p class="whs5"> </p>
\r
759 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
762 <p class="whs4"> </p>
\r
764 <h4><a name=bookmark7>Sew Side Elements</a></h4>
\r
766 <p class="whs5">import salome</p>
\r
768 <p class="whs5">import geompy</p>
\r
770 <p class="whs5">import smesh</p>
\r
772 <p class="whs5"> </p>
\r
774 <p class="whs4"># create two faces of the
\r
777 <p class="whs5">box1 = geompy.MakeBox(0.,
\r
781 <p class="whs5">box2 = geompy.MakeBox(0.,
\r
782 15., 0., 20., 25., 10.)</p>
\r
784 <p class="whs5">EdgesList = geompy.SubShapeAll(box2,
\r
785 geompy.ShapeType["EDGE"])</p>
\r
787 <p class="whs4"> </p>
\r
789 <p class="whs5">aComp = geompy.MakeCompound(
\r
792 <p class="whs5">idComp = geompy.addToStudy(
\r
793 aComp, "Two faces" )</p>
\r
795 <p class="whs5">aCompobj =
\r
796 salome.IDToObject( idComp )</p>
\r
798 <p class="whs5"> </p>
\r
800 <p class="whs4"># create a mesh on two
\r
803 <p class="whs5">mesh = smesh.Mesh(aCompobj,
\r
804 "Two faces : quadrangle mesh")</p>
\r
806 <p class="whs5">algo = mesh.Segment()</p>
\r
808 <p class="whs4"> </p>
\r
810 <p class="whs4"># define "NumberOfSegments"
\r
811 hypothesis to cut an edge in a fixed number of segments</p>
\r
813 <p class="whs5">algo.NumberOfSegments(2)</p>
\r
815 <p class="whs4"> </p>
\r
817 <p class="whs4"># create a quadrangle 2D
\r
818 algorithm for faces</p>
\r
820 <p class="whs5">mesh.Quadrangle()</p>
\r
822 <p class="whs4"> </p>
\r
824 <p class="whs4"># create a local hypothesis</p>
\r
826 <p class="whs5">algo = mesh.Segment(EdgesList[8])</p>
\r
828 <p class="whs4"> </p>
\r
830 <p class="whs4"># define "Arithmetic1D"
\r
831 hypothesis to cut an edge in several segments with increasing arithmetic
\r
834 <p class="whs5">algo.NumberOfSegments(4)</p>
\r
836 <p class="whs4"> </p>
\r
838 <p class="whs4"># define "Propagation"
\r
839 hypothesis that propagates all other hypothesis on all edges on <span
\r
840 style="margin-top: 0pt; margin-bottom: 0pt;">the opposite side in case
\r
841 of quadrangular faces</span></p>
\r
843 <p class="whs5">algo.Propagation()</p>
\r
845 <p class="whs5">mesh.Compute()</p>
\r
847 <p class="whs4"> </p>
\r
849 <p class="whs4"># sew free borders</p>
\r
851 <p class="whs5">anEditor = mesh.GetMesh().GetMeshEditor()</p>
\r
853 <p class="whs5">anEditor.SewSideElements([69,
\r
854 70, 71, 72], [91, 92, 89, 90], 8, 38, 23, 58)</p>
\r
856 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
\r
859 <script type="text/javascript" language="javascript1.2">
\r
861 if (window.writeIntopicBar)
\r
862 writeIntopicBar(0);
\r