1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
6 <title>Modifying Meshes</title>
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style>
10 P { margin-top:0pt; margin-bottom:0pt; }
13 </style><style type="text/css">
15 p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
16 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
17 p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
18 h4.whs4 { margin-top:0pt; margin-bottom:0pt; }
19 p.whs5 { margin-top:0.5pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
20 p.whs6 { margin-top:0.5pt; margin-bottom:0pt; }
21 p.whs7 { font-family:'Lucida Console' , monospace; }
22 p.whs8 { font-family:'Times New Roman' , serif; }
23 p.whs9 { margin-left:40px; font-family:'Lucida Console' , monospace; }
25 </style><script type="text/javascript" language="JavaScript">
27 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
29 var strNSS = "<style type='text/css'>";
30 strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
31 strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
32 strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
33 strNSS += "h4.whs4 {margin-top:1pt;margin-bottom:1pt; }";
34 strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";
35 strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";
37 document.write(strNSS);
41 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
44 if (innerWidth != origWidth || innerHeight != origHeight)
47 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
48 origWidth = innerWidth;
49 origHeight = innerHeight;
55 <style type="text/css">
57 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
58 p.WebHelpNavBar { text-align:right; }
60 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
61 <script type="text/javascript" language="javascript" src="whver.js"></script>
62 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
63 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
64 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
65 <script type="text/javascript" language="javascript1.2">
69 if (window.setRelStartPage)
71 addTocInfo("MESH module\nTUI Scripts\nModifying Meshes");
72 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
73 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
78 if (window.setRelStartPage)
80 setRelStartPage("index.htm");
90 document.location.reload();
94 <body><script type="text/javascript" language="javascript1.2">
96 if (window.writeIntopicBar)
100 <h1>Modifying Meshes</h1>
102 <h3><a name=bookmark>Adding Nodes and Elements</a></h3>
106 <p class="whs1">import SMESH</p>
108 <p class="whs1">import SMESH_mechanic</p>
110 <p class="whs1"> </p>
112 <p class="whs1">smesh =
113 SMESH_mechanic.smesh</p>
115 <p class="whs1">mesh =
116 SMESH_mechanic.mesh</p>
118 <p class="whs1">salome = SMESH_mechanic.salome</p>
120 <p class="whs2"> </p>
122 <p class="whs2"># add node</p>
124 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
126 <p class="whs1">if aMeshEditor.AddNode(50,
129 <p class="whs1"> print
130 "Node addition is OK!"</p>
132 <p class="whs1">else:</p>
134 <p class="whs1"> print
135 "KO node addition."</p>
137 <p class="whs1"> </p>
139 <p class="whs1">salome.sg.updateObjBrowser(1)
142 <p class="whs1"> </p>
146 <p class="whs1">import SMESH</p>
148 <p class="whs1">import SMESH_mechanic</p>
150 <p class="whs1"> </p>
152 <p class="whs1">smesh =
153 SMESH_mechanic.smesh</p>
155 <p class="whs1">mesh =
156 SMESH_mechanic.mesh</p>
158 <p class="whs1">salome = SMESH_mechanic.salome</p>
160 <p class="whs2"> </p>
162 <p class="whs2"># add node</p>
164 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
166 <p class="whs1">if aMeshEditor.AddNode(50,
169 <p class="whs1"> print
170 "Node addition is OK!"</p>
172 <p class="whs1">else:</p>
174 <p class="whs1"> print
175 "KO node addition."</p>
177 <p class="whs1"> </p>
179 <p class="whs2"># add edge</p>
181 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
183 <p class="whs1">if aMeshEditor.AddEdge([LastNodeId,
186 <p class="whs1"> print
187 "Edge addition is OK!"</p>
189 <p class="whs1">else:</p>
191 <p class="whs1"> print
192 "KO edge addition."</p>
194 <p class="whs1"> </p>
196 <p class="whs1">salome.sg.updateObjBrowser(1)
199 <p class="whs1"> </p>
201 <h4>Add Triangle</h4>
203 <p class="whs1">import SMESH</p>
205 <p class="whs1">import SMESH_mechanic</p>
207 <p class="whs1"> </p>
209 <p class="whs1">smesh =
210 SMESH_mechanic.smesh</p>
212 <p class="whs1">mesh =
213 SMESH_mechanic.mesh</p>
215 <p class="whs1">salome = SMESH_mechanic.salome</p>
217 <p class="whs1"> </p>
219 <p class="whs2"># add node</p>
221 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
223 <p class="whs1">if aMeshEditor.AddNode(50,
226 <p class="whs1"> print
227 "Node addition is OK!"</p>
229 <p class="whs1">else:</p>
231 <p class="whs1"> print
232 "KO node addition."</p>
234 <p class="whs1"> </p>
236 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
238 <p class="whs2"> </p>
240 <p class="whs2"># add triangle</p>
242 <p class="whs1">if aMeshEditor.AddFace([LastNodeId,
245 <p class="whs1"> print
246 "Triangle addition is OK!"</p>
248 <p class="whs1">else:</p>
250 <p class="whs1"> print
251 "KO triangle addition."</p>
253 <p class="whs1"> </p>
255 <p class="whs1">salome.sg.updateObjBrowser(1)
258 <p class="whs1"> </p>
260 <h4>Add Quadrangle</h4>
262 <p class="whs1">import SMESH</p>
264 <p class="whs1">import SMESH_mechanic</p>
266 <p class="whs1"> </p>
268 <p class="whs1">smesh =
269 SMESH_mechanic.smesh</p>
271 <p class="whs1">mesh =
272 SMESH_mechanic.mesh</p>
274 <p class="whs1">salome = SMESH_mechanic.salome</p>
276 <p class="whs1"> </p>
278 <p class="whs2"># add node</p>
280 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
282 <p class="whs1">if aMeshEditor.AddNode(50,
285 <p class="whs1"> print
286 "Node addition is OK!"</p>
288 <p class="whs1">else:</p>
290 <p class="whs1"> print
291 "KO node addition."</p>
293 <p class="whs1"> </p>
295 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
297 <p class="whs2"> </p>
299 <p class="whs2"># add quadrangle</p>
301 <p class="whs1">if aMeshEditor.AddNode(40,
304 <p class="whs1"> print
305 "Node addition is OK!"</p>
307 <p class="whs1">else:</p>
309 <p class="whs1"> print
310 "KO node addition."</p>
312 <p class="whs1">if aMeshEditor.AddFace([mesh.NbNodes(),
313 LastNodeId, 38, 39]) == 1:</p>
315 <p class="whs1"> print
316 "Quadrangle addition is OK!"</p>
318 <p class="whs1">else:</p>
320 <p class="whs1"> print
321 "KO quadrangle addition."</p>
323 <p class="whs1"> </p>
325 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
328 <p class="whs2"> </p>
330 <h4>Add Tetrahedron</h4>
332 <p class="whs1">import SMESH</p>
334 <p class="whs1">import SMESH_mechanic</p>
336 <p class="whs1"> </p>
338 <p class="whs1">smesh =
339 SMESH_mechanic.smesh</p>
341 <p class="whs1">mesh =
342 SMESH_mechanic.mesh</p>
344 <p class="whs1">salome = SMESH_mechanic.salome</p>
346 <p class="whs1"> </p>
348 <p class="whs2"># add node</p>
350 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
352 <p class="whs1">if aMeshEditor.AddNode(50,
355 <p class="whs1"> print
356 "Node addition is OK!"</p>
358 <p class="whs1">else:</p>
360 <p class="whs1"> print
361 "KO node addition."</p>
363 <p class="whs1"> </p>
365 <p class="whs1">LastNodeId = mesh.NbNodes()</p>
367 <p class="whs2"> </p>
369 <p class="whs2"># add tetrahedron</p>
371 <p class="whs1">if aMeshEditor.AddVolume([LastNodeId,
372 38, 39, 246]) == 1:</p>
374 <p class="whs1"> print
375 "Tetrahedron addition is OK!"</p>
377 <p class="whs1">else:</p>
379 <p class="whs1"> print
380 "KO tetrahedron addition."</p>
382 <p class="whs1"> </p>
384 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
387 <p class="whs2"> </p>
389 <h4>Add Hexahedron</h4>
391 <p class="whs1">import SMESH</p>
393 <p class="whs1">import SMESH_mechanic</p>
395 <p class="whs1"> </p>
397 <p class="whs1">smesh =
398 SMESH_mechanic.smesh</p>
400 <p class="whs1">mesh =
401 SMESH_mechanic.mesh</p>
403 <p class="whs1">salome = SMESH_mechanic.salome</p>
405 <p class="whs1"> </p>
407 <p class="whs2"># add nodes</p>
409 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
411 <p class="whs1">if aMeshEditor.AddNode(50,
414 <p class="whs1"> print
415 "Node addition is OK!"</p>
417 <p class="whs1">else:</p>
419 <p class="whs1"> print
420 "KO node addition."</p>
422 <p class="whs1">aNodeId1 = mesh.NbNodes()</p>
424 <p class="whs1"> </p>
426 <p class="whs1">if aMeshEditor.AddNode(47,
429 <p class="whs1"> print
430 "Node addition is OK!"</p>
432 <p class="whs1">else:</p>
434 <p class="whs1"> print
435 "KO node addition."</p>
437 <p class="whs1">aNodeId2 = mesh.NbNodes()</p>
439 <p class="whs1"> </p>
441 <p class="whs1">if aMeshEditor.AddNode(50,
444 <p class="whs1"> print
445 "Node addition is OK!"</p>
447 <p class="whs1">else:</p>
449 <p class="whs1"> print
450 "KO node addition."</p>
452 <p class="whs1">aNodeId3 = mesh.NbNodes()</p>
454 <p class="whs1"> </p>
456 <p class="whs1">if aMeshEditor.AddNode(47,
459 <p class="whs1"> print
460 "Node addition is OK!"</p>
462 <p class="whs1">else:</p>
464 <p class="whs1"> print
465 "KO node addition."</p>
467 <p class="whs1">aNodeId4 = mesh.NbNodes()</p>
469 <p class="whs1"> </p>
471 <p class="whs2"># add hexahedron</p>
473 <p class="whs1">if aMeshEditor.AddVolume([aNodeId2,
474 aNodeId1, 38, 39, aNodeId4, aNodeId3, 245, 246]) == 1:</p>
476 <p class="whs1"> print
477 "Hexahedron addition is OK!"</p>
479 <p class="whs1">else:</p>
481 <p class="whs1"> print
482 "KO Hexahedron addition."</p>
484 <p class="whs1"> </p>
486 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
489 <p class="whs2"> </p>
493 <p class="whs1">import salome</p>
495 <p class="whs1">import geompy</p>
497 <p class="whs1">import math</p>
499 <p class="whs1"> </p>
501 <p class="whs1">import StdMeshers</p>
503 <p class="whs1"> </p>
505 <p class="whs2"># GEOM module </p>
507 <p class="whs1">shape_mesh = geompy.MakeCylinderRH(13,
510 <p class="whs1">geompy.addToStudy(shape_mesh,
511 "cylinder")</p>
513 <p class="whs1"> </p>
515 <p class="whs2"># SMESH module</p>
517 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
518 "SMESH")</p>
520 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
522 <p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
524 <p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
526 <p class="whs1"> </p>
528 <p class="whs2"># a method to build a polygonal
529 mesh element with nb_vert angles:</p>
531 <p class="whs1">def MakePolygon
532 (a_mesh, x0, y0, z0, radius, nb_vert):</p>
534 <p class="whs1"> node_start_id
535 = a_mesh.NbNodes() + 1</p>
537 <p class="whs1"> al
538 = 2.0 * math.pi / nb_vert</p>
540 <p class="whs1"> node_ids
543 <p class="whs2"> </p>
545 <p class="whs2"># Create nodes for a polyhedron</p>
547 <p class="whs1"> for
548 ii in range(nb_vert):</p>
550 <p class="whs1"> MeshEditor.AddNode(x0
551 + radius * math.cos(ii*al),</p>
553 <p class="whs1"> y0
554 + radius * math.sin(ii*al),</p>
556 <p class="whs1"> z0)</p>
558 <p class="whs1"> node_ids.append(node_start_id
561 <p class="whs1"> pass</p>
563 <p class="whs2"> </p>
565 <p class="whs2"># Create a polygon</p>
567 <p class="whs1"> MeshEditor.AddPolygonalFace(node_ids)</p>
569 <p class="whs1"> return
572 <p class="whs1"> </p>
574 <p class="whs2"># Create three polygons</p>
576 <p class="whs1">MakePolygon(mesh,
580 <p class="whs1">MakePolygon(mesh,
581 0, 0, 10, 21, 9)</p>
583 <p class="whs1">MakePolygon(mesh,
584 0, 0, 20, 13, 6)</p>
586 <p class="whs1"> </p>
588 <p class="whs1">salome.sg.updateObjBrowser(1)
591 <p class="whs1"> </p>
593 <h4>Add polyhedron</h4>
595 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
598 <p class="whs1">import geompy</p>
600 <p class="whs1">import math</p>
602 <p class="whs1"> </p>
604 <p class="whs1">#import SMESH</p>
606 <p class="whs1">import StdMeshers</p>
608 <p class="whs1"> </p>
610 <p class="whs3"># GEOM</p>
612 <p class="whs1">shape_mesh = geompy.MakeCylinderRH(13,
615 <p class="whs1">geompy.addToStudy(shape_mesh,
616 "cylinder")</p>
618 <p class="whs1"> </p>
620 <p class="whs3"># SMESH</p>
622 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
623 "SMESH")</p>
625 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
627 <p class="whs1">mesh = smesh.CreateMesh(shape_mesh)</p>
629 <p class="whs1">MeshEditor = mesh.GetMeshEditor()</p>
631 <p class="whs1"> </p>
633 <p class="whs3"># Now we are going
634 to create a 12-hedron:</p>
636 <p class="whs3"> </p>
638 <p class="whs3"># Create nodes for
641 <p class="whs1">al = 2 * math.pi
644 <p class="whs1">cosal = math.cos(al)</p>
646 <p class="whs1"> </p>
648 <p class="whs1">aa = 13</p>
650 <p class="whs1">rr = aa / (2.0 *
651 math.sin(al/2.0))</p>
653 <p class="whs1">dr = 2.0 * rr *
656 <p class="whs1">r1 = rr + dr</p>
658 <p class="whs1">dh = rr * math.sqrt(2.0
659 * (1.0 - cosal * (1.0 + 2.0 * cosal)))</p>
661 <p class="whs1">hh = 2.0 * dh -
662 dr * (rr*(cosal - 1) + (rr + dr)*(math.cos(al/2) - 1)) / dh</p>
664 <p class="whs1"> </p>
666 <p class="whs1">for i in range(5):</p>
668 <p class="whs1"> MeshEditor.AddNode(rr*math.cos(i*al),
669 rr*math.sin(i*al), 0)
670 <span style="font-family: 'Times New Roman', serif;"># 1,3,5,7, 9 # bottom</span></p>
672 <p class="whs1"> MeshEditor.AddNode(r1*math.cos(i*al),
673 r1*math.sin(i*al), dh) <span style="font-family: 'Times New Roman', serif;">#
674 2,4,6,8,10 # above bottom</span></p>
676 <p class="whs1"> </p>
678 <p class="whs1">for i in range(5):</p>
680 <p class="whs1"> MeshEditor.AddNode(rr*math.cos(i*al
683 <p class="whs1"> rr*math.sin(i*al
684 + al/2.0), hh) # 11,13,15,17,19 <span style="font-family: 'Times New Roman', serif;">#
687 <p class="whs1"> MeshEditor.AddNode(r1*math.cos(i*al
690 <p class="whs1"> r1*math.sin(i*al
691 + al/2.0), hh - dh) # 12,14,16,18,20 <span style="font-family: 'Times New Roman', serif;">#
694 <p class="whs1"> </p>
696 <p class="whs3"># Create a polyhedral
699 <p class="whs1">MeshEditor.AddPolyhedralVolume([
702 <span style="font-family: 'Times New Roman', serif;">#
705 <p class="whs1"> 1,
708 <span style="font-family: 'Times New Roman', serif;">#
711 <p class="whs1"> 3,
714 <span style="font-family: 'Times New Roman', serif;">#
717 <p class="whs1"> 5,
720 <span style="font-family: 'Times New Roman', serif;">#
721 . above bottom</span></p>
723 <p class="whs1"> 7,
726 <span style="font-family: 'Times New Roman', serif;">#
729 <p class="whs1"> 9,
732 style="font-family: 'Times New Roman', serif;">#
735 <p class="whs1"> 11,
737 14, 13, <span style="font-family: 'Times New Roman', serif;">#
740 <p class="whs1"> 13,
742 16, 15, <span style="font-family: 'Times New Roman', serif;">#
745 <p class="whs1"> 15,
747 18, 17, <span style="font-family: 'Times New Roman', serif;">#
748 - below top</span></p>
750 <p class="whs1"> 17,
751 18, 10, 20, 19, <span style="font-family: 'Times New Roman', serif;">#
754 <p class="whs1"> 19,
756 12, 11, <span style="font-family: 'Times New Roman', serif;">#
759 <p class="whs1"> 11,
760 13, 15, 17, 19], <span style="font-family: 'Times New Roman', serif;">#
763 <p class="whs1"> [5,5,5,5,5,5,5,5,5,5,5,5])</p>
765 <p class="whs1"> </p>
767 <p class="whs1">salome.sg.updateObjBrowser(1)
770 <p class="whs1"> </p>
772 <h3><a name=bookmark1>Removing Nodes and Elements</a></h3>
774 <h4 class="whs4">Removing Nodes</h4>
776 <p class="whs2"> </p>
778 <p class="whs1">import SMESH</p>
780 <p class="whs1">import SMESH_mechanic</p>
782 <p class="whs1"> </p>
784 <p class="whs1">smesh =
785 SMESH_mechanic.smesh</p>
787 <p class="whs1">mesh =
788 SMESH_mechanic.mesh</p>
790 <p class="whs1">salome = SMESH_mechanic.salome</p>
792 <p class="whs2"> </p>
794 <p class="whs2"># add node</p>
796 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
798 <p class="whs1">if aMeshEditor.RemoveNodes([246,
801 <p class="whs1"> print
802 "Node removing is OK!"</p>
804 <p class="whs1">else:</p>
806 <p class="whs1"> print
807 "KO node removing."</p>
809 <p class="whs1"> </p>
811 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
814 <p class="whs2"> </p>
816 <h4>Removing Elements</h4>
818 <p class="whs1">import SMESH</p>
820 <p class="whs1">import SMESH_mechanic</p>
822 <p class="whs1"> </p>
824 <p class="whs1">smesh =
825 SMESH_mechanic.smesh</p>
827 <p class="whs1">mesh =
828 SMESH_mechanic.mesh</p>
830 <p class="whs1">salome = SMESH_mechanic.salome</p>
832 <p class="whs1"> </p>
834 <p class="whs1">anEditor = mesh.GetMeshEditor()</p>
836 <p class="whs1">anEditor.RemoveElements([850,
839 <p class="whs1"> </p>
841 <p class="whs1">salome.sg.updateObjBrowser(1)
844 <p class="whs1"> </p>
846 <h3><a name=bookmark2>Renumbering Nodes and Elements</a></h3>
848 <p class="whs5">import SMESH</p>
850 <p class="whs5">import SMESH_mechanic</p>
852 <p class="whs5"> </p>
854 <p class="whs5">mesh =
855 SMESH_mechanic.mesh</p>
857 <p class="whs5">salome = SMESH_mechanic.salome</p>
859 <p class="whs5"> </p>
861 <p class="whs5">anEditor = mesh.GetMeshEditor()</p>
863 <p class="whs5">anEditor.RenumberNodes()</p>
865 <p class="whs5"> </p>
867 <p class="whs6"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
870 <p class="whs6"> </p>
874 <h3><a name=bookmark3>Moving Nodes</a></h3>
876 <p class="whs1">import SMESH</p>
878 <p class="whs1">import SMESH_mechanic</p>
880 <p class="whs1"> </p>
882 <p class="whs1">smesh =
883 SMESH_mechanic.smesh</p>
885 <p class="whs1">mesh =
886 SMESH_mechanic.mesh</p>
888 <p class="whs1">salome = SMESH_mechanic.salome</p>
890 <p class="whs1"> </p>
892 <p class="whs2"># move node</p>
894 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
896 <p class="whs1">aMeshEditor.MoveNode(38,
899 <p class="whs1"> </p>
901 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
904 <p class="whs2"> </p>
906 <h3><a name=bookmark4>Diagonal Inversion</a></h3>
908 <p class="whs1">import SMESH</p>
910 <p class="whs1">import SMESH_mechanic</p>
912 <p class="whs1"> </p>
914 <p class="whs1">smesh =
915 SMESH_mechanic.smesh</p>
917 <p class="whs1">mesh =
918 SMESH_mechanic.mesh</p>
920 <p class="whs1">salome = SMESH_mechanic.salome</p>
922 <p class="whs1"> </p>
924 <p class="whs2"># inverse diagonal</p>
926 <p class="whs1">aMeshEditor = mesh.GetMeshEditor()</p>
928 <p class="whs1">aMeshEditor.InverseDiag(700,
931 <p class="whs1"> </p>
933 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
936 <p class="whs2"> </p>
938 <h3><a name=bookmark5>Uniting two Triangles</a></h3>
940 <p class="whs7">import SMESH</p>
942 <p class="whs7">import SMESH_mechanic</p>
944 <p class="whs7"> </p>
946 <p class="whs7">smesh =
947 SMESH_mechanic.smesh</p>
949 <p class="whs7">mesh =
950 SMESH_mechanic.mesh</p>
952 <p class="whs7">salome = SMESH_mechanic.salome</p>
954 <p class="whs7"> </p>
956 <p># delete diagonal</p>
958 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
960 <p class="whs7">aMeshEditor.DeleteDiag(700,
963 <p class="whs7"> </p>
965 <p><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
970 <h3><a name=bookmark6>Uniting a Set of Triangles</a></h3>
972 <p class="whs7">import SMESH</p>
974 <p class="whs7">import SMESH_mechanic</p>
976 <p class="whs7"> </p>
978 <p class="whs7">smesh =
979 SMESH_mechanic.smesh</p>
981 <p class="whs7">mesh =
982 SMESH_mechanic.mesh</p>
984 <p class="whs7">salome = SMESH_mechanic.salome</p>
986 <p class="whs7"> </p>
988 <p># unite a set of triangles</p>
990 <p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
992 <p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
994 <p class="whs7"> </p>
996 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
998 <p class="whs7">aMeshEditor.TriToQuad([1145,
999 1147, 1159, 1135], aFunctor, 60)</p>
1001 <p class="whs7"> </p>
1003 <p class="whs7">salome.sg.updateObjBrowser(1)
1006 <p class="whs7"> </p>
1008 <h3><a name=bookmark12>Orientation</a></h3>
1010 <p class="whs7"><span style="font-family: 'Lucida Console', monospace;">import
1013 <p class="whs7">import geompy</p>
1015 <p class="whs7"> </p>
1017 <p class="whs7">import StdMeshers</p>
1019 <p class="whs7"> </p>
1021 <p class="whs8"># GEOM module</p>
1023 <p class="whs7">shape_mesh = geompy.MakeCylinderRH(13,
1026 <p class="whs7">geompy.addToStudy(shape_mesh,
1027 "cylinder")</p>
1029 <p class="whs7"> </p>
1031 <p class="whs8"># SMESH module</p>
1033 <p class="whs7">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
1034 "SMESH")</p>
1036 <p class="whs7">smesh.SetCurrentStudy(salome.myStudy)</p>
1038 <p class="whs7">mesh = smesh.CreateMesh(shape_mesh)</p>
1040 <p class="whs7">MeshEditor = mesh.GetMeshEditor()</p>
1042 <p class="whs7"> </p>
1044 <p class="whs8"># build five quadrangles:</p>
1046 <p class="whs7">node_start_id = mesh.NbNodes()
1049 <p class="whs7">dx = 10</p>
1051 <p class="whs7">dy = 20</p>
1053 <p class="whs7"> </p>
1055 <p class="whs7">MeshEditor.AddNode(0.0
1058 <p class="whs7">MeshEditor.AddNode(1.0
1061 <p class="whs7">MeshEditor.AddNode(2.0
1064 <p class="whs7">MeshEditor.AddNode(3.0
1067 <p class="whs7">MeshEditor.AddNode(4.0
1070 <p class="whs7">MeshEditor.AddNode(5.0
1073 <p class="whs7"> </p>
1075 <p class="whs7">MeshEditor.AddNode(0.0
1076 * dx, dy, 0) # 7</p>
1078 <p class="whs7">MeshEditor.AddNode(1.0
1079 * dx, dy, 0) # 8</p>
1081 <p class="whs7">MeshEditor.AddNode(2.0
1082 * dx, dy, 0) # 9</p>
1084 <p class="whs7">MeshEditor.AddNode(3.0
1085 * dx, dy, 0) # 10</p>
1087 <p class="whs7">MeshEditor.AddNode(4.0
1088 * dx, dy, 0) # 11</p>
1090 <p class="whs7">MeshEditor.AddNode(5.0
1091 * dx, dy, 0) # 12</p>
1093 <p class="whs7"> </p>
1095 <p class="whs7">MeshEditor.AddFace([1,
1096 2, 8, 7])</p>
1098 <p class="whs7">MeshEditor.AddFace([2,
1099 3, 9, 8])</p>
1101 <p class="whs7">MeshEditor.AddFace([3,
1102 4, 10, 9])</p>
1104 <p class="whs7">MeshEditor.AddFace([4,
1107 <p class="whs7">MeshEditor.AddFace([5,
1110 <p class="whs7"> </p>
1112 <p class="whs8"># Change orientation
1113 of the second and the fourth faces.</p>
1115 <p class="whs7">MeshEditor.Reorient([2,
1118 <p class="whs7"> </p>
1120 <p class="whs7">salome.sg.updateObjBrowser(1)
1123 <p class="whs7"> </p>
1125 <h3><a name=bookmark7>Cutting Quadrangles</a></h3>
1127 <p class="whs7">import SMESH</p>
1129 <p class="whs7">import SMESH_mechanic</p>
1131 <p class="whs7"> </p>
1133 <p class="whs7">smesh =
1134 SMESH_mechanic.smesh</p>
1136 <p class="whs7">mesh =
1137 SMESH_mechanic.mesh</p>
1139 <p class="whs7">salome = SMESH_mechanic.salome</p>
1141 <p class="whs7"> </p>
1143 <p class="whs8"># unite a set of triangles</p>
1145 <p class="whs7">aFilterMgr = smesh.CreateFilterManager()</p>
1147 <p class="whs7">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
1149 <p class="whs7"> </p>
1151 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1153 <p class="whs7">aMeshEditor.QuadToTri([405,
1156 <p class="whs7"> </p>
1158 <p class="whs7">salome.sg.updateObjBrowser(1)
1161 <p class="whs8"> </p>
1163 <h3><a name=bookmark8>Smoothing</a></h3>
1165 <p class="whs7">import SMESH</p>
1167 <p class="whs7">import SMESH_mechanic</p>
1169 <p class="whs7"> </p>
1171 <p class="whs7">smesh =
1172 SMESH_mechanic.smesh</p>
1174 <p class="whs7">mesh =
1175 SMESH_mechanic.mesh</p>
1177 <p class="whs7">salome = SMESH_mechanic.salome</p>
1179 <p class="whs7"> </p>
1181 <p class="whs8"># smooth</p>
1183 <p class="whs7">FacesSmooth = [911,
1184 931, 950, 864, 932]</p>
1186 <p class="whs7">GroupSmooth = mesh.CreateGroup(SMESH.FACE,"Group
1187 of faces (smooth)")</p>
1189 <p class="whs7">GroupSmooth.Add(FacesSmooth)</p>
1191 <p class="whs7"> </p>
1193 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1195 <p class="whs7">aMeshEditor.SmoothObject(GroupSmooth,
1196 [], 20, 2, SMESH.SMESH_MeshEditor.CENTROIDAL_SMOOTH)</p>
1198 <p class="whs7"> </p>
1200 <p class="whs7">salome.sg.updateObjBrowser(1)
1203 <p class="whs7"> </p>
1205 <p class="whs7"> </p>
1207 <h3><a name=bookmark9>Extrusion</a></h3>
1209 <p class="whs8">import SMESH</p>
1211 <p class="whs8">import SMESH_mechanic</p>
1213 <p class="whs8"> </p>
1215 <p class="whs8">smesh =
1216 SMESH_mechanic.smesh</p>
1218 <p class="whs8">mesh =
1219 SMESH_mechanic.mesh</p>
1221 <p class="whs8">salome = SMESH_mechanic.salome</p>
1223 <p class="whs7"> </p>
1225 <p class="whs8"># extrusion of the group</p>
1227 <p class="whs8">point = SMESH.PointStruct(0,
1230 <p class="whs8">vector = SMESH.DirStruct(point)</p>
1232 <p class="whs8">FacesTriToQuad = [2381,
1233 2382, 2383, 2384, 2385, 2386, 2387, 2388, 2389, 2390, 2391, 2392, 2393,
1234 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2401, 2402, 2403, 2404, 2405,
1235 2406, 2407, 2408, 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417,
1236 2418, 2419, 2420, 2421, 2422]</p>
1238 <p class="whs8"> </p>
1240 <p class="whs8">GroupTriToQuad = mesh.CreateGroup(SMESH.FACE,"Group
1241 of faces (quad)")</p>
1243 <p class="whs8">GroupTriToQuad.Add(FacesTriToQuad)</p>
1245 <p class="whs8"> </p>
1247 <p class="whs8">aMeshEditor = mesh.GetMeshEditor()</p>
1249 <p class="whs8">aMeshEditor.ExtrusionSweepObject(GroupTriToQuad,
1252 <p class="whs8"> </p>
1254 <p class="whs8">salome.sg.updateObjBrowser(1)
1257 <p class="whs8"> </p>
1259 <h3><a name=bookmark10>Extrusion along a Path</a></h3>
1261 <p class="whs7">import geompy</p>
1263 <p class="whs7">import smesh</p>
1265 <p class="whs7">import salome</p>
1267 <p class="whs7">import SMESH</p>
1269 <p class="whs7"> </p>
1271 <p class="whs8"># create a face to be
1274 <p class="whs7">px = geompy.MakeVertex(100.,
1278 <p class="whs7">py = geompy.MakeVertex(0.
1282 <p class="whs7">pz = geompy.MakeVertex(0.
1286 <p class="whs7"> </p>
1288 <p class="whs7">vxy = geompy.MakeVector(px,
1291 <p class="whs7">arc = geompy.MakeArc(py,
1294 <p class="whs7"> </p>
1296 <p class="whs7">wire = geompy.MakeWire([vxy,
1299 <p class="whs7">isPlanarFace = 1</p>
1301 <p class="whs7"> </p>
1303 <p class="whs7">face1 = geompy.MakeFace(wire,
1306 <p class="whs7">id_face1 = geompy.addToStudy(face1,
1307 "Face1")</p>
1309 <p class="whs7"> </p>
1311 <p class="whs8"># create a 2D mesh on
1314 <p class="whs7">trias = smesh.Mesh(face1,
1315 "Face : 2D mesh")</p>
1317 <p class="whs7"> </p>
1319 <p class="whs7">algo = trias.Segment()</p>
1321 <p class="whs7">algo.NumberOfSegments(6)</p>
1323 <p class="whs7"> </p>
1325 <p class="whs7">algo = trias.Triangle()</p>
1327 <p class="whs7">algo.LengthFromEdges()</p>
1329 <p class="whs7"> </p>
1331 <p class="whs7">trias.Compute()</p>
1333 <p class="whs7"> </p>
1335 <p class="whs8"># create a path mesh</p>
1337 <p class="whs7">px1 = geompy.MakeVertex(100.,
1341 <p class="whs7">py1 = geompy.MakeVertex(-100.
1345 <p class="whs7">pz1 = geompy.MakeVertex(0.
1349 <p class="whs7"> </p>
1351 <p class="whs7">circle = geompy.MakeCircleThreePnt(py1,
1354 <p class="whs7">id_circle = geompy.addToStudy(circle,
1355 "Path")</p>
1357 <p class="whs7"> </p>
1359 <p class="whs7">circlemesh = smesh.Mesh(circle,
1360 "Path mesh")</p>
1362 <p class="whs7"> </p>
1364 <p class="whs7">algo = circlemesh.Segment()</p>
1366 <p class="whs7">algo.NumberOfSegments(10)</p>
1368 <p class="whs7"> </p>
1370 <p class="whs7">circlemesh.Compute()</p>
1372 <p class="whs7"> </p>
1374 <p class="whs8"># extrusion of the mesh</p>
1376 <p class="whs8"># The mesh "trias"
1377 will be extruded along another mesh, which is a sub-mesh of "circlemesh",</p>
1379 <p class="whs8"><span style="font-family: 'Times New Roman', serif;">#
1380 corresponding to geometry "circle". In this particular case
1381 the path mesh will be the whole "circlemesh"</span></p>
1383 <p class="whs8"> </p>
1385 <p class="whs7">aMeshEditor = trias.GetMesh().GetMeshEditor()</p>
1387 <p class="whs7">aMeshEditor.ExtrusionAlongPathObject(trias.GetMesh(),
1388 circlemesh.GetMesh(), circle, 1, 0, [], 0, SMESH.PointStruct(0, 0, 0))</p>
1390 <p class="whs7"> </p>
1392 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1395 <h3><a name=bookmark11>Revolution</a></h3>
1397 <p class="whs7">import SMESH</p>
1399 <p class="whs7">import SMESH_mechanic</p>
1401 <p class="whs7">import math</p>
1403 <p class="whs7"> </p>
1405 <p class="whs7">smesh =
1406 SMESH_mechanic.smesh</p>
1408 <p class="whs7">mesh =
1409 SMESH_mechanic.mesh</p>
1411 <p class="whs7">salome = SMESH_mechanic.salome</p>
1413 <p class="whs8"> </p>
1415 <p class="whs8"># rotate a sweep object</p>
1417 <p class="whs7">FacesRotate = [492,
1420 <p class="whs7">GroupRotate = mesh.CreateGroup(SMESH.FACE,"Group
1421 of faces (rotate)")</p>
1423 <p class="whs7">GroupRotate.Add(FacesRotate)</p>
1425 <p class="whs7">angle45 = 45*math.pi/180</p>
1427 <p class="whs7">axisXYZ = SMESH.AxisStruct(-38.3128,
1428 -73.3658, -23.321, -13.3402, -13.3265, 6.66632)</p>
1430 <p class="whs7"> </p>
1432 <p class="whs7">aMeshEditor = mesh.GetMeshEditor()</p>
1434 <p class="whs7">aMeshEditor.RotationSweepObject(GroupRotate,
1435 axisXYZ, angle45, 4, 1e-5)</p>
1437 <p class="whs7"> </p>
1439 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1442 <p class="whs8"> </p>
1444 <h3><a name=bookmark13>Pattern Mapping</a></h3>
1446 <p class="whs7">import salome</p>
1448 <p class="whs7">import geompy</p>
1450 <p class="whs7">import SMESH, smesh</p>
1452 <p class="whs7"> </p>
1454 <p class="whs7">geompy.init_geom(salome.myStudy)</p>
1456 <p class="whs7">smesh.smesh.SetCurrentStudy(salome.myStudy)</p>
1458 <p class="whs7"> </p>
1460 <p class="whs8"># define geometry</p>
1462 <p class="whs7">Box_1 = geompy.MakeBoxDXDYDZ(200,
1465 <p class="whs7">geompy.addToStudy(Box_1,
1466 "Box_1")</p>
1468 <p class="whs7"> </p>
1470 <p class="whs7">faces = geompy.SubShapeAll(Box_1,
1471 geompy.ShapeType["FACE"])</p>
1473 <p class="whs7">Face_1 = faces[0]</p>
1475 <p class="whs7">Face_2 = faces[1]</p>
1477 <p class="whs7">geompy.addToStudyInFather(Box_1,
1478 Face_1, "Face_1")</p>
1480 <p class="whs7">geompy.addToStudyInFather(Box_1,
1481 Face_2, "Face_2")</p>
1483 <p class="whs7"> </p>
1485 <p class="whs8"># build quadrangle mesh
1488 <p class="whs7">Mesh_1 = smesh.Mesh(Face_1)</p>
1490 <p class="whs7">Wire_discretisation
1491 = Mesh_1.Segment()</p>
1493 <p class="whs7">Wire_discretisation.NumberOfSegments(3)</p>
1495 <p class="whs7">Mesh_1.Quadrangle()</p>
1497 <p class="whs7"> </p>
1499 <p class="whs7">isDone = Mesh_1.Compute()</p>
1501 <p class="whs7">if not isDone: print
1502 'Mesh Mesh_1 : computation failed'</p>
1504 <p class="whs7"> </p>
1506 <p class="whs8"># pattern the mesh</p>
1508 <p class="whs7">Mesh_2 = smesh.Mesh(Face_2)</p>
1510 <p class="whs7">Nb_Segments_1 = smesh.smesh.CreateHypothesis('NumberOfSegments',
1511 'libStdMeshersEngine.so')</p>
1513 <p class="whs7">Nb_Segments_1.SetNumberOfSegments(1)</p>
1515 <p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2,
1518 <p class="whs7">status = Mesh_2.GetMesh().AddHypothesis(Face_2,
1519 Wire_discretisation.GetAlgorithm())</p>
1521 <p class="whs7">Triangle_Mefisto =
1522 Mesh_2.Triangle()</p>
1524 <p class="whs7">Max_Element_Area =
1525 Triangle_Mefisto.MaxElementArea(240)</p>
1527 <p class="whs7"> </p>
1529 <p class="whs7">isDone = Mesh_2.Compute()</p>
1531 <p class="whs7">if not isDone: print
1532 'Mesh Mesh_2 : computation failed'</p>
1534 <p class="whs7"> </p>
1536 <p class="whs8"># create a pattern</p>
1538 <p class="whs7">pattern = smesh.smesh.GetPattern()</p>
1540 <p class="whs7">isDone = pattern.LoadFromFace(Mesh_2.GetMesh(),
1543 <p class="whs7">if (isDone != 1):</p>
1545 <p class="whs9">print
1546 'LoadFromFace :', pattern.GetErrorCode()</p>
1548 <p class="whs7"> </p>
1550 <p class="whs8"># apply the pattern to
1551 a face of the first mesh</p>
1553 <p class="whs7">pattern.ApplyToMeshFaces(Mesh_1.GetMesh(),
1556 <p class="whs7">isDone = pattern.MakeMesh(Mesh_1.GetMesh(),
1559 <p class="whs7">if (isDone != 1):</p>
1561 <p class="whs9">print
1562 'MakeMesh :', pattern.GetErrorCode()</p>
1564 <p class="whs7"> </p>
1566 <p class="whs8"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1569 <script type="text/javascript" language="javascript1.2">
1571 if (window.writeIntopicBar)