--- title: "FindObj - Найти ближайший к заданной точке объект вида" type: guide api: [api7] tags: [guide, api7, findobj] sources: - findobj.html --- *API экспортных функций > Функции работы с графическим документом  > Навигация по графическому документу  > Функции навигации * ## FindObj - Найти ближайший к заданной точке объект вида Пример... Аналог данной функции при использовании Automation - метод ksDocument2D::ksFindObj. Синтаксис: ``` reference FindObj (double x, double y, double dist); Входные параметры: x, y - координаты точки, dist - размер стороны квадрата-"ловушки" с центром в указанной точке. Возвращаемое значение: указатель на найденный объект вида - в случае успешного завершения, 0 - в случае неудачи. ``` Примечание: 1. Зона поиска - квадрат с указанной стороной и центром. 2. Если значение dist равно MAXDOUBLE, выполняется поиск ближайшего к указанной точке объекта без ограничения зоны поиска. 3. Функцию FindObj можно использовать для поиска объектов внутри макроэлемента. Для этого макроэлемент должен быть открыт на редактирование функцией ksOpenMacro. Пример: ```vb ksOpenMacro(obj); long obj_i=FindObj(x, y, AXIS_FIND_SENS); if( ExistObj(obj_i) ) LightObj(obj_i, 1); EndObj(); При этом, если для макроэлемента задана система координат (см. SetMacroPlacement), то координаты в FindObj должны передаваться в системе координат макроэлемента. Пересчитать координаты в систему координат макроэлемента можно через функцию ksPointIntoMtr. Для этого нужно функцией ksMtr создать матрицу преобразования координат. ``` Пример: ```vb ksMtr(xp, yp, ang, 1,1); // xp, yp, ang, scaleX, scaleY, - параметры Placement макроэлемента. ksPointIntoMtr (x, y, &xn, &yn); EndMtr(); ``` ## FindObj - пример использования { reference pLine; LineSeg(0, 0, 50, 50, 1); LineSeg(50, 50, 70, 20, 1); pLine = FindObj(20, 20, 5); LightObj(pLine, 1); }