---
title: "Запрос к сиcтеме (Интерфейсы ksRequestInfo3D, IRequestInfo)"
type: interface
api: [api7]
domain: [3d]
tags: [interface, api7, 3d, ksrequestinfo3d]
sources:
  - ksrequestinfo3d.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D ) *


## Запрос к сиcтеме (Интерфейсы ksRequestInfo3D, IRequestInfo)

Интерфейс параметров запроса к системе.
| ksRequestInfo3D | - интерфейс Automation |
| --- | --- |
| IRequestInfo | - интерфейс COM |
Примечания:
1. Данный интерфейс позволяет установить параметры процесса указания местоположения точки или объектов (UserGetPlacementAndEntity):
2. Указатель на данный интерфейс можно получить методом ksDocument3D::GetRequestInfo.
3. Методами данного интерфейса можно получить/изменить:
•строку подсказки в процессе;
•функцию обратной связи для фильтрации объектов в процессе указания;
•функцию обратной связи процесса.
4. Методами данного интерфейса можно получить:
•указатель на интерфейс локальной системы координат ksPlacement,
•указатель на интерфейс ksEntityCollection - массив указанных в процессе объектов.
Положение объекта (Интерфейсы ksPlacement, IPlacement)
Массив объектов модели
Массив сопряжений (Интерфейсы ksMateConstraintCollection, IMateConstraintCollection)


## commandsString - Строка для создания меню командного окна

Аналог данного свойства при использовании COM - методы IRequestInfo::GetCommandsString и IRequestInfo::SetCommandsString.
Тип данных: строка
Синтаксис Automation:
```
commandsString = IRequestInfo.commandsString    Получить свойство (* )
IRequestInfo.commandsString = commandsString    Установить свойство (* )
commandsString = IRequestInfo.GetCommandsString()    Получить свойство (**)
IRequestInfo.SetCommandsString(commandsString)    Установить свойство (**)
```


## CreatePhantom - Создать фантом

Синтаксис Automation:
```
BOOL CreatePhantom();
```
Синтаксис COM:
```
BOOL CreatePhantom();
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```


## cursorId - Идентификатор курсора

![cursor_select](../resources/images_cursor_select.jpg)

![cursor_snap](../resources/images_cursor_snap.jpg)

![POINT_NONUM](../resources/images_point_nonum.jpg)

![cursor_catch](../resources/images_cursor_catch.jpg)

Аналог данного свойства при использовании COM - методы IRequestInfo::GetCursorId и IRequestInfo::SetCursorIdString.
Тип данных: long
Синтаксис Automation:
```
cursorId = IRequestInfo.cursorId    Получить свойство (* )
IRequestInfo.cursorId = cursorId    Установить свойство (* )
cursorId = IRequestInfo.GetCursorId()    Получить свойство (**)
IRequestInfo.SetCursorId(cursorId)    Установить свойство (**)
```
Примечание:
Кроме стандартных констант из WINUSER.H можно использовать стандартные курсоры системы КОМПАС (ldefin2d.h):
OCR_SELECT
OCR_SNAP
OCR_DEFAULT
OCR_CATCH


## cursorName - Имя курсора

![cursor_select](../resources/images_cursor_select.jpg)

![cursor_snap](../resources/images_cursor_snap.jpg)

![POINT_NONUM](../resources/images_point_nonum.jpg)

![cursor_catch](../resources/images_cursor_catch.jpg)

Аналог данного свойства при использовании COM - методы IRequestInfo::GetCursorName и IRequestInfo::SetCursorNameString.
Тип данных: строка
Синтаксис Automation:
```
cursorName = IRequestInfo.cursorName    Получить свойство (* )
IRequestInfo.cursorName = cursorName    Установить свойство (* )
cursorName = IRequestInfo.GetCursorName()    Получить свойство (**)
IRequestInfo.SetCursorName(cursorName)    Установить свойство (**)
```
Примечание:
Кроме стандартных констант из WINUSER.H можно использовать стандартные курсоры системы КОМПАС (ldefin2d.h):
OCR_SELECT
OCR_SNAP
OCR_DEFAULT
OCR_CATCH


## DynamicFiltering - Режим динамической фильтрации

Аналог данного свойства при использовании COM - методы IRequestInfo::GetDynamicFiltering и IRequestInfo::SetDynamicFiltering.
Тип данных: BOOL
Значения свойства:
| TRUE | - режим динамической фильтрации включен. |
| --- | --- |
Синтаксис Automation:
```
DynamicFiltering = iObject.DynamicFiltering    Получить свойство (* )
iObject.DynamicFiltering = DynamicFiltering    Установить свойство (* )
DynamicFiltering = iObject.GetDynamicFiltering()    Получить свойство (**)
iObject.SetDynamicFiltering (DynamicFiltering)    Установить свойство (**)
```
Синтаксис COM:
```
DynamicFiltering = iObject.GetDynamicFiltering()    Получить свойство (* )
iObject.SetDynamicFiltering (DynamicFiltering)    Получить свойство (**)
```
Примечания:
Свойство распространяется на работу процесса указания местоположения или объектов ksDocument3D::UserGetPlacementAndEntity.
Перед запуском процесса определяются параметры запроса к системе - интерфейс ksRequestInfo3D, в котором можно определить функцию фильтрации.
Если свойство DynamicFiltering, определяющее режим динамической фильтрации, равно FALSE (умолчательный режим), то функция фильтрации вызывается только когда курсор проходит над объектом, чтобы библиотека могла сообщить системе подходит данный объект или нет. Если функция фильтрации возвращает TRUE, объект библиотеке подходит.
Если свойство DynamicFiltering равно TRUE, то функция фильтрации вызывается не только когда курсор проходит над объектом, но и когда объекта под курсором нет. В таком случае передается сигнал библиотеке, что объекта под курсором нет. Возвращаемое значение функции фильтрации игнорируется.
Если свойство включено, то метод фильтрации объектов, заданный функцией ksRequestInfo3D::SetFilterCallBack, будет вызываться динамически, не зависимо от того установлен курсор над объектом или нет.
Если свойство выключено, то метод будет вызываться, только если курсор находится над объектом.


## GetCallBack - Получить имя (в Automation) или адрес (в COM) функции обратной связи процесса

Синтаксис Automation:
```
BSTR GetCallBack();
Возвращаемое значение:
- имя функции.
```
Синтаксис COM:
```
USERSELECTCALLBACKPROC GetCallBack();
Возвращаемое значение:
- адрес функции.
```


## GetCallBackFeature - Получить интерфейс на объект дерева в функции обратной связи для процесса ksDocument3D_UserGetPlacementAndEntity

Получить интерфейс на объект дерева в функции обратной связи для процесса ksDocument3D_UserGetPlacementAndEntity.
Синтаксис Automation:
```
LPDISPATCH GetCallBackFeature();
```
Синтаксис COM:
```
LPFEATURE GetCallBackFeature();
Возвращаемое значение:
- указатель на интерфейс объекта дерева ksFeature или IFeature.
```


## GetCurrentCommand - Получить номер текущей команды из командного окна

Синтаксис Automation:
```
long GetCurrentCommand();
```
Синтаксис COM:
```
long GetCurrentCommand();
Возвращаемое значение:
- номер текущей команды.
```


## GetEntityCollection - Получить указатель на интерфейс массива объектов, указанных в процессе

Синтаксис Automation:
```
LPDISPATCH GetEntityCollection();
```
Синтаксис COM:
```
LPENTITYCOLLECTION GetEntityCollection();
Возвращаемое значение:
- указатель на интерфейс ksEntityCollection или IEntityCollection.
```
Примечание:
В возвращаемом массиве контроль выключен, что позволяет добавлять в массив нулевые указатели.


## GetFilterCallBack - Получить имя (в Automation) или адрес (в COM) функции обратной связи для фильтрации объектов

Синтаксис Automation:
```
BSTR GetFilterCallBack();
Возвращаемое значение:
- имя функции.
```
Синтаксис COM:
```
USERSELECTFILTERPROC GetFilterCallBack();
Возвращаемое значение:
- адрес функции.
```


## GetIPhantom - Получить указатель на интерфейс фантома

Синтаксис Automation:
```
LPDISPATCH GetIPhantom();
```
Синтаксис COM:
```
LPPART GetIPhantom();
Возвращаемое значение:
- указатель на интерфейс ksPart или IPart.
```


## GetMateConstraintCollection - Получить указатель на интерфейс массива временных сопряжений для фантома

Синтаксис Automation:
```
LPDISPATCH GetMateConstraintCollection();
```
Синтаксис COM:
```
LPMATECONSTRAINTCOLLECTION GetMateConstraintCollection();
Возвращаемое значение:
- указатель на интерфейс ksMateConstraintCollection или ImateConstraintCollection.
```


## GetObjectsFilter3D - Способ фильтрации 3D объектов в процессе

Синтаксис Automation:
```
BOOL GetObjectsFilter3D( long filterType );
```
Синтаксис COM:
```
BOOL GetObjectsFilter3D( long filterType );
Входные параметры:
filterType    - тип объектов для фильтрации в процессе из перечисления ksProcessObjectsFilter3DEnum.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```


## GetPlacement - Получить указатель на интерфейс локальной системы координат

Синтаксис Automation:
```
LPDISPATCH GetPlacement();
```
Синтаксис COM:
```
LPPLACEMENT GetPlacement();
Возвращаемое значение:
- указатель на интерфейс ksPlacement или IPlacement.
```


## GetProcessingGroupObjectsCallBack - Получить имя (в Automation) или адрес (в COM) функции обратной связи для обработки объектов, пришедших при селектировании рамкой

Синтаксис Automation:
```
BSTR GetProcessingGroupObjectsCallBack();
Возвращаемое значение:
- имя функции.
```
Синтаксис COM:
```
void* GetProcessingGroupObjectsCallBack();
Возвращаемое значение:
- адрес функции.
```


## menuId - Идентификатор меню

Аналог данного свойства при использовании COM - методы IRequestInfo::GetMenuId и IRequestInfo::SetMenuId.
Тип данных: long
Синтаксис Automation:
```
menuId = IRequestInfo.menuId    Получить свойство (* )
IRequestInfo.menuId = menuId    Установить свойство (* )
menuId = IRequestInfo.GetMenuId()    Получить свойство (**)
IRequestInfo.SetMenuId (menuId)    Установить свойство (**)
```


## processParam - Параметры процесса

Аналог данного свойства при использовании COM - методы IRequestInfo::GetProcessParam и IRequestInfo::SetProcessParam.
Тип данных: указатель на интерфейс IProcessParam
Синтаксис Automation:
```
processParam = iObject.ProcessParam    Получить свойство (* )
iObject.ProcessParam = processParam    Установить свойство (* )
processParam = iObject.GetProcessParam()    Получить свойство (**)
iObject.SetProcessParam (processParam)    Установить свойство (**)
```
Примечания:
Если в интерфейсе параметров запроса к системе указатель на интерфейс параметров процесса не NULL, то при выполнении процесса UserGetPlacementAndEntity, элементы управления из IProcessParam попадут на Панель свойств процесса.


## prompt - Строка-подсказка процесса

Аналог данного свойства при использовании COM - методы IRequestInfo::GetPrompt и IRequestInfo::SetPrompt.
Тип данных: строка
Синтаксис Automation:
```
prompt = IRequestInfo.prompt    Получить свойство (* )
IRequestInfo.prompt = prompt    Установить свойство (* )
prompt = IRequestInfo.GetPrompt()    Получить свойство (**)
IRequestInfo.SetPrompt(prompt)    Установить свойство (**)
```


## selectionBandMode - Режим использования прямоугольной рамки для выделения объектов

Тип данных: из перечисления ksSelectionBandMode
Синтаксис Automation:
```
selectionBandMode = Object.selectionBandMode    Получить свойство (* )
Object.selectionBandMode = selectionBandMode    Установить свойство (* )
selectionBandMode = Object.GetSelectionBandMode()    Получить свойство (**)
Object.SetSelectionBandMode( selectionBandMode )    Установить свойство (**)
```


## SetCallBack - Изменить имя (в Automation) или адрес (в COM) функции обратной связи процесса

Синтаксис Automation:
```
BOOL SetCallBack (BSTR methodName,
long hInst,
LPDISPATCH dispatchOCX);
Входные параметры:
methodName    - имя функции,
hInst    - HINSTANCE модуля, в котором находится функция,
dispatchOCX    - интерфейс, в котором находится функция.
```
Синтаксис COM:
```
BOOL SetCallBack (USERSELECTCALLBACKPROC callBack);
Входной параметр:
callBack    - адрес функции.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Тип функции обратной связи для выбора объекта:
typedef int (__stdcall * USERSELECTCALLBACKPROC)(LPENTITY, LPREQUESTINFO);
Прототип CallBack-функции:
Синтаксис Automation (пример для Visual C):
int WINAPI SELECTCALLBACKPROC (LPDISPATCH entity,
LPDISPATCH info);
Синтаксис COM:
```
int __stdcall SelectCallBackProc (LPENTITY entity, LPREQUESTINFO info);
Входные параметры:
entity    - указатель на интерфейс ksEntity или IEntity,
info    - указатель на интерфейс kIsRequestInfo3D или IRequestInfo.
Функция вызывается по нажатию кнопки мыши на подсвеченном объекте.
Получить доступ к массиву объектов, указываемых в процессе, можно вызовом метода GetEntityCollection у параметра info.
Если входной параметр entity равен 0, то в процессе была указана точка и рекомендуется заполнить массив нулевыми указателями.
Если entity не равен 0, то при необходимости можно добавить данный объект в массив.
CallBack-функция должна вернуть 1, если содержимое массива выбранных элементов было изменено (в этом случае будет обновлена подсветка выбранных объектов в модели), и 0, если массив не изменился (в модели никаких изменений не произойдет).
Функция устарела. Использование данной функции может привести к ошибке в библиотеке, собранной с конфигурацией x64.Рекомендуется использовать функцию ksRequestInfo3D::SetCallBackEx.
```


## SetCallBackEx - Установить функцию обратной связи

Синтаксис Automation:
```
BOOL SetCallBackEx(LPCTSTR methodName, VARIANT hInst, LPDISPATCH dispatchOCX);
Входные параметры:
methodName    - строка с именем функции обратной связи,
hInst    - идентификатор приложения (dll), в котором реализована CallBack-функция,
dispatchOCX    - указатель на интерфейc IDispatch, в котором реализована CallBack-функция.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Аналог функции в COM см. IRequestInfo3D::SetCallBack.
Прототип FilterCallBack-функции:
Синтаксис Automation (пример для Visual C):
int WINAPI SELECTCALLBACKPROC(LPDISPATCH entity, LPDISPATCH info);
Входной параметр:
entity    - указатель на интерфейс текущего элемента или объекта ksEntity,
info    - указатель на интерфейс ksRequestInfo3D.
```
Примечание:
Функция вызывается по нажатию кнопки мыши на подсвеченном объекте.
Получить доступ к массиву объектов, указываемых в процессе, можно вызовом метода GetEntityCollection у параметра info.
•Если входной параметр entity равен 0, то в процессе была указана точка и рекомендуется заполнить массив нулевыми указателями.
•Если entity не равен 0, то при необходимости можно добавить данный объект в массив.
CallBack-функция должна вернуть:
•1, если содержимое массива выбранных элементов было изменено (в этом случае будет обновлена подсветка выбранных объектов в модели).
•0, если массив не изменился (в модели никаких изменений не произойдет).
HINSTANCE библиотеки нужно передать через VARIANT, как VT_I4 в Win32 и VT_I8 в x64.
Для правильного формирования _variant_t HINSTANCE нужно передавать через приведение к (LONG_PTR).
В библиотеках, использующих автоматизацию, рекомендуется использовать данную функцию вместо ksRequestInfo3D::SetCallBack.


## SetFilterCallBack - Изменить имя (в Automation) или адрес (в COM) функции обратной связи для фильтрации объектов

Синтаксис Automation:
```
BOOL SetFilterCallBack (BSTR methodName,
long hInst,
LPDISPATCH dispatchOCX);
Входные параметры:
methodName    - имя функции,
hInst    - HINSTANCE модуля, в котором находится функция,
dispatchOCX    - интерфейс, в котором находится функция.
```
Синтаксис COM:
```
BOOL SetFilterCallBack (USERSELECTFILTERPROC callBack);
Входной параметр:
callBack    - адрес функции.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```
Примечание:
Тип функции обратной связи для фильтрации объекта (функции-«фильтра»)
typedef BOOL (__stdcall * USERSELECTFILTERPROC)(LPENTITY);
Прототип FilterCallBack-функции:
Синтаксис Automation (пример для Visual C):
BOOL WINAPI SELECTFILTERPROC (LPDISPATCH _entity);
Синтаксис COM:
```
BOOL __stdcall SelectFilterProc (LPENTITY entity);
Входной параметр:
entity    - указатель на интерфейс текущего элемента или объекта ksEntity или IEntity.
Возвращаемое значение:
TRUE    - объект будет подсвечен.
В данной функции можно отобрать интересующие пользователя элементы или объекты. Функция вызывается при изменении положения курсора, если курсор находится рядом с элементом или объектом модели.
Функция устарела. Использование данной функции может привести к ошибке в библиотеке, собранной с конфигурацией x64.
Рекомендуется использовать функцию ksRequestInfo3D::SetFilterCallBackEx.
```


## SetFilterCallBackEx - Установить функцию обратной связи для фильтрации объектов

Синтаксис Automation:
```
BOOL SetFilterCallBackEx(LPCTSTR methodName, VARIANT hInst, LPDISPATCH dispatchOCX);
Входные параметры:
methodName    - строка с именем функции обратной связи,
hInst    - идентификатор приложения (dll), в котором реализована CallBack-функция,
dispatchOCX    - указатель на интерфейc IDispatch, в котором реализована CallBack-функция.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Аналог функции в COM, см. IRequestInfo3D::SetFilterCallBack.
Прототип FilterCallBack-функции:
Синтаксис Automation (пример для Visual C):
BOOL WINAPI SELECTFILTERPROC (LPDISPATCH _entity);
Входной параметр:
entity    - указатель на интерфейс текущего элемента или объекта ksEntity или IEntity.
```
Примечание:
В данной функции можно отобрать интересующие пользователя элементы или объекты. Функция вызывается при изменении положения курсора, если курсор находится рядом с элементом или объектом модели.
HINSTANCE библиотеки нужно передать через VARIANT, как VT_I4 в Win32 и VT_I8 в x64.
Для правильного формирования _variant_t HINSTANCE нужно передавать через приведение к (LONG_PTR).
В библиотеках, использующих автоматизацию, рекомендуется использовать данную функцию вместо ksRequestInfo3D::SetFilterCallBack.


## SetObjectsFilter3D - Способ фильтрации 3D объектов в процессе

Синтаксис Automation:
```
BOOL SetObjectsFilter3D( long filterType, BOOL newVal);
```
Синтаксис COM:
```
BOOL SetObjectsFilter3D( long filterType, BOOL newVal);
Входные параметры:
filterType    - тип объектов для фильтрации в процессе из перечисления ksProcessObjectsFilter3DEnum,
newVal    - признак фильтрации.
Возвращаемое значение:
TRUE    - в случае успешного завершения.
```


## SetProcessingGroupObjectsCallBack - Установить имя (в Automation) или адрес (в COM) функции обратной связи для обработки объектов, пришедших при селектировании рамкой

Синтаксис Automation:
```
BOOL SetProcessingGroupObjectsCallBack(BSTR methodName, VARIANT hInst, LPDISPATCH dispatchOCX);
Входные параметры:
methodName    - имя функции,
hInst    - HINSTANCE модуля, в котором находится функция,
dispatchOCX    - интерфейс, в котором находится функция.
Синтаксис COM :
BOOL SetProcessingGroupObjectsCallBack(void* callBack);
Входной параметр:
callBack    - адрес функции.
Возвращаемое значение
TRUE    - в случае успешного завершения.
Прототип CallBack-функции:
Синтаксис Automation (пример для Visual C):
BOOL WINAPI USERPROCESSINGGROUPOBJECTS( VARIANT * Objects, long selectionType );
```
Синтаксис COM:
```
BOOL __stdcall USERPROCESSINGGROUPOBJECTS( VARIANT * Objects, long selectionType );
Входные параметры:
Objects    - список объектов массив SafeArray тип VT_ARRAY    VT_DISPATCH в автоматизации; VT_ARRAY    VT_UNKNOWN в COM.
selectionType    - Тип селектирования из перечисления.
Возвращаемое значение
- не используется.
```
Примечание
HINSTANCE библиотеки нужно передать через VARIANT, как VT_I4 в Win32 и VT_I8 в x64.
Для правильного формирования _variant_t HINSTANCE нужно передавать через приведение к (LONG_PTR).


## ShowCommandWindow - Показывать командное окно

Тип данных: BOOL
Синтаксис Automation:
```
ShowCommandWindow = Object.ShowCommandWindow    Получить свойство (* )
Object.ShowCommandWindow = ShowCommandWindow    Установить свойство (* )
ShowCommandWindow = Object.GetShowCommandWindow()    Получить свойство (**)
Object.SetShowCommandWindow( ShowCommandWindow )    Установить свойство (**)
```
Синтаксис COM:
```
ShowCommandWindow = Object.GetShowCommandWindow();    Получить свойство
Object.SetShowCommandWindow( ShowCommandWindow );    Установить свойство
```


## title - Строка-заголовок командного окна процесса

Аналог данного свойства при использовании COM - методы IRequestInfo::GetTitle и IRequestInfo::SetTitle.
Тип данных: строка
Синтаксис Automation:
```
title = IRequestInfo.title    Получить свойство (* )
IRequestInfo.title = title    Установить свойство (* )
title = IRequestInfo.GetTitle()    Получить свойство (**)
IRequestInfo.SetTitle(title)    Установить свойство (**)
```
