--- 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 - в случае неудачи. ```