#include <GeomDataAPI_Point2D.h>
#include <GeomAlgoAPI_PointBuilder.h>
-using namespace std;
-
SketchPlugin_Point::SketchPlugin_Point()
: SketchPlugin_SketchEntity()
{
}
-void SketchPlugin_Point::initAttributes()
+void SketchPlugin_Point::initDerivedClassAttributes()
{
- SketchPlugin_SketchEntity::initAttributes();
-
data()->addAttribute(SketchPlugin_Point::COORD_ID(), GeomDataAPI_Point2D::typeId());
data()->addAttribute(EXTERNAL_ID(), ModelAPI_AttributeSelection::typeId());
ModelAPI_Session::get()->validators()->registerNotObligatory(getKind(), EXTERNAL_ID());
data()->attribute(SketchPlugin_Point::COORD_ID()));
std::shared_ptr<GeomAPI_Pnt> aPoint3D(aSketch->to3D(aPoint->x(), aPoint->y()));
// make a visible point
- std::shared_ptr<GeomAPI_Shape> aPointShape = GeomAlgoAPI_PointBuilder::point(aPoint3D);
+ std::shared_ptr<GeomAPI_Shape> aPointShape = GeomAlgoAPI_PointBuilder::vertex(aPoint3D);
std::shared_ptr<ModelAPI_ResultConstruction> aConstr = document()->createConstruction(data());
aConstr->setShape(aPointShape);
aConstr->setIsInHistory(false);
// the second condition for unability to move external point anywhere
if (theID == EXTERNAL_ID() || isFixed()) {
std::shared_ptr<GeomAPI_Shape> aSelection = data()->selection(EXTERNAL_ID())->value();
- // update arguments due to the selection value
+ if (!aSelection) {
+ // empty shape in selection shows that the shape is equal to context
+ ResultPtr anExtRes = selection(EXTERNAL_ID())->context();
+ if (anExtRes)
+ aSelection = anExtRes->shape();
+ }
+ // update arguments due to the selection value
if (aSelection && !aSelection->isNull() && aSelection->isVertex()) {
std::shared_ptr<GeomAPI_Vertex> aVertex(new GeomAPI_Vertex(aSelection));
- std::shared_ptr<GeomDataAPI_Point2D> aCoordAttr =
+ std::shared_ptr<GeomDataAPI_Point2D> aCoordAttr =
std::dynamic_pointer_cast<GeomDataAPI_Point2D>(attribute(COORD_ID()));
aCoordAttr->setValue(sketch()->to2D(aVertex->point()));
}