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