Salome HOME
Porting GUI documentation on Doxygen tool.
[modules/smesh.git] / doc / salome / gui / SMESH / smesh.py_introduction.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>smesh.py_introduction</title>\r
7 <meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
8 <meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com"><style type="text/css">\r
9 <!--\r
10 p.whs1 { margin-top:0pt; margin-bottom:0pt; }\r
11 p.whs2 { margin-top:0pt; margin-bottom:0pt; font-family:'Lucida Console' , monospace; }\r
12 -->\r
13 </style><script type="text/javascript" language="JavaScript">\r
14 <!--\r
15 if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
16 {\r
17   var strNSS = "<style type='text/css'>";\r
18   strNSS += "p.whs1 {margin-top:1pt;margin-bottom:1pt; }";\r
19   strNSS += "p.whs2 {margin-top:1pt;margin-bottom:1pt; }";\r
20   strNSS +="</style>";\r
21   document.write(strNSS);\r
22 }\r
23 //-->\r
24 </script>\r
25 <script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
26 <!--\r
27 function reDo() {\r
28   if (innerWidth != origWidth || innerHeight != origHeight)\r
29      location.reload();\r
30 }\r
31 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
32         origWidth = innerWidth;\r
33         origHeight = innerHeight;\r
34         onresize = reDo;\r
35 }\r
36 onerror = null; \r
37 //-->\r
38 </script>\r
39 <style type="text/css">\r
40 <!--\r
41 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
42 p.WebHelpNavBar { text-align:right; }\r
43 -->\r
44 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
45 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
46 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
47 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
48 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
49 <script type="text/javascript" language="javascript1.2">\r
50 <!--\r
51 if (window.gbWhTopic)\r
52 {\r
53         if (window.setRelStartPage)\r
54         {\r
55         addTocInfo("MESH module\nIntroduction to MESH module python interface");\r
56 addButton("show",BTN_IMG,"Show","","","","",0,0,"whd_show0.gif","whd_show2.gif","whd_show1.gif");\r
57 addButton("hide",BTN_IMG,"Hide","","","","",0,0,"whd_hide0.gif","whd_hide2.gif","whd_hide1.gif");\r
58 \r
59         }\r
60 \r
61 \r
62         if (window.setRelStartPage)\r
63         {\r
64         setRelStartPage("index.htm");\r
65 \r
66                 autoSync(1);\r
67                 sendSyncInfo();\r
68                 sendAveInfoOut();\r
69         }\r
70 \r
71 }\r
72 else\r
73         if (window.gbIE4)\r
74                 document.location.reload();\r
75 //-->\r
76 </script>\r
77 </head>\r
78 <body><script type="text/javascript" language="javascript1.2">\r
79 <!--\r
80 if (window.writeIntopicBar)\r
81         writeIntopicBar(4);\r
82 //-->\r
83 </script>\r
84 <h1>Introduction to MESH module python interface</h1>\r
85 \r
86 <p class="whs1">Package smesh provides \r
87  a standard API for creation and edition of meshes . </p>\r
88 \r
89 <p class="whs1">Below you can see an example \r
90  of usage of the package smesh for 3d mesh generation. </p>\r
91 \r
92 <p class="whs1">&nbsp;&nbsp;</p>\r
93 \r
94 <p class="whs1">Example of 3d mesh generation \r
95  with NETGEN</p>\r
96 \r
97 <p class="whs1">from geompy import * </p>\r
98 \r
99 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
100  smesh</span> </p>\r
101 \r
102 <p class="whs1"># Geometry </p>\r
103 \r
104 <p class="whs1"># an assembly of a box, \r
105  a cylinder and a truncated cone meshed with tetrahedral. </p>\r
106 \r
107 <p class="whs1">&nbsp;</p>\r
108 \r
109 <p class="whs1"># Define values </p>\r
110 \r
111 <p class="whs2">name = &quot;ex21_lamp&quot; \r
112  </p>\r
113 \r
114 <p class="whs2">cote = 60 </p>\r
115 \r
116 <p class="whs2">section = 20 </p>\r
117 \r
118 <p class="whs2">size = 200 </p>\r
119 \r
120 <p class="whs2">radius_1 = 80 </p>\r
121 \r
122 <p class="whs2">radius_2 = 40 </p>\r
123 \r
124 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">height \r
125  = 100</span> </p>\r
126 \r
127 <p class="whs1">&nbsp;</p>\r
128 \r
129 <p class="whs1"># Build a box </p>\r
130 \r
131 <p class="whs2">box = MakeBox(-cote, \r
132  -cote, -cote, +cote, +cote, +cote) </p>\r
133 \r
134 <p class="whs1">&nbsp;</p>\r
135 \r
136 <p class="whs1"># Build a cylinder </p>\r
137 \r
138 <p class="whs2">pt1 = MakeVertex(0, \r
139  0, cote/3) </p>\r
140 \r
141 <p class="whs2">di1 = MakeVectorDXDYDZ(0, \r
142  0, 1) </p>\r
143 \r
144 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cyl \r
145  = MakeCylinder(pt1, di1, section, size)</span> </p>\r
146 \r
147 <p class="whs1">&nbsp;</p>\r
148 \r
149 <p class="whs1"># Build a truncated cone \r
150  </p>\r
151 \r
152 <p class="whs2">pt2 = MakeVertex(0, \r
153  0, size) </p>\r
154 \r
155 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">cone \r
156  = MakeCone(pt2, di1, radius_1, radius_2, height)</span> </p>\r
157 \r
158 <p class="whs1">&nbsp;</p>\r
159 \r
160 <p class="whs1"># Fuse </p>\r
161 \r
162 <p class="whs2">box_cyl = MakeFuse(box, \r
163  cyl) </p>\r
164 \r
165 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">piece \r
166  = MakeFuse(box_cyl, cone)</span> </p>\r
167 \r
168 <p class="whs1">&nbsp;</p>\r
169 \r
170 <p class="whs1"># Add in study </p>\r
171 \r
172 <p class="whs2">addToStudy(piece, \r
173  name) </p>\r
174 \r
175 <p class="whs1">&nbsp;</p>\r
176 \r
177 <p class="whs1"># Create a group of faces \r
178  </p>\r
179 \r
180 <p class="whs2">group = CreateGroup(piece, \r
181  ShapeType[&quot;FACE&quot;]) </p>\r
182 \r
183 <p class="whs2">group_name = name \r
184  + &quot;_grp&quot; </p>\r
185 \r
186 <p class="whs2">addToStudy(group, \r
187  group_name) </p>\r
188 \r
189 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">group.SetName(group_name)</span> \r
190  </p>\r
191 \r
192 <p class="whs1">&nbsp;</p>\r
193 \r
194 <p class="whs1"># Add faces in the group \r
195  </p>\r
196 \r
197 <p class="whs2">faces = SubShapeAllIDs(piece, \r
198  ShapeType[&quot;FACE&quot;]) </p>\r
199 \r
200 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">UnionIDs(group, \r
201  faces)</span> </p>\r
202 \r
203 <p class="whs1">&nbsp;</p>\r
204 \r
205 <p class="whs1"># Create a mesh </p>\r
206 \r
207 <p class="whs1">&nbsp;</p>\r
208 \r
209 <p class="whs1"># Define a mesh on a geometry \r
210  </p>\r
211 \r
212 <p class="whs2">tetra = smesh.Mesh(piece, \r
213  name) </p>\r
214 \r
215 <p class="whs1">&nbsp;</p>\r
216 \r
217 <p class="whs1"># Define 1D hypothesis \r
218  </p>\r
219 \r
220 <p class="whs2">algo1d = tetra.Segment() \r
221  </p>\r
222 \r
223 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo1d.LocalLength(10)</span> \r
224  </p>\r
225 \r
226 <p class="whs1">&nbsp;</p>\r
227 \r
228 <p class="whs1"># Define 2D hypothesis \r
229  </p>\r
230 \r
231 <p class="whs2">algo2d = tetra.Triangle() \r
232  </p>\r
233 \r
234 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo2d.LengthFromEdges()</span> \r
235  </p>\r
236 \r
237 <p class="whs1">&nbsp;</p>\r
238 \r
239 <p class="whs1"># Define 3D hypothesis \r
240  </p>\r
241 \r
242 <p class="whs2">algo3d = tetra.Tetrahedron(smesh.NETGEN) \r
243  </p>\r
244 \r
245 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">algo3d.MaxElementVolume(100)</span> \r
246  </p>\r
247 \r
248 <p class="whs1">&nbsp;</p>\r
249 \r
250 <p class="whs1"># Compute the mesh </p>\r
251 \r
252 <p class="whs2">tetra.Compute() \r
253  </p>\r
254 \r
255 <p class="whs1">&nbsp;</p>\r
256 \r
257 <p class="whs1"># Create a groupe of faces \r
258  </p>\r
259 \r
260 <p class="whs2">tetra.Group(group) \r
261  </p>\r
262 \r
263 <script type="text/javascript" language="javascript1.2">\r
264 <!--\r
265 if (window.writeIntopicBar)\r
266         writeIntopicBar(0);\r
267 //-->\r
268 </script>\r
269 </body>\r
270 </html>\r