Measurement Tools

Point Coordinates

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)

if coords[0] != 15 or coords[1] != 23 or coords[2] != 80 :

    print "Coordinates of point must be (15, 23, 80), but returned (", coords[0], ", ", coords[1], ", ", coords[2], ")"

else :

    print "All values are OK."

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"