Перейти к публикации

Редактирование меню


x13

Рекомендованные сообщения

Здравствуйте! Необходимо внести поправки в стандартное меню. Знающие люди, подскажите, пожалуйста, как правильно сделать.

Делаю по хелпу: из дирректории $UGII_BASE_DIR/ugii/menus копирую файл ug_main.men. Там правлю то, что мне надо. Дальше куда его поместить надо? Где и как определить, что меню должно формироваться по новому файлу, а не по начальному. В хэлпе написано, что вроде как новое местоположение надо указать в файле custom_dirs.dat (из той же дирректории), но изменить этот файл не получается. Или я что-то не так понимаю и делаю?..

Помогите, пожалуйста!

Ссылка на сообщение
Поделиться на других сайтах


Здравствуйте! Необходимо внести поправки в стандартное меню. Знающие люди, подскажите, пожалуйста, как правильно сделать.

Делаю по хелпу: из дирректории $UGII_BASE_DIR/ugii/menus копирую файл ug_main.men. Там правлю то, что мне надо. Дальше куда его поместить надо? Где и как определить, что меню должно формироваться по новому файлу, а не по начальному. В хэлпе написано, что вроде как новое местоположение надо указать в файле custom_dirs.dat (из той же дирректории), но изменить этот файл не получается. Или я что-то не так понимаю и делаю?..

Помогите, пожалуйста!

А зачем Вам трогать ug_main.men

Чтобы что-то изменить достаточно написать свой отдельный файл с расширением men

Создайте где-нибудь каталог и пропишите его в файле custom_dirs.dat

В нем создайте подкаталог startup и кладите туда свои men файлы

Ссылка на сообщение
Поделиться на других сайтах

2 x13

Если опишешь, ЧТО конкретно хочется сделать - то помогу в этой ветке форума.

А так, могу запостить сюда всю справку по Menuscript =)

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

Конкретно, надо отследить действия пользователя (в зависимости от того, что делает пользователь , какой пункт меню выбирает надо либо позволить это действие, либо - нет ). Поэтому хочу к стандартной обработке ряда пунктов меню (ACTIONS STANDARD) добавить вызов функции, которая некоторым образом сигнализирует о том, что пользователь выбрал данный пункт меню.

Ссылка на сообщение
Поделиться на других сайтах

офтоп: ужас! уже юзеров ограничивают в использовании всего функционала НХ?!!! :)

если не секрет: когда возникает такая потребность?

разве нельзя просто создать стандартное для всех юзеров менюшку на основе раздачи лицензий?

Ссылка на сообщение
Поделиться на других сайтах

Конкретно, надо отследить действия пользователя (в зависимости от того, что делает пользователь , какой пункт меню выбирает надо либо позволить это действие, либо - нет ). Поэтому хочу к стандартной обработке ряда пунктов меню (ACTIONS STANDARD) добавить вызов функции, которая некоторым образом сигнализирует о том, что пользователь выбрал данный пункт меню.

Так можно просто скрыть эти пункты меню

Только это не гарантирует что это нельзя обойти

Есть макросы, программирование в C, Grep, KBE ...

Если Вы хотите обеспечить какие-то требования к информации

то делается это не методом запретов а методом проверки информации в prt

Модуль Check-Mate

Может Вам также стоит посмотреть на системные точки входа

(Open, New, Save, Save as ...) - перечень этих действий (пунктов меню) есть в документации в UGOpen

Где может быть использован Ваш C код

Ссылка на сообщение
Поделиться на других сайтах

Дело в том, что это дипломный проект. Цель: дать возможность пользователю-новичку самостоятельно освоиться и UG, корректируя его действие (если необходимо) в процессе построения заданной детали. Отсюда и необходимость иметь информацию о пользовательских событиях.

Ссылка на сообщение
Поделиться на других сайтах

Дело в том, что это дипломный проект. Цель: дать возможность пользователю-новичку самостоятельно освоиться и UG, корректируя его действие (если необходимо) в процессе построения заданной детали. Отсюда и необходимость иметь информацию о пользовательских событиях.

Это получается типа интерактивного курса в NX, где сам NX будет подводить курсор к пунктикам или наоборот говорить: "неправильно, ты дядя Федор бутерброд кушаешь?". Забавно.
Ссылка на сообщение
Поделиться на других сайтах

Не совсем так - курсор подводит и выбирает пункты меню все-таки пользователь, а вот NX ему должен ответить, правильно он выбирает или нет.

Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте. Еще вопросик есть: как правильно прописать путь в файле custom_dir.dat? (какой командой) UGII_MAIN_MENU_FILE=C:\... (и т.д.) так? или как-то по-другому?

подскажите пожалуйста! никак не получается!

Ссылка на сообщение
Поделиться на других сайтах

Руками!

Вот типичная строка в этом файле:

E:\test

А вот в папочке тест должны быть папочки application, startup, bitmaps и так далее. Почитай документацию, это расписано прозрачней некуда..

Ссылка на сообщение
Поделиться на других сайтах

2 x13

Версия NX какая ?

PS Так уж и быть, помогу студенту :)

( если тех задание именно вот так выглядит курсор подводит и выбирает пункты меню все-таки пользователь, а вот NX ему должен ответить, правильно он выбирает или нет. )

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

а в каком смысле "правильно он выбирает или нет"???

моделирование это не кладезь устоявшихся норм, одну и ту же деталь два разных человека сделают по-разному

кто будет оценивать что правильно?

сори за оффтоп

даже если будет какая-то конкретно заданная деталюха, если я сделаю быстрее (естественно соблюдая геометрию), чем предлагает "задачник", разве это будет неверно?

Изменено пользователем N_town
Ссылка на сообщение
Поделиться на других сайтах

Спасибо всем за участие и желание помочь!

niki:

Версия NX 6.0.

Более точно ТЗ выглядит следующим образом: необходимо построить заданную деталь. Программа "знает" несколько (минимум 2) наиболее оптимальных способов построения детали. При действии пользователя, не приводящем к требуемому результату, программа выдает окошко с сообщением о возможном правильном последующем действии.

N_town:

Что касается верного и неверного действий - для того и задается несколько способов построения.

Изменено пользователем x13
Ссылка на сообщение
Поделиться на других сайтах

2 x13

Я могу показать путь ("программный"), как вести пользователя именно через пункты меню ( insert->feature-> block, insert->feature->cylinder ). Т.е. , чтобы

после insert->feature-> block он мог нажать только на insert->feature->cylinder.

а вот что пользователь будет нажимать в самих диалогах ( построит он кубик 100x100x100 или 200x200x200 ) - это на ходу отследить невозможно.

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

2 x13

Я могу показать путь ("программный"), как вести пользователя именно через пункты меню ( insert->feature-> block, insert->feature->cylinder ). Т.е. , чтобы

после insert->feature-> block он мог нажать только на insert->feature->cylinder.

а вот что пользователь будет нажимать в самих диалогах ( построит он кубик 100x100x100 или 200x200x200 ) - это на ходу отследить невозможно.

Regardzzz ...

Здравствуйте, хорошо, пусть будет так. Чего уж тут... раз невозможно, то как ни выкручивайся, все равно не сделаешь.

Ссылка на сообщение
Поделиться на других сайтах

2 x13

0. Данный пример (тот, который в папке install) будет гарантированно работать только с NX6 (32-bit).

1. В архиве 2 папки install и project

2. в папке project - исходник библиотеки, которая при старте NX регистрирует 2 указателя на функции.

в этих функциях обрабатывается нажатие на ту или иную кнопку в NX. При этом, если ф-ция возвращает что-либо,

отличное от UF_MB_CB_CONTINUE, то дальнейшее действие ACTION-ов, завязанных на какую либо кнопку, прекращается.

(подробности - см. справку по UgOpen + Menuscript). + по исходному коду разбросаны мои комментарии.

Для сборки проекта необходим Microsoft VisualStudio 2005 (SP1) (MSVC++8.0SP1).

(подробности - см. справку по UgOpen).

3. В папке install - готовый пример, обрабатывающий нажатие на кнопки

UG_FILE_OPEN ( сработает x13_action_pre и запретит дальнейшие действия ) + будет выведено инфоокно.

UG_FILE_SAVE_PART ( сработает x13_action_pre и запретит дальнейшие действия ) + будет выведено инфоокно.

UG_FILE_NEW ( сработают x13_action_pre , DEFAULT, x13_action_post ) + будет выведено инфоокно.

4. Регистрация callback - ов происходит в install\startup\x13_menubar_actions.men

(подробности - см. справку по Menuscript).

5. Для подключения надо распаковать архив ( путь НЕ должен содержать русских символов ) и в

<там_где_установлен_NX6>\UGII\menus\custom_dirs.dat (на этот файл смотрит переменная UGII_CUSTOM_DIRECTORY_FILE) в

самый низ добавить строчку с полным путем к папке install. ( например c:\temp\x13_menubar_actions\install\ ).

(подробности - см. справку по Menuscript).

6. В принципе, preaction-ом можно анализировать возможность нажатия пользователем той или иной кнопки, а

postaction-ом - анализровать результат и, соответственно, подстраивать список "разрешенных" кнопок.

Regardzzz ...

x13_menubar_actions.zip

Ссылка на сообщение
Поделиться на других сайтах

to niki

из x13_menubar_actions.cpp:

"

extern "C" __declspec (dllexport) void ufsta( char *parm, int *returnCode, int rlen ) {

try

{

// init session

UgSession sess (true);

"

а создаст ли конструктор класса "UgSession sess (true)" вообще объект UgSession в точке входа ufsta?

Ведь сессии во время старта NX нету ...

Не грубейшая ли вкралась ошибка в код ? :)

Ссылка на сообщение
Поделиться на других сайтах

2 dba

Ээээ. Какбе по пунктам.

1.

а создаст ли конструктор класса "UgSession sess (true)" вообще объект UgSession в точке входа ufsta?

Создаст. Чем ufsta хуже ufusr :confused_1:

2.

Ведь сессии во время старта NX нету ...

Фразу не понял. Сессии ЧЕГО ? + Если внимательно (вооруженным взглядом - при помощи отладчика или дизассемблера глянуть в недра libopenpp.dll ) посмотреть на UgOpen++ ( не путать с NXOpen), то можно с удивлением обнаружить, что это всего лишь "классовая обертка" над UgOpen. Так что формально UgSession sess (true); - это UF_initialize / UF_terminate.

3.

Не грубейшая ли вкралась ошибка в код ? :)

Хехе :) 8 лет разработки промышленного кода под NX такого просто не позволяют сделать.

Regardzzz ...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...