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