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

Запуск макроса из NXOpen


AleksandraN

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

Подскажите, пожалуйста, можно ли запустить свой макрос из программки NXOpen (.class или .dll)? А если можно, то как?

И еще вопрос можно ли запустить свою .dll-ку или class (для NX) из другой dll (или class) NXOpen.

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


1. пустить макрос "по-хорошему" не получится. у меня получалось "по-плохому", но это неправильный способ :)

2. свою dll-ку - LoadLibrary/GetProcAddress (на windows)

по поводу 2. - требуется уточнение, что конкретно хочется сделать.

Regardzzz...

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

1. пустить макрос "по-хорошему" не получится. у меня получалось "по-плохому", но это неправильный способ :)

2. свою dll-ку - LoadLibrary/GetProcAddress (на windows)

по поводу 2. - требуется уточнение, что конкретно хочется сделать.

Regardzzz...

Есть программка под NX, хотелось бы ее запустить из другой программки для NX, например, привязать к кнопке в блокстайлере, чтоб при ее нажатии запускалась dll-ка как если бы сделали execute->nxopen.

Меня интересует как "по-плохому" запустить макрос? и насколько это плохо? Задача вообще в том, чтоб сбросить настройки палитры на системные - Настройки->Имя палитры->использовать системные настройки . Макрос делается легко и просто, а как сделать это на NXopen не знаю. Нашла только настройки отдельного цвета, но не всей палитры. По этому хотелось бы сделать вызов макроса в программе.

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

Есть программка под NX, хотелось бы ее запустить из другой программки для NX, например, привязать к кнопке в блокстайлере, чтоб при ее нажатии запускалась dll-ка как если бы сделали execute->nxopen.

Меня интересует как "по-плохому" запустить макрос? и насколько это плохо? Задача вообще в том, чтоб сбросить настройки палитры на системные - Настройки->Имя палитры->использовать системные настройки . Макрос делается легко и просто, а как сделать это на NXopen не знаю. Нашла только настройки отдельного цвета, но не всей палитры. По этому хотелось бы сделать вызов макроса в программе.

Для сброса палитры скорее всего подойдет UgOpen :

UF_DISP_ask_system_parameters + UF_DISP_set_system_parameters (с изменением значения поля int color). Не проверял, но по идее должно сработать.

для вызова другой библы :

UF_load_f_p_t ptr = NULL;

		//пример для ufusr с объявлением 

		//extern "C" __declspec (dllexport) void ufusr( char *parm, int *returnCode, int rlen )

		//будет так

		UF_load_library ( "c:\\my_cool_library.dll", "ufusr", & ptr );

		void (*ufusr_ptr) (char *, int *, int) = reinterpret_cast <void (*)(char *, int *, int)> (ptr);

		//call this ptr

		if (ufusr_ptr)

			ufusr_ptr (NULL, NULL, 0);

Regardzzz ...

PS Писал по памяти, так что могут быть недочеты :)

PPS Небольшая поправочка. Возможно придется указать calling convention:

void (__cdecl *ufusr_ptr) (char *, int *, int) = reinterpret_cast <void (__cdecl *)(char *, int *, int)> (ptr);

или

void (__fastcall *ufusr_ptr) (char *, int *, int) = reinterpret_cast <void (__fastcall *)(char *, int *, int)> (ptr);

но без function call convention должно работать в 99% случаев + <noindex>check this</noindex>

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

Добавлю, что был ответ:

[DllImport("libugui.dll", EntryPoint = "?MACRO_playback_from_usertool@@YAXPBD@Z")]
static extern void MACRO_playback_from_usertool32(string lpName);

[DllImport("libugui.dll", EntryPoint = "?MACRO_playback_from_usertool@@YAXPEBD@Z")]
static extern void MACRO_playback_from_usertool64(string lpName);

/// <summary>
  /// Run NX Macro files
  /// </summary>
/// <param name="lpname">Macro File Name</param>
public static void RunMacro(string lpname) 
{
  if (IntPtr.Size == 8) {
  MACRO_playback_from_usertool64(lpname);
  } else {
  MACRO_playback_from_usertool32(lpname);
  }
}

Источник

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

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

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

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

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

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

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

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

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

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

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




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