1 <!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
\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
11 if (navigator.appName !="Netscape")
\r
12 { document.write("<link rel='stylesheet' href='default.css'>");}
\r
15 <style type="text/css">
\r
17 p.whs1 { font-family:'Lucida Console' , monospace; }
\r
18 p.whs2 { font-family:'Times New Roman' , serif; }
\r
20 </style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
\r
23 if (innerWidth != origWidth || innerHeight != origHeight)
\r
26 if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
\r
27 origWidth = innerWidth;
\r
28 origHeight = innerHeight;
\r
34 <style type="text/css">
\r
36 div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
\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
44 <body><script type="text/javascript" language="javascript1.2">
\r
46 if (window.gbWhTopic)
\r
48 if (window.addTocInfo)
\r
50 addTocInfo("GEOM module\nTUI Scripts\nMeasurement Tools");
\r
51 addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");
\r
54 if (window.writeBtnStyle)
\r
57 if (window.writeIntopicBar)
\r
60 if (window.setRelStartPage)
\r
62 setRelStartPage("geom.htm");
\r
71 document.location.reload();
\r
74 <h1>Measurement Tools</h1>
\r
76 <h3>Point Coordinates</h3>
\r
78 <p class="whs1">import geompy</p>
\r
82 <p># create a point</p>
\r
84 <p class="whs1">point = geompy.MakeVertex(15,
\r
89 <p># get point's coordinates and check its values</p>
\r
91 <p class="whs1">coords = geompy.PointCoordinates(point)</p>
\r
93 <p class="whs1">if coords[0] != 15
\r
94 or coords[1] != 23 or coords[2] != 80 :</p>
\r
96 <p class="whs1"> print
\r
97 "Coordinates of point must be (15, 23, 80), but returned (",
\r
98 coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
\r
100 <p class="whs1">else :</p>
\r
102 <p><span style="font-family: 'Lucida Console', monospace;"> print
\r
103 "All values are OK."</span> </p>
\r
105 <h3>Basic Properties</h3>
\r
107 <p class="whs1">import geompy</p>
\r
109 <p class="whs1">import math</p>
\r
113 <p># create a box</p>
\r
115 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
117 <p class="whs1">props = geompy.BasicProperties(box)</p>
\r
119 <p class="whs1">print "\nBox
\r
120 100x30x100 Basic Properties:"</p>
\r
122 <p class="whs1">print " Wires
\r
123 length: ", props[0]</p>
\r
125 <p class="whs1">print " Surface
\r
126 area: ", props[1]</p>
\r
128 <p class="whs1">print " Volume
\r
129 :
\r
130 ", props[2]</p>
\r
132 <p class="whs1">length = math.sqrt((props[0]
\r
133 - 1840)*(props[0] - 1840))</p>
\r
135 <p class="whs1">area = math.sqrt((props[1]
\r
136 - 32000)*(props[1] - 32000))</p>
\r
138 <p class="whs1">volume = math.sqrt((props[2]
\r
139 - 300000)*(props[2] - 300000))</p>
\r
141 <p class="whs1">if length > 1e-7
\r
142 or area > 1e-7 or volume > 1e-7:</p>
\r
144 <p class="whs1"> print
\r
145 "While must be:"</p>
\r
147 <p class="whs1"> print
\r
148 " Wires length: ", 1840</p>
\r
150 <p class="whs1"> print
\r
151 " Surface area: ", 32000</p>
\r
153 <p class="whs1"> print
\r
154 " Volume :
\r
155 ", 300000.</p>
\r
157 <h3>Center of masses</h3>
\r
159 <p class="whs1">import geompy</p>
\r
161 <p class="whs1">import math</p>
\r
163 <p class="whs1"> </p>
\r
165 <p class="whs2"># create a box</p>
\r
167 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
169 <p class="whs1">cm = geompy.MakeCDG(box)</p>
\r
171 <p class="whs1">if cm is None:</p>
\r
173 <p class="whs1"> raise
\r
174 RuntimeError, "MakeCDG(box) failed"</p>
\r
176 <p class="whs1">else:</p>
\r
178 <p class="whs1"> print
\r
179 "\nCentre of gravity of box has been successfully obtained:"</p>
\r
181 <p class="whs1"> coords
\r
182 = geompy.PointCoordinates(cm)</p>
\r
184 <p class="whs1"> print
\r
185 "(", coords[0], ", ", coords[1], ", ", coords[2],
\r
188 <p class="whs1"> dx
\r
189 = math.sqrt((coords[0] - 50)*(coords[0] - 50))</p>
\r
191 <p class="whs1"> dy
\r
192 = math.sqrt((coords[1] - 15)*(coords[1] - 15))</p>
\r
194 <p class="whs1"> dz
\r
195 = math.sqrt((coords[2] - 50)*(coords[2] - 50))</p>
\r
197 <p class="whs1"> if
\r
198 dx > 1e-7 or dy > 1e-7 or dz > 1e-7:</p>
\r
200 <p class="whs1"> print
\r
201 "But must be (50, 15, 50)" </p>
\r
205 <p class="whs1">import geompy</p>
\r
207 <p class="whs1">import math</p>
\r
209 <p class="whs1"> </p>
\r
211 <p class="whs2"># create a box</p>
\r
213 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
215 <p class="whs1">In = geompy.Inertia(box)</p>
\r
217 <p class="whs1">print "\nInertia
\r
218 matrix of box 100x30x100:"</p>
\r
220 <p class="whs1">print " (",
\r
221 In[0], ", ", In[1], ", ", In[2], ")"</p>
\r
223 <p class="whs1">print " (",
\r
224 In[3], ", ", In[4], ", ", In[5], ")"</p>
\r
226 <p class="whs1">print " (",
\r
227 In[6], ", ", In[7], ", ", In[8], ")"</p>
\r
229 <p class="whs1">print "Main moments
\r
230 of inertia of box 100x30x100:"</p>
\r
232 <p class="whs1">print " Ix =
\r
233 ", In[9], ", Iy = ", In[10], ", Iz = ", In[11]
\r
236 <p class="whs1"> </p>
\r
238 <h3>Bounding Box</h3>
\r
240 <p class="whs1">import geompy</p>
\r
242 <p class="whs1"> </p>
\r
244 <p class="whs2"># create a box</p>
\r
246 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
248 <p class="whs1">bb = geompy.BoundingBox(box)</p>
\r
250 <p class="whs1">print "\nBounding
\r
251 Box of box 100x30x100:"</p>
\r
253 <p class="whs1">print " Xmin
\r
254 = ", bb[0], ", Xmax = ", bb[1]</p>
\r
256 <p class="whs1">print " Ymin
\r
257 = ", bb[2], ", Ymax = ", bb[3]</p>
\r
259 <p class="whs1">print " Zmin
\r
260 = ", bb[4], ", Zmax = ", bb[5] </p>
\r
262 <p class="whs1"> </p>
\r
264 <p class="whs1"> </p>
\r
266 <h3>Minimal Distance </h3>
\r
268 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
271 <p class="whs1"> </p>
\r
273 <p class="whs2"># create boxes</p>
\r
275 <p class="whs1">box1 = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
277 <p class="whs1">box2 = geompy.MakeBox(105,0,0,200,30,100)</p>
\r
279 <p class="whs1">min_dist = geompy.MinDistance(box1,box2)</p>
\r
281 <p class="whs1">print "\nMinimal
\r
282 distance between box1 and box2 = ", min_dist </p>
\r
284 <p class="whs1"> </p>
\r
286 <p class="whs1">Point Coordinates</p>
\r
288 <p class="whs1"> </p>
\r
290 <p class="whs1"> </p>
\r
292 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
295 <p class="whs1"># create a point</p>
\r
297 <p class="whs1">point = geompy.MakeVertex(15,
\r
300 <p class="whs1"># get point's coordinates
\r
301 and check its values</p>
\r
303 <p class="whs1">coords = geompy.PointCoordinates(point)</p>
\r
305 <p class="whs1">if coords[0] != 15
\r
306 or coords[1] != 23 or coords[2] != 80 :</p>
\r
308 <p class="whs1"> print
\r
309 "Coordinates of point must be (15, 23, 80), but returned (",
\r
310 coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
\r
312 <p class="whs1">else :</p>
\r
314 <p class="whs1"> print
\r
315 "All values are OK." </p>
\r
317 <p class="whs1"> </p>
\r
321 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
324 <p class="whs1"> </p>
\r
326 <p class="whs2"># create a box</p>
\r
328 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
330 <p class="whs1">Toler = geompy.Tolerance(box)</p>
\r
332 <p class="whs1">print "\nBox
\r
333 100x30x100 tolerance:"</p>
\r
335 <p class="whs1">print " Face
\r
336 min. tolerance: ", Toler[0]</p>
\r
338 <p class="whs1">print " Face
\r
339 max. tolerance: ", Toler[1]</p>
\r
341 <p class="whs1">print " Edge
\r
342 min. tolerance: ", Toler[2]</p>
\r
344 <p class="whs1">print " Edge
\r
345 max. tolerance: ", Toler[3]</p>
\r
347 <p class="whs1">print " Vertex
\r
348 min. tolerance: ", Toler[4]</p>
\r
350 <p class="whs1">print " Vertex
\r
351 max. tolerance: ", Toler[5] </p>
\r
353 <p class="whs1"> </p>
\r
357 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
360 <p class="whs1"> </p>
\r
362 <p class="whs2"># create a box</p>
\r
364 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
366 <p class="whs1">Descr = geompy.WhatIs(box)</p>
\r
368 <p class="whs1">print "\nBox
\r
369 100x30x100 description:"</p>
\r
371 <p class="whs1">print Descr </p>
\r
373 <p class="whs1"> </p>
\r
375 <h3>Check Shape</h3>
\r
377 <p class="whs1">import geompy</p>
\r
379 <p class="whs1"> </p>
\r
381 <p class="whs2"># create a box</p>
\r
383 <p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
\r
385 <p class="whs1">IsValid = geompy.CheckShape(box)</p>
\r
387 <p class="whs1">if IsValid == 0:</p>
\r
389 <p class="whs1"> raise
\r
390 RuntimeError, "Invalid box created"</p>
\r
392 <p class="whs1">else:</p>
\r
394 <p class="whs1"> print
\r
395 "\nBox is valid" </p>
\r
397 <p class="whs1"> </p>
\r
399 <p class="whs1"> </p>
\r
401 <h3>Check Compound of Blocks</h3>
\r
403 <p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
\r
406 <p class="whs1">import salome</p>
\r
408 <p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
\r
410 <p class="whs1"> </p>
\r
412 <p class="whs2"># create boxes</p>
\r
414 <p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
\r
416 <p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>
\r
418 <p class="whs1"> </p>
\r
420 <p class="whs2"># make compound</p>
\r
422 <p class="whs1">compound = geompy.MakeCompound([box1,
\r
425 <p class="whs1"> </p>
\r
427 <p class="whs2"># glue compound's faces</p>
\r
429 <p class="whs1">tolerance = 1e-5</p>
\r
431 <p class="whs1">glue = geompy.MakeGlueFaces(compound,
\r
434 <p class="whs1">IsValid = geompy.CheckCompoundOfBlocks(glue)</p>
\r
436 <p class="whs1">if IsValid == 0:</p>
\r
438 <p class="whs1"> raise
\r
439 RuntimeError, "Invalid compound created"</p>
\r
441 <p class="whs1">else:</p>
\r
443 <p class="whs1"> print
\r
444 "\nCompound is valid" </p>
\r
446 <p class="whs1"> </p>
\r
448 <p class="whs1"> </p>
\r
450 <p class="whs1"> </p>
\r
452 <script type="text/javascript" language="javascript1.2">
\r
454 if (window.writeIntopicBar)
\r
455 writeIntopicBar(0);
\r