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>
214 lines
16 KiB
Markdown
214 lines
16 KiB
Markdown
---
|
|
title: "Интерфейс ILibHPObject"
|
|
type: interface
|
|
api: [api7]
|
|
tags: [interface, api7, ilibhpobject]
|
|
sources:
|
|
- ilibhpobject.html
|
|
---
|
|
|
|
*API экспортных функций > Функции работы с графическим документом > Создание графических объектов > Работа с макроэлементами и библиотечными макроэлементами > Работа с характерными точками *
|
|
|
|
|
|
## Интерфейс ILibHPObject
|
|
|
|
Интерфейс управления характерными точками библиотечного объекта 2D.
|
|
Иерархия:
|
|
IUnknown
|
|
ILibHPObject
|
|
ILibHPObject1
|
|
Описание.
|
|
Посредством вызова метода IUnknown::QueryInterface (const GUID far& IID, void** pif) у данного интерфейса можно получить дополнительный интерфейс ILibHPObject1 - интерфейс для работы с характерными точками.
|
|
Интерфейс должен быть реализован на стороне библиотеки разработчиком приложения, если необходимо обеспечить управление характерными точками библиотечного элемента 2D.
|
|
Режим поддержки интерфейса управления характерными точками включается в функции ksSetMacroParam.
|
|
Вызывается КОМПАС при селектировании библиотечного элемента 2d через функцию LibObjInterfaceEntry.
|
|
Является обработчиком событий, генерирующихся КОМПАС при селектировании библиотечного элемента.
|
|
Интерфейс позволяет выполнить следующие действия.
|
|
– Сформировать отображение характерных точек, задав координаты характерных точек.
|
|
– Задать тексты характерных точек.
|
|
– Задав идентификаторы курсора, изменить отображение курсора и его текст при попадании указателя мыши в габарит точки.
|
|
– Получить выпадающее меню, ассоциированное с данным библиотечным элементом.
|
|
– Отработать события начала смещения, смещения и конца смещения характерных точек.
|
|
– Выполнить команду библиотечного меню.
|
|
Интерфейс реализован еще до реализации механизма событий в КОМПАС API.
|
|
Отличие состоит в том, что передача интерфейса КОМПАС осуществляется не через подписку а посредством предопределенной функции LibObjInterfaceEntry. Передача интерфейса КОМПАС может быть осуществлена из библиотеки, установленной в функции ksSetMacroParam.
|
|
|
|
|
|
## LibHotPnt_Complete - Завершить редактирование методом перетаскивания характерных точек
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_Complete(int index, BOOL success);
|
|
Входные параметры:
|
|
index - номер характерной точки,
|
|
success - признак завершения сдвига характерной точки: TRUE - нормальное завершение, FALSE - во время сдвига нажата <Esc>.
|
|
Возвращаемое значение:
|
|
TRUE - в случае удачного завершения.
|
|
```
|
|
Описание:
|
|
Этот метод позволяет отработать событие окончания перетаскивания характерной точки c нажатой левой кнопкой мыши.
|
|
Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием.
|
|
|
|
|
|
## LibHotPnt_ExecuteCommand - Выполнить команду из меню, присланного по LibHotPnt_GetMenu()
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_ExecuteCommand(int id);
|
|
Входной параметр:
|
|
id - идентификатор команды контекстного меню.
|
|
Возвращаемое значение:
|
|
TRUE - что-то изменилось и требуется передача в UNDO и пересчет положения характерных точек,
|
|
FALSE - команда не обработана.
|
|
```
|
|
Описание:
|
|
Этот метод позволяет отработать событие выбора команды контекстного меню, полученного методами ILibHPObject::LibHotPnt_GetMenu и ILibHPObject1::LibHotPnt_GetMenuEx, и выполнить команду с присланным идентификатором.
|
|
Выбор команды контекстного меню осуществляется нажатием левой кнопки мыши в габарите команды меню.
|
|
Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием.
|
|
См также метод LibHotPnt_GetMenu()
|
|
|
|
|
|
## LibHotPnt_Get - Установить текущее описание характерной точки
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_Get(HotPointDescription* point, int index);
|
|
Входной параметр:
|
|
index - номер характерной точки,
|
|
Выходной параметр:
|
|
point - структура параметров характерной точки HotPointDescription,
|
|
Возвращаемое значение:
|
|
TRUE - в случае удачного завершения.
|
|
```
|
|
Описание:
|
|
Метод позволяет задать отображение характерных точек, задав координаты характерных точек, тексты характерных точек, идентификаторы курсора, благодаря чему, можно изменить отображение курсора при попадании указателя мыши в габарит точки.
|
|
Примечания:
|
|
1. Метод вызывается в цикле для каждой точки (увеличивая номер точки), пока не вернет FALSE.
|
|
2. Значения координат характерной точки необходимо устанавливать в системе координат макроэлемента.
|
|
Координаты характерных точек определены в системе координат макроэлемента.
|
|
|
|
|
|
## LibHotPnt_GetCursorText - Задать текст для отображения рядом с курсором
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_GetCursorText(int index,
|
|
char** text);
|
|
Входной параметр:
|
|
index - номер характерной точки.
|
|
Выходной параметр:
|
|
text - текст для отображения рядом с курсором.
|
|
Возвращаемое значение:
|
|
TRUE - в случае успешного завершения,
|
|
FALSE - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. При движении мыши над характерной точкой, можно задать текст у курсора. Метод вызывается при попадании мыши в габарит hot point.
|
|
2. С присланной строки снимается копия, сама исходная строка не удаляется.
|
|
|
|
|
|
## LibHotPnt_GetMenu - Задать контекстное меню, ассоциированное с данным библиотечным элементом
|
|
|
|
Синтаксис:
|
|
```
|
|
int LibHotPnt_GetMenu();
|
|
Возвращаемое значение:
|
|
контекстное меню (HMENU).
|
|
```
|
|
Описание:
|
|
Метод вызовется при нажатии правой кнопки мыши на селектированном библиотечном элементе. Метод позволяет получить выпадающее меню, ассоциированное с данным библиотечным элементом. Присланное меню будет модифицировано в системе.
|
|
Идентификаторы команд должны быть уникальны на уровне приложения.
|
|
При модификации меню идентификаторы команд становятся уникальными на уровне КОМПАС. Меню будет добавлено в конец системного выпадающего меню для библиотечного элемента.
|
|
При выборе команды из меню будет вызван метод ILibHPObject::LibHotPnt_ExecuteCommand.
|
|
Присланное меню будет уничтожено вызовом функции DestroyMenu().
|
|
|
|
|
|
## LibHotPnt_GetMenuEx - Получить popup-меню, ассоциированное с данным библиотечным элементом и с данной hot-точкой, если index > -1
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL LibHotPnt_ViewData( HotPointDescription1 * point, int index );
|
|
Входной параметр:
|
|
index - номер характерной точки.
|
|
Выходной параметр:
|
|
point - указатель структуры параметров характерной точки HotPointDescription1.
|
|
Возвращаемое значение:
|
|
TRUE - в случае успешного завершения,
|
|
FALSE - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. При движении мыши над характерной точкой можно задать новое изображение (подсветку) точки и выдать текст у курсора.
|
|
2. Метод вызывается при попадании мыши в габарит hot point.
|
|
3. При помощи метода можно указать текст, который будет выдан рядом с курсором. Текст выдается для UNICODE вместо ILibHPObject::LibHotPnt_GetCursorText.
|
|
4. С присланной строки снимается копия, сама исходная строка не удаляется.
|
|
5. Идентификатор нового битмапа характерной точки. Если идентификатор битмапа 0, битмап не меняется.
|
|
|
|
|
|
## LibHotPnt_Prepare - Подготовиться к редактированию методом перетаскивания характерных точек
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_Prepare(int index);
|
|
Входной параметр:
|
|
index - номер характерной точки.
|
|
Возвращаемое значение:
|
|
TRUE - в случае удачного завершения.
|
|
```
|
|
Описание:
|
|
Этот метод позволяет отработать событие начала перетаскивания характерной точки c нажатой левой кнопкой мыши.
|
|
Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием.
|
|
|
|
|
|
## LibHotPnt_Set - Получить положение характерной точки
|
|
|
|
Синтаксис:
|
|
```
|
|
BOOL LibHotPnt_Set(HotPointDescription* point, int index );
|
|
Входные параметры:
|
|
index - номер характерной точки,
|
|
point - структура параметров характерной точки HotPointDescription.
|
|
Возвращаемое значение:
|
|
TRUE - в случае удачного завершения.
|
|
```
|
|
Описание:
|
|
При перетаскивании характерной точки библиотечного элемента 2D c нажатой левой кнопкой мыши генерируется событие.
|
|
Этот метод позволяет отработать событие изменения положения характерной точки. Библиотека может изменить отображение библиотечного элемента или выполнить другие действия, связанные с этим событием.
|
|
Примечания:
|
|
1. Актуальны только координаты (x, y), остальные поля должны игнорироваться.
|
|
2. Значения координат приходят в собственной системе координат объекта.
|
|
|
|
|
|
## LibHotPnt_ViewData - Получить описание характерной точки при попадании указателя мыши в габарит точки
|
|
|
|
Синтаксис COM:
|
|
```
|
|
BOOL LibHotPnt_ViewData( HotPointDescription1 * point, int index );
|
|
Входной параметр:
|
|
index - номер характерной точки.
|
|
Выходной параметр:
|
|
point - указатель структуры параметров характерной точки HotPointDescription1.
|
|
Возвращаемое значение:
|
|
TRUE - в случае успешного завершения,
|
|
FALSE - в случае неудачи.
|
|
```
|
|
Примечание:
|
|
1. При движении мыши над характерной точкой можно задать новое изображение (подсветку) точки и выдать текст у курсора.
|
|
2. Метод вызывается при попадании мыши в габарит hot point.
|
|
3. При помощи метода можно указать текст, который будет выдан рядом с курсором.
|
|
4. Текст выдается для UNICODE вместо ILibHPObject::LibHotPnt_GetCursorText
|
|
5. С присланной строки снимается копия, сама исходная строка не удаляется.
|
|
6. Идентификатор нового битмапа характерной точки. Если идентификатор битмапа 0, битмап не меняется.
|
|
|
|
|
|
## ILibHPObject- методы
|
|
|
|
LibHotPnt_Complete - Завершить редактирование методом перетаскивания характерных точек
|
|
LibHotPnt_ExecuteCommand - Выполнить команду из меню, присланного по LibHotPnt_GetMenu()
|
|
LibHotPnt_Get - Установить текущее описание характерной точки
|
|
LibHotPnt_GetCursorText - Задать текст для отображения рядом с курсором
|
|
LibHotPnt_GetMenu - Задать контекстное меню, ассоциированное с данным библиотечным элементом
|
|
LibHotPnt_GetMenuEx - Получить popup-меню, ассоциированное с данным библиотечным элементом и с данной hot-точкой, если index > -1
|
|
LibHotPnt_Prepare - Подготовиться к редактированию методом перетаскивания характерных точек
|
|
LibHotPnt_Set - Получить положение характерной точки
|
|
LibHotPnt_ViewData - Получить описание характерной точки при попадании указателя мыши в габарит точки
|