#include "ConstructionAPI_Point.h"
+#include <GeomAPI_Pnt.h>
#include <GeomAPI_Shape.h>
+#include <GeomAPI_Vertex.h>
+#include <ModelHighAPI_Double.h>
#include <ModelHighAPI_Dumper.h>
#include <ModelHighAPI_Selection.h>
#include <ModelHighAPI_Tools.h>
{
if (theIsCircularEdge) {
setByCenterOfCircle(theObject);
+ } else if (theObject.shapeType() == "VERTEX") {
+ // This is tricky way to get vertex shape.
+ fillAttribute(theObject, mypointToProject);
+ GeomShapePtr aShape = mypointToProject->value();
+ if (!aShape.get()) {
+ ResultPtr aContext = mypointToProject->context();
+ if (!aContext.get()) {
+ fillAttribute(ModelHighAPI_Selection(), mypointToProject);
+ return;
+ }
+ aShape = aContext->shape();
+ }
+
+ if (!aShape.get()) {
+ fillAttribute(ModelHighAPI_Selection(), mypointToProject);
+ return;
+ }
+
+ GeomVertexPtr aVertex = aShape->vertex();
+ if (!aVertex.get()) {
+ fillAttribute(ModelHighAPI_Selection(), mypointToProject);
+ return;
+ }
+
+ GeomPointPtr aPnt = aVertex->point();
+ if (!aPnt.get()) {
+ fillAttribute(ModelHighAPI_Selection(), mypointToProject);
+ return;
+ }
+
+ fillAttribute(ModelHighAPI_Selection(), mypointToProject);
+ setByXYZ(aPnt->x(), aPnt->y(), aPnt->z());
} else {
setByCenterOfGravity(theObject);
}
mycreationMethod);
fillAttribute(ConstructionPlugin_Point::PROJECTION_TYPE_ON_EDGE(),
myprojectionType);
- fillAttribute(theVertex, mypoinToProject);
+ fillAttribute(theVertex, mypointToProject);
fillAttribute(theEdge, myedgeForPointProjection);
execute();
mycreationMethod);
fillAttribute(ConstructionPlugin_Point::PROJECTION_TYPE_ON_FACE(),
myprojectionType);
- fillAttribute(theVertex, mypoinToProject);
+ fillAttribute(theVertex, mypointToProject);
fillAttribute(theFace, myfaceForPointProjection);
execute();
}
theDumper << ", " << reverse()->value();
} else if (aMeth == ConstructionPlugin_Point::CREATION_METHOD_BY_PROJECTION()) {
- theDumper << poinToProject() << ", ";
+ theDumper << pointToProject() << ", ";
if (projectionType()->value() == ConstructionPlugin_Point::PROJECTION_TYPE_ON_EDGE()) {
theDumper << edgeForPointProjection();
} else {
ModelAPI_AttributeDouble, /** Ratio */,
reverse, ConstructionPlugin_Point::REVERSE(),
ModelAPI_AttributeBoolean, /** Reverse */,
- poinToProject, ConstructionPlugin_Point::POINT_TO_PROJECT(),
+ pointToProject, ConstructionPlugin_Point::POINT_TO_PROJECT(),
ModelAPI_AttributeSelection, /** Point to project*/,
projectionType, ConstructionPlugin_Point::PROJECTION_TYPE(),
ModelAPI_AttributeString, /** Type of the point projection */,
TestPoint_ProjectOnFace.py
TestPoint_GeometricalPropertyCenterOfGravity.py
TestPoint_GeometricalPropertyCenterOfCircle.py
+ TestPoint_VertexSelection.py
TestPointName.py
TestPlane.py)
--- /dev/null
+## Copyright (C) 2014-2017 CEA/DEN, EDF R&D
+##
+## This library is free software; you can redistribute it and/or
+## modify it under the terms of the GNU Lesser General Public
+## License as published by the Free Software Foundation; either
+## version 2.1 of the License, or (at your option) any later version.
+##
+## This library is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+## Lesser General Public License for more details.
+##
+## You should have received a copy of the GNU Lesser General Public
+## License along with this library; if not, write to the Free Software
+## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##
+## See http:##www.salome-platform.org/ or
+## email : webmaster.salome@opencascade.com<mailto:webmaster.salome@opencascade.com>
+##
+
+from salome.shaper import model
+from GeomAPI import *
+
+model.begin()
+partSet = model.moduleDocument()
+Part_1 = model.addPart(partSet)
+Part_1_doc = Part_1.document()
+Box_1 = model.addBox(Part_1_doc, 10, 10, 10)
+Point_2 = model.addPoint(Part_1_doc, model.selection("VERTEX", "Box_1_1/Front&Box_1_1/Left&Box_1_1/Top"))
+model.do()
+model.end()
+
+assert (len(Point_2.results()) > 0)
+rightPosition = GeomAPI_Vertex(10, 0, 10)
+assert(rightPosition.isEqual(Point_2.results()[0].resultSubShapePair()[0].shape()))
+
+assert(model.checkPythonDump())