---
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);
}
