Salome HOME
64da11cf2a86f43209fdf513ebd2deabfdc5ddfa
[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 img_whs3 { border:none; width:430px; height:391px; float:none; border-style:none; }\r
13 img_whs4 { border:none; float:none; width:463px; height:417px; border-style:none; }\r
14 img_whs5 { border:none; width:541px; height:417px; float:none; border-style:none; }\r
15 img_whs6 { border:none; width:394px; height:425px; float:none; border-style:none; }\r
16 img_whs7 { border:none; float:none; width:368px; height:379px; border-style:none; }\r
17 img_whs8 { border:none; float:none; width:344px; height:381px; border-style:none; }\r
18 img_whs9 { border:none; width:314px; height:351px; float:none; border-style:none; }\r
19 img_whs10 { border:none; float:none; width:319px; height:351px; border-style:none; }\r
20 img_whs11 { border:none; float:none; width:304px; height:352px; border-style:none; }\r
21 img_whs12 { border:none; width:318px; height:355px; float:none; border-style:none; }\r
22 img_whs13 { border:none; float:none; width:318px; height:355px; border-style:none; }\r
23 img_whs14 { border:none; float:none; width:320px; height:354px; border-style:none; }\r
24 -->\r
25 </style><script type="text/javascript" language="JavaScript">\r
26 <!--\r
27 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
28 {\r
29   var strNSS = "<style type='text/css'>";\r
30   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
31   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
32   strNSS +="</style>";\r
33   document.write(strNSS);\r
34 }\r
35 //-->\r
36 </script>\r
37 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
38 <!--\r
39 function reDo() {\r
40   if (innerWidth != origWidth || innerHeight != origHeight)\r
41      location.reload();\r
42 }\r
43 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
44         origWidth = innerWidth;\r
45         origHeight = innerHeight;\r
46         onresize = reDo;\r
47 }\r
48 onerror = null; \r
49 //-->\r
50 </script>\r
51 <style type="text/css">\r
52 <!--\r
53 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
54 p.WebHelpNavBar { text-align:right; }\r
55 -->\r
56 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
57 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
58 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
59 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
60 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
61 <script type="text/javascript" language="javascript1.2">\r
62 <!--\r
63 if (window.gbWhTopic)\r
64 {\r
65         if (window.setRelStartPage)\r
66         {\r
67         addTocInfo("MESH module\nTUI Scripts\nGrouping Elements");\r
68 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
69 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
70 \r
71         }\r
72 \r
73 \r
74         if (window.setRelStartPage)\r
75         {\r
76         setRelStartPage("index.htm");\r
77 \r
78                 autoSync(1);\r
79                 sendSyncInfo();\r
80                 sendAveInfoOut();\r
81         }\r
82 \r
83 }\r
84 else\r
85         if (window.gbIE4)\r
86                 document.location.reload();\r
87 //-->\r
88 </script>\r
89 </head>\r
90 <body><script type="text/javascript" language="javascript1.2">\r
91 <!--\r
92 if (window.writeIntopicBar)\r
93         writeIntopicBar(4);\r
94 //-->\r
95 </script>\r
96 <h1>Grouping Elements</h1>\r
97 \r
98 <h3><a name=bookmark>Create a Standalone Group</a></h3>\r
99 \r
100 <p class="whs1">&nbsp;</p>\r
101 \r
102 <p class="whs1">import SMESH</p>\r
103 \r
104 <p class="whs1">import SMESH_mechanic</p>\r
105 \r
106 <p class="whs1">&nbsp;</p>\r
107 \r
108 <p class="whs1">smesh &nbsp;= \r
109  SMESH_mechanic.smesh</p>\r
110 \r
111 <p class="whs1">mesh &nbsp;&nbsp;= \r
112  SMESH_mechanic.mesh</p>\r
113 \r
114 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
115 \r
116 <p class="whs1">&nbsp;</p>\r
117 \r
118 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
119 \r
120 <p class="whs1">&nbsp;</p>\r
121 \r
122 <p class="whs2"># Criterion : AREA &gt; \r
123  100</p>\r
124 \r
125 <p class="whs1">&nbsp;</p>\r
126 \r
127 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
128 \r
129 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
130 \r
131 <p class="whs1">aPredicate.SetNumFunctor( \r
132  aFunctor )</p>\r
133 \r
134 <p class="whs1">aPredicate.SetMargin( \r
135  100 )</p>\r
136 \r
137 <p class="whs1">&nbsp;</p>\r
138 \r
139 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
140 \r
141 <p class="whs1">aFilter.SetPredicate( \r
142  aPredicate )</p>\r
143 \r
144 <p class="whs1">&nbsp;</p>\r
145 \r
146 <p class="whs1">anIds = aFilter.GetElementsId( \r
147  mesh )</p>\r
148 \r
149 <p class="whs2">&nbsp;</p>\r
150 \r
151 <p class="whs2"># print the result</p>\r
152 \r
153 <p class="whs1">print &quot;Criterion: \r
154  Area &gt; 100 Nb = &quot;, len( anIds )</p>\r
155 \r
156 <p class="whs1">for i in range( \r
157  len( anIds ) ):</p>\r
158 \r
159 <p class="whs1">&nbsp;&nbsp;print \r
160  anIds[ i ]</p>\r
161 \r
162 <p class="whs1">&nbsp;</p>\r
163 \r
164 <p class="whs2"># create a group consisting \r
165  of faces with area &gt; 100</p>\r
166 \r
167 <p class="whs1">aGroup = mesh.CreateGroup( \r
168  SMESH.FACE, &quot;Area &gt; 100&quot; )</p>\r
169 \r
170 <p class="whs1">aGroup.Add( anIds \r
171  )</p>\r
172 \r
173 <p class="whs1">&nbsp;</p>\r
174 \r
175 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
176  </p>\r
177 \r
178 <p class="whs2">&nbsp;</p>\r
179 \r
180 <p class="whs2"><img src="pics/create_group.png" x-maintain-ratio="TRUE" width="430px" height="391px" border="0" class="img_whs3"></p>\r
181 \r
182 <h3><a name=bookmark5>Create a Group on Geometry</a></h3>\r
183 \r
184 <p class="whs1">import salome</p>\r
185 \r
186 <p class="whs1">import geompy</p>\r
187 \r
188 <p class="whs1">&nbsp;</p>\r
189 \r
190 <p class="whs1">import SMESH</p>\r
191 \r
192 <p class="whs1">import StdMeshers</p>\r
193 \r
194 <p class="whs1">&nbsp;</p>\r
195 \r
196 <p class="whs1">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
197  &quot;SMESH&quot;)</p>\r
198 \r
199 <p class="whs2">&nbsp;</p>\r
200 \r
201 <p class="whs2"># create a box</p>\r
202 \r
203 <p class="whs1">box = geompy.MakeBox(0., \r
204  0., 0., 100., 100., 100.)</p>\r
205 \r
206 <p class="whs2">&nbsp;</p>\r
207 \r
208 <p class="whs2"># add the box to the study</p>\r
209 \r
210 <p class="whs1">idbox = geompy.addToStudy(box, \r
211  &quot;box&quot;)</p>\r
212 \r
213 <p class="whs2">&nbsp;</p>\r
214 \r
215 <p class="whs2"># add the first face of \r
216  the box to the study</p>\r
217 \r
218 <p class="whs1">subShapeList = geompy.SubShapeAll(box, \r
219  geompy.ShapeType[&quot;FACE&quot;])</p>\r
220 \r
221 <p class="whs1">face = subShapeList[0]</p>\r
222 \r
223 <p class="whs1">name = geompy.SubShapeName(face, \r
224  box)</p>\r
225 \r
226 <p class="whs1">idface = geompy.addToStudyInFather(box, \r
227  face, name)</p>\r
228 \r
229 <p class="whs2">&nbsp;</p>\r
230 \r
231 <p class="whs2"># create a hypothesis</p>\r
232 \r
233 <p class="whs1">numberOfSegments \r
234  = 7</p>\r
235 \r
236 <p class="whs1">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
237  &quot;libStdMeshersEngine.so&quot;)</p>\r
238 \r
239 <p class="whs1">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>\r
240 \r
241 <p class="whs2">&nbsp;</p>\r
242 \r
243 <p class="whs2"># create algorithms</p>\r
244 \r
245 <p class="whs1">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
246  &quot;libStdMeshersEngine.so&quot;)</p>\r
247 \r
248 <p class="whs1">quad2D = smesh.CreateHypothesis(&quot;Quadrangle_2D&quot;, \r
249  &quot;libStdMeshersEngine.so&quot;)</p>\r
250 \r
251 <p class="whs2">&nbsp;</p>\r
252 \r
253 <p class="whs2"># initialize a mesh with \r
254  the box</p>\r
255 \r
256 <p class="whs1">mesh = smesh.CreateMesh(box)</p>\r
257 \r
258 <p class="whs2">&nbsp;</p>\r
259 \r
260 <p class="whs2"># add hypotheses and algorithms \r
261  to the box</p>\r
262 \r
263 <p class="whs1">mesh.AddHypothesis(box,hypNbSeg)</p>\r
264 \r
265 <p class="whs1">mesh.AddHypothesis(box,regular1D)</p>\r
266 \r
267 <p class="whs1">mesh.AddHypothesis(box,quad2D)</p>\r
268 \r
269 <p class="whs2">&nbsp;</p>\r
270 \r
271 <p class="whs2"># compute the mesh</p>\r
272 \r
273 <p class="whs1">ret = smesh.Compute(mesh,box)</p>\r
274 \r
275 <p class="whs1">if ret == 0:</p>\r
276 \r
277 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
278  &quot;probleme when computing the mesh&quot;</p>\r
279 \r
280 <p class="whs1">else:</p>\r
281 \r
282 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
283  &quot;Computation succeded&quot;</p>\r
284 \r
285 <p class="whs2">&nbsp;</p>\r
286 \r
287 <p class="whs2"># create geometry groups \r
288  on the face</p>\r
289 \r
290 <p class="whs1">aGeomGroup1 = geompy.CreateGroup(face, \r
291  geompy.ShapeType[&quot;FACE&quot;])</p>\r
292 \r
293 <p class="whs1">geompy.AddObject(aGeomGroup1, \r
294  1)</p>\r
295 \r
296 <p class="whs1">&nbsp;</p>\r
297 \r
298 <p class="whs1">aGeomGroup2 = geompy.CreateGroup(face, \r
299  geompy.ShapeType[&quot;EDGE&quot;])</p>\r
300 \r
301 <p class="whs1">geompy.AddObject(aGeomGroup2, \r
302  3)</p>\r
303 \r
304 <p class="whs1">geompy.AddObject(aGeomGroup2, \r
305  6)</p>\r
306 \r
307 <p class="whs1">geompy.AddObject(aGeomGroup2, \r
308  8)</p>\r
309 \r
310 <p class="whs1">geompy.AddObject(aGeomGroup2, \r
311  10)</p>\r
312 \r
313 <p class="whs1">&nbsp;</p>\r
314 \r
315 <p class="whs1">geompy.addToStudy(aGeomGroup1, \r
316  &quot;Group on Faces&quot;)</p>\r
317 \r
318 <p class="whs1">geompy.addToStudy(aGeomGroup2, \r
319  &quot;Group on Edges&quot;)</p>\r
320 \r
321 <p class="whs2">&nbsp;</p>\r
322 \r
323 <p class="whs2"># create SMESH groups</p>\r
324 \r
325 <p class="whs1">aSmeshGroup1 = mesh.CreateGroupFromGEOM(SMESH.FACE, \r
326  &quot;SMESHGroup1&quot;,</p>\r
327 \r
328 <p class="whs1">aGeomGroup1)</p>\r
329 \r
330 <p class="whs1">aSmeshGroup2 = mesh.CreateGroupFromGEOM(SMESH.EDGE, \r
331  &quot;SMESHGroup2&quot;, aGeomGroup2)</p>\r
332 \r
333 <p class="whs1">&nbsp;</p>\r
334 \r
335 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
336  &nbsp;</p>\r
337 \r
338 <p class="whs2">&nbsp;</p>\r
339 \r
340 <h3><a name=bookmark1>Edit a Group</a></h3>\r
341 \r
342 <p class="whs1">import SMESH</p>\r
343 \r
344 <p class="whs1">import SMESH_mechanic</p>\r
345 \r
346 <p class="whs1">&nbsp;</p>\r
347 \r
348 <p class="whs1">smesh &nbsp;= \r
349  SMESH_mechanic.smesh</p>\r
350 \r
351 <p class="whs1">mesh &nbsp;&nbsp;= \r
352  SMESH_mechanic.mesh</p>\r
353 \r
354 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
355 \r
356 <p class="whs1">&nbsp;</p>\r
357 \r
358 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
359 \r
360 <p class="whs1">&nbsp;</p>\r
361 \r
362 <p class="whs2"># Criterion : AREA &gt; \r
363  20</p>\r
364 \r
365 <p class="whs2">&nbsp;</p>\r
366 \r
367 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
368 \r
369 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
370 \r
371 <p class="whs1">aPredicate.SetNumFunctor( \r
372  aFunctor )</p>\r
373 \r
374 <p class="whs1">aPredicate.SetMargin( \r
375  30 )</p>\r
376 \r
377 <p class="whs1">&nbsp;</p>\r
378 \r
379 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
380 \r
381 <p class="whs1">aFilter.SetPredicate( \r
382  aPredicate )</p>\r
383 \r
384 <p class="whs1">&nbsp;</p>\r
385 \r
386 <p class="whs1">anIds = aFilter.GetElementsId( \r
387  mesh )</p>\r
388 \r
389 <p class="whs1">&nbsp;</p>\r
390 \r
391 <p class="whs2"># create a group by adding \r
392  elements with area &gt; 20</p>\r
393 \r
394 <p class="whs1">aGroup = mesh.CreateGroup( \r
395  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
396 \r
397 <p class="whs1">aGroup.Add( anIds \r
398  )</p>\r
399 \r
400 <p class="whs1">&nbsp;</p>\r
401 \r
402 <p class="whs1">print &quot;Criterion: \r
403  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
404 \r
405 <p class="whs1">for i in range( \r
406  len( anIds ) ):</p>\r
407 \r
408 <p class="whs1">&nbsp;&nbsp;print \r
409  anIds[ i ]</p>\r
410 \r
411 <p class="whs1">&nbsp;</p>\r
412 \r
413 <p class="whs2"># Criterion : AREA &gt; \r
414  60</p>\r
415 \r
416 <p class="whs2">&nbsp;</p>\r
417 \r
418 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
419 \r
420 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
421 \r
422 <p class="whs1">aPredicate.SetNumFunctor( \r
423  aFunctor )</p>\r
424 \r
425 <p class="whs1">aPredicate.SetMargin( \r
426  60 )</p>\r
427 \r
428 <p class="whs1">&nbsp;</p>\r
429 \r
430 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
431 \r
432 <p class="whs1">aFilter.SetPredicate( \r
433  aPredicate )</p>\r
434 \r
435 <p class="whs1">&nbsp;</p>\r
436 \r
437 <p class="whs1">anIds = aFilter.GetElementsId( \r
438  mesh )</p>\r
439 \r
440 <p class="whs2">&nbsp;</p>\r
441 \r
442 <p class="whs2"># create a group of elements \r
443  with area [20; 60] by removing elements with area &gt; 60 from &nbsp;group \r
444  aGroup </p>\r
445 \r
446 <p class="whs1">aGroup.Remove(anIds)</p>\r
447 \r
448 <p class="whs2">&nbsp;</p>\r
449 \r
450 <p class="whs2"># print the result</p>\r
451 \r
452 <p class="whs1">aGroupElemIDs = \r
453  aGroup.GetListOfID()</p>\r
454 \r
455 <p class="whs1">print &quot;Criterion: \r
456  20 &lt; Area &lt; 60 = &quot;, len( aGroupElemIDs )</p>\r
457 \r
458 <p class="whs1">for i in range( \r
459  len( aGroupElemIDs ) ):</p>\r
460 \r
461 <p class="whs1">&nbsp;&nbsp;print \r
462  aGroupElemIDs[ i ]</p>\r
463 \r
464 <p class="whs1">&nbsp;</p>\r
465 \r
466 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
467  </p>\r
468 \r
469 <p class="whs2">&nbsp;</p>\r
470 \r
471 <p class="whs2"><img src="pics/editing_groups1.png" x-maintain-ratio="TRUE" width="463px" height="417px" border="0" class="img_whs4"> &nbsp;<img src="pics/editing_groups2.png" x-maintain-ratio="TRUE" width="541px" height="417px" border="0" class="img_whs5"></p>\r
472 \r
473 <h3><a name=bookmark2>Union of two groups</a></h3>\r
474 \r
475 <p class="whs1">import SMESH</p>\r
476 \r
477 <p class="whs1">import SMESH_mechanic</p>\r
478 \r
479 <p class="whs1">&nbsp;</p>\r
480 \r
481 <p class="whs1">smesh &nbsp;= \r
482  SMESH_mechanic.smesh</p>\r
483 \r
484 <p class="whs1">mesh &nbsp;&nbsp;= \r
485  SMESH_mechanic.mesh</p>\r
486 \r
487 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
488 \r
489 <p class="whs1">&nbsp;</p>\r
490 \r
491 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
492 \r
493 <p class="whs1">&nbsp;</p>\r
494 \r
495 <p class="whs2"># Criterion : AREA &gt; \r
496  20</p>\r
497 \r
498 <p class="whs2">&nbsp;</p>\r
499 \r
500 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
501 \r
502 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
503 \r
504 <p class="whs1">aPredicate.SetNumFunctor( \r
505  aFunctor )</p>\r
506 \r
507 <p class="whs1">aPredicate.SetMargin( \r
508  20 )</p>\r
509 \r
510 <p class="whs1">&nbsp;</p>\r
511 \r
512 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
513 \r
514 <p class="whs1">aFilter.SetPredicate( \r
515  aPredicate )</p>\r
516 \r
517 <p class="whs1">&nbsp;</p>\r
518 \r
519 <p class="whs1">anIds = aFilter.GetElementsId( \r
520  mesh )</p>\r
521 \r
522 <p class="whs1">&nbsp;</p>\r
523 \r
524 <p class="whs2"># create a group by adding \r
525  elements with area &gt; 20</p>\r
526 \r
527 <p class="whs1">aGroup1 = mesh.CreateGroup( \r
528  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
529 \r
530 <p class="whs1">aGroup1.Add( anIds \r
531  )</p>\r
532 \r
533 <p class="whs1">&nbsp;</p>\r
534 \r
535 <p class="whs1">print &quot;Criterion: \r
536  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
537 \r
538 <p class="whs1">for i in range( \r
539  len( anIds ) ):</p>\r
540 \r
541 <p class="whs1">&nbsp;&nbsp;print \r
542  anIds[ i ]</p>\r
543 \r
544 <p class="whs1">&nbsp;</p>\r
545 \r
546 <p class="whs2"># Criterion : AREA = 20</p>\r
547 \r
548 <p class="whs2">&nbsp;</p>\r
549 \r
550 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
551 \r
552 <p class="whs1">aPredicate = aFilterMgr.CreateEqualTo()</p>\r
553 \r
554 <p class="whs1">aPredicate.SetNumFunctor( \r
555  aFunctor )</p>\r
556 \r
557 <p class="whs1">aPredicate.SetMargin( \r
558  20 )</p>\r
559 \r
560 <p class="whs1">&nbsp;</p>\r
561 \r
562 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
563 \r
564 <p class="whs1">aFilter.SetPredicate( \r
565  aPredicate )</p>\r
566 \r
567 <p class="whs1">&nbsp;</p>\r
568 \r
569 <p class="whs1">anIds = aFilter.GetElementsId( \r
570  mesh )</p>\r
571 \r
572 <p class="whs2">&nbsp;</p>\r
573 \r
574 <p class="whs2"># create a group by adding \r
575  elements with area &gt; 20</p>\r
576 \r
577 <p class="whs1">aGroup2 = mesh.CreateGroup( \r
578  SMESH.FACE, &quot;Area = 20&quot; )</p>\r
579 \r
580 <p class="whs1">aGroup2.Add( anIds \r
581  )</p>\r
582 \r
583 <p class="whs1">&nbsp;</p>\r
584 \r
585 <p class="whs1">print &quot;Criterion: \r
586  Area = 20 Nb = &quot;, len( anIds )</p>\r
587 \r
588 <p class="whs1">for i in range( \r
589  len( anIds ) ):</p>\r
590 \r
591 <p class="whs1">&nbsp;&nbsp;print \r
592  anIds[ i ]</p>\r
593 \r
594 <p class="whs2">&nbsp;</p>\r
595 \r
596 <p class="whs2"># create union group : \r
597  area &gt;= 20</p>\r
598 \r
599 <p class="whs1">aGroup3 = mesh.UnionGroups(aGroup1, \r
600  aGroup2, &quot;Area &gt;= 20&quot;)</p>\r
601 \r
602 <p class="whs1">print &quot;Criterion: \r
603  Area &gt;= 20 Nb = &quot;, len( aGroup3.GetListOfID() )</p>\r
604 \r
605 <p class="whs1">&nbsp;</p>\r
606 \r
607 <p class="whs2"># Criterion : AREA &lt; \r
608  20</p>\r
609 \r
610 <p class="whs2">&nbsp;</p>\r
611 \r
612 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
613 \r
614 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
615 \r
616 <p class="whs1">aPredicate.SetNumFunctor( \r
617  aFunctor )</p>\r
618 \r
619 <p class="whs1">aPredicate.SetMargin( \r
620  20 )</p>\r
621 \r
622 <p class="whs1">&nbsp;</p>\r
623 \r
624 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
625 \r
626 <p class="whs1">aFilter.SetPredicate( \r
627  aPredicate )</p>\r
628 \r
629 <p class="whs1">&nbsp;</p>\r
630 \r
631 <p class="whs1">anIds = aFilter.GetElementsId( \r
632  mesh )</p>\r
633 \r
634 <p class="whs1">&nbsp;</p>\r
635 \r
636 <p class="whs2"># create a group by adding \r
637  elements with area &lt; 20</p>\r
638 \r
639 <p class="whs1">aGroup4 = mesh.CreateGroup( \r
640  SMESH.FACE, &quot;Area &lt; 20&quot; )</p>\r
641 \r
642 <p class="whs1">aGroup4.Add( anIds \r
643  )</p>\r
644 \r
645 <p class="whs1">&nbsp;</p>\r
646 \r
647 <p class="whs1">print &quot;Criterion: \r
648  Area &lt; 20 Nb = &quot;, len( anIds )</p>\r
649 \r
650 <p class="whs1">for i in range( \r
651  len( anIds ) ):</p>\r
652 \r
653 <p class="whs1">&nbsp;&nbsp;print \r
654  anIds[ i ]</p>\r
655 \r
656 <p class="whs2">&nbsp;&nbsp;</p>\r
657 \r
658 <p class="whs2"># create union group : \r
659  area &gt;= 20 and area &lt; 20</p>\r
660 \r
661 <p class="whs1">aGroup5 = mesh.UnionGroups(aGroup3, \r
662  aGroup4, &quot;Any Area&quot;)</p>\r
663 \r
664 <p class="whs1">print &quot;Criterion: \r
665  Any Area Nb = &quot;, len( aGroup5.GetListOfID() )</p>\r
666 \r
667 <p class="whs1">&nbsp;</p>\r
668 \r
669 <p class="whs1">salome.sg.updateObjBrowser(1) \r
670  </p>\r
671 \r
672 <p class="whs1">&nbsp;</p>\r
673 \r
674 <p class="whs1"><img src="pics/union_groups1.png" x-maintain-ratio="TRUE" width="394px" height="425px" border="0" class="img_whs6"></p>\r
675 \r
676 <p class="whs1">&nbsp;</p>\r
677 \r
678 <p class="whs1"><img src="pics/union_groups2.png" x-maintain-ratio="TRUE" width="368px" height="379px" border="0" class="img_whs7"> <img src="pics/union_groups3.png" x-maintain-ratio="TRUE" width="344px" height="381px" border="0" class="img_whs8"></p>\r
679 \r
680 <p class="whs1">&nbsp;</p>\r
681 \r
682 <h3><a name=bookmark3>Intersection of two groups</a></h3>\r
683 \r
684 <p class="whs1">import SMESH</p>\r
685 \r
686 <p class="whs1">import SMESH_mechanic</p>\r
687 \r
688 <p class="whs1">&nbsp;</p>\r
689 \r
690 <p class="whs1">smesh &nbsp;= \r
691  SMESH_mechanic.smesh</p>\r
692 \r
693 <p class="whs1">mesh &nbsp;&nbsp;= \r
694  SMESH_mechanic.mesh</p>\r
695 \r
696 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
697 \r
698 <p class="whs1">&nbsp;</p>\r
699 \r
700 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
701 \r
702 <p class="whs1">&nbsp;</p>\r
703 \r
704 <p class="whs2"># Criterion : AREA &gt; \r
705  20</p>\r
706 \r
707 <p class="whs2">&nbsp;</p>\r
708 \r
709 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
710 \r
711 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
712 \r
713 <p class="whs1">aPredicate.SetNumFunctor( \r
714  aFunctor )</p>\r
715 \r
716 <p class="whs1">aPredicate.SetMargin( \r
717  20 )</p>\r
718 \r
719 <p class="whs1">&nbsp;</p>\r
720 \r
721 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
722 \r
723 <p class="whs1">aFilter.SetPredicate( \r
724  aPredicate )</p>\r
725 \r
726 <p class="whs1">&nbsp;</p>\r
727 \r
728 <p class="whs1">anIds = aFilter.GetElementsId( \r
729  mesh )</p>\r
730 \r
731 <p class="whs1">&nbsp;</p>\r
732 \r
733 <p class="whs2"># create a group by adding \r
734  elements with area &gt; 20</p>\r
735 \r
736 <p class="whs1">aGroup1 = mesh.CreateGroup( \r
737  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
738 \r
739 <p class="whs1">aGroup1.Add( anIds \r
740  )</p>\r
741 \r
742 <p class="whs1">&nbsp;</p>\r
743 \r
744 <p class="whs1">print &quot;Criterion: \r
745  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
746 \r
747 <p class="whs1">for i in range( \r
748  len( anIds ) ):</p>\r
749 \r
750 <p class="whs1">&nbsp;&nbsp;print \r
751  anIds[ i ]</p>\r
752 \r
753 <p class="whs1">&nbsp;</p>\r
754 \r
755 <p class="whs2"># Criterion : AREA &lt; \r
756  60</p>\r
757 \r
758 <p class="whs2">&nbsp;</p>\r
759 \r
760 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
761 \r
762 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
763 \r
764 <p class="whs1">aPredicate.SetNumFunctor( \r
765  aFunctor )</p>\r
766 \r
767 <p class="whs1">aPredicate.SetMargin( \r
768  60 )</p>\r
769 \r
770 <p class="whs1">&nbsp;</p>\r
771 \r
772 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
773 \r
774 <p class="whs1">aFilter.SetPredicate( \r
775  aPredicate )</p>\r
776 \r
777 <p class="whs1">&nbsp;</p>\r
778 \r
779 <p class="whs1">anIds = aFilter.GetElementsId( \r
780  mesh )</p>\r
781 \r
782 <p class="whs1">&nbsp;</p>\r
783 \r
784 <p class="whs2"># create a group by adding \r
785  elements with area &lt; 60</p>\r
786 \r
787 <p class="whs1">aGroup2 = mesh.CreateGroup( \r
788  SMESH.FACE, &quot;Area &lt; 60&quot; )</p>\r
789 \r
790 <p class="whs1">aGroup2.Add( anIds \r
791  )</p>\r
792 \r
793 <p class="whs1">&nbsp;</p>\r
794 \r
795 <p class="whs1">print &quot;Criterion: \r
796  Area &lt; 60 Nb = &quot;, len( anIds )</p>\r
797 \r
798 <p class="whs1">for i in range( \r
799  len( anIds ) ):</p>\r
800 \r
801 <p class="whs1">&nbsp;&nbsp;print \r
802  anIds[ i ]</p>\r
803 \r
804 <p class="whs2">&nbsp;&nbsp;</p>\r
805 \r
806 <p class="whs2"># create an intersection \r
807  of groups : 20 &lt; area &lt; 60</p>\r
808 \r
809 <p class="whs1">aGroup3 = mesh.IntersectGroups(aGroup1, \r
810  aGroup2, &quot;20 &lt; Area &lt; 60&quot;)</p>\r
811 \r
812 <p class="whs1">print &quot;Criterion: \r
813  20 &lt; Area &lt; 60 Nb = &quot;, len( aGroup3.GetListOfID() )</p>\r
814 \r
815 <p class="whs1">&nbsp;</p>\r
816 \r
817 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">salome.sg.updateObjBrowser(1)</span> \r
818  </p>\r
819 \r
820 <p class="whs2">&nbsp;</p>\r
821 \r
822 <p class="whs2"><img src="pics/intersect_groups1.png" x-maintain-ratio="TRUE" width="314px" height="351px" border="0" class="img_whs9"> &nbsp;<img src="pics/intersect_groups2.png" x-maintain-ratio="TRUE" width="319px" height="351px" border="0" class="img_whs10"> &nbsp;<img src="pics/intersect_groups3.png" x-maintain-ratio="TRUE" width="304px" height="352px" border="0" class="img_whs11"></p>\r
823 \r
824 <h3><a name=bookmark4>Cut of two groups</a></h3>\r
825 \r
826 <p class="whs1">import SMESH</p>\r
827 \r
828 <p class="whs1">import SMESH_mechanic</p>\r
829 \r
830 <p class="whs1">&nbsp;</p>\r
831 \r
832 <p class="whs1">smesh &nbsp;= \r
833  SMESH_mechanic.smesh</p>\r
834 \r
835 <p class="whs1">mesh &nbsp;&nbsp;= \r
836  SMESH_mechanic.mesh</p>\r
837 \r
838 <p class="whs1">salome = SMESH_mechanic.salome</p>\r
839 \r
840 <p class="whs1">&nbsp;</p>\r
841 \r
842 <p class="whs1">aFilterMgr = smesh.CreateFilterManager()</p>\r
843 \r
844 <p class="whs1">&nbsp;</p>\r
845 \r
846 <p class="whs2"># Criterion : AREA &gt; \r
847  20</p>\r
848 \r
849 <p class="whs2">&nbsp;</p>\r
850 \r
851 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
852 \r
853 <p class="whs1">aPredicate = aFilterMgr.CreateMoreThan()</p>\r
854 \r
855 <p class="whs1">aPredicate.SetNumFunctor( \r
856  aFunctor )</p>\r
857 \r
858 <p class="whs1">aPredicate.SetMargin( \r
859  20 )</p>\r
860 \r
861 <p class="whs1">&nbsp;</p>\r
862 \r
863 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
864 \r
865 <p class="whs1">aFilter.SetPredicate( \r
866  aPredicate )</p>\r
867 \r
868 <p class="whs1">&nbsp;</p>\r
869 \r
870 <p class="whs1">anIds = aFilter.GetElementsId( \r
871  mesh )</p>\r
872 \r
873 <p class="whs1">&nbsp;</p>\r
874 \r
875 <p class="whs2"># create a group by adding \r
876  elements with area &gt; 20</p>\r
877 \r
878 <p class="whs1">aGroupMain = mesh.CreateGroup( \r
879  SMESH.FACE, &quot;Area &gt; 20&quot; )</p>\r
880 \r
881 <p class="whs1">aGroupMain.Add( \r
882  anIds )</p>\r
883 \r
884 <p class="whs1">&nbsp;</p>\r
885 \r
886 <p class="whs1">print &quot;Criterion: \r
887  Area &gt; 20 Nb = &quot;, len( anIds )</p>\r
888 \r
889 <p class="whs1">for i in range( \r
890  len( anIds ) ):</p>\r
891 \r
892 <p class="whs1">&nbsp;&nbsp;print \r
893  anIds[ i ]</p>\r
894 \r
895 <p class="whs1">&nbsp;</p>\r
896 \r
897 <p class="whs2"># Criterion : AREA &lt; \r
898  60</p>\r
899 \r
900 <p class="whs2">&nbsp;</p>\r
901 \r
902 <p class="whs1">aFunctor = aFilterMgr.CreateArea()</p>\r
903 \r
904 <p class="whs1">aPredicate = aFilterMgr.CreateLessThan()</p>\r
905 \r
906 <p class="whs1">aPredicate.SetNumFunctor( \r
907  aFunctor )</p>\r
908 \r
909 <p class="whs1">aPredicate.SetMargin( \r
910  60 )</p>\r
911 \r
912 <p class="whs1">&nbsp;</p>\r
913 \r
914 <p class="whs1">aFilter = aFilterMgr.CreateFilter()</p>\r
915 \r
916 <p class="whs1">aFilter.SetPredicate( \r
917  aPredicate )</p>\r
918 \r
919 <p class="whs1">&nbsp;</p>\r
920 \r
921 <p class="whs1">anIds = aFilter.GetElementsId( \r
922  mesh )</p>\r
923 \r
924 <p class="whs1">&nbsp;</p>\r
925 \r
926 <p class="whs2"># create a group by adding \r
927  elements with area &lt; 60</p>\r
928 \r
929 <p class="whs1">aGroupTool = mesh.CreateGroup( \r
930  SMESH.FACE, &quot;Area &lt; 60&quot; )</p>\r
931 \r
932 <p class="whs1">aGroupTool.Add( \r
933  anIds )</p>\r
934 \r
935 <p class="whs1">&nbsp;</p>\r
936 \r
937 <p class="whs1">print &quot;Criterion: \r
938  Area &lt; 60 Nb = &quot;, len( anIds )</p>\r
939 \r
940 <p class="whs1">for i in range( \r
941  len( anIds ) ):</p>\r
942 \r
943 <p class="whs1">&nbsp;&nbsp;print \r
944  anIds[ i ]</p>\r
945 \r
946 <p class="whs2">&nbsp;&nbsp;</p>\r
947 \r
948 <p class="whs2"># create an intersection \r
949  of groups : area &gt;= 60</p>\r
950 \r
951 <p class="whs1">aGroupRes = mesh.CutGroups(aGroupMain, \r
952  aGroupTool, &quot;Area &gt;= 60&quot;)</p>\r
953 \r
954 <p class="whs1">print &quot;Criterion: \r
955  Area &gt;= 60 Nb = &quot;, len( aGroupRes.GetListOfID() )</p>\r
956 \r
957 <p class="whs1">&nbsp;</p>\r
958 \r
959 <p class="whs1">salome.sg.updateObjBrowser(1) \r
960  </p>\r
961 \r
962 <p class="whs1">&nbsp;</p>\r
963 \r
964 <p class="whs2"><img src="pics/cut_groups1.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs12"> &nbsp;<img src="pics/cut_groups2.png" x-maintain-ratio="TRUE" width="318px" height="355px" border="0" class="img_whs13"> &nbsp;<img src="pics/cut_groups3.png" x-maintain-ratio="TRUE" width="320px" height="354px" border="0" class="img_whs14"></p>\r
965 \r
966 <script type="text/javascript" language="javascript1.2">\r
967 <!--\r
968 if (window.writeIntopicBar)\r
969         writeIntopicBar(0);\r
970 //-->\r
971 </script>\r
972 </body>\r
973 </html>\r