X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Sketch.cpp;h=1d97cb2b051be4fd0e51d787f4f9591d8989b2b9;hb=cc317d39fcb6bdf56dedd13c7a8141b17d9caab8;hp=35d90ab5d8682df9c526f89fc87cffe71e35ad20;hpb=c52423b158d7e2bae396c62e4fe62e7e8f78c381;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Sketch.cpp b/src/SketchPlugin/SketchPlugin_Sketch.cpp index 35d90ab5d..1d97cb2b0 100644 --- a/src/SketchPlugin/SketchPlugin_Sketch.cpp +++ b/src/SketchPlugin/SketchPlugin_Sketch.cpp @@ -4,6 +4,7 @@ #include "SketchPlugin_Sketch.h" #include +#include #include #include #include @@ -12,9 +13,6 @@ using namespace std; -/// the active sketch -boost::shared_ptr MY_ACITVE_SKETCH; - // face of the square-face displayed for selection of general plane const double PLANE_SIZE = 200; @@ -28,6 +26,7 @@ void SketchPlugin_Sketch::initAttributes() data()->addAttribute(SKETCH_ATTR_DIRX, GeomDataAPI_Dir::type()); data()->addAttribute(SKETCH_ATTR_DIRY, GeomDataAPI_Dir::type()); data()->addAttribute(SKETCH_ATTR_NORM, GeomDataAPI_Dir::type()); + data()->addAttribute(SKETCH_ATTR_FEATURES, ModelAPI_AttributeRefList::type()); } void SketchPlugin_Sketch::execute() @@ -36,20 +35,25 @@ void SketchPlugin_Sketch::execute() 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); + if (isPlaneSet()) { + setPreview(boost::shared_ptr()); + } + else { + 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(); } const void SketchPlugin_Sketch::addSub(const boost::shared_ptr& theFeature) { boost::dynamic_pointer_cast(theFeature)->setSketch(this); + data()->reflist(SKETCH_ATTR_FEATURES)->append(theFeature); } void SketchPlugin_Sketch::addPlane(double theX, double theY, double theZ, @@ -76,3 +80,11 @@ boost::shared_ptr SketchPlugin_Sketch::to3D(const double theX, cons return boost::shared_ptr(new GeomAPI_Pnt(aSum)); } + +bool SketchPlugin_Sketch::isPlaneSet() +{ + boost::shared_ptr aNormal = + boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_NORM)); + + return aNormal && !(aNormal->x() == 0 && aNormal->y() == 0 && aNormal->z() == 0); +}