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

 

Products (Zusammenbauten - ZB)

Seiteninhalt:  
  Alle Part- und Product-Dokumente ermitteln (über Selection Search)

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


 

Alle Part's und Product's 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
 




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:

  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

MsgBox Dok.Name                       
' Document Name
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

 


 

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]