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