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