---
title: "Интерфейс ISpecificationBaseObjects"
type: interface
api: [api7]
tags: [interface, api7, ispecificationbaseobjects]
sources:
  - ispecificationbaseobjects.html
---

*API интерфейсов. Версия 7 > Работа со спецификацией *


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

Интерфейс коллекции базовых объектов спецификации.
Иерархия:
IKompasAPIObject
IKompasCollection
ISpecificationBaseObjects
Описание:
Позволяет получить список базовых объектов спецификации.
Примечание:
1. Управляет массивом интерфейсов ISpecificationBaseObject.
2. Коллекция позволяет создать новые базовые объекты спецификации. Для создания нового базового объекта спецификации используется метод Add. После вызова метода Add объект будет добавлен в коллекцию, но в документе не появится.
3. Для отображения объекта в документе нужно задать его параметры и вызвать метод ISpecificationObject::Update.
4. Данный интерфейс можно получить от интерфейса описания спецификации ISpecificationDescription с помощью свойства ISpecificationDescription::BaseObjects.


## Add - Добавить новый базовый объект спецификации в коллекцию

Синтаксис Automation:
```
LPDISPATCH Add (long Section, double AttrNumb);
```
Синтаксис COM:
```
HRESULT Add ([in] long Section,
[in] double AttrNumb,
[out, retval] ISpecificationBaseObject** Result);
Входные параметры:
Section    - номер раздела,
AttrNumb    - номер атрибута.
Возвращаемое значение:
- Указатель на интерфейс ISpecificationBaseObject базового объекта спецификации.
```
Примечание:
1. После вызова метода Add объект будет добавлен в коллекцию, но в документе не появится. Для отображения объекта в документе нужно задать его параметры и вызвать метод ISpecificationObject::Update.
2. Объект c номером раздела 0.0. добавить нельзя. Нужно добавлять объект спецификации в существующий раздел. Затем с помощью ISpecificationObject::AdditionalSection переносить в дополнительный раздел.


## AddWithParam - Добавить новый объект спецификации в коллекцию

Синтаксис Automation:
```
LPDISPATCH AddWithParam( ISpecificationObjectCreateParam * Param, IPropertyKeeper * PropertyObject, BOOL FillText, VARIANT Geometry );
```
Синтаксис COM:
```
HRESULT AddWithParam( ISpecificationObjectCreateParam * Param, IPropertyKeeper * PropertyObject, BOOL FillText, VARIANT Geometry, ISpecificationBaseObject * * Result );
Возвращаемое значение:
- указатель на интерфейс ISpecificationBaseObject.
Входные параметры:
Param    - Указатель на интерфейс расширенных параметров создания объекта спецификации ISpecificationObjectCreateParam,
PropertyObject    - Указатель на интерфейс объекта, связываемого с объектом спецификации IPropertyKeeper,
Geometry    - Геометрия, используемая для подсветки в документе.
Выходные параметры:
FillText    - TRUE - заполнить тексты колонок объекта спецификации по свойствам объекта.
```
Примечание:
1. При передаче в функцию указателя на объект PropertyObject объект спецификации и объект будут иметь общий ключ информационного объекта. Данные будут сохраняться в общем блоке свойств в метаданных.
2. При редактировании свойств объекта изменения будут передаваться в объект спецификации. Изменение текста объекта спецификации будет передаваться в свойства объекта.
Если объект не передается, то объект спецификации может иметь произвольную геометрию для подсветки, но тексты не будут связаны со свойствами какого-то из объектов.


## CopySpecificationObject - Копирование объекта спецификации

Синтаксис Automation:
```
LPDISPATCH CopySpecificationObject( ISpecificationBaseObject * SpcObj, VARIANT Geometry );
```
Синтаксис COM:
```
HRESULT CopySpecificationObject( ISpecificationBaseObject * SpcObj, VARIANT Geometry, ISpecificationBaseObject ** Result );
Возвращаемое значение:
- Указатель на интерфейс скопированного объекта.
Входные параметры:
SpcObj    - копируемый объект,
Geometry    - геометрия объекта спецификации (Объект VT_DISPATCH или список объектов VT_ARRAY    VT_DISPATCH).
```


## GetSpecificationObjectsForGeom - По геометрии получить массив объектов спецификации в виде SAFEARRAY'я DISPATCH - VT_ARRAY | VT_DISPATCH

Синтаксис Automation:
```
VARIANT GetSpecificationObjectsForGeom( VARIANT PGeom,
VARIANT_BOOL Equal,
long SectionNumb,
double AttrNumb );
```
Синтаксис COM:
```
HRESULT GetSpecificationObjectsForGeom( [in]VARIANT PGeom,
[in]VARIANT_BOOL Equal,
[in] long SectionNumb,
[in] double AttrNumb,
[out, retval] VARIANT* PVal );
Входные параметры:
PGeom    - Массив SafeArray типа VT_ARRAY    VT_DISPATCH объектов геометрии,
Equal    - флаг типа BOOL TRUE - полное совпадение геометрии, FALSE - частичное совпадение геометрии,
SectionNumb    - номер раздела объектов СП,
AttrNumb    - номер типа атрибута объектов СП или 0.
Возвращаемое значение:
- Массив SafeArray типа VT_ARRAY    VT_DISPATCH объектов спецификации.
```
Примечание:
1. По присланной геометрии получить массив базовых объектов спецификации, содержащих эту геометрию. У базового объекта СП может быть установлена геометрия, которая ассоциируется с данным объектом.
Для 2D документа это массив IDrawingObject.
Для 3D документа это массив объектов:
•IPart7 (может быть один компонент),
•IBody7 (тела верхнего уровня сборки),
•IPositionLeader (обозначения позиций верхнего уровня сборки).
Получить массив объектов можно всегда.
2. Если геометрия должна совпадать полностью, нужно передать параметр Equal=TRUE.
3. Поиск можно ограничить объектами определенного раздела, если указать номер раздела объектов.
4. Поиск можно ограничить объектами определенного типа атрибута.


## Item - Базовый объект спецификации, заданный по индексу, по уникальному идентификатору или по уникальному номеру

Тип данных: Указатель на интерфейс ISpecificationBaseObject объекта спецификации
Синтаксис Automation:
```
spcObj = iObject.Item (Index)    Получить свойство (* )
spcObj = iObject.GetItem (Index)    Получить свойство (**)
```
Синтаксис COM:
```
iObject->get_Item (Index, &spcObj)    Получить свойство
```
Примечание:
1. С помощью данного свойства можно получить базовый объект спецификации, заданный по индексу, по уникальному идентификатору IKompasAPIObject::Reference или уникальному номеру ISpecificationObject::UniqueNumber.
2. Свойство доступно только для чтения.
