1 // File: FeaturesPlugin_Extrusion.cpp
2 // Created: 30 May 2014
3 // Author: Vitaly SMETANNIKOV
5 #include "FeaturesPlugin_Extrusion.h"
6 #include <ModelAPI_PluginManager.h>
7 #include <ModelAPI_Document.h>
8 #include <ModelAPI_Data.h>
9 #include <ModelAPI_ResultConstruction.h>
10 #include <ModelAPI_ResultBody.h>
11 #include <ModelAPI_AttributeDouble.h>
12 #include <ModelAPI_AttributeReference.h>
13 #include <ModelAPI_AttributeBoolean.h>
15 #include <GeomAlgoAPI_Extrusion.h>
19 FeaturesPlugin_Extrusion::FeaturesPlugin_Extrusion()
23 void FeaturesPlugin_Extrusion::initAttributes()
25 data()->addAttribute(FeaturesPlugin_Extrusion::FACE_ID(), ModelAPI_AttributeReference::type());
26 data()->addAttribute(FeaturesPlugin_Extrusion::SIZE_ID(), ModelAPI_AttributeDouble::type());
27 data()->addAttribute(FeaturesPlugin_Extrusion::REVERSE_ID(), ModelAPI_AttributeBoolean::type());
30 void FeaturesPlugin_Extrusion::execute()
32 boost::shared_ptr<ModelAPI_AttributeReference> aFaceRef = boost::dynamic_pointer_cast<
33 ModelAPI_AttributeReference>(data()->attribute(FeaturesPlugin_Extrusion::FACE_ID()));
36 boost::shared_ptr<GeomAPI_Shape> aFace;
37 boost::shared_ptr<ModelAPI_ResultConstruction> aConstr = boost::dynamic_pointer_cast<
38 ModelAPI_ResultConstruction>(aFaceRef->value());
40 aFace = aConstr->shape();
44 boost::shared_ptr<ModelAPI_ResultBody> aBody = boost::dynamic_pointer_cast<
45 ModelAPI_ResultBody>(aFaceRef->value());
47 aFace = aBody->shape();
52 double aSize = data()->real(FeaturesPlugin_Extrusion::SIZE_ID())->value();
53 if (data()->boolean(FeaturesPlugin_Extrusion::REVERSE_ID())->value())
55 boost::shared_ptr<ModelAPI_ResultBody> aResult = document()->createBody(data());
56 aResult->store(GeomAlgoAPI_Extrusion::makeExtrusion(aFace, aSize));