X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Sketch.cpp;h=81ead9d7ded55fffa4dd660608b21e10f8e138dd;hb=47d69c6e766821c1296c5147a6248ae49020c7dd;hp=850058e8c1d438da7edb4a59c41fcac9d05ded49;hpb=0abd0043fd4578da0b345b63f8c4e025adc9ef61;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Sketch.cpp b/src/SketchPlugin/SketchPlugin_Sketch.cpp index 850058e8c..81ead9d7d 100644 --- a/src/SketchPlugin/SketchPlugin_Sketch.cpp +++ b/src/SketchPlugin/SketchPlugin_Sketch.cpp @@ -12,6 +12,14 @@ #include #include +#include +#include + +#include + +const Quantity_NameOfColor SKETCH_PLANE_COLOR = Quantity_NOC_CHOCOLATE; /// the plane edge color +const int SKETCH_WIDTH = 4; /// the plane edge width + using namespace std; // face of the square-face displayed for selection of general plane @@ -37,6 +45,8 @@ void SketchPlugin_Sketch::execute() boost::shared_ptr aRefList = boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_FEATURES)); + boost::shared_ptr anOrigin = + boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_ORIGIN)); boost::shared_ptr aDirX = boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_DIRX)); boost::shared_ptr aDirY = @@ -62,7 +72,7 @@ void SketchPlugin_Sketch::execute() std::list< boost::shared_ptr > aLoops; std::list< boost::shared_ptr > aWires; - GeomAlgoAPI_SketchBuilder::createFaces(aDirX->dir(), aDirY->dir(), aNorm->dir(), + GeomAlgoAPI_SketchBuilder::createFaces(anOrigin->pnt(), aDirX->dir(), aDirY->dir(), aNorm->dir(), aFeaturesPreview, aLoops, aWires); aLoops.insert(aLoops.end(), aWires.begin(), aWires.end()); @@ -70,6 +80,16 @@ void SketchPlugin_Sketch::execute() data()->store(aCompound); } +Handle(AIS_InteractiveObject) SketchPlugin_Sketch::getAISShape(Handle(AIS_InteractiveObject) thePrevious) +{ + Handle(AIS_InteractiveObject) anAIS = SketchPlugin_Feature::getAISShape(thePrevious); + Handle(AIS_Shape) aShapeAIS = Handle(AIS_Shape)::DownCast(anAIS); + aShapeAIS->SetColor(Quantity_Color(SKETCH_PLANE_COLOR)); + aShapeAIS->SetWidth(SKETCH_WIDTH); + aShapeAIS->Redisplay(); + return anAIS; +} + const boost::shared_ptr& SketchPlugin_Sketch::preview() { if (isPlaneSet()) { @@ -125,3 +145,16 @@ bool SketchPlugin_Sketch::isPlaneSet() return aNormal && !(aNormal->x() == 0 && aNormal->y() == 0 && aNormal->z() == 0); } + +boost::shared_ptr SketchPlugin_Sketch::plane() +{ + boost::shared_ptr anOrigin = + boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_ORIGIN)); + boost::shared_ptr aNorm = + boost::dynamic_pointer_cast(data()->attribute(SKETCH_ATTR_NORM)); + + if (!anOrigin || !aNorm) + return boost::shared_ptr(); + + return boost::shared_ptr(new GeomAPI_Pln(anOrigin->pnt(), aNorm->dir())); +}