+std::shared_ptr<GeomDataAPI_Point2D> PartSet_Tools::
+ findAttributePoint(CompositeFeaturePtr theSketch, double theX, double theY,
+ double theTolerance, const QList<FeaturePtr>& theIgnore)
+{
+ std::shared_ptr<GeomAPI_Pnt2d> aClickedPoint = std::shared_ptr<GeomAPI_Pnt2d>(
+ new GeomAPI_Pnt2d(theX, theY));
+
+ std::list<std::shared_ptr<ModelAPI_Attribute> > anAttiributes;
+ for (int i = 0; i < theSketch->numberOfSubs(); i++) {
+ FeaturePtr aFeature = theSketch->subFeature(i);
+ if (!theIgnore.contains(aFeature)) {
+ anAttiributes = aFeature->data()->attributes(GeomDataAPI_Point2D::typeId());
+
+ std::list<std::shared_ptr<ModelAPI_Attribute> >::const_iterator anIt;
+ for (anIt = anAttiributes.cbegin(); anIt != anAttiributes.cend(); ++anIt) {
+ std::shared_ptr<GeomDataAPI_Point2D> aCurPoint =
+ std::dynamic_pointer_cast<GeomDataAPI_Point2D>(*anIt);
+ double x = aCurPoint->x();
+ double y = aCurPoint->y();
+ if (aCurPoint && (aCurPoint->pnt()->distance(aClickedPoint) < theTolerance)) {
+ return aCurPoint;
+ }
+ }
+ }
+ }
+ return std::shared_ptr<GeomDataAPI_Point2D>();
+}
+
+