API7, раздел "Приложение"

Автор leebeertea, 25.12.25, 23:46:06

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

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

leebeertea

Добрый вечер! Недавно решил более детально ознакомиться с возможностями API7 и столкнулся с рядом сложностей, обусловленных скудностью описания функционала интерфейсов в SDK и отсутствием внятных примеров их использования. Прошу помочь разобраться с возникшими вопросами (КОМПАС v.22, язык программирования C#):

Интерфейс IApplication:
У метода MessageDlg есть параметр int HelpId. Так вот, не понятно, где искать этот идентификатор темы (страницы, статьи) в справке (id), которая будет открывать при нажатии на кнопку справки, если задан конкретный файл справки. Экспериментальным путем не удалось ничего добиться, если в путь к файлу справки добавить путь к файлу любой стандартной справки КОМПАС (которая входит в дистрибутив программы), то просто появляется значок справки, клик по нему ничего не делает. При переборе различных значений HelpId тоже ничего не происходит.


Интерфейс IApplicationLicenseManager:
У ряда свойств и методов интерфейса есть входной параметр int ProductNumber (номер продукта). Я так понимаю это номер лицензии или что-то другое?


Интерфейс IProcessParam:
1) Есть ли какой-то пример работы со свойствами BmpBeginId, ResModule и SpecToolBar? Интересно, каким образом происходит создание кастомного процесса с пользовательскими иконками и прочим. Интересно также, как выглядит .dll библиотека с ресурсами для кастомизации.
2) Свойство DefaultControlFix - что фиксирует, какие элементы, какой тип фиксации (по значению или по расположению)?
3) Свойство EnableUndoRedo - на что влияет, не дает откатывать изменения внутри процесса или после процесса не дает отменить результат его работы? Есть ли пример?
4) Свойство ShowCommandWindow - что за командное окно? Есть ли пример?
5) Свойства ShowContextMenuOfGeomCalculator, ShowContextMenuOfSnap - при задании значений true не появляются требуемые кнопки в контекстном меню процесса, есть идеи почему так происходит?
6) Метод AddSpecToolbarButton - есть ли пример такой кастомизации спецпанели?
7) Метод GetGabaritRect - что за габаритный прямоугольник? Габариты панели свойств процесса, которая обычно находится слева от графической области программы? Просто что до запуска процесса, что после метод возвращал сплошные нули.
8) Метод SetSetupMenuCommandState - при создании через метод AddSetupMenuCommand пункта в меню настроек процесса не получается изменить его состояние при использовании одного и того же ID. То есть метод не делает ничего. Есть идеи почему?
9) Пользовательский процесс всегда создается в состоянии запроса на выбор или указание какой-то сущности (расположение, объект) и, как я понимаю, это состояние постоянно и перейти к другому состоянию можно только запуском другого подпроцесса внутри нашего? То есть мы всегда внутри нашего процесса через события кликов и подобных им должны считывать взаимодействие пользователя с графическими объектами? Просто наблюдается любопытное поведение: если выбрать ksProcess3DEntity при запуске нашего процесса, то сразу после клика ЛКМ по чему либо внутри графической области (даже просто по пустоте), процесс сразу прерывается и свойство AutoReduce ВООБЩЕ ни на что тут не влияет. Но при запуске с ksProcess3DPlacementAndEntity такого поведения нет. Есть идеи почему так?


Интерфейс IProcess
1) Свойство Critical - на что влияет? Разницы с ним и без него в поведении процесса не заметил.
2) Свойство Dynamic - на что влияет? Разницы с ним и без него в поведении процесса не заметил.
3) Свойство Меnu - на что влияет? Что вообще за меню, почему у него тип данных object? Есть примеры?
4) Метод Update - для чего он нужен? Если после запуска процесса изменилось что-то в свойстве ProcessParam, то нужно внести изменения? Просто до запуска все изменения и так без проблем вступают в силу без этого метода.


Интерфейс IProcess3D
1) Свойство ClearProcessUndo - в какой момент происходит отчистка стэка, после запуска процесса или после его выполнения? Этот стэк отражает последовательные изменения свойств в Панели свойств в ходе выполнения процесса или что то другое? Почему это вообще свойство, а не метод, есть идеи?
2) Свойство MateConstraintsObjects - есть примеры работы? Просто не понятно как работает данный "контейнер", отчищается ли он в какой то момент? Тип данных object, как я понимаю, нужен для того, чтобы хранить в себе все многообразие интерфейсов объектов, которые мы можем сопрягать.
3) Свойство ObjectsFilter3D - не смог протестировать работу, так как после запуска процесса постоянный запрос на выбор каких либо объектов блокирует работу с рамкой, нет возможности ей воспользоваться впринципе. Есть идеи как с этим бороться?
4) Свойство Placement - что за ЛСК, для чего она? Есть примеры?


Интерфейс IProgressBarIndicator
Не отображается текст индикатора прогресса ни в каком виде. Параметры задаются как надо, ошибок не возникает, но отображения нет. Как я понял, в какой-то версии КОМПАС просто поменяли индикатор, и теперь он без текста. Верно?


Интерфейс IProcessInfoWindow
Все тот же вопрос про свойство HelpId, что у интерфейса IApplication. Не понятно, откуда брать данное значение.


Интерфейс IApplicationDialogs
Почему метод WhatsWrongDlg в качестве результата работы возвращается значение типа int? Что в данном случае отражает целочисленное значение? Количество документов, у которых УСПЕШНО был вызван данный диалог или что-то другое?


Интерфейс IContentDialogParam
1) Все тот же вопрос про свойство HelpId, что у интерфейса IApplication. Не понятно, откуда брать данное значение.
2) В целом не ясно, почему при вызове диалогового окна (IApplicationDialogs.ShowContentDialog) с параметрами, описанными с помощью данного интерфейса, само окно просто не появляется, а вся программа зависает, как будто управление передалось открытому окну, но окно визуально не видно и взаимодействовать с ним никак нельзя. Есть идеи, как бороться с подобным поведением?


Заранее спасибо за любую помощь в решении вышеописанных проблем!

Kolos

Какое отношение имеет MessageDlg к выводу справки?
Вы справку сами писали?
Если да, то непонятно почему не можете найти Id.
ksOpenHelpFileW(PWideChar(HelpFile),0,371);

p3452

leebeertea, хорошо бы ПЕРЕАДРЕСОВАТЬ все Ваши вопросы в службу поддержки АСКОН!

p/s: Часть оговоренных проблем АСКОН, все-таки, решил ("Лучше поздно, чем никогда!"), но только в v24...