Salome HOME
3fe7884bdff4f6e525a0f0d2e5550a7279c5e344
[modules/smesh.git] / doc / salome / gui / SMESH / defining_hypotheses_tui.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>Defining hypotheses TUI</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>\r
9 <!--\r
10 P { margin-top:0pt; margin-bottom:0pt; }\r
11 LI.kadov-P {  }\r
12 -->\r
13 </style><style type="text/css">\r
14 <!--\r
15 p.whs1 { font-weight:bold; }\r
16 p.whs2 { font-family:'Lucida Console' , monospace; }\r
17 p.whs3 { font-family:'Times New Roman' , serif; }\r
18 p.whs4 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
19 p.whs5 { margin-top:0pt; margin-bottom:0pt; font-family:'Times New Roman' , serif; }\r
20 p.whs6 { margin-top:0pt; margin-bottom:0pt; }\r
21 -->\r
22 </style><script type="text/javascript" language="JavaScript">\r
23 <!--\r
24 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
25 {\r
26   var strNSS = "<style type='text/css'>";\r
27   strNSS += "p.whs4 {margin-top:1pt;margin-bottom:1pt; }";\r
28   strNSS += "p.whs5 {margin-top:1pt;margin-bottom:1pt; }";\r
29   strNSS += "p.whs6 {margin-top:1pt;margin-bottom:1pt; }";\r
30   strNSS +="</style>";\r
31   document.write(strNSS);\r
32 }\r
33 //-->\r
34 </script>\r
35 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
36 <!--\r
37 function reDo() {\r
38   if (innerWidth != origWidth || innerHeight != origHeight)\r
39      location.reload();\r
40 }\r
41 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
42         origWidth = innerWidth;\r
43         origHeight = innerHeight;\r
44         onresize = reDo;\r
45 }\r
46 onerror = null; \r
47 //-->\r
48 </script>\r
49 <style type="text/css">\r
50 <!--\r
51 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
52 p.WebHelpNavBar { text-align:right; }\r
53 -->\r
54 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
55 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
56 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
57 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
58 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
59 <script type="text/javascript" language="javascript1.2">\r
60 <!--\r
61 if (window.gbWhTopic)\r
62 {\r
63         if (window.setRelStartPage)\r
64         {\r
65         addTocInfo("MESH module\nTUI Scripts\nDefining Hypotheses");\r
66 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
67 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
68 \r
69         }\r
70 \r
71 \r
72         if (window.setRelStartPage)\r
73         {\r
74         setRelStartPage("index.htm");\r
75 \r
76                 autoSync(1);\r
77                 sendSyncInfo();\r
78                 sendAveInfoOut();\r
79         }\r
80 \r
81 }\r
82 else\r
83         if (window.gbIE4)\r
84                 document.location.reload();\r
85 //-->\r
86 </script>\r
87 </head>\r
88 <body><script type="text/javascript" language="javascript1.2">\r
89 <!--\r
90 if (window.writeIntopicBar)\r
91         writeIntopicBar(4);\r
92 //-->\r
93 </script>\r
94 <h1>Defining Hypotheses and Algorithms</h1>\r
95 \r
96 <h3>Defining 1D Hypotheses</h3>\r
97 \r
98 <p class="whs1"><a name=bookmark>1D Arithmetic</a></p>\r
99 \r
100 <p>&nbsp;</p>\r
101 \r
102 <p class="whs2">from geompy import \r
103  *</p>\r
104 \r
105 <p class="whs2">import smesh</p>\r
106 \r
107 <p>&nbsp;</p>\r
108 \r
109 <p># create vertices</p>\r
110 \r
111 <p class="whs2">Point111 = MakeVertex( \r
112  0, &nbsp;0, &nbsp;0)</p>\r
113 \r
114 <p class="whs2">Point211 = MakeVertex(10, \r
115  &nbsp;0, &nbsp;0)</p>\r
116 \r
117 <p class="whs2">Point121 = MakeVertex( \r
118  0, 10, &nbsp;0)</p>\r
119 \r
120 <p class="whs2">Point221 = MakeVertex(10, \r
121  10, &nbsp;0)</p>\r
122 \r
123 <p class="whs2">Point112 = MakeVertex( \r
124  0, &nbsp;0, 10)</p>\r
125 \r
126 <p class="whs2">Point212 = MakeVertex(10, \r
127  &nbsp;0, 10)</p>\r
128 \r
129 <p class="whs2">Point122 = MakeVertex( \r
130  0, 10, 10)</p>\r
131 \r
132 <p class="whs2">Point222 = MakeVertex(10, \r
133  10, 10)</p>\r
134 \r
135 <p>&nbsp;</p>\r
136 \r
137 <p># create edges</p>\r
138 \r
139 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
140  Point211)</p>\r
141 \r
142 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
143  Point221)</p>\r
144 \r
145 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
146  Point212)</p>\r
147 \r
148 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
149  Point222)</p>\r
150 \r
151 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
152  Point121)</p>\r
153 \r
154 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
155  Point221)</p>\r
156 \r
157 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
158  Point122)</p>\r
159 \r
160 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
161  Point222)</p>\r
162 \r
163 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
164  Point112)</p>\r
165 \r
166 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
167  Point212)</p>\r
168 \r
169 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
170  Point122)</p>\r
171 \r
172 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
173  Point222)</p>\r
174 \r
175 <p>&nbsp;</p>\r
176 \r
177 <p># create faces</p>\r
178 \r
179 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
180  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
181 \r
182 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
183  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
184 \r
185 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
186  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
187 \r
188 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
189  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
190 \r
191 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
192  EdgeY11, EdgeX121, EdgeY21)</p>\r
193 \r
194 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
195  EdgeY12, EdgeX122, EdgeY22)</p>\r
196 \r
197 <p>&nbsp;</p>\r
198 \r
199 <p># create a solid</p>\r
200 \r
201 <p class="whs2">Block = MakeHexa(FaceX11, \r
202  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
203 \r
204 <p>&nbsp;</p>\r
205 \r
206 <p># create a compound</p>\r
207 \r
208 <p class="whs2">box = MakeCompound([Block])</p>\r
209 \r
210 <p>&nbsp;</p>\r
211 \r
212 <p># add in the study</p>\r
213 \r
214 <p class="whs2">box_id = addToStudy(box, \r
215  &quot;Box compound&quot;)</p>\r
216 \r
217 <p>&nbsp;</p>\r
218 \r
219 <p># create a hexahedral mesh on the box</p>\r
220 \r
221 <p class="whs2">hexa = smesh.Mesh(box, \r
222  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
223 \r
224 <p class="whs2">algo = hexa.Segment()</p>\r
225 \r
226 <p>&nbsp;</p>\r
227 \r
228 <p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a \r
229  fixed number of segments</p>\r
230 \r
231 <p class="whs2">algo.NumberOfSegments(4)</p>\r
232 \r
233 <p>&nbsp;</p>\r
234 \r
235 <p># create a quadrangle 2D algorithm for faces</p>\r
236 \r
237 <p class="whs2">hexa.Quadrangle()</p>\r
238 \r
239 <p>&nbsp;</p>\r
240 \r
241 <p># create a hexahedron 3D algorithm for solids</p>\r
242 \r
243 <p class="whs2">hexa.Hexahedron()</p>\r
244 \r
245 <p>&nbsp;</p>\r
246 \r
247 <p># create a local hypothesis</p>\r
248 \r
249 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
250 \r
251 <p>&nbsp;</p>\r
252 \r
253 <p># define &quot;Arithmetic1D&quot; hypothesis to cut an edge in several \r
254  segments with arithmetic length increasing</p>\r
255 \r
256 <p class="whs2">algo.Arithmetic1D(1, \r
257  4)</p>\r
258 \r
259 <p>&nbsp;</p>\r
260 \r
261 <p># define &quot;Propagation&quot; hypothesis that propagates all other \r
262  hypothesis on all edges on the opposite side in case of quadrangular faces</p>\r
263 \r
264 <p class="whs2">algo.Propagation()</p>\r
265 \r
266 <p>&nbsp;</p>\r
267 \r
268 <p># compute the mesh</p>\r
269 \r
270 <p class="whs2">hexa.Compute() </p>\r
271 \r
272 <p class="whs2">&nbsp;</p>\r
273 \r
274 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>\r
275 \r
276 <p class="whs2">&nbsp;</p>\r
277 \r
278 <p class="whs2">import smesh</p>\r
279 \r
280 <p class="whs2">import geompy</p>\r
281 \r
282 <p class="whs2">import salome</p>\r
283 \r
284 <p class="whs2">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>\r
285 \r
286 <p class="whs2">&nbsp;</p>\r
287 \r
288 <p class="whs3"># create vertices</p>\r
289 \r
290 <p class="whs2">px &nbsp;&nbsp;= \r
291  geompy.MakeVertex(100., 0. &nbsp;, \r
292  0. &nbsp;)</p>\r
293 \r
294 <p class="whs2">py &nbsp;&nbsp;= \r
295  geompy.MakeVertex(0. &nbsp;, \r
296  100., 0. &nbsp;)</p>\r
297 \r
298 <p class="whs2">pz &nbsp;&nbsp;= \r
299  geompy.MakeVertex(0. &nbsp;, \r
300  0. &nbsp;, 100.)</p>\r
301 \r
302 <p class="whs2">&nbsp;</p>\r
303 \r
304 <p class="whs3"># create a vector from \r
305  two points</p>\r
306 \r
307 <p class="whs2">vxy = geompy.MakeVector(px, \r
308  py)</p>\r
309 \r
310 <p class="whs2">&nbsp;</p>\r
311 \r
312 <p class="whs3"># create an arc from \r
313  three points</p>\r
314 \r
315 <p class="whs2">arc = geompy.MakeArc(py, \r
316  pz, px)</p>\r
317 \r
318 <p class="whs2">&nbsp;</p>\r
319 \r
320 <p class="whs3"># create a wire</p>\r
321 \r
322 <p class="whs2">wire = geompy.MakeWire([vxy, \r
323  arc])</p>\r
324 \r
325 <p class="whs2">isPlanarFace = 1</p>\r
326 \r
327 <p class="whs2">&nbsp;</p>\r
328 \r
329 <p class="whs3"># create a face from \r
330  the wire</p>\r
331 \r
332 <p class="whs2">face1 = geompy.MakeFace(wire, \r
333  isPlanarFace)</p>\r
334 \r
335 <p class="whs2">&nbsp;</p>\r
336 \r
337 <p class="whs3"><span style="font-family: 'Times New Roman', serif;"># \r
338  get edges from the face</span></p>\r
339 \r
340 <p class="whs2">vxy,arc = geompy.SubShapeAll(face1,geompy.ShapeType[&quot;EDGE&quot;])</p>\r
341 \r
342 <p class="whs3">&nbsp;</p>\r
343 \r
344 <p class="whs3"># add objects in the \r
345  study</p>\r
346 \r
347 <p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
348 \r
349 <p class="whs2">id_arc = geompy.addToStudyInFather(face1,arc,&quot;Arc \r
350  Edge&quot;)</p>\r
351 \r
352 <p class="whs2">&nbsp;</p>\r
353 \r
354 <p class="whs3"># display faces</p>\r
355 \r
356 <p class="whs2">gg.createAndDisplayGO(id_face1)</p>\r
357 \r
358 <p class="whs2">gg.setDisplayMode(id_face1,1)</p>\r
359 \r
360 <p class="whs2">gg.setTransparency(id_face1,0.2)</p>\r
361 \r
362 <p class="whs2">&nbsp;</p>\r
363 \r
364 <p class="whs3"># create hexahedral mesh</p>\r
365 \r
366 <p class="whs2">hexa = smesh.Mesh(face1, \r
367  &quot;Face compound : hexahedrical mesh&quot;)</p>\r
368 \r
369 <p class="whs2">algo = hexa.Triangle()</p>\r
370 \r
371 <p class="whs2">&nbsp;</p>\r
372 \r
373 <p class="whs3"># define &quot;MaxElementArea&quot; \r
374  hypothesis</p>\r
375 \r
376 <p class="whs2">algo.MaxElementArea(30)</p>\r
377 \r
378 <p class="whs2">&nbsp;</p>\r
379 \r
380 <p class="whs3"># create a local hypothesis \r
381  on the wire</p>\r
382 \r
383 <p class="whs2">algo = hexa.Segment(wire)</p>\r
384 \r
385 <p class="whs2">&nbsp;</p>\r
386 \r
387 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
388  hypothesis to cut a straight edge in a fixed number of segments</p>\r
389 \r
390 <p class="whs2">algo.NumberOfSegments(6)</p>\r
391 \r
392 <p class="whs2">&nbsp;</p>\r
393 \r
394 <p class="whs3"># define a local &quot;Deflection1D&quot; \r
395  hypothesis on the arc</p>\r
396 \r
397 <p class="whs2">algo = hexa.Segment(arc)</p>\r
398 \r
399 <p class="whs2">algo.Deflection1D(1)</p>\r
400 \r
401 <p class="whs2">&nbsp;</p>\r
402 \r
403 <p class="whs2">&nbsp;</p>\r
404 \r
405 <p class="whs3"># compute the mesh</p>\r
406 \r
407 <p class="whs2">hexa.Compute() </p>\r
408 \r
409 <p>&nbsp;</p>\r
410 \r
411 <h4><a name=bookmark2>Start and End Length</a></h4>\r
412 \r
413 <p class="whs2">from geompy import \r
414  *</p>\r
415 \r
416 <p class="whs2">import smesh</p>\r
417 \r
418 <p>&nbsp;</p>\r
419 \r
420 <p># create vertices</p>\r
421 \r
422 <p class="whs2">Point111 = MakeVertex( \r
423  0, &nbsp;0, &nbsp;0)</p>\r
424 \r
425 <p class="whs2">Point211 = MakeVertex(10, \r
426  &nbsp;0, &nbsp;0)</p>\r
427 \r
428 <p class="whs2">Point121 = MakeVertex( \r
429  0, 10, &nbsp;0)</p>\r
430 \r
431 <p class="whs2">Point221 = MakeVertex(10, \r
432  10, &nbsp;0)</p>\r
433 \r
434 <p class="whs2">Point112 = MakeVertex( \r
435  0, &nbsp;0, 10)</p>\r
436 \r
437 <p class="whs2">Point212 = MakeVertex(10, \r
438  &nbsp;0, 10)</p>\r
439 \r
440 <p class="whs2">Point122 = MakeVertex( \r
441  0, 10, 10)</p>\r
442 \r
443 <p class="whs2">Point222 = MakeVertex(10, \r
444  10, 10)</p>\r
445 \r
446 <p>&nbsp;</p>\r
447 \r
448 <p># create edges</p>\r
449 \r
450 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
451  Point211)</p>\r
452 \r
453 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
454  Point221)</p>\r
455 \r
456 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
457  Point212)</p>\r
458 \r
459 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
460  Point222)</p>\r
461 \r
462 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
463  Point121)</p>\r
464 \r
465 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
466  Point221)</p>\r
467 \r
468 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
469  Point122)</p>\r
470 \r
471 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
472  Point222)</p>\r
473 \r
474 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
475  Point112)</p>\r
476 \r
477 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
478  Point212)</p>\r
479 \r
480 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
481  Point122)</p>\r
482 \r
483 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
484  Point222)</p>\r
485 \r
486 <p>&nbsp;</p>\r
487 \r
488 <p># create faces</p>\r
489 \r
490 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
491  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
492 \r
493 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
494  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
495 \r
496 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
497  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
498 \r
499 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
500  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
501 \r
502 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
503  EdgeY11, EdgeX121, EdgeY21)</p>\r
504 \r
505 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
506  EdgeY12, EdgeX122, EdgeY22)</p>\r
507 \r
508 <p>&nbsp;</p>\r
509 \r
510 <p># create a solid</p>\r
511 \r
512 <p class="whs2">Block = MakeHexa(FaceX11, \r
513  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
514 \r
515 <p>&nbsp;</p>\r
516 \r
517 <p># create a compound</p>\r
518 \r
519 <p class="whs2">box = MakeCompound([Block])</p>\r
520 \r
521 <p>&nbsp;</p>\r
522 \r
523 <p># add in the study</p>\r
524 \r
525 <p class="whs2">box_id = addToStudy(box, \r
526  &quot;Box compound&quot;)</p>\r
527 \r
528 <p>&nbsp;</p>\r
529 \r
530 <p># create a hexahedral mesh on the box</p>\r
531 \r
532 <p class="whs2">hexa = smesh.Mesh(box, \r
533  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
534 \r
535 <p class="whs2">algo = hexa.Segment()</p>\r
536 \r
537 <p>&nbsp;</p>\r
538 \r
539 <p># define &quot;NumberOfSegments&quot; hypothesis to cut an edge in a \r
540  fixed number of segments</p>\r
541 \r
542 <p class="whs2">algo.NumberOfSegments(4)</p>\r
543 \r
544 <p>&nbsp;</p>\r
545 \r
546 <p># create a quadrangle 2D algorithm for faces</p>\r
547 \r
548 <p class="whs2">hexa.Quadrangle()</p>\r
549 \r
550 <p>&nbsp;</p>\r
551 \r
552 <p># create a hexahedron 3D algorithm for solids</p>\r
553 \r
554 <p class="whs2">hexa.Hexahedron()</p>\r
555 \r
556 <p>&nbsp;</p>\r
557 \r
558 <p># create a local hypothesis</p>\r
559 \r
560 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
561 \r
562 <p>&nbsp;</p>\r
563 \r
564 <p># define &quot;StartEndLength&quot; hypothesis to cut an edge in several \r
565  segments with increasing geometric length </p>\r
566 \r
567 <p class="whs2">algo.StartEndLength(1, \r
568  6)</p>\r
569 \r
570 <p>&nbsp;</p>\r
571 \r
572 <p># define &quot;Propagation&quot; hypothesis that propagates all other \r
573  hypothesis on all edges on the opposite side in case of quadrangular faces</p>\r
574 \r
575 <p class="whs2">algo.Propagation()</p>\r
576 \r
577 <p>&nbsp;</p>\r
578 \r
579 <p># compute the mesh</p>\r
580 \r
581 <p class="whs2">hexa.Compute() </p>\r
582 \r
583 <p class="whs2">&nbsp;</p>\r
584 \r
585 <h4><a name=bookmark3>Average Length</a></h4>\r
586 \r
587 <p class="whs2">from geompy import \r
588  *</p>\r
589 \r
590 <p class="whs2">import smesh</p>\r
591 \r
592 <p class="whs2">&nbsp;</p>\r
593 \r
594 <p class="whs3"># create vertices</p>\r
595 \r
596 <p class="whs2">Point111 = MakeVertex( \r
597  0, &nbsp;0, &nbsp;0)</p>\r
598 \r
599 <p class="whs2">Point211 = MakeVertex(10, \r
600  &nbsp;0, &nbsp;0)</p>\r
601 \r
602 <p class="whs2">Point121 = MakeVertex( \r
603  0, 10, &nbsp;0)</p>\r
604 \r
605 <p class="whs2">Point221 = MakeVertex(10, \r
606  10, &nbsp;0)</p>\r
607 \r
608 <p class="whs2">Point112 = MakeVertex( \r
609  0, &nbsp;0, 10)</p>\r
610 \r
611 <p class="whs2">Point212 = MakeVertex(10, \r
612  &nbsp;0, 10)</p>\r
613 \r
614 <p class="whs2">Point122 = MakeVertex( \r
615  0, 10, 10)</p>\r
616 \r
617 <p class="whs2">Point222 = MakeVertex(10, \r
618  10, 10)</p>\r
619 \r
620 <p class="whs2">&nbsp;</p>\r
621 \r
622 <p class="whs3"># create edges</p>\r
623 \r
624 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
625  Point211)</p>\r
626 \r
627 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
628  Point221)</p>\r
629 \r
630 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
631  Point212)</p>\r
632 \r
633 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
634  Point222)</p>\r
635 \r
636 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
637  Point121)</p>\r
638 \r
639 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
640  Point221)</p>\r
641 \r
642 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
643  Point122)</p>\r
644 \r
645 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
646  Point222)</p>\r
647 \r
648 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
649  Point112)</p>\r
650 \r
651 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
652  Point212)</p>\r
653 \r
654 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
655  Point122)</p>\r
656 \r
657 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
658  Point222)</p>\r
659 \r
660 <p class="whs2">&nbsp;</p>\r
661 \r
662 <p class="whs3"># create faces</p>\r
663 \r
664 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
665  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
666 \r
667 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
668  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
669 \r
670 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
671  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
672 \r
673 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
674  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
675 \r
676 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
677  EdgeY11, EdgeX121, EdgeY21)</p>\r
678 \r
679 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
680  EdgeY12, EdgeX122, EdgeY22)</p>\r
681 \r
682 <p class="whs2">&nbsp;</p>\r
683 \r
684 <p class="whs3"># create a solid</p>\r
685 \r
686 <p class="whs2">Block = MakeHexa(FaceX11, \r
687  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
688 \r
689 <p class="whs2">&nbsp;</p>\r
690 \r
691 <p class="whs3"># create a compound</p>\r
692 \r
693 <p class="whs2">box = MakeCompound([Block])</p>\r
694 \r
695 <p class="whs2">&nbsp;</p>\r
696 \r
697 <p class="whs3"># add in the study</p>\r
698 \r
699 <p class="whs2">box_id = addToStudy(box, \r
700  &quot;Box compound&quot;)</p>\r
701 \r
702 <p class="whs2">&nbsp;</p>\r
703 \r
704 <p class="whs3"># create a hexahedral \r
705  mesh on the box</p>\r
706 \r
707 <p class="whs2">hexa = smesh.Mesh(box, \r
708  &quot;Box compound : hexahedrical mesh&quot;)</p>\r
709 \r
710 <p class="whs2">algo = hexa.Segment()</p>\r
711 \r
712 <p class="whs2">&nbsp;</p>\r
713 \r
714 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
715  hypothesis to cut an edge in a fixed number of segments</p>\r
716 \r
717 <p class="whs2">algo.NumberOfSegments(4)</p>\r
718 \r
719 <p class="whs2">&nbsp;</p>\r
720 \r
721 <p class="whs3"># create a quadrangle \r
722  2D algorithm for faces</p>\r
723 \r
724 <p class="whs2">hexa.Quadrangle()</p>\r
725 \r
726 <p class="whs2">&nbsp;</p>\r
727 \r
728 <p class="whs3"># create a hexahedron \r
729  3D algorithm for solids</p>\r
730 \r
731 <p class="whs2">hexa.Hexahedron()</p>\r
732 \r
733 <p class="whs2">&nbsp;</p>\r
734 \r
735 <p class="whs3"># create a local hypothesis</p>\r
736 \r
737 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
738 \r
739 <p class="whs2">&nbsp;</p>\r
740 \r
741 <p class="whs3"># define &quot;LocalLength&quot; \r
742  hypothesis to cut an edge in several segments with the same length</p>\r
743 \r
744 <p class="whs2">algo.LocalLength(2)</p>\r
745 \r
746 <p class="whs2">&nbsp;</p>\r
747 \r
748 <p class="whs3"># define &quot;Propagation&quot; \r
749  hypothesis that propagates all other hypothesis on all edges on<span style="font-family: 'Times New Roman', serif;"> \r
750  the opposite side in case of quadrangular faces</span></p>\r
751 \r
752 <p class="whs2">algo.Propagation()</p>\r
753 \r
754 <p class="whs2">&nbsp;</p>\r
755 \r
756 <p class="whs3"># compute the mesh</p>\r
757 \r
758 <p class="whs2">hexa.Compute() </p>\r
759 \r
760 <p class="whs2">&nbsp;</p>\r
761 \r
762 <p class="whs2">&nbsp;</p>\r
763 \r
764 <h3>Defining 2D and 3D hypotheses</h3>\r
765 \r
766 <h4><a name=bookmark4>Maximum Element Area</a></h4>\r
767 \r
768 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
769  smesh</span></p>\r
770 \r
771 <p class="whs4">import geompy</p>\r
772 \r
773 <p class="whs4">import salome</p>\r
774 \r
775 <p class="whs4">&nbsp;</p>\r
776 \r
777 <p class="whs5"># create a face</p>\r
778 \r
779 <p class="whs4">px &nbsp;&nbsp;= \r
780  geompy.MakeVertex(100., 0. &nbsp;, \r
781  0. &nbsp;)</p>\r
782 \r
783 <p class="whs4">py &nbsp;&nbsp;= \r
784  geompy.MakeVertex(0. &nbsp;, \r
785  100., 0. &nbsp;)</p>\r
786 \r
787 <p class="whs4">pz &nbsp;&nbsp;= \r
788  geompy.MakeVertex(0. &nbsp;, \r
789  0. &nbsp;, 100.)</p>\r
790 \r
791 <p class="whs4">&nbsp;</p>\r
792 \r
793 <p class="whs4">vxy = geompy.MakeVector(px, \r
794  py)</p>\r
795 \r
796 <p class="whs4">arc = geompy.MakeArc(py, \r
797  pz, px)</p>\r
798 \r
799 <p class="whs4">wire = geompy.MakeWire([vxy, \r
800  arc])</p>\r
801 \r
802 <p class="whs4">&nbsp;</p>\r
803 \r
804 <p class="whs4">isPlanarFace = 1</p>\r
805 \r
806 <p class="whs4">face = geompy.MakeFace(wire, \r
807  isPlanarFace)</p>\r
808 \r
809 <p class="whs4">&nbsp;</p>\r
810 \r
811 <p class="whs5"># add the face in the \r
812  study</p>\r
813 \r
814 <p class="whs4">id_face = geompy.addToStudy(face, \r
815  &quot;Face to be meshed&quot;)</p>\r
816 \r
817 <p class="whs4">&nbsp;</p>\r
818 \r
819 <p class="whs5"># create a mesh</p>\r
820 \r
821 <p class="whs4">tria_mesh = smesh.Mesh(face, \r
822  &quot;Face : triangulation&quot;)</p>\r
823 \r
824 <p class="whs4">&nbsp;</p>\r
825 \r
826 <p class="whs5"># define 1D meshing:</p>\r
827 \r
828 <p class="whs4">algo = tria_mesh.Segment()</p>\r
829 \r
830 <p class="whs4">algo.NumberOfSegments(20)</p>\r
831 \r
832 <p class="whs4">&nbsp;</p>\r
833 \r
834 <p class="whs5"># define 2D meshing:</p>\r
835 \r
836 <p class="whs5">&nbsp;</p>\r
837 \r
838 <p class="whs5"># assign triangulation \r
839  algorithm</p>\r
840 \r
841 <p class="whs4">algo = tria_mesh.Triangle()</p>\r
842 \r
843 <p class="whs4">&nbsp;</p>\r
844 \r
845 <p class="whs5"># apply &quot;Max Element \r
846  Area&quot; hypothesis to each triangle</p>\r
847 \r
848 <p class="whs4">algo.MaxElementArea(100)</p>\r
849 \r
850 <p class="whs4">&nbsp;</p>\r
851 \r
852 <p class="whs5"># compute the mesh</p>\r
853 \r
854 <p class="whs4">tria_mesh.Compute() \r
855  &nbsp;</p>\r
856 \r
857 <p class="whs4">&nbsp;</p>\r
858 \r
859 <h4><a name=bookmark5>Maximum Element Volume</a></h4>\r
860 \r
861 <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
862 <br>&nbsp;\r
863 \r
864 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
865  salome</span></p>\r
866 \r
867 <p class="whs4">import geompy</p>\r
868 \r
869 <p class="whs4">import StdMeshers</p>\r
870 \r
871 <p class="whs4">import NETGENPlugin</p>\r
872 \r
873 <p class="whs4">&nbsp;</p>\r
874 \r
875 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
876  &quot;SMESH&quot;)</p>\r
877 \r
878 <p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
879 \r
880 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>\r
881 \r
882 <p class="whs4">&nbsp;</p>\r
883 \r
884 <p class="whs5"># create a box</p>\r
885 \r
886 <p class="whs4">box = geompy.MakeCylinderRH(30, \r
887  50) #MakeBox(0., 0., 0., </p>\r
888 \r
889 <p class="whs4">100., 200., 300.)</p>\r
890 \r
891 <p class="whs4">&nbsp;</p>\r
892 \r
893 <p class="whs5"># add the box in the \r
894  study</p>\r
895 \r
896 <p class="whs4">idbox = geompy.addToStudy(box, \r
897  &quot;box&quot;)</p>\r
898 \r
899 <p class="whs4">&nbsp;</p>\r
900 \r
901 <p class="whs5"># create a set of hypotheses</p>\r
902 \r
903 <p class="whs5">&nbsp;</p>\r
904 \r
905 <p class="whs5"># Number of Segments</p>\r
906 \r
907 <p class="whs4">numberOfSegments \r
908  = 7</p>\r
909 \r
910 <p class="whs4">hypNbSeg = smesh.CreateHypothesis(&quot;NumberOfSegments&quot;, \r
911  &quot;libStdMeshersEngine.so&quot;)</p>\r
912 \r
913 <p class="whs4">hypNbSeg.SetNumberOfSegments(numberOfSegments)</p>\r
914 \r
915 <p class="whs4">print hypNbSeg.GetName()</p>\r
916 \r
917 <p class="whs4">print hypNbSeg.GetNumberOfSegments()</p>\r
918 \r
919 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypNbSeg), \r
920  &quot;NumberOfSegments_7&quot;)</p>\r
921 \r
922 <p class="whs4">&nbsp;</p>\r
923 \r
924 <p class="whs5"># Max Element Area</p>\r
925 \r
926 <p class="whs4">maxElementArea = \r
927  800</p>\r
928 \r
929 <p class="whs4">hypArea = smesh.CreateHypothesis(&quot;MaxElementArea&quot;, \r
930  &quot;libStdMeshersEngine.so&quot;)</p>\r
931 \r
932 <p class="whs4">hypArea.SetMaxElementArea(maxElementArea)</p>\r
933 \r
934 <p class="whs4">print hypArea.GetName()</p>\r
935 \r
936 <p class="whs4">print hypArea.GetMaxElementArea()</p>\r
937 \r
938 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypArea), \r
939  &quot;MaxElementArea_800&quot;)</p>\r
940 \r
941 <p class="whs4">&nbsp;</p>\r
942 \r
943 <p class="whs5"># Max Element Volume</p>\r
944 \r
945 <p class="whs4">maxElementVolume \r
946  = 900</p>\r
947 \r
948 <p class="whs4">hypVolume = smesh.CreateHypothesis(&quot;MaxElementVolume&quot;, \r
949  &quot;libStdMeshersEngine.so&quot;)</p>\r
950 \r
951 <p class="whs4">hypVolume.SetMaxElementVolume(maxElementVolume)</p>\r
952 \r
953 <p class="whs4">print hypVolume.GetName()</p>\r
954 \r
955 <p class="whs4">print hypVolume.GetMaxElementVolume()</p>\r
956 \r
957 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hypVolume), \r
958  &quot;MaxElementVolume_900&quot;)</p>\r
959 \r
960 <p class="whs4">&nbsp;</p>\r
961 \r
962 <p class="whs5"># create a set of algorithms</p>\r
963 \r
964 <p class="whs5">&nbsp;</p>\r
965 \r
966 <p class="whs5"># Regular_1D</p>\r
967 \r
968 <p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
969  &quot;libStdMeshersEngine.so&quot;)</p>\r
970 \r
971 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), \r
972  &quot;Wire Discretisation&quot;)</p>\r
973 \r
974 <p class="whs4">&nbsp;</p>\r
975 \r
976 <p class="whs5"># MEFISTO_2D</p>\r
977 \r
978 <p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
979  &quot;libStdMeshersEngine.so&quot;)</p>\r
980 \r
981 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
982  &quot;MEFISTO_2D&quot;)</p>\r
983 \r
984 <p class="whs4">&nbsp;</p>\r
985 \r
986 <p class="whs5"># NETGEN_3D (Tetrahedron \r
987  meshing algorithm)</p>\r
988 \r
989 <p class="whs4">tetra3D = smesh.CreateHypothesis(&quot;NETGEN_3D&quot;, \r
990  &quot;libNETGENEngine.so&quot;)</p>\r
991 \r
992 <p class="whs4">smeshgui.SetName(salome.ObjectToID(tetra3D), \r
993  &quot;NETGEN_3D&quot;)</p>\r
994 \r
995 <p class="whs4">&nbsp;</p>\r
996 \r
997 <p class="whs5"># initialize a mesh \r
998  with the box</p>\r
999 \r
1000 <p class="whs4">mesh = smesh.CreateMesh(box)</p>\r
1001 \r
1002 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mesh), \r
1003  &quot;MeshBox&quot;)</p>\r
1004 \r
1005 <p class="whs4">&nbsp;</p>\r
1006 \r
1007 <p class="whs5"># add hypotheses and \r
1008  algorithms to the box</p>\r
1009 \r
1010 <p class="whs4">mesh.AddHypothesis(box,hypNbSeg)</p>\r
1011 \r
1012 <p class="whs4">mesh.AddHypothesis(box,hypArea)</p>\r
1013 \r
1014 <p class="whs4">mesh.AddHypothesis(box,hypVolume)</p>\r
1015 \r
1016 <p class="whs4">mesh.AddHypothesis(box,regular1D)</p>\r
1017 \r
1018 <p class="whs4">mesh.AddHypothesis(box,mefisto2D)</p>\r
1019 \r
1020 <p class="whs4">mesh.AddHypothesis(box,tetra3D)</p>\r
1021 \r
1022 <p class="whs4">&nbsp;</p>\r
1023 \r
1024 <p class="whs5"># compute the mesh</p>\r
1025 \r
1026 <p class="whs4">ret = smesh.Compute(mesh,box)</p>\r
1027 \r
1028 <p class="whs4">if ret == 0:</p>\r
1029 \r
1030 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
1031  &quot;probleme when computing the mesh&quot;</p>\r
1032 \r
1033 <p class="whs4">else:</p>\r
1034 \r
1035 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
1036  &quot;Computation succeded&quot;</p>\r
1037 \r
1038 <p class="whs4">salome.sg.updateObjBrowser(1) \r
1039  </p>\r
1040 \r
1041 <p class="whs4">&nbsp;</p>\r
1042 \r
1043 <h4><a name=bookmark6>Length from Edges</a></h4>\r
1044 \r
1045 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
1046  salome</span></p>\r
1047 \r
1048 <p class="whs2">import geompy</p>\r
1049 \r
1050 <p class="whs2">import smesh</p>\r
1051 \r
1052 <p class="whs2">&nbsp;</p>\r
1053 \r
1054 <p class="whs3"># create sketchers</p>\r
1055 \r
1056 <p class="whs2">sketcher1 = geompy.MakeSketcher(&quot;Sketcher:F \r
1057  0 0:TT 70 0:TT 70 70:TT 0 70:WW&quot;)</p>\r
1058 \r
1059 <p class="whs2">sketcher2 = geompy.MakeSketcher(&quot;Sketcher:F \r
1060  20 20:TT 50 20:TT 50 50:TT 20 50:WW&quot;)</p>\r
1061 \r
1062 <p class="whs2">isPlanarFace = 1</p>\r
1063 \r
1064 <p class="whs2">&nbsp;</p>\r
1065 \r
1066 <p class="whs3"># create a face from \r
1067  two wires</p>\r
1068 \r
1069 <p class="whs2">face1 = geompy.MakeFaces([sketcher1, \r
1070  sketcher2],isPlanarFace)</p>\r
1071 \r
1072 <p class="whs2">&nbsp;</p>\r
1073 \r
1074 <p class="whs3"># add object in the study</p>\r
1075 \r
1076 <p class="whs2">id_face1 = geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
1077 \r
1078 <p class="whs2">&nbsp;</p>\r
1079 \r
1080 <p class="whs3"># create a mesh</p>\r
1081 \r
1082 <p class="whs2">tria = smesh.Mesh(face1, \r
1083  &quot;Face : triangle 2D mesh&quot;)</p>\r
1084 \r
1085 <p class="whs2">&nbsp;</p>\r
1086 \r
1087 <p class="whs3"># Define 1D meshing</p>\r
1088 \r
1089 <p class="whs2">algo = tria.Segment()</p>\r
1090 \r
1091 <p class="whs2">algo.NumberOfSegments(2)</p>\r
1092 \r
1093 <p class="whs2">&nbsp;</p>\r
1094 \r
1095 <p class="whs3"># create and assign the \r
1096  algorithm for 2D meshing with triangles</p>\r
1097 \r
1098 <p class="whs2">algo = tria.Triangle()</p>\r
1099 \r
1100 <p class="whs2">&nbsp;</p>\r
1101 \r
1102 <p class="whs3"># create and assign &quot;LengthFromEdges&quot; \r
1103  hypothesis to build triangles </p>\r
1104 \r
1105 <p class="whs3"># based on the length \r
1106  of the edges taken from the wire</p>\r
1107 \r
1108 <p class="whs2">algo.LengthFromEdges()</p>\r
1109 \r
1110 <p class="whs2">&nbsp;</p>\r
1111 \r
1112 <p class="whs3"># compute the mesh</p>\r
1113 \r
1114 <p class="whs2">tria.Compute() </p>\r
1115 \r
1116 <p class="whs2">&nbsp;</p>\r
1117 \r
1118 <h3>Defining Additional Hypotheses</h3>\r
1119 \r
1120 <h4><a name=bookmark7>Propagation</a></h4>\r
1121 \r
1122 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from \r
1123  geompy import *</span></p>\r
1124 \r
1125 <p class="whs2">import smesh</p>\r
1126 \r
1127 <p class="whs2">&nbsp;</p>\r
1128 \r
1129 <p class="whs3"># create vertices</p>\r
1130 \r
1131 <p class="whs2">Point111 = MakeVertex( \r
1132  0, &nbsp;0, &nbsp;0)</p>\r
1133 \r
1134 <p class="whs2">Point211 = MakeVertex(10, \r
1135  &nbsp;0, &nbsp;0)</p>\r
1136 \r
1137 <p class="whs2">Point121 = MakeVertex( \r
1138  0, 10, &nbsp;0)</p>\r
1139 \r
1140 <p class="whs2">Point221 = MakeVertex(10, \r
1141  10, &nbsp;0)</p>\r
1142 \r
1143 <p class="whs2">Point112 = MakeVertex( \r
1144  0, &nbsp;0, 10)</p>\r
1145 \r
1146 <p class="whs2">Point212 = MakeVertex(10, \r
1147  &nbsp;0, 10)</p>\r
1148 \r
1149 <p class="whs2">Point122 = MakeVertex( \r
1150  0, 10, 10)</p>\r
1151 \r
1152 <p class="whs2">Point222 = MakeVertex(10, \r
1153  10, 10)</p>\r
1154 \r
1155 <p class="whs2">&nbsp;</p>\r
1156 \r
1157 <p class="whs3"># create edges</p>\r
1158 \r
1159 <p class="whs2">EdgeX111 = MakeEdge(Point111, \r
1160  Point211)</p>\r
1161 \r
1162 <p class="whs2">EdgeX121 = MakeEdge(Point121, \r
1163  Point221)</p>\r
1164 \r
1165 <p class="whs2">EdgeX112 = MakeEdge(Point112, \r
1166  Point212)</p>\r
1167 \r
1168 <p class="whs2">EdgeX122 = MakeEdge(Point122, \r
1169  Point222)</p>\r
1170 \r
1171 <p class="whs2">EdgeY11 = MakeEdge(Point111, \r
1172  Point121)</p>\r
1173 \r
1174 <p class="whs2">EdgeY21 = MakeEdge(Point211, \r
1175  Point221)</p>\r
1176 \r
1177 <p class="whs2">EdgeY12 = MakeEdge(Point112, \r
1178  Point122)</p>\r
1179 \r
1180 <p class="whs2">EdgeY22 = MakeEdge(Point212, \r
1181  Point222)</p>\r
1182 \r
1183 <p class="whs2">EdgeZ111 = MakeEdge(Point111, \r
1184  Point112)</p>\r
1185 \r
1186 <p class="whs2">EdgeZ211 = MakeEdge(Point211, \r
1187  Point212)</p>\r
1188 \r
1189 <p class="whs2">EdgeZ121 = MakeEdge(Point121, \r
1190  Point122)</p>\r
1191 \r
1192 <p class="whs2">EdgeZ221 = MakeEdge(Point221, \r
1193  Point222)</p>\r
1194 \r
1195 <p class="whs2">&nbsp;</p>\r
1196 \r
1197 <p class="whs3"># create faces</p>\r
1198 \r
1199 <p class="whs2">FaceX11 = MakeQuad(EdgeY11, \r
1200  EdgeZ111, EdgeY12, EdgeZ121)</p>\r
1201 \r
1202 <p class="whs2">FaceX21 = MakeQuad(EdgeY21, \r
1203  EdgeZ211, EdgeY22, EdgeZ221)</p>\r
1204 \r
1205 <p class="whs2">FaceY111 = MakeQuad(EdgeX111, \r
1206  EdgeZ111, EdgeX112, EdgeZ211)</p>\r
1207 \r
1208 <p class="whs2">FaceY121 = MakeQuad(EdgeX121, \r
1209  EdgeZ121, EdgeX122, EdgeZ221)</p>\r
1210 \r
1211 <p class="whs2">FaceZ11 = MakeQuad(EdgeX111, \r
1212  EdgeY11, EdgeX121, EdgeY21)</p>\r
1213 \r
1214 <p class="whs2">FaceZ12 = MakeQuad(EdgeX112, \r
1215  EdgeY12, EdgeX122, EdgeY22)</p>\r
1216 \r
1217 <p class="whs2">&nbsp;</p>\r
1218 \r
1219 <p class="whs3"># create a solid</p>\r
1220 \r
1221 <p class="whs2">box = MakeHexa(FaceX11, \r
1222  FaceX21, FaceY111, FaceY121, FaceZ11, FaceZ12)</p>\r
1223 \r
1224 <p class="whs2">&nbsp;</p>\r
1225 \r
1226 <p class="whs3"># add in the study</p>\r
1227 \r
1228 <p class="whs2">box_id = addToStudy(box, \r
1229  &quot;Box&quot;)</p>\r
1230 \r
1231 <p class="whs2">&nbsp;</p>\r
1232 \r
1233 <p class="whs3"># create a hexahedral \r
1234  mesh on the box</p>\r
1235 \r
1236 <p class="whs2">hexa = smesh.Mesh(box, \r
1237  &quot;Box : hexahedrical mesh&quot;)</p>\r
1238 \r
1239 <p class="whs2">&nbsp;</p>\r
1240 \r
1241 <p class="whs3"># create an 1D algorithm \r
1242  for edges</p>\r
1243 \r
1244 <p class="whs2">algo = hexa.Segment()</p>\r
1245 \r
1246 <p class="whs2">&nbsp;</p>\r
1247 \r
1248 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
1249  hypothesis to cut an edge in a fixed number of segments</p>\r
1250 \r
1251 <p class="whs2">algo.NumberOfSegments(4)</p>\r
1252 \r
1253 <p class="whs2">&nbsp;</p>\r
1254 \r
1255 <p class="whs3"># create a quadrangle \r
1256  2D algorithm for faces</p>\r
1257 \r
1258 <p class="whs2">hexa.Quadrangle()</p>\r
1259 \r
1260 <p class="whs2">&nbsp;</p>\r
1261 \r
1262 <p class="whs3"># create a hexahedron \r
1263  3D algorithm for solids</p>\r
1264 \r
1265 <p class="whs2">hexa.Hexahedron()</p>\r
1266 \r
1267 <p class="whs2">&nbsp;</p>\r
1268 \r
1269 <p class="whs3"># create a local hypothesis</p>\r
1270 \r
1271 <p class="whs2">algo = hexa.Segment(EdgeX111)</p>\r
1272 \r
1273 <p class="whs2">&nbsp;</p>\r
1274 \r
1275 <p class="whs3"># define &quot;Arithmetic1D&quot; \r
1276  hypothesis to cut an edge<span style="font-family: 'Times New Roman', serif;"> \r
1277  in several segments with increasing length</span></p>\r
1278 \r
1279 <p class="whs2">algo.Arithmetic1D(1, \r
1280  4)</p>\r
1281 \r
1282 <p class="whs2">&nbsp;</p>\r
1283 \r
1284 <p class="whs3"># define &quot;Propagation&quot; \r
1285  hypothesis that propagates all other 1D hypotheses</p>\r
1286 \r
1287 <p class="whs3"># from all edges on the \r
1288  opposite side of a face in case of quadrangular faces</p>\r
1289 \r
1290 <p class="whs2">algo.Propagation()</p>\r
1291 \r
1292 <p class="whs2">&nbsp;</p>\r
1293 \r
1294 <p class="whs3"># compute the mesh</p>\r
1295 \r
1296 <p class="whs2">hexa.Compute() &nbsp;</p>\r
1297 \r
1298 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>\r
1299 \r
1300 <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
1301 <br>&nbsp;\r
1302 \r
1303 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
1304  salome</span></p>\r
1305 \r
1306 <p class="whs4">import StdMeshers</p>\r
1307 \r
1308 <p class="whs4">import NETGENPlugin</p>\r
1309 \r
1310 <p class="whs4">&nbsp;</p>\r
1311 \r
1312 <p class="whs4">smesh = salome.lcc.FindOrLoadComponent(&quot;FactoryServer&quot;, \r
1313  &quot;SMESH&quot;)</p>\r
1314 \r
1315 <p class="whs4">smeshgui = salome.ImportComponentGUI(&quot;SMESH&quot;)</p>\r
1316 \r
1317 <p class="whs4">smeshgui.Init(salome.myStudyId);</p>\r
1318 \r
1319 <p class="whs6">&nbsp;</p>\r
1320 \r
1321 <p class="whs6"># create algorithms</p>\r
1322 \r
1323 <p class="whs4">print &quot;-------------------------- \r
1324  create Algorithms&quot;</p>\r
1325 \r
1326 <p class="whs4">print &quot;-------------------------- \r
1327  Regular_1D (Wire discretisation)&quot;</p>\r
1328 \r
1329 <p class="whs4">regular1D = smesh.CreateHypothesis(&quot;Regular_1D&quot;, \r
1330  &quot;libStdMeshersEngine.so&quot;)</p>\r
1331 \r
1332 <p class="whs4">smeshgui.SetName(salome.ObjectToID(regular1D), \r
1333  &quot;Wire Discretisation&quot;)</p>\r
1334 \r
1335 <p class="whs4">&nbsp;</p>\r
1336 \r
1337 <p class="whs4">print &quot;-------------------------- \r
1338  MEFISTO_2D (Triangle meshing algorithm)&quot;</p>\r
1339 \r
1340 <p class="whs4">mefisto2D = smesh.CreateHypothesis(&quot;MEFISTO_2D&quot;, \r
1341  &quot;libStdMeshersEngine.so&quot;)</p>\r
1342 \r
1343 <p class="whs4">smeshgui.SetName(salome.ObjectToID(mefisto2D), \r
1344  &quot;MEFISTO_2D&quot;)</p>\r
1345 \r
1346 <p class="whs4">&nbsp;</p>\r
1347 \r
1348 <p class="whs4">print &quot;-------------------------- \r
1349  Quadrangle_2D (Quadrangle meshing algorithm)&quot;</p>\r
1350 \r
1351 <p class="whs4">quad2D = smesh.CreateHypothesis( \r
1352  &quot;Quadrangle_2D&quot;, &quot;libStdMeshersEngine.so&quot; )</p>\r
1353 \r
1354 <p class="whs4">smeshgui.SetName(salome.ObjectToID(quad2D), \r
1355  &quot;Quadrangle_2D&quot;)</p>\r
1356 \r
1357 <p class="whs4">&nbsp;</p>\r
1358 \r
1359 <p class="whs4">print &quot;-------------------------- \r
1360  Hexa_3D (Hexahedron meshing algorithm)&quot;</p>\r
1361 \r
1362 <p class="whs4">hexa3D = smesh.CreateHypothesis(&quot;Hexa_3D&quot;, \r
1363  &quot;libStdMeshersEngine.so&quot;)</p>\r
1364 \r
1365 <p class="whs4">smeshgui.SetName(salome.ObjectToID(hexa3D), \r
1366  &quot;HEXA_3D&quot;)</p>\r
1367 \r
1368 <p class="whs4">&nbsp;</p>\r
1369 \r
1370 <p class="whs4">print &quot;-------------------------- \r
1371  NETGEN_3D (Tetrahedron meshing algorithm)&quot;</p>\r
1372 \r
1373 <p class="whs4">netgen3D = smesh.CreateHypothesis(&quot;NETGEN_3D&quot;, \r
1374  &quot;libNETGENEngine.so&quot;)</p>\r
1375 \r
1376 <p class="whs4">smeshgui.SetName(salome.ObjectToID(netgen3D), \r
1377  &quot;NETGEN_3D&quot;)</p>\r
1378 \r
1379 <p class="whs4">salome.sg.updateObjBrowser(1)</p>\r
1380 \r
1381 <p class="whs6">&nbsp;</p>\r
1382 \r
1383 <script type="text/javascript" language="javascript1.2">\r
1384 <!--\r
1385 if (window.writeIntopicBar)\r
1386         writeIntopicBar(0);\r
1387 //-->\r
1388 </script>\r
1389 </body>\r
1390 </html>\r