Salome HOME
Join modifications from branch OCC_debug_for_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 -->\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="whs1">&nbsp;</p>\r
578 \r
579 <p class="whs2"># Criterion : AREA &gt; \r
580  30</p>\r
581 \r
582 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
583 \r
584 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
585 \r
586 <p class="whs1">aPredicate.SetNumFunctor( \r
587  aFunctor )</p>\r
588 \r
589 <p class="whs1">aPredicate.SetMargin( \r
590  95 )</p>\r
591 \r
592 <p class="whs1">&nbsp;</p>\r
593 \r
594 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
595 \r
596 <p class="whs1">aFilter.SetPredicate( \r
597  aPredicate )</p>\r
598 \r
599 <p class="whs1">&nbsp;</p>\r
600 \r
601 <p class="whs1">anIds = aFilter.GetElementsId( \r
602  mesh )</p>\r
603 \r
604 <p class="whs1">anEditor = mesh.GetMeshEditor()</p>\r
605 \r
606 <p class="whs1">anEditor.RemoveElements(anIds)</p>\r
607 \r
608 <p class="whs2">&nbsp;</p>\r
609 \r
610 <p class="whs2"># Criterion : Free Edges</p>\r
611 \r
612 <p class="whs2">&nbsp;</p>\r
613 \r
614 <p class="whs1">aPredicate = aFilterMgr.CreateFreeEdges()</p>\r
615 \r
616 <p class="whs1">aPredicate.SetMesh( \r
617  mesh )</p>\r
618 \r
619 <p class="whs1">aBorders = aPredicate.GetBorders()</p>\r
620 \r
621 <p class="whs2">&nbsp;</p>\r
622 \r
623 <p class="whs2"># create groups</p>\r
624 \r
625 <p class="whs1">aGroupF = mesh.CreateGroup( \r
626  SMESH.FACE, &quot;Faces with free edges&quot; )</p>\r
627 \r
628 <p class="whs1">aGroupN = mesh.CreateGroup( \r
629  SMESH.NODE, &quot;Nodes on free edges&quot; )</p>\r
630 \r
631 <p class="whs2">&nbsp;</p>\r
632 \r
633 <p class="whs2"># fill groups with elements, \r
634  corresponding to the criterion</p>\r
635 \r
636 <p class="whs1">print &quot;&quot;</p>\r
637 \r
638 <p class="whs1">print &quot;Criterion: \r
639  Free edges Nb = &quot;, len( aBorders )</p>\r
640 \r
641 <p class="whs1">for i in range( \r
642  len( aBorders ) ):</p>\r
643 \r
644 <p class="whs1">&nbsp;&nbsp;aBorder \r
645  = aBorders[ i ]</p>\r
646 \r
647 <p class="whs1">&nbsp;&nbsp;print \r
648  &quot;Face # &quot;, aBorder.myElemId, &quot; : Edge between nodes (&quot;,</p>\r
649 \r
650 <p class="whs1">&nbsp;&nbsp;print \r
651  aBorder.myPnt1, &quot;, &quot;, aBorder.myPnt2, &quot;)&quot;</p>\r
652 \r
653 <p class="whs1">&nbsp;&nbsp;</p>\r
654 \r
655 <p class="whs1">&nbsp;&nbsp;aGroupF.Add( \r
656  [aBorder.myElemId] )</p>\r
657 \r
658 <p class="whs1">&nbsp;&nbsp;aGroupN.Add( \r
659  [aBorder.myPnt1, aBorder.myPnt2] )</p>\r
660 \r
661 <p class="whs1">&nbsp;</p>\r
662 \r
663 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
664  </p>\r
665 \r
666 <p class="whs2">&nbsp;</p>\r
667 \r
668 <h3><a name=bookmark4>Length 2D</a></h3>\r
669 \r
670 <p class="whs1">import salome</p>\r
671 \r
672 <p class="whs1">import geompy</p>\r
673 \r
674 <p class="whs1">import SMESH</p>\r
675 \r
676 <p class="whs1">import StdMeshers</p>\r
677 \r
678 <p class="whs1">&nbsp;</p>\r
679 \r
680 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
681  &quot;SMESH&quot;)</p>\r
682 \r
683 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>\r
684 \r
685 <p class="whs2">&nbsp;</p>\r
686 \r
687 <p class="whs2"># create a box without \r
688  one plane</p>\r
689 \r
690 <p class="whs2">&nbsp;</p>\r
691 \r
692 <p class="whs1">box = geompy.MakeBox(0., \r
693  0., 0., 20., 20., 15.)</p>\r
694 \r
695 <p class="whs1">subShapeList = geompy.SubShapeAll(box, \r
696  geompy.ShapeType[&quot;FACE&quot;])</p>\r
697 \r
698 <p class="whs1">&nbsp;</p>\r
699 \r
700 <p class="whs1">FaceList &nbsp;= \r
701  []</p>\r
702 \r
703 <p class="whs1">for i in range( \r
704  5 ):</p>\r
705 \r
706 <p class="whs1">&nbsp;&nbsp;FaceList.append( \r
707  subShapeList[ i ] )</p>\r
708 \r
709 <p class="whs1">&nbsp;</p>\r
710 \r
711 <p class="whs1">aComp = geompy.MakeCompound( \r
712  FaceList )</p>\r
713 \r
714 <p class="whs1">aBox = geompy.Sew( \r
715  aComp, 1. )</p>\r
716 \r
717 <p class="whs1">idbox = geompy.addToStudy( \r
718  aBox, &quot;box&quot; )</p>\r
719 \r
720 <p class="whs1">&nbsp;&nbsp;</p>\r
721 \r
722 <p class="whs1">aBox &nbsp;= \r
723  salome.IDToObject( idbox )</p>\r
724 \r
725 <p class="whs2">&nbsp;</p>\r
726 \r
727 <p class="whs2"># create a mesh</p>\r
728 \r
729 <p class="whs2">&nbsp;</p>\r
730 \r
731 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
732  &quot;libStdMeshersEngine.so&quot;)</p>\r
733 \r
734 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>\r
735 \r
736 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
737  &quot;libStdMeshersEngine.so&quot;)</p>\r
738 \r
739 <p class="whs1">hyp2.SetMaxElementArea(20)</p>\r
740 \r
741 <p class="whs1">&nbsp;</p>\r
742 \r
743 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
744  &quot;libStdMeshersEngine.so&quot;)</p>\r
745 \r
746 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
747  &quot;libStdMeshersEngine.so&quot;)</p>\r
748 \r
749 <p class="whs1">&nbsp;</p>\r
750 \r
751 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>\r
752 \r
753 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>\r
754 \r
755 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>\r
756 \r
757 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>\r
758 \r
759 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>\r
760 \r
761 <p class="whs1">&nbsp;</p>\r
762 \r
763 <p class="whs1">smesh.Compute(mesh,aBox)</p>\r
764 \r
765 <p class="whs1">&nbsp;</p>\r
766 \r
767 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
768 \r
769 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>\r
770 \r
771 <p class="whs1">smeshgui.SetName( \r
772  salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>\r
773 \r
774 <p class="whs2">&nbsp;</p>\r
775 \r
776 <p class="whs2"># Criterion : Length 2D \r
777  &gt; 5</p>\r
778 \r
779 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
780 \r
781 <p class="whs1">aFunctor = aFilterMgr.CreateLength2D()</p>\r
782 \r
783 <p class="whs1">&nbsp;</p>\r
784 \r
785 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
786 \r
787 <p class="whs1">aPredicate.SetNumFunctor( \r
788  aFunctor )</p>\r
789 \r
790 <p class="whs1">aPredicate.SetMargin( \r
791  5 )</p>\r
792 \r
793 <p class="whs1">&nbsp;</p>\r
794 \r
795 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
796 \r
797 <p class="whs1">aFilter.SetPredicate( \r
798  aPredicate )</p>\r
799 \r
800 <p class="whs1">&nbsp;</p>\r
801 \r
802 <p class="whs1">anIds = aFilter.GetElementsId( \r
803  mesh )</p>\r
804 \r
805 <p class="whs2">&nbsp;</p>\r
806 \r
807 <p class="whs2"># print the result</p>\r
808 \r
809 <p class="whs1">print &quot;Criterion: \r
810  Edges length 2D &gt; 5 Nb = &quot;, len( anIds )</p>\r
811 \r
812 <p class="whs1">for i in range( \r
813  len( anIds ) ):</p>\r
814 \r
815 <p class="whs1">&nbsp;&nbsp;print \r
816  anIds[ i ]</p>\r
817 \r
818 <p class="whs2">&nbsp;</p>\r
819 \r
820 <p class="whs2"># create a group</p>\r
821 \r
822 <p class="whs1">aGroup = mesh.CreateGroup( \r
823  SMESH.FACE, &quot;Edges with legth 2D &gt; 5&quot; )</p>\r
824 \r
825 <p class="whs1">aGroup.Add( anIds \r
826  )</p>\r
827 \r
828 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
829  &nbsp;</p>\r
830 \r
831 <p class="whs2">&nbsp;</p>\r
832 \r
833 <h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>\r
834 \r
835 <p class="whs1">import salome</p>\r
836 \r
837 <p class="whs1">import geompy</p>\r
838 \r
839 <p class="whs1">import SMESH</p>\r
840 \r
841 <p class="whs1">import StdMeshers</p>\r
842 \r
843 <p class="whs1">&nbsp;</p>\r
844 \r
845 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
846  &quot;SMESH&quot;)</p>\r
847 \r
848 <p class="whs1">smesh.SetCurrentStudy(salome.myStudy)</p>\r
849 \r
850 <p class="whs1">&nbsp;</p>\r
851 \r
852 <p class="whs2"># create a box without \r
853  one plane</p>\r
854 \r
855 <p class="whs1">box = geompy.MakeBox(0., \r
856  0., 0., 20., 20., 15.)</p>\r
857 \r
858 <p class="whs1">subShapeList = geompy.SubShapeAll(box, \r
859  geompy.ShapeType[&quot;FACE&quot;])</p>\r
860 \r
861 <p class="whs1">&nbsp;</p>\r
862 \r
863 <p class="whs1">FaceList &nbsp;= \r
864  []</p>\r
865 \r
866 <p class="whs1">for i in range( \r
867  5 ):</p>\r
868 \r
869 <p class="whs1">&nbsp;&nbsp;FaceList.append( \r
870  subShapeList[ i ] )</p>\r
871 \r
872 <p class="whs1">&nbsp;</p>\r
873 \r
874 <p class="whs1">aComp = geompy.MakeCompound( \r
875  FaceList )</p>\r
876 \r
877 <p class="whs1">aBox = geompy.Sew( \r
878  aComp, 1. )</p>\r
879 \r
880 <p class="whs1">idbox = geompy.addToStudy( \r
881  aBox, &quot;box&quot; )</p>\r
882 \r
883 <p class="whs1">&nbsp;&nbsp;</p>\r
884 \r
885 <p class="whs1">aBox &nbsp;= \r
886  salome.IDToObject( idbox )</p>\r
887 \r
888 <p class="whs2">&nbsp;</p>\r
889 \r
890 <p class="whs2"># create a mesh</p>\r
891 \r
892 <p class="whs1">hyp1 = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
893  &quot;libStdMeshersEngine.so&quot;)</p>\r
894 \r
895 <p class="whs1">hyp1.SetNumberOfSegments(5)</p>\r
896 \r
897 <p class="whs1">hyp2 = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
898  &quot;libStdMeshersEngine.so&quot;)</p>\r
899 \r
900 <p class="whs1">hyp2.SetMaxElementArea(20)</p>\r
901 \r
902 <p class="whs1">&nbsp;</p>\r
903 \r
904 <p class="whs1">algo1 = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
905  &quot;libStdMeshersEngine.so&quot;)</p>\r
906 \r
907 <p class="whs1">algo2 = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
908  &quot;libStdMeshersEngine.so&quot;)</p>\r
909 \r
910 <p class="whs1">&nbsp;</p>\r
911 \r
912 <p class="whs1">mesh = smesh.CreateMesh(aBox)</p>\r
913 \r
914 <p class="whs1">mesh.AddHypothesis(aBox,hyp1)</p>\r
915 \r
916 <p class="whs1">mesh.AddHypothesis(aBox,hyp2)</p>\r
917 \r
918 <p class="whs1">mesh.AddHypothesis(aBox,algo1)</p>\r
919 \r
920 <p class="whs1">mesh.AddHypothesis(aBox,algo2)</p>\r
921 \r
922 <p class="whs1">&nbsp;</p>\r
923 \r
924 <p class="whs1">smesh.Compute(mesh,aBox)</p>\r
925 \r
926 <p class="whs1">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
927 \r
928 <p class="whs1">smeshgui.Init(salome.myStudyId);</p>\r
929 \r
930 <p class="whs1">smeshgui.SetName( \r
931  salome.ObjectToID( mesh ), &quot;Mesh&quot; );</p>\r
932 \r
933 <p class="whs2">&nbsp;</p>\r
934 \r
935 <p class="whs2"># Criterion : MULTI-CONNECTION \r
936  2D = 2</p>\r
937 \r
938 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
939 \r
940 <p class="whs1">aFunctor = aFilterMgr.CreateMultiConnection2D()</p>\r
941 \r
942 <p class="whs1">&nbsp;</p>\r
943 \r
944 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>\r
945 \r
946 <p class="whs1">aPredicate.SetNumFunctor( \r
947  aFunctor )</p>\r
948 \r
949 <p class="whs1">aPredicate.SetMargin( \r
950  2 )</p>\r
951 \r
952 <p class="whs1">&nbsp;</p>\r
953 \r
954 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
955 \r
956 <p class="whs1">aFilter.SetPredicate( \r
957  aPredicate )</p>\r
958 \r
959 <p class="whs1">anIds = aFilter.GetElementsId( \r
960  mesh )</p>\r
961 \r
962 <p class="whs2">&nbsp;</p>\r
963 \r
964 <p class="whs2"># print the result</p>\r
965 \r
966 <p class="whs1">print &quot;Criterion: \r
967  Borders at multi-connection 2D = 2 Nb = &quot;, len( anIds )</p>\r
968 \r
969 <p class="whs1">for i in range( \r
970  len( anIds ) ):</p>\r
971 \r
972 <p class="whs1">&nbsp;&nbsp;print \r
973  anIds[ i ]</p>\r
974 \r
975 <p class="whs2">&nbsp;</p>\r
976 \r
977 <p class="whs2"># create a group</p>\r
978 \r
979 <p class="whs1">aGroup = mesh.CreateGroup( \r
980  SMESH.FACE, &quot;Borders at multi-connection 2D = 2&quot; )</p>\r
981 \r
982 <p class="whs1">aGroup.Add( anIds \r
983  )</p>\r
984 \r
985 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
986  </p>\r
987 \r
988 <p class="whs2">&nbsp;</p>\r
989 \r
990 <h3><a name=bookmark6>Area</a></h3>\r
991 \r
992 <p class="whs1">import SMESH</p>\r
993 \r
994 <p class="whs1">import SMESH_mechanic</p>\r
995 \r
996 <p class="whs1">&nbsp;</p>\r
997 \r
998 <p class="whs1">smesh &nbsp;= \r
999  SMESH_mechanic.smesh</p>\r
1000 \r
1001 <p class="whs1">mesh &nbsp;&nbsp;= \r
1002  SMESH_mechanic.mesh</p>\r
1003 \r
1004 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1005 \r
1006 <p class="whs1">&nbsp;</p>\r
1007 \r
1008 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1009 \r
1010 <p class="whs1">&nbsp;</p>\r
1011 \r
1012 <p class="whs2"># Criterion : AREA &gt; \r
1013  100</p>\r
1014 \r
1015 <p class="whs2">&nbsp;</p>\r
1016 \r
1017 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
1018 \r
1019 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1020 \r
1021 <p class="whs1">aPredicate.SetNumFunctor( \r
1022  aFunctor )</p>\r
1023 \r
1024 <p class="whs1">aPredicate.SetMargin( \r
1025  100 )</p>\r
1026 \r
1027 <p class="whs1">&nbsp;</p>\r
1028 \r
1029 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1030 \r
1031 <p class="whs1">aFilter.SetPredicate( \r
1032  aPredicate )</p>\r
1033 \r
1034 <p class="whs1">&nbsp;</p>\r
1035 \r
1036 <p class="whs1">anIds = aFilter.GetElementsId( \r
1037  mesh )</p>\r
1038 \r
1039 <p class="whs1">&nbsp;</p>\r
1040 \r
1041 <p class="whs2"># print the result</p>\r
1042 \r
1043 <p class="whs1">print &quot;Criterion: \r
1044  Area &gt; 100 Nb = &quot;, len( anIds )</p>\r
1045 \r
1046 <p class="whs1">for i in range( \r
1047  len( anIds ) ):</p>\r
1048 \r
1049 <p class="whs1">&nbsp;&nbsp;print \r
1050  anIds[ i ]</p>\r
1051 \r
1052 <p class="whs2">&nbsp;</p>\r
1053 \r
1054 <p class="whs2"># create a group</p>\r
1055 \r
1056 <p class="whs1">aGroup = mesh.CreateGroup( \r
1057  SMESH.FACE, &quot;Area &gt; 100&quot; )</p>\r
1058 \r
1059 <p class="whs1">aGroup.Add( anIds \r
1060  )</p>\r
1061 \r
1062 <p class="whs1">&nbsp;</p>\r
1063 \r
1064 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1065  </p>\r
1066 \r
1067 <p class="whs2">&nbsp;</p>\r
1068 \r
1069 <h3><a name=bookmark7>Taper</a></h3>\r
1070 \r
1071 <p class="whs1">import SMESH</p>\r
1072 \r
1073 <p class="whs1">import SMESH_mechanic</p>\r
1074 \r
1075 <p class="whs1">&nbsp;</p>\r
1076 \r
1077 <p class="whs1">smesh &nbsp;= \r
1078  SMESH_mechanic.smesh</p>\r
1079 \r
1080 <p class="whs1">mesh &nbsp;&nbsp;= \r
1081  SMESH_mechanic.mesh</p>\r
1082 \r
1083 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1084 \r
1085 <p class="whs1">&nbsp;</p>\r
1086 \r
1087 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1088 \r
1089 <p class="whs2">&nbsp;</p>\r
1090 \r
1091 <p class="whs2"># Criterion : Taper &gt; \r
1092  3e-20</p>\r
1093 \r
1094 <p class="whs2">&nbsp;</p>\r
1095 \r
1096 <p class="whs1">aFunctor = aFilterMgr.CreateTaper()</p>\r
1097 \r
1098 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1099 \r
1100 <p class="whs1">aPredicate.SetNumFunctor( \r
1101  aFunctor )</p>\r
1102 \r
1103 <p class="whs1">aPredicate.SetMargin( \r
1104  3e-20 )</p>\r
1105 \r
1106 <p class="whs1">&nbsp;</p>\r
1107 \r
1108 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1109 \r
1110 <p class="whs1">aFilter.SetPredicate( \r
1111  aPredicate )</p>\r
1112 \r
1113 <p class="whs1">&nbsp;</p>\r
1114 \r
1115 <p class="whs1">anIds = aFilter.GetElementsId( \r
1116  mesh )</p>\r
1117 \r
1118 <p class="whs2">&nbsp;</p>\r
1119 \r
1120 <p class="whs2"># print the result</p>\r
1121 \r
1122 <p class="whs1">print &quot;Criterion: \r
1123  Taper &gt; 3e-20 Nb = &quot;, len( anIds )</p>\r
1124 \r
1125 <p class="whs1">for i in range( \r
1126  len( anIds ) ):</p>\r
1127 \r
1128 <p class="whs1">&nbsp;&nbsp;print \r
1129  anIds[ i ]</p>\r
1130 \r
1131 <p class="whs2">&nbsp;</p>\r
1132 \r
1133 <p class="whs2"># create a group</p>\r
1134 \r
1135 <p class="whs1">aGroup = mesh.CreateGroup( \r
1136  SMESH.FACE, &quot;Taper &gt; 3e-20&quot; )</p>\r
1137 \r
1138 <p class="whs1">aGroup.Add( anIds \r
1139  )</p>\r
1140 \r
1141 <p class="whs1">&nbsp;</p>\r
1142 \r
1143 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1144  </p>\r
1145 \r
1146 <p class="whs2">&nbsp;</p>\r
1147 \r
1148 <h3><a name=bookmark8>Aspect Ratio</a></h3>\r
1149 \r
1150 <p class="whs1">import SMESH</p>\r
1151 \r
1152 <p class="whs1">import SMESH_mechanic</p>\r
1153 \r
1154 <p class="whs1">&nbsp;</p>\r
1155 \r
1156 <p class="whs1">smesh &nbsp;= \r
1157  SMESH_mechanic.smesh</p>\r
1158 \r
1159 <p class="whs1">mesh &nbsp;&nbsp;= \r
1160  SMESH_mechanic.mesh</p>\r
1161 \r
1162 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1163 \r
1164 <p class="whs1">&nbsp;</p>\r
1165 \r
1166 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1167 \r
1168 <p class="whs1">&nbsp;</p>\r
1169 \r
1170 <p class="whs2"># Criterion : ASPECT RATIO \r
1171  &gt; 1.4</p>\r
1172 \r
1173 <p class="whs2">&nbsp;</p>\r
1174 \r
1175 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio()</p>\r
1176 \r
1177 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1178 \r
1179 <p class="whs1">aPredicate.SetNumFunctor( \r
1180  aFunctor )</p>\r
1181 \r
1182 <p class="whs1">aPredicate.SetMargin( \r
1183  1.4 )</p>\r
1184 \r
1185 <p class="whs1">&nbsp;</p>\r
1186 \r
1187 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1188 \r
1189 <p class="whs1">aFilter.SetPredicate( \r
1190  aPredicate )</p>\r
1191 \r
1192 <p class="whs1">&nbsp;</p>\r
1193 \r
1194 <p class="whs1">anIds = aFilter.GetElementsId( \r
1195  mesh )</p>\r
1196 \r
1197 <p class="whs1">&nbsp;</p>\r
1198 \r
1199 <p class="whs2"># print the result</p>\r
1200 \r
1201 <p class="whs1">print &quot;Criterion: \r
1202  Aspect Ratio &gt; 1.4 Nb = &quot;, len( anIds )</p>\r
1203 \r
1204 <p class="whs1">for i in range( \r
1205  len( anIds ) ):</p>\r
1206 \r
1207 <p class="whs1">&nbsp;&nbsp;print \r
1208  anIds[ i ]</p>\r
1209 \r
1210 <p class="whs2">&nbsp;</p>\r
1211 \r
1212 <p class="whs2"># create a group</p>\r
1213 \r
1214 <p class="whs1">aGroup = mesh.CreateGroup( \r
1215  SMESH.FACE, &quot;Aspect Ratio &gt; 1.4&quot; )</p>\r
1216 \r
1217 <p class="whs1">aGroup.Add( anIds \r
1218  )</p>\r
1219 \r
1220 <p class="whs1">&nbsp;</p>\r
1221 \r
1222 <p class="whs1">salome.sg.updateObjBrowser(1) \r
1223  </p>\r
1224 \r
1225 <p class="whs1">&nbsp;</p>\r
1226 \r
1227 <h3><a name=bookmark9>Minimum Angle</a></h3>\r
1228 \r
1229 <p class="whs1">&nbsp;</p>\r
1230 \r
1231 <p class="whs1">import SMESH</p>\r
1232 \r
1233 <p class="whs1">import SMESH_mechanic</p>\r
1234 \r
1235 <p class="whs1">&nbsp;</p>\r
1236 \r
1237 <p class="whs1">smesh &nbsp;= \r
1238  SMESH_mechanic.smesh</p>\r
1239 \r
1240 <p class="whs1">mesh &nbsp;&nbsp;= \r
1241  SMESH_mechanic.mesh</p>\r
1242 \r
1243 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1244 \r
1245 <p class="whs1">&nbsp;</p>\r
1246 \r
1247 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1248 \r
1249 <p class="whs1">&nbsp;</p>\r
1250 \r
1251 <p class="whs3"># Criterion : MINIMUM \r
1252  ANGLE &lt; 70</p>\r
1253 \r
1254 <p class="whs1">&nbsp;</p>\r
1255 \r
1256 <p class="whs1">aFunctor = aFilterMgr.CreateMinimumAngle()</p>\r
1257 \r
1258 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
1259 \r
1260 <p class="whs1">aPredicate.SetNumFunctor( \r
1261  aFunctor )</p>\r
1262 \r
1263 <p class="whs1">aPredicate.SetMargin( \r
1264  70 )</p>\r
1265 \r
1266 <p class="whs1">&nbsp;</p>\r
1267 \r
1268 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1269 \r
1270 <p class="whs1">aFilter.SetPredicate( \r
1271  aPredicate )</p>\r
1272 \r
1273 <p class="whs1">&nbsp;</p>\r
1274 \r
1275 <p class="whs1">anIds = aFilter.GetElementsId( \r
1276  mesh )</p>\r
1277 \r
1278 <p class="whs1">&nbsp;</p>\r
1279 \r
1280 <p class="whs3"># print the result</p>\r
1281 \r
1282 <p class="whs1">print &quot;Criterion: \r
1283  Minimum Angle &lt; 70 Nb = &quot;, len( anIds )</p>\r
1284 \r
1285 <p class="whs1">for i in range( \r
1286  len( anIds ) ):</p>\r
1287 \r
1288 <p class="whs1">&nbsp;&nbsp;print \r
1289  anIds[ i ]</p>\r
1290 \r
1291 <p class="whs1">&nbsp;</p>\r
1292 \r
1293 <p class="whs3"># create a group</p>\r
1294 \r
1295 <p class="whs1">aGroup = mesh.CreateGroup( \r
1296  SMESH.FACE, &quot;Minimum Angle &lt; 70&quot; )</p>\r
1297 \r
1298 <p class="whs1">aGroup.Add( anIds \r
1299  )</p>\r
1300 \r
1301 <p class="whs1">&nbsp;</p>\r
1302 \r
1303 <p class="whs1">salome.sg.updateObjBrowser(1) \r
1304  </p>\r
1305 \r
1306 <p class="whs1">&nbsp;</p>\r
1307 \r
1308 <h3><a name=bookmark10>Warping</a></h3>\r
1309 \r
1310 <p class="whs1">import SMESH</p>\r
1311 \r
1312 <p class="whs1">import SMESH_mechanic</p>\r
1313 \r
1314 <p class="whs1">&nbsp;</p>\r
1315 \r
1316 <p class="whs1">smesh &nbsp;= \r
1317  SMESH_mechanic.smesh</p>\r
1318 \r
1319 <p class="whs1">mesh &nbsp;&nbsp;= \r
1320  SMESH_mechanic.mesh</p>\r
1321 \r
1322 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1323 \r
1324 <p class="whs1">&nbsp;</p>\r
1325 \r
1326 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1327 \r
1328 <p class="whs2">&nbsp;</p>\r
1329 \r
1330 <p class="whs2"># Criterion : WARP ANGLE \r
1331  &gt; 1e-15</p>\r
1332 \r
1333 <p class="whs2">&nbsp;</p>\r
1334 \r
1335 <p class="whs1">aFunctor = aFilterMgr.CreateWarping()</p>\r
1336 \r
1337 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1338 \r
1339 <p class="whs1">aPredicate.SetNumFunctor( \r
1340  aFunctor )</p>\r
1341 \r
1342 <p class="whs1">aPredicate.SetMargin( \r
1343  1e-15 )</p>\r
1344 \r
1345 <p class="whs1">&nbsp;</p>\r
1346 \r
1347 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1348 \r
1349 <p class="whs1">aFilter.SetPredicate( \r
1350  aPredicate )</p>\r
1351 \r
1352 <p class="whs1">&nbsp;</p>\r
1353 \r
1354 <p class="whs1">anIds = aFilter.GetElementsId( \r
1355  mesh )</p>\r
1356 \r
1357 <p class="whs2">&nbsp;</p>\r
1358 \r
1359 <p class="whs2"># print the result</p>\r
1360 \r
1361 <p class="whs1">print &quot;Criterion: \r
1362  Warp &gt; 1e-15 Nb = &quot;, len( anIds )</p>\r
1363 \r
1364 <p class="whs1">for i in range( \r
1365  len( anIds ) ):</p>\r
1366 \r
1367 <p class="whs1">&nbsp;&nbsp;print \r
1368  anIds[ i ]</p>\r
1369 \r
1370 <p class="whs2">&nbsp;</p>\r
1371 \r
1372 <p class="whs2"># create a group</p>\r
1373 \r
1374 <p class="whs1">aGroup = mesh.CreateGroup( \r
1375  SMESH.FACE, &quot;Warp &gt; 1e-15&quot; )</p>\r
1376 \r
1377 <p class="whs1">aGroup.Add( anIds \r
1378  )</p>\r
1379 \r
1380 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1381  </p>\r
1382 \r
1383 <p class="whs2">&nbsp;</p>\r
1384 \r
1385 <h3><a name=bookmark12>Skew</a></h3>\r
1386 \r
1387 <p class="whs1">import SMESH</p>\r
1388 \r
1389 <p class="whs1">import SMESH_mechanic</p>\r
1390 \r
1391 <p class="whs1">&nbsp;</p>\r
1392 \r
1393 <p class="whs1">smesh &nbsp;= \r
1394  SMESH_mechanic.smesh</p>\r
1395 \r
1396 <p class="whs1">mesh &nbsp;&nbsp;= \r
1397  SMESH_mechanic.mesh</p>\r
1398 \r
1399 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1400 \r
1401 <p class="whs1">&nbsp;</p>\r
1402 \r
1403 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1404 \r
1405 <p class="whs1">&nbsp;</p>\r
1406 \r
1407 <p class="whs2"># Criterion : Skew &gt; \r
1408  18</p>\r
1409 \r
1410 <p class="whs1">&nbsp;</p>\r
1411 \r
1412 <p class="whs1">aFunctor = aFilterMgr.CreateSkew()</p>\r
1413 \r
1414 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1415 \r
1416 <p class="whs1">aPredicate.SetNumFunctor( \r
1417  aFunctor )</p>\r
1418 \r
1419 <p class="whs1">aPredicate.SetMargin( \r
1420  18 )</p>\r
1421 \r
1422 <p class="whs1">&nbsp;</p>\r
1423 \r
1424 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1425 \r
1426 <p class="whs1">aFilter.SetPredicate( \r
1427  aPredicate )</p>\r
1428 \r
1429 <p class="whs1">&nbsp;</p>\r
1430 \r
1431 <p class="whs1">anIds = aFilter.GetElementsId( \r
1432  mesh )</p>\r
1433 \r
1434 <p class="whs1">&nbsp;</p>\r
1435 \r
1436 <p class="whs2"># print the result</p>\r
1437 \r
1438 <p class="whs1">print &quot;Criterion: \r
1439  Skew &gt; 18 Nb = &quot;, len( anIds )</p>\r
1440 \r
1441 <p class="whs1">for i in range( \r
1442  len( anIds ) ):</p>\r
1443 \r
1444 <p class="whs1">&nbsp;&nbsp;print \r
1445  anIds[ i ]</p>\r
1446 \r
1447 <p class="whs2">&nbsp;</p>\r
1448 \r
1449 <p class="whs2"># create a group</p>\r
1450 \r
1451 <p class="whs1">aGroup = mesh.CreateGroup( \r
1452  SMESH.FACE, &quot;Skew &gt; 18&quot; )</p>\r
1453 \r
1454 <p class="whs1">aGroup.Add( anIds \r
1455  )</p>\r
1456 \r
1457 <p class="whs1">&nbsp;</p>\r
1458 \r
1459 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1460  </p>\r
1461 \r
1462 <p class="whs2">&nbsp;</p>\r
1463 \r
1464 <h3><a name=bookmark11>Aspect Ratio 3D</a></h3>\r
1465 \r
1466 <p class="whs1">import SMESH</p>\r
1467 \r
1468 <p class="whs1">import SMESH_mechanic_tetra</p>\r
1469 \r
1470 <p class="whs1">&nbsp;</p>\r
1471 \r
1472 <p class="whs1">smesh &nbsp;= \r
1473  SMESH_mechanic_tetra.smesh</p>\r
1474 \r
1475 <p class="whs1">mesh &nbsp;&nbsp;= \r
1476  SMESH_mechanic_tetra.mesh</p>\r
1477 \r
1478 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>\r
1479 \r
1480 <p class="whs1">&nbsp;</p>\r
1481 \r
1482 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1483 \r
1484 <p class="whs1">&nbsp;</p>\r
1485 \r
1486 <p class="whs2"># Criterion : ASPECT RATIO \r
1487  3D &gt; 2.2</p>\r
1488 \r
1489 <p class="whs2">&nbsp;</p>\r
1490 \r
1491 <p class="whs1">aFunctor = aFilterMgr.CreateAspectRatio3D()</p>\r
1492 \r
1493 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
1494 \r
1495 <p class="whs1">aPredicate.SetNumFunctor( \r
1496  aFunctor )</p>\r
1497 \r
1498 <p class="whs1">aPredicate.SetMargin( \r
1499  2.2 )</p>\r
1500 \r
1501 <p class="whs1">&nbsp;</p>\r
1502 \r
1503 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1504 \r
1505 <p class="whs1">aFilter.SetPredicate( \r
1506  aPredicate )</p>\r
1507 \r
1508 <p class="whs1">&nbsp;</p>\r
1509 \r
1510 <p class="whs1">anIds = aFilter.GetElementsId( \r
1511  mesh )</p>\r
1512 \r
1513 <p class="whs2">&nbsp;</p>\r
1514 \r
1515 <p class="whs2"># print the result</p>\r
1516 \r
1517 <p class="whs1">print &quot;Criterion: \r
1518  Aspect Ratio 3D &gt; 2.2 Nb = &quot;, len( anIds )</p>\r
1519 \r
1520 <p class="whs1">for i in range( \r
1521  len( anIds ) ):</p>\r
1522 \r
1523 <p class="whs1">&nbsp;&nbsp;print \r
1524  anIds[ i ]</p>\r
1525 \r
1526 <p class="whs2">&nbsp;</p>\r
1527 \r
1528 <p class="whs2"># create a group</p>\r
1529 \r
1530 <p class="whs1">aGroup = mesh.CreateGroup( \r
1531  SMESH.VOLUME, &quot;Aspect Ratio 3D &gt; 2.2&quot; )</p>\r
1532 \r
1533 <p class="whs1">aGroup.Add( anIds \r
1534  )</p>\r
1535 \r
1536 <p class="whs1">&nbsp;</p>\r
1537 \r
1538 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1539  </p>\r
1540 \r
1541 <p class="whs2">&nbsp;</p>\r
1542 \r
1543 <h3><a name=Volume>Volume</a></h3>\r
1544 \r
1545 <p class="whs1">import SMESH</p>\r
1546 \r
1547 <p class="whs1">import SMESH_mechanic_tetra</p>\r
1548 \r
1549 <p class="whs1">&nbsp;</p>\r
1550 \r
1551 <p class="whs1">smesh &nbsp;= \r
1552  SMESH_mechanic_tetra.smesh</p>\r
1553 \r
1554 <p class="whs1">mesh &nbsp;&nbsp;= \r
1555  SMESH_mechanic_tetra.mesh</p>\r
1556 \r
1557 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>\r
1558 \r
1559 <p class="whs1">&nbsp;</p>\r
1560 \r
1561 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
1562 \r
1563 <p class="whs1">&nbsp;</p>\r
1564 \r
1565 <p class="whs2"># Criterion : VOLUME &lt; \r
1566  7</p>\r
1567 \r
1568 <p class="whs2">&nbsp;</p>\r
1569 \r
1570 <p class="whs1">aFunctor = aFilterMgr.CreateVolume3D()</p>\r
1571 \r
1572 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
1573 \r
1574 <p class="whs1">aPredicate.SetNumFunctor( \r
1575  aFunctor )</p>\r
1576 \r
1577 <p class="whs1">aPredicate.SetMargin( \r
1578  7 )</p>\r
1579 \r
1580 <p class="whs1">&nbsp;</p>\r
1581 \r
1582 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
1583 \r
1584 <p class="whs1">aFilter.SetPredicate( \r
1585  aPredicate )</p>\r
1586 \r
1587 <p class="whs1">&nbsp;</p>\r
1588 \r
1589 <p class="whs1">anIds = aFilter.GetElementsId( \r
1590  mesh )</p>\r
1591 \r
1592 <p class="whs1">&nbsp;</p>\r
1593 \r
1594 <p class="whs2"># print the result</p>\r
1595 \r
1596 <p class="whs1">print &quot;&quot;</p>\r
1597 \r
1598 <p class="whs1">print &quot;Criterion: \r
1599  Volume &lt; 7 Nb = &quot;, len( anIds )</p>\r
1600 \r
1601 <p class="whs1">for i in range( \r
1602  len( anIds ) ):</p>\r
1603 \r
1604 <p class="whs1">&nbsp;&nbsp;print \r
1605  anIds[ i ]</p>\r
1606 \r
1607 <p class="whs1">&nbsp;</p>\r
1608 \r
1609 <p class="whs2"># create a group</p>\r
1610 \r
1611 <p class="whs1">aGroup = mesh.CreateGroup( \r
1612  SMESH.VOLUME, &quot;Volume &lt; 7&quot; )</p>\r
1613 \r
1614 <p class="whs1">aGroup.Add( anIds \r
1615  )</p>\r
1616 \r
1617 <p class="whs1">&nbsp;</p>\r
1618 \r
1619 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
1620  </p>\r
1621 \r
1622 <script type="text/javascript" language="javascript1.2">\r
1623 <!--\r
1624 if (window.writeIntopicBar)\r
1625         writeIntopicBar(0);\r
1626 //-->\r
1627 </script>\r
1628 </body>\r
1629 </html>\r