---
title: "Окна документа"
type: interface
api: [api7]
tags: [interface, api7, ba1782194]
sources:
  - ba1782194.html
  - idocumentframe.html
  - idocumentframes.html
  - iframetreesmanager.html
---

*API интерфейсов. Версия 7 > Документ *

OpenGL


## Интерфейс IDocumentFrame

Интерфейс событий...
Интерфейс окна документа.
IKompasAPIObject
IDocumentFrame
IFrameTreesManager
Примечание:
1. Данный интерфейс может быть получен от интерфейса окон документа IDocumentFrames с помощью свойства IDocumentFrames::Item.
2. У данного интерфейса посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif) можно получить дополнительный интерфейс IFrameTreesManager.


## Active - Активность окна

Тип данных: BOOL
Синтаксис Automation:
```
Active = iObject.Active    Получить свойство (* )
iObject.Active = Active    Установить свойство (* )
Active = iObject.GetActive()    Получить свойство (**)
iObject.SetActive (Active)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_Active (&Active)    Получить свойство,
iObject->put_Active (Active)    Установить свойство
```
Примечание:
С помощью данного свойства можно получить и изменить активность данного окна.


## Caption - Заголовок окна

Тип данных: BSTR (строка)
Синтаксис Automation:
```
Caption = iObject.Caption    Получить свойство (* )
Caption = iObject.GetCaption()    Получить свойство (**)
```
Синтаксис COM:
```
iObject->get_Caption (&Caption)    Получить свойство
```
Примечание:
1. С помощью данного свойства можно получить заголовок данного окна.
2. Свойство доступно только для чтения.


## ConvertCoordinates - Преобразовать оконные координаты в координаты СК согласно ConvertCoordTypeEnum

Синтаксис Automation:
```
BOOL ConvertCoordinates (ConvertCoordTypeEnum type,
long lx,
long ly,
double* x,
double* y,
double* z);
```
Синтаксис COM:
```
HRESULT ConvertCoordinates ([in]ConvertCoordTypeEnum type,
[in]long lx,
[in]long ly,
[out]double* x,
[out]double* y,
[out]double* z,
[out, retval]
VARIANT_BOOL* Result);
Входные параметры:
lx, ly    - координаты в экранных пикселах,
type    - тип СК в которую нужно преобразовать оконные координаты.
Выходные параметры:
x, y, z    - координаты в мм в СК согласно ConvertCoordTypeEnum.
Возвращаемое значение:
TRUE    - преобразование прошло успешно,
FALSE    - в случае неудачи.
```
Примечание:
1. Получив координаты мыши в оконных координатах при обработке событий из ksDocumentFrameNotify:
| frMouseDown | 3 | Нажатие кнопки мыши. |
| --- | --- | --- |
| frMouseUp | 4 | Отпускание кнопки мыши. |
| frMouseDblClick | 5 | Двойной щелчок мыши. |
| frMouseMove | 12 | Перемещение мыши. |
их можно преобразовать в системы координат, указанные в ConvertCoordTypeEnum:
•для графических документов можно получить координаты в СК листа и текущего вида,
•для СП и текстового документа в СК первого листа,
•для модели в СК документа и в СК текущей плоской грани. Грань должна быть выделена в дереве.
2. Если курсор находится в нерабочей области окна активного документа, то конвертация координат не производится, возвращается FALSE. Нерабочей областью окна является, например, панель команд или панель свойств в этом же активном документе.
См. также ConvertCoordTypeEnum


## CurrentCursorStep - Текущий шаг дискретного перемещения курсора

Тип данных: BOOL
Синтаксис Automation:
```
CurrentCursorStep = Object.CurrentCursorStep( )    Получить свойство (* )
CurrentCursorStep = Object.GetCurrentCursorStep()    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_CurrentCursorStep( &CurrentCursorStep )    Получить свойство
```
Примечание
При включенном режиме округления IDocumentFrame::RoundModeOn значения параметров округляются до ближайшего значения, кратного текущему шагу курсора.


## ExecuteKompasCommand - Выполнить команду системы КОМПАС

Синтаксис Automation:
```
BOOL ExecuteKompasCommand (long commandID, BOOL post);
```
Синтаксис COM:
```
HRESULT ExecuteKompasCommand (long commandID, BOOL post, BOOL * retval);
Входные параметры:
commandID    - константа из перечисления ProcessTypeEnum или ksKompasCommandEnum,
post    - true - запуск команды через PostMessage, - false - через SendMessage.
Возвращаемое значение:
TRUE    - в случае удачи,
FALSE    - в случае ошибки.
```
Примечание:
1. Проверить доступность команды можно с помощью функции IDocumentFrame::IsKompasCommandEnable.
2. Проверить, нажата ли в данный момент кнопка команды, можно с помощью IDocumentFrame::IsKompasCommandCheck.


## GetHWND - Получить дескриптор окна

Синтаксис Automation:
```
long GetHWND();
```
Синтаксис COM:
```
HRESULT GetHWND ([out, retval] OLE_HANDLE* hwnd);
Возвращаемое значение:
Дескриптор окна
```


## GetPickRay - Преобразовать оконные координаты в луч взгляда

Синтаксис Automation:
```
BOOL GetPickRay ( long lx, long ly,
double* x, double* y, double* z,
double* zx, double* zy, double* zz);
```
Синтаксис COM:
```
HRESULT GetPickRay( long lx, long ly,
double* x, double* y, double* z,
double* zx, double* zy, double* zz,
VARIANT_BOOL* Result);
Входные параметры:
lx, ly    - координаты в экранных пикселах.
Выходные параметры:
x, y, z    - координаты точки на ближайший к лучу взгляда объект, в координатах компонента,
zx, zy, zz    - направления вектора взгляда.
Возвращаемое значение:
TRUE    - преобразование прошло успешно,
FALSE    - в случае неудачи.
```
Примечание:
Луч смотрит перпендикулярно экрану. Луч строится с учетом перспективной проекции, если она включена.


## GetWorkAreaRect - Размеры свободной рабочей области (за вычетом быстрой панели)

Синтаксис Automation:
```
BOOL GetWorkAreaRect( long * Left, long * Top, long * Right, long * Bottom );
```
Синтаксис COM:
```
HRESULT GetWorkAreaRect( long * Left, long * Top, long * Right, long * Bottom, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Выходные параметры:
Left, Top, Right, Bottom    - Экранные координаты габаритов окна.
Версия: Компас v20
```


## GetZoomScale - Получить масштаб и центр окна документа

Синтаксис Automation:
```
void GetZoomScale (double* x, double* y, double* scale);
```
Синтаксис COM:
```
HRESULT GetZoomScale ([out]double* x, [out]double* y, [out]double* scale);
Выходные параметры:
x, y    - координаты (в СК вида) точки центра изменения масштаба,
scale    - коэффициент изменения масштаба изображения.
```
Примечание:
1. Метод позволяет получить текущий масштаб отображения документа в окне с центром в точке х, у (точка х, у в центре окна).
2. Метод работает только для графических документов.


## IsKompasCommandCheck - Проверить, нажата ли кнопка команды

Синтаксис Automation:
```
long IsKompasCommandCheck (long commandID);
```
Синтаксис COM:
```
HRESULT IsKompasCommandCheck (long commandID, long * retVal);
Входные параметры:
commandID    - константа из перечисления ProcessTypeEnum или ksKompasCommandEnum.
Возвращаемое значение:
1    - кнопка нажата,
0    - кнопка отжата.
```


## IsKompasCommandEnable - Проверить доступность выполнения команды

Синтаксис Automation:
```
BOOL IsKompasCommandEnable (long commandID);
```
Синтаксис COM:
```
HRESULT IsKompasCommandEnable (long commandID, BOOL * retVal);
Входные параметры:
commandID    - константа из перечисления ProcessTypeEnum или ksKompasCommandEnum.
Возвращаемое значение:
TRUE    - команда доступна,
FALSE    - команда недоступна.
```


## RefreshWindow - Обновить изображение окна

Синтаксис Automation:
```
void RefreshWindow();
```
Синтаксис COM:
```
HRESULT RefreshWindow();
```


## Regime - Pежим отображения окна

Тип данных: режим отображения окна из перечисления FrameRegimeEnum
Синтаксис Automation:
```
Regime = iObject.Regime    Получить свойство (* )
iObject.Regime = Regime    Установить свойство (* )
Regime = iObject.GetRegime()    Получить свойство (**)
iObject.SetRegime (Regime)    Установить свойство (**)
```
Синтаксис COM:
```
iObject->get_Regime (&Regime)    Получить свойство,
iObject->put_Regime (Regime)    Установить свойство
```
Примечание:
С помощью данного свойства можно получить и изменить режим отображения данного окна.


## RoundModeOn - Состояние режима округления линейных величин до значений, кратных шагу курсора

Тип данных: BOOL
Синтаксис Automation:
```
RoundModeOn = Object.RoundModeOn( )    Получить свойство (* )
RoundModeOn = Object.GetRoundModeOn()    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_RoundModeOn( &RoundModeOn )    Получить свойство
```
Примечание
При включенном режиме значения параметров округляются до ближайшего значения, кратного текущему шагу курсора IDocumentFrame::CurrentCursorStep.


## SetGabaritModifying - Сообщить окну документа, что библиотека меняет габарит документа

Синтаксис Automation:
```
void SetGabaritModifying();
```
Синтаксис COM:
```
SetGabaritModifying();
```
Примечание:
Использование метода может понадобиться для собственного рисования в окне. Если габарит изменен, то это приведет к генерации события frAddGabarit (определение габаритов документа) из ksDocumentFrameNotify. В обработчике события frAddGabarit библиотека может указать свой габаритный прямоугольник, если документ является чертежом или фрагментом или свой габаритный куб, если документ является моделью. Значение габарита библиотеки сложится с габаритом документа.


## SetZoomScale - Растянуть изображение окна

Синтаксис Automation:
```
BOOL SetZoomScale( double X, double Y, double Scale, BOOL ViewParam );
```
Синтаксис COM:
```
HRESULT SetZoomScale( double X, double Y, double Scale, BOOL ViewParam, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Входные параметры:
X, Y    - Координаты точки центра,
Scale    - Масштаб,
ViewParam    - TRUE - координаты заданы в системе координат текущего вида, - FALSE - координаты заданы в системе координат листа.
Версия: Компас v20
```


## UnConvertCoordinates - Преобразовать координаты документа в логические координаты экрана

Синтаксис Automation:
```
BOOL UnConvertCoordinates( ConvertCoordTypeEnum Type, double X, double Y, double Z, long * LX, long * LY );
```
Синтаксис COM:
```
HRESULT UnConvertCoordinates( ConvertCoordTypeEnum Type, double X, double Y, double Z, long * LX, long * LY, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Входные параметры:
Type    - тип СК, в которой передаются координаты,
X, Y, Z    - координаты в мм в СК, согласно ConvertCoordTypeEnum.
Выходные параметры:
LX, LY    - координаты в экранных пикселах.
```


## Zoom - Увеличить масштаб окна рамкой

Синтаксис Automation:
```
void Zoom (double x1, double y1, double x2, double y2);
```
Синтаксис COM:
```
HRESULT Zoom ([in]double x1, [in]double y1, [in]double x2, [in]double y2);
Входные параметры:
x1, y1    - координаты (в СК вида) первой точки диагонали рамки,
x2, y2    - координаты (в СК вида) второй точки диагонали рамки.
```
Примечание:
1. Метод позволяет растянуть часть документа, заданную рамкой, во все окно.
2. Метод работает только для графических документов.


## ZoomPrevNextOrAll - Отобразить предыдущий/следующий масштаб или показать весь документ

Синтаксис Automation:
```
void ZoomPrevNextOrAll (long Type);
```
Синтаксис COM:
```
HRESULT ZoomPrevNextOrAll ([in]ZoomTypeEnum type);
Входные параметры:
type    - тип изменения масштаба из перечисления ZoomTypeEnum.
```
Примечание:
1. Установка следующего масштаба возможно только после отката к предыдущему масштабу.
2. Метод работает в полном объеме только для графических документов. Для документов-моделей работает только режим ksZoomAll (Показать весь документ).
3. В текстовом документе и в спецификации метод не работает.


## ZoomScale - Изменить масштаб изображения окна

Синтаксис Automation:
```
void ZoomScale (double x, double y, double scale);
```
Синтаксис COM:
```
HRESULT ZoomScale ([in]double x, [in]double y, [in]double scale);
Входные параметры:
x, y    - координаты (в СК вида) точки центра изменения масштаба,
scale    - коэффициент изменения масштаба изображения.
```
Примечание:
1. Метод позволяет установить новый масштаб отображения документа в окне с центром в точке х,у.
2. Метод работает только для графических документов.


## Интерфейс IDocumentFrames

Коллекция окон документа.
Иерархия:
IKompasAPIObject
IKompasCollection
IDocumentFrames
Примечание:
Данный интерфейс может быть получен от интерфейса документа IKompasDocument с помощью свойства IKompasDocument::DocumentFrames.


## Item - Окно, заданное по индексу

Тип данных: указатель на интерфейс окна IDocumentFrame
Синтаксис Automation:
```
frame = iObject.Item (Index)    Получить свойство (* )
frame = iObject.GetItem (Index)    Получить свойство (**)
```
Синтаксис COM:
```
iObject->get_Item (Index, &Frame)    Получить свойство
Входные параметры:
Index    - индекс в коллекции, тип VARIANT.
```
Примечание:
Свойство доступно только для чтения.


## Интерфейс IFrameTreesManager

Интерфейс менеджера вкладок окна документа.
Описание:
Дополнительный интерфейс для IDocumentFrame.
Данный интерфейс можно получить у интерфейса IDocumentFrame посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif).
Примечание:
1. Позволяет создавать вкладку в окне дерева документа.
2. Добавить вкладку можно в окно чертежа, 3D модели и сборки.
3. Для создания закладки используется метод AddTab.


## ActiveTab - Активная закладка

Тип данных: IDispatch
Синтаксис Automation:
```
ActiveTab = Object.ActiveTab    Получить свойство (* )
Object.ActiveTab = ActiveTab    Установить свойство (* )
ActiveTab = Object.GetActiveTab()    Получить свойство (**)
Object.SetActiveTab( ActiveTab )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_ActiveTab( &ActiveTab )    Получить свойство
Object.put_ActiveTab( ActiveTab )    Установить свойство
```
Примечание:
1. Позволяет получить и установить активность вкладки окна дерева документа.
2. Для активизации закладки дерева документа системы КОМПАС нужно передать NULL.
3. Для активизации закладки ActiveX библиотеки нужно передать указатель на интерфейс созданного функцией AddTab ActiveX.


## AddTab - Добавить вкладку

Синтаксис Automation:
```
LPDISPATCH AddTab( BSTR tabCaption, BSTR ocxProgID );
```
Синтаксис COM:
```
HRESULT AddTab( BSTR tabCaption, BSTR ocxProgID, IDispatch ** PVal );
Входные параметры:
tabCaption    - заголовок для новой закладки,
ocxProgID    - ProgID - ActiveX элемента (ActiveX дерева ); Например, «VCTree.VCTreeCtrl.1» - для создания дерева, из примеров SDK. см SDK\lib\VCTree.ocx, проект SDK\OCX\VCTree. Пример использования SDK\C++\Visualc\TestVCTree.
Возвращаемое значение:
- Указатель на интерфейс созданного ActiveX элемента.
```


## AddTabEx - Добавить закладку

Синтаксис Automation:
```
LPDISPATCH AddTabEx( BSTR TabCaption, BSTR TreeCaption, BSTR OcxClassID, BOOL Active, PropertyManagerLayout Layout );
```
Синтаксис COM:
```
HRESULT AddTabEx( BSTR TabCaption, BSTR TreeCaption, BSTR OcxClassID, BOOL Active, PropertyManagerLayout Layout, IDispatch* * Result );
Возвращаемое значение:
- Указатель на интерфейс созданного ActiveX элемента.
Входные параметры:
tabCaption    - имя закладки,
TreeCaption    - заголовок дерева,
ocxProgID    - ProgID - ActiveX элемента (ActiveX дерева); Например, «VCTree.VCTreeCtrl.1» - для создания дерева, из примеров SDK. см SDK\lib\VCTree.ocx, проект SDK\OCX\VCTree. Пример использования SDK\C++\Visualc\TestVCTree,
Active    - активизировать закладку при создании,
Layout    - умолчательное расположение.
```
Примечание:
При повторном создании закладки она будет создана в том же положении, где ее разместил пользователь.


## IsActiveTab - Активная закладка

Тип данных: BOOL
Синтаксис Automation:
```
IsActiveTab = Object.IsActiveTab( Ocx )    Получить свойство (* )
Object.IsActiveTab( Ocx ) = IsActiveTab    Установить свойство (* )
IsActiveTab = Object.GetIsActiveTab( Ocx )    Получить свойство (**)
Object.SetIsActiveTab( Ocx, IsActiveTab )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_IsActiveTab( Ocx, &IsActiveTab )    Получить свойство
Object.put_IsActiveTab( Ocx, IsActiveTab )    Установить свойство
Входные параметры:
IDispatch * Ocx    - указатель интерфейс ActiveX-контрола созданного на закладке.
```
Примечание:
1.Позволяет получить и установить активность пользовательской панели в окне документа.
2.Для активизации закладки ActiveX библиотеки нужно передать указатель на ActiveX интерфейс, созданный функцией IFrameTreesManager::AddTab или IFrameTreesManager::AddTabEx.
Версия Компас v23


## RemoveTab - Удалить вкладку

Синтаксис Automation:
```
BOOL RemoveTab( LPDISPATCH ocx );
```
Синтаксис COM:
```
HRESULT RemoveTab( LPDISPATCH ocx, BOOL * Result );
Входные параметры:
ocx    - указатель на интерфейс ActiveX окна.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```


## TabsVisible - Видимость вкладок документа

Тип данных: BOOL
Синтаксис Automation:
```
TabsVisible = Object.TabsVisible    Получить свойство (* )
Object.TabsVisible = TabsVisible    Установить свойство (* )
TabsVisible = Object.GetTabsVisible()    Получить свойство (**)
Object.SetTabsVisible( TabsVisible )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_TabsVisible( &TabsVisible )    Получить свойство
Object.put_TabsVisible( TabsVisible )    Установить свойство
```
Примечание:
Позволяет получить и установить видимость окна дерева документа.


## TabVisible - Видимость закладки

Тип данных: BOOL
Синтаксис Automation:
```
TabVisible = Object.TabVisible( ocx )    Получить свойство (* )
Object.TabVisible( ocx ) = TabVisible    Установить свойство (* )
TabVisible = Object.GetTabVisible( ocx )    Получить свойство (**)
Object.SetTabVisible( ocx, TabVisible )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_TabVisible( ocx, &TabVisible )    Получить свойство
Object.put_TabVisible( ocx, TabVisible )    Установить свойство
Входные параметры:
ocx    - указатель на интерфейс ActiveX контрола, добавленного на закладку.
```


## TreeCaption - Заголовок окна Дерева документа, устанавливаемый при активизации закладки

Тип данных: BSTR
Синтаксис Automation:
```
TreeCaption = Object.TreeCaption( Ocx )    Получить свойство (* )
Object.TreeCaption( Ocx ) = TreeCaption    Установить свойство (* )
TreeCaption = Object.GetTreeCaption( Ocx )    Получить свойство (**)
Object.SetTreeCaption( Ocx, TreeCaption )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_TreeCaption( Ocx, &TreeCaption )    Получить свойство
Object.put_TreeCaption( Ocx, TreeCaption )    Установить свойство
Входные параметры:
Ocx - Указатель на интерфейс ActiveX-окна, возвращаемого методом IFrameTreesManager::AddTab
```
