e1337e4016
docs/Kompas3D_SDK/ становится каноническим источником справки КОМПАС SDK и включается в репозиторий (2491 файл, ~14 МБ). HTML-зеркало docs/KOMPAS_SDK_ru-RU/ (~1.4 ГБ, © АСКОН) и генератор tools/build_kompas3d_sdk.py больше не нужны — регенерация не предполагается. - .gitignore: MD-база разблокирована; зеркало остаётся проигнорированным (safety-net на случай повторной локальной выгрузки). - CLAUDE.md / SKILL.md: убраны упоминания регенерации и зеркала. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
216 lines
12 KiB
Markdown
216 lines
12 KiB
Markdown
---
|
|
title: "Интерфейс ILibPropertyObject"
|
|
type: interface
|
|
api: [api7]
|
|
tags: [interface, api7, ilibpropertyobject]
|
|
sources:
|
|
- ilibpropertyobject.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с графическим документом > Создание графических объектов > Работа с макроэлементами и библиотечными макроэлементами > Внешние воздействия на библиотечный элемент *
|
|
|
|
|
|
## Интерфейс ILibPropertyObject
|
|
|
|
Интерфейс объекта со свойствами отображаемыми в окне свойств.
|
|
Описание:
|
|
Интерфейс должен быть реализован на стороне библиотеки разработчиком приложения, если необходимо обеспечить управление характерными точками библиотечного элемента 2D.
|
|
Режим поддержки интерфейса управления характерными точками включается в функции ksSetMacroParam.
|
|
Вызывается КОМПАС при селектировании библиотечного элемента 2d через функцию LibObjInterfaceEntry.
|
|
Интерфейс является обработчиком событий, генерирующихся КОМПАС при селектировании библиотечного элемента.
|
|
Интерфейс позволяет выполнить следующие действия:
|
|
– Добавить дополнительные свойства в окно свойств для библиотечных элементов.
|
|
– Выполнить изменение свойств через окно свойств.
|
|
– Выполнить копирование свойств в процессе копирования свойств между библиотечными элементами.
|
|
– Выполнить поиск и селектирование объектов по свойствам.
|
|
Интерфейс реализован по аналогии с интерфейсом хот-точек.
|
|
Передача интерфейса в КОМПАС осуществляется посредством предопределенной функции LibObjInterfaceEntry.
|
|
Передача интерфейса КОМПАС может быть осуществлена из библиотеки, установленной флагом MP_PROPERTY_OBJECT в функции ksSetMacroParam, или установившей свойство IMacroObject::PropertyObjectEditable.
|
|
Группировка и сортировка свойств осуществляется по идентификатору. Свойства могут быть заданы в любой последовательности. Они будут отсортированы по возрастанию идентификатора. Принадлежность к группе определяется также по идентификатору.
|
|
Свойство добавится в группу с ближайшим меньшим идентификатором.
|
|
Применение интерфейса приведено в следующих примерах:
|
|
Gayka1 (Демонстрационные примеры SDK КОМПАС-3D);
|
|
Пример описания ресурсов...
|
|
|
|
|
|
## ApplyProperty - Установить новое значение для свойства
|
|
|
|
Синтаксис COM:
|
|
```
|
|
int ApplyProperty( PropertyParam * param );
|
|
Входные и выходные параметры:
|
|
param - cтруктура параметров свойства PropertyParam,
|
|
Возвращаемое значение:
|
|
1 - новое значение свойства установлено,
|
|
0 - новое значение не установлено.
|
|
```
|
|
Примечание:
|
|
Идентификация свойства осуществляется по параметру propertyId в PropertyParam.
|
|
|
|
|
|
## EndEditProperty - Завершение редактирования свойств объекта
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL EndEditProperty( );
|
|
Возвращаемое значение:
|
|
Не используется.
|
|
```
|
|
Примечание:
|
|
Предназначено для освобождения каких либо данных, созданных на время редактирования свойств.
|
|
|
|
|
|
## GetGroupName - Имя группы объектов
|
|
|
|
Синтаксис COM:
|
|
```
|
|
LPOLESTR GetGroupName();
|
|
Возвращаемое значение:
|
|
- имя группы объектов, отображаемой в списке типов выделенных объектов окна свойств.
|
|
```
|
|
Примечание:
|
|
Группы объектов также отображаются в окне поиска объектов по свойствам.
|
|
|
|
|
|
## GetMouseEnterLeavePoint - Запрос параметров точек для визуального определения места применения параметра
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL GetMouseEnterLeavePoint( int propertyId, long pointIndex, LPUNKNOWN parameters );
|
|
Входные параметры:
|
|
propertyId - идентификатор свойства,
|
|
pointIndex - индекс точки,
|
|
parameters - интерфейс параметров отображения точки IMouseEnterLeaveParameters.
|
|
```
|
|
Примечание:
|
|
Функция вызывается при наведении на редактор свойства, если установлен признак PropertyParam needMouseEnterLeaveMessage.
|
|
Функция позволяет подсветить в чертеже одну или несколько точек применения контрола.
|
|
Функция вызывается в цикле с увеличением индекса точки pointIndex пока библиотека не вернет FALSE, как признак завершения получения параметров точек.
|
|
|
|
|
|
## GetProperty - Добавить свойство в список свойств
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL GetProperty( int index, PropertyParam * param );
|
|
Входной параметр:
|
|
index - индекс свойства,
|
|
Выходной параметр:
|
|
param - структура параметров свойства PropertyParam,
|
|
Возвращаемое значение:
|
|
TRUE - если требуется добавить свойство с заданным индексом,
|
|
FALSE - формирование списка свойств закончено.
|
|
```
|
|
Примечание:
|
|
1. Метод позволяет сформировать список внешних свойств объекта.
|
|
2. Метод вызывается при первом селектировании объекта.
|
|
3. Для получения текущих значений свойства используется метод ILibPropertyObject::UpdateProperty.
|
|
4. В отличие от работы с окном свойств, для организации полноценной работы поиска по свойствам библиотечных макроэлементов необходимо:
|
|
– Задать для вещественных и целых значений минимальное и максимальное значение свойства (для создания правильного валидатора).
|
|
– Заполнить список всеми возможными значениями свойства без учета зависимостей от других свойств (т.к. в диалоге поиска это список всегда должен показываться полностью). Это требуется для полноценной работы динамически задаваемых списочных свойств (PropertyParam::additionData).
|
|
|
|
|
|
## OnChoiceProperty - Событие запуска внешнего редактирования для пользовательского свойства
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL OnChoiceProperty( PropertyParam * param );
|
|
Входные и выходные параметры:
|
|
param - cтруктура параметров свойства PropertyParam,
|
|
Возвращаемое значение:
|
|
TRUE - значение изменилось,
|
|
FALSE - значение не изменилось.
|
|
```
|
|
Примечание:
|
|
1. Идентификация свойства осуществляется по параметру propertyId в PropertyParam.
|
|
2. Событие вызывается для свойств с типом ksOPControlExternalEdit и ksOPControlExternalStringEdit из перечисления ksObjectPropertyControlTypeEnum.
|
|
|
|
|
|
## Пример описания ресурсов
|
|
|
|
#define END_OF_STRING_RESOURCE_TABLE 0
|
|
#define END_OF_RESOURCE_TABLE 0xffff
|
|
#define ID_PROP_ELEMENT_PARAM 20000 // Группа параметры элемента
|
|
#define PROP_DOUBLE_LIST 20001 // Cписок вещественных значений
|
|
#define PROP_INT_LIST 20002 // Cписок целых значений
|
|
#define PROP_STRING_LIST 20003 // Cписок строк
|
|
#define ID_PROP_VIEW 20004 // Вид
|
|
STRINGTABLE DISCARDABLE
|
|
BEGIN
|
|
ID_PROP_ELEMENT_PARAM "Параметры элемента"
|
|
PROP_DOUBLE_LIST "Cписок вещественных значений"
|
|
PROP_INT_LIST "Cписок целых значений"
|
|
PROP_STRING_LIST "Cписок строк"
|
|
END
|
|
Для фиксированного списка вещественных значений:
|
|
PROP_DOUBLE_LIST RCDATA
|
|
{
|
|
L"1.0\0"
|
|
L"2.0\0"
|
|
L"3.0\0"
|
|
L"4.0\0"
|
|
L"5.0\0"
|
|
END_OF_STRING_RESOURCE_TABLE
|
|
}
|
|
Для фиксированного списка целых значений:
|
|
PROP_INT_LIST RCDATA
|
|
{
|
|
L"1\0"
|
|
L"2\0"
|
|
L"3\0"
|
|
L"4\0"
|
|
L"5\0"
|
|
END_OF_STRING_RESOURCE_TABLE
|
|
}
|
|
Для фиксированного списка строк:
|
|
PROP_STRING_LIST RCDATA
|
|
{
|
|
L"Первая строка\0"
|
|
L"Вторая строка\0"
|
|
L"Третья строка\0"
|
|
END_OF_STRING_RESOURCE_TABLE
|
|
}
|
|
Пример описания ресурсов для списка битмапов ksOPControlListBmp:
|
|
#define IDB_ID_VIEW 1101 // ID_VIEW - Вид
|
|
#define IDB_ID_VIDSEC 1102 // ID_VIDSEC - Вид разрез
|
|
#define IDB_ID_TOPVID 1103 // ID_TOP - Вид сверху
|
|
#define IDB_ID_SIDEVID 1111 // ID_SIDE - Вид сбоку
|
|
IDB_ID_VIEW ICON DISCARDABLE "res\\G_VIEW.ico"
|
|
IDB_ID_TOPVID ICON DISCARDABLE "res\\G_TOP.ico"
|
|
IDB_ID_SIDEVID ICON DISCARDABLE "res\\G_LEFT.ico"
|
|
IDB_ID_VIDSEC ICON DISCARDABLE "res\\G_SEC.ico"
|
|
STRINGTABLE DISCARDABLE
|
|
BEGIN
|
|
ID_PROP_VIEW "Вид"
|
|
IDB_ID_VIEW "Вид"
|
|
IDB_ID_TOPVID "Вид сверху"
|
|
IDB_ID_SIDEVID "Вид сбоку"
|
|
IDB_ID_VIDSEC "Вид\\разрез"
|
|
END
|
|
// Список значений
|
|
ID_PROP_VIEW RCDATA
|
|
{
|
|
IDB_ID_VIEW
|
|
IDB_ID_TOPVID
|
|
IDB_ID_SIDEVID
|
|
IDB_ID_VIDSEC
|
|
END_OF_RESOURCE_TABLE
|
|
}
|
|
|
|
|
|
## UpdateProperty - Обновить параметры свойства
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL UpdateProperty( PropertyParam * param );
|
|
Входные и выходные параметры:
|
|
param - cтруктура параметров свойства PropertyParam,
|
|
Возвращаемое значение:
|
|
TRUE - если параметры свойства обновились,
|
|
FALSE - если параметры свойства не изменились.
|
|
```
|
|
Примечание:
|
|
1. Идентификация свойства осуществляется по параметру propertyId в PropertyParam.
|
|
2. При выделении нескольких макроэлементов отображаемый в окне "Свойства" список значений будет сформирован с учетом значения флага PropertyParam:
|
|
summList - // TRUE - объединять списки, FALSE - пересекать списки.
|