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

Возможно ли в UG присваивать быстрые клавиши?


Sergei K

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

Никто не знает, как в ЮГ присваивать быстрые клавиши функциям, и возможно ли это вообще. Может их можно прописывать в каком-то файле настроек или же нужно програмку написать, мне бы помогла любая информация, может кто-нибудь видел информацию на буржуйских форумах? Мне всего-то пока требуется присвоить клавишам alt+н zoom -50% и alt+w zoom окном (за 5 лет работы в CADKEY рефлексы выработались).

Ссылка на сообщение
Поделиться на других сайтах
  • 8 месяцев спустя...


niki

Благодаря подсказке FFF c этого форума с клавишами вроде разобрался. Оказалось что они настраиваются в файлах *.men в каталоге UGII\menus

(фрагмент:

BUTTON UG_FILE_NEW

LABEL &New...

ACCELERATOR Ctrl+N

ACTIONS STANDARD)

Непонятным осталось как задействовать цифровые клавиши на numpade.

И хотелось бы еще присваивать одну клавишу а не в паре с alt,ctrl,shift, может это както можно сделать?

Есть еще вопросы по драфтингу:

Возможно ли

заставить юг писать дату в штампе автоматически и возможно ли чтобы он брал

название файла части и вставлял в штамп,а также писал путь к файлу?

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

И хотелось бы еще присваивать одну клавишу а не в паре с alt,ctrl,shift, может это както можно сделать?

Тогда опция, назначенная этой клавише, может активизироваться в самый нежелательный момент, при заполнении того же штампа, например.
Ссылка на сообщение
Поделиться на других сайтах

Aleksandr

Ну это не совсем так в Cadkey можно присваивать одну клавишу без проблем у меня пол клавиатуры так настроено при вводе текста эти команды игнорируются.

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

Предлагается следующий кусочек кода для создания аттрибутов Времени и ИмениФайла

Если кто нить найдёт ошибки - пажалста поправьте!

Тестировалось под UGSNX1

// *** Не стреляйте в программиста --- он кодит как умеет :gun_guns:

собирать с _AFXDLL

// *** cut here

#include <strstream>

#include <iostream>

#include <algorithm>

#include <afx.h>

#include <uf.h>

#include <ug_session.hxx>

#include <ug_exception.hxx>

#include <ug_part.hxx>

#include <uf_ui.h>

#include <uf_exit.h>

#include <ug_info_window.hxx>

using namespace std;

extern DllExport void ufusr( char *parm, int *returnCode, int rlen )

{

try

{

// init ugopen

UgSession::initialize();

// ask work part

UgPart *prt = UgSession::getWorkPart();

// our attributes and stream to get formatted time

string date_attr = "DATE_OF_CHANGE";

string part_name = "PART_NAME";

strstream str;

// get current time

CTime time = CTime::GetCurrentTime();

int year, month, day, hour, min;

year = time.GetYear();

month = time.GetMonth();

day = time.GetDay();

hour = time.GetHour();

min = time.GetMinute();

// pump time into str stream

if (day < 10) str<<"0"<<day<<".";

else str<<day<<".";

if (month < 10 ) str<<"0"<<month<<".";

else str<<month<<".";

str<<year<<" ";

if ( hour < 10 ) str<<"0"<<hour<<":";

else str<<hour<<":";

if (min < 10 ) str<<"0"<<min<<ends;

else str<<min<<ends;

// try to find if our part already has our attributes

// if it doesnt - create them

// else - update them

vector <string> part_attributes = prt->askStringAttributeTitles();

vector <string> ::iterator it;

it = find(part_attributes.begin(), part_attributes.end(), part_name);

if ( it == part_attributes.end()) prt->addStringAttribute(part_name, prt->getFullName().c_str());

else prt->setStringAttributeValue(part_name, prt->getFullName().c_str());

it = find(part_attributes.begin(), part_attributes.end(), date_attr);

if ( it == part_attributes.end()) prt->addStringAttribute(date_attr, str.str());

else prt->setStringAttributeValue(date_attr, str.str());

}

catch (...)

{

UF_UI_display_nonmodal_msg("ERROR", "ERROR", UF_UI_MSG_POS_CURSOR);

}

}

// *** cut here

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

2 Sergei.

На KBE-ях не получилось -- методов не хватило! Пришлось - на сях писать!

Предисловие:

1. Ставим Microsoft Visual Studio 6

2. Находим, где сидят WizardFiles - *.awx - это в "%MSDevDir%\Bin\IDE"

3. Копируем туда файл %UGII_BASE_DIR%\ugopen\UgOpen_v19.awx

Теперь при создании нового проекта в VisualC++ у нас есть возможность выбора проекта под UG.

2. Открываем VisualC++. и ... создаем новый проект под UG. (есессно в пути русских букывок не должно быть - а то не запустится).

2,1 При создании проекта можно все оставить по дефолту в Wizarde - если интересно - могу рассказать какая педалька за что отвечает.

3. ЕСЛИ У ВАС УСТАНОВЛЕН ОДИН UG - ТО в настройках проекта в принципе ничего менять не надо , если несколько - то жмем в

3,1 Project -> Settings

3.2 Выбираем Settings For: All Configurations.

3.3 Идем во вкладку C/C++ ; Category -> Preprocessor; и в поле Additional Include Libraries надо прописать полный путь к двум папкам ugopen и ugopenpp без использования переменных.

3,4 Идем во вкладку Link ; Category -> input; и в поле Additional Library Path надо прописать полный путь к двум папкам ugopen и ugopenpp без использования переменных.

3.5 Если используются самописные UG-овые диалоги то в поле Object/Library Modules должны быть libopenintpp.lib libopenpp.lib libufun.lib libugopenint.lib libvmathpp.lib - когда UG создает проект,

какая-то из этих Lib в проект не попадает (глюк панимэшь!).

4. Открываем C-шный файл в проекте - стираем все к черту и поверх пишем наш код. Кстати для данного проекта надо приписать о вкладке C/C++ ; Catgory -> Preprocessor;

в поле Preprocessor Defifnitions _AFXDLL.

5. После всех энтих манипуляций компилируем проект в Release конфигурации - и получаем *.DLL После чего в UG жмем в File -> Execute UgOpen -> UserFunction -> <наша dll>.dll и наслаждаемся Result-ом

6, Можно сию dll-ку прицепить на UG-овую кнопку или засунуть в toolbar!.

PS Самое главное замечание:

Как только используются C++ методы и объекты - функция extern "C" int ufusr_ask_unload( void ) должна или отсутствовать или возвращать return( UF_UNLOAD_UG_TERMINATE );

Проверено неоднократно - если это не так - самописный софт глючит в самых неподходящих местах.

PPS -Если вышеописаное слишком гиморно - могу прислать готовую dll-ину.

Regardzzz...

PS - если что непонятно - спрашивайте!

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

niki

Большое спасибо за столь подробно изложенное обяснение.

Более менее все понятно надо будет раздобыть Microsoft Visual Studio 6 тогда попробую.

А пока хотелось бы готовую *.dll-ку попробовать вышлите пожалуйста на sergei@pioneer.ee

Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

для назначения горячих клавишь идём в в ug_VIEW_POPUP.men (Program Files\EDS\Unigraphics NX\UGII\menus)

и меняем на свои клавиши.

BUTTON UG_VIEW_POPUP_ORIENT_TOP

LABEL T&op

BITMAP view_top.bmp

ACCELERATOR Alt+Q

ACTIONS STANDARD

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

niki

Виноват... глюк был у меня... библиотеки от 16 версии брались....

другая трабла вылезла: при компиляции в release выдает

--------------------Configuration: attr - Win32 Release--------------------

Linking...

nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in msvcprt.lib(delop_s.obj)

nafxcw.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in msvcprt.lib(delop_s.obj); second definition ignored

Creating library Release/attr.lib and object Release/attr.exp

nafxcw.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype

nafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype

nafxcw.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype

nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv

nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc

Release/attr.dll : fatal error LNK1120: 3 unresolved externals

Error executing link.exe.

attr.dll - 7 error(s), 1 warning(s)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...
  • 2 месяца спустя...

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

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

В NX2 появилась возможность присваивать одну клавишу, а не обязательно в паре с Alt или Ctrl.

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

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

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

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

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

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

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

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

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

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

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




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