Salome HOME
4e4d2fcdcb3c78fedc18ed9e2b68ab1ee3516268
[modules/smesh.git] / doc / salome / gui / SMESH / quality_controls.htm
1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
2
3 <html>
4
5 <head>
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">
9 <!--
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; }
13 -->
14 </style><script type="text/javascript" language="JavaScript">
15 <!--
16 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))
17 {
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; }";
22   strNSS +="</style>";
23   document.write(strNSS);
24 }
25 //-->
26 </script>
27 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
28 <!--
29 function reDo() {
30   if (innerWidth != origWidth || innerHeight != origHeight)
31      location.reload();
32 }
33 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
34         origWidth = innerWidth;
35         origHeight = innerHeight;
36         onresize = reDo;
37 }
38 onerror = null; 
39 //-->
40 </script>
41 <style type="text/css">
42 <!--
43 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
44 p.WebHelpNavBar { text-align:right; }
45 -->
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">
52 <!--
53 if (window.gbWhTopic)
54 {
55         if (window.setRelStartPage)
56         {
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");
60
61         }
62
63
64         if (window.setRelStartPage)
65         {
66         setRelStartPage("index.htm");
67
68                 autoSync(1);
69                 sendSyncInfo();
70                 sendAveInfoOut();
71         }
72
73 }
74 else
75         if (window.gbIE4)
76                 document.location.reload();
77 //-->
78 </script>
79 </head>
80 <body><script type="text/javascript" language="javascript1.2">
81 <!--
82 if (window.writeIntopicBar)
83         writeIntopicBar(4);
84 //-->
85 </script>
86 <h1>Quality Controls</h1>
87
88 <h3><a name=bookmark>Free Borders</a></h3>
89
90 <p class="whs1">import salome</p>
91
92 <p class="whs1">import geompy</p>
93
94 <p class="whs1">import SMESH</p>
95
96 <p class="whs1">import StdMeshers</p>
97
98 <p class="whs1">&nbsp;</p>
99
100 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
101  &quot;SMESH&quot;)</p>
102
103 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
104
105 <p class="whs2">&nbsp;</p>
106
107 <p class="whs2"># create a box without 
108  one plane</p>
109
110 <p class="whs1">box = geompy.MakeBox(0., 
111  0., 0., 20., 20., 15.)</p>
112
113 <p class="whs1">subShapeList = geompy.SubShapeAll(box, 
114  geompy.ShapeType[&quot;FACE&quot;])</p>
115
116 <p class="whs1">&nbsp;</p>
117
118 <p class="whs1">FaceList &nbsp;= 
119  []</p>
120
121 <p class="whs1">for i in range( 
122  5 ):</p>
123
124 <p class="whs1">&nbsp;&nbsp;FaceList.append( 
125  subShapeList[ i ] )</p>
126
127 <p class="whs1">&nbsp;</p>
128
129 <p class="whs1">aComp = geompy.MakeCompound( 
130  FaceList )</p>
131
132 <p class="whs1">aBox = geompy.Sew( 
133  aComp, 1. )</p>
134
135 <p class="whs1">idbox = geompy.addToStudy( 
136  aBox, &quot;box&quot; )</p>
137
138 <p class="whs1">&nbsp;&nbsp;</p>
139
140 <p class="whs1">aBox &nbsp;= 
141  salome.IDToObject( idbox )</p>
142
143 <p class="whs1">&nbsp;</p>
144
145 <p class="whs2"># create a mesh</p>
146
147 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
148  &quot;libStdMeshersEngine.so&quot;)</p>
149
150 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
151
152 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
153  &quot;libStdMeshersEngine.so&quot;)</p>
154
155 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
156
157 <p class="whs1">&nbsp;</p>
158
159 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
160  &quot;libStdMeshersEngine.so&quot;)</p>
161
162 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
163  &quot;libStdMeshersEngine.so&quot;)</p>
164
165 <p class="whs1">&nbsp;</p>
166
167 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
168
169 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
170
171 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
172
173 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
174
175 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
176
177 <p class="whs1">&nbsp;</p>
178
179 <p class="whs1">smesh.Compute(mesh,aBox)</p>
180
181 <p class="whs1">&nbsp;</p>
182
183 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
184
185 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
186
187 <p class="whs1">smeshgui.SetName( 
188  salome.ObjectToID( mesh ), &quot;Mesh_freebord&quot; );</p>
189
190 <p class="whs2">&nbsp;</p>
191
192 <p class="whs2"># criterion : free borders</p>
193
194 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
195
196 <p class="whs1">aPredicate = aFilterMgr.CreateFreeBorders()</p>
197
198 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
199
200 <p class="whs1">aFilter.SetPredicate( 
201  aPredicate )</p>
202
203 <p class="whs1">anIds = aFilter.GetElementsId( 
204  mesh )</p>
205
206 <p class="whs2">&nbsp;</p>
207
208 <p class="whs2"># print the result</p>
209
210 <p class="whs1">print &quot;Criterion: 
211  Free borders Nb = &quot;, len( anIds )</p>
212
213 <p class="whs1">for i in range( 
214  len( anIds ) ):</p>
215
216 <p class="whs1">&nbsp;&nbsp;print 
217  anIds[ i ]</p>
218
219 <p class="whs2">&nbsp;</p>
220
221 <p class="whs2"># create a group</p>
222
223 <p class="whs1">aGroup = mesh.CreateGroup( 
224  SMESH.EDGE, &quot;Free borders&quot; )</p>
225
226 <p class="whs1">aGroup.Add( anIds 
227  )</p>
228
229 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
230  </p>
231
232 <p class="whs2">&nbsp;</p>
233
234 <h3><a name=bookmark1>Borders at Multiconnection</a></h3>
235
236 <p class="whs1">import salome</p>
237
238 <p class="whs1">import geompy</p>
239
240 <p class="whs1">import SMESH</p>
241
242 <p class="whs1">import StdMeshers</p>
243
244 <p class="whs1">&nbsp;</p>
245
246 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
247  &quot;SMESH&quot;)</p>
248
249 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
250
251 <p class="whs1">&nbsp;</p>
252
253 <p class="whs2"># create a box without 
254  one plane</p>
255
256 <p class="whs2">&nbsp;</p>
257
258 <p class="whs1">box = geompy.MakeBox(0., 
259  0., 0., 20., 20., 15.)</p>
260
261 <p class="whs1">subShapeList = geompy.SubShapeAll(box, 
262  geompy.ShapeType[&quot;FACE&quot;])</p>
263
264 <p class="whs1">&nbsp;</p>
265
266 <p class="whs1">FaceList &nbsp;= 
267  []</p>
268
269 <p class="whs1">for i in range( 
270  5 ):</p>
271
272 <p class="whs1">&nbsp;&nbsp;FaceList.append( 
273  subShapeList[ i ] )</p>
274
275 <p class="whs1">&nbsp;</p>
276
277 <p class="whs1">aComp = geompy.MakeCompound( 
278  FaceList )</p>
279
280 <p class="whs1">aBox = geompy.Sew( 
281  aComp, 1. )</p>
282
283 <p class="whs1">idbox = geompy.addToStudy( 
284  aBox, &quot;box&quot; )</p>
285
286 <p class="whs1">&nbsp;&nbsp;</p>
287
288 <p class="whs1">aBox &nbsp;= 
289  salome.IDToObject( idbox )</p>
290
291 <p class="whs1">&nbsp;</p>
292
293 <p class="whs2"># create a mesh</p>
294
295 <p class="whs2">&nbsp;</p>
296
297 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
298  &quot;libStdMeshersEngine.so&quot;)</p>
299
300 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
301
302 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
303  &quot;libStdMeshersEngine.so&quot;)</p>
304
305 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
306
307 <p class="whs1">&nbsp;</p>
308
309 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
310  &quot;libStdMeshersEngine.so&quot;)</p>
311
312 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
313  &quot;libStdMeshersEngine.so&quot;)</p>
314
315 <p class="whs1">&nbsp;</p>
316
317 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
318
319 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
320
321 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
322
323 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
324
325 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
326
327 <p class="whs1">&nbsp;</p>
328
329 <p class="whs1">smesh.Compute(mesh,aBox)</p>
330
331 <p class="whs1">&nbsp;</p>
332
333 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
334
335 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
336
337 <p class="whs1">smeshgui.SetName( 
338  salome.ObjectToID( mesh ), &quot;Mesh_borders_at_multi-connections&quot; 
339  );</p>
340
341 <p class="whs1">&nbsp;</p>
342
343 <p class="whs2"># Criterion : Borders at 
344  multi-connection</p>
345
346 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
347
348 <p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection()</p>
349
350 <p class="whs1">&nbsp;</p>
351
352 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
353
354 <p class="whs1">aPredicate.SetNumFunctor( 
355  aFunctor )</p>
356
357 <p class="whs1">aPredicate.SetMargin( 
358  2 )</p>
359
360 <p class="whs1">&nbsp;</p>
361
362 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
363
364 <p class="whs1">aFilter.SetPredicate( 
365  aPredicate )</p>
366
367 <p class="whs1">&nbsp;</p>
368
369 <p class="whs1">anIds = aFilter.GetElementsId( 
370  mesh )</p>
371
372 <p class="whs1">&nbsp;</p>
373
374 <p class="whs2"># print the result</p>
375
376 <p class="whs1">print &quot;Criterion: 
377  Borders at multi-connections Nb = &quot;, len( anIds )</p>
378
379 <p class="whs1">for i in range( 
380  len( anIds ) ):</p>
381
382 <p class="whs1">&nbsp;&nbsp;print 
383  anIds[ i ]</p>
384
385 <p class="whs2">&nbsp;</p>
386
387 <p class="whs2"># create a group</p>
388
389 <p class="whs1">aGroup = mesh.CreateGroup( 
390  SMESH.EDGE, &quot;Borders at multi-connections&quot; )</p>
391
392 <p class="whs1">aGroup.Add( anIds 
393  )</p>
394
395 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
396  </p>
397
398 <p class="whs2">&nbsp;</p>
399
400 <h3><a name=bookmark2>Length 1D</a></h3>
401
402 <p class="whs2">&nbsp;</p>
403
404 <p class="whs1">import salome</p>
405
406 <p class="whs1">import geompy</p>
407
408 <p class="whs1">import SMESH</p>
409
410 <p class="whs1">import StdMeshers</p>
411
412 <p class="whs1">&nbsp;</p>
413
414 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
415  &quot;SMESH&quot;)</p>
416
417 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
418
419 <p class="whs2">&nbsp;</p>
420
421 <p class="whs2"># create a box without 
422  one plane</p>
423
424 <p class="whs1">box = geompy.MakeBox(0., 
425  0., 0., 20., 20., 15.)</p>
426
427 <p class="whs1">subShapeList = geompy.SubShapeAll(box, 
428  geompy.ShapeType[&quot;FACE&quot;])</p>
429
430 <p class="whs1">&nbsp;</p>
431
432 <p class="whs1">FaceList &nbsp;= 
433  []</p>
434
435 <p class="whs1">for i in range( 
436  5 ):</p>
437
438 <p class="whs1">&nbsp;&nbsp;FaceList.append( 
439  subShapeList[ i ] )</p>
440
441 <p class="whs1">&nbsp;</p>
442
443 <p class="whs1">aComp = geompy.MakeCompound( 
444  FaceList )</p>
445
446 <p class="whs1">aBox = geompy.Sew( 
447  aComp, 1. )</p>
448
449 <p class="whs1">idbox = geompy.addToStudy( 
450  aBox, &quot;box&quot; )</p>
451
452 <p class="whs1">&nbsp;&nbsp;</p>
453
454 <p class="whs1">aBox &nbsp;= 
455  salome.IDToObject( idbox )</p>
456
457 <p class="whs1">&nbsp;</p>
458
459 <p class="whs2"># create a mesh</p>
460
461 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
462  &quot;libStdMeshersEngine.so&quot;)</p>
463
464 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
465
466 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
467  &quot;libStdMeshersEngine.so&quot;)</p>
468
469 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
470
471 <p class="whs1">&nbsp;</p>
472
473 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
474  &quot;libStdMeshersEngine.so&quot;)</p>
475
476 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
477  &quot;libStdMeshersEngine.so&quot;)</p>
478
479 <p class="whs1">&nbsp;</p>
480
481 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
482
483 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
484
485 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
486
487 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
488
489 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
490
491 <p class="whs1">&nbsp;</p>
492
493 <p class="whs1">smesh.Compute(mesh,aBox)</p>
494
495 <p class="whs1">&nbsp;</p>
496
497 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
498
499 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
500
501 <p class="whs1">smeshgui.SetName( 
502  salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
503
504 <p class="whs1">&nbsp;</p>
505
506 <p class="whs2"># Criterion : Length &gt; 
507  3</p>
508
509 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
510
511 <p class="whs1">aFunctor = aFilterMgr.CreateLength()</p>
512
513 <p class="whs1">&nbsp;</p>
514
515 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
516
517 <p class="whs1">aPredicate.SetNumFunctor( 
518  aFunctor )</p>
519
520 <p class="whs1">aPredicate.SetMargin( 
521  3 )</p>
522
523 <p class="whs1">&nbsp;</p>
524
525 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
526
527 <p class="whs1">aFilter.SetPredicate( 
528  aPredicate )</p>
529
530 <p class="whs1">&nbsp;</p>
531
532 <p class="whs1">anIds = aFilter.GetElementsId( 
533  mesh )</p>
534
535 <p class="whs2">&nbsp;</p>
536
537 <p class="whs2"># print the result</p>
538
539 <p class="whs1">print &quot;Criterion: 
540  Edges length &gt; 3 Nb = &quot;, len( anIds )</p>
541
542 <p class="whs1">for i in range( 
543  len( anIds ) ):</p>
544
545 <p class="whs1">&nbsp;&nbsp;print 
546  anIds[ i ]</p>
547
548 <p class="whs2">&nbsp;</p>
549
550 <p class="whs2"># create a group</p>
551
552 <p class="whs1">aGroup = mesh.CreateGroup( 
553  SMESH.EDGE, &quot;Edges with legth &gt; 3&quot; )</p>
554
555 <p class="whs1">aGroup.Add( anIds 
556  )</p>
557
558 <p class="whs1">salome.sg.updateObjBrowser(1)</p>
559
560 <p class="whs2">&nbsp;</p>
561
562 <h3><a name=bookmark3>Free Edges</a></h3>
563
564 <p class="whs1">import SMESH</p>
565
566 <p class="whs1">import SMESH_mechanic</p>
567
568 <p class="whs1">&nbsp;</p>
569
570 <p class="whs1">smesh &nbsp;= 
571  SMESH_mechanic.smesh</p>
572
573 <p class="whs1">mesh &nbsp;&nbsp;= 
574  SMESH_mechanic.mesh</p>
575
576 <p class="whs1">salome = SMESH_mechanic.salome</p>
577
578 <p class="whs1">&nbsp;</p>
579
580 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
581
582 <p class="whs1">&nbsp;</p>
583
584 <p class="whs2"># Criterion : AREA &gt; 
585  30</p>
586
587 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
588
589 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
590
591 <p class="whs1">aPredicate.SetNumFunctor( 
592  aFunctor )</p>
593
594 <p class="whs1">aPredicate.SetMargin( 
595  95 )</p>
596
597 <p class="whs1">&nbsp;</p>
598
599 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
600
601 <p class="whs1">aFilter.SetPredicate( 
602  aPredicate )</p>
603
604 <p class="whs1">&nbsp;</p>
605
606 <p class="whs1">anIds = aFilter.GetElementsId( 
607  mesh )</p>
608
609 <p class="whs1">anEditor = mesh.GetMeshEditor()</p>
610
611 <p class="whs1">anEditor.RemoveElements(anIds)</p>
612
613 <p class="whs2">&nbsp;</p>
614
615 <p class="whs2"># Criterion : Free Edges</p>
616
617 <p class="whs2">&nbsp;</p>
618
619 <p class="whs1">aPredicate = aFilterMgr.CreateFreeEdges()</p>
620
621 <p class="whs1">aPredicate.SetMesh( 
622  mesh )</p>
623
624 <p class="whs1">aBorders = aPredicate.GetBorders()</p>
625
626 <p class="whs2">&nbsp;</p>
627
628 <p class="whs2"># create groups</p>
629
630 <p class="whs1">aGroupF = mesh.CreateGroup( 
631  SMESH.FACE, &quot;Faces with free edges&quot; )</p>
632
633 <p class="whs1">aGroupN = mesh.CreateGroup( 
634  SMESH.NODE, &quot;Nodes on free edges&quot; )</p>
635
636 <p class="whs2">&nbsp;</p>
637
638 <p class="whs2"># fill groups with elements, 
639  corresponding to the criterion</p>
640
641 <p class="whs1">print &quot;&quot;</p>
642
643 <p class="whs1">print &quot;Criterion: 
644  Free edges Nb = &quot;, len( aBorders )</p>
645
646 <p class="whs1">for i in range( 
647  len( aBorders ) ):</p>
648
649 <p class="whs1">&nbsp;&nbsp;aBorder 
650  = aBorders[ i ]</p>
651
652 <p class="whs1">&nbsp;&nbsp;print 
653  &quot;Face # &quot;, aBorder.myElemId, &quot; : Edge between nodes (&quot;,</p>
654
655 <p class="whs1">&nbsp;&nbsp;print 
656  aBorder.myPnt1, &quot;, &quot;, aBorder.myPnt2, &quot;)&quot;</p>
657
658 <p class="whs1">&nbsp;&nbsp;</p>
659
660 <p class="whs1">&nbsp;&nbsp;aGroupF.Add( 
661  [aBorder.myElemId] )</p>
662
663 <p class="whs1">&nbsp;&nbsp;aGroupN.Add( 
664  [aBorder.myPnt1, aBorder.myPnt2] )</p>
665
666 <p class="whs1">&nbsp;</p>
667
668 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
669  </p>
670
671 <p class="whs2">&nbsp;</p>
672
673 <h3><a name=bookmark4>Length 2D</a></h3>
674
675 <p class="whs1">import salome</p>
676
677 <p class="whs1">import geompy</p>
678
679 <p class="whs1">import SMESH</p>
680
681 <p class="whs1">import StdMeshers</p>
682
683 <p class="whs1">&nbsp;</p>
684
685 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
686  &quot;SMESH&quot;)</p>
687
688 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
689
690 <p class="whs2">&nbsp;</p>
691
692 <p class="whs2"># create a box without 
693  one plane</p>
694
695 <p class="whs2">&nbsp;</p>
696
697 <p class="whs1">box = geompy.MakeBox(0., 
698  0., 0., 20., 20., 15.)</p>
699
700 <p class="whs1">subShapeList = geompy.SubShapeAll(box, 
701  geompy.ShapeType[&quot;FACE&quot;])</p>
702
703 <p class="whs1">&nbsp;</p>
704
705 <p class="whs1">FaceList &nbsp;= 
706  []</p>
707
708 <p class="whs1">for i in range( 
709  5 ):</p>
710
711 <p class="whs1">&nbsp;&nbsp;FaceList.append( 
712  subShapeList[ i ] )</p>
713
714 <p class="whs1">&nbsp;</p>
715
716 <p class="whs1">aComp = geompy.MakeCompound( 
717  FaceList )</p>
718
719 <p class="whs1">aBox = geompy.Sew( 
720  aComp, 1. )</p>
721
722 <p class="whs1">idbox = geompy.addToStudy( 
723  aBox, &quot;box&quot; )</p>
724
725 <p class="whs1">&nbsp;&nbsp;</p>
726
727 <p class="whs1">aBox &nbsp;= 
728  salome.IDToObject( idbox )</p>
729
730 <p class="whs2">&nbsp;</p>
731
732 <p class="whs2"># create a mesh</p>
733
734 <p class="whs2">&nbsp;</p>
735
736 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
737  &quot;libStdMeshersEngine.so&quot;)</p>
738
739 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
740
741 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
742  &quot;libStdMeshersEngine.so&quot;)</p>
743
744 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
745
746 <p class="whs1">&nbsp;</p>
747
748 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
749  &quot;libStdMeshersEngine.so&quot;)</p>
750
751 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
752  &quot;libStdMeshersEngine.so&quot;)</p>
753
754 <p class="whs1">&nbsp;</p>
755
756 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
757
758 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
759
760 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
761
762 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
763
764 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
765
766 <p class="whs1">&nbsp;</p>
767
768 <p class="whs1">smesh.Compute(mesh,aBox)</p>
769
770 <p class="whs1">&nbsp;</p>
771
772 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
773
774 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
775
776 <p class="whs1">smeshgui.SetName( 
777  salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
778
779 <p class="whs2">&nbsp;</p>
780
781 <p class="whs2"># Criterion : Length 2D 
782  &gt; 5</p>
783
784 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
785
786 <p class="whs1">aFunctor = aFilterMgr.CreateLength2D()</p>
787
788 <p class="whs1">&nbsp;</p>
789
790 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
791
792 <p class="whs1">aPredicate.SetNumFunctor( 
793  aFunctor )</p>
794
795 <p class="whs1">aPredicate.SetMargin( 
796  5 )</p>
797
798 <p class="whs1">&nbsp;</p>
799
800 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
801
802 <p class="whs1">aFilter.SetPredicate( 
803  aPredicate )</p>
804
805 <p class="whs1">&nbsp;</p>
806
807 <p class="whs1">anIds = aFilter.GetElementsId( 
808  mesh )</p>
809
810 <p class="whs2">&nbsp;</p>
811
812 <p class="whs2"># print the result</p>
813
814 <p class="whs1">print &quot;Criterion: 
815  Edges length 2D &gt; 5 Nb = &quot;, len( anIds )</p>
816
817 <p class="whs1">for i in range( 
818  len( anIds ) ):</p>
819
820 <p class="whs1">&nbsp;&nbsp;print 
821  anIds[ i ]</p>
822
823 <p class="whs2">&nbsp;</p>
824
825 <p class="whs2"># create a group</p>
826
827 <p class="whs1">aGroup = mesh.CreateGroup( 
828  SMESH.FACE, &quot;Edges with legth 2D &gt; 5&quot; )</p>
829
830 <p class="whs1">aGroup.Add( anIds 
831  )</p>
832
833 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
834  &nbsp;</p>
835
836 <p class="whs2">&nbsp;</p>
837
838 <h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>
839
840 <p class="whs1">import salome</p>
841
842 <p class="whs1">import geompy</p>
843
844 <p class="whs1">import SMESH</p>
845
846 <p class="whs1">import StdMeshers</p>
847
848 <p class="whs1">&nbsp;</p>
849
850 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, 
851  &quot;SMESH&quot;)</p>
852
853 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>
854
855 <p class="whs1">&nbsp;</p>
856
857 <p class="whs2"># create a box without 
858  one plane</p>
859
860 <p class="whs1">box = geompy.MakeBox(0., 
861  0., 0., 20., 20., 15.)</p>
862
863 <p class="whs1">subShapeList = geompy.SubShapeAll(box, 
864  geompy.ShapeType[&quot;FACE&quot;])</p>
865
866 <p class="whs1">&nbsp;</p>
867
868 <p class="whs1">FaceList &nbsp;= 
869  []</p>
870
871 <p class="whs1">for i in range( 
872  5 ):</p>
873
874 <p class="whs1">&nbsp;&nbsp;FaceList.append( 
875  subShapeList[ i ] )</p>
876
877 <p class="whs1">&nbsp;</p>
878
879 <p class="whs1">aComp = geompy.MakeCompound( 
880  FaceList )</p>
881
882 <p class="whs1">aBox = geompy.Sew( 
883  aComp, 1. )</p>
884
885 <p class="whs1">idbox = geompy.addToStudy( 
886  aBox, &quot;box&quot; )</p>
887
888 <p class="whs1">&nbsp;&nbsp;</p>
889
890 <p class="whs1">aBox &nbsp;= 
891  salome.IDToObject( idbox )</p>
892
893 <p class="whs2">&nbsp;</p>
894
895 <p class="whs2"># create a mesh</p>
896
897 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, 
898  &quot;libStdMeshersEngine.so&quot;)</p>
899
900 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>
901
902 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, 
903  &quot;libStdMeshersEngine.so&quot;)</p>
904
905 <p class="whs1">hyp2.SetMaxElementArea(20)</p>
906
907 <p class="whs1">&nbsp;</p>
908
909 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, 
910  &quot;libStdMeshersEngine.so&quot;)</p>
911
912 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, 
913  &quot;libStdMeshersEngine.so&quot;)</p>
914
915 <p class="whs1">&nbsp;</p>
916
917 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>
918
919 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>
920
921 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>
922
923 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>
924
925 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>
926
927 <p class="whs1">&nbsp;</p>
928
929 <p class="whs1">smesh.Compute(mesh,aBox)</p>
930
931 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>
932
933 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>
934
935 <p class="whs1">smeshgui.SetName( 
936  salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>
937
938 <p class="whs2">&nbsp;</p>
939
940 <p class="whs2"># Criterion : MULTI-CONNECTION 
941  2D = 2</p>
942
943 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
944
945 <p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>
946
947 <p class="whs1">&nbsp;</p>
948
949 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>
950
951 <p class="whs1">aPredicate.SetNumFunctor( 
952  aFunctor )</p>
953
954 <p class="whs1">aPredicate.SetMargin( 
955  2 )</p>
956
957 <p class="whs1">&nbsp;</p>
958
959 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
960
961 <p class="whs1">aFilter.SetPredicate( 
962  aPredicate )</p>
963
964 <p class="whs1">anIds = aFilter.GetElementsId( 
965  mesh )</p>
966
967 <p class="whs2">&nbsp;</p>
968
969 <p class="whs2"># print the result</p>
970
971 <p class="whs1">print &quot;Criterion: 
972  Borders at multi-connection 2D = 2 Nb = &quot;, len( anIds )</p>
973
974 <p class="whs1">for i in range( 
975  len( anIds ) ):</p>
976
977 <p class="whs1">&nbsp;&nbsp;print 
978  anIds[ i ]</p>
979
980 <p class="whs2">&nbsp;</p>
981
982 <p class="whs2"># create a group</p>
983
984 <p class="whs1">aGroup = mesh.CreateGroup( 
985  SMESH.FACE, &quot;Borders at multi-connection 2D = 2&quot; )</p>
986
987 <p class="whs1">aGroup.Add( anIds 
988  )</p>
989
990 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
991  </p>
992
993 <p class="whs2">&nbsp;</p>
994
995 <h3><a name=bookmark6>Area</a></h3>
996
997 <p class="whs1">import SMESH</p>
998
999 <p class="whs1">import SMESH_mechanic</p>
1000
1001 <p class="whs1">&nbsp;</p>
1002
1003 <p class="whs1">smesh &nbsp;= 
1004  SMESH_mechanic.smesh</p>
1005
1006 <p class="whs1">mesh &nbsp;&nbsp;= 
1007  SMESH_mechanic.mesh</p>
1008
1009 <p class="whs1">salome = SMESH_mechanic.salome</p>
1010
1011 <p class="whs1">&nbsp;</p>
1012
1013 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1014
1015 <p class="whs1">&nbsp;</p>
1016
1017 <p class="whs2"># Criterion : AREA &gt; 
1018  100</p>
1019
1020 <p class="whs2">&nbsp;</p>
1021
1022 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>
1023
1024 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1025
1026 <p class="whs1">aPredicate.SetNumFunctor( 
1027  aFunctor )</p>
1028
1029 <p class="whs1">aPredicate.SetMargin( 
1030  100 )</p>
1031
1032 <p class="whs1">&nbsp;</p>
1033
1034 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1035
1036 <p class="whs1">aFilter.SetPredicate( 
1037  aPredicate )</p>
1038
1039 <p class="whs1">&nbsp;</p>
1040
1041 <p class="whs1">anIds = aFilter.GetElementsId( 
1042  mesh )</p>
1043
1044 <p class="whs1">&nbsp;</p>
1045
1046 <p class="whs2"># print the result</p>
1047
1048 <p class="whs1">print &quot;Criterion: 
1049  Area &gt; 100 Nb = &quot;, len( anIds )</p>
1050
1051 <p class="whs1">for i in range( 
1052  len( anIds ) ):</p>
1053
1054 <p class="whs1">&nbsp;&nbsp;print 
1055  anIds[ i ]</p>
1056
1057 <p class="whs2">&nbsp;</p>
1058
1059 <p class="whs2"># create a group</p>
1060
1061 <p class="whs1">aGroup = mesh.CreateGroup( 
1062  SMESH.FACE, &quot;Area &gt; 100&quot; )</p>
1063
1064 <p class="whs1">aGroup.Add( anIds 
1065  )</p>
1066
1067 <p class="whs1">&nbsp;</p>
1068
1069 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1070  </p>
1071
1072 <p class="whs2">&nbsp;</p>
1073
1074 <h3><a name=bookmark7>Taper</a></h3>
1075
1076 <p class="whs1">import SMESH</p>
1077
1078 <p class="whs1">import SMESH_mechanic</p>
1079
1080 <p class="whs1">&nbsp;</p>
1081
1082 <p class="whs1">smesh &nbsp;= 
1083  SMESH_mechanic.smesh</p>
1084
1085 <p class="whs1">mesh &nbsp;&nbsp;= 
1086  SMESH_mechanic.mesh</p>
1087
1088 <p class="whs1">salome = SMESH_mechanic.salome</p>
1089
1090 <p class="whs1">&nbsp;</p>
1091
1092 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1093
1094 <p class="whs2">&nbsp;</p>
1095
1096 <p class="whs2"># Criterion : Taper &gt; 
1097  3e-20</p>
1098
1099 <p class="whs2">&nbsp;</p>
1100
1101 <p class="whs1">aFunctor = aFilterMgr.CreateTaper()</p>
1102
1103 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1104
1105 <p class="whs1">aPredicate.SetNumFunctor( 
1106  aFunctor )</p>
1107
1108 <p class="whs1">aPredicate.SetMargin( 
1109  3e-20 )</p>
1110
1111 <p class="whs1">&nbsp;</p>
1112
1113 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1114
1115 <p class="whs1">aFilter.SetPredicate( 
1116  aPredicate )</p>
1117
1118 <p class="whs1">&nbsp;</p>
1119
1120 <p class="whs1">anIds = aFilter.GetElementsId( 
1121  mesh )</p>
1122
1123 <p class="whs2">&nbsp;</p>
1124
1125 <p class="whs2"># print the result</p>
1126
1127 <p class="whs1">print &quot;Criterion: 
1128  Taper &gt; 3e-20 Nb = &quot;, len( anIds )</p>
1129
1130 <p class="whs1">for i in range( 
1131  len( anIds ) ):</p>
1132
1133 <p class="whs1">&nbsp;&nbsp;print 
1134  anIds[ i ]</p>
1135
1136 <p class="whs2">&nbsp;</p>
1137
1138 <p class="whs2"># create a group</p>
1139
1140 <p class="whs1">aGroup = mesh.CreateGroup( 
1141  SMESH.FACE, &quot;Taper &gt; 3e-20&quot; )</p>
1142
1143 <p class="whs1">aGroup.Add( anIds 
1144  )</p>
1145
1146 <p class="whs1">&nbsp;</p>
1147
1148 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1149  </p>
1150
1151 <p class="whs2">&nbsp;</p>
1152
1153 <h3><a name=bookmark8>Aspect Ratio</a></h3>
1154
1155 <p class="whs1">import SMESH</p>
1156
1157 <p class="whs1">import SMESH_mechanic</p>
1158
1159 <p class="whs1">&nbsp;</p>
1160
1161 <p class="whs1">smesh &nbsp;= 
1162  SMESH_mechanic.smesh</p>
1163
1164 <p class="whs1">mesh &nbsp;&nbsp;= 
1165  SMESH_mechanic.mesh</p>
1166
1167 <p class="whs1">salome = SMESH_mechanic.salome</p>
1168
1169 <p class="whs1">&nbsp;</p>
1170
1171 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1172
1173 <p class="whs1">&nbsp;</p>
1174
1175 <p class="whs2"># Criterion : ASPECT RATIO 
1176  &gt; 1.4</p>
1177
1178 <p class="whs2">&nbsp;</p>
1179
1180 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio()</p>
1181
1182 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1183
1184 <p class="whs1">aPredicate.SetNumFunctor( 
1185  aFunctor )</p>
1186
1187 <p class="whs1">aPredicate.SetMargin( 
1188  1.4 )</p>
1189
1190 <p class="whs1">&nbsp;</p>
1191
1192 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1193
1194 <p class="whs1">aFilter.SetPredicate( 
1195  aPredicate )</p>
1196
1197 <p class="whs1">&nbsp;</p>
1198
1199 <p class="whs1">anIds = aFilter.GetElementsId( 
1200  mesh )</p>
1201
1202 <p class="whs1">&nbsp;</p>
1203
1204 <p class="whs2"># print the result</p>
1205
1206 <p class="whs1">print &quot;Criterion: 
1207  Aspect Ratio &gt; 1.4 Nb = &quot;, len( anIds )</p>
1208
1209 <p class="whs1">for i in range( 
1210  len( anIds ) ):</p>
1211
1212 <p class="whs1">&nbsp;&nbsp;print 
1213  anIds[ i ]</p>
1214
1215 <p class="whs2">&nbsp;</p>
1216
1217 <p class="whs2"># create a group</p>
1218
1219 <p class="whs1">aGroup = mesh.CreateGroup( 
1220  SMESH.FACE, &quot;Aspect Ratio &gt; 1.4&quot; )</p>
1221
1222 <p class="whs1">aGroup.Add( anIds 
1223  )</p>
1224
1225 <p class="whs1">&nbsp;</p>
1226
1227 <p class="whs1">salome.sg.updateObjBrowser(1) 
1228  </p>
1229
1230 <p class="whs1">&nbsp;</p>
1231
1232 <h3><a name=bookmark9>Minimum Angle</a></h3>
1233
1234 <p class="whs1">&nbsp;</p>
1235
1236 <p class="whs1">import SMESH</p>
1237
1238 <p class="whs1">import SMESH_mechanic</p>
1239
1240 <p class="whs1">&nbsp;</p>
1241
1242 <p class="whs1">smesh &nbsp;= 
1243  SMESH_mechanic.smesh</p>
1244
1245 <p class="whs1">mesh &nbsp;&nbsp;= 
1246  SMESH_mechanic.mesh</p>
1247
1248 <p class="whs1">salome = SMESH_mechanic.salome</p>
1249
1250 <p class="whs1">&nbsp;</p>
1251
1252 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1253
1254 <p class="whs1">&nbsp;</p>
1255
1256 <p class="whs3"># Criterion : MINIMUM 
1257  ANGLE &lt; 70</p>
1258
1259 <p class="whs1">&nbsp;</p>
1260
1261 <p class="whs1">aFunctor = aFilterMgr.CreateMinimumAngle()</p>
1262
1263 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
1264
1265 <p class="whs1">aPredicate.SetNumFunctor( 
1266  aFunctor )</p>
1267
1268 <p class="whs1">aPredicate.SetMargin( 
1269  70 )</p>
1270
1271 <p class="whs1">&nbsp;</p>
1272
1273 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1274
1275 <p class="whs1">aFilter.SetPredicate( 
1276  aPredicate )</p>
1277
1278 <p class="whs1">&nbsp;</p>
1279
1280 <p class="whs1">anIds = aFilter.GetElementsId( 
1281  mesh )</p>
1282
1283 <p class="whs1">&nbsp;</p>
1284
1285 <p class="whs3"># print the result</p>
1286
1287 <p class="whs1">print &quot;Criterion: 
1288  Minimum Angle &lt; 70 Nb = &quot;, len( anIds )</p>
1289
1290 <p class="whs1">for i in range( 
1291  len( anIds ) ):</p>
1292
1293 <p class="whs1">&nbsp;&nbsp;print 
1294  anIds[ i ]</p>
1295
1296 <p class="whs1">&nbsp;</p>
1297
1298 <p class="whs3"># create a group</p>
1299
1300 <p class="whs1">aGroup = mesh.CreateGroup( 
1301  SMESH.FACE, &quot;Minimum Angle &lt; 70&quot; )</p>
1302
1303 <p class="whs1">aGroup.Add( anIds 
1304  )</p>
1305
1306 <p class="whs1">&nbsp;</p>
1307
1308 <p class="whs1">salome.sg.updateObjBrowser(1) 
1309  </p>
1310
1311 <p class="whs1">&nbsp;</p>
1312
1313 <h3><a name=bookmark10>Warping</a></h3>
1314
1315 <p class="whs1">import SMESH</p>
1316
1317 <p class="whs1">import SMESH_mechanic</p>
1318
1319 <p class="whs1">&nbsp;</p>
1320
1321 <p class="whs1">smesh &nbsp;= 
1322  SMESH_mechanic.smesh</p>
1323
1324 <p class="whs1">mesh &nbsp;&nbsp;= 
1325  SMESH_mechanic.mesh</p>
1326
1327 <p class="whs1">salome = SMESH_mechanic.salome</p>
1328
1329 <p class="whs1">&nbsp;</p>
1330
1331 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1332
1333 <p class="whs2">&nbsp;</p>
1334
1335 <p class="whs2"># Criterion : WARP ANGLE 
1336  &gt; 1e-15</p>
1337
1338 <p class="whs2">&nbsp;</p>
1339
1340 <p class="whs1">aFunctor = aFilterMgr.CreateWarping()</p>
1341
1342 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1343
1344 <p class="whs1">aPredicate.SetNumFunctor( 
1345  aFunctor )</p>
1346
1347 <p class="whs1">aPredicate.SetMargin( 
1348  1e-15 )</p>
1349
1350 <p class="whs1">&nbsp;</p>
1351
1352 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1353
1354 <p class="whs1">aFilter.SetPredicate( 
1355  aPredicate )</p>
1356
1357 <p class="whs1">&nbsp;</p>
1358
1359 <p class="whs1">anIds = aFilter.GetElementsId( 
1360  mesh )</p>
1361
1362 <p class="whs2">&nbsp;</p>
1363
1364 <p class="whs2"># print the result</p>
1365
1366 <p class="whs1">print &quot;Criterion: 
1367  Warp &gt; 1e-15 Nb = &quot;, len( anIds )</p>
1368
1369 <p class="whs1">for i in range( 
1370  len( anIds ) ):</p>
1371
1372 <p class="whs1">&nbsp;&nbsp;print 
1373  anIds[ i ]</p>
1374
1375 <p class="whs2">&nbsp;</p>
1376
1377 <p class="whs2"># create a group</p>
1378
1379 <p class="whs1">aGroup = mesh.CreateGroup( 
1380  SMESH.FACE, &quot;Warp &gt; 1e-15&quot; )</p>
1381
1382 <p class="whs1">aGroup.Add( anIds 
1383  )</p>
1384
1385 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1386  </p>
1387
1388 <p class="whs2">&nbsp;</p>
1389
1390 <h3><a name=bookmark12>Skew</a></h3>
1391
1392 <p class="whs1">import SMESH</p>
1393
1394 <p class="whs1">import SMESH_mechanic</p>
1395
1396 <p class="whs1">&nbsp;</p>
1397
1398 <p class="whs1">smesh &nbsp;= 
1399  SMESH_mechanic.smesh</p>
1400
1401 <p class="whs1">mesh &nbsp;&nbsp;= 
1402  SMESH_mechanic.mesh</p>
1403
1404 <p class="whs1">salome = SMESH_mechanic.salome</p>
1405
1406 <p class="whs1">&nbsp;</p>
1407
1408 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1409
1410 <p class="whs1">&nbsp;</p>
1411
1412 <p class="whs2"># Criterion : Skew &gt; 
1413  18</p>
1414
1415 <p class="whs1">&nbsp;</p>
1416
1417 <p class="whs1">aFunctor = aFilterMgr.CreateSkew()</p>
1418
1419 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1420
1421 <p class="whs1">aPredicate.SetNumFunctor( 
1422  aFunctor )</p>
1423
1424 <p class="whs1">aPredicate.SetMargin( 
1425  18 )</p>
1426
1427 <p class="whs1">&nbsp;</p>
1428
1429 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1430
1431 <p class="whs1">aFilter.SetPredicate( 
1432  aPredicate )</p>
1433
1434 <p class="whs1">&nbsp;</p>
1435
1436 <p class="whs1">anIds = aFilter.GetElementsId( 
1437  mesh )</p>
1438
1439 <p class="whs1">&nbsp;</p>
1440
1441 <p class="whs2"># print the result</p>
1442
1443 <p class="whs1">print &quot;Criterion: 
1444  Skew &gt; 18 Nb = &quot;, len( anIds )</p>
1445
1446 <p class="whs1">for i in range( 
1447  len( anIds ) ):</p>
1448
1449 <p class="whs1">&nbsp;&nbsp;print 
1450  anIds[ i ]</p>
1451
1452 <p class="whs2">&nbsp;</p>
1453
1454 <p class="whs2"># create a group</p>
1455
1456 <p class="whs1">aGroup = mesh.CreateGroup( 
1457  SMESH.FACE, &quot;Skew &gt; 18&quot; )</p>
1458
1459 <p class="whs1">aGroup.Add( anIds 
1460  )</p>
1461
1462 <p class="whs1">&nbsp;</p>
1463
1464 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1465  </p>
1466
1467 <p class="whs2">&nbsp;</p>
1468
1469 <h3><a name=bookmark11>Aspect Ratio 3D</a></h3>
1470
1471 <p class="whs1">import SMESH</p>
1472
1473 <p class="whs1">import SMESH_mechanic_tetra</p>
1474
1475 <p class="whs1">&nbsp;</p>
1476
1477 <p class="whs1">smesh &nbsp;= 
1478  SMESH_mechanic_tetra.smesh</p>
1479
1480 <p class="whs1">mesh &nbsp;&nbsp;= 
1481  SMESH_mechanic_tetra.mesh</p>
1482
1483 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
1484
1485 <p class="whs1">&nbsp;</p>
1486
1487 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1488
1489 <p class="whs1">&nbsp;</p>
1490
1491 <p class="whs2"># Criterion : ASPECT RATIO 
1492  3D &gt; 2.2</p>
1493
1494 <p class="whs2">&nbsp;</p>
1495
1496 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>
1497
1498 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>
1499
1500 <p class="whs1">aPredicate.SetNumFunctor( 
1501  aFunctor )</p>
1502
1503 <p class="whs1">aPredicate.SetMargin( 
1504  2.2 )</p>
1505
1506 <p class="whs1">&nbsp;</p>
1507
1508 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1509
1510 <p class="whs1">aFilter.SetPredicate( 
1511  aPredicate )</p>
1512
1513 <p class="whs1">&nbsp;</p>
1514
1515 <p class="whs1">anIds = aFilter.GetElementsId( 
1516  mesh )</p>
1517
1518 <p class="whs2">&nbsp;</p>
1519
1520 <p class="whs2"># print the result</p>
1521
1522 <p class="whs1">print &quot;Criterion: 
1523  Aspect Ratio 3D &gt; 2.2 Nb = &quot;, len( anIds )</p>
1524
1525 <p class="whs1">for i in range( 
1526  len( anIds ) ):</p>
1527
1528 <p class="whs1">&nbsp;&nbsp;print 
1529  anIds[ i ]</p>
1530
1531 <p class="whs2">&nbsp;</p>
1532
1533 <p class="whs2"># create a group</p>
1534
1535 <p class="whs1">aGroup = mesh.CreateGroup( 
1536  SMESH.VOLUME, &quot;Aspect Ratio 3D &gt; 2.2&quot; )</p>
1537
1538 <p class="whs1">aGroup.Add( anIds 
1539  )</p>
1540
1541 <p class="whs1">&nbsp;</p>
1542
1543 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1544  </p>
1545
1546 <p class="whs2">&nbsp;</p>
1547
1548 <h3><a name=Volume>Volume</a></h3>
1549
1550 <p class="whs1">import SMESH</p>
1551
1552 <p class="whs1">import SMESH_mechanic_tetra</p>
1553
1554 <p class="whs1">&nbsp;</p>
1555
1556 <p class="whs1">smesh &nbsp;= 
1557  SMESH_mechanic_tetra.smesh</p>
1558
1559 <p class="whs1">mesh &nbsp;&nbsp;= 
1560  SMESH_mechanic_tetra.mesh</p>
1561
1562 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>
1563
1564 <p class="whs1">&nbsp;</p>
1565
1566 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>
1567
1568 <p class="whs1">&nbsp;</p>
1569
1570 <p class="whs2"># Criterion : VOLUME &lt; 
1571  7</p>
1572
1573 <p class="whs2">&nbsp;</p>
1574
1575 <p class="whs1">aFunctor = aFilterMgr.CreateVolume3D()</p>
1576
1577 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>
1578
1579 <p class="whs1">aPredicate.SetNumFunctor( 
1580  aFunctor )</p>
1581
1582 <p class="whs1">aPredicate.SetMargin( 
1583  7 )</p>
1584
1585 <p class="whs1">&nbsp;</p>
1586
1587 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>
1588
1589 <p class="whs1">aFilter.SetPredicate( 
1590  aPredicate )</p>
1591
1592 <p class="whs1">&nbsp;</p>
1593
1594 <p class="whs1">anIds = aFilter.GetElementsId( 
1595  mesh )</p>
1596
1597 <p class="whs1">&nbsp;</p>
1598
1599 <p class="whs2"># print the result</p>
1600
1601 <p class="whs1">print &quot;&quot;</p>
1602
1603 <p class="whs1">print &quot;Criterion: 
1604  Volume &lt; 7 Nb = &quot;, len( anIds )</p>
1605
1606 <p class="whs1">for i in range( 
1607  len( anIds ) ):</p>
1608
1609 <p class="whs1">&nbsp;&nbsp;print 
1610  anIds[ i ]</p>
1611
1612 <p class="whs1">&nbsp;</p>
1613
1614 <p class="whs2"># create a group</p>
1615
1616 <p class="whs1">aGroup = mesh.CreateGroup( 
1617  SMESH.VOLUME, &quot;Volume &lt; 7&quot; )</p>
1618
1619 <p class="whs1">aGroup.Add( anIds 
1620  )</p>
1621
1622 <p class="whs1">&nbsp;</p>
1623
1624 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> 
1625  </p>
1626
1627 <script type="text/javascript" language="javascript1.2">
1628 <!--
1629 if (window.writeIntopicBar)
1630         writeIntopicBar(0);
1631 //-->
1632 </script>
1633 </body>
1634 </html>