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

NXOpen: save as в Teamcenter


AleksandraN

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

Подскажите пожалуйста, если кто сталкивался. Необходимо просто сохранить деталь из Teamceter с новым номером (создать новый item), при записи журнала сообщается, что эта функция полностью не запишется. При попытке использования того, что записалось деталь не пересохранялась. Что вобщем-то и понятно потому что в журнале процесс выглядел как

1) создание билдера

nxopen.pdm.PartFromPartBuilder partFromPartBuilder1;

partFromPartBuilder1 = theSession.parts().pdmpartManager().newPartFromPartBuilder();

2)

partFromPartBuilder1.createNonmasterList();

Создание списка не-мастер деталей??? Вообще не понятно, что эта функция делает, вроде ничего не возвращает и ничего не принимает (в аргументы)

3)

создание некой "спецификации" детали ??? Причем последний аргумент, где должно быть имя файла - пустая строка

partFromPartBuilder1.createPartSpec("I8_Part", "wwwppp_5555","001", "master", "");

4) и все, коммит, диспоз билдера

partFromPartBuilder1.commit();

partFromPartBuilder1.dispose();

partFromPartBuilder1 = null

Если смотреть создание новых деталей в TC, то там используется класс newFile, но попытки как-то притянуть его сюда не увенчались успехом. Были попытки использовать все возможные методы для partFromPartBuilder, но или ничего не происходило, или NX вылетал, периодически с ошибой "Runtime Error! -pure virtual function call".

Плюнув на NXOpen полезла в uf_ библиотеку, там в описании функции UF_UGMGR_convert_name_from_cli, были такие слова:

"Note that UF_PART_new, UF_PART_open and UF_PART_save_as

accept an input part file name in the command line input format

without conversion",

ну по идеи это значит что можно "сохранить как" деталь из тимцентра просто функцией UF_PART_save_as, только как аргумент ей дать имя ввиде "@DB/12345678/001", но и это не сработало NX опять вылетел.

Вот и может кто знает или в каком порядке вызывать методы для partFromPartBuilder и что можетеще добавить, или что все таки нужно задать в качестве аргумента UF_PART_save_as (потому как судя по цитате из хелпа функция должна работать и с деталями из TC). Два дня уже с этим вожусь, уже не знаю что придумать, помогите чем можете :sad:

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


В дополнение: функцией UF_PART_SAVE_AS удалось сохранить как деталь на локальный диск - если задать имя просто newMyPart, например, без @DB ( но мне это не надо). Вопрос - это так сделаны настройки у нас, что программкой в десяток строк можно выкачать все (ну сколько влезет) содержимое из Teamcentr на локальный компьютер, или это вполне нормально и ничего криминального здесь нет?

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

В дополнение: функцией UF_PART_SAVE_AS удалось сохранить как деталь на локальный диск - если задать имя просто newMyPart, например, без @DB ( но мне это не надо). Вопрос - это так сделаны настройки у нас, что программкой в десяток строк можно выкачать все (ну сколько влезет) содержимое из Teamcentr на локальный компьютер, или это вполне нормально и ничего криминального здесь нет?

А на чем Вы тестили

Проверте диск на котором лежат prt

Вы его из windows открыть explorer можете

Скорее всего да раз Ваша программа работает

Но в общем случае работать она не будет

Диск может быть размечен например IMANFS а винда с этим работать не умеет

Потом если Вы запустили свою программу из NX где часть открыта

то она уже загружена на локальную машину

А по остальному смотрите вот это

int UF_UGMGR_decode_part_file_name

(

const char * encoded_name,

char part_number [ UF_UGMGR_PARTNO_SIZE+1 ] ,

char part_revision [ UF_UGMGR_PARTREV_SIZE+1 ] ,

char part_file_type [ UF_UGMGR_FTYPE_SIZE+1 ] ,

char part_file_name [ UF_UGMGR_FNAME_SIZE+1 ]

)

int UF_UGMGR_encode_part_filename

(

char * part_number,

char * part_revision,

char * part_file_type,

char * part_file_name,

char encoded_name [ MAX_FSPEC_SIZE+1 ]

)

Или аналогичнвые функции из NXOpen

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

А на чем Вы тестили

Проверте диск на котором лежат prt

Вы его из windows открыть explorer можете

Скорее всего да раз Ваша программа работает

Но в общем случае работать она не будет

Диск может быть размечен например IMANFS а винда с этим работать не умеет

Потом если Вы запустили свою программу из NX где часть открыта

то она уже загружена на локальную машину

А по остальному смотрите вот это

int UF_UGMGR_decode_part_file_name

(

const char * encoded_name,

char part_number [ UF_UGMGR_PARTNO_SIZE+1 ] ,

char part_revision [ UF_UGMGR_PARTREV_SIZE+1 ] ,

char part_file_type [ UF_UGMGR_FTYPE_SIZE+1 ] ,

char part_file_name [ UF_UGMGR_FNAME_SIZE+1 ]

)

int UF_UGMGR_encode_part_filename

(

char * part_number,

char * part_revision,

char * part_file_type,

char * part_file_name,

char encoded_name [ MAX_FSPEC_SIZE+1 ]

)

Или аналогичнвые функции из NXOpen

Проблема с сохранением оказалась (так я думаю) в связанных атрибутах nx и TC (которые автоматически заполняются при создании детали из-под TC). Так на виртуалке с голым тимцентром save_as работала без проблем с атрибутом ввиде ("@DB/12345part/A"), на рабочем же месте при попытке сохранить с новым именем ("@DB/12345part/001") nx вылетал, при попытке задать ("@DB/12345part/А") деталь вроде как пересохранялась, но нормально ее закрыть нельзя было, из-за того что связанные атрибуты у этой детали (номер, имя) оставались такими же как у первоисточника.

Решилась проблема все же с помощью NXOpenской библиотеки:

nxopen.pdm.PartFromPartBuilder partFromPartBuilder1;

partFromPartBuilder1 = theSession.parts().pdmpartManager().newPartFromPartBuilder();

partFromPartBuilder1.createPartSpec("I8_Part", "wp_88888888768", "001", "master", "");

nxopen.pdm.DatabaseAttributeManager databaseAttributeManager4;

databaseAttributeManager4 = partFromPartBuilder1.newDatabaseAttributeManager();

databaseAttributeManager4.setAttribute("DB_PART_DESC", "деталь8888888876");

databaseAttributeManager4.storeAttributes();

databaseAttributeManager4.dispose();

databaseAttributeManager4 = null;

partFromPartBuilder1.commit();

partFromPartBuilder1.dispose();

Как оказалась без создания nxopen.pdm.DatabaseAttributeManager деталь пересохраняться не хочет. Ну и процесс затянулся тем что долго пыталась сохранить деталь под уже существующим номером, и удивлялась на какой же третий аргумент ругается :doh: Для создания новой детали тоже оказалось необходимо в обязательном порядке создавать nxopen.pdm.DatabaseAttributeManager :smile:

Все равно волнует вопрос по выкачиванию информации из TC, вот вроде закрыли всем экспорт из TC, закрыли именованные ссылки в TC, запись данных из tc на диски по служебкам - типа безопасность. Если ручками делать "сохранить как" в nx из-под tc сохрать можно только в tc, логично было бы, при таком раскладе, чтоб и для програмного доступа сохраниние ограничивалось tc? Или вся эта игра в безопасность вообще не имеет смысла :dry: .

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

....

Все равно волнует вопрос по выкачиванию информации из TC, вот вроде закрыли всем экспорт из TC, закрыли именованные ссылки в TC, запись данных из tc на диски по служебкам - типа безопасность. Если ручками делать "сохранить как" в nx из-под tc сохрать можно только в tc, логично было бы, при таком раскладе, чтоб и для програмного доступа сохраниние ограничивалось tc? Или вся эта игра в безопасность вообще не имеет смысла :dry: .

Смотрите в сторону ADA (в Teamcenter) и совместного её использования с NX и получите Вы свое счастье, не только выкачать не получится но еще и запишет в системный журнал о попытке.
Ссылка на сообщение
Поделиться на других сайтах
  • 2 года спустя...

чтобы не открывать другую тему. Тоже проблема с Save As. Нужно сохранить спецификацию в другой существующий item revision. Когда делаю интерактивно, все получается, а программно - createPartSpec вылетает с ошибкой 940117 (такой айтем существует).  NX 8.5.3.3, TC 8.3.3.9.

пример:

partFromPartBuilder1.createPartSpec("Item", "Existing_item", "Existing_rev", "specification", "new_ugpart_name");

Кто-то сталкивался?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • kkk
      Решения не знаю, знаю костыль - переключить вид в режим "в цвете", тогда штриховку видно. После оформления переключить обратно.
    • Сержи
      Так научитесь сначала понимать! (с)   Если спрашивают значит нужно, мне тоже нужна такая функция
    • clavr
    • gudstartup
      вот вам поменьше для пробы https://disk.yandex.ru/d/o3CMRExu2M7J9Q залейте winhex или hddrawcopy.    пока карту не откроете их и не будет
    • MagicNight
      Поищу образы. Нашел, там образ для 512 мгб, а у меня 256. Как быть? Со станком карты не было! Карту купили на Авито. Фирма Wintec на 256 мегабайт. Industrial Grade Made in USA. А у меня таких опция (которые вы указали стрелкой) нет!
    • gudstartup
      заходите в каталог карты жмете выбираете параметры и создаете контейнер нужного вам размера   найдите тут образы выкладывали и вылечите вашу карту карта со станком шла?
    • Alexey8107
      Вобщем 0166 150А погонял. На +30 амперах +0,3 вольта, на -30 уже -0,3(при нуле 2.58, датчик битый однозначно). На 165 150А тоже замерил при тех же условиях +30 здесь +0.33 вольта, -30 это -0.33(что несколько расходится с вашими замерами, на нуле 2.5). Видимо оба датчика подбиты. Первый по смещению, второй с виду нормальный(точно такой же как у вас), но показания завышает относительно ваших замеров. Либо могли сказаться какие то условия, например лишний виток, хотя пересчитывал. Либо провод навит был чуть по другому или уложен не совсем так. Больше похоже на лишний виток, видимо профукал. Для обоих датчиков выбирал значения 1 ампер, 10 ампер, 20, 30 и -30. Оба датчика в этом диапазоне линейны. В итоге вместо 0166 150А решил таки подкинуть 0165 150А. Принципиальной разницы я в них не увидел. Теперь поведение шпинделя изменилось кардинально, разгон и торможение стали более менее адекватные 2-3 секунды(при старом датчике было секунд 15). Вобщем оператор сейчас загрузит вал-шестерню и попробует под нагрузкой. Будет держать обороты, значит все норм...
    • MagicNight
      Не отображается.
    • gudstartup
      содержимое карты должно отображаться
    • Kelny
      Слева чуть ниже есть раздел ПАРАМЕТРЫ, где имеется галочка ОТОБРАЗИТЬ ВСПЛЫВАЮЩЕЕ ДИАЛОГОВОЕ ОКНО, но оно как раз сделано для удобства, что бы не бегать в левую панельку, а сразу перед носом можно было выбрать нужное сопряжение.
×
×
  • Создать...