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

Программный вызов команд NX


Ростислав

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

Добрый день! Вопрос заключается в следующем... Возможно вызвать из своего приложения  UI, существующую команду NX. например "Массив  элементов"? То есть мне нужно из моего приложения вызвать команду "Массив элементов", и получить созданный элемент.  

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


нет.
вы можете добавлять свои POST/PRE действия к командам NX,
можно заменять их.
В отдельных случаях можно записать макрос в котором учавствуют твое приложение и команды NX.
Но напрямую вызвать из приложения нельзя (ИМХО конечно)

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

Спасибо буду разбираться с предложенными вариантами, может какой нибудь подойдет.

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Ростислав сказал:

Возможно вызвать из своего приложения  UI, существующую команду NX. например "Массив  элементов"? 

Вызвать созданное разработчиками NX меню команды нельзя,

но выполнить команду можно. "Круговой Массив  элементов" - UF_MODL_create_circular_iset().

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

Но мне надо построить массив элементов, по определенной траектории. А как я понял, данная функция строить вокруг оси? Или я чего то не до понял?

 

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

Я всего лишь привёл конкретный пример. Можно очень многое.
Но для этого надо изучить NX Open API, для NX11:

https://docs.plm.automation.siemens.com/tdoc/nx/11/nx_api/#uid:index

ну а дальше, всё зависит от задач и ваших возможностей.

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

На самом деле можно попытаться вызвать диалог NX из своей программы.

Может быть не любой, но некоторые точно.

Но для этого надо сначала найти в какой dll он лежит, узнать его имя...

Потом сделать lib-файл с этой dll, включить его в свой проект,

задекларировать саму функцию (если диалог это функция),

ну а потом вызвать ее.

Если сделать всё правильно, то должно сработать.

Еще может возникнуть проблема совместной работы своих диалогов

и стандартных.

Когда то давно вызывал так функцию-диалог измерения дистанции:

нашел в libmodlint.dll по моему (уже не помню как :-) ), сделал lib с нее.

 

extern "C" {extern UFUNEXPORT int bcb_Info_Distance(void);}//UG Анализ-Дистанция

.....

int rcode = UF_UI_unlock_ug_access (UF_UI_FROM_CUSTOM);

if (rcode != UF_UI_UNLOCK_SET)

UF_UI_set_status("Could not unlock Unigraphics");

bcb_Info_Distance(); // стандартный диалог UG - анализ->дистанция

// UF_UI_lock_ug_access (UF_UI_FROM_CUSTOM); // иначе диалоги из программы не работают

 

как то так...

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, koner сказал:

@harbel А результат измерения где?

 

Это чисто информационная команда - показывает на местности дистанцию между двумя точками в виде числа.

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

 

Просто была кнопочка в диалоге, вызывающая эту функцию.

А в принципе можно запустить и команду построения (массива того же)...

 

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

Вызывать стандартную функцию NX, из своей dll хотел ради предварительного просмотра. Может кто то знает другие методы реализации предварительного просмотра, для построения массива точек на кривой?

Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, Ростислав сказал:

Может кто то знает другие методы реализации предварительного просмотра, для построения массива точек на кривой?

строите своими средствами, и гоняете туда-сюда через UNDO.

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Ростислав сказал:

Может кто то знает другие методы реализации предварительного просмотра, для построения массива точек на кривой?

Так, чуть ли не в каждой команде Моделинга, это есть:

в любом меню команды, внизу - раздел "Настройки" - "PreView".

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

Средствами UNDO можно, но думал может есть какой то другой вариант. 

Про  "Настройки" - "PreView", можно поподробнее не сильно понял?

 

Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Ростислав сказал:

для построения массива точек на кривой?

 

1 час назад, Ростислав сказал:

Про  "Настройки" - "PreView", можно поподробнее ?

 

вызываем команду "Набор точек" - внизу два ящичка/раздела с именами "Настройки" и "Просмотр"

раскрываем их: - в "Просмотр" надо чтобы была галочка.

- В "Настройки" уберите галочку перед Ассоциативно.

Меняйте параметры/типы/условия - на экране мгновенный результат.

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Ростислав сказал:

Ну это понятно. Вопрос в том, как это реализовать в коде?

Желательно на с#

А мне, чем дальше ... - тем более не понятно ...
Но, положим, это особенность общения в инете.

Откройте это:

https://docs.plm.automation.siemens.com/tdoc/nx/10/nx_api/#uid:index

Далее NX Open, ну или что вам больше понравится ...

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

Подскажите пожалуйста как работать с метками отката!!! Каждый раз при нажатии кнопки строится кривая, нужно сделать так чтобы при нажатии на кнопку старая кривая откатывалась до предыдущего состояния, а новая строилась. Делаю так, об являю глобальную переменную  UFUndo.UserVisibility user_mark = new UFUndo.UserVisibility(), и int mark_id. В событии нажатия кнопки:

 try
{              
       theUfSession.Undo.UndoToMark(mark_id, "mark1");
}
        catch (Exception ex)

{}
 theUfSession.Undo.SetMark(user_vis1, "mark1", out mark_id);

 В таком виде выскакивает  ошибка "Потеряна метка отката". подскажите пожалуйста как правильно решить эту проблему!!! 

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Ростислав сказал:

Подскажите пожалуйста как работать с метками отката!!! Каждый раз при нажатии кнопки строится кривая, нужно сделать так чтобы при нажатии на кнопку старая кривая откатывалась до предыдущего состояния, а новая строилась. Делаю так, об являю глобальную переменную  UFUndo.UserVisibility user_mark = new UFUndo.UserVisibility(), и int mark_id. В событии нажатия кнопки:

 try
{              
       theUfSession.Undo.UndoToMark(mark_id, "mark1");
}
        catch (Exception ex)

{}
 theUfSession.Undo.SetMark(user_vis1, "mark1", out mark_id);

 В таком виде выскакивает  ошибка "Потеряна метка отката". подскажите пожалуйста как правильно решить эту проблему!!! 

Попробуйте при создании точки имя всегда новое рандомно присваивать(чтобы юзера названия не смущали сделайте их невидимыми), и, соотв-но к нему потом откатываться

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

Попробовал не помогло, может не до конца понял. Можете поподробнее или в коде отобразить пожалуйста!

 

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

всем на заметку, имя undo точки можно ставить null, и т.о. хранить его не обязательно, достаточно только mark_id

 

вот рабочий код
 
 //запоминаем
 Session.UndoMarkId temp_undomark = theSession.SetUndoMark(Session.MarkVisibility.Invisible, null);
 try
 {
    чото делаем
 }catch{}
 //верстаем взад
 theSession.UndoToMark(temp_undomark, null);
 theSession.DeleteUndoMark(temp_undomark, null);

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • ALEKS
      Более свежее описание обновлений Е2025 Cimatron 2025 - What's New - Beta 2 Release.pdf
    • Ninja
      @Krusnik  что ты такое несёшь? Какие рендеры? Выйди на улицу да посмотри и увидишь...   @Fedor  ты свои метры с ихними не ровняй . Там где у тебя заканчиваются 75 метров у небожителей начинается подвал! Понял?       Да, тут ОНИ вписались в ограничения, но только потому, что на это есть веская причина! Дядя @Fedor  , ты не просёк главную фишку этого проекта )) Вот что ты видишь на этой картинке? Дома на сваях ?   А что дядя @Fedor видит под домами? А я скажу - там стоит пивзавод!!! Смекаешь . И эти сваи полые внутри, там специальные каналы, понимаешь!? Вот у тебя на кухне сколько кранов? Два? А у новых жильцов их будет по 16 штук ))) . И высота данного строения ограничена жалкими 70 метрами только из-за того , что пивзавод не в состоянии производить большего количества пива на каждого жителя новостройки...
    • gudi
      Guhl молодец, вышел на след.    Из книжки B-63945RU :  (c) Введен сигнал взаимоблокировки или блокировки пуска Имеются многочисленные сигналы взаимоблокировки. Сначала проверьте в параметрах, показанных ниже, какой сигнал взаимоблокировки используется заводом изготовителем станка.   3003#0 (ITL) 3003#2 (ITX) ITL=0 означает, что сигнал блокировки *IT действителен. в 1) ITX=0 означает, что сигнал блокировки *ITn действителен. в 2)         Проверьте состояние действительных сигналов блокировки посредством окна отображения состояния сигналов PMC. (i) Вводятся сигналы блокировки (*IT, *CSL и *BSL). #7 #6 #5 #4 #3 *BSL #2 #1 *CSL #0 *IT G0008 *IT=0, *CSL=0 и *BSL=0 означают, что вводится сигнал блокировки. (ii) Введен сигнал взаимоблокировки (*ITn) по оси. #7 *IT8 #6 *IT7 #5 *IT6 #4 *IT5 #3 *IT4 #2 *IT3 #1 *IT2 #0 *IT1 G0130 *ITn=0 показывает, что введен сигнал взаимоблокировки.
    • Viktor2004
      иногда в ладдере прописано автоматическое отключение питания если станок не выполняет никакую программу и при этом в течении получаса или часа никто не нажал ни какую кнопку. Биглия токарный например
    • Guhl
      В тепловом реле (автомат защиты двигателя) Дополнительный контакт этого реле заведен на вход Х5.6 А выключение переключателя "auto power off" на панели станка не отключает автоотключение после команды М30?
    • rrr11
      Добрый вечер всем, подскажите пожалуйста, может кто сталкивался...  На токарном станке dmtg выскочила ошибка EX1049 NON-MAIN MOTOR OVERLOAD X5. 6 в чем проблема? В мануале не нашёл. Oi-tf plus
    • Sabadash
    • maxx2000
      подозрения подтвердились, используй для поворотки инверсную подачу G93
    • Sabadash
      Да у серв кажется неправильно настроен контур регуляции позиции) Бегло смотрел параметры там классический контур на PID и Notch фильтрах, нужно настроить, займусь.   4 axis test.nc  
    • gudstartup
      китайцы уже защищают свою pmc  так что ничего не изменишь  1401 # 4  RF0 When cutting feedrate override is 0% during rapid traverse, 0:    The machine tool does not stop moving. 1:    The machine tool stops moving например этот интересный 7200 # 3  OP4 JOG feedrate override select, feedrate override select, and rapid traverse override select on software operator's panel 0:   Not performed 1:    Performed даже этот могет подпортить управление
×
×
  • Создать...