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