mirror of
https://git.salome-platform.org/gitpub/modules/geom.git
synced 2025-01-28 08:00:34 +05:00
57 lines
2.2 KiB
Python
57 lines
2.2 KiB
Python
# ExtractBOPFailure example
|
|
|
|
import math
|
|
import salome
|
|
salome.salome_init()
|
|
import GEOM
|
|
from salome.geom import geomBuilder
|
|
geompy = geomBuilder.New()
|
|
|
|
### Prepare shapes for Partition
|
|
OX = geompy.MakeVectorDXDYDZ(1, 0, 0, theName="OX")
|
|
OY = geompy.MakeVectorDXDYDZ(0, 1, 0, theName="OY")
|
|
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1, theName="OZ")
|
|
|
|
Vertex_1 = geompy.MakeVertex(0, 0, 0, theName="Vertex_1")
|
|
Vertex_2 = geompy.MakeVertex(10, 0, 0, theName="Vertex_2")
|
|
Vertex_3 = geompy.MakeVertex(0, 0.005, 0, theName="Vertex_3")
|
|
Vertex_4 = geompy.MakeVertex(10, 0.015, 0, theName="Vertex_4")
|
|
Vertex_5 = geompy.MakeVertex(0, 0.02, 0, theName="Vertex_5")
|
|
Vertex_6 = geompy.MakeVertex(10, 0.02, 0, theName="Vertex_6")
|
|
|
|
Line_1 = geompy.MakeLineTwoPnt(Vertex_1, Vertex_2, theName="Line_1")
|
|
Line_2 = geompy.MakeLineTwoPnt(Vertex_3, Vertex_4, theName="Line_2")
|
|
Line_3 = geompy.MakeLineTwoPnt(Vertex_5, Vertex_6, theName="Line_3")
|
|
|
|
Extrusion_1 = geompy.MakePrismVecH(Line_1, OY, 1, theName="Extrusion_1")
|
|
Extrusion_2 = geompy.MakePrismVecH(Line_2, OZ, 1, theName="Extrusion_2")
|
|
Extrusion_3 = geompy.MakePrismVecH(Line_3, OY, -1, theName="Extrusion_3")
|
|
|
|
Limit_tolerance_1 = geompy.LimitTolerance(Extrusion_2, 0.01, theName="Limit_tolerance_1")
|
|
|
|
Extrusion_4 = geompy.MakePrismVecH(Extrusion_1, OZ, -1, theName="Extrusion_4")
|
|
Extrusion_5 = geompy.MakePrismVecH(Extrusion_3, OZ, -1, theName="Extrusion_5")
|
|
|
|
Revolution_1 = geompy.MakeRevolution(Limit_tolerance_1, OX, 45*math.pi/180.0, theName="Revolution_1")
|
|
|
|
### Try Partition
|
|
try :
|
|
Partition_1 = geompy.MakePartition([Extrusion_4, Extrusion_5, Revolution_1], [], [], [], geompy.ShapeType["SOLID"], 0, [], 0, theName="Partition_1")
|
|
except :
|
|
print("EXCEPTION: Partition problem")
|
|
|
|
### Extract failures
|
|
(IsValid, ShapeRes, ShapeErrors) = geompy.ExtractBOPFailure([Extrusion_4, Extrusion_5, Revolution_1], theTimer=True, theVerbose=True, theName="InvalidBOPResult")
|
|
|
|
### Publish incriminated sub-shapes (reflect errors in their names)
|
|
for shapeError in ShapeErrors:
|
|
list_ids = shapeError.incriminated
|
|
list_subs = geompy.SubShapes(ShapeRes, list_ids)
|
|
ii = 1
|
|
for subshape in list_subs:
|
|
geompy.addToStudyInFather( ShapeRes, subshape, 'SubShape_with_%s_%d'%(str(shapeError.error),ii) )
|
|
ii = ii+1
|
|
|
|
if salome.sg.hasDesktop():
|
|
salome.sg.updateObjBrowser()
|