Страница 1 из 1
Получить список файлов входящих в CATProduct

Добавлено:
07 окт 2010 19:09
smbdie
В общем есть такое задание, нужно получить список файлов которые входят в сборку CATProduct?
При условии если нет CATPart оторые в нее входят, нужно просто получить имена файлов...
если Парты лежат то могу получить, а если их нет, то ни как не могу найти нужные методы.
Заранее спасибо.
Re: Получить список файлов входящих в CATProduct

Добавлено:
07 окт 2010 21:13
RIMs
нужно просто получить имена файлов
я не понял вопрос, какие файлы имеются ввиду? В сборку могут входит Продукты или Парты, если сборка пустая, имена каких файлов вы ппытаетесь получить?
Re: Получить список файлов входящих в CATProduct

Добавлено:
08 окт 2010 08:36
smbdie
В общем так.
Есть сборка(*), допуским она состоит 2 катпарт, и 1 катпродукт в который входит еще что ни будь.
Так вот, задача состоит в следующем, нужно получить имена файлов катпарт, и катпродукт входящих в сборку *, имея лишь файл катпродукт*, и не имея остальных частей сборки.
Если я пытаюсь открыть катпродукт в кате, рядом с которым не лежат ее катпарпы, то катя просит указать путь до недостающих компанентов.
Она знает имена файлов катпартов которые входят в данную сборку:)
Мне как раз нужно их узнать:)
Re: Получить список файлов входящих в CATProduct

Добавлено:
09 окт 2010 03:39
RIMs
1. Создал Продукт в катии Product1, закинул в него два Парта Part1 & Part2, сохранил локально на диске в папке "1", закрыл катию
2. Зашел на дискев папке "1", вырезал оттуда Part1 & Part2, создал на диске создал папку "2", вставил туда вырезанные парты
3. запустил катю, открыл из папки 1 Продукт, в нем висят два парта с потерянными линками.
вы такую ситуацию описывали, как считать имена у партов с потерянными линками?
В этом случае просто считывайье имена входящих в Продукт парт, так же как если бы они были заружены
Dim productDocument1 As Document
Set productDocument1 = CATIA.ActiveDocument
Dim product1 As Product
Set product1 = productDocument1.Product
Dim Prods1 As Products
Set Prods1 = product1.Products
iProds1 = Prods1.Count
For i = 1 To iProds1
strRef = Prod1.Name
Next i
полагаю тоже самое должно сработать и для потерянных линков Продуктов. Единственное что, в Продукте с которого вы хотите считать имена Партов на самом деле содержатся имена Инстанс и именно их вы будете считывать.
Re: Получить список файлов входящих в CATProduct

Добавлено:
09 окт 2010 10:11
smbdie
Да я говорю про такую ситуацию, как вы описали:)
Вот только мне это надо сделать на С++ на САА:)
Я думал этот раздел именно по этой теме:):)
Re: Получить список файлов входящих в CATProduct

Добавлено:
11 окт 2010 12:42
booSter
Попробуй так:
- Получаем корневую ассемблюху (spRootAssy)
- Достаём из неё инстансы чаилдов spRootAssy->GetChildren либо spRootAssy->GetAllChildren
- Для каждого чаилда (spSubAssy)
- Достаём список идентификаторов репрезентаций spSubAssy->ListShapeRep
- Для каждого идентификатора репрезентации (iShapeName)
- Добываем репрезентацию (spSubAssy->GetShapeRep(... iShapeName ...))
- У добытой репрезентации (spLnObjOnRep которая есть CATILinkableObject) спрашиваем документ pDocOfRep=spLnObjOnRep->GetDocument
- Из документа достаём имя файла pDocOfRep->StorageName
Правда возможны нюансы с получением документов из линков, связанные с тем, что документы (суб-ассембли, парты) на диске отсутствуют
Re: Получить список файлов входящих в CATProduct

Добавлено:
11 окт 2010 19:47
smbdie
так мне кажется не получится "->GetDocument"
так как Part не загружен в память... значит документа на него нет...
проблему частично решил, с помощью получения PDMxItem(вроде так пишется)
но вот чтото не пойму как из него получить интерфейс CATIProduct или из CATIProduct получить PDMxItem...
Re: Получить список файлов входящих в CATProduct

Добавлено:
12 окт 2010 23:21
booSter
xPDM- вещь заманчивая для таких задачек, но требует наличия соответствующей лицензии на клиентской машине...
Re: Получить список файлов входящих в CATProduct

Добавлено:
12 дек 2010 21:33
smbdie
Снова у меня косяк и нужна помощь...
В общем нужно получить имя файла детали, входящего в сборку, которого нет не диске... (старая задача)
раньше я делал так
Зная что xPDMItem'ов в сборке столько же сколько и CATIProduct и находят они в одном порядке, я просто создавал массив, в котором были CATIProduct и соответствующий ему xPDMItem, но сейчас стали попадаться сборки в которых разное количество xPDM и Product'ов...
можно ли как ни будь их xPDM получить продукт? или наоборот...
Подскажите кто что знает...

Re: Получить список файлов входящих в CATProduct

Добавлено:
13 дек 2010 12:28
bit
А если так:
CATUnicodeString DocFileName;
pCATIxPDMItem->GetDocFileName(DocFileName);
CATDocument * pDoc;
CATDocumentServices::GetDocumentInSession ( DocFilePathName, pDoc);
Дальше получить для документа Root Product
А обратно так:
CATILinkableObject_var spLink = pProduct;
CATDocument* pDoc = spLink -> GetDocument ();
CATIxPDMItem_var spPDMItem;
CATxPDMSessionServices::GetItemFromDocument(pDoc ,spPDMItem);
Re: Получить список файлов входящих в CATProduct

Добавлено:
14 дек 2010 23:06
smbdie
попробывал
CATUnicodeString DocFileName;
pCATIxPDMItem->GetDocFileName(DocFileName);
CATDocument * pDoc;
CATDocumentServices::GetDocumentInSession ( DocFilePathName, pDoc);
если DocFilePathNam нет на диске, получаю нулевой указатель...
CATILinkableObject_var spLink = pProduct;
CATDocument* pDoc = spLink -> GetDocument ();
CATIxPDMItem_var spPDMItem;
CATxPDMSessionServices::GetItemFromDocument(pDoc ,spPDMItem);
CATDocument* pDoc = spLink -> GetDocument ();
получаю указатель на документ сборки (CATProduct), а не на документ детали(CATPart)...
так можно сделать если CATILinkableObject_var spLink = pProduct->GetRefference();
но в этом случае референс опять нулевой указатель, так как детали нет на диске...
