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