---
title: "Макрообъекты"
type: interface
api: [api7]
domain: [2d]
tags: [interface, api7, 2d, bb2346750]
sources:
  - bb2346750.html
  - imacroobjects.html
  - imacroobject.html
  - iannotativecontainer.html
  - iannotativeobject.html
---

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




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

Интерфейс коллекции макроэлементов.
Иерархия:
IKompasAPIObject
IKompasCollection
IDrawingObjects
IMacroObjects
IAnnotativeContainer
Описание:
Позволяет создавать и получать макроэлементы.
Примечание:
1. Получить интерфейс можно, используя метод контейнера графических объектов IDrawingContainer::MacroObjects.
2. Посредством вызова метода IUnknown::QueryInterface (const GUID far& iid, void** pif) интерфейс позволяет получить дополнительный интерфейс IAnnotativeContainer.


## Add - Создать новый элемент и добавить его в коллекцию

Синтаксис Automation:
```
LPDISPATCH Add();
```
Синтаксис COM:
```
HRESULT Add( IMacroObject ** Result);
Возвращаемое значение:
- Указатель на интерфейс макроэлемента IMacroObject.
```


## MacroObject - Макроэлемент, заданный по индексу

Тип данных: указатель на интерфейс макроэлемента IMacroObject
Синтаксис Automation:
```
MacroObject = iObject.MacroObject ( Index );    Получить свойство(* )
MacroObject = iObject.GetMacroObject( Index );    Получить свойство (**)
```
Синтаксис COM:
```
iObject->get_MacroObject( Index, &MacroObject )    Получить свойство
```
Примечание:
Свойство доступно только для чтения.


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

Интерфейс нетипизированного макроэлемента.
Иерархия:
IDispatch
IKompasAPIObject
IDrawingObject
IMacroObject
IAnnotativeContainer
IDrawingContainer
IBuildingContainer
ISymbols2DContainer
IPropertyKeeper
Описание:
Интерфейс позволяет задавать параметры макроэлемента.
Примечание:
1. Интерфейс можно получить, используя свойство коллекции макроэлементов IMacroObjects::MacroObject или метод IMacroObjects::Add.
2. После задания параметров макроэлемента требуется вызвать метод IDrawingObject::Update.
3. Посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif) у данного интерфейса можно получить дополнительные интерфейсы:
•интерфейс контейнера аннотационных объектов IAnnotativeContainer,
•интерфейс контейнера объектов вида графического документа IDrawingContainer,
•интерфейс контейнера объектов СПДС IBuildingContainer,
•интерфейс контейнера условных обозначений ISymbols2DContainer,
•интерфейс получения/редактирования значения свойств IPropertyKeeper.


## AddDefaultHotPoint - Задать характерную точку макроэлемента

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


## AddObjects - Добавить объект, слой, вид, группу или SAFEARRAY объектов в макрообъект

Синтаксис Automation:
```
BOOL AddObjects( VARIANT Objects );
```
Синтаксис COM:
```
HRESULT Add( VARIANT Objects, BOOL * Result );
Входные параметры:
Objects    - объект или массив объектов, добавляемых в макроэлемент.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод позволяет добавлять объект, слой, вид, группу или SAFEARRAY объектов в макроэлемент


## AttachedLeaders - Присоединенные линии выноски

Тип данных: Указатель на интерфейс ILeaders
Синтаксис Automation:
```
AttachedLeaders = Object.AttachedLeaders    Получить свойство(* )
AttachedLeaders = Object.GetAttachedLeaders()    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_AttachedLeaders( &AttachedLeaders )    Получить свойство
Свойство позволяет получить коллекцию присоединенных линий-выносок макроэлемента.
```
Примечание:
Свойство доступно только для чтения.


## BreakObjectsEnabled - Учитывать разрыв вида

Тип данных: BOOL
Синтаксис Automation:
```
BreakObjectsEnabled = Object.BreakObjectsEnabled    Получить свойство(* )
Object.BreakObjectsEnabled = BreakObjectsEnabled    Установить свойство (* )
BreakObjectsEnabled = Object.GetBreakObjectsEnabled()    Получить свойство (**)
Object.SetBreakObjectsEnabled( BreakObjectsEnabled )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_BreakObjectsEnabled( &BreakObjectsEnabled )    Получить свойство
Object.put_BreakObjectsEnabled( BreakObjectsEnabled )    Установить свойство
Версия Компас v18.1
```


## Command - Номер команды редактирования

Тип данных: long
Синтаксис Automation:
```
Command = Object.Command    Получить свойство(* )
Object.Command = Command    Установить свойство (* )
Command = Object.GetCommand()    Получить свойство (**)
Object.SetCommand( Command )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_Command( &Command )    Получить свойство
Object.put_Command( Command )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать номер команды редактирования в меню библиотеки.


## CreateSpcObjects - Создавать объекты спецификации

Тип данных: BOOL
Синтаксис Automation:
```
CreateSpcObjects = Object.CreateSpcObjects    Получить свойство(* )
Object.CreateSpcObjects = CreateSpcObjects    Установить свойство (* )
CreateSpcObjects = Object.GetCreateSpcObjects()    Получить свойство (**)
Object.SetCreateSpcObjects( CreateSpcObjects )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_CreateSpcObjects( &CreateSpcObjects )    Получить свойство
Object.put_CreateSpcObjects( CreateSpcObjects )    Установить свойство
```


## DeleteAttachedLeaders - Удалить присоединенные линии выноски

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


## DeleteDefaultHotPoint - Удалить характерную точку макроэлемента

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


## DoubleClickEditable - Редактирование по двойному клику поддерживается

Тип данных: BOOL
Синтаксис Automation:
```
DoubleClickEditable = Object.DoubleClickEditable    Получить свойство(* )
Object.DoubleClickEditable = DoubleClickEditable    Установить свойство (* )
DoubleClickEditable = Object.GetDoubleClickEditable()    Получить свойство (**)
Object.SetDoubleClickEditable( DoubleClickEditable )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_DoubleClickEditable( &DoubleClickEditable )    Получить свойство
Object.put_DoubleClickEditable( DoubleClickEditable )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать признак редактирования по двойному щелчку мыши.


## ExternalEditable - Поддерживается интерфейс внешнего управления

Тип данных: BOOL
Синтаксис Automation:
```
ExternalEditable = Object.ExternalEditable    Получить свойство(* )
Object.ExternalEditable = ExternalEditable    Установить свойство (* )
ExternalEditable = Object.GetExternalEditable()    Получить свойство (**)
Object.SetExternalEditable( ExternalEditable )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_ExternalEditable( &ExternalEditable )    Получить свойство
Object.put_ExternalEditable( ExternalEditable )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать признак поддержки интерфейса внешнего управления.


## FindObject - Найти объект, ближайший к заданной точке, удовлетворяющий параметрам поиска

Синтаксис Automation:
```
LPDISPATCH FindObject( double X, double Y, double Limit, IFindObjectParameters * Param );
```
Синтаксис COM:
```
HRESULT FindObject( double X, double Y, double Limit, IFindObjectParameters * Param, IDrawingObject * * Result );
Возвращаемое значение:
- Указатель на интерфейс IDrawingObject.
Входные параметры:
X    - первая координата точки,
Y    - вторая координата точки,
Limit    - предел поиска и найденное расстояние,
Param    - параметры поиска объектов IFindObjectParameters
```
Примечание:
Для поиска объектов в точке могут быть заданы расширенные параметры поиска.
Интерфейс расширенных параметров поиска IFindObjectParameters можно получить с помощью метода IKompasDocument1::GetInterface
в 2D документах при использовании константы ksObjectFindObjectParameters.
Если расширенные параметры поиска не требуются, необходимо передать NULL в функцию.


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

Синтаксис Automation:
```
BOOL GetPlacement( double * X,
double * Y,
double * Angle,
BOOL * MirrorSymmetry );
```
Синтаксис COM:
```
HRESULT GetPlacement( double * X,
double * Y,
double * Angle,
BOOL * MirrorSymmetry,
BOOL * Result );
Входные параметры:
X, Y    - координаты точки привязки,
Angle    - угол поворота макроэлемента,
MirrorSymmetry    - признак зеркальной симметрии объекта.
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод позволяет получить точку привязки и угол поворота макроэлемента.


## HotPointsEditable - Редактирование при помощи характерных точек поддерживается

Тип данных: BOOL
Синтаксис Automation:
```
HotPointsEditable = Object.HotPointsEditable    Получить свойство(* )
Object.HotPointsEditable = HotPointsEditable    Установить свойство (* )
HotPointsEditable = Object.GetHotPointsEditable()    Получить свойство (**)
Object.SetHotPointsEditable( HotPointsEditable )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_HotPointsEditable( &HotPointsEditable )    Получить свойство
Object.put_HotPointsEditable( HotPointsEditable )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать признак редактирования при помощи характерных точек.


## Label - Отображаемое имя объекта в дереве

Тип данных: BSTR
Синтаксис Automation:
```
Label = Object.Label    Получить свойство (* )
Label = Object.GetLabel()    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_Label( &Label )    Получить свойство
```
Примечание:
Свойство доступно только для чтения.


## LibraryFileName - Имя файла библиотеки, в которой находится функция редактирования

Тип данных: BSTR
Синтаксис Automation:
```
LibraryFileName = Object.LibraryFileName    Получить свойство(* )
Object.LibraryFileName = LibraryFileName    Установить свойство (* )
LibraryFileName = Object.GetLibraryFileName()    Получить свойство (**)
Object.SetLibraryFileName( LibraryFileName )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_LibraryFileName( &LibraryFileName )    Получить свойство
Object.put_LibraryFileName( LibraryFileName )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать имя файла библиотеки, в которой находится функция редактирования макроэлемента.


## LibraryName - Имя библиотеки, в которой находится функция редактирования

Тип данных: BSTR
Синтаксис Automation:
```
LibraryName = Object.LibraryName    Получить свойство(* )
Object.LibraryName = LibraryName    Установить свойство (* )
LibraryName = Object.GetLibraryName()    Получить свойство (**)
Object.SetLibraryName( LibraryName )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_LibraryFileName( &LibraryFileName )    Получить свойство
Object.put_LibraryFileName( LibraryFileName )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать имя библиотеки, в которой находится функция редактирования макроэлемента (отображаемое имя библиотеки).


## IName - Имя макроэлемента в Дереве чертежа

Тип данных: BSTR
Синтаксис Automation:
```
Name = Object.Name    Получить свойство(* )
Object.Name = Name    Установить свойство (* )
Name = Object.GetName()    Получить свойство (**)
Object.SetName( Name )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_Name( &Name )    Получить свойство
Object.put_Name( Name )    Установить свойство
```


## PropertyObjectEditable - Поддерживается интерфейс внешних свойств объекта

Тип данных: BOOL
Синтаксис Automation:
```
PropertyObjectEditable = Object.PropertyObjectEditable    Получить свойство(* )
Object.PropertyObjectEditable = PropertyObjectEditable    Установить свойство (* )
PropertyObjectEditable = Object.GetPropertyObjectEditable()    Получить свойство (**)
Object.SetPropertyObjectEditable( PropertyObjectEditable )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_PropertyObjectEditable( &PropertyObjectEditable )    Получить свойство
Object.put_PropertyObjectEditable( PropertyObjectEditable )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать признак поддержки интерфейса внешних свойств объекта ILibPropertyObject.


## SetObjects - Добавить объект, слой, вид, группу или SAFEARRAY объектов в макрообъект

Синтаксис Automation:
```
BOOL SetObjects( VARIANT Objects );
```
Синтаксис COM:
```
HRESULT SetObjects( VARIANT Objects, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Входные параметры:
Objects    - объект (VT_DISPATCH) или список объектов (VT_ARRAY    VT_DISPATCH).
```
Примечание:
Перед добавлением старые объекты в макро удаляются.
Для добавления объектов без удаления старых используется метод IMacroObject::AddObjects.
Версия Компас v23


## SetPlacement - Установить точку привязки и угол поворота системы координат макроэлемента

Синтаксис Automation:
```
BOOL SetPlacement( double X,
double Y,
double Angle,
BOOL * MirrorSymmetry );
```
Синтаксис COM:
```
HRESULT SetPlacement( double X,
double Y,
double Angle,
BOOL * MirrorSymmetry,
BOOL * Result );
Входные параметры:
X, Y    - координаты точки привязки,
Angle    - угол поворота макроэлемента,
MirrorSymmetry    - признак зеркальной симметрии объекта (NULL – не изменять признак).
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод позволяет установить точку привязки и угол поворота макроэлемента.
Смотрите также:
Рекомендации по обеспечению корректного редактирования библиотекой макроэлементов, геометрия которых зеркально отражена относительно исходного ее построения


## TransformAngleFromView - Перевод угла из CK листа в CK вида

Синтаксис Automation:
```
BOOL TransformAngleFromView( double * Angle );
```
Синтаксис COM:
```
HRESULT TransformAngleFromView( double * Angle, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Входные параметры:
Angle    - угол в системе координат вида.
Выходные параметры:
Angle    - угол в системе координат макрообъекта.
```


## TransformAngleToView - Перевод угла из CK вида в CK листа

Синтаксис Automation:
```
BOOL TransformAngleToView( double * Angle );
```
Синтаксис COM:
```
HRESULT TransformAngleToView( double * Angle, BOOL * Result );
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
Входные параметры:
Angle    - угол в системе координат макрообъекта.
Выходные параметры:
Angle    - угол в системе координат вида.
```


## TransformPointFromView - Перевод координат точки из CK вида в CK макроэлемента

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


## TransformPointToView - Перевод координат точки из CK макроэлемента в CK вида

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


## UsePlacement - Использовать систему координат

Тип данных: BOOL
Синтаксис Automation:
```
UsePlacement = Object.UsePlacement    Получить свойство(* )
Object.UsePlacement = UsePlacement    Установить свойство (* )
UsePlacement = Object.GetUsePlacement()    Получить свойство (**)
Object.SetUsePlacement( UsePlacement )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_UsePlacement( &UsePlacement )    Получить свойство
Object.put_UsePlacement( UsePlacement )    Установить свойство
КOMPAS v24
```


## UserParams - Массив SAFEARRAY байтов пользовательских параметров объекта

Тип данных: VARIANT
Синтаксис Automation:
```
HotPointsEditable = Object.HotPointsEditable    Получить свойство(* )
Object.HotPointsEditable = HotPointsEditable    Установить свойство (* )
HotPointsEditable = Object.GetHotPointsEditable()    Получить свойство (**)
Object.SetHotPointsEditable( HotPointsEditable )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_HotPointsEditable( &HotPointsEditable )    Получить свойство
Object.put_HotPointsEditable( HotPointsEditable )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать массив SAFEARRAY со структурой пользовательских параметров объекта.


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

Интерфейс контейнера аннотационных объектов.
Иерархия:
IDispatch
IAnnotativeContainer
Описание:
Интерфейс позволяет создавать и получать аннотационные объекты.
Примечание:
Интерфейс является дополнительным к интерфейсу макрообъекта IMacroObject. Данный интерфейс можно получить посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif).


## Add - Добавить объект

Синтаксис Automation:
```
LPDISPATCH Add( long type );
```
Синтаксис COM:
```
HRESULT Add( DrawingObjectTypeEnum type,
IAnnotativeObject ** Result );
Входные параметры:
type    - тип добавляемого объекта из перечисления DrawingObjectTypeEnum.
Возвращаемое значение:
- указатель на интерфейс аннотационного объекта IAnnotativeObject.
```
Примечание:
Метод позволяет добавить объект в контейнер.


## AddObjects - Добавить объекты в группу

Синтаксис Automation:
```
BOOL AddObjects( VARIANT Objects );
```
Синтаксис COM:
```
HRESULT AddObjects( VARIANT Objects,
BOOL * Result );
Входные параметры:
Objects    - объект или массив объектов для добавления в группу ( VARIANT типа VT_DISPATCH или VT_ARRAY    VT_DISPATCH ).
Возвращаемое значение:
TRUE    - в случае успешного завершения,
FALSE    - в случае неудачи.
```
Примечание:
Метод позволяет добавить объекты в группу.


## Count - Количество объектов

Тип данных: long
Синтаксис Automation:
```
Count = Object.Count    Получить свойство(* )
Count = Object.GetCount()    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_Count( &Count )    Получить свойство
```
Примечание:
1. Свойство позволяет получать количество объектов в контейнере.
2. Свойство доступно только для чтения.


## CreateByGeomObject - Преобразовать геометрический объект в аннотационный

Синтаксис Automation:
```
LPDISPATCH CreateByGeomObject( LPDISPATCH obj );
```
Синтаксис COM:
```
HRESULT CreateByGeomObject( IDrawingObject * obj,
IAnnotativeObject ** Result );
Входные параметры:
obj    - указатель на интерфейс геометрического объекта IDrawingObject.
Возвращаемое значение:
- указатель на интерфейс аннотационного объекта IAnnotativeObject.
```
Примечание:
Метод позволяет преобразовать геометрический объект в аннотационный и добавить его в контейнер.


## Item - Получить элемент по индексу

Тип данных: указатель на интерфейс IAnnotativeObject
Синтаксис Automation:
```
Item = Object.Item( Index )    Получить свойство(* )
Item = Object.GetItem( Index )    Получить свойство (**)
```
Синтаксис COM:
```
Object.get_Item( Index, &Item )    Получить свойство
Входные параметры:
Index    - Индекс элемента.
```
Примечание:
1. Свойство позволяет получать аннотационные объекты.
2. Свойство доступно только для чтения.


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

Интерфейс аннотационных объектов.
Иерархия:
IDispatch
IAnnotativeObject
Описание:
Интерфейс позволяет задать параметры аннотационного объекта.
Примечание:
Интерфейс можно получить у контейнера аннотационных объектов с помощью свойства IAnnotativeContainer::Item и методов IAnnotativeContainer::Add и IAnnotativeContainer::CreateByGeomObject.


## Sign1 - Тип значка

Тип данных: из перечисления ksAnnotativeTerminatorSignEnum
Синтаксис Automation:
```
Sign1 = Object.Sign1    Получить свойство(* )
Object.Sign1 = Sign1    Установить свойство (* )
Sign1 = Object.GetSign1()    Получить свойство (**)
Object.SetSign1( Sign1 )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_Sign1( &Sign1 )    Получить свойство
Object.put_Sign1( Sign1 )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать тип значка 1.


## Sign2 - Тип значка

Тип данных: из перечисления ksAnnotativeTerminatorSignEnum.
Синтаксис Automation:
```
Sign2 = Object.Sign2    Получить свойство(* )
Object.Sign2 = Sign2    Установить свойство (* )
Sign2 = Object.GetSign2()    Получить свойство (**)
Object.SetSign2( Sign2 )    Установить свойство (**)
```
Синтаксис COM:
```
Object.get_Sign2( &Sign2 )    Получить свойство
Object.put_Sign2( Sign2 )    Установить свойство
```
Примечание:
Свойство позволяет устанавливать и получать тип значка 2.
