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

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 пользователей

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




×
×
  • Создать...