- data()->addAttribute(LINE_ATTR_START, GeomDataAPI_Point2D::type());
- data()->addAttribute(LINE_ATTR_END, GeomDataAPI_Point2D::type());
+ SketchPlugin_Sketch* aSketch = sketch();
+ if (aSketch) {
+ // compute a start point in 3D view
+ std::shared_ptr<GeomDataAPI_Point2D> aStartAttr = std::dynamic_pointer_cast<
+ GeomDataAPI_Point2D>(data()->attribute(START_ID()));
+ // compute an end point in 3D view
+ std::shared_ptr<GeomDataAPI_Point2D> anEndAttr = std::dynamic_pointer_cast<
+ GeomDataAPI_Point2D>(data()->attribute(END_ID()));
+ if (aStartAttr->isInitialized() && anEndAttr->isInitialized()) {
+ std::shared_ptr<GeomAPI_Pnt> aStart(aSketch->to3D(aStartAttr->x(), aStartAttr->y()));
+ std::shared_ptr<GeomAPI_Pnt> anEnd(aSketch->to3D(anEndAttr->x(), anEndAttr->y()));
+ //std::cout<<"Execute line "<<aStart->x()<<" "<<aStart->y()<<" "<<aStart->z()<<" - "
+ // <<anEnd->x()<<" "<<anEnd->y()<<" "<<anEnd->z()<<std::endl;
+ // make linear edge
+ std::shared_ptr<GeomAPI_Edge> anEdge = GeomAlgoAPI_EdgeBuilder::line(aStart, anEnd);
+ // store the result
+ std::shared_ptr<ModelAPI_ResultConstruction> aConstr = document()->createConstruction(
+ data());
+ aConstr->setShape(anEdge);
+ aConstr->setIsInHistory(false);
+ setResult(aConstr);
+ }
+ }