---
title: "Параметры, определяемые пользователем(Интерфейс ksUserParam)"
type: interface
api: [api7]
domain: [2d]
tags: [interface, api7, 2d, ksuserparam]
sources:
  - ksuserparam.html
---

*API интерфейсов. Версия 5 > Графический документ (Интерфейсы - ksDocument2D и IDocument2D) *


## Параметры, определяемые пользователем(Интерфейс ksUserParam)

Интерфейс пользовательских параметров.
Примечания:
Указатель на интерфейс можно получить при помощи метода KompasObject::GetParamStruct.
Интерфейс используется для передачи массива пользовательских данных:
1. Установить/получить массив значений ячеек таблицы атрибутов.
Смотрите: ksAttributeParam::SetValues, ksAttributeParam::GetValues.
2. Установить/получить значение ячейки в таблице атрибута.
Смотрите: ksAttributeObject::ksSetAttrValue, ksAttributeObject::ksSetAttrValue.
3. Установить/получить данные строки в таблице атрибута.
Смотрите: ksAttributeObject::ksGetAttrRow, ksAttributeObject::ksSetAttrRow.
4. Добавить строку к табличному атрибуту.
Смотрите: ksAttributeObject::ksAddAttrRow.
5. Установить/получить пользовательские параметры макроэлемента.
Смотрите: ksDocument2D::ksSetMacroParam, ksDocument2D::ksGetMacroParam.
6. Получить запись из базы данных.
Смотрите: ksDataBaseObject::ksReadRecord.
7. Изменить значение компоненты в колонке.
Смотрите: ksSpecification::ksSpcChangeValue.
8. Установить/получить пользовательские параметры компоненты (модели подсборки).
9. Установить/получить пользовательские параметры макроэлемента 3D.
Смотрите: ksMacro3DDefinition::SetUserParam, ksMacro3DDefinition::GetUserParam.
10. Для поддержки Unicode в интерфейс ksLtVariant добавлено свойство ksLtVariant::wstrVal. В динамический массив для строковых данных требуется добавлять однотипные типы строковых параметров. Они должны быть или все типа ltv_WStr или все типа ltv_Str. Это критично при работе с атрибутами.
При получении пользовательских параметров требуется использовать тот же тип, что и при записи параметров. При работе с базой данных при создании отношения с помощью функции ksDataBaseObject::ksRChar требуется в массив добавить ksLtVariant с типом ltv_Str. При использовании функции ksDataBaseObject::ksRCharW требуется добавить ksLtVariant с типом ltv_WStr.
11. Одновременное использование методов ksUserParam::userParams и ksUserParam::GetUserArray и ksUserParam::SetUserArray не допускается.
Смотрите также: KompasObject


## fileName - Имя файла библиотеки, в которой находится функция редактирования макроэлемента

Пример...
Интерфейс…
Тип данных: строка
Синтаксис Automation:
```
fileName = iUserParam.fileName    Получить свойство (* )
iUserParam.fileName = fileName    Установить свойство (* )
fileName = iUserParam.GetFileName()    Получить свойство (**)
iUserParam.SetFileName( fileName )    Установить свойство (**)
```
Примечание:
Свойство используется для сохранения/получения пользовательских параметров макроэлемента.
Смотрите также:
ksDocument2D::ksSetMacroParam
ksDocument2D::ksGetMacroParam


## ksUserParam::fileName - пример использования

Получить имя файла пользовательской библиотеки, при помощи которой можно
редактировать компонент.
//получить интерфейс ksUserParam у KompasObject
ksUserParam userParam(kompasObject.GetParamStruct(ko_UserParam));
userParam.Init();
//заполнить параметры интерфейса
ksPart.GetUserParam(userParam);
//Получить имя файла пользовательской библиотеки
BSTR userLibraryFileName = userParam.fileName;


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

Интерфейс…
Синтаксис Automation:
```
LPDISPATCH GetUserArray();
Возвращаемое значение:
- указатель на интерфейс динамического массива ksDynamicArray типа LTVARIANT_ARR.
Примечание.
Для поддержки Unicode в интерфейс ksLtVariant добавлено свойство ksLtVariant::wstrVal. В динамический массив для строковых данных требуется добавлять однотипные типы строковых параметров. Они должны быть или все типа ltv_WStr, или все типа ltv_Str. Это критично при работе с атрибутами.
При получении пользовательских параметров требуется использовать тот же тип, что и при записи параметров. При работе с базой данных при создании отношения с помощью функции ksDataBaseObject::ksRChar требуется в массив добавить ksLtVariant с типом ltv_Str. При использовании функции ksDataBaseObject::ksRCharW требуется добавить ksLtVariant с типом ltv_WStr.
Смотрите также: ksLtVariant
```


## Init - Инициализировать параметры

Интерфейс…
Синтаксис Automation:
```
BOOL Init();
Возвращаемое значение:
TRUE    - в случае удачного завершения.
```
Примечания:
1. Метод обнуляет все пользовательские параметры.
2. Динамический массив не создается.


## libName - Имя библиотеки, в которой находится функция редактирования макроэлемента

Пример...
Интерфейс…
Тип данных: строка
Синтаксис Automation:
```
libName = iUserParam.libName    Получить свойство (* )
iUserParam.libName = libName    Установить свойство (* )
libName = iUserParam.GetLibName()    Получить свойство (**)
iUserParam.SetLibName( libName )    Установить свойство (**)
```
Примечание:
Свойство используется для сохранения/получения пользовательских параметров макроэлемента.
Смотрите также:
ksDocument2D::ksSetMacroParam
ksDocument2D::ksGetMacroParam


## GetUserLibraryCommand - Получить номер команды пользовательской библиотеки, при помощи которой можно редактировать компонент

Аналог данного метода при использовании Automation - ksUserParam::number.
Пример...
Синтаксис COM:
```
long GetUserLibraryCommand();
Возвращаемое значение:
Номер библиотечной команды    - в случае успешного завершения,
-1    - если библиотеки нет.
```


## number - Номер функции редактирования

Пример...
Интерфейс…
Тип данных: long
Синтаксис Automation:
```
number = iUserParam.number    Получить свойство (* )
iUserParam.number = number    Установить свойство (* )
number = iUserParam.GetNumber()    Получить свойство (**)
iUserParam.SetNumber( number )    Установить свойство (**)
```
Примечание:
Свойство используется для сохранения/получения пользовательских параметров макроэлемента.
Смотрите также:
ksDocument2D::ksSetMacroParam
ksDocument2D::ksGetMacroParam


## ksUserParam::number - пример использования

Получить номер команды пользовательской библиотеки, при помощи которой
можно редактировать компонент.
//получить интерфейс ksUserParam у KompasObject
ksUserParam userParam( kompasObject.GetParamStruct(ko_UserParam) );
userParam.Init();
//заполнить параметры интерфейса
ksPart.GetUserParam( userParam );
//Получить номер команды
long number = userParam.number;


## SetUserArray - Установить динамический массив ksDynamicArray типа LTVARIANT_ARR

Интерфейс…
Синтаксис Automation:
```
BOOL SetUserArray (LPDISPATCH Array);
Входной параметр:
Array    - указатель на интерфейс динамического массива ksDynamicArray типа LTVARIANT_ARR.
Возвращаемое значение:
TRUE    - в случае удачного завершения.
Примечание.
Для поддержки Unicode в интерфейс ksLtVariant добавлено свойство ksLtVariant::wstrVal. В динамический массив для строковых данных требуется добавлять однотипные типы строковых параметров. Они должны быть или все типа ltv_WStr, или все типа ltv_Str. Это критично при работе с атрибутами.
При получении пользовательских параметров требуется использовать тот же тип, что и при записи параметров. При работе с базой данных при создании отношения с помощью функции ksDataBaseObject::ksRChar требуется в массив добавить ksLtVariant с типом ltv_Str. При использовании функции ksDataBaseObject::ksRCharW требуется добавить ksLtVariant с типом ltv_WStr.
Смотрите также: ksLtVariant
```


## userParams - Безопасный массив SAFEARRAY байтов пользовательских параметров объекта

Интерфейс…
Тип данных: VARIANT
Синтаксис Automation:
```
userParams = iUserParam.UserParams    Получить свойство (* )
iUserParam.UserParams = userParams    Установить свойство (* )
userParams = iUserParam.GetUserParams()    Получить свойство (**)
iUserParam.SetUserParams    Установить свойство (**)
Значение свойства:
Принимает\возвращает безопасный массив SAFEARRAY типа VT_ARRAY    VT_UI1.
```
Примечание:
Свойство используется для сохранения/получения пользовательских параметров макроэлемента в виде безопасного массива SAFEARRAY байтов.
Смотрите также
ksUserParam::GetUserArray
ksUserParam::SetUserArray
