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

Запуск макроса из 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 пользователей

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




  • Сообщения

    • Alex_ingener
      Алгоритм, ни чем не отличается от описанного Вами, принципиальных настроек, влияющих на производительность, там нет. Однако знаю по себе, если делать раскрой одних и тех же деталей с разверткой на рабочем компе (i7-13700K и 32 ГБ оперативы) и домашнем ноуте (i5 и 16 ГБ оперативы), последний проигрывает по скорости существенно.
    • marchuk-86
      @gudstartup @Soprin В общем дело было не в бобине) Я при сверлении не присутствовал изначально и поверил словам оператора. Именно он сказал что тормозит на поворотах.  Ускорение холостого хода дало минимальную прибавку к скорости обработки ( - 2 минуты на 120 отверстиях).  Короче сравнил параметры 5114, 5115 (величина отскока сверла при прерывистом сверлении), на 4+1 осевом она стояла 0,6 мм, на  4 осевом 0,1 мм.  После изменения параметров время обработки выравнялось.
    • Killerchik
      Запишите его в другую переменную и работайте с ней.
    • Killerchik
      Их вероятно нет в природе, потому что Fanuc не выпускает никакие револьверные головы.
    • nicomed
      Окно изменил ( первое это у меня просто тестовое приложение для всего, так что было "как есть"). Орфографию поправил. Толщина и тип - там надо подумать, как лучше выбирать рассеченные сегменты эскиза. Есть большой вопрос как прочитать стиль и толщину выбранной линии ( в частности кромки).  Так что пока нет. EdgeTrim_v2.zip   З.Ы. Исходники
    • kkk
      Я может чего не понял, но зачем что-то копировать из свойств модели в свойства чертежа? В чертеже и так отображаются (могут) свойства модели. расположенной на чертеже. Без копирования туда-сюда.
    • Viktor2004
      Уважаемые коллеги Чего-то я туплю страшно Пытаюсь в P-CODE писать программу редактирования барабана инструментов Макропеременная @MDIKEYI #8549 /* MDI Key image должна мне давать номер нажатой кнопки Кнопка F1 под экраном имеет код 249 Кнопка <INPUT> имеет код 152 При нажатии F1 у меня должна включаться D5001.0 а при нажатии <INPUT> выключаться Но в макропеременной #8549 код нажатой клавиши лишь кратковременно мигает. И надо много раз нажимать нужную клавишу что бы она сработала Макропеременная #8549 у меня выводится в диагностический D5000 Кто знает, может #8549 как-то настраивается, что бы программа успела на него отреагировать IF [#8549 EQ 249] THEN #548 = 1 ENDIF IF [#8549 EQ 152] THEN #548 = 0 ENDIF https://www.youtube.com/watch?v=jvsv0YoTy-8   Я как-то пример показывал с нажатием кнопки, но там программа была короткая и она успевала схватывать нажатие кнопки. А тут у меня сначала круги рисует и не успевает
    • malvi.dp
      SW2020 работает. Пожелание - уменьшить размеры окна, а то перекрывает весь чертеж, исправить ошибку в слове детели и, если получится, сделать выбор толщины и типа линии.  
    • sippovich
      Добрый вечер Уважаемые Форумчане,нет ли ни у кого инструкции по восстановлению нулевых точек револьверной головы на станки серии TF и TD серии Fanuc? Заранее благодарен.
    • Heroend
×
×
  • Создать...