Update doc

This commit is contained in:
gdd 2012-04-18 09:17:03 +00:00
parent 6795bf2428
commit 402eaa1b92
34 changed files with 551 additions and 426 deletions

View File

@ -13,6 +13,8 @@ Shape1 and Shape2 are shapes between which the angle is computed.
Another TUI command is <em>geompy.GetAngleRadians(shape1,shape2),</em>
which returns the value of angle in radians.
See also a \ref tui_angle_page "TUI example".
\image html angle.png
*/

View File

@ -10,6 +10,8 @@ Python Tuple.
\n<b>TUI Command:</b> <em>geompy.BasicProperties(Shape),</em> where
\em Shape is a shape whose properties are inquired.
See also a \ref tui_basic_properties_page "TUI example".
\image html neo-basicprop.png
*/

View File

@ -11,6 +11,8 @@ checked, \em NoError is false if an error occurred while checking free
boundaries, \em ClosedWires is a list of closed free boundary wires,
\em OpenWires is a list of open free boundary wires.
See also a \ref tui_free_boundaries_page "TUI example".
\image html repair9.png
*/

View File

@ -18,6 +18,8 @@ Ymax, Zmin, Zmax).
\n <b>TUI Command:</b> <em>geompy.BoundingBox(Shape),</em> where \em Shape
is a shape for which a bounding box is computed.
See also a \ref tui_bounding_box_page "TUI example".
\image html measures5.png
*/

View File

@ -9,6 +9,8 @@ the selected geometrical object.
\n <b>TUI Command:</b> <em> geompy.MakeCDG(Shape),</em> where \em Shape is
the shape for which a center of gravity is computed.
See also a \ref tui_center_of_mass_page "TUI example".
\image html measures3.png
*/

View File

@ -1,6 +1,6 @@
/*!
\page check_compound_page Check Compound of Blocks
\page check_compound_of_blocks_page Check Compound of Blocks
Checks whether a shape is a compound of glued blocks. To be
considered as a compound of blocks, the given shape must satisfy the
@ -26,6 +26,8 @@ following conditions:
is a valid compound of blocks. If it is true, then the validity flag
is returned, and encountered errors are printed in the python console.
See also a \ref tui_check_compound_of_blocks_page "TUI example".
\image html measures10.png
*/

View File

@ -15,6 +15,8 @@ and their limitations refer to <a href="SALOME_BOA_PA.pdf">this document</a>.
\n <b>TUI Command:</b> <em>geompy.CheckSelfIntersections(theShape),</em>
where \em theShape is the shape checked for validity.
See also a \ref tui_check_self_intersections_page "TUI example".
\image html measures11.png
*/

View File

@ -1,6 +1,6 @@
/*!
\page check_page Check Shape
\page check_shape_page Check Shape
\n Checks the topology of the selected geometrical object and returns
True if it is valid. Check also geometry checkbox allows to test the
@ -10,6 +10,8 @@ geometry as well.
\n <b>TUI Command:</b> <em>geompy.CheckShape(theShape, theIsCheckGeom = 0),</em>
where \em theShape is the shape checked for validity.
See also a \ref tui_check_shape_page "TUI example".
\image html measures9.png

View File

@ -1,6 +1,6 @@
/*!
\page faces_page Check Free Faces
\page free_faces_page Check Free Faces
Highlights all free faces of a given shape. A free
face is a face which is not shared between two objects of the shape.
@ -12,6 +12,8 @@ face is a face which is not shared between two objects of the shape.
<b>TUI Command:</b> <em>GetFreeFacesIDs(Shape),</em> where \em Shape is
a shape to be checked.
See also a \ref tui_free_faces_page "TUI example".
\image html repair10.png
*/

View File

@ -14,6 +14,8 @@ the relative moments of inertia in the form of Python Tuple
a shape for which the own matrix of inertia and the relative moments of inertia are
returned.
See also a \ref tui_inertia_page "TUI example".
\image html measures4.png
*/

View File

@ -9,6 +9,8 @@ the coordinates of the vector of distance and shows the vector in the viewer.
where \em Shape1 and \em Shape2 are shapes between which the minimal
distance is computed.
See also a \ref tui_min_distance_page "TUI example".
\image html distance.png
*/

View File

@ -5,6 +5,12 @@
\n Calculates the normal vector to the selected \b Face. The \b Point
is a point of the \b Face, where the Normal should be calculated.
\n <b>TUI Command:</b> <em>geompy.GetNormal(Face, OptionalPoint = None),</em> where \em Face is
the face to define normale of and \em OptionalPoint is the point to compute the normal at.
If the point is not given, the normale is calculated at the center of mass.
See also a \ref tui_normal_face_page "TUI example".
\image html normaletoface.png
*/

View File

@ -8,6 +8,8 @@ Returns the coordinates of a point.
\n<b>TUI Command:</b> <em>geompy.PointCoordinates(Point),</em>
where \em Point is a point whose coordinates are inquired.
See also a \ref tui_point_coordinates_page "TUI example".
\image html measures1.png
*/

View File

@ -10,6 +10,8 @@ FaceMaxTol, EgdeMinTol, EgdeMaxTol, VertexMinTol, VertexMaxTol).
\n <b>TUI Command:</b> <em>geompy.Tolerance(Shape),</em> where \em Shape
is a shape for which minimal and maximal tolerances are returned.
See also a \ref tui_tolerance_page "TUI example".
\image html new-tolerance.png
*/

View File

@ -0,0 +1,53 @@
/*!
\page tui_angle_page Angle
\code
import salome
salome.salome_init()
import math
import geompy
geompy.init_geom(salome.myStudy)
OX = geompy.MakeVectorDXDYDZ(10, 0,0)
OXY = geompy.MakeVectorDXDYDZ(10,10,0)
# in one plane
Angle = geompy.GetAngle(OX, OXY)
print "\nAngle between OX and OXY = ", Angle
if math.fabs(Angle - 45.0) > 1e-05:
print " Error: returned angle is", Angle, "while must be 45.0"
pass
Angle = geompy.GetAngleRadians(OX, OXY)
print "\nAngle between OX and OXY in radians = ", Angle
if math.fabs(Angle - math.pi/4) > 1e-05:
print " Error: returned angle is", Angle, "while must be pi/4"
pass
# not in one plane
OXY_shift = geompy.MakeTranslation(OXY,10,-10,20)
Angle = geompy.GetAngle(OX, OXY_shift)
print "Angle between OX and OXY_shift = ", Angle
if math.fabs(Angle - 45.0) > 1e-05:
print " Error: returned angle is", Angle, "while must be 45.0"
pass
# not linear
pnt1 = geompy.MakeVertex(0, 0, 0)
pnt2 = geompy.MakeVertex(10, 0, 0)
pnt3 = geompy.MakeVertex(20, 10, 0)
arc = geompy.MakeArc(pnt1, pnt2, pnt3)
Angle = geompy.GetAngle(OX, arc)
if (math.fabs(Angle + 1.0) > 1e-6 or geompy.MeasuOp.IsDone()):
print "Error. Angle must not be computed on curvilinear edges"
pass
\endcode
*/

View File

@ -0,0 +1,26 @@
/*!
\page tui_basic_properties_page Basic Properties
\code
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.
\endcode
*/

View File

@ -0,0 +1,17 @@
/*!
\page tui_bounding_box_page Bounding Box
\code
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]
\endcode
*/

View File

@ -0,0 +1,25 @@
/*!
\page tui_center_of_mass_page Center of masses
\code
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)"
\endcode
*/

View File

@ -0,0 +1,27 @@
/*!
\page tui_check_compound_of_blocks_page Check Compound of Blocks
\code
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"
\endcode
*/

View File

@ -0,0 +1,17 @@
/*!
\page tui_check_self_intersections_page Detect Self-intersections
\code
import geompy
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
IsValid = geompy.CheckSelfIntersections(box)
if IsValid == 0:
raise RuntimeError, "Box with self-intersections created"
else:
print "\nBox is valid"
\endcode
*/

View File

@ -0,0 +1,17 @@
/*!
\page tui_check_shape_page Check Shape
\code
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"
\endcode
*/

View File

@ -0,0 +1,85 @@
/*!
\page tui_free_boundaries_page Check Free Boundaries
\code
import os
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])
# import from *.brep
ImportFromBREP = geompy.ImportBREP(os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep")
# get a face
faces = geompy.SubShapeAllSortedCentres(ImportFromBREP, geompy.ShapeType["FACE"])
# get the free boundary for face 32
Res = geompy.GetFreeBoundary(faces[32])
isSuccess = Res[0]
ClosedWires = Res[1]
OpenWires = Res[2]
if isSuccess == 1 :
print "Checking free boudaries is OK."
else :
print "Checking free boudaries is KO!"
print "len(ClosedWires) = ", len(ClosedWires)
i = 0
for wire in ClosedWires :
wire_name = "Face 32 -> Close wires : WIRE %d"%(i+1)
geompy.addToStudy(ClosedWires[i], wire_name)
if i < len(ClosedWires) :
i = i+ 1
print "len(OpenWires) = ", len(OpenWires)
i = 0
for wire in OpenWires :
wire_name = "Face 32 -> Open wires : WIRE %d"%(i+1)
geompy.addToStudy(OpenWires[i], wire_name)
if i < len(OpenWires) :
i = i+ 1
# get the free boundary for face 41
Res = geompy.GetFreeBoundary(faces[41])
isSuccess = Res[0]
ClosedWires = Res[1]
OpenWires = Res[2]
if isSuccess == 1 :
print "Checking free boudaries is OK."
else :
print "Checking free boudaries is KO!"
print "len(ClosedWires) = ", len(ClosedWires)
i = 0
for wire in ClosedWires :
wire_name = "Face 41 -> Close wires : WIRE %d"%(i+1)
geompy.addToStudy(ClosedWires[i], wire_name)
if i < len(ClosedWires) :
i = i+ 1
print "len(OpenWires) = ", len(OpenWires)
i = 0
for wire in OpenWires :
wire_name = "Face 41 -> Open wires : WIRE %d"%(i+1)
geompy.addToStudy(OpenWires[i], wire_name)
if i < len(OpenWires) :
i = i+ 1
# add the imported object to the study
id_ImportFromBREP = geompy.addToStudy(ImportFromBREP, "ImportFromBREP")
salome.sg.updateObjBrowser(1)
\endcode
*/

View File

@ -0,0 +1,52 @@
/*!
\page tui_free_faces_page Check Free Faces
\code
import geompy
import salome
gg = salome.ImportComponentGUI("GEOM")
# create a vertex and a vector
p1 = geompy.MakeVertex(35, 35, 0)
p2 = geompy.MakeVertex(35, 35, 50)
v = geompy.MakeVector(p1, p2)
# create a cylinder
cylinder = geompy.MakeCone(p1, v, 30, 20, 20)
# create a cone
cone = geompy.MakeCone(p1, v, 70, 40, 60)
# make cut
cut = geompy.MakeCut(cone, cylinder)
# get faces as sub-shapes
faces = []
faces = geompy.SubShapeAllSortedCentres(cut, geompy.ShapeType["FACE"])
f_2 = geompy.GetSubShapeID(cut, faces[0])
# remove one face from the shape
cut_without_f_2 = geompy.SuppressFaces(cut, [f_2])
# suppress the specified wire
result = geompy.GetFreeFacesIDs(cut_without_f_2)
print "A number of free faces is ", len(result)
# add objects in the study
all_faces = geompy.SubShapeAllSortedCentres(cut_without_f_2, geompy.ShapeType["FACE"])
for face in all_faces :
sub_shape_id = geompy.GetSubShapeID(cut_without_f_2, face)
if result.count(sub_shape_id) > 0 :
face_name = "Free face %d"%(sub_shape_id)
geompy.addToStudy(face, face_name)
# in this example all faces from cut_without_f_2 are free
id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")
# display the results
gg.createAndDisplayGO(id_cut_without_f_2)
gg.setDisplayMode(id_cut_without_f_2,1)
\endcode
*/

View File

@ -0,0 +1,20 @@
/*!
\page tui_inertia_page Inertia
\code
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]
\endcode
*/

View File

@ -2,425 +2,22 @@
\page tui_measurement_tools_page Measurement Tools
<br><h2>Point Coordinates</h2>
\code
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
\endcode
<br><h2>Basic Properties</h2>
\code
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.
\endcode
<br><h2>Center of masses</h2>
\code
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)"
\endcode
<br><h2>Get vertex by index</h2>
\code
import geompy
# Create auxiliary objects
Vertex_1 = geompy.MakeVertex(0, 0, 0)
Vertex_2 = geompy.MakeVertex(10, 20, 0)
Vertex_3 = geompy.MakeVertex(0, 40, 0)
Vertex_4 = geompy.MakeVertex(-10, 60, 0)
Vertex_5 = geompy.MakeVertex(0, 80, 0)
Curve_1 = geompy.MakeInterpol([Vertex_1, Vertex_2, Vertex_3])
Curve_2 = geompy.MakeInterpol([Vertex_5, Vertex_4, Vertex_3])
Wire_1 = geompy.MakeWire([Curve_1, Curve_2])
Reversed_Wire = geompy.ChangeOrientationShellCopy(Wire_1)
# Get The vertexes from Reversed Wire by different functions
vertex_0 = geompy.GetFirstVertex(Reversed_Wire)
vertex_1 = geompy.GetVertexByIndex(Reversed_Wire, 1)
vertex_2 = geompy.GetLastVertex(Reversed_Wire)
# Publish objects in study
geompy.addToStudy( Wire_1, "Wire_1" )
geompy.addToStudy( Reversed_Wire, "Reversed_Wire" )
geompy.addToStudy( vertex_0, "vertex_0" )
geompy.addToStudy( vertex_1, "vertex_1" )
geompy.addToStudy( vertex_2, "vertex_2" )
\endcode
<br><h2>Inertia</h2>
\code
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]
\endcode
<br><h2>Check Free Boundaries</h2>
\code
import os
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])
# import from *.brep
ImportFromBREP = geompy.ImportBREP(os.getenv("DATA_DIR")+"/Shapes/Brep/flight_solid.brep")
# get a face
faces = geompy.SubShapeAllSortedCentres(ImportFromBREP, geompy.ShapeType["FACE"])
# get the free boundary for face 32
Res = geompy.GetFreeBoundary(faces[32])
isSuccess = Res[0]
ClosedWires = Res[1]
OpenWires = Res[2]
if isSuccess == 1 :
print "Checking free boudaries is OK."
else :
print "Checking free boudaries is KO!"
print "len(ClosedWires) = ", len(ClosedWires)
i = 0
for wire in ClosedWires :
wire_name = "Face 32 -> Close wires : WIRE %d"%(i+1)
geompy.addToStudy(ClosedWires[i], wire_name)
if i < len(ClosedWires) :
i = i+ 1
print "len(OpenWires) = ", len(OpenWires)
i = 0
for wire in OpenWires :
wire_name = "Face 32 -> Open wires : WIRE %d"%(i+1)
geompy.addToStudy(OpenWires[i], wire_name)
if i < len(OpenWires) :
i = i+ 1
# get the free boundary for face 41
Res = geompy.GetFreeBoundary(faces[41])
isSuccess = Res[0]
ClosedWires = Res[1]
OpenWires = Res[2]
if isSuccess == 1 :
print "Checking free boudaries is OK."
else :
print "Checking free boudaries is KO!"
print "len(ClosedWires) = ", len(ClosedWires)
i = 0
for wire in ClosedWires :
wire_name = "Face 41 -> Close wires : WIRE %d"%(i+1)
geompy.addToStudy(ClosedWires[i], wire_name)
if i < len(ClosedWires) :
i = i+ 1
print "len(OpenWires) = ", len(OpenWires)
i = 0
for wire in OpenWires :
wire_name = "Face 41 -> Open wires : WIRE %d"%(i+1)
geompy.addToStudy(OpenWires[i], wire_name)
if i < len(OpenWires) :
i = i+ 1
# add the imported object to the study
id_ImportFromBREP = geompy.addToStudy(ImportFromBREP, "ImportFromBREP")
salome.sg.updateObjBrowser(1)
\endcode
<br><h2>Check Free Faces</h2>
\code
import geompy
import salome
gg = salome.ImportComponentGUI("GEOM")
# create a vertex and a vector
p1 = geompy.MakeVertex(35, 35, 0)
p2 = geompy.MakeVertex(35, 35, 50)
v = geompy.MakeVector(p1, p2)
# create a cylinder
cylinder = geompy.MakeCone(p1, v, 30, 20, 20)
# create a cone
cone = geompy.MakeCone(p1, v, 70, 40, 60)
# make cut
cut = geompy.MakeCut(cone, cylinder)
# get faces as sub-shapes
faces = []
faces = geompy.SubShapeAllSortedCentres(cut, geompy.ShapeType["FACE"])
f_2 = geompy.GetSubShapeID(cut, faces[0])
# remove one face from the shape
cut_without_f_2 = geompy.SuppressFaces(cut, [f_2])
# suppress the specified wire
result = geompy.GetFreeFacesIDs(cut_without_f_2)
print "A number of free faces is ", len(result)
# add objects in the study
all_faces = geompy.SubShapeAllSortedCentres(cut_without_f_2, geompy.ShapeType["FACE"])
for face in all_faces :
sub_shape_id = geompy.GetSubShapeID(cut_without_f_2, face)
if result.count(sub_shape_id) > 0 :
face_name = "Free face %d"%(sub_shape_id)
geompy.addToStudy(face, face_name)
# in this example all faces from cut_without_f_2 are free
id_cut_without_f_2 = geompy.addToStudy(cut_without_f_2, "Cut without f_2")
# display the results
gg.createAndDisplayGO(id_cut_without_f_2)
gg.setDisplayMode(id_cut_without_f_2,1)
\endcode
<br><h2>Bounding Box</h2>
\code
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]
\endcode
<br><h2>Minimal Distance</h2>
\code
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
\endcode
<br><h2>Tolerance</h2>
\code
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]
\endcode
<br><h2>Angle</h2>
\code
import salome
salome.salome_init()
import math
import geompy
geompy.init_geom(salome.myStudy)
OX = geompy.MakeVectorDXDYDZ(10, 0,0)
OXY = geompy.MakeVectorDXDYDZ(10,10,0)
# in one plane
Angle = geompy.GetAngle(OX, OXY)
print "\nAngle between OX and OXY = ", Angle
if math.fabs(Angle - 45.0) > 1e-05:
print " Error: returned angle is", Angle, "while must be 45.0"
pass
Angle = geompy.GetAngleRadians(OX, OXY)
print "\nAngle between OX and OXY in radians = ", Angle
if math.fabs(Angle - math.pi/4) > 1e-05:
print " Error: returned angle is", Angle, "while must be pi/4"
pass
# not in one plane
OXY_shift = geompy.MakeTranslation(OXY,10,-10,20)
Angle = geompy.GetAngle(OX, OXY_shift)
print "Angle between OX and OXY_shift = ", Angle
if math.fabs(Angle - 45.0) > 1e-05:
print " Error: returned angle is", Angle, "while must be 45.0"
pass
# not linear
pnt1 = geompy.MakeVertex(0, 0, 0)
pnt2 = geompy.MakeVertex(10, 0, 0)
pnt3 = geompy.MakeVertex(20, 10, 0)
arc = geompy.MakeArc(pnt1, pnt2, pnt3)
Angle = geompy.GetAngle(OX, arc)
if (math.fabs(Angle + 1.0) > 1e-6 or geompy.MeasuOp.IsDone()):
print "Error. Angle must not be computed on curvilinear edges"
pass
\endcode
<br><h2>What Is</h2>
\code
import geompy
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
Descr = geompy.WhatIs(box)
print "\nBox 100x30x100 description:"
print Descr
\endcode
<br><h2>NbShapes and ShapeInfo</h2>
\code
import geompy
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
nbSolids = geompy.NbShapes(box, geompy.ShapeType["SOLID"])
print "\nBox 100x30x100 quantity of solids:", nbSolids
boxInfo = geompy.ShapeInfo(box)
print "\nBox 100x30x100 shapes:"
print boxInfo
\endcode
<br><h2>Check Shape</h2>
\code
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"
\endcode
<br><h2>Detect Self-intersections</h2>
\code
import geompy
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
IsValid = geompy.CheckSelfIntersections(box)
if IsValid == 0:
raise RuntimeError, "Box with self-intersections created"
else:
print "\nBox is valid"
\endcode
<br><h2>Check Compound of Blocks</h2>
\code
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"
\endcode
<ul>
<li>\subpage tui_point_coordinates_page</li>
<li>\subpage tui_basic_properties_page</li>
<li>\subpage tui_center_of_mass_page</li>
<li>\subpage tui_inertia_page</li>
<li>\subpage tui_normal_face_page</li>
<li>\subpage tui_bounding_box_page</li>
<li>\subpage tui_min_distance_page</li>
<li>\subpage tui_angle_page</li>
<li>\subpage tui_tolerance_page</li>
<li>\subpage tui_whatis_page</li>
<li>\subpage tui_free_boundaries_page</li>
<li>\subpage tui_free_faces_page</li>
<li>\subpage tui_check_shape_page</li>
<li>\subpage tui_check_compound_of_blocks_page</li>
<li>\subpage tui_check_self_intersections_page</li>
</ul>
*/

View File

@ -0,0 +1,15 @@
/*!
\page tui_min_distance_page Minimal Distance
\code
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
\endcode
*/

View File

@ -0,0 +1,23 @@
/*!
\page tui_normal_face_page Normal to a Face
\code
import geompy
import math
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
faces = geompy.SubShapeAllSortedCentres(box, geompy.ShapeType["FACE"])
face0 = faces[0]
vnorm = geompy.GetNormal(face0)
if vnorm is None:
raise RuntimeError, "GetNormal(face0) failed"
else:
geompy.addToStudy(face0, "Face0")
geompy.addToStudy(vnorm, "Normale to Face0")
print "\nNormale of face has been successfully obtained"
\endcode
*/

View File

@ -0,0 +1,27 @@
/*!
\page tui_point_coordinates_page Point Coordinates
\code
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
\endcode
*/

View File

@ -6,6 +6,7 @@
<li>\subpage tui_test_others_page</li>
<li>\subpage tui_test_spanner_page</li>
<li>\subpage tui_test_all_page</li>
<li>\subpage tui_test_measures_page</li>
</ul>
*/

View File

@ -0,0 +1,54 @@
/*!
\page tui_test_measures_page GEOM_TestMeasures.py
\anchor swig_TestMeasures
<br><h2>GEOM_TestMeasures.py</h2>
\dontinclude GEOM_TestMeasures.py
\skipline def TestMeasureOperations
\until PointCoordinates
\anchor swig_PointCoordinates
\until CheckShape
\anchor swig_CheckShape
\until MakeCompound
\anchor swig_CheckSelfIntersections
\until WhatIs
\anchor swig_WhatIs
\until BasicProperties
\anchor swig_BasicProperties
\until BoundingBox
\anchor swig_BoundingBox
\until Inertia
\anchor swig_Inertia
\until Tolerance
\anchor swig_Tolerance
\until MakeCDG
\anchor swig_MakeCDG
\until But must be
\until face0
\anchor swig_GetNormal
\until MinDistance
\anchor swig_MinDistance
\until in one plane
\anchor swig_GetAngle
\until Error
\anchor swig_GetAngleRadians
\until pass
*/

View File

@ -0,0 +1,20 @@
/*!
\page tui_tolerance_page Tolerance
\code
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]
\endcode
*/

View File

@ -0,0 +1,15 @@
/*!
\page tui_whatis_page What Is
\code
import geompy
# create a box
box = geompy.MakeBoxDXDYDZ(100,30,100)
Descr = geompy.WhatIs(box)
print "\nBox 100x30x100 description:"
print Descr
\endcode
*/

View File

@ -22,9 +22,9 @@ concerning created or imported geometrical objects :
<ul>
<li>\subpage boundaries_page "Check Free Boundaries"</li>
<li>\subpage faces_page "Check Free Faces"</li>
<li>\subpage check_page "Check Shape"</li>
<li>\subpage check_compound_page "Check compound of blocks"</li>
<li>\subpage free_faces_page "Check Free Faces"</li>
<li>\subpage check_shape_page "Check Shape"</li>
<li>\subpage check_compound_of_blocks_page "Check compound of blocks"</li>
<li>\subpage check_self_intersections_page "Detect Self-intersections"</li>
</ul>

View File

@ -9,6 +9,8 @@ the shape.
\n <b>TUI Command:</b> <em>geompy.WhatIs(Shape),</em> where \em Shape is a
shape from which a description is returned.
See also a \ref tui_whatis_page "TUI example".
\image html measures8.png
\n <b>Kind of Shape</b> field characterises the