Tech-Ecke / CATScript/VBS Inhalt / Products (Zusammenbauten -ZB)

 

Products (Zusammenbauten - ZB)

Seiteninhalt:  
  Dokumenten-Eigenschaften von Parts und Products auslesen
  Parts und Products eines Products ermitteln (nur erste Ebene)
  Alle Parts und Products eines Products ermitteln (über Selection Search)

Das zu einer Instanz gehörige Dokument ermitteln
  Products von Parts unterscheiden
  Position eines Products/Parts innerhalb eines Products ermitteln (Transformationsmatrix)
  Open in New Window
  Alle Dokumente der aktuellen Catia-Sitzung ermitteln


 

Dokumenten-Eigenschaften von Parts und Products auslesen


Über das Dokument (Part/Product):

  set Dok = CATIA.ActiveDocument

MsgBox Dok.Product.PartNumber  ' Partnumber
MsgBox Dok.Name                       ' Dateiname
MsgBox Dok.FullName                  ' Dateiname + Pfad

MsgBox Dok.Revision                     ' Properties -> Revision
MsgBox Dok.Definition                    ' Properties -> Definition
MsgBox Dok.Nomenclature             ' Properties -> Nomenclature
MsgBox Dok.Source                       ' Properties -> Source -> Unknown = 0, Made = 1, Bought = 2
MsgBox Dok.DescriptionRef            ' Properties -> De
scription/Comment
 

Über die Instanz:

  Sub CATMain()

set
DokInst = CATIA.ActiveDocument.Product.Products.Item(1' erstes Bauteil eines Products

MsgBox DokInst.Name                    ' Instance Name
MsgBox DokInst.DescriptionInst       ' Instance Description/Comment
MsgBox DokInst.DescriptionRef        ' Document Description

set Dok = DokInst.ReferenceProduct.Parent.Product

MsgBox Dok.PartNumber   ' Partnumber
MsgBox Dok.Name                       
' Document Name
MsgBox Dok.FullName                   ' Dateiname + Pfad
MsgBox Dok.Revision                     ' Revision
MsgBox Dok.Definition                    ' Definition
MsgBox Dok.Nomenclature             ' Nomenclature
MsgBox Dok.Source                       ' Source -> Unknown = 0, Made = 1, Bought = 2
MsgBox Dok.DescriptionRef            ' Document De
scription/Comment

End Sub

 


 

Parts und Products eines Products ermitteln (nur erste Ebene)

Wie in der Überschrift vermerkt wird hier nur die erste Ebene betrachtet.

  Sub CATMain()

set TopProd = CATIA.ActiveDocument.Product
for i = 1 to TopProd.Products.Count  
   MsgBox TopProd.Products.Item(i).Name  ' gibt den Instanz Namen aus
next

End Sub
 


 

Alle Parts und Products eines Products ermitteln (über Selection Search)

Mit der folgt gezeigten Methode werden alle Instanzen, der in der Produktstruktur verwendeten Dokumente erfasst.

Siehe auch: Alle Dokumente des aktiven Products in ein Array schaufeln

  Sub CATMain()

set Sel = CATIA.ActiveDocument.Selection
Sel.Search "(CATProductSearch.Product),all"

for i = 1 to Sel.Count  
   set DokInst = Sel.FindObject("CATIAProduct")
   MsgBox DokInst.PartNumber   ' gibt die PartNumber (Name) aus
next

End Sub
 

 


 

Das zu einer Instanz gehörige Dokument ermitteln

Wenn man eine Produktstruktur über Selection Search erfasst, so bekommt man nicht direkt sie Dokumente sondern deren Instanzen. Um von der Instanz zum eigentlichen Dokument zu kommen benutzt man: ".ReferenceProduct.Parent"

  set DokInst = CATIA.ActiveDocument.Product.Products.Item(1' die erste Bauteilinstanz eines Products

set Dok = DokInst.ReferenceProduct.Parent ' hier wird das dazugehörige Dokument ermitteln
 


 

Products von Parts unterscheiden

Catia unterscheidet zunächst nicht zwischen Product und Part, beide Dokumenttypen werden als Product gehandelt. Mit folgendem Code lässt sich herausfinden ob es sich um ein Part oder Product handelt.

Abfragen des aktiven Dokuments:

  Sub CATMain()

set Dok = CATIA.ActiveDocument

If
TypeName(Dok) = "PartDocument"   then    MsgBox "ich bin ein Part"
If TypeName(Dok) = "ProductDocument"   then    MsgBox "ich bin ein Product"

End Sub
 


 

Position eines Products/Parts innerhalb eines Products ermitteln (Transformationsmatrix)

  Sub CATMain()

dim pos(11)

set ErstesPart = CATIA.ActiveDocument.Product.Products.Item(1)
ErstesPart.Position.GetComponents pos

Origin Point

msgbox "Origin Point: X= " &pos(9) &" Y= " &pos(10) &" Z= " &pos(11)
''Transformation x,y und z
msgbox "Transformation: " &pos(0) &" " &pos(1) &" " &pos(2) &" " &pos(3) &" " &pos(4) &" " &pos(5) &" " &pos(6) &" " &pos(7) &" " &pos(8)


End Sub
 


Open in New Window

Die Funktion "Open in New Window" steht im CATScript nicht zur Verfügung, man muss das Dokument nochmals, über dessen Dateinamen öffnen.

  Sub CATMain()

set Sel = CATIA.ActiveDocument.Selection
Sel.Clear
Sel.Search "Name='Part1.1',all"

set Bauteil = Sel.Item(1).Value   ' das erste Part im Product

DateiName = Bauteil.ReferenceProduct.Parent.FullName
set Dok = CATIA.Documents.Open(DateiName)

End Sub
 


 

Alle Dokumente der aktuellen CATIA-Sitzung ermitteln

Mit folgendem Script werden alle geladenen Dokumente der aktuellen Sitzung erfasst - Parts, Products, Drawings...

  Sub CATMain()

for n = 1 to CATIA.Documents.Count
   set Dokument = CATIA.Documents.Item(n)
   for i = 1 to Dokument.product.products.Count
      set InstDokument = Dokument.product.products.item(i)
      MsgBox InstDokument.Name ' Ausgabe alle Instanznamen
   next
next

End Sub
 

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 20.02.2016]