X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=test%2Ftest_patch_face_01.py;fp=test%2Ftest_patch_face_01.py;h=1d0d288b427ab28807e671dffcb15ea8b0032cd6;hb=de644ac6fe44325aaa8ce9c1aa729dd9189eea6e;hp=0000000000000000000000000000000000000000;hpb=e6d054cfcd53405d16a2466ceb0aee3603057784;p=modules%2Fgeom.git diff --git a/test/test_patch_face_01.py b/test/test_patch_face_01.py new file mode 100644 index 000000000..1d0d288b4 --- /dev/null +++ b/test/test_patch_face_01.py @@ -0,0 +1,71 @@ +# Check patch face functionality + +def CheckFacesOnHoles( faces ): + """ + check that none of the faces in the list have holes + param faces - list of faces + return bool - *True* if all faces not have hole; *False* otherwise + """ + for face in faces: + newFaces = geompy.PatchFace(face) + if len(newFaces) != 1: + return False + return True + +def CompareAreaAfterPatchFace( originalFace, patchFaceResult, eps=1e-06 ): + """ + Specific function for check result of PatchFace operation. + Check that area of original face equal area first face from list (face by outer wire of original face) + minus the areas of the rest elements from list (holes) + param originalFace - original face + param patchFaceResult - list of faces result PatchFace operation. + First element - face from outer wire of original face, + other elements - faces from holes on original face + param eps - defines tolerance for comparison + return bool - *True* if area of original face is equal of area face[0] minus area of holes; *False* otherwise + """ + areaOfHoles = 0. + for index in range(1, len(patchFaceResult)): + areaOfHoles += geompy.BasicProperties(patchFaceResult[index])[1] + return geompy.BasicProperties(originalFace)[1] - (geompy.BasicProperties(patchFaceResult[0])[1] - areaOfHoles) <= eps + +import math +import salome +salome.salome_init_without_session() +import GEOM +from salome.geom import geomBuilder +geompy = geomBuilder.New() + +# Create shape +vz = geompy.MakeVectorDXDYDZ(0, 0, 1) +pyz = geompy.MakeVertex(0, -150, 100) + +geomObj = geompy.MakeMarker(0, 0, 0, 1, 0, 0, 0, 1, 0) +sk = geompy.Sketcher2D() +sk.addPoint(30.0000000, 50.0000000) +sk.addArcAbsolute(70.0000000, 20.0000000) +sk.addSegmentAbsolute(0.0000000, 0.0000000) +sk.close() +sketch = sk.wire(geomObj) +face_1 = geompy.MakeFaceWires([sketch], 1) +multiTranslation = geompy.MakeMultiTranslation1D(face_1, None, 105, 3) +[face_2,face_3,face_4] = geompy.ExtractShapes(multiTranslation, geompy.ShapeType["FACE"], True) +scale_1 = geompy.MakeScaleTransform(face_3, None, 0.3) +scale_2 = geompy.MakeScaleTransform(face_4, None, 0.3) + +translation_1 = geompy.MakeTranslation(scale_1, -10, 25, 0) +translation_2 = geompy.MakeTranslation(scale_2, -25, 20, 0) + +rotation_1 = geompy.MakeRotation(translation_1, vz, -19*math.pi/180.0) +rotation_2 = geompy.MakeRotation(translation_2, vz, 15*math.pi/180.0) + +cut = geompy.MakeCutList(face_1, [rotation_2, rotation_1], True) + +#Perform oepration +faces = geompy.PatchFace(cut) + +# Check, that result faces haven't holes +assert(CheckFacesOnHoles(faces)) + +#Check area +assert(CompareAreaAfterPatchFace(cut, faces))