Salome HOME
f479f57dfadb362b936c45d10a48348a88e2225e
[modules/smesh.git] / doc / salome / gui / SMESH / grouping_elements.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>Grouping Elements</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 -->\r
13 </style><script type="text/javascript" language="JavaScript">\r
14 <!--\r
15 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
16 {\r
17   var strNSS = "<style type='text/css'>";\r
18   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
19   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
20   strNSS +="</style>";\r
21   document.write(strNSS);\r
22 }\r
23 //-->\r
24 </script>\r
25 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
26 <!--\r
27 function reDo() {\r
28   if (innerWidth != origWidth || innerHeight != origHeight)\r
29      location.reload();\r
30 }\r
31 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
32         origWidth = innerWidth;\r
33         origHeight = innerHeight;\r
34         onresize = reDo;\r
35 }\r
36 onerror = null; \r
37 //-->\r
38 </script>\r
39 <style type="text/css">\r
40 <!--\r
41 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
42 -->\r
43 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
44 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
45 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
46 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
47 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
48 </head>\r
49 <body><script type="text/javascript" language="javascript1.2">\r
50 <!--\r
51 if (window.gbWhTopic)\r
52 {\r
53         if (window.addTocInfo)\r
54         {\r
55         addTocInfo("MESH module\nTUI Scripts\nGrouping Elements");\r
56 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
57 \r
58         }\r
59         if (window.writeBtnStyle)\r
60                 writeBtnStyle();\r
61 \r
62         if (window.writeIntopicBar)\r
63                 writeIntopicBar(1);\r
64 \r
65         if (window.setRelStartPage)\r
66         {\r
67         setRelStartPage("smesh.htm");\r
68 \r
69                 autoSync(1);\r
70                 sendSyncInfo();\r
71                 sendAveInfoOut();\r
72         }\r
73 }\r
74 else\r
75         if (window.gbIE4)\r
76                 document.location.reload();\r
77 //-->\r
78 </script>\r
79 <h1>Grouping Elements</h1>\r
80 \r
81 <h3><a name=bookmark>Create a Group</a></h3>\r
82 \r
83 <p class="whs1">&nbsp;</p>\r
84 \r
85 <p class="whs1">import SMESH</p>\r
86 \r
87 <p class="whs1">import SMESH_mechanic</p>\r
88 \r
89 <p class="whs1">&nbsp;</p>\r
90 \r
91 <p class="whs1">smesh &nbsp;= \r
92  SMESH_mechanic.smesh</p>\r
93 \r
94 <p class="whs1">mesh &nbsp;&nbsp;= \r
95  SMESH_mechanic.mesh</p>\r
96 \r
97 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
98 \r
99 <p class="whs1">&nbsp;</p>\r
100 \r
101 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
102 \r
103 <p class="whs1">&nbsp;</p>\r
104 \r
105 <p class="whs2"># Criterion : AREA &gt; \r
106  100</p>\r
107 \r
108 <p class="whs1">&nbsp;</p>\r
109 \r
110 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
111 \r
112 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
113 \r
114 <p class="whs1">aPredicate.SetNumFunctor( \r
115  aFunctor )</p>\r
116 \r
117 <p class="whs1">aPredicate.SetMargin( \r
118  100 )</p>\r
119 \r
120 <p class="whs1">&nbsp;</p>\r
121 \r
122 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
123 \r
124 <p class="whs1">aFilter.SetPredicate( \r
125  aPredicate )</p>\r
126 \r
127 <p class="whs1">&nbsp;</p>\r
128 \r
129 <p class="whs1">anIds = aFilter.GetElementsId( \r
130  mesh )</p>\r
131 \r
132 <p class="whs2">&nbsp;</p>\r
133 \r
134 <p class="whs2"># print the result</p>\r
135 \r
136 <p class="whs1">print &quot;Criterion: \r
137  Area &gt; 100 Nb = &quot;, len( anIds )</p>\r
138 \r
139 <p class="whs1">for i in range( \r
140  len( anIds ) ):</p>\r
141 \r
142 <p class="whs1">&nbsp;&nbsp;print \r
143  anIds[ i ]</p>\r
144 \r
145 <p class="whs1">&nbsp;</p>\r
146 \r
147 <p class="whs2"># create a group consisting \r
148  of faces with area &gt; 100</p>\r
149 \r
150 <p class="whs1">aGroup = mesh.CreateGroup( \r
151  SMESH.FACE, &quot;Area &gt; 100&quot; )</p>\r
152 \r
153 <p class="whs1">aGroup.Add( anIds \r
154  )</p>\r
155 \r
156 <p class="whs1">&nbsp;</p>\r
157 \r
158 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
159  </p>\r
160 \r
161 <p class="whs2">&nbsp;</p>\r
162 \r
163 <h3><a name=bookmark1>Edit a Group</a></h3>\r
164 \r
165 <p class="whs1">import SMESH</p>\r
166 \r
167 <p class="whs1">import SMESH_mechanic</p>\r
168 \r
169 <p class="whs1">&nbsp;</p>\r
170 \r
171 <p class="whs1">smesh &nbsp;= \r
172  SMESH_mechanic.smesh</p>\r
173 \r
174 <p class="whs1">mesh &nbsp;&nbsp;= \r
175  SMESH_mechanic.mesh</p>\r
176 \r
177 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
178 \r
179 <p class="whs1">&nbsp;</p>\r
180 \r
181 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
182 \r
183 <p class="whs1">&nbsp;</p>\r
184 \r
185 <p class="whs2"># Criterion : AREA &gt; \r
186  20</p>\r
187 \r
188 <p class="whs2">&nbsp;</p>\r
189 \r
190 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
191 \r
192 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
193 \r
194 <p class="whs1">aPredicate.SetNumFunctor( \r
195  aFunctor )</p>\r
196 \r
197 <p class="whs1">aPredicate.SetMargin( \r
198  30 )</p>\r
199 \r
200 <p class="whs1">&nbsp;</p>\r
201 \r
202 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
203 \r
204 <p class="whs1">aFilter.SetPredicate( \r
205  aPredicate )</p>\r
206 \r
207 <p class="whs1">&nbsp;</p>\r
208 \r
209 <p class="whs1">anIds = aFilter.GetElementsId( \r
210  mesh )</p>\r
211 \r
212 <p class="whs1">&nbsp;</p>\r
213 \r
214 <p class="whs2"># create a group by adding \r
215  elements with area &gt; 20</p>\r
216 \r
217 <p class="whs1">aGroup = mesh.CreateGroup( \r
218  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
219 \r
220 <p class="whs1">aGroup.Add( anIds \r
221  )</p>\r
222 \r
223 <p class="whs1">&nbsp;</p>\r
224 \r
225 <p class="whs1">print &quot;Criterion: \r
226  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
227 \r
228 <p class="whs1">for i in range( \r
229  len( anIds ) ):</p>\r
230 \r
231 <p class="whs1">&nbsp;&nbsp;print \r
232  anIds[ i ]</p>\r
233 \r
234 <p class="whs1">&nbsp;</p>\r
235 \r
236 <p class="whs2"># Criterion : AREA &gt; \r
237  60</p>\r
238 \r
239 <p class="whs2">&nbsp;</p>\r
240 \r
241 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
242 \r
243 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
244 \r
245 <p class="whs1">aPredicate.SetNumFunctor( \r
246  aFunctor )</p>\r
247 \r
248 <p class="whs1">aPredicate.SetMargin( \r
249  60 )</p>\r
250 \r
251 <p class="whs1">&nbsp;</p>\r
252 \r
253 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
254 \r
255 <p class="whs1">aFilter.SetPredicate( \r
256  aPredicate )</p>\r
257 \r
258 <p class="whs1">&nbsp;</p>\r
259 \r
260 <p class="whs1">anIds = aFilter.GetElementsId( \r
261  mesh )</p>\r
262 \r
263 <p class="whs2">&nbsp;</p>\r
264 \r
265 <p class="whs2"># create a group of elements \r
266  with area [20; 60] by removing elements with area &gt; 60 from &nbsp;group \r
267  aGroup </p>\r
268 \r
269 <p class="whs1">aGroup.Remove(anIds)</p>\r
270 \r
271 <p class="whs2">&nbsp;</p>\r
272 \r
273 <p class="whs2"># print the result</p>\r
274 \r
275 <p class="whs1">aGroupElemIDs = \r
276  aGroup.GetListOfID()</p>\r
277 \r
278 <p class="whs1">print &quot;Criterion: \r
279  20 &lt; Area &lt; 60 = &quot;, len( aGroupElemIDs )</p>\r
280 \r
281 <p class="whs1">for i in range( \r
282  len( aGroupElemIDs ) ):</p>\r
283 \r
284 <p class="whs1">&nbsp;&nbsp;print \r
285  aGroupElemIDs[ i ]</p>\r
286 \r
287 <p class="whs1">&nbsp;</p>\r
288 \r
289 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
290  </p>\r
291 \r
292 <p class="whs2">&nbsp;</p>\r
293 \r
294 <h3><a name=bookmark2>Union of two groups</a></h3>\r
295 \r
296 <p class="whs1">import SMESH</p>\r
297 \r
298 <p class="whs1">import SMESH_mechanic</p>\r
299 \r
300 <p class="whs1">&nbsp;</p>\r
301 \r
302 <p class="whs1">smesh &nbsp;= \r
303  SMESH_mechanic.smesh</p>\r
304 \r
305 <p class="whs1">mesh &nbsp;&nbsp;= \r
306  SMESH_mechanic.mesh</p>\r
307 \r
308 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
309 \r
310 <p class="whs1">&nbsp;</p>\r
311 \r
312 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
313 \r
314 <p class="whs1">&nbsp;</p>\r
315 \r
316 <p class="whs2"># Criterion : AREA &gt; \r
317  20</p>\r
318 \r
319 <p class="whs2">&nbsp;</p>\r
320 \r
321 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
322 \r
323 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
324 \r
325 <p class="whs1">aPredicate.SetNumFunctor( \r
326  aFunctor )</p>\r
327 \r
328 <p class="whs1">aPredicate.SetMargin( \r
329  20 )</p>\r
330 \r
331 <p class="whs1">&nbsp;</p>\r
332 \r
333 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
334 \r
335 <p class="whs1">aFilter.SetPredicate( \r
336  aPredicate )</p>\r
337 \r
338 <p class="whs1">&nbsp;</p>\r
339 \r
340 <p class="whs1">anIds = aFilter.GetElementsId( \r
341  mesh )</p>\r
342 \r
343 <p class="whs1">&nbsp;</p>\r
344 \r
345 <p class="whs2"># create a group by adding \r
346  elements with area &gt; 20</p>\r
347 \r
348 <p class="whs1">aGroup1 = mesh.CreateGroup( \r
349  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
350 \r
351 <p class="whs1">aGroup1.Add( anIds \r
352  )</p>\r
353 \r
354 <p class="whs1">&nbsp;</p>\r
355 \r
356 <p class="whs1">print &quot;Criterion: \r
357  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
358 \r
359 <p class="whs1">for i in range( \r
360  len( anIds ) ):</p>\r
361 \r
362 <p class="whs1">&nbsp;&nbsp;print \r
363  anIds[ i ]</p>\r
364 \r
365 <p class="whs1">&nbsp;</p>\r
366 \r
367 <p class="whs2"># Criterion : AREA = 20</p>\r
368 \r
369 <p class="whs2">&nbsp;</p>\r
370 \r
371 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
372 \r
373 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>\r
374 \r
375 <p class="whs1">aPredicate.SetNumFunctor( \r
376  aFunctor )</p>\r
377 \r
378 <p class="whs1">aPredicate.SetMargin( \r
379  20 )</p>\r
380 \r
381 <p class="whs1">&nbsp;</p>\r
382 \r
383 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
384 \r
385 <p class="whs1">aFilter.SetPredicate( \r
386  aPredicate )</p>\r
387 \r
388 <p class="whs1">&nbsp;</p>\r
389 \r
390 <p class="whs1">anIds = aFilter.GetElementsId( \r
391  mesh )</p>\r
392 \r
393 <p class="whs2">&nbsp;</p>\r
394 \r
395 <p class="whs2"># create a group by adding \r
396  elements with area &gt; 20</p>\r
397 \r
398 <p class="whs1">aGroup2 = mesh.CreateGroup( \r
399  SMESH.FACE, &quot;Area = 20&quot; )</p>\r
400 \r
401 <p class="whs1">aGroup2.Add( anIds \r
402  )</p>\r
403 \r
404 <p class="whs1">&nbsp;</p>\r
405 \r
406 <p class="whs1">print &quot;Criterion: \r
407  Area = 20 Nb = &quot;, len( anIds )</p>\r
408 \r
409 <p class="whs1">for i in range( \r
410  len( anIds ) ):</p>\r
411 \r
412 <p class="whs1">&nbsp;&nbsp;print \r
413  anIds[ i ]</p>\r
414 \r
415 <p class="whs2">&nbsp;</p>\r
416 \r
417 <p class="whs2"># create union group : \r
418  area &gt;= 20</p>\r
419 \r
420 <p class="whs1">aGroup3 = mesh.UnionGroups(aGroup1, \r
421  aGroup2, &quot;Area &gt;= 20&quot;)</p>\r
422 \r
423 <p class="whs1">print &quot;Criterion: \r
424  Area &gt;= 20 Nb = &quot;, len( aGroup3.GetListOfID() )</p>\r
425 \r
426 <p class="whs1">&nbsp;</p>\r
427 \r
428 <p class="whs2"># Criterion : AREA &lt; \r
429  20</p>\r
430 \r
431 <p class="whs2">&nbsp;</p>\r
432 \r
433 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
434 \r
435 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
436 \r
437 <p class="whs1">aPredicate.SetNumFunctor( \r
438  aFunctor )</p>\r
439 \r
440 <p class="whs1">aPredicate.SetMargin( \r
441  20 )</p>\r
442 \r
443 <p class="whs1">&nbsp;</p>\r
444 \r
445 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
446 \r
447 <p class="whs1">aFilter.SetPredicate( \r
448  aPredicate )</p>\r
449 \r
450 <p class="whs1">&nbsp;</p>\r
451 \r
452 <p class="whs1">anIds = aFilter.GetElementsId( \r
453  mesh )</p>\r
454 \r
455 <p class="whs1">&nbsp;</p>\r
456 \r
457 <p class="whs2"># create a group by adding \r
458  elements with area &lt; 20</p>\r
459 \r
460 <p class="whs1">aGroup4 = mesh.CreateGroup( \r
461  SMESH.FACE, &quot;Area &lt; 20&quot; )</p>\r
462 \r
463 <p class="whs1">aGroup4.Add( anIds \r
464  )</p>\r
465 \r
466 <p class="whs1">&nbsp;</p>\r
467 \r
468 <p class="whs1">print &quot;Criterion: \r
469  Area &lt; 20 Nb = &quot;, len( anIds )</p>\r
470 \r
471 <p class="whs1">for i in range( \r
472  len( anIds ) ):</p>\r
473 \r
474 <p class="whs1">&nbsp;&nbsp;print \r
475  anIds[ i ]</p>\r
476 \r
477 <p class="whs2">&nbsp;&nbsp;</p>\r
478 \r
479 <p class="whs2"># create union group : \r
480  area &gt;= 20 and area &lt; 20</p>\r
481 \r
482 <p class="whs1">aGroup5 = mesh.UnionGroups(aGroup3, \r
483  aGroup4, &quot;Any Area&quot;)</p>\r
484 \r
485 <p class="whs1">print &quot;Criterion: \r
486  Any Area Nb = &quot;, len( aGroup5.GetListOfID() )</p>\r
487 \r
488 <p class="whs1">&nbsp;</p>\r
489 \r
490 <p class="whs1">salome.sg.updateObjBrowser(1) \r
491  </p>\r
492 \r
493 <p class="whs1">&nbsp;</p>\r
494 \r
495 <h3><a name=bookmark3>Intersection of two groups</a></h3>\r
496 \r
497 <p class="whs1">import SMESH</p>\r
498 \r
499 <p class="whs1">import SMESH_mechanic</p>\r
500 \r
501 <p class="whs1">&nbsp;</p>\r
502 \r
503 <p class="whs1">smesh &nbsp;= \r
504  SMESH_mechanic.smesh</p>\r
505 \r
506 <p class="whs1">mesh &nbsp;&nbsp;= \r
507  SMESH_mechanic.mesh</p>\r
508 \r
509 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
510 \r
511 <p class="whs1">&nbsp;</p>\r
512 \r
513 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
514 \r
515 <p class="whs1">&nbsp;</p>\r
516 \r
517 <p class="whs2"># Criterion : AREA &gt; \r
518  20</p>\r
519 \r
520 <p class="whs2">&nbsp;</p>\r
521 \r
522 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</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  20 )</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="whs1">&nbsp;</p>\r
545 \r
546 <p class="whs2"># create a group by adding \r
547  elements with area &gt; 20</p>\r
548 \r
549 <p class="whs1">aGroup1 = mesh.CreateGroup( \r
550  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
551 \r
552 <p class="whs1">aGroup1.Add( anIds \r
553  )</p>\r
554 \r
555 <p class="whs1">&nbsp;</p>\r
556 \r
557 <p class="whs1">print &quot;Criterion: \r
558  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
559 \r
560 <p class="whs1">for i in range( \r
561  len( anIds ) ):</p>\r
562 \r
563 <p class="whs1">&nbsp;&nbsp;print \r
564  anIds[ i ]</p>\r
565 \r
566 <p class="whs1">&nbsp;</p>\r
567 \r
568 <p class="whs2"># Criterion : AREA &lt; \r
569  60</p>\r
570 \r
571 <p class="whs2">&nbsp;</p>\r
572 \r
573 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
574 \r
575 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
576 \r
577 <p class="whs1">aPredicate.SetNumFunctor( \r
578  aFunctor )</p>\r
579 \r
580 <p class="whs1">aPredicate.SetMargin( \r
581  60 )</p>\r
582 \r
583 <p class="whs1">&nbsp;</p>\r
584 \r
585 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
586 \r
587 <p class="whs1">aFilter.SetPredicate( \r
588  aPredicate )</p>\r
589 \r
590 <p class="whs1">&nbsp;</p>\r
591 \r
592 <p class="whs1">anIds = aFilter.GetElementsId( \r
593  mesh )</p>\r
594 \r
595 <p class="whs1">&nbsp;</p>\r
596 \r
597 <p class="whs2"># create a group by adding \r
598  elements with area &lt; 60</p>\r
599 \r
600 <p class="whs1">aGroup2 = mesh.CreateGroup( \r
601  SMESH.FACE, &quot;Area &lt; 60&quot; )</p>\r
602 \r
603 <p class="whs1">aGroup2.Add( anIds \r
604  )</p>\r
605 \r
606 <p class="whs1">&nbsp;</p>\r
607 \r
608 <p class="whs1">print &quot;Criterion: \r
609  Area &lt; 60 Nb = &quot;, len( anIds )</p>\r
610 \r
611 <p class="whs1">for i in range( \r
612  len( anIds ) ):</p>\r
613 \r
614 <p class="whs1">&nbsp;&nbsp;print \r
615  anIds[ i ]</p>\r
616 \r
617 <p class="whs2">&nbsp;&nbsp;</p>\r
618 \r
619 <p class="whs2"># create an intersection \r
620  of groups : 20 &lt; area &lt; 60</p>\r
621 \r
622 <p class="whs1">aGroup3 = mesh.IntersectGroups(aGroup1, \r
623  aGroup2, &quot;20 &lt; Area &lt; 60&quot;)</p>\r
624 \r
625 <p class="whs1">print &quot;Criterion: \r
626  20 &lt; Area &lt; 60 Nb = &quot;, len( aGroup3.GetListOfID() )</p>\r
627 \r
628 <p class="whs1">&nbsp;</p>\r
629 \r
630 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
631  </p>\r
632 \r
633 <p class="whs2">&nbsp;</p>\r
634 \r
635 <h3><a name=bookmark4>Cut of two groups</a></h3>\r
636 \r
637 <p class="whs1">import SMESH</p>\r
638 \r
639 <p class="whs1">import SMESH_mechanic</p>\r
640 \r
641 <p class="whs1">&nbsp;</p>\r
642 \r
643 <p class="whs1">smesh &nbsp;= \r
644  SMESH_mechanic.smesh</p>\r
645 \r
646 <p class="whs1">mesh &nbsp;&nbsp;= \r
647  SMESH_mechanic.mesh</p>\r
648 \r
649 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
650 \r
651 <p class="whs1">&nbsp;</p>\r
652 \r
653 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
654 \r
655 <p class="whs1">&nbsp;</p>\r
656 \r
657 <p class="whs2"># Criterion : AREA &gt; \r
658  20</p>\r
659 \r
660 <p class="whs2">&nbsp;</p>\r
661 \r
662 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
663 \r
664 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
665 \r
666 <p class="whs1">aPredicate.SetNumFunctor( \r
667  aFunctor )</p>\r
668 \r
669 <p class="whs1">aPredicate.SetMargin( \r
670  20 )</p>\r
671 \r
672 <p class="whs1">&nbsp;</p>\r
673 \r
674 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
675 \r
676 <p class="whs1">aFilter.SetPredicate( \r
677  aPredicate )</p>\r
678 \r
679 <p class="whs1">&nbsp;</p>\r
680 \r
681 <p class="whs1">anIds = aFilter.GetElementsId( \r
682  mesh )</p>\r
683 \r
684 <p class="whs1">&nbsp;</p>\r
685 \r
686 <p class="whs2"># create a group by adding \r
687  elements with area &gt; 20</p>\r
688 \r
689 <p class="whs1">aGroupMain = mesh.CreateGroup( \r
690  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
691 \r
692 <p class="whs1">aGroupMain.Add( \r
693  anIds )</p>\r
694 \r
695 <p class="whs1">&nbsp;</p>\r
696 \r
697 <p class="whs1">print &quot;Criterion: \r
698  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
699 \r
700 <p class="whs1">for i in range( \r
701  len( anIds ) ):</p>\r
702 \r
703 <p class="whs1">&nbsp;&nbsp;print \r
704  anIds[ i ]</p>\r
705 \r
706 <p class="whs1">&nbsp;</p>\r
707 \r
708 <p class="whs2"># Criterion : AREA &lt; \r
709  60</p>\r
710 \r
711 <p class="whs2">&nbsp;</p>\r
712 \r
713 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
714 \r
715 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
716 \r
717 <p class="whs1">aPredicate.SetNumFunctor( \r
718  aFunctor )</p>\r
719 \r
720 <p class="whs1">aPredicate.SetMargin( \r
721  60 )</p>\r
722 \r
723 <p class="whs1">&nbsp;</p>\r
724 \r
725 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
726 \r
727 <p class="whs1">aFilter.SetPredicate( \r
728  aPredicate )</p>\r
729 \r
730 <p class="whs1">&nbsp;</p>\r
731 \r
732 <p class="whs1">anIds = aFilter.GetElementsId( \r
733  mesh )</p>\r
734 \r
735 <p class="whs1">&nbsp;</p>\r
736 \r
737 <p class="whs2"># create a group by adding \r
738  elements with area &lt; 60</p>\r
739 \r
740 <p class="whs1">aGroupTool = mesh.CreateGroup( \r
741  SMESH.FACE, &quot;Area &lt; 60&quot; )</p>\r
742 \r
743 <p class="whs1">aGroupTool.Add( \r
744  anIds )</p>\r
745 \r
746 <p class="whs1">&nbsp;</p>\r
747 \r
748 <p class="whs1">print &quot;Criterion: \r
749  Area &lt; 60 Nb = &quot;, len( anIds )</p>\r
750 \r
751 <p class="whs1">for i in range( \r
752  len( anIds ) ):</p>\r
753 \r
754 <p class="whs1">&nbsp;&nbsp;print \r
755  anIds[ i ]</p>\r
756 \r
757 <p class="whs2">&nbsp;&nbsp;</p>\r
758 \r
759 <p class="whs2"># create an intersection \r
760  of groups : area &gt;= 60</p>\r
761 \r
762 <p class="whs1">aGroupRes = mesh.CutGroups(aGroupMain, \r
763  aGroupTool, &quot;Area &gt;= 60&quot;)</p>\r
764 \r
765 <p class="whs1">print &quot;Criterion: \r
766  Area &gt;= 60 Nb = &quot;, len( aGroupRes.GetListOfID() )</p>\r
767 \r
768 <p class="whs1">&nbsp;</p>\r
769 \r
770 <p class="whs1">salome.sg.updateObjBrowser(1) \r
771  </p>\r
772 \r
773 <p class="whs1">&nbsp;</p>\r
774 \r
775 <p class="whs2">&nbsp;</p>\r
776 \r
777 <script type="text/javascript" language="javascript1.2">\r
778 <!--\r
779 if (window.writeIntopicBar)\r
780         writeIntopicBar(0);\r
781 //-->\r
782 </script>\r
783 </body>\r
784 </html>\r