Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Dokumenty navázané na CATDrawing

Kompletní přehled příspěvků v tématu Dokumenty navázané na CATDrawing řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Břeťa Doležal

Poslat zprávu | Profil
Datum: 23.11. 2015 | Zobrazeno: 9476x
Konfigurace CATIA: V5 R19

Text dotazu:
Zdravím, snažím se vyzískat informaci o zdrojových CATPartech a CATProduktech, ze kterých je vytvořený CATDrawing. Níže je i část kódu. Možná jsem si vybral příliš krkolomnou cestu. U mého postupu jsem narazil na problém, že nevím jak u pohledu, který je generovaný ze scény určit Product objekt. Nevíte někdo jak se dostat ze Scena na Product? Eventuelně budu rád, pokud se se mnou podělíte o jiný lepší způsob jak zjisit všechny CATParty a CATProdukty, které jsou použity pro tvorbu výkresu. Díky.



For Each locfView As DrawingView In locViews
If locfView.ViewType = CatDrawingViewType.catViewMain Or locfView.ViewType = CatDrawingViewType.catViewBackground Then
'skip views #1(sheet level) and #2(Background View)
Else
'jedná se o generovaný pohled z 3D?
If locfView.IsGenerative() Then
locGenLink = locfView.GenerativeLinks
locGenBeh = locfView.GenerativeBehavior
'strLinkName = locGenLink.FirstLink.Name
strTyp = TypeName(locGenBeh.Document)

If strTyp = "Product" Then
strLinkName = locGenBeh.Document.Parent.FullName.ToString
locDoc = CType(locGenBeh.Document.Parent, INFITF.Document)

ElseIf strTyp = "Body" Then
bdyBody = CType(locGenBeh.Document, Body)
'Body -> Bodies -> Part -> Document
'Body Doc. -> Parent -> Parent -> Parent
strLinkName = locGenBeh.Document.Parent.Parent.Parent.FullName.ToString
locDoc = CType(locGenBeh.Document.Parent.Parent.Parent, INFITF.Document)

ElseIf strTyp = "ProductScene" Then
'Set oScenes = oProdDoc.Product.GetTechnologicalObject("ScenesCollection")
strTyp = TypeName(locGenBeh.Document)
pdScene = CType(locGenBeh.Document, ProductScene)
strTyp = TypeName(locGenBeh.Document.Parent.Parent)

'ZDE NEVÍM............NEVÍM.............JAK SE DOSTAT NA PRODUCT

End If

If TypeName(locDoc) = "ProductDocument" Then
locSubComp = StoreProductInfo(CType(locDoc.Product, Product))
ElseIf TypeName(locDoc) = "PartDocument" Then
locSubComp = StorePartInfo(CType(locDoc.Part, Part))
Else
'ani Part ani Product, tak nic nedělej
End If

blnIsInList = False

If loclstSubComp.Count > 0 Then
For i As Integer = 0 To loclstSubComp.Count - 1
If loclstSubComp(i).CADNumber = locSubComp.CADNumber Then blnIsInList = True
Next i
End If

If Not blnIsInList Then loclstSubComp.Add(locSubComp)

'blnNextLink = True

'Do While blnNextLink
' Try
' strLinkName = locGenLink.NextLink.Name
' If Not loclstStr.Contains(strLinkName) Then loclstStr.Add(strLinkName)
' Catch ex As Exception
' 'již není Next link -> vypnout smyčku
' blnNextLink = False
' End Try
'Loop

End If
End If

Next locfView

Ing Jan Cinert

Poslat zprávu | Profil
[#5480] | Publikováno: 23.11. 2015 - 15:02
Dobrý den,

použitý způsob je OK, sám to zjišťuju úplně stejně, resp. ono to asi ani jinak nejde. Metoda Next je dost hloupě napsaná, nechápu pro linky nejsou standardně jako kolekce.

Momentálně se chystám na přípravu utility, která by měla zjišťovat to samé - mě bude zatím stačit jen vědět, jestli je link na scénu či na něco jiného.

V dokumentaci je napsáno, že objekt Scene by měl mít metodu GetPartNumber, z čehož už by mělo jít vytáhnout dokument (i kdyby se měla vytáhnout celá mapovací tabulka Products - PartNumbers).
Břeťa Doležal

Poslat zprávu | Profil
[#5483] | Publikováno: 24.11. 2015 - 07:27
Scene.GetPartNumber mi nefunguje :-(. V dokumentaci jsem to také viděl, tak nevím...

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#5487] | Publikováno: 24.11. 2015 - 14:14
Aha...

A nefunguje vůbec nebo jen není v nabídce metod? Kdyby se objekt scény deklaroval jako typ Object a pak se zkusila metoda GetPartNumber použít tak to taky neprojde?

Otázka je, jestli objekt scény získaný z linku je to samé co scéna v sestavě. Víme jako to kolikrát funguje ... :-)

Zkusil to viz výše, nebo získat objekt scény ze sestavy (GetWorkbench("SceneWorkbench")) a pak ho porovnat s objektem co vrátí link z výkresu.
Břeťa Doležal

Poslat zprávu | Profil
[#5498] | Publikováno: 01.12. 2015 - 08:31
Na sceně z výkresu GetPartNumber neexistuje vůbec. A na scéně ze sestavy zkusím, až pořeším problémy spojené s přechodem na 64bitovou CATII.
Ing Jan Cinert

Poslat zprávu | Profil
[#5500] | Publikováno: 01.12. 2015 - 13:52
A zkoušel jste to? To že ji nenabídne intelisense nebo jak se ten našeptávač Visual Studia jmenuje ještě neznamená, že metoda nefunguje.

Uvedu příklad: U měření (objekt SPAWorkbench) je metoda GetMeasurable, kterou to taky nenabídne, ale funguje.

V příloze popis z dokumentace.

Přiložené obrázky:



Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.