Salome HOME
Fix for bug PAL12557(V3_2_0b2: SMESH documentation for scripts not up to date).
[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"><span style="font-family: 'Lucida Console', monospace;">import \r
103  geompy</span></p>\r
104 \r
105 <p class="whs2">import smesh</p>\r
106 \r
107 <p class="whs2">&nbsp;</p>\r
108 \r
109 <p class="whs3"># create a box</p>\r
110 \r
111 <p class="whs2">box = geompy.MakeBoxDXDYDZ(10., \r
112  10., 10.)</p>\r
113 \r
114 <p class="whs2">geompy.addToStudy(box, \r
115  &quot;Box&quot;)</p>\r
116 \r
117 <p class="whs2">&nbsp;</p>\r
118 \r
119 <p class="whs3"># create a hexahedral \r
120  mesh on the box</p>\r
121 \r
122 <p class="whs2">hexa = smesh.Mesh(box, \r
123  &quot;Box : hexahedrical mesh&quot;)</p>\r
124 \r
125 <p class="whs2">&nbsp;</p>\r
126 \r
127 <p class="whs3"># create a Regular 1D \r
128  algorithm for edges</p>\r
129 \r
130 <p class="whs2">algo1D = hexa.Segment()</p>\r
131 \r
132 <p class="whs2">&nbsp;</p>\r
133 \r
134 <p class="whs3"># define &quot;Arithmetic1D&quot; \r
135  hypothesis to cut all edges in several segments with increasing arithmetic \r
136  length </p>\r
137 \r
138 <p class="whs2">algo1D.Arithmetic1D(1, \r
139  4)</p>\r
140 \r
141 <p class="whs2">&nbsp;</p>\r
142 \r
143 <p class="whs3"># create a quadrangle \r
144  2D algorithm for faces</p>\r
145 \r
146 <p class="whs2">hexa.Quadrangle()</p>\r
147 \r
148 <p class="whs2">&nbsp;</p>\r
149 \r
150 <p class="whs3"># create a hexahedron \r
151  3D algorithm for solids</p>\r
152 \r
153 <p class="whs2">hexa.Hexahedron()</p>\r
154 \r
155 <p class="whs2">&nbsp;</p>\r
156 \r
157 <p class="whs3"># compute the mesh</p>\r
158 \r
159 <p class="whs2">hexa.Compute() </p>\r
160 \r
161 <p class="whs2">&nbsp;</p>\r
162 \r
163 <h4><a name=bookmark9>Deflection 1D and Number of Segments</a></h4>\r
164 \r
165 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
166  geompy</span></p>\r
167 \r
168 <p class="whs2">import smesh</p>\r
169 \r
170 <p class="whs2">&nbsp;</p>\r
171 \r
172 <p class="whs3"># create a face from \r
173  arc and straight segment</p>\r
174 \r
175 <p class="whs2">px = geompy.MakeVertex(100., \r
176  0. &nbsp;, 0. \r
177  &nbsp;)</p>\r
178 \r
179 <p class="whs2">py = geompy.MakeVertex(0. \r
180  &nbsp;, 100., \r
181  0. &nbsp;)</p>\r
182 \r
183 <p class="whs2">pz = geompy.MakeVertex(0. \r
184  &nbsp;, 0. &nbsp;, \r
185  100.)</p>\r
186 \r
187 <p class="whs2">&nbsp;</p>\r
188 \r
189 <p class="whs2">exy = geompy.MakeEdge(px, \r
190  py)</p>\r
191 \r
192 <p class="whs2">arc = geompy.MakeArc(py, \r
193  pz, px)</p>\r
194 \r
195 <p class="whs2">&nbsp;</p>\r
196 \r
197 <p class="whs2">wire = geompy.MakeWire([exy, \r
198  arc])</p>\r
199 \r
200 <p class="whs2">&nbsp;</p>\r
201 \r
202 <p class="whs2">isPlanarFace = 1</p>\r
203 \r
204 <p class="whs2">face1 = geompy.MakeFace(wire, \r
205  isPlanarFace)</p>\r
206 \r
207 <p class="whs2">geompy.addToStudy(face1,&quot;Face1&quot;)</p>\r
208 \r
209 <p class="whs2">&nbsp;</p>\r
210 \r
211 <p class="whs3"># get edges from the \r
212  face</p>\r
213 \r
214 <p class="whs2">e_straight,e_arc = \r
215  geompy.SubShapeAll(face1, geompy.ShapeType[&quot;EDGE&quot;])</p>\r
216 \r
217 <p class="whs2">geompy.addToStudyInFather(face1, \r
218  e_arc, &quot;Arc Edge&quot;)</p>\r
219 \r
220 <p class="whs2">&nbsp;</p>\r
221 \r
222 <p class="whs3"># create hexahedral mesh</p>\r
223 \r
224 <p class="whs2">hexa = smesh.Mesh(face1, \r
225  &quot;Face : triangle mesh&quot;)</p>\r
226 \r
227 <p class="whs2">&nbsp;</p>\r
228 \r
229 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
230  hypothesis to cut a straight edge in a fixed number of segments</p>\r
231 \r
232 <p class="whs2">algo1D = hexa.Segment()</p>\r
233 \r
234 <p class="whs2">algo1D.NumberOfSegments(6)</p>\r
235 \r
236 <p class="whs2">&nbsp;</p>\r
237 \r
238 <p class="whs3"># define &quot;MaxElementArea&quot; \r
239  hypothesis</p>\r
240 \r
241 <p class="whs2">algo2D = hexa.Triangle()</p>\r
242 \r
243 <p class="whs2">algo2D.MaxElementArea(70.0)</p>\r
244 \r
245 <p class="whs2">&nbsp;</p>\r
246 \r
247 <p class="whs3"># define a local &quot;Deflection1D&quot; \r
248  hypothesis on the arc</p>\r
249 \r
250 <p class="whs2">algo_local = hexa.Segment(e_arc)</p>\r
251 \r
252 <p class="whs2">algo_local.Deflection1D(1.0)</p>\r
253 \r
254 <p class="whs2">&nbsp;</p>\r
255 \r
256 <p class="whs3"># compute the mesh</p>\r
257 \r
258 <p class="whs2">hexa.Compute() </p>\r
259 \r
260 <h4><a name=bookmark2>Start and End Length</a></h4>\r
261 \r
262 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from \r
263  geompy import *</span></p>\r
264 \r
265 <p class="whs2">import smesh</p>\r
266 \r
267 <p class="whs2">&nbsp;</p>\r
268 \r
269 <p class="whs3"># create a box</p>\r
270 \r
271 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
272  10., 10.)</p>\r
273 \r
274 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
275 \r
276 <p class="whs2">&nbsp;</p>\r
277 \r
278 <p class="whs3"># get one edge of the \r
279  box to put local hypothesis on</p>\r
280 \r
281 <p class="whs2">p5 = MakeVertex(5., \r
282  0., 0.)</p>\r
283 \r
284 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
285  p5)</p>\r
286 \r
287 <p class="whs2">addToStudyInFather(box, \r
288  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
289 \r
290 <p class="whs2">&nbsp;</p>\r
291 \r
292 <p class="whs3"># create a hexahedral \r
293  mesh on the box</p>\r
294 \r
295 <p class="whs2">hexa = smesh.Mesh(box, \r
296  &quot;Box : hexahedrical mesh&quot;)</p>\r
297 \r
298 <p class="whs2">&nbsp;</p>\r
299 \r
300 <p class="whs3"># set algorithms</p>\r
301 \r
302 <p class="whs2">algo1D = hexa.Segment()</p>\r
303 \r
304 <p class="whs2">hexa.Quadrangle()</p>\r
305 \r
306 <p class="whs2">hexa.Hexahedron()</p>\r
307 \r
308 <p class="whs2">&nbsp;</p>\r
309 \r
310 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
311  hypothesis to cut an edge in a fixed number of segments</p>\r
312 \r
313 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
314 \r
315 <p class="whs2">&nbsp;</p>\r
316 \r
317 <p class="whs3"># create a local hypothesis</p>\r
318 \r
319 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
320 \r
321 <p class="whs2">&nbsp;</p>\r
322 \r
323 <p class="whs3"># define &quot;StartEndLength&quot; \r
324  hypothesis to cut an edge in several segments with increasing geometric \r
325  length</p>\r
326 \r
327 <p class="whs2">algo_local.StartEndLength(1, \r
328  6)</p>\r
329 \r
330 <p class="whs2">&nbsp;</p>\r
331 \r
332 <p class="whs3"># define &quot;Propagation&quot; \r
333  hypothesis that propagates all other hypothesis</p>\r
334 \r
335 <p class="whs3"># on all edges on the \r
336  opposite side in case of quadrangular faces</p>\r
337 \r
338 <p class="whs2">algo_local.Propagation()</p>\r
339 \r
340 <p class="whs2">&nbsp;</p>\r
341 \r
342 <p class="whs3"># compute the mesh</p>\r
343 \r
344 <p class="whs2">hexa.Compute() </p>\r
345 \r
346 <h4><a name=bookmark3>Average Length</a></h4>\r
347 \r
348 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">from \r
349  geompy import *</span></p>\r
350 \r
351 <p class="whs2">import smesh</p>\r
352 \r
353 <p class="whs2">&nbsp;</p>\r
354 \r
355 <p class="whs3"># create a box</p>\r
356 \r
357 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
358  10., 10.)</p>\r
359 \r
360 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
361 \r
362 <p class="whs2">&nbsp;</p>\r
363 \r
364 <p class="whs3"># get one edge of the \r
365  box to put local hypothesis on</p>\r
366 \r
367 <p class="whs2">p5 = MakeVertex(5., \r
368  0., 0.)</p>\r
369 \r
370 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
371  p5)</p>\r
372 \r
373 <p class="whs2">addToStudyInFather(box, \r
374  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
375 \r
376 <p class="whs2">&nbsp;</p>\r
377 \r
378 <p class="whs3"># create a hexahedral \r
379  mesh on the box</p>\r
380 \r
381 <p class="whs2">hexa = smesh.Mesh(box, \r
382  &quot;Box : hexahedrical mesh&quot;)</p>\r
383 \r
384 <p class="whs2">&nbsp;</p>\r
385 \r
386 <p class="whs3"># set algorithms</p>\r
387 \r
388 <p class="whs2">algo1D = hexa.Segment()</p>\r
389 \r
390 <p class="whs2">hexa.Quadrangle()</p>\r
391 \r
392 <p class="whs2">hexa.Hexahedron()</p>\r
393 \r
394 <p class="whs2">&nbsp;</p>\r
395 \r
396 <p class="whs3"># define &quot;NumberOfSegments&quot; \r
397  hypothesis to cut all edges in a fixed number of segments</p>\r
398 \r
399 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
400 \r
401 <p class="whs2">&nbsp;</p>\r
402 \r
403 <p class="whs3"># create a sub-mesh</p>\r
404 \r
405 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
406 \r
407 <p class="whs2">&nbsp;</p>\r
408 \r
409 <p class="whs3"># define &quot;LocalLength&quot; \r
410  hypothesis to cut an edge in several segments with the same length</p>\r
411 \r
412 <p class="whs2">algo_local.LocalLength(2.)</p>\r
413 \r
414 <p class="whs2">&nbsp;</p>\r
415 \r
416 <p class="whs3"># define &quot;Propagation&quot; \r
417  hypothesis that propagates all other hypothesis</p>\r
418 \r
419 <p class="whs3"># on all edges on the \r
420  opposite side in case of quadrangular faces</p>\r
421 \r
422 <p class="whs2">algo_local.Propagation()</p>\r
423 \r
424 <p class="whs2">&nbsp;</p>\r
425 \r
426 <p class="whs3"># compute the mesh</p>\r
427 \r
428 <p class="whs2">hexa.Compute() </p>\r
429 \r
430 <h3>Defining 2D and 3D hypotheses</h3>\r
431 \r
432 <h4><a name=bookmark4>Maximum Element Area</a></h4>\r
433 \r
434 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
435  geompy</span></p>\r
436 \r
437 <p class="whs4">import smesh</p>\r
438 \r
439 <p class="whs4">import salome </p>\r
440 \r
441 <p class="whs4">&nbsp;</p>\r
442 \r
443 <p class="whs5"># create a face</p>\r
444 \r
445 <p class="whs4">px &nbsp;&nbsp;= \r
446  geompy.MakeVertex(100., 0. &nbsp;, \r
447  0. &nbsp;)</p>\r
448 \r
449 <p class="whs4">py &nbsp;&nbsp;= \r
450  geompy.MakeVertex(0. &nbsp;, \r
451  100., 0. &nbsp;)</p>\r
452 \r
453 <p class="whs4">pz &nbsp;&nbsp;= \r
454  geompy.MakeVertex(0. &nbsp;, \r
455  0. &nbsp;, 100.)</p>\r
456 \r
457 <p class="whs4">&nbsp;</p>\r
458 \r
459 <p class="whs4">vxy = geompy.MakeVector(px, \r
460  py)</p>\r
461 \r
462 <p class="whs4">arc = geompy.MakeArc(py, \r
463  pz, px)</p>\r
464 \r
465 <p class="whs4">wire = geompy.MakeWire([vxy, \r
466  arc])</p>\r
467 \r
468 <p class="whs4">&nbsp;</p>\r
469 \r
470 <p class="whs4">isPlanarFace = 1</p>\r
471 \r
472 <p class="whs4">face = geompy.MakeFace(wire, \r
473  isPlanarFace)</p>\r
474 \r
475 <p class="whs4">&nbsp;</p>\r
476 \r
477 <p class="whs5"># add the face in the \r
478  study</p>\r
479 \r
480 <p class="whs4">id_face = geompy.addToStudy(face, \r
481  &quot;Face to be meshed&quot;)</p>\r
482 \r
483 <p class="whs4">&nbsp;</p>\r
484 \r
485 <p class="whs5"># create a mesh</p>\r
486 \r
487 <p class="whs4">tria_mesh = smesh.Mesh(face, \r
488  &quot;Face : triangulation&quot;)</p>\r
489 \r
490 <p class="whs4">&nbsp;</p>\r
491 \r
492 <p class="whs5"># define 1D meshing:</p>\r
493 \r
494 <p class="whs4">algo = tria_mesh.Segment()</p>\r
495 \r
496 <p class="whs4">algo.NumberOfSegments(20)</p>\r
497 \r
498 <p class="whs4">&nbsp;</p>\r
499 \r
500 <p class="whs5"># define 2D meshing:</p>\r
501 \r
502 <p class="whs5">&nbsp;</p>\r
503 \r
504 <p class="whs5"># assign triangulation \r
505  algorithm</p>\r
506 \r
507 <p class="whs4">algo = tria_mesh.Triangle()</p>\r
508 \r
509 <p class="whs4">&nbsp;</p>\r
510 \r
511 <p class="whs5"># apply &quot;Max Element \r
512  Area&quot; hypothesis to each triangle</p>\r
513 \r
514 <p class="whs4">algo.MaxElementArea(100)</p>\r
515 \r
516 <p class="whs4">&nbsp;</p>\r
517 \r
518 <p class="whs5"># compute the mesh</p>\r
519 \r
520 <p class="whs4">tria_mesh.Compute() \r
521  &nbsp;</p>\r
522 \r
523 <p class="whs4">&nbsp;</p>\r
524 \r
525 <h4><a name=bookmark5>Maximum Element Volume</a></h4>\r
526 \r
527 <p class="whs4"><span style="font-family: 'Lucida Console', monospace;">import \r
528  geompy</span></p>\r
529 \r
530 <p class="whs4">import smesh</p>\r
531 \r
532 <p class="whs4">&nbsp;</p>\r
533 \r
534 <p class="whs5"># create a cylinder</p>\r
535 \r
536 <p class="whs4">cyl = geompy.MakeCylinderRH(30., \r
537  50.)</p>\r
538 \r
539 <p class="whs4">geompy.addToStudy(cyl, \r
540  &quot;cyl&quot;)</p>\r
541 \r
542 <p class="whs4">&nbsp;</p>\r
543 \r
544 <p class="whs5"># create a mesh on \r
545  the cylinder</p>\r
546 \r
547 <p class="whs4">tetra = smesh.Mesh(cyl, \r
548  &quot;Cylinder : tetrahedrical mesh&quot;)</p>\r
549 \r
550 <p class="whs4">&nbsp;</p>\r
551 \r
552 <p class="whs5"># assign algorithms</p>\r
553 \r
554 <p class="whs4">algo1D = tetra.Segment()</p>\r
555 \r
556 <p class="whs4">algo2D = tetra.Triangle()</p>\r
557 \r
558 <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>\r
559 \r
560 <p class="whs4">&nbsp;</p>\r
561 \r
562 <p class="whs5"># assign 1D and 2D \r
563  hypotheses</p>\r
564 \r
565 <p class="whs4">algo1D.NumberOfSegments(7)</p>\r
566 \r
567 <p class="whs4">algo2D.MaxElementArea(150.)</p>\r
568 \r
569 <p class="whs4">&nbsp;</p>\r
570 \r
571 <p class="whs5"># assign Max Element \r
572  Volume hypothesis</p>\r
573 \r
574 <p class="whs4">algo3D.MaxElementVolume(200.)</p>\r
575 \r
576 <p class="whs4">&nbsp;</p>\r
577 \r
578 <p class="whs5"># compute the mesh</p>\r
579 \r
580 <p class="whs4">ret = tetra.Compute()</p>\r
581 \r
582 <p class="whs4">if ret == 0:</p>\r
583 \r
584 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
585  &quot;probleme when computing the mesh&quot;</p>\r
586 \r
587 <p class="whs4">else:</p>\r
588 \r
589 <p class="whs4">&nbsp;&nbsp;&nbsp;&nbsp;print \r
590  &quot;Computation succeded&quot; </p>\r
591 \r
592 <h4><a name=bookmark6>Length from Edges</a></h4>\r
593 \r
594 <p class="whs2"><span style="font-family: 'Lucida Console', monospace;">import \r
595  geompy</span></p>\r
596 \r
597 <p class="whs2">import smesh</p>\r
598 \r
599 <p class="whs2">&nbsp;</p>\r
600 \r
601 <p class="whs3"># create sketchers</p>\r
602 \r
603 <p class="whs2">sketcher1 = geompy.MakeSketcher(&quot;Sketcher:F \r
604  0 0:TT 70 0:TT 70 70:TT 0 70:WW&quot;)</p>\r
605 \r
606 <p class="whs2">sketcher2 = geompy.MakeSketcher(&quot;Sketcher:F \r
607  20 20:TT 50 20:TT 50 50:TT 20 50:WW&quot;)</p>\r
608 \r
609 <p class="whs2">&nbsp;</p>\r
610 \r
611 <p class="whs3"># create a face from \r
612  two wires</p>\r
613 \r
614 <p class="whs2">isPlanarFace = 1</p>\r
615 \r
616 <p class="whs2">face1 = geompy.MakeFaces([sketcher1, \r
617  sketcher2], isPlanarFace)</p>\r
618 \r
619 <p class="whs2">geompy.addToStudy(face1, \r
620  &quot;Face1&quot;)</p>\r
621 \r
622 <p class="whs2">&nbsp;</p>\r
623 \r
624 <p class="whs3"># create a mesh</p>\r
625 \r
626 <p class="whs2">tria = smesh.Mesh(face1, \r
627  &quot;Face : triangle 2D mesh&quot;)</p>\r
628 \r
629 <p class="whs2">&nbsp;</p>\r
630 \r
631 <p class="whs3"># Define 1D meshing</p>\r
632 \r
633 <p class="whs2">algo1D = tria.Segment()</p>\r
634 \r
635 <p class="whs2">algo1D.NumberOfSegments(2)</p>\r
636 \r
637 <p class="whs2">&nbsp;</p>\r
638 \r
639 <p class="whs3"># create and assign the \r
640  algorithm for 2D meshing with triangles</p>\r
641 \r
642 <p class="whs2">algo2D = tria.Triangle()</p>\r
643 \r
644 <p class="whs2">&nbsp;</p>\r
645 \r
646 <p class="whs3"># create and assign &quot;LengthFromEdges&quot; \r
647  hypothesis to build triangles<span style="font-family: 'Times New Roman', serif;"> \r
648  based on the length of the edges taken from the wire</span></p>\r
649 \r
650 <p class="whs2">algo2D.LengthFromEdges()</p>\r
651 \r
652 <p class="whs2">&nbsp;</p>\r
653 \r
654 <p class="whs3"># compute the mesh</p>\r
655 \r
656 <p class="whs2">tria.Compute() </p>\r
657 \r
658 <p class="whs2">&nbsp;</p>\r
659 \r
660 <h3>Defining Additional Hypotheses</h3>\r
661 \r
662 <h4><a name=bookmark7>Propagation</a></h4>\r
663 \r
664 <p class="whs2">from geompy import \r
665  *</p>\r
666 \r
667 <p class="whs2">import smesh</p>\r
668 \r
669 <p class="whs2">&nbsp;</p>\r
670 \r
671 <p class="whs3"># create a box</p>\r
672 \r
673 <p class="whs2">box = MakeBoxDXDYDZ(10., \r
674  10., 10.)</p>\r
675 \r
676 <p class="whs2">addToStudy(box, &quot;Box&quot;)</p>\r
677 \r
678 <p class="whs2">&nbsp;</p>\r
679 \r
680 <p class="whs3"># get one edge of the \r
681  box to put local hypothesis on</p>\r
682 \r
683 <p class="whs2">p5 = MakeVertex(5., \r
684  0., 0.)</p>\r
685 \r
686 <p class="whs2">EdgeX = GetEdgeNearPoint(box, \r
687  p5)</p>\r
688 \r
689 <p class="whs2">addToStudyInFather(box, \r
690  EdgeX, &quot;Edge [0,0,0 - 10,0,0]&quot;)</p>\r
691 \r
692 <p class="whs2">&nbsp;</p>\r
693 \r
694 <p class="whs3"># create a hexahedral \r
695  mesh on the box</p>\r
696 \r
697 <p class="whs2">hexa = smesh.Mesh(box, \r
698  &quot;Box : hexahedrical mesh&quot;)</p>\r
699 \r
700 <p class="whs2">&nbsp;</p>\r
701 \r
702 <p class="whs3"># set global algorithms \r
703  and hypotheses</p>\r
704 \r
705 <p class="whs2">algo1D = hexa.Segment()</p>\r
706 \r
707 <p class="whs2">hexa.Quadrangle()</p>\r
708 \r
709 <p class="whs2">hexa.Hexahedron()</p>\r
710 \r
711 <p class="whs2">algo1D.NumberOfSegments(4)</p>\r
712 \r
713 <p class="whs2">&nbsp;</p>\r
714 \r
715 <p class="whs3"># create a sub-mesh with \r
716  local 1D hypothesis and propagation</p>\r
717 \r
718 <p class="whs2">algo_local = hexa.Segment(EdgeX)</p>\r
719 \r
720 <p class="whs2">&nbsp;</p>\r
721 \r
722 <p class="whs3"># define &quot;Arithmetic1D&quot; \r
723  hypothesis to cut an edge in several segments with increasing length</p>\r
724 \r
725 <p class="whs2">algo_local.Arithmetic1D(1, \r
726  4)</p>\r
727 \r
728 <p class="whs2">&nbsp;</p>\r
729 \r
730 <p class="whs3"># define &quot;Propagation&quot; \r
731  hypothesis that propagates all other 1D hypotheses</p>\r
732 \r
733 <p class="whs3"># from all edges on the \r
734  opposite side of a face in case of quadrangular faces</p>\r
735 \r
736 <p class="whs2">algo_local.Propagation()</p>\r
737 \r
738 <p class="whs2">&nbsp;</p>\r
739 \r
740 <p class="whs3"># compute the mesh</p>\r
741 \r
742 <p><span style="font-family: 'Lucida Console', monospace;">hexa.Compute()</span> \r
743  </p>\r
744 \r
745 <h3><a name=bookmark8>Defining Meshing Algorithms</a></h3>\r
746 \r
747 <p class="whs4">import geompy</p>\r
748 \r
749 <p class="whs4">import smesh</p>\r
750 \r
751 <p class="whs6">&nbsp;</p>\r
752 \r
753 <p class="whs6"># create a box</p>\r
754 \r
755 <p class="whs4">box = geompy.MakeBoxDXDYDZ(10., \r
756  10., 10.)</p>\r
757 \r
758 <p class="whs4">geompy.addToStudy(box, \r
759  &quot;Box&quot;)</p>\r
760 \r
761 <p class="whs4">&nbsp;</p>\r
762 \r
763 <p class="whs6"># 1. Create a hexahedral \r
764  mesh on the box</p>\r
765 \r
766 <p class="whs4">hexa = smesh.Mesh(box, \r
767  &quot;Box : hexahedrical mesh&quot;)</p>\r
768 \r
769 <p class="whs6">&nbsp;</p>\r
770 \r
771 <p class="whs6"># create a Regular 1D algorithm \r
772  for edges</p>\r
773 \r
774 <p class="whs4">algo1D = hexa.Segment()</p>\r
775 \r
776 <p class="whs6">&nbsp;</p>\r
777 \r
778 <p class="whs6"># create a quadrangle 2D \r
779  algorithm for faces</p>\r
780 \r
781 <p class="whs4">algo2D = hexa.Quadrangle()</p>\r
782 \r
783 <p class="whs6">&nbsp;</p>\r
784 \r
785 <p class="whs6"># create a hexahedron 3D \r
786  algorithm for solids</p>\r
787 \r
788 <p class="whs4">algo3D = hexa.Hexahedron()</p>\r
789 \r
790 <p class="whs6">&nbsp;</p>\r
791 \r
792 <p class="whs6"># define hypotheses</p>\r
793 \r
794 <p class="whs4">algo1D.Arithmetic1D(1, \r
795  4)</p>\r
796 \r
797 <p class="whs6">&nbsp;</p>\r
798 \r
799 <p class="whs6"># compute the mesh</p>\r
800 \r
801 <p class="whs4">hexa.Compute()</p>\r
802 \r
803 <p class="whs6">&nbsp;</p>\r
804 \r
805 <p class="whs6"># 2. Create a tetrahedral \r
806  mesh on the box</p>\r
807 \r
808 <p class="whs4">tetra = smesh.Mesh(box, \r
809  &quot;Box : tetrahedrical mesh&quot;)</p>\r
810 \r
811 <p class="whs6">&nbsp;</p>\r
812 \r
813 <p class="whs6"># create a Regular 1D algorithm \r
814  for edges</p>\r
815 \r
816 <p class="whs4">algo1D = tetra.Segment()</p>\r
817 \r
818 <p class="whs6">&nbsp;</p>\r
819 \r
820 <p class="whs6"># create a Mefisto 2D algorithm \r
821  for faces</p>\r
822 \r
823 <p class="whs4">algo2D = tetra.Triangle()</p>\r
824 \r
825 <p class="whs6">&nbsp;</p>\r
826 \r
827 <p class="whs6"># create a Netgen 3D algorithm \r
828  for solids</p>\r
829 \r
830 <p class="whs4">algo3D = tetra.Tetrahedron(smesh.NETGEN)</p>\r
831 \r
832 <p class="whs6">&nbsp;</p>\r
833 \r
834 <p class="whs6"># define hypotheses</p>\r
835 \r
836 <p class="whs4">algo1D.Arithmetic1D(1, \r
837  4)</p>\r
838 \r
839 <p class="whs4">algo2D.LengthFromEdges()</p>\r
840 \r
841 <p class="whs6">&nbsp;</p>\r
842 \r
843 <p class="whs6"># compute the mesh</p>\r
844 \r
845 <p class="whs4">tetra.Compute()</p>\r
846 \r
847 <p class="whs6">&nbsp;</p>\r
848 \r
849 <p class="whs6"># 3. Create a tetrahedral \r
850  mesh on the box with NETGEN_2D3D algorithm</p>\r
851 \r
852 <p class="whs4">tetraN = smesh.Mesh(box, \r
853  &quot;Box : tetrahedrical mesh by NETGEN_2D3D&quot;)</p>\r
854 \r
855 <p class="whs6">&nbsp;</p>\r
856 \r
857 <p class="whs6"># create a Netgen_2D3D \r
858  algorithm for solids</p>\r
859 \r
860 <p class="whs4">algo3D = tetraN.Tetrahedron(smesh.FULL_NETGEN) \r
861  </p>\r
862 \r
863 <p class="whs6">&nbsp;</p>\r
864 \r
865 <p class="whs6"># define hypotheses</p>\r
866 \r
867 <p class="whs4">n23_params = algo3D.Parameters()</p>\r
868 \r
869 <p class="whs6">&nbsp;</p>\r
870 \r
871 <p class="whs6"># compute the mesh</p>\r
872 \r
873 <p class="whs4">tetraN.Compute() \r
874  </p>\r
875 \r
876 <script type="text/javascript" language="javascript1.2">\r
877 <!--\r
878 if (window.writeIntopicBar)\r
879         writeIntopicBar(0);\r
880 //-->\r
881 </script>\r
882 </body>\r
883 </html>\r