---
title: "Объект Дерева построения (Интерфейсы ksFeature, IFeature)"
type: interface
api: [api7]
domain: [3d, assembly, feature]
tags: [interface, api7, 3d, assembly, feature, ksfeature]
sources:
  - ksfeature.html
---

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


## Объект Дерева построения (Интерфейсы ksFeature, IFeature)

Интерфейс объекта Дерева построения.
| ksFeature | - интерфейс Automation |
| --- | --- |
| IFeature | - интерфейс COM |
Примечание:
Данный интерфейс может быть получен с использованием методов следующих интерфейсов:
•Интерфейса объекта Дерева построения ksFeatureCollection,
•Интерфейса детали или подсборки в составе сборки ksPart.
Массив объектов Дерева построения (Интерфейсы ksFeatureCollection, IFeatureCollection)
Массив переменных (Интерфейсы ksVariableCollection, IVariableCollection)
Интерфейс массива атрибутов объектов модели (Интерфейсы ksAttribute3DCollection, IAttribute3DCollection)
Измерение расстояния и угла между двумя примитивами (Интерфейсы ksMeasurer, IMeasurer)
Расчет координат точек при S-образном соединении прямолинейных ребер (Интерфейс ISTrackingPointsMeasurer)
Визуальные свойства материала (Интерфейсы ksColorParam, IColorParam)
Интерфейс результатов редактирования объекта (Интерфейсы ksObject3DNotifyResult, IObject3DNotifyResult)


## 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.


## AttributeCollectionEx - Получить массив атрибутов из источника вставки

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


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

Синтаксис Automation:
```
LPBODYCOLLECTION BodyCollection();
```
Синтаксис COM:
```
LPBODYCOLLECTION BodyCollection();
Возвращаемое значение:
- указатель на интерфейс массива тел ksBodyCollection или IBodyCollection.
```


## EntityCollection - Получить массив объектов (грани, ребра, вершины)

Синтаксис Automation:
```
ksEntityCollection * EntityCollection (short objType);
```
Синтаксис COM:
```
LPENTITYCOLLECTION EntityCollection (short objType);
Входные параметры:
objType    - тип объектов (грани, ребра, вершины).
Возвращаемое значение:
указатель на интерфейс ksEntityCollection или IEntityCollection    - в случае успеха,
NULL    - в случае неудачи.
```


## excluded - Признак включения или выключения из расчета

Тип данных: BOOL
Синтаксис Automation:
```
excluded = iFeature.excluded    Получить свойство (* )
iFeature.excluded = excluded    Установить свойство (* )
excluded = iFeature.GetExcluded()    Получить свойство (**)
iFeature.SetExcluded(excluded)    Установить свойство (**)
```


## GetObject - Получить объект модели, связанный с объектом дерева

Синтаксис Automation:
```
LPDISPATCH GetObject();
```
Синтаксис COM:
```
LPUNKNOWN GetObject();
Возвращаемое значение:
- указатель на интерфейс объекта.
```
Примечание:
Тип возвращаемого объекта выбирается из Obj3dType. Может принимать значение:
| o3d_part | - деталь, | |
| --- | --- | --- |
| o3d_entity | - объект, | |
| o3d_mateConstraint | - сопряжение, | |
| o3d_body | -тело | IBody или kIsBody |


## GetOwnerFeature - Получить указатель на интерфейс объекта, в состав которого входит данный объект

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


## IsModified - Определить, модифицирована ли модель с момента последнего перестроения

Синтаксис Automation:
```
BOOL IsModified (BOOL recursive);
```
Синтаксис COM:
```
BOOL IsModified (BOOL recursive);
Входной параметр:
recursive    TRUE    Определять по вложенным объектам.
Возвращаемое значение:
TRUE    - модель изменена с момента последнего перестроения,
FALSE    - модель не изменена.
```


## IsRollBacked - Лежит ли объект ниже конца построения модели

Синтаксис Automation:
```
BOOL IsRollBacked();
```
Синтаксис COM:
```
BOOL IsRollBacked();
Возвращаемое значение:
TRUE    - объект лежит ниже конца построения модели,
FALSE    - объект лежит выше конца построения модели.
```


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

Синтаксис Automation:
```
BOOL IsValid();
```
Синтаксис COM:
```
BOOL IsValid();
Возвращаемое значение:
TRUE    - объект доступен,
FALSE    - объект недоступен.
```
Примечание:
Метод позволяет получить информацию о том, что элемент дерева построения доступен для редактирования. Элемент дерева построения может стать недоступным, например, если он исключен из расчета или указатель окончания построения перемещен в дереве выше этого элемента.


## name - Имя объекта

Тип данных: BSTR
Синтаксис Automation:
```
name = iFeature.name    Получить свойство (* )
name = iFeature.GetName()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## objectError - Признак ошибки объекта

Тип данных: long.
Синтаксис Automation:
```
objectError = object.objectError    Получить свойство (* )
objectError = object.GetObjectError()    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


## SubFeatureCollection - Получить массив объектов, входящих в данный объект

Синтаксис Automation:
```
LPDISPATCH SubFeatureCollection (BOOL through, BOOL libObject);
```
Синтаксис COM:
```
LPFEATURECOLLECTION SubFeatureCollection (BOOL through, BOOL libObject);
Входные параметры:
Through    TRUE    - выдавать все объекты, включая скрытые,
libObject    TRUE    - выдавать состав библиотечных элементов.
Возвращаемое значение:
- указатель на интерфейс ksFeatureCollection или IFeatureCollection.
```


## type - Тип объекта модели

Тип данных: short
Синтаксис Automation:
```
type = iFeature.type    Получить свойство (* )
type = iFeature.GetType()    Получить свойство (**)
```
Примечание:
1. Свойство доступно только для чтения.
2. Тип возвращаемого объекта может принимать значения:
| o3d_part | - деталь, | |
| --- | --- | --- |
| o3d_entity | - объект, | |
| o3d_mateConstraint | - сопряжение, | |
| o3d_body | -тело. | IBody или ksBody. |
Выбирается из Obj3dType.


## updateStamp - Значение, определяющее время изменения геометрии

Тип данных: long
Синтаксис Automation:
```
updateStamp = iFeature.updateStamp    Получить свойство (* )
updateStamp = iFeature.GetUpdateStamp(    Получить свойство (**)
```
Примечание:
Свойство доступно только для чтения.


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

Синтаксис Automation:
```
LPDISPATCH VariableCollection();
```
Синтаксис COM:
```
LPVARIABLECOLLECTION VariableCollection();
Возвращаемое значение:
- указатель на интерфейс ksVariableCollection или IVariableCollection.
```
Примечание:
Изменения в полученном массиве не отображаются в модели немедленно. Чтобы изменения вступили в силу, необходимо вызвать метод ksPart::RebuildModel.


## VariableCollectionEx - Получить массив переменных из источника

Синтаксис Automation:
```
LPDISPATCH VariableCollectionEx( BOOL sourсe );
```
Синтаксис COM:
```
LPVARIABLECOLLECTION VariableCollectionEx( BOOL sourсe );
Входные параметры:
Sourсe    - признак получения списка переменных и значений из источника.
Возвращаемое значение:
- указатель на интерфейс коллекции переменных ksVariableCollection или IvariableCollection.
```
Примечание:
Метод позволяет получать и изменять переменные в исходном документе детали без открытия документа в отдельном окне или вслепую.
