---
title: "ksCreateAttr3DEx - Cоздать атрибут по номеру типа атрибута из библиотеки libname"
type: guide
api: [api7]
domain: [3d]
tags: [guide, api7, 3d, kscreateattr3dex]
sources:
  - kscreateattr3dex.html
---

*API экспортных функций > Функции работы с прикладной библиотекой  > Функции работы с атрибутами *

Аналог данной функции при использовании Automation - метод ksAttributeObject::ksCreateAttr3DEx.
Синтаксис Automation:
```
ksAttribute3D * ksCreateAttr3DEx (LPDISPATCH pObj,
LPDISPATCH pSourcePart,
LPDISPATCH attr,
double attrID,
BSTR libname);
Входные параметры:
pObj    - указатель на объект для которого создается атрибут,
sourcePart    - указатель на интерфейс вставки детали IPart,
attr    - указатель на структуру параметров атрибута ksAttribute,
attrID    - уникальный номер типа атрибута,
libName    - имя библиотеки типов атрибутов, если libname = NULL, то тип атрибута берется в документе.
Возвращаемое значение:
Указатель на атрибут IAttribute3D    - в случае удачного завершения,
0    - в случае неудачи.
```
Примечание:
1. Если libname = NULL - тип атрибута берется в документе.
2. pObj - может быть равен:
– NULL или указателю на интерфейс 3d документа IDocument3D - создается атрибут у документа;
– указателю на интерфейс коллекции объектов дерева IFeatureCollection - атрибут групповой;
– указателю на интерфейс объекта дерева IFeature - атрибут у определенного объекта.
3. Атрибут можно добавить ко всем объектам дерева построений, кроме верхнего компонента, сопряжений, группы сопряжений.
4. sourcePart - может быть:
– NULL - атрибут будет создан в текущем документе,
– указатель на интерфейс детали или подсборки вставленной в сборку IPart - атрибут будет создан в документе-источнике,
– если sourcePart == pObj создается атрибут документа в источнике.
5. При использовании Unicode следует использовать функцию ksCreateAttr3DExW.
