# Measurement Tools

### Point Coordinates

import math

import geompy

# create a point

point = geompy.MakeVertex(15., 23., 80.)

# get the coordinates of the point and check its values

coords = geompy.PointCoordinates(point)

# check the obtained coordinate values

tolerance = 1.e-07

def IsEqual(val1, val2): return (math.fabs(val1 - val2) < tolerance)

if IsEqual(coords[0], 15.) and IsEqual(coords[1], 23.) and IsEqual(coords[2], 80.):

print "All values are OK."

else :

print "Coordinates of point must be (15, 23, 80), but returned (",

print coords[0], ", ", coords[1], ", ", coords[2], ")"

pass

### Basic Properties

import geompy

import math

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

props = geompy.BasicProperties(box)

print "\nBox 100x30x100 Basic Properties:"

print " Wires length: ", props[0]

print " Surface area: ", props[1]

print " Volume : ", props[2]

length = math.sqrt((props[0] - 1840)*(props[0] - 1840))

area = math.sqrt((props[1] - 32000)*(props[1] - 32000))

volume = math.sqrt((props[2] - 300000)*(props[2] - 300000))

if length > 1e-7 or area > 1e-7 or volume > 1e-7:

print "While must be:"

print " Wires length: ", 1840

print " Surface area: ", 32000

print " Volume : ", 300000.

### Center of masses

import geompy

import math

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

cm = geompy.MakeCDG(box)

if cm is None:

raise RuntimeError, "MakeCDG(box) failed"

else:

print "\nCentre of gravity of box has been successfully obtained:"

coords = geompy.PointCoordinates(cm)

print "(", coords[0], ", ", coords[1], ", ", coords[2], ")"

dx = math.sqrt((coords[0] - 50)*(coords[0] - 50))

dy = math.sqrt((coords[1] - 15)*(coords[1] - 15))

dz = math.sqrt((coords[2] - 50)*(coords[2] - 50))

if dx > 1e-7 or dy > 1e-7 or dz > 1e-7:

print "But must be (50, 15, 50)"

### Inertia

import geompy

import math

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

In = geompy.Inertia(box)

print "\nInertia matrix of box 100x30x100:"

print " (", In[0], ", ", In[1], ", ", In[2], ")"

print " (", In[3], ", ", In[4], ", ", In[5], ")"

print " (", In[6], ", ", In[7], ", ", In[8], ")"

print "Main moments of inertia of box 100x30x100:"

print " Ix = ", In[9], ", Iy = ", In[10], ", Iz = ", In[11]

### Bounding Box

import geompy

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

bb = geompy.BoundingBox(box)

print "\nBounding Box of box 100x30x100:"

print " Xmin = ", bb[0], ", Xmax = ", bb[1]

print " Ymin = ", bb[2], ", Ymax = ", bb[3]

print " Zmin = ", bb[4], ", Zmax = ", bb[5]

### Minimal Distance

import geompy

# create boxes

box1 = geompy.MakeBoxDXDYDZ(100,30,100)

box2 = geompy.MakeBox(105,0,0,200,30,100)

min_dist = geompy.MinDistance(box1,box2)

print "\nMinimal distance between box1 and box2 = ", min_dist

### Tolerance

import geompy

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

Toler = geompy.Tolerance(box)

print "\nBox 100x30x100 tolerance:"

print " Face min. tolerance: ", Toler[0]

print " Face max. tolerance: ", Toler[1]

print " Edge min. tolerance: ", Toler[2]

print " Edge max. tolerance: ", Toler[3]

print " Vertex min. tolerance: ", Toler[4]

print " Vertex max. tolerance: ", Toler[5]

### What Is

import geompy

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

Descr = geompy.WhatIs(box)

print "\nBox 100x30x100 description:"

print Descr

### Check Shape

import geompy

# create a box

box = geompy.MakeBoxDXDYDZ(100,30,100)

IsValid = geompy.CheckShape(box)

if IsValid == 0:

raise RuntimeError, "Invalid box created"

else:

print "\nBox is valid"

### Check Compound of Blocks

import geompy

import salome

gg = salome.ImportComponentGUI("GEOM")

# create boxes

box1 = geompy.MakeBox(0,0,0,100,50,100)

box2 = geompy.MakeBox(100,0,0,250,50,100)

# make a compound

compound = geompy.MakeCompound([box1, box2])

# glue the faces of the compound

tolerance = 1e-5

glue = geompy.MakeGlueFaces(compound, tolerance)

IsValid = geompy.CheckCompoundOfBlocks(glue)

if IsValid == 0:

raise RuntimeError, "Invalid compound created"

else:

print "\nCompound is valid"