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