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

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

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




  • Сообщения

    • 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
    • Nekyyy
      Я создал чертежи по коробке скоростей станка 1А616, а именно свертку и развертку коробки скоростей, мне необходимо узнать все недочеты и неточности, буду рад любой аргументированной критике.   https://disk.yandex.ru/d/iNSbWsrSYJQJLw
    • ДОБРЯК
      А выкинуть строчку и столбец  это не закрепление? :=)
    • nicomed
      @Kelny  То что,Вы, описали это варианты, а как я понял, @Евдоким Жаркий требуется именно комплекты. Как я понимаю различие: Балка может быть и катанного профиля или гнутого, но она может быть только одна. - это варианты , и, они, не исключают комплекты сменных частей. А, к примеру у заказчика есть три домкрата, и, в процессе эксплуатации зацепа, в разных ситуациях, может использоваться разный тип домкрата. У каждого домкрата свое посадочное место, и для него уже заказчик, будет менять пятки зацепа. Т.е. у него их (пяток) столько, сколько типов домкратов. И это у же комплекты сменных частей. Резюмируя - варианты это еще на уровне изготовителя, а комплекты на уровне заказчика (эксплуатации).       
    • maxx2000
      пусть так это тебе и продолжает казаться, для меня например всё ясно как божий день. Есть вещи которые требуют понимания. Я не ставлю своей задачей выдать набор кнопок, а лишь указать возможный вектор решения задачи. Артас обрабатывает по нормали к элементу(поверхности), а надо обрабатывать вдоль оси Z РП элемента которая должна совпадать с осью Z станка. Он намного ближе к понимаю 5 осевой обработки чем может казаться со стороны.   а зачем его разворачивать? разворачивать надо с конкретной целью. Боком режет, и пусть себе режет.
×
×
  • Создать...