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

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

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




  • Сообщения

    • 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
    • ДОБРЯК
      А выкинуть строчку и столбец  это не закрепление? :=)
    • nicomed
      @Kelny  То что,Вы, описали это варианты, а как я понял, @Евдоким Жаркий требуется именно комплекты. Как я понимаю различие: Балка может быть и катанного профиля или гнутого, но она может быть только одна. - это варианты , и, они, не исключают комплекты сменных частей. А, к примеру у заказчика есть три домкрата, и, в процессе эксплуатации зацепа, в разных ситуациях, может использоваться разный тип домкрата. У каждого домкрата свое посадочное место, и для него уже заказчик, будет менять пятки зацепа. Т.е. у него их (пяток) столько, сколько типов домкратов. И это у же комплекты сменных частей. Резюмируя - варианты это еще на уровне изготовителя, а комплекты на уровне заказчика (эксплуатации).       
    • maxx2000
      пусть так это тебе и продолжает казаться, для меня например всё ясно как божий день. Есть вещи которые требуют понимания. Я не ставлю своей задачей выдать набор кнопок, а лишь указать возможный вектор решения задачи. Артас обрабатывает по нормали к элементу(поверхности), а надо обрабатывать вдоль оси Z РП элемента которая должна совпадать с осью Z станка. Он намного ближе к понимаю 5 осевой обработки чем может казаться со стороны.   а зачем его разворачивать? разворачивать надо с конкретной целью. Боком режет, и пусть себе режет.
    • Heroend
      Добрый день! Сел за изучение FS и решил смоделировать настоящую АВО типа БАВО-К. В процессе были некоторые проблемы, но все решалось постепенно. Однако, так и не смог исправить одну ошибку, которая портит весь расчет. Ахиллесовой пятой моего моделирования стала 3-х ходовая теплообменная секция АВО, при входных данных P=3,2 МПа, T газа = 160 С (взятых с работающего оборудования) расчет заканчивается досрочно, с ошибкой "Твердое тело расплавилось". Во время самого расчета система набирает безумное давление (смотрел по дополнительному окну), причем как только я не игрался с расходом, динамика ошибок остается та же.  Может кто-то подсказать из-за чего может быть такая проблема?  
    • Jesse
      скорей всего ДК - это какое-то "общее" требование для всех роторных машин, где есть вал..) вот и копипастят, сами не пойми чего. Ну я уже на 90% уверен, что ДК - это про гироскопику, когда достаточно большой диск кренится вдоль оси и создаёт "гироскопику" - момент, которые гнёт вал и искажает частоты. Наблюдается две ветви - т.н. "вилка". Если эти гироскопич-е эффекты пренебрежимо малы, то это уже не ДК, а просто зав-ть СЧ от оборотов..) Пока так.   да там и от скорости вращения ротора должна зависеть added mass; когда замедляется/ускоряется, везде разная масса получится.  Интересно, а можно из эксперимента определить added mass? ну типа тот же ротор постепенно разгоняешь, и смотришь как меняется основная акустическая мода по времени..
    • Orchestra2603
      @ДОБРЯК: Решил вашу задачку с одним элементом без факторизации...   Частоты:     Формы:  
×
×
  • Создать...