Code:
'---------------------------------------------------------------------------------------
' Procedure : GetSelDoc
' Author : jherzog
' Date : 28.10.2015
' Time : 16:05
' Languages : VBA 6.5
' V5-Release: V5R19/21
' Purpose : Interactively select a document(product, part or drawing)
' Parms : -
' Ret. Value: the selected doc object
'
' Syntax : GetSelDoc
'
' Prereqs : an open doc
' Remarks : -
'---------------------------------------------------------------------------------------
'
Public Function GetSelDoc() As Object
Dim oSel 'As Selection
Dim arrSelWhich(2)
Dim Status As String
Dim oPP
Dim i As Integer On Error GoTo GetSelDoc_Error
AppActivate CATIA.Caption, False 'switch to catia
arrSelWhich(0) = "Part" ''part' needs to be part first?!
arrSelWhich(1) = "Product" 'otherwise only products will be allowed
arrSelWhich(2) = "DrawingRoot"
Set oSel = CATIA.ActiveDocument.Selection
oSel.Clear
Status = oSel.SelectElement2(arrSelWhich, "Select Part, Product or Drawing / Push Escape to cancel", False)
If (Status = "Normal") Then
Set oPP = oSel.Item2(1)
Select Case oPP.Type
Case "Part"
Set GetSelDoc = oPP.Value.Parent
Case "Product"
Set GetSelDoc = oPP.Value.ReferenceProduct.Parent
Case "DrawingRoot"
Set GetSelDoc = oPP.Document
End Select
ElseIf Status = "Cancel" Then
CATIA.StatusBar = "Selection cancelled by user"
AppActivate frmParmDoc.Caption, False
End If
oSel.Clear
Exit Function
'---------------------------------------------------------------------------------------
GetSelDoc_Error:
Dim errMsg As String
Dim errRet As VbMsgBoxResult
Select Case Err.Number
' Case 438 'ApplyWorkMode causes error if already set
Resume Next
' Case -2147467259
Case Else
errMsg = Err.Number & ": " & Err.Description & " in procedure GetSelDoc"
errRet = MsgBox(errMsg, vbOKOnly, "GetSelDoc")
End Select
'Resume Next 'fall thru to quit sub
'---------------------------------------------------------------------------------------
End Function