1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
6 <title>Quality Controls</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 type="text/css">
10 p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }
11 p.whs2 { margin-top:0pt; margin-bottom:0pt; }
12 p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }
14 </style><script type="text/javascript" language="JavaScript">
16 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
18 var strNSS = "<style type='text/css'>";
19 strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";
20 strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";
21 strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";
23 document.write(strNSS);
27 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
30 if (innerWidth != origWidth || innerHeight != origHeight)
33 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
34 origWidth = innerWidth;
35 origHeight = innerHeight;
41 <style type="text/css">
43 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
44 p.WebHelpNavBar { text-align:right; }
46 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
47 <script type="text/javascript" language="javascript" src="whver.js"></script>
48 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
49 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
50 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
51 <script type="text/javascript" language="javascript1.2">
55 if (window.setRelStartPage)
57 addTocInfo("MESH module\nTUI Scripts\nQuality Controls");
58 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");
59 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");
64 if (window.setRelStartPage)
66 setRelStartPage("index.htm");
76 document.location.reload();
80 <body><script type="text/javascript" language="javascript1.2">
82 if (window.writeIntopicBar)
86 <h1>Quality Controls</h1>
88 <h3><a name=bookmark>Free Borders</a></h3>
90 <p class="whs1">import salome</p>
92 <p class="whs1">import geompy</p>
94 <p class="whs1">import SMESH</p>
96 <p class="whs1">import StdMeshers</p>
98 <p class="whs1"> </p>
100 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
101 "SMESH")</p>
103 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
105 <p class="whs2"> </p>
107 <p class="whs2"># create a box without
110 <p class="whs1">box = geompy.MakeBox(0.,
111 0., 0., 20., 20., 15.)</p>
113 <p class="whs1">subShapeList = geompy.SubShapeAll(box,
114 geompy.ShapeType["FACE"])</p>
116 <p class="whs1"> </p>
118 <p class="whs1">FaceList =
121 <p class="whs1">for i in range(
124 <p class="whs1"> FaceList.append(
125 subShapeList[ i ] )</p>
127 <p class="whs1"> </p>
129 <p class="whs1">aComp = geompy.MakeCompound(
132 <p class="whs1">aBox = geompy.Sew(
135 <p class="whs1">idbox = geompy.addToStudy(
136 aBox, "box" )</p>
138 <p class="whs1"> </p>
140 <p class="whs1">aBox =
141 salome.IDToObject( idbox )</p>
143 <p class="whs1"> </p>
145 <p class="whs2"># create a mesh</p>
147 <p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
148 "libStdMeshersEngine.so")</p>
150 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
152 <p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
153 "libStdMeshersEngine.so")</p>
155 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
157 <p class="whs1"> </p>
159 <p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
160 "libStdMeshersEngine.so")</p>
162 <p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
163 "libStdMeshersEngine.so")</p>
165 <p class="whs1"> </p>
167 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
169 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
171 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
173 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
175 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
177 <p class="whs1"> </p>
179 <p class="whs1">smesh.Compute(mesh,aBox)</p>
181 <p class="whs1"> </p>
183 <p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
185 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
187 <p class="whs1">smeshgui.SetName(
188 salome.ObjectToID( mesh ), "Mesh_freebord" );</p>
190 <p class="whs2"> </p>
192 <p class="whs2"># criterion : free borders</p>
194 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
196 <p class="whs1">aPredicate = aFilterMgr.CreateFreeBorders()</p>
198 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
200 <p class="whs1">aFilter.SetPredicate(
203 <p class="whs1">anIds = aFilter.GetElementsId(
206 <p class="whs2"> </p>
208 <p class="whs2"># print the result</p>
210 <p class="whs1">print "Criterion:
211 Free borders Nb = ", len( anIds )</p>
213 <p class="whs1">for i in range(
216 <p class="whs1"> print
219 <p class="whs2"> </p>
221 <p class="whs2"># create a group</p>
223 <p class="whs1">aGroup = mesh.CreateGroup(
224 SMESH.EDGE, "Free borders" )</p>
226 <p class="whs1">aGroup.Add( anIds
229 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
232 <p class="whs2"> </p>
234 <h3><a name=bookmark1>Borders at Multiconnection</a></h3>
236 <p class="whs1">import salome</p>
238 <p class="whs1">import geompy</p>
240 <p class="whs1">import SMESH</p>
242 <p class="whs1">import StdMeshers</p>
244 <p class="whs1"> </p>
246 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
247 "SMESH")</p>
249 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
251 <p class="whs1"> </p>
253 <p class="whs2"># create a box without
256 <p class="whs2"> </p>
258 <p class="whs1">box = geompy.MakeBox(0.,
259 0., 0., 20., 20., 15.)</p>
261 <p class="whs1">subShapeList = geompy.SubShapeAll(box,
262 geompy.ShapeType["FACE"])</p>
264 <p class="whs1"> </p>
266 <p class="whs1">FaceList =
269 <p class="whs1">for i in range(
272 <p class="whs1"> FaceList.append(
273 subShapeList[ i ] )</p>
275 <p class="whs1"> </p>
277 <p class="whs1">aComp = geompy.MakeCompound(
280 <p class="whs1">aBox = geompy.Sew(
283 <p class="whs1">idbox = geompy.addToStudy(
284 aBox, "box" )</p>
286 <p class="whs1"> </p>
288 <p class="whs1">aBox =
289 salome.IDToObject( idbox )</p>
291 <p class="whs1"> </p>
293 <p class="whs2"># create a mesh</p>
295 <p class="whs2"> </p>
297 <p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
298 "libStdMeshersEngine.so")</p>
300 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
302 <p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
303 "libStdMeshersEngine.so")</p>
305 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
307 <p class="whs1"> </p>
309 <p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
310 "libStdMeshersEngine.so")</p>
312 <p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
313 "libStdMeshersEngine.so")</p>
315 <p class="whs1"> </p>
317 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
319 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
321 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
323 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
325 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
327 <p class="whs1"> </p>
329 <p class="whs1">smesh.Compute(mesh,aBox)</p>
331 <p class="whs1"> </p>
333 <p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
335 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
337 <p class="whs1">smeshgui.SetName(
338 salome.ObjectToID( mesh ), "Mesh_borders_at_multi-connections"
341 <p class="whs1"> </p>
343 <p class="whs2"># Criterion : Borders at
346 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
348 <p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection()</p>
350 <p class="whs1"> </p>
352 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
354 <p class="whs1">aPredicate.SetNumFunctor(
357 <p class="whs1">aPredicate.SetMargin(
360 <p class="whs1"> </p>
362 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
364 <p class="whs1">aFilter.SetPredicate(
367 <p class="whs1"> </p>
369 <p class="whs1">anIds = aFilter.GetElementsId(
372 <p class="whs1"> </p>
374 <p class="whs2"># print the result</p>
376 <p class="whs1">print "Criterion:
377 Borders at multi-connections Nb = ", len( anIds )</p>
379 <p class="whs1">for i in range(
382 <p class="whs1"> print
385 <p class="whs2"> </p>
387 <p class="whs2"># create a group</p>
389 <p class="whs1">aGroup = mesh.CreateGroup(
390 SMESH.EDGE, "Borders at multi-connections" )</p>
392 <p class="whs1">aGroup.Add( anIds
395 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
398 <p class="whs2"> </p>
400 <h3><a name=bookmark2>Length 1D</a></h3>
402 <p class="whs2"> </p>
404 <p class="whs1">import salome</p>
406 <p class="whs1">import geompy</p>
408 <p class="whs1">import SMESH</p>
410 <p class="whs1">import StdMeshers</p>
412 <p class="whs1"> </p>
414 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
415 "SMESH")</p>
417 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
419 <p class="whs2"> </p>
421 <p class="whs2"># create a box without
424 <p class="whs1">box = geompy.MakeBox(0.,
425 0., 0., 20., 20., 15.)</p>
427 <p class="whs1">subShapeList = geompy.SubShapeAll(box,
428 geompy.ShapeType["FACE"])</p>
430 <p class="whs1"> </p>
432 <p class="whs1">FaceList =
435 <p class="whs1">for i in range(
438 <p class="whs1"> FaceList.append(
439 subShapeList[ i ] )</p>
441 <p class="whs1"> </p>
443 <p class="whs1">aComp = geompy.MakeCompound(
446 <p class="whs1">aBox = geompy.Sew(
449 <p class="whs1">idbox = geompy.addToStudy(
450 aBox, "box" )</p>
452 <p class="whs1"> </p>
454 <p class="whs1">aBox =
455 salome.IDToObject( idbox )</p>
457 <p class="whs1"> </p>
459 <p class="whs2"># create a mesh</p>
461 <p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
462 "libStdMeshersEngine.so")</p>
464 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
466 <p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
467 "libStdMeshersEngine.so")</p>
469 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
471 <p class="whs1"> </p>
473 <p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
474 "libStdMeshersEngine.so")</p>
476 <p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
477 "libStdMeshersEngine.so")</p>
479 <p class="whs1"> </p>
481 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
483 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
485 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
487 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
489 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
491 <p class="whs1"> </p>
493 <p class="whs1">smesh.Compute(mesh,aBox)</p>
495 <p class="whs1"> </p>
497 <p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
499 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
501 <p class="whs1">smeshgui.SetName(
502 salome.ObjectToID( mesh ), "Mesh" );</p>
504 <p class="whs1"> </p>
506 <p class="whs2"># Criterion : Length >
509 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
511 <p class="whs1">aFunctor = aFilterMgr.CreateLength()</p>
513 <p class="whs1"> </p>
515 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
517 <p class="whs1">aPredicate.SetNumFunctor(
520 <p class="whs1">aPredicate.SetMargin(
523 <p class="whs1"> </p>
525 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
527 <p class="whs1">aFilter.SetPredicate(
530 <p class="whs1"> </p>
532 <p class="whs1">anIds = aFilter.GetElementsId(
535 <p class="whs2"> </p>
537 <p class="whs2"># print the result</p>
539 <p class="whs1">print "Criterion:
540 Edges length > 3 Nb = ", len( anIds )</p>
542 <p class="whs1">for i in range(
545 <p class="whs1"> print
548 <p class="whs2"> </p>
550 <p class="whs2"># create a group</p>
552 <p class="whs1">aGroup = mesh.CreateGroup(
553 SMESH.EDGE, "Edges with legth > 3" )</p>
555 <p class="whs1">aGroup.Add( anIds
558 <p class="whs1">salome.sg.updateObjBrowser(1)</p>
560 <p class="whs2"> </p>
562 <h3><a name=bookmark3>Free Edges</a></h3>
564 <p class="whs1">import SMESH</p>
566 <p class="whs1">import SMESH_mechanic</p>
568 <p class="whs1"> </p>
570 <p class="whs1">smesh =
571 SMESH_mechanic.smesh</p>
573 <p class="whs1">mesh =
574 SMESH_mechanic.mesh</p>
576 <p class="whs1">salome = SMESH_mechanic.salome</p>
578 <p class="whs1"> </p>
580 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
582 <p class="whs1"> </p>
584 <p class="whs2"># Criterion : AREA >
587 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
589 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
591 <p class="whs1">aPredicate.SetNumFunctor(
594 <p class="whs1">aPredicate.SetMargin(
597 <p class="whs1"> </p>
599 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
601 <p class="whs1">aFilter.SetPredicate(
604 <p class="whs1"> </p>
606 <p class="whs1">anIds = aFilter.GetElementsId(
609 <p class="whs1">anEditor = mesh.GetMeshEditor()</p>
611 <p class="whs1">anEditor.RemoveElements(anIds)</p>
613 <p class="whs2"> </p>
615 <p class="whs2"># Criterion : Free Edges</p>
617 <p class="whs2"> </p>
619 <p class="whs1">aPredicate = aFilterMgr.CreateFreeEdges()</p>
621 <p class="whs1">aPredicate.SetMesh(
624 <p class="whs1">aBorders = aPredicate.GetBorders()</p>
626 <p class="whs2"> </p>
628 <p class="whs2"># create groups</p>
630 <p class="whs1">aGroupF = mesh.CreateGroup(
631 SMESH.FACE, "Faces with free edges" )</p>
633 <p class="whs1">aGroupN = mesh.CreateGroup(
634 SMESH.NODE, "Nodes on free edges" )</p>
636 <p class="whs2"> </p>
638 <p class="whs2"># fill groups with elements,
639 corresponding to the criterion</p>
641 <p class="whs1">print ""</p>
643 <p class="whs1">print "Criterion:
644 Free edges Nb = ", len( aBorders )</p>
646 <p class="whs1">for i in range(
647 len( aBorders ) ):</p>
649 <p class="whs1"> aBorder
652 <p class="whs1"> print
653 "Face # ", aBorder.myElemId, " : Edge between nodes (",</p>
655 <p class="whs1"> print
656 aBorder.myPnt1, ", ", aBorder.myPnt2, ")"</p>
658 <p class="whs1"> </p>
660 <p class="whs1"> aGroupF.Add(
661 [aBorder.myElemId] )</p>
663 <p class="whs1"> aGroupN.Add(
664 [aBorder.myPnt1, aBorder.myPnt2] )</p>
666 <p class="whs1"> </p>
668 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
671 <p class="whs2"> </p>
673 <h3><a name=bookmark4>Length 2D</a></h3>
675 <p class="whs1">import salome</p>
677 <p class="whs1">import geompy</p>
679 <p class="whs1">import SMESH</p>
681 <p class="whs1">import StdMeshers</p>
683 <p class="whs1"> </p>
685 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
686 "SMESH")</p>
688 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
690 <p class="whs2"> </p>
692 <p class="whs2"># create a box without
695 <p class="whs2"> </p>
697 <p class="whs1">box = geompy.MakeBox(0.,
698 0., 0., 20., 20., 15.)</p>
700 <p class="whs1">subShapeList = geompy.SubShapeAll(box,
701 geompy.ShapeType["FACE"])</p>
703 <p class="whs1"> </p>
705 <p class="whs1">FaceList =
708 <p class="whs1">for i in range(
711 <p class="whs1"> FaceList.append(
712 subShapeList[ i ] )</p>
714 <p class="whs1"> </p>
716 <p class="whs1">aComp = geompy.MakeCompound(
719 <p class="whs1">aBox = geompy.Sew(
722 <p class="whs1">idbox = geompy.addToStudy(
723 aBox, "box" )</p>
725 <p class="whs1"> </p>
727 <p class="whs1">aBox =
728 salome.IDToObject( idbox )</p>
730 <p class="whs2"> </p>
732 <p class="whs2"># create a mesh</p>
734 <p class="whs2"> </p>
736 <p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
737 "libStdMeshersEngine.so")</p>
739 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
741 <p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
742 "libStdMeshersEngine.so")</p>
744 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
746 <p class="whs1"> </p>
748 <p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
749 "libStdMeshersEngine.so")</p>
751 <p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
752 "libStdMeshersEngine.so")</p>
754 <p class="whs1"> </p>
756 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
758 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
760 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
762 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
764 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
766 <p class="whs1"> </p>
768 <p class="whs1">smesh.Compute(mesh,aBox)</p>
770 <p class="whs1"> </p>
772 <p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
774 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
776 <p class="whs1">smeshgui.SetName(
777 salome.ObjectToID( mesh ), "Mesh" );</p>
779 <p class="whs2"> </p>
781 <p class="whs2"># Criterion : Length 2D
784 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
786 <p class="whs1">aFunctor = aFilterMgr.CreateLength2D()</p>
788 <p class="whs1"> </p>
790 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
792 <p class="whs1">aPredicate.SetNumFunctor(
795 <p class="whs1">aPredicate.SetMargin(
798 <p class="whs1"> </p>
800 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
802 <p class="whs1">aFilter.SetPredicate(
805 <p class="whs1"> </p>
807 <p class="whs1">anIds = aFilter.GetElementsId(
810 <p class="whs2"> </p>
812 <p class="whs2"># print the result</p>
814 <p class="whs1">print "Criterion:
815 Edges length 2D > 5 Nb = ", len( anIds )</p>
817 <p class="whs1">for i in range(
820 <p class="whs1"> print
823 <p class="whs2"> </p>
825 <p class="whs2"># create a group</p>
827 <p class="whs1">aGroup = mesh.CreateGroup(
828 SMESH.FACE, "Edges with legth 2D > 5" )</p>
830 <p class="whs1">aGroup.Add( anIds
833 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
836 <p class="whs2"> </p>
838 <h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
840 <p class="whs1">import salome</p>
842 <p class="whs1">import geompy</p>
844 <p class="whs1">import SMESH</p>
846 <p class="whs1">import StdMeshers</p>
848 <p class="whs1"> </p>
850 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent("FactoryServer",
851 "SMESH")</p>
853 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
855 <p class="whs1"> </p>
857 <p class="whs2"># create a box without
860 <p class="whs1">box = geompy.MakeBox(0.,
861 0., 0., 20., 20., 15.)</p>
863 <p class="whs1">subShapeList = geompy.SubShapeAll(box,
864 geompy.ShapeType["FACE"])</p>
866 <p class="whs1"> </p>
868 <p class="whs1">FaceList =
871 <p class="whs1">for i in range(
874 <p class="whs1"> FaceList.append(
875 subShapeList[ i ] )</p>
877 <p class="whs1"> </p>
879 <p class="whs1">aComp = geompy.MakeCompound(
882 <p class="whs1">aBox = geompy.Sew(
885 <p class="whs1">idbox = geompy.addToStudy(
886 aBox, "box" )</p>
888 <p class="whs1"> </p>
890 <p class="whs1">aBox =
891 salome.IDToObject( idbox )</p>
893 <p class="whs2"> </p>
895 <p class="whs2"># create a mesh</p>
897 <p class="whs1">hyp1 = smesh.CreateHypothesis("NumberOfSegments",
898 "libStdMeshersEngine.so")</p>
900 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
902 <p class="whs1">hyp2 = smesh.CreateHypothesis("MaxElementArea",
903 "libStdMeshersEngine.so")</p>
905 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
907 <p class="whs1"> </p>
909 <p class="whs1">algo1 = smesh.CreateHypothesis("Regular_1D",
910 "libStdMeshersEngine.so")</p>
912 <p class="whs1">algo2 = smesh.CreateHypothesis("MEFISTO_2D",
913 "libStdMeshersEngine.so")</p>
915 <p class="whs1"> </p>
917 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
919 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
921 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
923 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
925 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
927 <p class="whs1"> </p>
929 <p class="whs1">smesh.Compute(mesh,aBox)</p>
931 <p class="whs1">smeshgui = salome.ImportComponentGUI("SMESH")</p>
933 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
935 <p class="whs1">smeshgui.SetName(
936 salome.ObjectToID( mesh ), "Mesh" );</p>
938 <p class="whs2"> </p>
940 <p class="whs2"># Criterion : MULTI-CONNECTION
943 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
945 <p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
947 <p class="whs1"> </p>
949 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
951 <p class="whs1">aPredicate.SetNumFunctor(
954 <p class="whs1">aPredicate.SetMargin(
957 <p class="whs1"> </p>
959 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
961 <p class="whs1">aFilter.SetPredicate(
964 <p class="whs1">anIds = aFilter.GetElementsId(
967 <p class="whs2"> </p>
969 <p class="whs2"># print the result</p>
971 <p class="whs1">print "Criterion:
972 Borders at multi-connection 2D = 2 Nb = ", len( anIds )</p>
974 <p class="whs1">for i in range(
977 <p class="whs1"> print
980 <p class="whs2"> </p>
982 <p class="whs2"># create a group</p>
984 <p class="whs1">aGroup = mesh.CreateGroup(
985 SMESH.FACE, "Borders at multi-connection 2D = 2" )</p>
987 <p class="whs1">aGroup.Add( anIds
990 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
993 <p class="whs2"> </p>
995 <h3><a name=bookmark6>Area</a></h3>
997 <p class="whs1">import SMESH</p>
999 <p class="whs1">import SMESH_mechanic</p>
1001 <p class="whs1"> </p>
1003 <p class="whs1">smesh =
1004 SMESH_mechanic.smesh</p>
1006 <p class="whs1">mesh =
1007 SMESH_mechanic.mesh</p>
1009 <p class="whs1">salome = SMESH_mechanic.salome</p>
1011 <p class="whs1"> </p>
1013 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1015 <p class="whs1"> </p>
1017 <p class="whs2"># Criterion : AREA >
1020 <p class="whs2"> </p>
1022 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
1024 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1026 <p class="whs1">aPredicate.SetNumFunctor(
1029 <p class="whs1">aPredicate.SetMargin(
1032 <p class="whs1"> </p>
1034 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1036 <p class="whs1">aFilter.SetPredicate(
1039 <p class="whs1"> </p>
1041 <p class="whs1">anIds = aFilter.GetElementsId(
1044 <p class="whs1"> </p>
1046 <p class="whs2"># print the result</p>
1048 <p class="whs1">print "Criterion:
1049 Area > 100 Nb = ", len( anIds )</p>
1051 <p class="whs1">for i in range(
1054 <p class="whs1"> print
1057 <p class="whs2"> </p>
1059 <p class="whs2"># create a group</p>
1061 <p class="whs1">aGroup = mesh.CreateGroup(
1062 SMESH.FACE, "Area > 100" )</p>
1064 <p class="whs1">aGroup.Add( anIds
1067 <p class="whs1"> </p>
1069 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1072 <p class="whs2"> </p>
1074 <h3><a name=bookmark7>Taper</a></h3>
1076 <p class="whs1">import SMESH</p>
1078 <p class="whs1">import SMESH_mechanic</p>
1080 <p class="whs1"> </p>
1082 <p class="whs1">smesh =
1083 SMESH_mechanic.smesh</p>
1085 <p class="whs1">mesh =
1086 SMESH_mechanic.mesh</p>
1088 <p class="whs1">salome = SMESH_mechanic.salome</p>
1090 <p class="whs1"> </p>
1092 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1094 <p class="whs2"> </p>
1096 <p class="whs2"># Criterion : Taper >
1099 <p class="whs2"> </p>
1101 <p class="whs1">aFunctor = aFilterMgr.CreateTaper()</p>
1103 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1105 <p class="whs1">aPredicate.SetNumFunctor(
1108 <p class="whs1">aPredicate.SetMargin(
1111 <p class="whs1"> </p>
1113 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1115 <p class="whs1">aFilter.SetPredicate(
1118 <p class="whs1"> </p>
1120 <p class="whs1">anIds = aFilter.GetElementsId(
1123 <p class="whs2"> </p>
1125 <p class="whs2"># print the result</p>
1127 <p class="whs1">print "Criterion:
1128 Taper > 3e-20 Nb = ", len( anIds )</p>
1130 <p class="whs1">for i in range(
1133 <p class="whs1"> print
1136 <p class="whs2"> </p>
1138 <p class="whs2"># create a group</p>
1140 <p class="whs1">aGroup = mesh.CreateGroup(
1141 SMESH.FACE, "Taper > 3e-20" )</p>
1143 <p class="whs1">aGroup.Add( anIds
1146 <p class="whs1"> </p>
1148 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1151 <p class="whs2"> </p>
1153 <h3><a name=bookmark8>Aspect Ratio</a></h3>
1155 <p class="whs1">import SMESH</p>
1157 <p class="whs1">import SMESH_mechanic</p>
1159 <p class="whs1"> </p>
1161 <p class="whs1">smesh =
1162 SMESH_mechanic.smesh</p>
1164 <p class="whs1">mesh =
1165 SMESH_mechanic.mesh</p>
1167 <p class="whs1">salome = SMESH_mechanic.salome</p>
1169 <p class="whs1"> </p>
1171 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1173 <p class="whs1"> </p>
1175 <p class="whs2"># Criterion : ASPECT RATIO
1178 <p class="whs2"> </p>
1180 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio()</p>
1182 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1184 <p class="whs1">aPredicate.SetNumFunctor(
1187 <p class="whs1">aPredicate.SetMargin(
1190 <p class="whs1"> </p>
1192 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1194 <p class="whs1">aFilter.SetPredicate(
1197 <p class="whs1"> </p>
1199 <p class="whs1">anIds = aFilter.GetElementsId(
1202 <p class="whs1"> </p>
1204 <p class="whs2"># print the result</p>
1206 <p class="whs1">print "Criterion:
1207 Aspect Ratio > 1.4 Nb = ", len( anIds )</p>
1209 <p class="whs1">for i in range(
1212 <p class="whs1"> print
1215 <p class="whs2"> </p>
1217 <p class="whs2"># create a group</p>
1219 <p class="whs1">aGroup = mesh.CreateGroup(
1220 SMESH.FACE, "Aspect Ratio > 1.4" )</p>
1222 <p class="whs1">aGroup.Add( anIds
1225 <p class="whs1"> </p>
1227 <p class="whs1">salome.sg.updateObjBrowser(1)
1230 <p class="whs1"> </p>
1232 <h3><a name=bookmark9>Minimum Angle</a></h3>
1234 <p class="whs1"> </p>
1236 <p class="whs1">import SMESH</p>
1238 <p class="whs1">import SMESH_mechanic</p>
1240 <p class="whs1"> </p>
1242 <p class="whs1">smesh =
1243 SMESH_mechanic.smesh</p>
1245 <p class="whs1">mesh =
1246 SMESH_mechanic.mesh</p>
1248 <p class="whs1">salome = SMESH_mechanic.salome</p>
1250 <p class="whs1"> </p>
1252 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1254 <p class="whs1"> </p>
1256 <p class="whs3"># Criterion : MINIMUM
1259 <p class="whs1"> </p>
1261 <p class="whs1">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
1263 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
1265 <p class="whs1">aPredicate.SetNumFunctor(
1268 <p class="whs1">aPredicate.SetMargin(
1271 <p class="whs1"> </p>
1273 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1275 <p class="whs1">aFilter.SetPredicate(
1278 <p class="whs1"> </p>
1280 <p class="whs1">anIds = aFilter.GetElementsId(
1283 <p class="whs1"> </p>
1285 <p class="whs3"># print the result</p>
1287 <p class="whs1">print "Criterion:
1288 Minimum Angle < 70 Nb = ", len( anIds )</p>
1290 <p class="whs1">for i in range(
1293 <p class="whs1"> print
1296 <p class="whs1"> </p>
1298 <p class="whs3"># create a group</p>
1300 <p class="whs1">aGroup = mesh.CreateGroup(
1301 SMESH.FACE, "Minimum Angle < 70" )</p>
1303 <p class="whs1">aGroup.Add( anIds
1306 <p class="whs1"> </p>
1308 <p class="whs1">salome.sg.updateObjBrowser(1)
1311 <p class="whs1"> </p>
1313 <h3><a name=bookmark10>Warping</a></h3>
1315 <p class="whs1">import SMESH</p>
1317 <p class="whs1">import SMESH_mechanic</p>
1319 <p class="whs1"> </p>
1321 <p class="whs1">smesh =
1322 SMESH_mechanic.smesh</p>
1324 <p class="whs1">mesh =
1325 SMESH_mechanic.mesh</p>
1327 <p class="whs1">salome = SMESH_mechanic.salome</p>
1329 <p class="whs1"> </p>
1331 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1333 <p class="whs2"> </p>
1335 <p class="whs2"># Criterion : WARP ANGLE
1338 <p class="whs2"> </p>
1340 <p class="whs1">aFunctor = aFilterMgr.CreateWarping()</p>
1342 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1344 <p class="whs1">aPredicate.SetNumFunctor(
1347 <p class="whs1">aPredicate.SetMargin(
1350 <p class="whs1"> </p>
1352 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1354 <p class="whs1">aFilter.SetPredicate(
1357 <p class="whs1"> </p>
1359 <p class="whs1">anIds = aFilter.GetElementsId(
1362 <p class="whs2"> </p>
1364 <p class="whs2"># print the result</p>
1366 <p class="whs1">print "Criterion:
1367 Warp > 1e-15 Nb = ", len( anIds )</p>
1369 <p class="whs1">for i in range(
1372 <p class="whs1"> print
1375 <p class="whs2"> </p>
1377 <p class="whs2"># create a group</p>
1379 <p class="whs1">aGroup = mesh.CreateGroup(
1380 SMESH.FACE, "Warp > 1e-15" )</p>
1382 <p class="whs1">aGroup.Add( anIds
1385 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1388 <p class="whs2"> </p>
1390 <h3><a name=bookmark12>Skew</a></h3>
1392 <p class="whs1">import SMESH</p>
1394 <p class="whs1">import SMESH_mechanic</p>
1396 <p class="whs1"> </p>
1398 <p class="whs1">smesh =
1399 SMESH_mechanic.smesh</p>
1401 <p class="whs1">mesh =
1402 SMESH_mechanic.mesh</p>
1404 <p class="whs1">salome = SMESH_mechanic.salome</p>
1406 <p class="whs1"> </p>
1408 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1410 <p class="whs1"> </p>
1412 <p class="whs2"># Criterion : Skew >
1415 <p class="whs1"> </p>
1417 <p class="whs1">aFunctor = aFilterMgr.CreateSkew()</p>
1419 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1421 <p class="whs1">aPredicate.SetNumFunctor(
1424 <p class="whs1">aPredicate.SetMargin(
1427 <p class="whs1"> </p>
1429 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1431 <p class="whs1">aFilter.SetPredicate(
1434 <p class="whs1"> </p>
1436 <p class="whs1">anIds = aFilter.GetElementsId(
1439 <p class="whs1"> </p>
1441 <p class="whs2"># print the result</p>
1443 <p class="whs1">print "Criterion:
1444 Skew > 18 Nb = ", len( anIds )</p>
1446 <p class="whs1">for i in range(
1449 <p class="whs1"> print
1452 <p class="whs2"> </p>
1454 <p class="whs2"># create a group</p>
1456 <p class="whs1">aGroup = mesh.CreateGroup(
1457 SMESH.FACE, "Skew > 18" )</p>
1459 <p class="whs1">aGroup.Add( anIds
1462 <p class="whs1"> </p>
1464 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1467 <p class="whs2"> </p>
1469 <h3><a name=bookmark11>Aspect Ratio 3D</a></h3>
1471 <p class="whs1">import SMESH</p>
1473 <p class="whs1">import SMESH_mechanic_tetra</p>
1475 <p class="whs1"> </p>
1477 <p class="whs1">smesh =
1478 SMESH_mechanic_tetra.smesh</p>
1480 <p class="whs1">mesh =
1481 SMESH_mechanic_tetra.mesh</p>
1483 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
1485 <p class="whs1"> </p>
1487 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1489 <p class="whs1"> </p>
1491 <p class="whs2"># Criterion : ASPECT RATIO
1494 <p class="whs2"> </p>
1496 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
1498 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1500 <p class="whs1">aPredicate.SetNumFunctor(
1503 <p class="whs1">aPredicate.SetMargin(
1506 <p class="whs1"> </p>
1508 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1510 <p class="whs1">aFilter.SetPredicate(
1513 <p class="whs1"> </p>
1515 <p class="whs1">anIds = aFilter.GetElementsId(
1518 <p class="whs2"> </p>
1520 <p class="whs2"># print the result</p>
1522 <p class="whs1">print "Criterion:
1523 Aspect Ratio 3D > 2.2 Nb = ", len( anIds )</p>
1525 <p class="whs1">for i in range(
1528 <p class="whs1"> print
1531 <p class="whs2"> </p>
1533 <p class="whs2"># create a group</p>
1535 <p class="whs1">aGroup = mesh.CreateGroup(
1536 SMESH.VOLUME, "Aspect Ratio 3D > 2.2" )</p>
1538 <p class="whs1">aGroup.Add( anIds
1541 <p class="whs1"> </p>
1543 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1546 <p class="whs2"> </p>
1548 <h3><a name=Volume>Volume</a></h3>
1550 <p class="whs1">import SMESH</p>
1552 <p class="whs1">import SMESH_mechanic_tetra</p>
1554 <p class="whs1"> </p>
1556 <p class="whs1">smesh =
1557 SMESH_mechanic_tetra.smesh</p>
1559 <p class="whs1">mesh =
1560 SMESH_mechanic_tetra.mesh</p>
1562 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
1564 <p class="whs1"> </p>
1566 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1568 <p class="whs1"> </p>
1570 <p class="whs2"># Criterion : VOLUME <
1573 <p class="whs2"> </p>
1575 <p class="whs1">aFunctor = aFilterMgr.CreateVolume3D()</p>
1577 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
1579 <p class="whs1">aPredicate.SetNumFunctor(
1582 <p class="whs1">aPredicate.SetMargin(
1585 <p class="whs1"> </p>
1587 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1589 <p class="whs1">aFilter.SetPredicate(
1592 <p class="whs1"> </p>
1594 <p class="whs1">anIds = aFilter.GetElementsId(
1597 <p class="whs1"> </p>
1599 <p class="whs2"># print the result</p>
1601 <p class="whs1">print ""</p>
1603 <p class="whs1">print "Criterion:
1604 Volume < 7 Nb = ", len( anIds )</p>
1606 <p class="whs1">for i in range(
1609 <p class="whs1"> print
1612 <p class="whs1"> </p>
1614 <p class="whs2"># create a group</p>
1616 <p class="whs1">aGroup = mesh.CreateGroup(
1617 SMESH.VOLUME, "Volume < 7" )</p>
1619 <p class="whs1">aGroup.Add( anIds
1622 <p class="whs1"> </p>
1624 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span>
1627 <script type="text/javascript" language="javascript1.2">
1629 if (window.writeIntopicBar)