Salome HOME
Fix for bug PAL12557(V3_2_0b2: SMESH documentation for scripts not up to date).
[modules/smesh.git] / doc / salome / gui / SMESH / quality_controls.htm
1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
2 \r
3 <html>\r
4 \r
5 <head>\r
6 <title>Quality Controls</title>\r
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">\r
9 <!--\r
10 p.whs1 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
11 p.whs2 { margin-top:0pt; margin-bottom:0pt; }\r
12 p.whs3 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }\r
13 -->\r
14 </style><script type="text/javascript" language="JavaScript">\r
15 <!--\r
16 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
17 {\r
18   var strNSS = "<style type='text/css'>";\r
19   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
20   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
21   strNSS += "p.whs3 {margin-top:1pt;margin-bottom:1pt; }";\r
22   strNSS +="</style>";\r
23   document.write(strNSS);\r
24 }\r
25 //-->\r
26 </script>\r
27 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
28 <!--\r
29 function reDo() {\r
30   if (innerWidth != origWidth || innerHeight != origHeight)\r
31      location.reload();\r
32 }\r
33 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
34         origWidth = innerWidth;\r
35         origHeight = innerHeight;\r
36         onresize = reDo;\r
37 }\r
38 onerror = null; \r
39 //-->\r
40 </script>\r
41 <style type="text/css">\r
42 <!--\r
43 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
44 p.WebHelpNavBar { text-align:right; }\r
45 -->\r
46 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
47 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
48 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
49 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
50 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
51 <script type="text/javascript" language="javascript1.2">\r
52 <!--\r
53 if (window.gbWhTopic)\r
54 {\r
55         if (window.setRelStartPage)\r
56         {\r
57         addTocInfo("MESH module\nTUI Scripts\nQuality Controls");\r
58 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
59 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
60 \r
61         }\r
62 \r
63 \r
64         if (window.setRelStartPage)\r
65         {\r
66         setRelStartPage("index.htm");\r
67 \r
68                 autoSync(1);\r
69                 sendSyncInfo();\r
70                 sendAveInfoOut();\r
71         }\r
72 \r
73 }\r
74 else\r
75         if (window.gbIE4)\r
76                 document.location.reload();\r
77 //-->\r
78 </script>\r
79 </head>\r
80 <body><script type="text/javascript" language="javascript1.2">\r
81 <!--\r
82 if (window.writeIntopicBar)\r
83         writeIntopicBar(4);\r
84 //-->\r
85 </script>\r
86 <h1>Quality Controls</h1>\r
87 \r
88 <h3><a name=bookmark>Free Borders</a></h3>\r
89 \r
90 <p class="whs1">import salome</p>\r
91 \r
92 <p class="whs1">import geompy</p>\r
93 \r
94 <p class="whs1">&nbsp;</p>\r
95 \r
96 <p class="whs1">import smesh</p>\r
97 \r
98 <p class="whs2">&nbsp;</p>\r
99 \r
100 <p class="whs2"># create open shell: a \r
101  box without one plane</p>\r
102 \r
103 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">box \r
104  = geompy.MakeBox(0., 0., 0., 20., 20., 15.)</span></p>\r
105 \r
106 <p class="whs1">FaceList = geompy.SubShapeAll(box, \r
107  geompy.ShapeType[&quot;FACE&quot;])</p>\r
108 \r
109 <p class="whs1">FaceList.remove(FaceList[5])</p>\r
110 \r
111 <p class="whs1">box = geompy.MakeShell(FaceList)</p>\r
112 \r
113 <p class="whs1">idbox = geompy.addToStudy(box, \r
114  &quot;box&quot;)</p>\r
115 \r
116 <p class="whs1">&nbsp;</p>\r
117 \r
118 <p class="whs2"># create a mesh</p>\r
119 \r
120 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh \r
121  = smesh.Mesh(box, &quot;Mesh_free_borders&quot;)</span></p>\r
122 \r
123 <p class="whs1">algo = mesh.Segment()</p>\r
124 \r
125 <p class="whs1">algo.NumberOfSegments(5)</p>\r
126 \r
127 <p class="whs1">algo = mesh.Triangle()</p>\r
128 \r
129 <p class="whs1">algo.MaxElementArea(20.)</p>\r
130 \r
131 <p class="whs1">mesh.Compute() </p>\r
132 \r
133 <p class="whs1">&nbsp;</p>\r
134 \r
135 <p class="whs2"># criterion : free borders</p>\r
136 \r
137 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
138  = smesh.GetFilter(smesh.EDGE, smesh.FT_FreeBorders)</span><span style="margin-top: 0pt;\r
139         margin-bottom: 0pt;\r
140         font-family: 'Lucida Console', monospace;"> </span></p>\r
141 \r
142 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>\r
143 \r
144 <p class="whs1">&nbsp;</p>\r
145 \r
146 <p class="whs2">&nbsp;</p>\r
147 \r
148 <p class="whs2"># print the result</p>\r
149 \r
150 <p class="whs1">print &quot;Criterion: \r
151  Free borders Nb = &quot;, len(anIds)</p>\r
152 \r
153 <p class="whs1">j = 1</p>\r
154 \r
155 <p class="whs1">for i in range(len(anIds)):</p>\r
156 \r
157 <p class="whs1">&nbsp;&nbsp;if \r
158  j &gt; 20: j = 1; print &quot;&quot;</p>\r
159 \r
160 <p class="whs1">&nbsp;&nbsp;print \r
161  anIds[i],</p>\r
162 \r
163 <p class="whs1">&nbsp;&nbsp;j \r
164  = j + 1</p>\r
165 \r
166 <p class="whs1">&nbsp;&nbsp;pass</p>\r
167 \r
168 <p class="whs1">print &quot;&quot;</p>\r
169 \r
170 <p class="whs2">&nbsp;</p>\r
171 \r
172 <p class="whs2"># create a group</p>\r
173 \r
174 <p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE, \r
175  &quot;Free borders&quot;)</p>\r
176 \r
177 <p class="whs1">aGroup.Add(anIds)</p>\r
178 \r
179 <p class="whs1">&nbsp;</p>\r
180 \r
181 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
182  </p>\r
183 \r
184 <h3><a name=bookmark1>Borders at Multiconnection</a></h3>\r
185 \r
186 <p class="whs1">import salome</p>\r
187 \r
188 <p class="whs1">import geompy</p>\r
189 \r
190 <p class="whs1">&nbsp;</p>\r
191 \r
192 <p class="whs1">import smesh</p>\r
193 \r
194 <p class="whs1">import SMESH</p>\r
195 \r
196 <p class="whs1">&nbsp;</p>\r
197 \r
198 <p class="whs3"># create open shell: \r
199  a box without one plane</p>\r
200 \r
201 <p class="whs1">box = geompy.MakeBox(0., \r
202  0., 0., 20., 20., 15.)</p>\r
203 \r
204 <p class="whs1">FaceList = geompy.SubShapeAll(box, \r
205  geompy.ShapeType[&quot;FACE&quot;])</p>\r
206 \r
207 <p class="whs1">FaceList.remove(FaceList[5])</p>\r
208 \r
209 <p class="whs1">box = geompy.MakeShell(FaceList)</p>\r
210 \r
211 <p class="whs1">idbox = geompy.addToStudy(box, \r
212  &quot;box&quot;)</p>\r
213 \r
214 <p class="whs1">&nbsp;</p>\r
215 \r
216 <p class="whs3"># create a mesh</p>\r
217 \r
218 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh \r
219  = smesh.Mesh(box, &quot;Mesh_borders_at_multi-connections&quot;)</span></p>\r
220 \r
221 <p class="whs1">algo = mesh.Segment()</p>\r
222 \r
223 <p class="whs1">algo.NumberOfSegments(5)</p>\r
224 \r
225 <p class="whs1">algo = mesh.Triangle()</p>\r
226 \r
227 <p class="whs1">algo.MaxElementArea(20.)</p>\r
228 \r
229 <p class="whs1">mesh.Compute() </p>\r
230 \r
231 <p class="whs1">&nbsp;</p>\r
232 \r
233 <p class="whs3"># Criterion : Borders \r
234  at multi-connection</p>\r
235 \r
236 <p class="whs1">nb_conn = 2</p>\r
237 \r
238 <p class="whs1">&nbsp;</p>\r
239 \r
240 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
241  = smesh.GetFilter(smesh.EDGE, smesh.FT_MultiConnection, smesh.FT_EqualTo, \r
242  nb_conn)</span></p>\r
243 \r
244 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>\r
245 \r
246 <p class="whs1">&nbsp;</p>\r
247 \r
248 <p class="whs1">&nbsp;</p>\r
249 \r
250 <p class="whs3"># print the result</p>\r
251 \r
252 <p class="whs1">print &quot;Criterion: \r
253  Borders at multi-connections Nb = &quot;, len(anIds)</p>\r
254 \r
255 <p class="whs1">j = 1</p>\r
256 \r
257 <p class="whs1">for i in range(len(anIds)):</p>\r
258 \r
259 <p class="whs1">&nbsp;&nbsp;if \r
260  j &gt; 20: j = 1; print &quot;&quot;</p>\r
261 \r
262 <p class="whs1">&nbsp;&nbsp;print \r
263  anIds[i],</p>\r
264 \r
265 <p class="whs1">&nbsp;&nbsp;j \r
266  = j + 1</p>\r
267 \r
268 <p class="whs1">&nbsp;&nbsp;pass</p>\r
269 \r
270 <p class="whs1">print &quot;&quot;</p>\r
271 \r
272 <p class="whs1">&nbsp;</p>\r
273 \r
274 <p class="whs3"># create a group</p>\r
275 \r
276 <p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE, \r
277  &quot;Borders at multi-connections&quot;)</p>\r
278 \r
279 <p class="whs1">aGroup.Add(anIds)</p>\r
280 \r
281 <p class="whs1">salome.sg.updateObjBrowser(1) \r
282  </p>\r
283 \r
284 <h3><a name=bookmark2>Length 1D</a></h3>\r
285 \r
286 <p class="whs1">import salome</p>\r
287 \r
288 <p class="whs1">import geompy</p>\r
289 \r
290 <p class="whs1">&nbsp;</p>\r
291 \r
292 <p class="whs1">import smesh</p>\r
293 \r
294 <p class="whs2">&nbsp;</p>\r
295 \r
296 <p class="whs2"># create open shell: a \r
297  box without one plane</p>\r
298 \r
299 <p class="whs1">box = geompy.MakeBox(0., \r
300  0., 0., 20., 20., 15.)</p>\r
301 \r
302 <p class="whs1">FaceList = geompy.SubShapeAll(box, \r
303  geompy.ShapeType[&quot;FACE&quot;])</p>\r
304 \r
305 <p class="whs1">FaceList.remove(FaceList[5])</p>\r
306 \r
307 <p class="whs1">box = geompy.MakeShell(FaceList)</p>\r
308 \r
309 <p class="whs1">idbox = geompy.addToStudy(box, \r
310  &quot;box&quot;)</p>\r
311 \r
312 <p class="whs2">&nbsp;</p>\r
313 \r
314 <p class="whs2"># create a mesh</p>\r
315 \r
316 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh \r
317  = smesh.Mesh(box, &quot;Mesh_Length_1D&quot;)</span></p>\r
318 \r
319 <p class="whs1">algo = mesh.Segment()</p>\r
320 \r
321 <p class="whs1">algo.NumberOfSegments(5)</p>\r
322 \r
323 <p class="whs1">algo = mesh.Triangle()</p>\r
324 \r
325 <p class="whs1">algo.MaxElementArea(20.)</p>\r
326 \r
327 <p class="whs1">mesh.Compute() </p>\r
328 \r
329 <p class="whs2">&nbsp;</p>\r
330 \r
331 <p class="whs2"># Criterion : Length &gt; \r
332  3.</p>\r
333 \r
334 <p class="whs1">length_margin = \r
335  3.</p>\r
336 \r
337 <p class="whs1">&nbsp;</p>\r
338 \r
339 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
340  = smesh.GetFilter(smesh.EDGE, smesh.FT_Length, smesh.FT_MoreThan, length_margin)</span></p>\r
341 \r
342 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
343  </p>\r
344 \r
345 <p class="whs2">&nbsp;</p>\r
346 \r
347 <p class="whs2"># print the result</p>\r
348 \r
349 <p class="whs1">print &quot;Criterion: \r
350  Edges length &gt; &quot;, length_margin, &quot; Nb = &quot;, len(anIds)</p>\r
351 \r
352 <p class="whs1">j = 1</p>\r
353 \r
354 <p class="whs1">for i in range(len(anIds)):</p>\r
355 \r
356 <p class="whs1">&nbsp;&nbsp;if \r
357  j &gt; 20: j = 1; print &quot;&quot;</p>\r
358 \r
359 <p class="whs1">&nbsp;&nbsp;print \r
360  anIds[i],</p>\r
361 \r
362 <p class="whs1">&nbsp;&nbsp;j \r
363  = j + 1</p>\r
364 \r
365 <p class="whs1">&nbsp;&nbsp;pass</p>\r
366 \r
367 <p class="whs1">print &quot;&quot;</p>\r
368 \r
369 <p class="whs2">&nbsp;</p>\r
370 \r
371 <p class="whs2"># create a group</p>\r
372 \r
373 <p class="whs1">aGroup = mesh.CreateGroup(SMESH.EDGE, \r
374  &quot;Edges with length &gt; &quot; + `length_margin`)</p>\r
375 \r
376 <p class="whs1">aGroup.Add(anIds)</p>\r
377 \r
378 <p class="whs1">&nbsp;</p>\r
379 \r
380 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
381  </p>\r
382 \r
383 <h3><a name=bookmark3>Free Edges</a></h3>\r
384 \r
385 <p class="whs1">import SMESH_mechanic</p>\r
386 \r
387 <p class="whs1">&nbsp;</p>\r
388 \r
389 <p class="whs1">smesh &nbsp;= \r
390  SMESH_mechanic.smesh</p>\r
391 \r
392 <p class="whs1">mesh &nbsp;&nbsp;= \r
393  SMESH_mechanic.mesh</p>\r
394 \r
395 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
396 \r
397 <p class="whs1">&nbsp;</p>\r
398 \r
399 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
400 \r
401 <p class="whs1">&nbsp;</p>\r
402 \r
403 <p class="whs3"># Remove some elements \r
404  to obtain free edges</p>\r
405 \r
406 <p class="whs3"># Criterion : AREA \r
407  &gt; 95.</p>\r
408 \r
409 <p class="whs1">area_margin = 95.</p>\r
410 \r
411 <p class="whs1">&nbsp;</p>\r
412 \r
413 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
414  = smesh.GetFilter(smesh.FACE, smesh.FT_Area, smesh.FT_MoreThan, area_margin)</span></p>\r
415 \r
416 <p class="whs1">&nbsp;</p>\r
417 \r
418 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>\r
419 \r
420 <p class="whs1">&nbsp;</p>\r
421 \r
422 <p class="whs1">mesh.RemoveElements(anIds)</p>\r
423 \r
424 <p class="whs1">&nbsp;</p>\r
425 \r
426 <p class="whs3"># Criterion : Free \r
427  Edges</p>\r
428 \r
429 <p class="whs1">aBorders = mesh.GetFreeBorders() \r
430  </p>\r
431 \r
432 <p class="whs1">&nbsp;</p>\r
433 \r
434 <p class="whs3"># create groups</p>\r
435 \r
436 <p class="whs1">aGroupF = mesh.CreateGroup(SMESH.FACE, \r
437  &quot;Faces with free edges&quot;)</p>\r
438 \r
439 <p class="whs1">aGroupN = mesh.CreateGroup(SMESH.NODE, \r
440  &quot;Nodes on free edges&quot;)</p>\r
441 \r
442 <p class="whs1">&nbsp;</p>\r
443 \r
444 <p class="whs3"># fill groups with \r
445  elements, corresponding to the criterion</p>\r
446 \r
447 <p class="whs1">print &quot;&quot;</p>\r
448 \r
449 <p class="whs1">print &quot;Criterion: \r
450  Free edges Nb = &quot;, len(aBorders)</p>\r
451 \r
452 <p class="whs1">for i in range(len(aBorders)):</p>\r
453 \r
454 <p class="whs1">&nbsp;&nbsp;aBorder \r
455  = aBorders[i]</p>\r
456 \r
457 <p class="whs1">&nbsp;&nbsp;print \r
458  &quot;Face # &quot;, aBorder.myElemId, &quot; : Edge between nodes (&quot;,</p>\r
459 \r
460 <p class="whs1">&nbsp;&nbsp;print \r
461  aBorder.myPnt1, &quot;, &quot;, aBorder.myPnt2, &quot;)&quot;</p>\r
462 \r
463 <p class="whs1">&nbsp;</p>\r
464 \r
465 <p class="whs1">&nbsp;&nbsp;<span \r
466  style="margin-top: 0pt;\r
467                 margin-bottom: 0pt;\r
468                 font-family: 'Lucida Console', monospace;">aGroupF.Add([aBorder.myElemId])</span></p>\r
469 \r
470 <p class="whs1">&nbsp;&nbsp;aGroupN.Add([aBorder.myPnt1, \r
471  aBorder.myPnt2])</p>\r
472 \r
473 <p class="whs1">&nbsp;</p>\r
474 \r
475 <p class="whs1">salome.sg.updateObjBrowser(1) \r
476  </p>\r
477 \r
478 <p class="whs1">&nbsp;</p>\r
479 \r
480 <h3><a name=bookmark4>Length 2D</a></h3>\r
481 \r
482 <p class="whs1">import salome</p>\r
483 \r
484 <p class="whs1">import geompy</p>\r
485 \r
486 <p class="whs1">&nbsp;</p>\r
487 \r
488 <p class="whs1">import smesh</p>\r
489 \r
490 <p class="whs1">&nbsp;</p>\r
491 \r
492 <p class="whs3"># create open shell: \r
493  a box without one plane</p>\r
494 \r
495 <p class="whs1">box = geompy.MakeBox(0., \r
496  0., 0., 20., 20., 15.)</p>\r
497 \r
498 <p class="whs1">FaceList = geompy.SubShapeAll(box, \r
499  geompy.ShapeType[&quot;FACE&quot;])</p>\r
500 \r
501 <p class="whs1">FaceList.remove(FaceList[5])</p>\r
502 \r
503 <p class="whs1">box = geompy.MakeShell(FaceList)</p>\r
504 \r
505 <p class="whs1">idbox = geompy.addToStudy(box, \r
506  &quot;box&quot;)</p>\r
507 \r
508 <p class="whs1">&nbsp;</p>\r
509 \r
510 <p class="whs3"># create a mesh</p>\r
511 \r
512 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh \r
513  = smesh.Mesh(box, &quot;Mesh_Length_2D&quot;)</span></p>\r
514 \r
515 <p class="whs1">algo = mesh.Segment()</p>\r
516 \r
517 <p class="whs1">algo.NumberOfSegments(5)</p>\r
518 \r
519 <p class="whs1">algo = mesh.Triangle()</p>\r
520 \r
521 <p class="whs1">algo.MaxElementArea(20.)</p>\r
522 \r
523 <p class="whs1">mesh.Compute()</p>\r
524 \r
525 <p class="whs1">&nbsp;</p>\r
526 \r
527 <p class="whs3"># Criterion : Length \r
528  2D &gt; 5.7</p>\r
529 \r
530 <p class="whs1">length_margin = \r
531  5.7</p>\r
532 \r
533 <p class="whs1">&nbsp;</p>\r
534 \r
535 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
536  = smesh.GetFilter(smesh.FACE, smesh.FT_Length2D, smesh.FT_MoreThan, length_margin)</span></p>\r
537 \r
538 <p class="whs1">&nbsp;</p>\r
539 \r
540 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>\r
541 \r
542 <p class="whs1">&nbsp;</p>\r
543 \r
544 <p class="whs3"># print the result</p>\r
545 \r
546 <p class="whs1">print &quot;Criterion: \r
547  Edges length 2D &gt; &quot;, length_margin, &quot; Nb = &quot;, len(anIds)</p>\r
548 \r
549 <p class="whs1">j = 1</p>\r
550 \r
551 <p class="whs1">for i in range(len(anIds)):</p>\r
552 \r
553 <p class="whs1">&nbsp;&nbsp;if \r
554  j &gt; 20: j = 1; print &quot;&quot;</p>\r
555 \r
556 <p class="whs1">&nbsp;&nbsp;print \r
557  anIds[i],</p>\r
558 \r
559 <p class="whs1">&nbsp;&nbsp;j \r
560  = j + 1</p>\r
561 \r
562 <p class="whs1">&nbsp;&nbsp;pass</p>\r
563 \r
564 <p class="whs1">print &quot;&quot;</p>\r
565 \r
566 <p class="whs1">&nbsp;</p>\r
567 \r
568 <p class="whs3"># create a group</p>\r
569 \r
570 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
571  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Faces with length 2D &gt; &quot; \r
572  + `length_margin`)</span></p>\r
573 \r
574 <p class="whs1">aGroup.Add(anIds)</p>\r
575 \r
576 <p class="whs1">&nbsp;</p>\r
577 \r
578 <p class="whs1">salome.sg.updateObjBrowser(1) \r
579  </p>\r
580 \r
581 <p class="whs2">&nbsp;</p>\r
582 \r
583 <h3><a name=bookmark5>Borders at Multiconnection 2D</a></h3>\r
584 \r
585 <p class="whs1">import salome</p>\r
586 \r
587 <p class="whs1">import geompy</p>\r
588 \r
589 <p class="whs1">&nbsp;</p>\r
590 \r
591 <p class="whs1">import smesh</p>\r
592 \r
593 <p class="whs3">&nbsp;</p>\r
594 \r
595 <p class="whs3"># create a compound \r
596  of two glued boxes</p>\r
597 \r
598 <p class="whs1">box1 = geompy.MakeBox(0., \r
599  0., 0., 20., 20., 15.)</p>\r
600 \r
601 <p class="whs1">box2 = geompy.MakeTranslation(box1, \r
602  0., 20., 0)</p>\r
603 \r
604 <p class="whs1">comp = geompy.MakeCompound([box1, \r
605  box2])</p>\r
606 \r
607 <p class="whs1">box = geompy.MakeGlueFaces(comp, \r
608  0.000001)</p>\r
609 \r
610 <p class="whs1">idbox = geompy.addToStudy(box, \r
611  &quot;box&quot;)</p>\r
612 \r
613 <p class="whs1">&nbsp;</p>\r
614 \r
615 <p class="whs3"># create a mesh</p>\r
616 \r
617 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">mesh \r
618  = smesh.Mesh(box, &quot;Box compound : 2D triangle mesh&quot;)</span></p>\r
619 \r
620 <p class="whs1">algo = mesh.Segment()</p>\r
621 \r
622 <p class="whs1">algo.NumberOfSegments(5)</p>\r
623 \r
624 <p class="whs1">algo = mesh.Triangle()</p>\r
625 \r
626 <p class="whs1">algo.MaxElementArea(20.)</p>\r
627 \r
628 <p class="whs1">mesh.Compute() </p>\r
629 \r
630 <p class="whs1">&nbsp;</p>\r
631 \r
632 <p class="whs3"># Criterion : MULTI-CONNECTION \r
633  2D = 3</p>\r
634 \r
635 <p class="whs1">nb_conn = 3</p>\r
636 \r
637 <p class="whs1">&nbsp;</p>\r
638 \r
639 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
640  = smesh.GetFilter(smesh.FACE, smesh.FT_MultiConnection2D, smesh.FT_EqualTo, \r
641  nb_conn)</span></p>\r
642 \r
643 <p class="whs1">&nbsp;</p>\r
644 \r
645 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
646  </p>\r
647 \r
648 <p class="whs1">&nbsp;</p>\r
649 \r
650 <p class="whs3"># print the result</p>\r
651 \r
652 <p class="whs1">print &quot;Criterion: \r
653  Borders at multi-connection 2D = &quot;, nb_conn, &quot; Nb = &quot;, \r
654  len(anIds)</p>\r
655 \r
656 <p class="whs1">j = 1</p>\r
657 \r
658 <p class="whs1">for i in range(len(anIds)):</p>\r
659 \r
660 <p class="whs1">&nbsp;&nbsp;if \r
661  j &gt; 20: j = 1; print &quot;&quot;</p>\r
662 \r
663 <p class="whs1">&nbsp;&nbsp;print \r
664  anIds[i],</p>\r
665 \r
666 <p class="whs1">&nbsp;&nbsp;j \r
667  = j + 1</p>\r
668 \r
669 <p class="whs1">&nbsp;&nbsp;pass</p>\r
670 \r
671 <p class="whs1">print &quot;&quot;</p>\r
672 \r
673 <p class="whs1">&nbsp;</p>\r
674 \r
675 <p class="whs3"># create a group</p>\r
676 \r
677 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
678  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Borders at multi-connection \r
679  2D = &quot; + `nb_conn`)</span></p>\r
680 \r
681 <p class="whs1">aGroup.Add(anIds)</p>\r
682 \r
683 <p class="whs1">&nbsp;</p>\r
684 \r
685 <p class="whs1">salome.sg.updateObjBrowser(1) \r
686  </p>\r
687 \r
688 <p class="whs1">&nbsp;</p>\r
689 \r
690 <h3><a name=bookmark6>Area</a></h3>\r
691 \r
692 <p class="whs1">import SMESH_mechanic</p>\r
693 \r
694 <p class="whs1">&nbsp;</p>\r
695 \r
696 <p class="whs1">smesh &nbsp;= \r
697  SMESH_mechanic.smesh</p>\r
698 \r
699 <p class="whs1">mesh &nbsp;&nbsp;= \r
700  SMESH_mechanic.mesh</p>\r
701 \r
702 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
703 \r
704 <p class="whs2">&nbsp;</p>\r
705 \r
706 <p class="whs2"># Criterion : AREA &gt; \r
707  100.</p>\r
708 \r
709 <p class="whs1">area_margin = 100.</p>\r
710 \r
711 <p class="whs1">&nbsp;</p>\r
712 \r
713 <p class="whs1">aFilter = smesh.GetFilter(smesh.FACE, \r
714  smesh.FT_Area, smesh.FT_MoreThan, area_margin)</p>\r
715 \r
716 <p class="whs1">&nbsp;</p>\r
717 \r
718 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
719  </p>\r
720 \r
721 <p class="whs2">&nbsp;</p>\r
722 \r
723 <p class="whs2"># print the result</p>\r
724 \r
725 <p class="whs1">print &quot;Criterion: \r
726  Area &gt; &quot;, area_margin, &quot; Nb = &quot;, len(anIds)</p>\r
727 \r
728 <p class="whs1">j = 1</p>\r
729 \r
730 <p class="whs1">for i in range(len(anIds)):</p>\r
731 \r
732 <p class="whs1">&nbsp;&nbsp;if \r
733  j &gt; 20: j = 1; print &quot;&quot;</p>\r
734 \r
735 <p class="whs1">&nbsp;&nbsp;print \r
736  anIds[i],</p>\r
737 \r
738 <p class="whs1">&nbsp;&nbsp;j \r
739  = j + 1</p>\r
740 \r
741 <p class="whs1">&nbsp;&nbsp;pass</p>\r
742 \r
743 <p class="whs1">print &quot;&quot;</p>\r
744 \r
745 <p class="whs1">&nbsp;</p>\r
746 \r
747 <p class="whs2"># create a group</p>\r
748 \r
749 <p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.FACE, \r
750  &quot;Area &gt; &quot; + `area_margin`)</p>\r
751 \r
752 <p class="whs1">aGroup.Add(anIds)</p>\r
753 \r
754 <p class="whs1">&nbsp;</p>\r
755 \r
756 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
757  &nbsp;</p>\r
758 \r
759 <h3><a name=bookmark7>Taper</a></h3>\r
760 \r
761 <p class="whs1">import SMESH_mechanic</p>\r
762 \r
763 <p class="whs1">&nbsp;</p>\r
764 \r
765 <p class="whs1">smesh &nbsp;= \r
766  SMESH_mechanic.smesh</p>\r
767 \r
768 <p class="whs1">mesh &nbsp;&nbsp;= \r
769  SMESH_mechanic.mesh</p>\r
770 \r
771 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
772 \r
773 <p class="whs1">&nbsp;</p>\r
774 \r
775 <p class="whs3"># Criterion : Taper \r
776  &gt; 3e-20</p>\r
777 \r
778 <p class="whs1">taper_margin = 3e-20</p>\r
779 \r
780 <p class="whs1">&nbsp;</p>\r
781 \r
782 <p class="whs1">aFilter = smesh.GetFilter(smesh.FACE, \r
783  smesh.FT_Taper, smesh.FT_MoreThan, taper_margin)</p>\r
784 \r
785 <p class="whs1">&nbsp;</p>\r
786 \r
787 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
788  </p>\r
789 \r
790 <p class="whs1">&nbsp;</p>\r
791 \r
792 <p class="whs3"># print the result</p>\r
793 \r
794 <p class="whs1">print &quot;Criterion: \r
795  Taper &gt; &quot;, taper_margin, &quot; Nb = &quot;, len(anIds)</p>\r
796 \r
797 <p class="whs1">j = 1</p>\r
798 \r
799 <p class="whs1">for i in range(len(anIds)):</p>\r
800 \r
801 <p class="whs1">&nbsp;&nbsp;if \r
802  j &gt; 20: j = 1; print &quot;&quot;</p>\r
803 \r
804 <p class="whs1">&nbsp;&nbsp;print \r
805  anIds[i],</p>\r
806 \r
807 <p class="whs1">&nbsp;&nbsp;j \r
808  = j + 1</p>\r
809 \r
810 <p class="whs1">&nbsp;&nbsp;pass</p>\r
811 \r
812 <p class="whs1">print &quot;&quot;</p>\r
813 \r
814 <p class="whs1">&nbsp;</p>\r
815 \r
816 <p class="whs3"># create a group</p>\r
817 \r
818 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
819  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Taper &gt; &quot; + `taper_margin`)</span></p>\r
820 \r
821 <p class="whs1">aGroup.Add(anIds)</p>\r
822 \r
823 <p class="whs1">&nbsp;</p>\r
824 \r
825 <p class="whs1">salome.sg.updateObjBrowser(1) \r
826  &nbsp;</p>\r
827 \r
828 <h3><a name=bookmark8>Aspect Ratio</a></h3>\r
829 \r
830 <p class="whs1">import SMESH_mechanic</p>\r
831 \r
832 <p class="whs1">&nbsp;</p>\r
833 \r
834 <p class="whs1">smesh &nbsp;= \r
835  SMESH_mechanic.smesh</p>\r
836 \r
837 <p class="whs1">mesh &nbsp;&nbsp;= \r
838  SMESH_mechanic.mesh</p>\r
839 \r
840 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
841 \r
842 <p class="whs1">&nbsp;</p>\r
843 \r
844 <p class="whs3"># Criterion : ASPECT \r
845  RATIO &gt; 1.8</p>\r
846 \r
847 <p class="whs1">ar_margin = 1.8</p>\r
848 \r
849 <p class="whs1">&nbsp;</p>\r
850 \r
851 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aFilter \r
852  = smesh.GetFilter(smesh.FACE, smesh.FT_AspectRatio, smesh.FT_MoreThan, \r
853  ar_margin)</span></p>\r
854 \r
855 <p class="whs1">&nbsp;</p>\r
856 \r
857 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
858  </p>\r
859 \r
860 <p class="whs1">&nbsp;</p>\r
861 \r
862 <p class="whs3"># print the result</p>\r
863 \r
864 <p class="whs1">print &quot;Criterion: \r
865  Aspect Ratio &gt; &quot;, ar_margin, &quot; Nb = &quot;, len(anIds)</p>\r
866 \r
867 <p class="whs1">j = 1</p>\r
868 \r
869 <p class="whs1">for i in range(len(anIds)):</p>\r
870 \r
871 <p class="whs1">&nbsp;&nbsp;if \r
872  j &gt; 20: j = 1; print &quot;&quot;</p>\r
873 \r
874 <p class="whs1">&nbsp;&nbsp;print \r
875  anIds[i],</p>\r
876 \r
877 <p class="whs1">&nbsp;&nbsp;j \r
878  = j + 1</p>\r
879 \r
880 <p class="whs1">&nbsp;&nbsp;pass</p>\r
881 \r
882 <p class="whs1">print &quot;&quot;</p>\r
883 \r
884 <p class="whs1">&nbsp;</p>\r
885 \r
886 <p class="whs3"># create a group</p>\r
887 \r
888 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
889  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Aspect Ratio &gt; &quot; + `ar_margin`)</span></p>\r
890 \r
891 <p class="whs1">aGroup.Add(anIds)</p>\r
892 \r
893 <p class="whs1">&nbsp;</p>\r
894 \r
895 <p class="whs1">salome.sg.updateObjBrowser(1) \r
896  </p>\r
897 \r
898 <p class="whs1">&nbsp;</p>\r
899 \r
900 <h3><a name=bookmark9>Minimum Angle</a></h3>\r
901 \r
902 <p class="whs1">import SMESH_mechanic</p>\r
903 \r
904 <p class="whs1">&nbsp;</p>\r
905 \r
906 <p class="whs1">smesh &nbsp;= \r
907  SMESH_mechanic.smesh</p>\r
908 \r
909 <p class="whs1">mesh &nbsp;&nbsp;= \r
910  SMESH_mechanic.mesh</p>\r
911 \r
912 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
913 \r
914 <p class="whs1">&nbsp;</p>\r
915 \r
916 <p class="whs3"># Criterion : MINIMUM \r
917  ANGLE &lt; 35.</p>\r
918 \r
919 <p class="whs1">min_angle = 35.</p>\r
920 \r
921 <p class="whs1">&nbsp;</p>\r
922 \r
923 <p class="whs1">aFilter = smesh.GetFilter(smesh.FACE, \r
924  smesh.FT_MinimumAngle, smesh.FT_LessThan, min_angle)</p>\r
925 \r
926 <p class="whs1">&nbsp;</p>\r
927 \r
928 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
929  </p>\r
930 \r
931 <p class="whs1">&nbsp;</p>\r
932 \r
933 <p class="whs3"># print the result</p>\r
934 \r
935 <p class="whs1">print &quot;Criterion: \r
936  Minimum Angle &lt; &quot;, min_angle, &quot; Nb = &quot;, len(anIds)</p>\r
937 \r
938 <p class="whs1">j = 1</p>\r
939 \r
940 <p class="whs1">for i in range(len(anIds)):</p>\r
941 \r
942 <p class="whs1">&nbsp;&nbsp;if \r
943  j &gt; 20: j = 1; print &quot;&quot;</p>\r
944 \r
945 <p class="whs1">&nbsp;&nbsp;print \r
946  anIds[i],</p>\r
947 \r
948 <p class="whs1">&nbsp;&nbsp;j \r
949  = j + 1</p>\r
950 \r
951 <p class="whs1">&nbsp;&nbsp;pass</p>\r
952 \r
953 <p class="whs1">print &quot;&quot;</p>\r
954 \r
955 <p class="whs1">&nbsp;</p>\r
956 \r
957 <p class="whs3"># create a group</p>\r
958 \r
959 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
960  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Minimum Angle &lt; &quot; + \r
961  `min_angle`)</span></p>\r
962 \r
963 <p class="whs1">&nbsp;</p>\r
964 \r
965 <p class="whs1">aGroup.Add(anIds)</p>\r
966 \r
967 <p class="whs1">&nbsp;</p>\r
968 \r
969 <p class="whs1">salome.sg.updateObjBrowser(1) \r
970  </p>\r
971 \r
972 <p class="whs1">&nbsp;</p>\r
973 \r
974 <h3><a name=bookmark10>Warping</a></h3>\r
975 \r
976 <p class="whs1">import SMESH_mechanic</p>\r
977 \r
978 <p class="whs1">&nbsp;</p>\r
979 \r
980 <p class="whs1">smesh &nbsp;= \r
981  SMESH_mechanic.smesh</p>\r
982 \r
983 <p class="whs1">mesh &nbsp;&nbsp;= \r
984  SMESH_mechanic.mesh</p>\r
985 \r
986 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
987 \r
988 <p class="whs1">&nbsp;</p>\r
989 \r
990 <p class="whs3"># Criterion : WARP \r
991  ANGLE &gt; 1e-15</p>\r
992 \r
993 <p class="whs1">wa_margin = 1e-15</p>\r
994 \r
995 <p class="whs1">&nbsp;</p>\r
996 \r
997 <p class="whs1">aFilter = smesh.GetFilter(smesh.FACE, \r
998  smesh.FT_Warping, smesh.FT_MoreThan, wa_margin)</p>\r
999 \r
1000 <p class="whs1">&nbsp;</p>\r
1001 \r
1002 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
1003  </p>\r
1004 \r
1005 <p class="whs1">&nbsp;</p>\r
1006 \r
1007 <p class="whs3"># print the result</p>\r
1008 \r
1009 <p class="whs1">print &quot;Criterion: \r
1010  Warp &gt; &quot;, wa_margin, &quot; Nb = &quot;, len(anIds)</p>\r
1011 \r
1012 <p class="whs1">j = 1</p>\r
1013 \r
1014 <p class="whs1">for i in range(len(anIds)):</p>\r
1015 \r
1016 <p class="whs1">&nbsp;&nbsp;if \r
1017  j &gt; 20: j = 1; print &quot;&quot;</p>\r
1018 \r
1019 <p class="whs1">&nbsp;&nbsp;print \r
1020  anIds[i],</p>\r
1021 \r
1022 <p class="whs1">&nbsp;&nbsp;j \r
1023  = j + 1</p>\r
1024 \r
1025 <p class="whs1">&nbsp;&nbsp;pass</p>\r
1026 \r
1027 <p class="whs1">print &quot;&quot;</p>\r
1028 \r
1029 <p class="whs1">&nbsp;</p>\r
1030 \r
1031 <p class="whs3"># create a group</p>\r
1032 \r
1033 <p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.FACE, \r
1034  &quot;Warp &gt; &quot; + `wa_margin`)</p>\r
1035 \r
1036 <p class="whs1">&nbsp;</p>\r
1037 \r
1038 <p class="whs1">aGroup.Add(anIds)</p>\r
1039 \r
1040 <p class="whs1">&nbsp;</p>\r
1041 \r
1042 <p class="whs1">salome.sg.updateObjBrowser(1) \r
1043  </p>\r
1044 \r
1045 <p class="whs1">&nbsp;</p>\r
1046 \r
1047 <h3><a name=bookmark12>Skew</a></h3>\r
1048 \r
1049 <p class="whs1">import SMESH_mechanic</p>\r
1050 \r
1051 <p class="whs1">&nbsp;</p>\r
1052 \r
1053 <p class="whs1">smesh &nbsp;= \r
1054  SMESH_mechanic.smesh</p>\r
1055 \r
1056 <p class="whs1">mesh &nbsp;&nbsp;= \r
1057  SMESH_mechanic.mesh</p>\r
1058 \r
1059 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
1060 \r
1061 <p class="whs1">&nbsp;</p>\r
1062 \r
1063 <p class="whs3"># Criterion : Skew \r
1064  &gt; 38.</p>\r
1065 \r
1066 <p class="whs1">skew_margin = 38.</p>\r
1067 \r
1068 <p class="whs1">&nbsp;</p>\r
1069 \r
1070 <p class="whs1">aFilter = smesh.GetFilter(smesh.FACE, \r
1071  smesh.FT_Skew, smesh.FT_MoreThan, skew_margin)</p>\r
1072 \r
1073 <p class="whs1">&nbsp;</p>\r
1074 \r
1075 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter)</p>\r
1076 \r
1077 <p class="whs1">&nbsp;</p>\r
1078 \r
1079 <p class="whs3"># print the result</p>\r
1080 \r
1081 <p class="whs1">print &quot;Criterion: \r
1082  Skew &gt; &quot;, skew_margin, &quot; Nb = &quot;, len(anIds)</p>\r
1083 \r
1084 <p class="whs1">j = 1</p>\r
1085 \r
1086 <p class="whs1">for i in range(len(anIds)):</p>\r
1087 \r
1088 <p class="whs1">&nbsp;&nbsp;if \r
1089  j &gt; 20: j = 1; print &quot;&quot;</p>\r
1090 \r
1091 <p class="whs1">&nbsp;&nbsp;print \r
1092  anIds[i],</p>\r
1093 \r
1094 <p class="whs1">&nbsp;&nbsp;j \r
1095  = j + 1</p>\r
1096 \r
1097 <p class="whs1">&nbsp;&nbsp;pass</p>\r
1098 \r
1099 <p class="whs1">print &quot;&quot;</p>\r
1100 \r
1101 <p class="whs1">&nbsp;</p>\r
1102 \r
1103 <p class="whs3"># create a group</p>\r
1104 \r
1105 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">aGroup \r
1106  = mesh.CreateEmptyGroup(smesh.FACE, &quot;Skew &gt; &quot; + `skew_margin`)</span></p>\r
1107 \r
1108 <p class="whs1">aGroup.Add(anIds)</p>\r
1109 \r
1110 <p class="whs1">&nbsp;</p>\r
1111 \r
1112 <p class="whs1">salome.sg.updateObjBrowser(1) \r
1113  </p>\r
1114 \r
1115 <p class="whs1">&nbsp;</p>\r
1116 \r
1117 <h3><a name=bookmark11>Aspect Ratio 3D</a></h3>\r
1118 \r
1119 <p class="whs1">import SMESH_mechanic_tetra \r
1120  </p>\r
1121 \r
1122 <p class="whs1">&nbsp;</p>\r
1123 \r
1124 <p class="whs1">smesh &nbsp;= \r
1125  SMESH_mechanic_tetra.smesh</p>\r
1126 \r
1127 <p class="whs1">mesh &nbsp;&nbsp;= \r
1128  SMESH_mechanic_tetra.mesh</p>\r
1129 \r
1130 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>\r
1131 \r
1132 <p class="whs1">&nbsp;</p>\r
1133 \r
1134 <p class="whs3"># Criterion : ASPECT \r
1135  RATIO 3D &gt; 4.5</p>\r
1136 \r
1137 <p class="whs1">ar_margin = 4.5</p>\r
1138 \r
1139 <p class="whs1">&nbsp;</p>\r
1140 \r
1141 <p class="whs1">aFilter = smesh.GetFilter(smesh.VOLUME, \r
1142  smesh.FT_AspectRatio3D, smesh.FT_MoreThan, ar_margin)</p>\r
1143 \r
1144 <p class="whs1">&nbsp;</p>\r
1145 \r
1146 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
1147  </p>\r
1148 \r
1149 <p class="whs1">&nbsp;</p>\r
1150 \r
1151 <p class="whs3"># print the result</p>\r
1152 \r
1153 <p class="whs1">print &quot;Criterion: \r
1154  Aspect Ratio 3D &gt; &quot;, ar_margin, &quot; Nb = &quot;, len(anIds)</p>\r
1155 \r
1156 <p class="whs1">j = 1</p>\r
1157 \r
1158 <p class="whs1">for i in range(len(anIds)):</p>\r
1159 \r
1160 <p class="whs1">&nbsp;&nbsp;if \r
1161  j &gt; 20: j = 1; print &quot;&quot;</p>\r
1162 \r
1163 <p class="whs1">&nbsp;&nbsp;print \r
1164  anIds[i],</p>\r
1165 \r
1166 <p class="whs1">&nbsp;&nbsp;j \r
1167  = j + 1</p>\r
1168 \r
1169 <p class="whs1">&nbsp;&nbsp;pass</p>\r
1170 \r
1171 <p class="whs1">print &quot;&quot;</p>\r
1172 \r
1173 <p class="whs1">&nbsp;</p>\r
1174 \r
1175 <p class="whs3"># create a group</p>\r
1176 \r
1177 <p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, \r
1178  &quot;Aspect Ratio 3D &gt; &quot; + `ar_margin`)</p>\r
1179 \r
1180 <p class="whs1">&nbsp;</p>\r
1181 \r
1182 <p class="whs1">aGroup.Add(anIds)</p>\r
1183 \r
1184 <p class="whs1">&nbsp;</p>\r
1185 \r
1186 <p class="whs1">salome.sg.updateObjBrowser(1) \r
1187  </p>\r
1188 \r
1189 <h3><a name=Volume>Volume</a></h3>\r
1190 \r
1191 <p class="whs1">import SMESH_mechanic_tetra</p>\r
1192 \r
1193 <p class="whs1">&nbsp;</p>\r
1194 \r
1195 <p class="whs1">smesh &nbsp;= \r
1196  SMESH_mechanic_tetra.smesh</p>\r
1197 \r
1198 <p class="whs1">mesh &nbsp;&nbsp;= \r
1199  SMESH_mechanic_tetra.mesh</p>\r
1200 \r
1201 <p class="whs1">salome = SMESH_mechanic_tetra.salome</p>\r
1202 \r
1203 <p class="whs2">&nbsp;</p>\r
1204 \r
1205 <p class="whs2"># Criterion : VOLUME &lt; \r
1206  7.</p>\r
1207 \r
1208 <p class="whs1">volume_margin = \r
1209  7.</p>\r
1210 \r
1211 <p class="whs1">&nbsp;</p>\r
1212 \r
1213 <p class="whs1">aFilter = smesh.GetFilter(smesh.VOLUME, \r
1214  smesh.FT_Volume3D, smesh.FT_LessThan, volume_margin)</p>\r
1215 \r
1216 <p class="whs1">&nbsp;</p>\r
1217 \r
1218 <p class="whs1">anIds = mesh.GetIdsFromFilter(aFilter) \r
1219  </p>\r
1220 \r
1221 <p class="whs2">&nbsp;</p>\r
1222 \r
1223 <p class="whs2"># print the result</p>\r
1224 \r
1225 <p class="whs1">print &quot;&quot;</p>\r
1226 \r
1227 <p class="whs1">print &quot;Criterion: \r
1228  Volume &lt; &quot;, volume_margin, &quot; Nb = &quot;, len(anIds)</p>\r
1229 \r
1230 <p class="whs1">j = 1</p>\r
1231 \r
1232 <p class="whs1">for i in range(len(anIds)):</p>\r
1233 \r
1234 <p class="whs1">&nbsp;&nbsp;if \r
1235  j &gt; 20: j = 1; print &quot;&quot;</p>\r
1236 \r
1237 <p class="whs1">&nbsp;&nbsp;print \r
1238  anIds[i],</p>\r
1239 \r
1240 <p class="whs1">&nbsp;&nbsp;j \r
1241  = j + 1</p>\r
1242 \r
1243 <p class="whs1">&nbsp;&nbsp;pass</p>\r
1244 \r
1245 <p class="whs1">print &quot;&quot;</p>\r
1246 \r
1247 <p class="whs2">&nbsp;</p>\r
1248 \r
1249 <p class="whs2"># create a group</p>\r
1250 \r
1251 <p class="whs1">aGroup = mesh.CreateEmptyGroup(smesh.VOLUME, \r
1252  &quot;Volume &lt; &quot; + `volume_margin`)</p>\r
1253 \r
1254 <p class="whs1">&nbsp;</p>\r
1255 \r
1256 <p class="whs1">aGroup.Add(anIds)</p>\r
1257 \r
1258 <p class="whs2">&nbsp;</p>\r
1259 \r
1260 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1) \r
1261  </span>&nbsp;</p>\r
1262 \r
1263 <script type="text/javascript" language="javascript1.2">\r
1264 <!--\r
1265 if (window.writeIntopicBar)\r
1266         writeIntopicBar(0);\r
1267 //-->\r
1268 </script>\r
1269 </body>\r
1270 </html>\r