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