mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2024-12-25 08:50:36 +05:00
460 lines
12 KiB
HTML
Executable File
460 lines
12 KiB
HTML
Executable File
<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
<title>Measurement Tools</title>
|
|
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
|
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">
|
|
<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">
|
|
<!--
|
|
if (navigator.appName !="Netscape")
|
|
{ document.write("<link rel='stylesheet' href='default.css'>");}
|
|
//-->
|
|
</script>
|
|
<style type="text/css">
|
|
<!--
|
|
p.whs1 { font-family:'Lucida Console' , monospace; }
|
|
p.whs2 { font-family:'Times New Roman' , serif; }
|
|
-->
|
|
</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">
|
|
<!--
|
|
function reDo() {
|
|
if (innerWidth != origWidth || innerHeight != origHeight)
|
|
location.reload();
|
|
}
|
|
if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {
|
|
origWidth = innerWidth;
|
|
origHeight = innerHeight;
|
|
onresize = reDo;
|
|
}
|
|
onerror = null;
|
|
//-->
|
|
</script>
|
|
<style type="text/css">
|
|
<!--
|
|
div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }
|
|
-->
|
|
</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>
|
|
<script type="text/javascript" language="javascript" src="whver.js"></script>
|
|
<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>
|
|
<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>
|
|
<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>
|
|
</head>
|
|
<body><script type="text/javascript" language="javascript1.2">
|
|
<!--
|
|
if (window.gbWhTopic)
|
|
{
|
|
if (window.addTocInfo)
|
|
{
|
|
addTocInfo("GEOM module\nTUI Scripts\nMeasurement Tools");
|
|
addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");
|
|
|
|
}
|
|
if (window.writeBtnStyle)
|
|
writeBtnStyle();
|
|
|
|
if (window.writeIntopicBar)
|
|
writeIntopicBar(1);
|
|
|
|
if (window.setRelStartPage)
|
|
{
|
|
setRelStartPage("geom.htm");
|
|
|
|
autoSync(1);
|
|
sendSyncInfo();
|
|
sendAveInfoOut();
|
|
}
|
|
}
|
|
else
|
|
if (window.gbIE4)
|
|
document.location.reload();
|
|
//-->
|
|
</script>
|
|
<h1>Measurement Tools</h1>
|
|
|
|
<h3>Point Coordinates</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p> </p>
|
|
|
|
<p># create a point</p>
|
|
|
|
<p class="whs1">point = geompy.MakeVertex(15,
|
|
23, 80)</p>
|
|
|
|
<p> </p>
|
|
|
|
<p># get point's coordinates and check its values</p>
|
|
|
|
<p class="whs1">coords = geompy.PointCoordinates(point)</p>
|
|
|
|
<p class="whs1">if coords[0] != 15
|
|
or coords[1] != 23 or coords[2] != 80 :</p>
|
|
|
|
<p class="whs1"> print
|
|
"Coordinates of point must be (15, 23, 80), but returned (",
|
|
coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
|
|
|
|
<p class="whs1">else :</p>
|
|
|
|
<p><span style="font-family: 'Lucida Console', monospace;"> print
|
|
"All values are OK."</span> </p>
|
|
|
|
<h3>Basic Properties</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p class="whs1">import math</p>
|
|
|
|
<p> </p>
|
|
|
|
<p># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">props = geompy.BasicProperties(box)</p>
|
|
|
|
<p class="whs1">print "\nBox
|
|
100x30x100 Basic Properties:"</p>
|
|
|
|
<p class="whs1">print " Wires
|
|
length: ", props[0]</p>
|
|
|
|
<p class="whs1">print " Surface
|
|
area: ", props[1]</p>
|
|
|
|
<p class="whs1">print " Volume
|
|
:
|
|
", props[2]</p>
|
|
|
|
<p class="whs1">length = math.sqrt((props[0]
|
|
- 1840)*(props[0] - 1840))</p>
|
|
|
|
<p class="whs1">area = math.sqrt((props[1]
|
|
- 32000)*(props[1] - 32000))</p>
|
|
|
|
<p class="whs1">volume = math.sqrt((props[2]
|
|
- 300000)*(props[2] - 300000))</p>
|
|
|
|
<p class="whs1">if length > 1e-7
|
|
or area > 1e-7 or volume > 1e-7:</p>
|
|
|
|
<p class="whs1"> print
|
|
"While must be:"</p>
|
|
|
|
<p class="whs1"> print
|
|
" Wires length: ", 1840</p>
|
|
|
|
<p class="whs1"> print
|
|
" Surface area: ", 32000</p>
|
|
|
|
<p class="whs1"> print
|
|
" Volume :
|
|
", 300000.</p>
|
|
|
|
<h3>Center of masses</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p class="whs1">import math</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">cm = geompy.MakeCDG(box)</p>
|
|
|
|
<p class="whs1">if cm is None:</p>
|
|
|
|
<p class="whs1"> raise
|
|
RuntimeError, "MakeCDG(box) failed"</p>
|
|
|
|
<p class="whs1">else:</p>
|
|
|
|
<p class="whs1"> print
|
|
"\nCentre of gravity of box has been successfully obtained:"</p>
|
|
|
|
<p class="whs1"> coords
|
|
= geompy.PointCoordinates(cm)</p>
|
|
|
|
<p class="whs1"> print
|
|
"(", coords[0], ", ", coords[1], ", ", coords[2],
|
|
")"</p>
|
|
|
|
<p class="whs1"> dx
|
|
= math.sqrt((coords[0] - 50)*(coords[0] - 50))</p>
|
|
|
|
<p class="whs1"> dy
|
|
= math.sqrt((coords[1] - 15)*(coords[1] - 15))</p>
|
|
|
|
<p class="whs1"> dz
|
|
= math.sqrt((coords[2] - 50)*(coords[2] - 50))</p>
|
|
|
|
<p class="whs1"> if
|
|
dx > 1e-7 or dy > 1e-7 or dz > 1e-7:</p>
|
|
|
|
<p class="whs1"> print
|
|
"But must be (50, 15, 50)" </p>
|
|
|
|
<h3>Inertia</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p class="whs1">import math</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">In = geompy.Inertia(box)</p>
|
|
|
|
<p class="whs1">print "\nInertia
|
|
matrix of box 100x30x100:"</p>
|
|
|
|
<p class="whs1">print " (",
|
|
In[0], ", ", In[1], ", ", In[2], ")"</p>
|
|
|
|
<p class="whs1">print " (",
|
|
In[3], ", ", In[4], ", ", In[5], ")"</p>
|
|
|
|
<p class="whs1">print " (",
|
|
In[6], ", ", In[7], ", ", In[8], ")"</p>
|
|
|
|
<p class="whs1">print "Main moments
|
|
of inertia of box 100x30x100:"</p>
|
|
|
|
<p class="whs1">print " Ix =
|
|
", In[9], ", Iy = ", In[10], ", Iz = ", In[11]
|
|
</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>Bounding Box</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">bb = geompy.BoundingBox(box)</p>
|
|
|
|
<p class="whs1">print "\nBounding
|
|
Box of box 100x30x100:"</p>
|
|
|
|
<p class="whs1">print " Xmin
|
|
= ", bb[0], ", Xmax = ", bb[1]</p>
|
|
|
|
<p class="whs1">print " Ymin
|
|
= ", bb[2], ", Ymax = ", bb[3]</p>
|
|
|
|
<p class="whs1">print " Zmin
|
|
= ", bb[4], ", Zmax = ", bb[5] </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>Minimal Distance </h3>
|
|
|
|
<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
|
|
geompy</span></p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create boxes</p>
|
|
|
|
<p class="whs1">box1 = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">box2 = geompy.MakeBox(105,0,0,200,30,100)</p>
|
|
|
|
<p class="whs1">min_dist = geompy.MinDistance(box1,box2)</p>
|
|
|
|
<p class="whs1">print "\nMinimal
|
|
distance between box1 and box2 = ", min_dist </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1">Point Coordinates</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
|
|
geompy</span></p>
|
|
|
|
<p class="whs1"># create a point</p>
|
|
|
|
<p class="whs1">point = geompy.MakeVertex(15,
|
|
23, 80)</p>
|
|
|
|
<p class="whs1"># get point's coordinates
|
|
and check its values</p>
|
|
|
|
<p class="whs1">coords = geompy.PointCoordinates(point)</p>
|
|
|
|
<p class="whs1">if coords[0] != 15
|
|
or coords[1] != 23 or coords[2] != 80 :</p>
|
|
|
|
<p class="whs1"> print
|
|
"Coordinates of point must be (15, 23, 80), but returned (",
|
|
coords[0], ", ", coords[1], ", ", coords[2], ")"</p>
|
|
|
|
<p class="whs1">else :</p>
|
|
|
|
<p class="whs1"> print
|
|
"All values are OK." </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>Tolerance</h3>
|
|
|
|
<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
|
|
geompy</span></p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">Toler = geompy.Tolerance(box)</p>
|
|
|
|
<p class="whs1">print "\nBox
|
|
100x30x100 tolerance:"</p>
|
|
|
|
<p class="whs1">print " Face
|
|
min. tolerance: ", Toler[0]</p>
|
|
|
|
<p class="whs1">print " Face
|
|
max. tolerance: ", Toler[1]</p>
|
|
|
|
<p class="whs1">print " Edge
|
|
min. tolerance: ", Toler[2]</p>
|
|
|
|
<p class="whs1">print " Edge
|
|
max. tolerance: ", Toler[3]</p>
|
|
|
|
<p class="whs1">print " Vertex
|
|
min. tolerance: ", Toler[4]</p>
|
|
|
|
<p class="whs1">print " Vertex
|
|
max. tolerance: ", Toler[5] </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>What Is</h3>
|
|
|
|
<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
|
|
geompy</span></p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">Descr = geompy.WhatIs(box)</p>
|
|
|
|
<p class="whs1">print "\nBox
|
|
100x30x100 description:"</p>
|
|
|
|
<p class="whs1">print Descr </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>Check Shape</h3>
|
|
|
|
<p class="whs1">import geompy</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create a box</p>
|
|
|
|
<p class="whs1">box = geompy.MakeBoxDXDYDZ(100,30,100)</p>
|
|
|
|
<p class="whs1">IsValid = geompy.CheckShape(box)</p>
|
|
|
|
<p class="whs1">if IsValid == 0:</p>
|
|
|
|
<p class="whs1"> raise
|
|
RuntimeError, "Invalid box created"</p>
|
|
|
|
<p class="whs1">else:</p>
|
|
|
|
<p class="whs1"> print
|
|
"\nBox is valid" </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<h3>Check Compound of Blocks</h3>
|
|
|
|
<p class="whs1"><span style="font-family: 'Lucida Console', monospace;">import
|
|
geompy</span></p>
|
|
|
|
<p class="whs1">import salome</p>
|
|
|
|
<p class="whs1">gg = salome.ImportComponentGUI("GEOM")</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># create boxes</p>
|
|
|
|
<p class="whs1">box1 = geompy.MakeBox(0,0,0,100,50,100)</p>
|
|
|
|
<p class="whs1">box2 = geompy.MakeBox(100,0,0,250,50,100)</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># make compound</p>
|
|
|
|
<p class="whs1">compound = geompy.MakeCompound([box1,
|
|
box2])</p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs2"># glue compound's faces</p>
|
|
|
|
<p class="whs1">tolerance = 1e-5</p>
|
|
|
|
<p class="whs1">glue = geompy.MakeGlueFaces(compound,
|
|
tolerance)</p>
|
|
|
|
<p class="whs1">IsValid = geompy.CheckCompoundOfBlocks(glue)</p>
|
|
|
|
<p class="whs1">if IsValid == 0:</p>
|
|
|
|
<p class="whs1"> raise
|
|
RuntimeError, "Invalid compound created"</p>
|
|
|
|
<p class="whs1">else:</p>
|
|
|
|
<p class="whs1"> print
|
|
"\nCompound is valid" </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<p class="whs1"> </p>
|
|
|
|
<script type="text/javascript" language="javascript1.2">
|
|
<!--
|
|
if (window.writeIntopicBar)
|
|
writeIntopicBar(0);
|
|
//-->
|
|
</script>
|
|
</body>
|
|
</html>
|