Code:
Sub CATMain()Dim E 'As Object
Dim MySelection 'As Object
Dim MyDoc
Dim Was(1)
Dim ZSB 'as integer
'Beginn der Routine
'Hier wollen wir herausfinden, ob ich mich in einer Part, GSD oder sonsigen "bearbeitenden" Workbench befinde
ZSB = 1
If Catia.GetWorkbenchID = "PrtCfg" or Catia.GetWorkbenchID = "CATShapeDesignWorkbench" Then
ZSB=0
End If
'Ab hier arbeiten geht es mit der Selektion sowie der Bearbeitung der selektierten Elemente weiter.
Set MyDoc = CATIA.ActiveDocument
Set MySelection = MyDoc.Selection
MySelection.Clear
Was(0) = "Product"
Was(1) = "Part"
'Wenn Selektion in einer Part-Workbench stattfindet wird in die folgende Unterroutine (if) gewechselt ansonsten (else)
if ZSB = 0 then
Was(0) = "Part"
Was(1) = "Part"
E = MySelection.SelectElement3(Was, "Bitte Part selektieren", False, CATMultiSelTriggWhenUserValidatesSelection, True)
else
Was(0) = "Product"
Was(1) = "Part"
'Hier erfolgt die Eigentliche Selektion durch einen User innerhalb des geöffneten Products.
'Die Selektion kann sowohl Parts als auch Products umfassen.
E = MySelection.SelectElement3(Was, "Bitte Product oder Part selektieren selektieren", False, CATMultiSelTriggWhenUserValidatesSelection, True)
end if
If E = "Normal" Then
Pfad = ""
For I = 1 to MySelection.Count
If ZSB = 0 Then
Temp=MySelection.Parent.fullname 'Ausgabe des kompletten Pfades in den Parameter Truename
else
On Error Resume Next
set Truename = MySelection.Item(I).value
Temp = Truename.ReferenceProduct.Parent.FullName
'MsgBox("Felhermeldung " & Err.Description) 'Detektion, ob Selektion ein nicht geladenes Part geladen ist. Dies wird über die Auswertung der Fehlermeldung relaisiert.
If Err.Description = "Typenkonflikt" or Err.Description = "The method ReferenceProduct failed" then 'Detektion das ein Part selektiert wurde
'Ab hier haben wir erkannt, dass ein nicht geladenes Part in der Schleife ist.
'Ab Hier ist ein Teil deines letzten Eintrages "verbaut".
'Die eigentliche Selektion der Elemente aus der Struktur erfolgt 15 zeilen weiter oben.
Dim oRootDoc 'As Document
Dim osel 'As Object Selection
Dim oSelFilter(1)
Dim AB 'As String
Dim oSelectedProduct 'As Product
Dim oParentProduct 'As Product
Set oRootDoc = CATIA.ActiveDocument
Set osel = oRootDoc.Selection
oSelFilter(0) = "Product"
oSelFilter(1) = "Part"
AB = osel.SelectElement2(oSelFilter, "Bitte nichts selektieren, da die Selektion schon eher erfolgt ist.", True)
If AB = "Normal" Then
Set oSelectedProduct = osel.Item(I).Value
Set oParentProduct = osel.Item(I).LeafProduct
oParentProduct.ApplyWorkMode DEFAULT_MODE
End If
Temp = Truename.ReferenceProduct.Parent.FullName
End If
End If
MsgBox("Speicherpfad kpl: " & Temp)
Next
Else
MsgBox "Abbruch"
End If
End Sub