X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOM_SWIG%2FGEOM_TestAll.py;h=a53e8ccc9354f87a1e9f002e5e0ecd2ac57b447c;hb=c1d63ef1f803d255b61ee99fb618bf471add07f4;hp=62eec35c830a86497dd19f0341bf1e8702a225d0;hpb=69b2ec02a2002731ceaf0597fa9f4dd9cd57dc91;p=modules%2Fgeom.git diff --git a/src/GEOM_SWIG/GEOM_TestAll.py b/src/GEOM_SWIG/GEOM_TestAll.py index 62eec35c8..a53e8ccc9 100644 --- a/src/GEOM_SWIG/GEOM_TestAll.py +++ b/src/GEOM_SWIG/GEOM_TestAll.py @@ -1,5 +1,5 @@ # -*- coding: iso-8859-1 -*- -# Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +# Copyright (C) 2007-2023 CEA/DEN, EDF R&D, OPEN CASCADE # # Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, # CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -21,7 +21,7 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# GEOM GEOM_SWIG : binding of C++ omplementaion with Python +# GEOM GEOM_SWIG : binding of C++ implementation with Python # File : GEOM_usinggeom.py # Author : Damien COQUERET, Open CASCADE # Module : GEOM @@ -147,20 +147,20 @@ def TestAll (geompy, math): tan_on_face = geompy.MakeTangentPlaneOnFace(tan_extrusion, 0.7, 0.5, 150) #Create base geometry 3D - Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object)->GEOM_Object - Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object - Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object - Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object, 2 Doubles)->GEOM_Object - Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object - Cylinder1= geompy.MakeCylinderA(p0, vz, radius1, height,angle1) #(2 GEOM_Object, 2 Doubles)->GEOM_Object - Cyl2 = geompy.MakeCylinderRHA(radius2, height,angle2) #(2 Doubles)->GEOM_Object - Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object, Double)->GEOM_Object - Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object - Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object - Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object - Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object - Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object, 2 Doubles)->GEOM_Object - Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object + Box = geompy.MakeBoxTwoPnt(p0, p200) #(2 GEOM_Object)->GEOM_Object + Box1 = geompy.MakeBoxDXDYDZ(10, 20, 30) #(3 Doubles)->GEOM_Object + Box2 = geompy.MakeBox(10,20,30, 15,25,35) #(6 Doubles)->GEOM_Object + Cylinder = geompy.MakeCylinder(p0, vz, radius1, height) #(2 GEOM_Object, 2 Doubles)->GEOM_Object + Cyl1 = geompy.MakeCylinderRH(radius2, height) #(2 Doubles)->GEOM_Object + Cylinder1= geompy.MakeCylinderA(p0, vz, radius1, height, angle1) #(2 GEOM_Object, 3 Doubles)->GEOM_Object + Cyl2 = geompy.MakeCylinderRHA(radius2, height, angle2) #(3 Doubles)->GEOM_Object + Sphere = geompy.MakeSpherePntR(p0, radius1) #(GEOM_Object, Double)->GEOM_Object + Sphere1 = geompy.MakeSphereR(radius) #(Double)->GEOM_Object + Sphere2 = geompy.MakeSphere(50, 70, 30, radius) #(4 Doubles)->GEOM_Object + Cone = geompy.MakeCone(p0, vz, radius2, radius, height) #(2 GEOM_Object, 3 Doubles)->GEOM_Object + Cone1 = geompy.MakeConeR1R2H(radius1, radius, height) #(3 Doubles)->GEOM_Object + Torus = geompy.MakeTorus(p0, vz, radius2, radius) #(2 GEOM_Object, 2 Doubles)->GEOM_Object + Torus1 = geompy.MakeTorusRR(radius2, radius1) #(2 Doubles)->GEOM_Object #Boolean (Common, Cut, Fuse, Section) Common = geompy.MakeBoolean(Box, Sphere, 1) #(2 GEOM_Object, Short)->GEOM_Object @@ -178,6 +178,13 @@ def TestAll (geompy, math): Face2 = geompy.MakeFace(Sketcher, WantPlanarFace) Face3 = geompy.MakeFaceHW (100., 200., 1) #(2 Doubles, 1 Int)->GEOM_Object Face4 = geompy.MakeFaceObjHW (vz, 200., 100.) #(1 GEOM_Object, 2 Doubles)->GEOM_Object + Face5 = geompy.MakeFaceFromSurface(Face, Sketcher) #(2 GEOM_Objects)->GEOM_Object + + Cut2 = geompy.MakeCutList(Sphere1, [Box1], True) + #(List of GEOM_Object)->GEOM_Object + Face6 = geompy.MakeFaceWithConstraints([geompy.GetSubShape(Cut2, [5]), geompy.GetSubShape(Cut2, [3]), + geompy.GetSubShape(Cut2, [11]), geompy.GetSubShape(Cut2, [3]), + geompy.GetSubShape(Cut2, [13]), geompy.GetSubShape(Cut2, [3])]) Disk = geompy.MakeDiskPntVecR (p0, vz, radius) #(2 GEOM_Object, 1 Double)->GEOM_Object Disk2 = geompy.MakeDiskThreePnt(p0, p200, pz) #(3 GEOM_Object)->GEOM_Object Disk3 = geompy.MakeDiskR(100., 1) #(1 Doubles, 1 Int)->GEOM_Object @@ -189,7 +196,13 @@ def TestAll (geompy, math): prism1_faces[3], prism1_faces[4], prism1_faces[5], prism1_faces[2]]) Solid = geompy.MakeSolid([Shell1]) #(List of GEOM_Object)->GEOM_Object - + + Box1_translation = geompy.MakeTranslation(Box1, 10, 0, 0) + Box1_shell = geompy.SubShapeAllSorted(Box1, geompy.ShapeType["SHELL"])[0] + Box1_translation_shell = geompy.SubShapeAllSorted(Box1_translation, geompy.ShapeType["SHELL"])[0] + + Solid_from_shells = geompy.MakeSolidFromConnectedFaces([Box1_shell, Box1_translation_shell], 1) #(List of GEOM_Object, Boolean)->GEOM_Object + # Create Isoline Isoline = geompy.MakeIsoline(Face1, True, 0.5) #(1 GEOM_Object, Boolean, Double)->GEOM_Object @@ -216,19 +229,25 @@ def TestAll (geompy, math): Line3 = geompy.MakeLineTwoFaces(prism1_faces[0], prism1_faces[1]) #(2 GEOM_Object)->GEOM_Object #Create advanced objects - Copy = geompy.MakeCopy(Box) #(GEOM_Object)->GEOM_Object Prism = geompy.MakePrismVecH(Face, vz, 100.0) #(2 GEOM_Object, Double)->GEOM_Object Prism2Ways = geompy.MakePrismVecH2Ways(Face, vz, 10.0) #(2 GEOM_Object, Double)->GEOM_Object PrismTwoPnt = geompy.MakePrism(Face2, p0, pxyz) #(3 GEOM_Object)->GEOM_Object PrismTwoPnt2Ways = geompy.MakePrism2Ways(Face2, p0, pxyz) #(3 GEOM_Object)->GEOM_Object PrismDXDYDZ = geompy.MakePrismDXDYDZ(Face2, 10, 20, 100)#(2 GEOM_Object, Double)->GEOM_Object PrismDXDYDZ2Ways = geompy.MakePrismDXDYDZ2Ways(Face, 30, -20, 200)#(2 GEOM_Object, Double)->GEOM_Object - Revolution = geompy.MakeRevolution(Face, vz, angle2) # - Revolution2Ways = geompy.MakeRevolution(Face, vz, angle1) # + Revolution = geompy.MakeRevolution(Face, vxy, angle2) #(2 GEOM_Object, Double)->GEOM_Object + Revolution2Ways = geompy.MakeRevolution2Ways(Face, vxy, angle1) #(2 GEOM_Object, Double)->GEOM_Object Filling = geompy.MakeFilling(Compound, mindeg, maxdeg, tol2d, tol3d, nbiter) #(GEOM_Object, 4 Doubles, Short)->GEOM_Object Pipe = geompy.MakePipe(Wire, Edge) #(2 GEOM_Object)->GEOM_Object Sewing = geompy.MakeSewing([Face, S], precision) #(List Of GEOM_Object, Double)->GEOM_Object + ThickSolid = geompy.MakeCopy(Box) + faces = geompy.SubShapeAllSortedCentres(Box, geompy.ShapeType["FACE"]) + shell = geompy.MakeShell([faces[0], faces[1], faces[2]]) + faceIDs = geompy.SubShapeAllSortedCentresIDs(ThickSolid, geompy.ShapeType["FACE"]) + ThickShell = geompy.MakeThickSolid(shell, 50) #(GEOM_Object, Double)->GEOM_Object + geompy.Thicken(ThickSolid, 50, [faceIDs[0], faceIDs[1]]) #(GEOM_Object) modification + Copy = geompy.MakeCopy(Box) #(GEOM_Object)->GEOM_Object #Transform objects Translation = geompy.MakeTranslationTwoPoints(Box, px, pz) #(3 GEOM_Object)->GEOM_Object @@ -252,8 +271,12 @@ def TestAll (geompy, math): Position = geompy.MakePosition(Box, cs1, cs2) #(3 GEOM_Object)->GEOM_Object Position2 = geompy.PositionAlongPath(Box, Arc, 0.5, 1, 0) #(2 GEOM_Object, 1 Double, 2 Bool)->GEOM_Object Offset = geompy.MakeOffset(Box, 10.) #(GEOM_Object, Double)->GEOM_Object - Orientation = geompy.ChangeOrientation(Box) ProjOnWire = geompy.MakeProjectionOnWire(p0, Wire) + ProjOnCyl = geompy.MakeProjectionOnCylinder(Wire, 100) + Orientation = geompy.ChangeOrientation(Box) + ExtEdge = geompy.ExtendEdge(Edge1, -0.3, 1.3) + ExtFace = geompy.ExtendFace(Face5, -0.3, 1.3, -0.1, 1.1) + Surface = geompy.MakeSurfaceFromFace(Face5) #IDList for Fillet/Chamfer prism_edges = geompy.ExtractShapes(Prism, geompy.ShapeType["EDGE"], True) @@ -264,7 +287,7 @@ def TestAll (geompy, math): sse_id = geompy.GetSubShapeID(Prism, sse) if sse_id != eid: - print "Error: GetSubShape() or GetSubShapeID() has failed!" + print("Error: GetSubShape() or GetSubShapeID() has failed!") IDlist_e = [] IDlist_e.append(geompy.GetSubShapeID(Prism, prism_edges[0])) @@ -302,15 +325,15 @@ def TestAll (geompy, math): MultiRot2Dt = geompy.MultiRotate2DNbTimes(Chamfer, vx, nbtimes1, step1, nbtimes2) MultiRot2Ds = geompy.MultiRotate2DByStep(Chamfer, vx, angle1, nbtimes1, step1, nbtimes2) - #Create Informations objects + #Create Information objects CDG = geompy.MakeCDG(Prism) #(GEOM_Object)->GEOM_Object Archimede = geompy.Archimede(Box, weight, waterdensity, meshingdeflection) #(GEOM_Object, 3 Doubles)->GEOM_Object mindist = geompy.MinDistanceComponents(TranslVect, Mirror) #(2 GEOM_Object)->4 Doubles - print "Minumal distance between TranslVect and Mirror is", mindist[0], - print "by components:", mindist[1], ",", mindist[2], ",", mindist[3] + print("Minumal distance between TranslVect and Mirror is", mindist[0], end=' ') + print("by components:", mindist[1], ",", mindist[2], ",", mindist[3]) CheckShape = geompy.CheckShape(Prism) #(GEOM_Object)->Boolean - print "CheckShape(Prism) = ", CheckShape + print("CheckShape(Prism) = ", CheckShape) #Partition objects Partition = geompy.MakePartition([Box], [Plane]) #(2 Lists Of GEOM_Object)->GEOM_Object @@ -386,6 +409,7 @@ def TestAll (geompy, math): id_Common = geompy.addToStudy(Common, "Common") id_Cut = geompy.addToStudy(Cut, "Cut") + id_Cut2 = geompy.addToStudy(Cut2, "Cut2") id_Fuse = geompy.addToStudy(Fuse, "Fuse") id_Section = geompy.addToStudy(Section, "Section") @@ -397,6 +421,8 @@ def TestAll (geompy, math): id_Face2 = geompy.addToStudy(Face2, "Face from Sketcher") id_Face3 = geompy.addToStudy(Face3, "Face Height Width") id_Face4 = geompy.addToStudy(Face4, "Face Plane_HW") + id_Face5 = geompy.addToStudy(Face5, "Face from surface and wire") + id_Face6 = geompy.addToStudy(Face6, "Face from edges with constraints") id_Disk = geompy.addToStudy(Disk, "Disk PntVecR") id_Disk2 = geompy.addToStudy(Disk2, "Disk Three Points") id_Disk3 = geompy.addToStudy(Disk3, "Disk OXY Radius") @@ -411,11 +437,16 @@ def TestAll (geompy, math): id_Prism1 = geompy.addToStudy(Prism1, "Prism by Two Pnt") id_Shell1 = geompy.addToStudy(Shell1, "Shell from Prism1 faces") id_Solid = geompy.addToStudy(Solid, "Solid") + id_Solid1 = geompy.addToStudy(Solid_from_shells, "Solid1") + id_Compound = geompy.addToStudy(Compound, "Compound") id_Plane2 = geompy.addToStudy(Plane2, "Plane on Face") id_Copy = geompy.addToStudy(Copy, "Copy") + id_ThickShell = geompy.addToStudy(ThickShell, "ThickShell") + id_ThickSolid = geompy.addToStudy(ThickSolid, "ThickSolid") + id_Prism = geompy.addToStudy(Prism, "Prism") id_Prism2Ways = geompy.addToStudy(Prism2Ways, "Prism2Ways") id_PrismTwoPnt = geompy.addToStudy(PrismTwoPnt, "PrismTwoPnt") @@ -467,6 +498,10 @@ def TestAll (geompy, math): id_Offset = geompy.addToStudy(Offset, "Offset") id_Orientation = geompy.addToStudy(Orientation, "Orientation") id_ProjOnWire = geompy.addToStudy(ProjOnWire[1], "ProjOnWire") + id_ProjOnCyl = geompy.addToStudy(ProjOnCyl, "ProjOnCyl") + id_ExtEdge = geompy.addToStudy(ExtEdge, "ExtendedEdge") + id_ExtFace = geompy.addToStudy(ExtFace, "ExtendedFace") + id_Surface = geompy.addToStudy(Surface, "Surface From Face") id_Fillet = geompy.addToStudy(Fillet, "Fillet") id_Fillet2 = geompy.addToStudy(Fillet2, "Fillet2") @@ -489,7 +524,7 @@ def TestAll (geompy, math): id_Partition = geompy.addToStudy(Partition, "Partition") id_Partition1 = geompy.addToStudy(Partition1, "Half Partition") - + #Decompose objects # SubShape @@ -504,11 +539,11 @@ def TestAll (geompy, math): # GetExistingSubObjects SubObjsAll = geompy.GetExistingSubObjects(Box, True) - print "For now, Box has the following created sub-objects:", SubObjsAll + print("For now, Box has the following created sub-objects:", SubObjsAll) # GetGroups SubGrpsAll = geompy.GetGroups(Box) - print "For now, Box has the following created groups:", SubGrpsAll + print("For now, Box has the following created groups:", SubGrpsAll) # SubShapeAll SubEdgeList = geompy.SubShapeAll(SubFace, geompy.ShapeType["EDGE"]) @@ -519,21 +554,21 @@ def TestAll (geompy, math): # SubShapeAllIDs SubEdgeIDsList = geompy.SubShapeAllIDs(SubFace, geompy.ShapeType["EDGE"]) - print "IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)" + print("IDs of edges of SubFace:", SubEdgeIDsList, "(unsorted)") group = geompy.CreateGroup(SubFace, geompy.ShapeType["EDGE"]) geompy.UnionIDs(group, SubEdgeIDsList) geompy.addToStudyInFather(SubFace, group, "Group of all edges") # SubShapeAllSortedCentresIDs SubEdgeIDsList = geompy.SubShapeAllSortedCentresIDs(SubFace, geompy.ShapeType["EDGE"]) - print "IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)" + print("IDs of edges of SubFace:", SubEdgeIDsList, "(sorted)") # GetSubShape and GetSubShapeID for ind in SubEdgeIDsList: edge = geompy.GetSubShape(SubFace, [ind]) ind_e = geompy.GetSubShapeID(SubFace, edge) if ind_e != ind: - print "Error in GetSubShape or GetSubShapeID" + print("Error in GetSubShape or GetSubShapeID") # RestoreSubShapes geompy.RestoreSubShapes(Copy) @@ -541,4 +576,39 @@ def TestAll (geompy, math): geompy.RestoreSubShapes(Partition, [Box]) geompy.RestoreSubShapes(Partition1) - print "DONE" + # GetSubShapeEdgeSorted + p1 = geompy.GetFirstVertex(Sketcher) + p2 = geompy.GetFirstVertex(Sketcher3d_1) + p3 = geompy.GetFirstVertex(Sketcher3d_2) + geompy.GetSubShapeEdgeSorted(Sketcher, p1, "OrderedEdges") + geompy.GetSubShapeEdgeSorted(Sketcher3d_1, p2, "OrderedEdges") + geompy.GetSubShapeEdgeSorted(Sketcher3d_2, p3, "OrderedEdges") + + # GetSubShapesWithTolerance + geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GT, 1.e-8, "gt") + geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_GE, 1.e-7, "ge") + geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LT, 2.e-7, "lt") + geompy.GetSubShapesWithTolerance(Box, GEOM.FACE, GEOM.CC_LE, 1.e-7, "le") + + # MakeExtraction + geompy.MakeExtraction(Box, [13], "Ext_no_face") + geompy.MakeExtraction(Box, [18], "Ext_no_edge") + geompy.MakeExtraction(Box, [16], "Ext_no_vertex") + + # CurvatureOnFace + Cylinder_1 = geompy.MakeCylinderRH(100, 50, 'Cylinder_r100_h150') + [Face_1,Face_2,Face_3] = geompy.ExtractShapes(Cylinder_1, geompy.ShapeType["FACE"], True, "Face") + curvature_1 = geompy.CurvatureOnFace(Face_2, px, vy, 'curvature_cyl_px_vy') + assert(abs(geompy.BasicProperties(curvature_1)[0] - 100) < 1e-07) + curvature_zero = geompy.CurvatureOnFace(Face_2, px, vz) + assert(geompy.MeasuOp.GetErrorCode() == "ZERO_CURVATURE") + assert(not curvature_zero) + isExcept = False + try: + # p0 is on cylinder axis, projection should fail + geompy.CurvatureOnFace(Face_2, p0, vy) + except: + isExcept = True + assert(isExcept) + + print("DONE")