X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Extrusion.cpp;h=295fb1c9de489e55cd14f0df7190b7c341e05625;hb=1788d3baf9a25806d24754c9f8e32e52ac32d3d3;hp=0e8fc0b13b19950298c51601d272d41ae547b4e3;hpb=5d9f5c6e19b94b5b2c4bf8d314b7f7f1c6f49897;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp b/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp index 0e8fc0b13..295fb1c9d 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp @@ -3,9 +3,11 @@ // Author: Vitaly SMETANNIKOV #include "FeaturesPlugin_Extrusion.h" -#include +#include #include #include +#include +#include #include #include #include @@ -27,19 +29,30 @@ void FeaturesPlugin_Extrusion::initAttributes() void FeaturesPlugin_Extrusion::execute() { - boost::shared_ptr aFaceRef = - boost::dynamic_pointer_cast(data()->attribute(FeaturesPlugin_Extrusion::FACE_ID())); + boost::shared_ptr aFaceRef = boost::dynamic_pointer_cast< + ModelAPI_AttributeReference>(data()->attribute(FeaturesPlugin_Extrusion::FACE_ID())); if (!aFaceRef) return; - FeaturePtr aFaceFeature = aFaceRef->value(); - if (!aFaceFeature) - return; - boost::shared_ptr aFace = aFaceFeature->data()->shape(); - if (!aFace) + boost::shared_ptr aFace; + boost::shared_ptr aConstr = boost::dynamic_pointer_cast< + ModelAPI_ResultConstruction>(aFaceRef->value()); + if (aConstr) { + aFace = aConstr->shape(); + } + if (!aFace) { + // Check for body + boost::shared_ptr aBody = boost::dynamic_pointer_cast< + ModelAPI_ResultBody>(aFaceRef->value()); + if (aBody) + aFace = aBody->shape(); + } + if (!aFace) return; double aSize = data()->real(FeaturesPlugin_Extrusion::SIZE_ID())->value(); if (data()->boolean(FeaturesPlugin_Extrusion::REVERSE_ID())->value()) aSize = -aSize; - data()->store(GeomAlgoAPI_Extrusion::makeExtrusion(aFace, aSize)); + boost::shared_ptr aResult = document()->createBody(data()); + aResult->store(GeomAlgoAPI_Extrusion::makeExtrusion(aFace, aSize)); + setResult(aResult); }