Регистрация команды

Автор Lemieux, 21.12.24, 14:29:37

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lemieux

Всех приветствую, возможно ли зарегистрировать команду в КОМПАС, но чтобы она не появлялась в меню?

UU

Конечно, команду добавляете, а в меню её не прописываете.
Отрабатываете её в
procedure LIBRARYENTRY(command:WORD);

Lemieux

Цитата: UU от 21.12.24, 14:42:43Конечно, команду добавляете, а в меню её не прописываете.
Как добавлять?

UU

#3
Цитата: Lemieux от 21.12.24, 15:02:05Как добавлять?
В функцию LIBRARYENTRY, кстати с какой у Вас начинаются команды?
Номер один можно пропустить и увидеть, что она будет вызываться при подключении библиотеки, также можете выполнить программно команду Вашей библиотеки, которой нет в меню, но есть реализация в функции.

Lemieux

#4
Цитата: UU от 21.12.24, 16:14:39В функцию LIBRARYENTRY, кстати с какой у Вас начинаются команды?
Номер один можно пропустить и увидеть, что она будет вызываться при подключении библиотеки, также можете выполнить программно команду Вашей библиотеки, которой нет в меню, но есть реализация в функции.
Открываем хелп по SDK, читаем раздел "Функции оформления библиотек типа DLL",


ЦитироватьФункция LIBRARYENTRY является обязательной. Ее наличие позволяет системе КОМПАС идентифицировать произвольный DLL-файл как собственную библиотеку, LIBRARYENTRY является головной функцией библиотеки (точкой входа) и ей передается управление при обращении к приложению. Остальные функции являются необязательными и позволяют определить дополнительные параметры приложения.

ЦитироватьСинтаксис:
extern "C" void far_export pascal LIBRARYENTRY(UINT Comm)
Входной параметр:
Сomm- идентификатор выбранной команды.
Примечание:
1. При вызове команды библиотеки из меню, панели инструментов или при редактировании библиотечного элемента по двойному нажатию кнопки мыши управление передается этой функции с номером выбранной команды.

Потом смотрим пример:

Цитировать// Определение в файле ресурсов меню операций.
// Примечание: Идентификаторы команд меню должны быть в интервале от 1 до 900.
// Команда выбранной строчки меню будет передана в функцию LibraryEntry.
KONSTR_1 MENU
{
MENUITEM "Болт ГОСТ 7798-70", 1
MENUITEM "Шайба ГОСТ 18123-72", 2
POPUP "ГАЙКИ"
{
MENUITEM "Гайка ГОСТ 6393-73", 3
POPUP "ГАЙКИ ШЕСТИГРАННЫЕ"
{
MENUITEM "Гайка ГОСТ 5915-70", 4
MENUITEM "Гайка ГОСТ 15521-50", 5
}
}
MENUITEM "Штифт ГОСТ 10774-80", 6
}

где команда регистрируется через добавление в меню.

UU

#5
Вот эту строку уберите "MENUITEM "Болт ГОСТ 7798-70", 1"
В функции LIBRARYENTRY, в команде 1, напишите Kompas.ksMessage('Привет, дядя Вася!!!');
PS. Когда нужно Вы можете вызвать любой номер команды, даже из собственной библиотеки.

Lemieux

#6
Цитата: UU от 21.12.24, 16:42:09Вот эту строку уберите "MENUITEM "Болт ГОСТ 7798-70", 1"
В функции LIBRARYENTRY, в команде 1, напишите Kompas.ksMessage('Привет, дядя Вася!!!');
PS. Когда нужно Вы можете вызвать любой номер команды, даже из собственной библиотеки.
Так, это что же получается, что КОМПАС сразу регистрирует под пользователя 1000 команд? И если я выполню ExecuteKompasCommand 666, то КОМПАС передаёт в  LIBRARYENTRY номер этой команды? А когда пользователь через ресурсы определяет номер команды, то он её переписывает?

UU

#7
Цитата: Lemieux от 21.12.24, 17:10:03Так, это что же получается, что КОМПАС сразу регистрирует под пользователя 1000 команд? И если я выполню ExecuteKompasCommand 666, то КОМПАС передаёт в  LIBRARYENTRY номер этой команды? А когда пользователь через ресурсы определяет номер команды, то он её переписывает?
Зачем, ему их регистрировать все?
Отладчиком, Вы вроде пользоваться умеете, судя по Вашим высказываниям.
PS. Дальше Starik, Вас консультирует, т.к. кое кого туту отбелили, спасибо СВ.

Lemieux

Цитата: UU от 21.12.24, 17:16:21Зачем, ему их регистрировать все?
Отладчиком, Вы вроде пользоваться умеете, судя по Вашим высказываниям.
PS. Дальше Starik, Вас консультирует, т.к. кое кого туту отбелили, спасибо СВ.
Да с Вами всё понятно давно, только непонятно зачем Вы шута изображаете и пытаетесь запутать пользователей? Или Вы пытаетесь изо всех доказать, что API КОМПАС не днище? - Нет, оно днище, так как я снова нашёл ошибку. Если сделать массив контрольных точек, то у каждой точки будет возвращать координату оригинала.

UU

Цитата: Lemieux от 21.12.24, 18:23:24Да с Вами всё понятно давно, только непонятно зачем Вы шута изображаете и пытаетесь запутать пользователей? Или Вы пытаетесь изо всех доказать, что API КОМПАС не днище? - Нет, оно днище, так как я снова нашёл ошибку. Если сделать массив контрольных точек, то у каждой точки будет возвращать координату оригинала.
Молодец, Вы тему читали?
Причем тут "массив контрольных точек"?
Создаёте отдельную тему.

Lemieux

Короче, нельзя просто зарегистрировать команду без добавления в меню. UU как обычно пишет бред.

UU

Цитата: Lemieux от 21.12.24, 22:40:46Короче, нельзя просто зарегистрировать команду без добавления в меню. UU как обычно пишет бред.
Вот Вам библиотека, подключайте играйтесь.
Выполнить команду данной библиотеки, можете из своей с помощью интерфейса - ILibrary.
Lemieux.zip
+ Благодарностей: 1

Lemieux

Цитата: UU от 22.12.24, 00:15:48Вот Вам библиотека, подключайте играйтесь.
Выполнить команду данной библиотеки, можете из своей с помощью интерфейса - ILibrary.
Lemieux.zip
Спасибо, про этот велосипед я знаю. Вам бы поработать в других программах, где команды не так привязываются и Вы бы поняли, что я имел ввиду. Попозже подумаю ещё раз над этим велосипедом, может что-то придумаю