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

Программирование в Nx Ufunc


IgP

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

Нужно программно получить постоянный ID тела, для дальнейшей его идентификации в другом сеансе.

Использовал функцию UF_TAG_ask_handle_of_tag.

Однако UF_TAG_ask_handle_of_tag после изменения размеров тела - возвращает другое значение.

Как получить постоянный handle объекта?

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


Нужно программно получить постоянный ID тела, для дальнейшей его идентификации в другом сеансе.

Использовал функцию UF_TAG_ask_handle_of_tag.

Однако UF_TAG_ask_handle_of_tag после изменения размеров тела - возвращает другое значение.

Как получить постоянный handle объекта?

Не четко задали вопрос

Вы не можете по handle нормально восстановит tag?

И с чего вы взяли что он должен быть постоянным - там где-то это написано

Я не знаю может он и постоянный не пользовался этой функцией

Насколько я понял эта пара функция предназначена для сохранения и восстановления tag

которые в разных сессиях могут отличаться

Может можно найти более простые способы для решения Вашей задачи

Назначить имя на tag или навесить на него аттрибуты

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

Ну взяли Мы это с того что в документации написано что этот ID между сеансами работы NX не меняется, то есть постоянный.

Собственно так это и есть.

Но при тестировании Мы решили изменить модель -> получмли error,

когда разобрались оказалось ,по факту ,что после каждого изменения этот ID меняется .....

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

поэтому никакой гарантии .....

Ссылка на сообщение
Поделиться на других сайтах
int Compare_drf_obj::_ask(int what, tag_t obj_tag)
{
char *handle, *file_data;
unsigned int id, ver;

handle = UF_TAG_ask_handle_of_tag (obj_tag);
UF_CALL(UF_TAG_decompose_handle( handle, &file_data, &id, &ver));
UF_free(handle);
UF_free(file_data);
if (what == ID) return id;
if (what == VERSION) return ver;
return -10;
}

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

Ну взяли Мы это с того что в документации написано что этот ID между сеансами работы NX не меняется, то есть постоянный.

Собственно так это и есть.

Но при тестировании Мы решили изменить модель -> получмли error,

когда разобрались оказалось ,по факту ,что после каждого изменения этот ID меняется .....

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

поэтому никакой гарантии .....

Так гарантии все равно нет - пользователь может просто удалить этот объект

и Вы его не найдете

Если так хотите спрятать что-то от пользователя сделайте UDO и добавте Ваш объект в owning link

можно еще в link типа 1 (см док) - чтоб вычищалось все при удалении

В UDO можете положить необходимую Вам информацию

Тут уж обычный пользователь точно до аттрибутов не доберется

Если только UGII_DISPLAY_DEBUG ему поможет

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

Если только UGII_DISPLAY_DEBUG ему поможет

Исключительно в целях самообразования, а что за переменная UGII_DISPLAY_DEBUG? Посмотрел в ugii_env.dat - ее там нет.
Ссылка на сообщение
Поделиться на других сайтах

to nut888

Вот как раз ситуацию с удалением и обыгрываем ....

Алексей! Большое СПАСИБО !!!

Судя по всему заработает как надо (ещё не проверили)

Теперь стало понятно что handle_of_tag это не просто ID(tag),

а код в котором зашифровано много информации в том числе и нужный ID.

ещё раз СПАСИБО .....

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

to nut888

присоединяюсь к avd :

Исключительно в целях самообразования, а что за переменная UGII_DISPLAY_DEBUG?

Тоже интересно ....

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

to nut888

Вот как раз ситуацию с удалением и обыгрываем ....

Алексей! Большое СПАСИБО !!!

Судя по всему заработает как надо (ещё не проверили)

Теперь стало понятно что handle_of_tag это не просто ID(tag),

а код в котором зашифровано много информации в том числе и нужный ID.

ещё раз СПАСИБО .....

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

to nut888

присоединяюсь к avd :

Исключительно в целях самообразования, а что за переменная UGII_DISPLAY_DEBUG?

Тоже интересно ....

Если установить переменную окружения

UGII_DISPLAY_DEBUG=1 (К внешней документации это не относится этого там нет и не будет никогда)

то в Help кажется появится новое приложение

Debager для анализа prt

Им в частности очень удобно смотреть номера tag выбирая с экрана объекты

Поля структур связанных с объектами

тип, ссылки на другие объкты, аттрибуты occurencs ....

Удобно также искать объекты на экране по известному tag

Вообще большое приложение точнее сборник приложений

Да кстати по поводу удаления

С помощью UDO

в принципе можно сделать так что вы объект который создали своей программой

только своей программой и удалите и никак иначе

Выбирать при этом его будет можно

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

Если установить переменную окружения

UGII_DISPLAY_DEBUG=1 (К внешней документации это не относится этого там нет и не будет никогда)

то в Help кажется появится новое приложение

Debager для анализа prt

Им в частности очень удобно смотреть номера tag выбирая с экрана объекты

Поля структур связанных с объектами

тип, ссылки на другие объкты, аттрибуты occurencs ....

Удобно также искать объекты на экране по известному tag

Вообще большое приложение точнее сборник приложений

:lighten::blink:

Век живи век учись, а помирать не охото!

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

2 All

При этом не стоит забывать о том, что после save as или clone, сохраненный в виде строки (как значение атрибута или строка в UDO ) Persistent Handle в новой части будет невалидным :(

Regardzzz ...

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

по поводу handle'ра:

например:

RMmyfilename_R01235879

первая его часть - имя файла (кроме RM)

вторая\(начиная с "_R") - идентификатор объекта (этот идентификатор всегда постоянный, не меняется после перезугруки файла)

достаточно запомнить вторую часть handle'ра

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

2 AVetal

НЕ достаточно запомнить вторую часть handle'ра :)

Быстрый пример:

Я просканил тестовую часть (сборка) через UF_OBJ_cycle_all и вытащил UF_TAG_ask_handle_of_tag для каждого тега и

распечатал в формате "handler / char".

смотрим, что получилось ...

RM_sub_machinetool.prt R000003fe00000021 / 26763

[skipped]

RM_sub_machinetool.prt O00091eb300000000 / 155897

[skipped]

CM_sub_machinetool.prt C0000031d00000024 / 26583

при этом

"_R" - это "линии, sheet body, etc"

"_O" - это LightWeightOccurence

"_C" - это FeatureRecords

соответственно, я НЕ могу рекомендовать запоминание второй части handler-a как универсальный способ идентификации, так как непонятен префикс, который надо подставить перед этой толпой цифр для восстановления тега :)

PS Ой, сорри, вот я натупил-то ... :) - можно же с префиксом и запомнить. а я только на цифровую часть глядел почему-то ....

PPS Мда, ещё раз глянул на дамп - все-таки я прав :) ... второй части все-равно недостаточно. Сравни :

RM_sub_machinetool.prt O00091eb300000000 / 155897

CM_sub_machinetool.prt C0000031d00000024 / 26583

поэтому без дополнительного парсинга первой части handler-a все равно не обойтись ;)

Regardzzz ...

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

Первую часть можно узнать у любого объекта открытого файла, а вторую (которую запомнили) присоединить. Результат - tag объекта, который и нужен.

По поводу второй части - это hex-число (O00091eb300000000 -> 91eb3) имени объекта в журнале, если его перевести в десятичное, то можно узнать, как объект называется для .NET

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • IGor2D
      По итогу...: По гарантии приехали и поправили только точность реза, остальное не смогли исправить, нужен инженер с HSG. Глючный однако китаец, пытается сам себя сломать.
    • Gmv
      По кнопке FTP стойка имеет 6 страниц для трех разных хостов. Где можно указать IP , имя, пароль 1страница. каталог 2 страница. Больше настроек не нашел.
    • gudstartup
      на фануке настраиваете доступ по ftp на соответствующей вкладке  и также расшариваете папку  вашим сервером и все прекрасно работает.
    • gudstartup
      симулятор предполагает взаимодействие как с чпу так и со станком посредством другой plc программы иначе вам придется самому управлять входами и выходами а это непросто.    
    • Gmv
      У кого есть опыт организации FTP именно на станке? Стойка 0i-MF plus   Сейчас пока сервер настроен на компе, и то не до конца. файлы видны, извлечь их или скопировать в память станка не выходит. Но операторы уже сразу возмущены,  им проще бегать с USB флешкой и нажимать одну кнопку, чем прыгать по папкам. На хаасе это реализовано классно, он создает сетевой диск и полный доступ и со стойки с пк. Хотелось бы подобного.
    • Guhl
      Я нормально проекты писал и отлаживал на эмуляторе Балт-Систем На Heidenhain, насколько я понял, работает симулятор с их сайта в связке с PLC design @gudstartup пользовался этим вот в этой ветке
    • ID_Hacker
      Ну уж балт-систем то не надо сюда. Там такое ущербное всё, что аж страшно вспомнить. Haidenhain эмулятор где взять, подскажете? А как отработать взаимодействие между NC и PLC, действия где работают и оси и механизмы электроавтоматики. Сам хочу попробовать Run my virtual machine, да всё времени нет.
    • Bot
      Данное приложение разработано на языке Visual Basic с использованием программного интерфейса NX Open API и предназначено для использования в САПР Siemens NX, начиная с версии 2000. Стиль интерфейса пользователя идентичен стилю САПР Siemens NX. View the full article
    • Jesse
      @ГЕЛА Ещё можно посчитать в балках и учесть влияние отверстия через коэффициент концентрации напряжений..) Но у вас отверстие на всю стенку, так что лучше, проще и быстрее посчитать всё это дело в оболочках как выше сказали. Скругления перехода от стенки к полке удалите и в запас считайте.
    • 5axisCNC
      Можно плоскость дна задать множеством вариантов например точка направление
×
×
  • Создать...