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