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