From 82874628678a6b4eb234bf5663c7707e25dc1589 Mon Sep 17 00:00:00 2001 From: azv Date: Mon, 27 Nov 2017 08:22:54 +0300 Subject: [PATCH] Fix crash while changing the argument of the Projection --- src/SketchPlugin/SketchPlugin_Projection.cpp | 3 +- src/SketchPlugin/Test/TestProjectionUpdate.py | 42 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/SketchPlugin/Test/TestProjectionUpdate.py diff --git a/src/SketchPlugin/SketchPlugin_Projection.cpp b/src/SketchPlugin/SketchPlugin_Projection.cpp index 3d783a408..198173850 100644 --- a/src/SketchPlugin/SketchPlugin_Projection.cpp +++ b/src/SketchPlugin/SketchPlugin_Projection.cpp @@ -162,7 +162,8 @@ void SketchPlugin_Projection::computeProjection(const std::string& theID) std::dynamic_pointer_cast(lastResult()); if (aResult && aResult->shape() && theID == EXTERNAL_FEATURE_ID()) { aResult->setShape(std::shared_ptr()); - aProjection->selection(EXTERNAL_ID())->setValue(lastResult(), lastResult()->shape()); + if (aProjection) + aProjection->selection(EXTERNAL_ID())->setValue(lastResult(), lastResult()->shape()); } if (aVertex) { diff --git a/src/SketchPlugin/Test/TestProjectionUpdate.py b/src/SketchPlugin/Test/TestProjectionUpdate.py new file mode 100644 index 000000000..e3312d02e --- /dev/null +++ b/src/SketchPlugin/Test/TestProjectionUpdate.py @@ -0,0 +1,42 @@ +## Copyright (C) 2014-2017 CEA/DEN, EDF R&D +## +## This library is free software; you can redistribute it and/or +## modify it under the terms of the GNU Lesser General Public +## License as published by the Free Software Foundation; either +## version 2.1 of the License, or (at your option) any later version. +## +## This library is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## Lesser General Public License for more details. +## +## You should have received a copy of the GNU Lesser General Public +## License along with this library; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +## +## See http:##www.salome-platform.org/ or +## email : webmaster.salome@opencascade.com +## + +""" + Check that there is no crash while changing the projecting feature +""" + +from salome.shaper import model + +model.begin() +partSet = model.moduleDocument() + +Sketch_1 = model.addSketch(partSet, model.defaultPlane("XOY")) +SketchLine_1 = Sketch_1.addLine(20, -50, 70, 50) +model.do() + +Sketch_2 = model.addSketch(partSet, model.defaultPlane("YOZ")) +SketchProjection_1 = Sketch_2.addProjection(model.selection("VERTEX", "Sketch_1/Vertex-SketchLine_1s"), True) +model.do() + +# change the feature projected (no crash expected) +SketchProjection_1.setExternalFeature(model.selection("EDGE", "Sketch_1/Edge-SketchLine_1")) +model.do() + +model.end() -- 2.39.2