Автоматическое присвоение инвентарного номера

Страницы: 1
RSS
Автоматическое присвоение инвентарного номера, Автоматическое присвоение инвентарного номера в связке Vault + Inventor
Добрый день!
Есть задача по автоматическому присвоению инвентарного номера модели или чертежу, созданному в Inventor. Работу недавно начали вести через Vault, до этого несколько проектов выполнили через сетевые папки.
На прошлой работе работали через Search - там при добавлении любого файла в БД автоматически присваивался инвентарный номер.
Хотелось бы аналогичное получить в связке Vault + Inventor, но не могу найти нигде каким образом.
Как решить задачу?
И кто как присваивает инвентарные номера (машиностроение)? Неужели вручную через журнал?
Зачем вручную - задача решается через API.
У меня например присвоение инв. номера завязано на кнопку печати: если при отправки документа на печать графа инв. номера пуста происходит регистрация - из стека хранения последнего использованного номера(текстового файла) получается новый номер и записывается в чертеж, а также заносится этот номер в картотеку чертежей (экселевский файл) ну и само собой -регистрационная дата.
Я предпочитаю Браип

Мой дед говорил: "делай добро и бросай его в воду..."
Спасибо за подсказку!
Жаль, что нет такой встроенной функции в Vault. По идее PDMсистема ее должна иметь по умолчанию.
Сунулся в Inventor API и VBA - понял что слишком сложно и долго такое писать. Попробовал через ilogic и почти получилось.
При запуске правила заносит инвентарный номер в книгу регистрации в эксель, присваивает занесенное значение свойству чертежа инвентор. Но есть два недостатка:
1. Бился целый день над кодом для проверки наличия чертежа в книги регистрации - чтобы повторно не присвоить инвентарный номер уже записанному чертежу - никак не получилось реализовать. Может подскажете каким образом это можно сделать?
2. Инвентарный номер присваивается свойству инвентор, но для появления в поле чертежа необходимо зайти и выйти в свойства инвентор. Как этот процесс можно автоматизировать?
1. В таблице две колонки: 1 - чертеж, 2 - инв. номер. В цикле ведется перебор всех ячеек таблицы до совпадения номера чертежа. При совпедении номеров по номеру строки переходите к ячейке в колонке 2. Если колонка пуста нужно присвоить новый инв. номер, если нет - цикл закончен.

2. Не понятно в чем у вас проблема - что такое для вас свойство инвентор? Вы работаете со свойствами деталей, сборок и чертежей. Откуда и куда у вас не получается передать данные?
Я предпочитаю Браип

Мой дед говорил: "делай добро и бросай его в воду..."
В таблице у меня много столбцов - она оформлена как журнал регистрации по ГОСТ.
1 колонка - инв.номер
2 колонка - дата
3 колонка - обозначение
И дальше еще несколько колонок.

Код
i = iProperties.Value("Project", "Part Number")
'rt = GoExcel.FindRow("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", "Дата", "=", "", "Обозначение", "=", i)

Do While qq = i
qc = qc + 1
qa = "C" & qc
qq = GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", qa)
   If qc = 1000 Then
      Exit Do
   End If
Loop 

If qq<>i Then   
'If rt<0 Then


Вот таким образом я пытаюсь сделать проверку и у меня не получается. Даже не пойму почему не работает.
Альтернативный вариант закомментирован и он работает пока в колонке "Дата" даты нет. Дату мы присваиваем при сдаче бумажной КД в архив, а инвентарные ставим при создании документа.

По второму пункту получается, что инвентарный номер присваивается и записывается в таблицу эксель и должен записываться в соответствующее поле чертежа, но этого не происходит.
Вот участок кода:
Код
MessageBox.Show("Присвоен инвентарный номер: "  & tt, "Успешное присвоение инвентарного номера")
tt=Right(tt, 6)
aa = "A" & cc
a1 = "C" & cc
a2 = "D" & cc
a3 = "E" & cc
a4 = "F" & cc
a5 = "G" & cc
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", aa) = tt
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", a1) = iProperties.Value("Project", "Part Number")
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", a2) = "1"
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", a3) = ActiveSheet.Size
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", a4) = iProperties.Value("Summary", "Title")
GoExcel.CellValue("Z:\ТЭК\Инвентарная книга.xlsx", "Лист1", a5) = "КТО"
GoExcel.Save
iProperties.Value("Project", "Stock Number") = tt


Для того чтобы в чертеже появился инвентарный номер приходится заходить в редактор свойств документа (ПКМ по документу в браузере и в меня выбирать "свойства инвентор").  Достаточно просто зайти и выйти в "свойства инвентор", чтобы на поле чертежа появился присвоенный инвентарный номер.
Я не люблю лоджик и плохо разбираюсь в его синтаксисе.
Если вы публикуете только участок кода, то добавляйте остальную информацию текстом.

По персому вопросу: какой формат имеют приведенные переменные - "i"  и т.д.
Вы запускали отладчик? Какие данные попадают в переменную "qq"?

По второму вопросу: с каким документом АИ выполняет работу приведенный код? Даталь, сборка или чертеж?
Строка
Код
iProperties.Value("Project", "Stock Number") = tt
уж очень меня смущает, но может для лоджика она и правильно сформулировала...
Как связано свойство "Stock Number" с штампом чертежа? Может просто не хватает комнда update для обновления чертежа?
Я предпочитаю Браип

Мой дед говорил: "делай добро и бросай его в воду..."
Почти все переменные имеют текстовый формат. Я в iLogic не сильно углублялся в плане чтения мануала :) но вроде  тип переменных string.
В отличие от VB в лоджике нет отладчика (по крайней мере я его нигде не нашел), все проверки значений переменных приходится делать через мессаджбоксы.
В данном случае значение переменной qq равняется значению ячейки С1 экселя. Я пробовал даже повторно все переменные (i и qq) привести к текстовому типу, итог все равно один.

Изначально данный код был сделан для чертежа, но в дальнейшем будет расширяться до спецификаций (из Пояснений ЕСКД) и моделей деталей и сборок.
По поводу синтаксиса, забавен он:
tt = iProperties.Value("Project", "Stock Number") - присваивает переменной значение свойства
iProperties.Value("Project", "Stock Number") = tt - присваивает свойству значение переменной

Связь свойства "Stock Number" со штампом идет через шаблон чертежа (по умолчанию). Тут такая петрушка с этими свойствами: значения "свойств инвентор" чертежа соответствуют графам шаблона чертежа. Если заполнять все ручками, то без проблем свойства вносятся в штамп чертежа. Программно многие свойства также вносятся самостоятельно из правила, кроме "Stock Number" - инвентарного номера. И к сожалению я не нашел команды по обновлению чертежа в командах лоджика. Да и иконки соответствующие в инвенторе погашены. Если есть такая команда через VB, то напишите ее пожалуйста, попробую с ней.
Вторую проблему (с отображением инвентарного номер после его присвоения) решил просто и красиво :) Совершенно случайно заметил, что обновление iProperty происходит при сохранении. В итоге в конце кода командой "ThisDoc.Save" сохраняю документ и обновляю свойства :)
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)