Salome HOME
Merge from OCC_development_generic_2006
[modules/geom.git] / doc / salome / gui / GEOM / measurement_tools.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>Measurement Tools</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">\r
9 <link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
10 <!--\r
11 if (navigator.appName !="Netscape")\r
12 {   document.write("<link rel='stylesheet' href='default.css'>");}\r
13 //-->\r
14 </script>\r
15 <style type="text/css">\r
16 <!--\r
17 p.whs1 { font-family:'Lucida Console' , monospace; }\r
18 p.whs2 { font-family:'Times New Roman' , serif; }\r
19 -->\r
20 </style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
21 <!--\r
22 function reDo() {\r
23   if (innerWidth != origWidth || innerHeight != origHeight)\r
24      location.reload();\r
25 }\r
26 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
27         origWidth = innerWidth;\r
28         origHeight = innerHeight;\r
29         onresize = reDo;\r
30 }\r
31 onerror = null; \r
32 //-->\r
33 </script>\r
34 <style type="text/css">\r
35 <!--\r
36 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
37 -->\r
38 </style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
39 <script type="text/javascript" language="javascript" src="whver.js"></script>\r
40 <script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
41 <script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
42 <script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
43 </head>\r
44 <body><script type="text/javascript" language="javascript1.2">\r
45 <!--\r
46 if (window.gbWhTopic)\r
47 {\r
48         if (window.addTocInfo)\r
49         {\r
50         addTocInfo("GEOM module\nTUI Scripts\nMeasurement Tools");\r
51 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
52 \r
53         }\r
54         if (window.writeBtnStyle)\r
55                 writeBtnStyle();\r
56 \r
57         if (window.writeIntopicBar)\r
58                 writeIntopicBar(1);\r
59 \r
60         if (window.setRelStartPage)\r
61         {\r
62         setRelStartPage("geom.htm");\r
63 \r
64                 autoSync(1);\r
65                 sendSyncInfo();\r
66                 sendAveInfoOut();\r
67         }\r
68 }\r
69 else\r
70         if (window.gbIE4)\r
71                 document.location.reload();\r
72 //-->\r
73 </script>\r
74 <h1>Measurement Tools</h1>\r
75 \r
76 <h3>Point Coordinates</h3>\r
77 \r
78 <p class="whs1">import geompy</p>\r
79 \r
80 <p>&nbsp;</p>\r
81 \r
82 <p># create a point</p>\r
83 \r
84 <p class="whs1">point = geompy.MakeVertex(15, \r
85  23, 80)</p>\r
86 \r
87 <p>&nbsp;</p>\r
88 \r
89 <p># get the coordinates of the point and check its values</p>\r
90 \r
91 <p class="whs1">coords = geompy.PointCoordinates(point)</p>\r
92 \r
93 <p class="whs1">if coords[0] != 15 \r
94  or coords[1] != 23 or coords[2] != 80 :</p>\r
95 \r
96 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
97  &quot;Coordinates of point must be (15, 23, 80), but returned (&quot;, \r
98  coords[0], &quot;, &quot;, coords[1], &quot;, &quot;, coords[2], &quot;)&quot;</p>\r
99 \r
100 <p class="whs1">else :</p>\r
101 \r
102 <p><span style="font-family: 'Lucida Console', monospace;">&nbsp;&nbsp;&nbsp;&nbsp;print \r
103  &quot;All values are OK.&quot;</span> </p>\r
104 \r
105 <h3>Basic Properties</h3>\r
106 \r
107 <p class="whs1">import geompy</p>\r
108 \r
109 <p class="whs1">import math</p>\r
110 \r
111 <p>&nbsp;</p>\r
112 \r
113 <p># create a box</p>\r
114 \r
115 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
116 \r
117 <p class="whs1">props = geompy.BasicProperties(box)</p>\r
118 \r
119 <p class="whs1">print &quot;\nBox \r
120  100x30x100 Basic Properties:&quot;</p>\r
121 \r
122 <p class="whs1">print &quot; Wires \r
123  length: &quot;, props[0]</p>\r
124 \r
125 <p class="whs1">print &quot; Surface \r
126  area: &quot;, props[1]</p>\r
127 \r
128 <p class="whs1">print &quot; Volume \r
129  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: \r
130  &quot;, props[2]</p>\r
131 \r
132 <p class="whs1">length = math.sqrt((props[0] \r
133  - 1840)*(props[0] - 1840))</p>\r
134 \r
135 <p class="whs1">area = math.sqrt((props[1] \r
136  - 32000)*(props[1] - 32000))</p>\r
137 \r
138 <p class="whs1">volume = math.sqrt((props[2] \r
139  - 300000)*(props[2] - 300000))</p>\r
140 \r
141 <p class="whs1">if length &gt; 1e-7 \r
142  or area &gt; 1e-7 or volume &gt; 1e-7:</p>\r
143 \r
144 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
145  &quot;While must be:&quot;</p>\r
146 \r
147 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
148  &quot; Wires length: &quot;, 1840</p>\r
149 \r
150 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
151  &quot; Surface area: &quot;, 32000</p>\r
152 \r
153 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
154  &quot; Volume &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;: \r
155  &quot;, 300000.</p>\r
156 \r
157 <h3>Center of masses</h3>\r
158 \r
159 <p class="whs1">import geompy</p>\r
160 \r
161 <p class="whs1">import math</p>\r
162 \r
163 <p class="whs1">&nbsp;</p>\r
164 \r
165 <p class="whs2"># create a box</p>\r
166 \r
167 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
168 \r
169 <p class="whs1">cm = geompy.MakeCDG(box)</p>\r
170 \r
171 <p class="whs1">if cm is None:</p>\r
172 \r
173 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise \r
174  RuntimeError, &quot;MakeCDG(box) failed&quot;</p>\r
175 \r
176 <p class="whs1">else:</p>\r
177 \r
178 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
179  &quot;\nCentre of gravity of box has been successfully obtained:&quot;</p>\r
180 \r
181 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;coords \r
182  = geompy.PointCoordinates(cm)</p>\r
183 \r
184 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
185  &quot;(&quot;, coords[0], &quot;, &quot;, coords[1], &quot;, &quot;, coords[2], \r
186  &quot;)&quot;</p>\r
187 \r
188 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;dx \r
189  = math.sqrt((coords[0] - 50)*(coords[0] - 50))</p>\r
190 \r
191 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;dy \r
192  = math.sqrt((coords[1] - 15)*(coords[1] - 15))</p>\r
193 \r
194 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;dz \r
195  = math.sqrt((coords[2] - 50)*(coords[2] - 50))</p>\r
196 \r
197 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;if \r
198  dx &gt; 1e-7 or dy &gt; 1e-7 or dz &gt; 1e-7:</p>\r
199 \r
200 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print \r
201  &quot;But must be (50, 15, 50)&quot; </p>\r
202 \r
203 <h3>Inertia</h3>\r
204 \r
205 <p class="whs1">import geompy</p>\r
206 \r
207 <p class="whs1">import math</p>\r
208 \r
209 <p class="whs1">&nbsp;</p>\r
210 \r
211 <p class="whs2"># create a box</p>\r
212 \r
213 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
214 \r
215 <p class="whs1">In = geompy.Inertia(box)</p>\r
216 \r
217 <p class="whs1">print &quot;\nInertia \r
218  matrix of box 100x30x100:&quot;</p>\r
219 \r
220 <p class="whs1">print &quot; (&quot;, \r
221  In[0], &quot;, &quot;, In[1], &quot;, &quot;, In[2], &quot;)&quot;</p>\r
222 \r
223 <p class="whs1">print &quot; (&quot;, \r
224  In[3], &quot;, &quot;, In[4], &quot;, &quot;, In[5], &quot;)&quot;</p>\r
225 \r
226 <p class="whs1">print &quot; (&quot;, \r
227  In[6], &quot;, &quot;, In[7], &quot;, &quot;, In[8], &quot;)&quot;</p>\r
228 \r
229 <p class="whs1">print &quot;Main moments \r
230  of inertia of box 100x30x100:&quot;</p>\r
231 \r
232 <p class="whs1">print &quot; Ix = \r
233  &quot;, In[9], &quot;, Iy = &quot;, In[10], &quot;, Iz = &quot;, In[11] \r
234  </p>\r
235 \r
236 <p class="whs1">&nbsp;</p>\r
237 \r
238 <h3>Bounding Box</h3>\r
239 \r
240 <p class="whs1">import geompy</p>\r
241 \r
242 <p class="whs1">&nbsp;</p>\r
243 \r
244 <p class="whs2"># create a box</p>\r
245 \r
246 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
247 \r
248 <p class="whs1">bb = geompy.BoundingBox(box)</p>\r
249 \r
250 <p class="whs1">print &quot;\nBounding \r
251  Box of box 100x30x100:&quot;</p>\r
252 \r
253 <p class="whs1">print &quot; Xmin \r
254  = &quot;, bb[0], &quot;, Xmax = &quot;, bb[1]</p>\r
255 \r
256 <p class="whs1">print &quot; Ymin \r
257  = &quot;, bb[2], &quot;, Ymax = &quot;, bb[3]</p>\r
258 \r
259 <p class="whs1">print &quot; Zmin \r
260  = &quot;, bb[4], &quot;, Zmax = &quot;, bb[5] </p>\r
261 \r
262 <p class="whs1">&nbsp;</p>\r
263 \r
264 <p class="whs1">&nbsp;</p>\r
265 \r
266 <h3>Minimal Distance </h3>\r
267 \r
268 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
269  geompy</span></p>\r
270 \r
271 <p class="whs1">&nbsp;</p>\r
272 \r
273 <p class="whs2"># create boxes</p>\r
274 \r
275 <p class="whs1">box1 = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
276 \r
277 <p class="whs1">box2 = geompy.MakeBox(105,0,0,200,30,100)</p>\r
278 \r
279 <p class="whs1">min_dist = geompy.MinDistance(box1,box2)</p>\r
280 \r
281 <p class="whs1">print &quot;\nMinimal \r
282  distance between box1 and box2 = &quot;, min_dist </p>\r
283 \r
284 <p class="whs1">&nbsp;</p>\r
285 \r
286 <h3>Tolerance</h3>\r
287 \r
288 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
289  geompy</span></p>\r
290 \r
291 <p class="whs1">&nbsp;</p>\r
292 \r
293 <p class="whs2"># create a box</p>\r
294 \r
295 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
296 \r
297 <p class="whs1">Toler = geompy.Tolerance(box)</p>\r
298 \r
299 <p class="whs1">print &quot;\nBox \r
300  100x30x100 tolerance:&quot;</p>\r
301 \r
302 <p class="whs1">print &quot; Face \r
303  min. tolerance: &quot;, Toler[0]</p>\r
304 \r
305 <p class="whs1">print &quot; Face \r
306  max. tolerance: &quot;, Toler[1]</p>\r
307 \r
308 <p class="whs1">print &quot; Edge \r
309  min. tolerance: &quot;, Toler[2]</p>\r
310 \r
311 <p class="whs1">print &quot; Edge \r
312  max. tolerance: &quot;, Toler[3]</p>\r
313 \r
314 <p class="whs1">print &quot; Vertex \r
315  min. tolerance: &quot;, Toler[4]</p>\r
316 \r
317 <p class="whs1">print &quot; Vertex \r
318  max. tolerance: &quot;, Toler[5] </p>\r
319 \r
320 <p class="whs1">&nbsp;</p>\r
321 \r
322 <h3>What Is</h3>\r
323 \r
324 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
325  geompy</span></p>\r
326 \r
327 <p class="whs1">&nbsp;</p>\r
328 \r
329 <p class="whs2"># create a box</p>\r
330 \r
331 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
332 \r
333 <p class="whs1">Descr = geompy.WhatIs(box)</p>\r
334 \r
335 <p class="whs1">print &quot;\nBox \r
336  100x30x100 description:&quot;</p>\r
337 \r
338 <p class="whs1">print Descr </p>\r
339 \r
340 <p class="whs1">&nbsp;</p>\r
341 \r
342 <h3>Check Shape</h3>\r
343 \r
344 <p class="whs1">import geompy</p>\r
345 \r
346 <p class="whs1">&nbsp;</p>\r
347 \r
348 <p class="whs2"># create a box</p>\r
349 \r
350 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>\r
351 \r
352 <p class="whs1">IsValid = geompy.CheckShape(box)</p>\r
353 \r
354 <p class="whs1">if IsValid == 0:</p>\r
355 \r
356 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise \r
357  RuntimeError, &quot;Invalid box created&quot;</p>\r
358 \r
359 <p class="whs1">else:</p>\r
360 \r
361 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
362  &quot;\nBox is valid&quot; </p>\r
363 \r
364 <p class="whs1">&nbsp;</p>\r
365 \r
366 <p class="whs1">&nbsp;</p>\r
367 \r
368 <h3>Check Compound of Blocks</h3>\r
369 \r
370 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import \r
371  geompy</span></p>\r
372 \r
373 <p class="whs1">import salome</p>\r
374 \r
375 <p class="whs1">gg = salome.ImportComponentGUI(&quot;GEOM&quot;)</p>\r
376 \r
377 <p class="whs1">&nbsp;</p>\r
378 \r
379 <p class="whs2"># create boxes</p>\r
380 \r
381 <p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>\r
382 \r
383 <p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>\r
384 \r
385 <p class="whs1">&nbsp;</p>\r
386 \r
387 <p class="whs2"># make a compound</p>\r
388 \r
389 <p class="whs1">compound = geompy.MakeCompound([box1, \r
390  box2])</p>\r
391 \r
392 <p class="whs1">&nbsp;</p>\r
393 \r
394 <p class="whs2"># glue the faces of the \r
395  compound</p>\r
396 \r
397 <p class="whs1">tolerance = 1e-5</p>\r
398 \r
399 <p class="whs1">glue = geompy.MakeGlueFaces(compound, \r
400  tolerance)</p>\r
401 \r
402 <p class="whs1">IsValid = geompy.CheckCompoundOfBlocks(glue)</p>\r
403 \r
404 <p class="whs1">if IsValid == 0:</p>\r
405 \r
406 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;raise \r
407  RuntimeError, &quot;Invalid compound created&quot;</p>\r
408 \r
409 <p class="whs1">else:</p>\r
410 \r
411 <p class="whs1">&nbsp;&nbsp;&nbsp;&nbsp;print \r
412  &quot;\nCompound is valid&quot; </p>\r
413 \r
414 <p class="whs1">&nbsp;</p>\r
415 \r
416 <p class="whs1">&nbsp;</p>\r
417 \r
418 <p class="whs1">&nbsp;</p>\r
419 \r
420 <script type="text/javascript" language="javascript1.2">\r
421 <!--\r
422 if (window.writeIntopicBar)\r
423         writeIntopicBar(0);\r
424 //-->\r
425 </script>\r
426 </body>\r
427 </html>\r