---
title: "Массив объектов Дерева построения (Интерфейсы ksFeatureCollection, IFeatureCollection)"
type: interface
api: [api7]
domain: [assembly, feature]
tags: [interface, api7, assembly, feature, ksfeaturecollection]
sources:
  - ksfeaturecollection.html
---

*API интерфейсов. Версия 5 > Документ-модель (Интерфейсы - ksDocument3D, IDocument3D )  > Компонент сборки (деталь или подсборка). Интерфейсы ksPart и IPart  > Объект Дерева построения (Интерфейсы ksFeature, IFeature) *


## Массив объектов Дерева построения (Интерфейсы ksFeatureCollection, IFeatureCollection)

Интерфейс массива объектов Дерева построения.
| ksFeatureCollection | - интерфейс Automation |
| --- | --- |
| IFeatureCollection | - интерфейс COM |
Примечание:
Данный интерфейс может быть получен с использованием методов интерфейсов:
•ksFeature::SubFeatureCollection
•ksMacro3DDefinition::FeatureCollection
•ksDocument3D::FeatureCollection


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

Синтаксис Automation:
```
BOOL Add (ksFeature* obj);
```
Синтаксис COM:
```
BOOL Add (LPFEATURE obj);
Входные параметры:
obj    - указатель на интерфейс компонента ksFeature или IFeature.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```


## AddAt - Добавить в массив объект с заданным индексом

Синтаксис Automation:
```
BOOL AddAt (ksFeature* obj, long index );
```
Синтаксис COM:
```
BOOL AddAt (LPFEATURE obj, long index );
Входные параметры:
obj    - указатель на интерфейс компонента ksFeature или IFeature,
index    - индекс нового элемента.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
Примечание.
При добавлении тела в макроэлемент в макроэлемент добавляются все операции данного тела на момент создания макроэлемента. Само тело в макроэлемент не добавляется.
```


## AddBefore - Добавить объект перед указанным объектом в массиве

Синтаксис Automation:
```
BOOL AddBefore (ksFeature* obj, ksFeature* base);
```
Синтаксис COM:
```
BOOL AddBefore (LPFEATURE obj, LPFEATURE base);
Входные параметры:
obj    - указатель на интерфейс компонента ksFeature или IFeature,
base    - указатель на элемент массива.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```


## AttributeCollection - Получить массив атрибутов

Синтаксис Automation:
```
ksAttribute3DCollection* AttributeCollection (long key1,
long key2,
long key3,
long key4,
double numb);
```
Синтаксис COM:
```
LPATTRIBUTE3DCOLLECTION AttributeCollection (long key1,
long key2,
long key3,
long key4,
double numb);
Входные параметры:
key1, key2, key3, key4    - ключи для поиска по ключам либо 0,
numb    - номер типа атрибута для поиска по номеру либо 0.
Возвращаемое значение:
Указатель на массив атрибутов ksAttribute3DCollection
```
Примечание:
Атрибут - это дополнительная неграфическая информация, связанная с объектом или несколькими объектами чертежа. Такая информация может быть представлена в виде числа, строки текста, а также таблицы с фиксированным или переменным числом строк.
Значения атрибутов могут использоваться для поиска объектов, а также обрабатываться различными приложениями, например, системой проектирования спецификаций, различными расчетными программами и т.п.
Типы (описания структуры) атрибутов могут храниться как непосредственно в документе, так и в специальных файлах - библиотеках типов атрибутов. Эти файлы имеют расширение lat.
Структура параметров табличного атрибута.


## Clear - Очистить динамический массив объектов

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


## DetachByBody - Удалить указанный объект из массива

Синтаксис Automation:
```
BOOL DetachByBody (LPDISPATCH obj);
```
Синтаксис COM:
```
BOOL DetachByBody (LPFEATURE obj);
Входные параметры:
obj    - указатель на интерфейс удаляемого объекта ksFeature или IFeature.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```
Примечание:
Указатель на интерфейс удаляемого объекта obj не должен быть 0.


## DetachByIndex - Удалить объект из массива по индексу

Синтаксис Automation:
```
BOOL DetachByIndex (long index);
```
Синтаксис COM:
```
BOOL DetachByIndex (long index);
Входные параметры:
index    - индекс элемента.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```


## FindIt - Получить индекс элемента в массиве

Синтаксис Automation:
```
long FindIt (LPDISPATCH entity);
Возвращаемое значение:
индекс элемента    - если элемент найден в массиве,
-1    - если элемент не найден.
```
Синтаксис COM:
```
unsigned long FindIt(LPFEATURE entity);
Возвращаемое значение:
индекс элемента    - если элемент найден в массиве,
SYS_MAX_UINT    - если элемент не найден.
Входные параметры:
entity    - указатель на интерфейс компонента ksFeature или IFeature.
```


## First - Получить указатель на интерфейс первого объекта в массиве

Синтаксис Automation:
```
LPDISPATCH First();
```
Синтаксис COM:
```
LPFEATURE First();
Возвращаемое значение:
- указатель на интерфейс ksFeature или IFeature.
```


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

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


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

Синтаксис Automation:
```
LPDISPATCH GetByName (BSTR name,
BOOL testFullName,
BOOL testIgnoreCase);
```
Синтаксис COM:
```
LPFEATURE GetByName (LPOLESTR name,
BOOL testFullName,
BOOL testIgnoreCase);
Входные параметры:
name    - имя объекта,
testFullName    - признак полного имени: TRUE - name - полное имя, FALSE - имя name может быть частью полного имени,
testIgnoreCase    - признак игнорирования регистра символов: TRUE - игнорировать регистр, FALSE - учитывать регистр.
Возвращаемое значение:
- указатель на интерфейс ksFeature или IFeature.
```


## GetCount - Получить количество элементов в массиве

Синтаксис Automation:
```
long GetCount();
```
Синтаксис COM:
```
long GetCount();
Возвращаемое значение:
- количество элементов массива.
```


## Last - Получить указатель на интерфейс последнего объекта в массиве

Синтаксис Automation:
```
LPDISPATCH Last();
```
Синтаксис COM:
```
LPFEATURE Last();
Возвращаемое значение:
- указатель на интерфейс ksFeature или IFeature.
```


## Next - Получить указатель на интерфейс следующего объекта в массиве

Синтаксис Automation:
```
LPDISPATCH Next();
```
Синтаксис COM:
```
LPFEATURE Next();
Возвращаемое значение:
- указатель на интерфейс ksFeature или IFeature.
```


## Prev - Получить указатель на интерфейс предыдущего объекта в массиве

Синтаксис Automation:
```
LPDISPATCH Prev();
```
Синтаксис COM:
```
LPFEATURE Prev();
Возвращаемое значение:
- указатель на интерфейс ksFeature или IFeature.
```


## Refresh - Обновить массив

Синтаксис Automation:
```
BOOL Refresh();
```
Синтаксис COM:
```
BOOL Refresh();
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```
Примечание:
После вызова данной функции возникает полное соответствие массива с массивом объектов дерева и удаляются все предыдущие изменения в массиве.


## SetByIndex - Заменить объект с указанным индексом в массиве на присланный объект

Синтаксис Automation:
```
BOOL SetByIndex (ksFeature* obj, long index);
```
Синтаксис COM:
```
BOOL SetByIndex (LPFEATURE obj, long index);
Входные параметры:
obj    - указатель на интерфейс компонента ksFeature или IFeature,
index    - индекс элемента в массиве.
Возвращаемое значение:
TRUE    - в случае успеха,
FALSE    - в случае неудачи.
```
