From 8b47acae6f13b4827994298d20132b3b76712dd9 Mon Sep 17 00:00:00 2001 From: mpv Date: Mon, 21 Nov 2016 16:52:07 +0300 Subject: [PATCH] Added an automatic test for the issue #1798 checking --- src/FeaturesAPI/FeaturesAPI_Recover.cpp | 4 +- src/FeaturesPlugin/CMakeLists.txt | 4 +- src/FeaturesPlugin/Test/TestRecover1798.py | 206 +++++++++++++++++++++ 3 files changed, 211 insertions(+), 3 deletions(-) create mode 100644 src/FeaturesPlugin/Test/TestRecover1798.py diff --git a/src/FeaturesAPI/FeaturesAPI_Recover.cpp b/src/FeaturesAPI/FeaturesAPI_Recover.cpp index 40637b30b..55b1f63ef 100644 --- a/src/FeaturesAPI/FeaturesAPI_Recover.cpp +++ b/src/FeaturesAPI/FeaturesAPI_Recover.cpp @@ -38,14 +38,14 @@ void FeaturesAPI_Recover::setBaseFeature(const ModelHighAPI_Reference& theBaseFe { fillAttribute(theBaseFeature.feature(), mybaseFeature); - // do not need to execute because on attribute changed it does everything anyway + execute(); } //================================================================================================= void FeaturesAPI_Recover::setRecoveredList(const std::list& theRecoverList) { fillAttribute(theRecoverList, myrecoveredList); - // do not need to execute because on attribute changed it does everything anyway + execute(); } //================================================================================================== diff --git a/src/FeaturesPlugin/CMakeLists.txt b/src/FeaturesPlugin/CMakeLists.txt index 8afae28a6..637f3b578 100644 --- a/src/FeaturesPlugin/CMakeLists.txt +++ b/src/FeaturesPlugin/CMakeLists.txt @@ -131,4 +131,6 @@ ADD_UNIT_TESTS(TestExtrusion.py TestUnion.py TestRemoveSubShapes.py TestPipe.py - TestRecover.py) + TestRecover.py + TestRecover1798.py +) diff --git a/src/FeaturesPlugin/Test/TestRecover1798.py b/src/FeaturesPlugin/Test/TestRecover1798.py new file mode 100644 index 000000000..fafce818f --- /dev/null +++ b/src/FeaturesPlugin/Test/TestRecover1798.py @@ -0,0 +1,206 @@ +import model + +model.begin() +partSet = model.moduleDocument() +Part_1 = model.addPart(partSet) +Part_1_doc = Part_1.document() +model.addParameter(Part_1_doc, "angle2", "85") +model.addParameter(Part_1_doc, "inclinaison", "-19") +model.addParameter(Part_1_doc, "angle1", "30") +model.addParameter(Part_1_doc, "l_percage", "50") +Sketch_1 = model.addSketch(Part_1_doc, model.defaultPlane("XOZ")) +SketchLine_1 = Sketch_1.addLine(0, 263.502735943608, 0, -36.43621897530445) +SketchLine_1.setAuxiliary(True) +SketchPoint_1 = Sketch_1.addPoint(model.selection("VERTEX", "PartSet/Origin")) +SketchConstraintCoincidence_1 = Sketch_1.setCoincident(SketchLine_1.result(), SketchPoint_1.coordinates()) +SketchConstraintVertical_1 = Sketch_1.setVertical(SketchLine_1.result()) +SketchLine_2 = Sketch_1.addLine(-90, 0, -90, 29.20204102886729) +SketchLine_3 = Sketch_1.addLine(-90, 29.20204102886729, -85, 29.20204102886729) +SketchConstraintCoincidence_2 = Sketch_1.setCoincident(SketchLine_2.endPoint(), SketchLine_3.startPoint()) +SketchLine_4 = Sketch_1.addLine(-85, 29.20204102886729, -85, 118.2020410288673) +SketchConstraintCoincidence_3 = Sketch_1.setCoincident(SketchLine_3.endPoint(), SketchLine_4.startPoint()) +SketchLine_5 = Sketch_1.addLine(-85, 118.2020410288673, -90, 128) +SketchConstraintCoincidence_4 = Sketch_1.setCoincident(SketchLine_4.endPoint(), SketchLine_5.startPoint()) +SketchLine_6 = Sketch_1.addLine(-90, 128, -90, 183) +SketchConstraintCoincidence_5 = Sketch_1.setCoincident(SketchLine_5.endPoint(), SketchLine_6.startPoint()) +SketchLine_7 = Sketch_1.addLine(-90, 183, -80, 183) +SketchConstraintCoincidence_6 = Sketch_1.setCoincident(SketchLine_6.endPoint(), SketchLine_7.startPoint()) +SketchLine_8 = Sketch_1.addLine(-80, 183, -80, 190) +SketchConstraintCoincidence_7 = Sketch_1.setCoincident(SketchLine_7.endPoint(), SketchLine_8.startPoint()) +SketchLine_9 = Sketch_1.addLine(-80, 190, -70, 190) +SketchConstraintCoincidence_8 = Sketch_1.setCoincident(SketchLine_8.endPoint(), SketchLine_9.startPoint()) +SketchLine_10 = Sketch_1.addLine(-70, 190, -70, 0) +SketchConstraintCoincidence_9 = Sketch_1.setCoincident(SketchLine_9.endPoint(), SketchLine_10.startPoint()) +SketchLine_11 = Sketch_1.addLine(-70, 0, -90, 0) +SketchConstraintCoincidence_10 = Sketch_1.setCoincident(SketchLine_10.endPoint(), SketchLine_11.startPoint()) +SketchConstraintHorizontal_1 = Sketch_1.setHorizontal(SketchLine_9.result()) +SketchConstraintDistance_1 = Sketch_1.setDistance(SketchPoint_1.coordinates(), SketchLine_10.result(), 70) +SketchConstraintVertical_2 = Sketch_1.setVertical(SketchLine_10.result()) +SketchConstraintVertical_3 = Sketch_1.setVertical(SketchLine_2.result()) +SketchConstraintVertical_4 = Sketch_1.setVertical(SketchLine_4.result()) +SketchConstraintVertical_5 = Sketch_1.setVertical(SketchLine_6.result()) +SketchConstraintVertical_6 = Sketch_1.setVertical(SketchLine_8.result()) +SketchConstraintHorizontal_2 = Sketch_1.setHorizontal(SketchLine_11.result()) +SketchConstraintHorizontal_2.setName("SketchConstraintHorizontal_3") +SketchConstraintHorizontal_3 = Sketch_1.setHorizontal(SketchLine_3.result()) +SketchConstraintHorizontal_3.setName("SketchConstraintHorizontal_4") +SketchConstraintHorizontal_4 = Sketch_1.setHorizontal(SketchLine_7.result()) +SketchConstraintHorizontal_4.setName("SketchConstraintHorizontal_5") +SketchConstraintDistance_2 = Sketch_1.setDistance(SketchLine_9.startPoint(), SketchLine_1.result(), 80) +SketchConstraintDistance_3 = Sketch_1.setDistance(SketchLine_5.endPoint(), SketchLine_1.result(), 90) +SketchConstraintDistance_4 = Sketch_1.setDistance(SketchLine_3.endPoint(), SketchLine_1.result(), 85) +SketchConstraintDistance_5 = Sketch_1.setDistance(SketchLine_2.endPoint(), SketchLine_1.result(), 90) +SketchConstraintCoincidence_11 = Sketch_1.setCoincident(SketchLine_11.endPoint(), SketchLine_2.startPoint()) +SketchConstraintLength_1 = Sketch_1.setLength(SketchLine_10.result(), 190) +SketchConstraintLength_1.setName("SketchConstraintLength_3") +SketchConstraintLength_2 = Sketch_1.setLength(SketchLine_5.result(), 11) +SketchConstraintLength_2.setName("SketchConstraintLength_4") +SketchConstraintLength_3 = Sketch_1.setLength(SketchLine_4.result(), 89) +SketchConstraintLength_3.setName("SketchConstraintLength_5") +SketchLine_12 = Sketch_1.addLine(model.selection("EDGE", "PartSet/OX")) +SketchConstraintCoincidence_12 = Sketch_1.setCoincident(SketchLine_11.startPoint(), SketchLine_12.result()) +SketchConstraintLength_4 = Sketch_1.setLength(SketchLine_8.result(), 7) +SketchConstraintLength_4.setName("SketchConstraintLength_6") +SketchConstraintLength_5 = Sketch_1.setLength(SketchLine_6.result(), 55) +SketchConstraintLength_5.setName("SketchConstraintLength_7") +SketchLine_13 = Sketch_1.addLine(-130.660278375518, 118.202041028867, 110.462869194241, 118.202041028867) +SketchLine_13.setName("SketchLine_19") +SketchLine_13.result().setName("SketchLine_19") +SketchLine_13.setAuxiliary(True) +SketchConstraintHorizontal_5 = Sketch_1.setHorizontal(SketchLine_13.result()) +SketchConstraintHorizontal_5.setName("SketchConstraintHorizontal_8") +SketchConstraintCoincidence_13 = Sketch_1.setCoincident(SketchLine_13.result(), SketchLine_4.endPoint()) +SketchConstraintCoincidence_13.setName("SketchConstraintCoincidence_17") +model.do() +Revolution_1 = model.addRevolution(Part_1_doc, [model.selection("FACE", "Sketch_1/Face-SketchLine_2r-SketchLine_3r-SketchLine_4r-SketchLine_5r-SketchLine_6r-SketchLine_7r-SketchLine_8r-SketchLine_9r-SketchLine_10r-SketchLine_11r")], model.selection("EDGE", "Sketch_1/Edge-SketchLine_1"), 180, 0) +Plane_4 = model.addPlane(Part_1_doc, model.selection("FACE", "Revolution_1_1/From_Face_1"), 120, True) +Sketch_2 = model.addSketch(Part_1_doc, model.selection("FACE", "Plane_1")) +SketchProjection_1 = Sketch_2.addProjection(model.selection("EDGE", "Sketch_1/Edge-SketchLine_1")) +SketchLine_14 = SketchProjection_1.createdFeature() +SketchProjection_2 = Sketch_2.addProjection(model.selection("EDGE", "PartSet/OX")) +SketchLine_15 = SketchProjection_2.createdFeature() +SketchLine_16 = Sketch_2.addLine(-15.00002401644285, 44.20204102886705, 14.99999932366307, 44.20204102886705) +SketchLine_16.setName("SketchLine_24") +SketchLine_16.result().setName("SketchLine_24") +SketchLine_17 = Sketch_2.addLine(-25, 88.20203643108667, -25, 54.20202402898175) +SketchLine_17.setName("SketchLine_28") +SketchLine_17.result().setName("SketchLine_28") +SketchLine_18 = Sketch_2.addLine(25, 54.2020551101737, 25, 88.20204066628929) +SketchLine_18.setName("SketchLine_26") +SketchLine_18.result().setName("SketchLine_26") +SketchLine_19 = Sketch_2.addLine(14.99999814471567, 98.20204102886706, -15.00002220451297, 98.20204102886706) +SketchLine_19.setName("SketchLine_27") +SketchLine_19.result().setName("SketchLine_27") +SketchLine_21 = Sketch_2.addLine(25, 98.20204102886706, -25, 98.20204102886706) +SketchLine_21.setName("SketchLine_15") +SketchLine_21.result().setName("SketchLine_15") +SketchLine_21.setAuxiliary(True) +SketchLine_20 = Sketch_2.addLine(25, 44.20204102886705, 25, 98.20204102886706) +SketchLine_20.setName("SketchLine_18") +SketchLine_20.result().setName("SketchLine_18") +SketchLine_20.setAuxiliary(True) +SketchConstraintCoincidence_14 = Sketch_2.setCoincident(SketchLine_20.endPoint(), SketchLine_21.startPoint()) +SketchConstraintCoincidence_14.setName("SketchConstraintCoincidence_13") +SketchLine_22 = Sketch_2.addLine(-25, 98.20204102886706, -25, 44.20204102886705) +SketchLine_22.setName("SketchLine_16") +SketchLine_22.result().setName("SketchLine_16") +SketchLine_22.setAuxiliary(True) +SketchConstraintCoincidence_15 = Sketch_2.setCoincident(SketchLine_21.endPoint(), SketchLine_22.startPoint()) +SketchConstraintCoincidence_15.setName("SketchConstraintCoincidence_14") +SketchLine_23 = Sketch_2.addLine(-25, 44.20204102886705, 25, 44.20204102886705) +SketchLine_23.setName("SketchLine_17") +SketchLine_23.result().setName("SketchLine_17") +SketchLine_23.setAuxiliary(True) +SketchConstraintCoincidence_16 = Sketch_2.setCoincident(SketchLine_22.endPoint(), SketchLine_23.startPoint()) +SketchConstraintCoincidence_16.setName("SketchConstraintCoincidence_15") +SketchConstraintCoincidence_17 = Sketch_2.setCoincident(SketchLine_23.endPoint(), SketchLine_20.startPoint()) +SketchConstraintCoincidence_17.setName("SketchConstraintCoincidence_16") +SketchConstraintHorizontal_6 = Sketch_2.setHorizontal(SketchLine_21.result()) +SketchConstraintVertical_7 = Sketch_2.setVertical(SketchLine_22.result()) +SketchConstraintHorizontal_7 = Sketch_2.setHorizontal(SketchLine_23.result()) +SketchConstraintVertical_8 = Sketch_2.setVertical(SketchLine_20.result()) +SketchConstraintLength_6 = Sketch_2.setLength(SketchLine_21.result(), "l_percage") +SketchConstraintLength_6.setName("SketchConstraintLength_8") +SketchConstraintLength_7 = Sketch_2.setLength(SketchLine_20.result(), 54) +SketchConstraintLength_7.setName("SketchConstraintLength_9") +SketchConstraintDistance_6 = Sketch_2.setDistance(SketchLine_14.result(), SketchLine_22.startPoint(), "l_percage/2") +SketchProjection_3 = Sketch_2.addProjection(model.selection("EDGE", "Sketch_1/Edge-SketchLine_19")) +SketchLine_24 = SketchProjection_3.createdFeature() +SketchConstraintDistance_7 = Sketch_2.setDistance(SketchLine_24.result(), SketchLine_21.startPoint(), 20) +SketchArc_1 = Sketch_2.addArc(-15, 54.20204102886705, -25, 54.20202402898175, -15.00002401644285, 44.20204102886705, False) +SketchLine_25 = Sketch_2.addLine(-25, 98.20204102886706, -25, 54.20202402898175) +SketchLine_25.setName("SketchLine_22") +SketchLine_25.result().setName("SketchLine_22") +SketchLine_25.setAuxiliary(True) +SketchConstraintCoincidence_18 = Sketch_2.setCoincident(SketchArc_1.startPoint(), SketchLine_25.endPoint()) +SketchLine_26 = Sketch_2.addLine(-15.00002401644285, 44.20204102886705, 25, 44.20204102886705) +SketchLine_26.setName("SketchLine_21") +SketchLine_26.result().setName("SketchLine_21") +SketchLine_26.setAuxiliary(True) +SketchConstraintCoincidence_19 = Sketch_2.setCoincident(SketchArc_1.endPoint(), SketchLine_26.startPoint()) +SketchConstraintTangent_1 = Sketch_2.setTangent(SketchArc_1.results()[1], SketchLine_26.result()) +SketchConstraintTangent_2 = Sketch_2.setTangent(SketchArc_1.results()[1], SketchLine_25.result()) +SketchConstraintCoincidence_20 = Sketch_2.setCoincident(SketchLine_23.endPoint(), SketchLine_26.endPoint()) +SketchConstraintCoincidence_21 = Sketch_2.setCoincident(SketchLine_22.startPoint(), SketchLine_25.startPoint()) +SketchConstraintCoincidence_22 = Sketch_2.setCoincident(SketchLine_26.startPoint(), SketchLine_23.result()) +SketchConstraintCoincidence_23 = Sketch_2.setCoincident(SketchLine_25.endPoint(), SketchLine_22.result()) +SketchArc_2 = Sketch_2.addArc(15, 54.20204102886705, 14.99999932366307, 44.20204102886705, 25, 54.2020551101737, False) +SketchConstraintCoincidence_24 = Sketch_2.setCoincident(SketchArc_2.startPoint(), SketchLine_16.endPoint()) +SketchLine_27 = Sketch_2.addLine(25, 54.2020551101737, 25, 98.20204102886706) +SketchLine_27.setName("SketchLine_23") +SketchLine_27.result().setName("SketchLine_23") +SketchLine_27.setAuxiliary(True) +SketchConstraintCoincidence_25 = Sketch_2.setCoincident(SketchArc_2.endPoint(), SketchLine_27.startPoint()) +SketchConstraintTangent_3 = Sketch_2.setTangent(SketchArc_2.results()[1], SketchLine_27.result()) +SketchConstraintTangent_4 = Sketch_2.setTangent(SketchArc_2.results()[1], SketchLine_16.result()) +SketchConstraintCoincidence_26 = Sketch_2.setCoincident(SketchLine_20.endPoint(), SketchLine_27.endPoint()) +SketchConstraintCoincidence_27 = Sketch_2.setCoincident(SketchLine_26.startPoint(), SketchLine_16.startPoint()) +SketchConstraintCoincidence_28 = Sketch_2.setCoincident(SketchLine_27.startPoint(), SketchLine_20.result()) +SketchConstraintCoincidence_29 = Sketch_2.setCoincident(SketchLine_16.endPoint(), SketchLine_26.result()) +SketchArc_3 = Sketch_2.addArc(15, 88.20204102886704, 25, 88.20204066628929, 14.99999814471567, 98.20204102886706, False) +SketchConstraintCoincidence_30 = Sketch_2.setCoincident(SketchArc_3.startPoint(), SketchLine_18.endPoint()) +SketchLine_28 = Sketch_2.addLine(14.99999814471567, 98.20204102886706, -25, 98.20204102886706) +SketchLine_28.setName("SketchLine_25") +SketchLine_28.result().setName("SketchLine_25") +SketchLine_28.setAuxiliary(True) +SketchConstraintCoincidence_31 = Sketch_2.setCoincident(SketchArc_3.endPoint(), SketchLine_28.startPoint()) +SketchConstraintTangent_5 = Sketch_2.setTangent(SketchArc_3.results()[1], SketchLine_28.result()) +SketchConstraintTangent_6 = Sketch_2.setTangent(SketchArc_3.results()[1], SketchLine_18.result()) +SketchConstraintCoincidence_32 = Sketch_2.setCoincident(SketchLine_21.endPoint(), SketchLine_28.endPoint()) +SketchConstraintCoincidence_33 = Sketch_2.setCoincident(SketchLine_27.startPoint(), SketchLine_18.startPoint()) +SketchConstraintCoincidence_34 = Sketch_2.setCoincident(SketchLine_28.startPoint(), SketchLine_21.result()) +SketchConstraintCoincidence_35 = Sketch_2.setCoincident(SketchLine_18.endPoint(), SketchLine_27.result()) +SketchArc_4 = Sketch_2.addArc(-15, 88.20204102886706, -15.00002220451297, 98.20204102886706, -25, 88.20203643108667, False) +SketchConstraintCoincidence_36 = Sketch_2.setCoincident(SketchArc_4.startPoint(), SketchLine_19.endPoint()) +SketchConstraintCoincidence_37 = Sketch_2.setCoincident(SketchArc_4.endPoint(), SketchLine_17.startPoint()) +SketchConstraintTangent_7 = Sketch_2.setTangent(SketchArc_4.results()[1], SketchLine_19.result()) +SketchConstraintTangent_8 = Sketch_2.setTangent(SketchArc_4.results()[1], SketchLine_17.result()) +SketchConstraintCoincidence_38 = Sketch_2.setCoincident(SketchLine_28.startPoint(), SketchLine_19.startPoint()) +SketchConstraintCoincidence_39 = Sketch_2.setCoincident(SketchLine_25.endPoint(), SketchLine_17.endPoint()) +SketchConstraintCoincidence_40 = Sketch_2.setCoincident(SketchLine_19.endPoint(), SketchLine_28.result()) +SketchConstraintCoincidence_41 = Sketch_2.setCoincident(SketchLine_17.startPoint(), SketchLine_25.result()) +SketchConstraintRadius_1 = Sketch_2.setRadius(SketchArc_3.results()[1], 10) +SketchConstraintRadius_2 = Sketch_2.setRadius(SketchArc_4.results()[1], 10) +SketchConstraintRadius_3 = Sketch_2.setRadius(SketchArc_2.results()[1], 10) +SketchConstraintRadius_4 = Sketch_2.setRadius(SketchArc_1.results()[1], 10) +model.do() +Extrusion_1 = model.addExtrusion(Part_1_doc, [model.selection("FACE", "Sketch_2/Face-SketchLine_24f-SketchLine_28f-SketchLine_26f-SketchLine_27f-SketchArc_1_2f-SketchArc_2_2f-SketchArc_3_2f-SketchArc_4_2f")], model.selection(), model.selection("FACE", "Revolution_1_1/To_Face_1"), -30, model.selection(), 0) +Rotation_1 = model.addRotation(Part_1_doc, [model.selection("SOLID", "Extrusion_1_1")], model.selection("EDGE", "Extrusion_1_1/From_Face_1&Extrusion_1_1/Generated_Face_1"), "inclinaison") +Rotation_2 = model.addRotation(Part_1_doc, [model.selection("SOLID", "Rotation_1_1")], model.selection("EDGE", "PartSet/OZ"), "angle1") +Recover_1 = model.addRecover(Part_1_doc, Rotation_2, [Rotation_1.result()]) +Rotation_3 = model.addRotation(Part_1_doc, [model.selection("SOLID", "Recover_1_1")], model.selection("EDGE", "PartSet/OZ"), "angle2") +Rotation_3.setName("Rotation_4") +Rotation_3.result().setName("Rotation_4_1") +Recover_2 = model.addRecover(Part_1_doc, Rotation_2, [Rotation_1.result()]) +Rotation_4 = model.addRotation(Part_1_doc, [model.selection("SOLID", "Recover_2_1")], model.selection("EDGE", "PartSet/OZ"), "-angle2") +Rotation_4.setName("Rotation_5") +Rotation_4.result().setName("Rotation_5_1") +Recover_3 = model.addRecover(Part_1_doc, Rotation_2, [Rotation_1.result()]) +Rotation_5 = model.addRotation(Part_1_doc, [model.selection("SOLID", "Recover_3_1")], model.selection("EDGE", "PartSet/OZ"), "-angle1") +Rotation_5.setName("Rotation_6") +Rotation_5.result().setName("Rotation_6_1") +Boolean_1 = model.addCut(Part_1_doc, [model.selection("SOLID", "Revolution_1_1")], [model.selection("SOLID", "Rotation_4_1"), model.selection("SOLID", "Rotation_2_1"), model.selection("SOLID", "Rotation_6_1"), model.selection("SOLID", "Rotation_5_1")]) +model.end() + +assert(Boolean_1.result().shapeType() == 'SOLID') +assert(Part_1_doc.size("Bodies") == 1) -- 2.30.2