X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FFeaturesPlugin%2FFeaturesPlugin_Extrusion.cpp;h=295fb1c9de489e55cd14f0df7190b7c341e05625;hb=1788d3baf9a25806d24754c9f8e32e52ac32d3d3;hp=b232f18e7bd732b7f9d0fa8307654beb1b12e3c6;hpb=3985b767e74385e51d1b503d2c97d3bb1e3f6faa;p=modules%2Fshaper.git diff --git a/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp b/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp index b232f18e7..295fb1c9d 100644 --- a/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp +++ b/src/FeaturesPlugin/FeaturesPlugin_Extrusion.cpp @@ -3,7 +3,7 @@ // Author: Vitaly SMETANNIKOV #include "FeaturesPlugin_Extrusion.h" -#include +#include #include #include #include @@ -29,16 +29,24 @@ 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; - boost::shared_ptr aConstr = - boost::dynamic_pointer_cast(aFaceRef->value()); - if (!aConstr) - return; - boost::shared_ptr aFace = aConstr->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();