X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Sketch.cpp;h=878670ec209066a560bac09d903c460a74ada826;hb=e0599afe13a8f2be4fe593e6d50b23a23b0a6c81;hp=7fb20f0798af5a74af220aebc6a835e99173ccda;hpb=69be9f7dcd37595b9b98c9839c77105f2e704def;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Sketch.cpp b/src/SketchPlugin/SketchPlugin_Sketch.cpp index 7fb20f079..878670ec2 100644 --- a/src/SketchPlugin/SketchPlugin_Sketch.cpp +++ b/src/SketchPlugin/SketchPlugin_Sketch.cpp @@ -3,25 +3,15 @@ // Author: Mikhail PONIKAROV #include "SketchPlugin_Sketch.h" -#include "ModelAPI_Data.h" -#include "ModelAPI_AttributeDocRef.h" +#include +#include +#include +#include using namespace std; -#include -#include -#include -#include -#include - -#include -#include -#include - -const double PLANE_U_MIN = -100; -const double PLANE_U_MAX = 100; -const double PLANE_V_MIN = -100; -const double PLANE_V_MAX = 100; +// face of the square-face displayed for selection of general plane +const double PLANE_SIZE = 200; SketchPlugin_Sketch::SketchPlugin_Sketch() { @@ -29,28 +19,35 @@ SketchPlugin_Sketch::SketchPlugin_Sketch() void SketchPlugin_Sketch::initAttributes() { - data()->addAttribute(PART_ATTR_DOC_REF, ModelAPI_AttributeDocRef::type()); + data()->addAttribute(SKETCH_ATTR_PLANE_A, ModelAPI_AttributeDouble::type()); + data()->addAttribute(SKETCH_ATTR_PLANE_B, ModelAPI_AttributeDouble::type()); + data()->addAttribute(SKETCH_ATTR_PLANE_C, ModelAPI_AttributeDouble::type()); + data()->addAttribute(SKETCH_ATTR_PLANE_D, ModelAPI_AttributeDouble::type()); } void SketchPlugin_Sketch::execute() { - /*shared_ptr aDocRef = data()->docRef(PART_ATTR_DOC_REF); - if (!aDocRef->value()) { // create a document if not yet created - shared_ptr aPartSetDoc = ModelAPI_PluginManager::get()->rootDocument(); - aDocRef->setValue(aPartSetDoc->subDocument(data()->getName())); - }*/ } -const TopoDS_Shape& SketchPlugin_Sketch::preview() +const boost::shared_ptr& SketchPlugin_Sketch::preview() +{ + std::list > aFaces; + + addPlane(1, 0, 0, aFaces); // YZ plane + addPlane(0, 1, 0, aFaces); // XZ plane + addPlane(0, 0, 1, aFaces); // XY plane + boost::shared_ptr aCompound = GeomAlgoAPI_CompoundBuilder::compound(aFaces); + setPreview(aCompound); + + return getPreview(); +} + +void SketchPlugin_Sketch::addPlane(double theX, double theY, double theZ, + std::list >& theShapes) const { - if (SketchPlugin_Feature::preview().IsNull()) - { - gp_Pnt anOrigin(0, 0, 0); - gp_Dir aDir(gp_Vec(gp_Pnt(0,0,0), gp_Pnt(1,0,0))); - gp_Pln aPlane(anOrigin, aDir); - BRepBuilderAPI_MakeFace aFaceBuilder(aPlane, PLANE_U_MIN, PLANE_U_MAX, PLANE_V_MIN, - PLANE_V_MAX); - setPreview(aFaceBuilder.Face()); - } - return SketchPlugin_Feature::preview(); + boost::shared_ptr anOrigin(new GeomAPI_Pnt(0, 0, 0)); + boost::shared_ptr aNormal(new GeomAPI_Dir(theX, theY, theZ)); + boost::shared_ptr aFace = + GeomAlgoAPI_FaceBuilder::square(anOrigin, aNormal, PLANE_SIZE); + theShapes.push_back(aFace); }