+ //data()->addAttribute(CREATION_METHOD(), ModelAPI_AttributeString::typeId());
+
+ data()->addAttribute(X(), ModelAPI_AttributeDouble::typeId());
+ data()->addAttribute(Y(), ModelAPI_AttributeDouble::typeId());
+ data()->addAttribute(Z(), ModelAPI_AttributeDouble::typeId());
+
+ /*data()->addAttribute(EDGE(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(DISTANCE_VALUE(), ModelAPI_AttributeDouble::typeId());
+ data()->addAttribute(DISTANCE_PERCENT(), ModelAPI_AttributeBoolean::typeId());
+ data()->addAttribute(REVERSE(), ModelAPI_AttributeBoolean::typeId());
+
+ data()->addAttribute(POINT(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(PLANE(), ModelAPI_AttributeSelection::typeId());
+
+ data()->addAttribute(FIRST_LINE(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(SECOND_LINE(), ModelAPI_AttributeSelection::typeId());
+
+ data()->addAttribute(INTERSECTION_LINE(), ModelAPI_AttributeSelection::typeId());
+ data()->addAttribute(INTERSECTION_PLANE(), ModelAPI_AttributeSelection::typeId());*/
+}
+
+//==================================================================================================
+void ConstructionPlugin_Point::execute()
+{
+ GeomShapePtr aShape = createByXYZ();
+
+ /*GeomShapePtr aShape;
+
+ std::string aCreationMethod = string(CREATION_METHOD())->value();
+ if(aCreationMethod == CREATION_METHOD_BY_XYZ()) {
+ aShape = createByXYZ();
+ } else if(aCreationMethod == CREATION_METHOD_BY_DISTANCE_ON_EDGE()) {
+ aShape = createByDistanceOnEdge();
+ } else if(aCreationMethod == CREATION_METHOD_BY_PROJECTION()) {
+ aShape = createByProjection();
+ } else if(aCreationMethod == CREATION_METHOD_BY_LINES_INTERSECTION()) {
+ aShape = createByLinesIntersection();
+ } else if(aCreationMethod == CREATION_METHOD_BY_LINE_AND_PLANE_INTERSECTION()) {
+ aShape = createByLineAndPlaneIntersection();
+ }*/
+
+ if(!aShape.get()) {
+ return;
+ }
+
+ std::shared_ptr<ModelAPI_ResultConstruction> aConstr = document()->createConstruction(data());
+ aConstr->setShape(aShape);
+ setResult(aConstr);
+}
+
+//==================================================================================================
+bool ConstructionPlugin_Point::customisePresentation(ResultPtr theResult,
+ AISObjectPtr thePrs,
+ std::shared_ptr<GeomAPI_ICustomPrs> theDefaultPrs)
+{
+ bool isCustomized = theDefaultPrs.get() != NULL &&
+ theDefaultPrs->customisePresentation(theResult, thePrs, theDefaultPrs);
+ //thePrs->setPointMarker(1, 1.); // Set point as a '+' symbol
+ return true;
+}
+
+//==================================================================================================
+std::shared_ptr<GeomAPI_Vertex> ConstructionPlugin_Point::createByXYZ()
+{
+ return GeomAlgoAPI_PointBuilder::vertex(real(X())->value(),
+ real(Y())->value(),
+ real(Z())->value());