By Wayne Brill
You may want to get the status of a file that was opened from Vault. See this blog post for a discussion on a way to do this.
This Inventor 2016 AddIn example uses the EntityStatusImageInfo to get the status of the Inventor active document. The example is only getting the status of a part but could be enhanced to get other file types. (The reason it is only working with parts is because the button is added to the "PMxPartFeatureCmdBar" command bar).
A form is used to display the image returned from this call.
EntityStatusImageInfo.GetImage()
The Graphics.DrawImage() of the Windows.Forms.PaintEventArgs passed into the Paint event for the form is used to show the image on the form.
Download the Inventor Add-In (Visual Studio 2013 project)
Download Vault_Lab_10_Complete_AddIn_Add_To_Ribbon
Click this button the Add-In adds to the ribbon to run the code.
Here is the procedure that gets the vault connection, the name of the active document and then uses a FileIteration to get the status. The FileIteration object is returned by using the name of the document. (that code is not shown here).
Dim myConnection As VDF.Vault.Currency.Connections.Connection = Nothing
' Get the Vault connection from
' the Inventor Vault log in
myConnection =
Connectivity.Application.VaultBase.ConnectionManager.Instance.Connection()
If myConnection Is Nothing Then
System.Windows.Forms.MessageBox.Show _
("Unable to get Vault connection, logged into Vault?")
' Debug.Print("Unable to get Vault connection")
Return
End If
Try
'Get the name of the Inventor active document
Dim strFullNameOfDoc As String =
m_inventorApplication.ActiveDocument.FullFileName
Dim strFileName As String = System.IO.Path.GetFileName(strFullNameOfDoc)
Dim _FileIteration As VDF.Vault.Currency.Entities.FileIteration = Nothing
_FileIteration = getFileIteration(strFileName, myConnection)
If Not _FileIteration Is Nothing Then
Dim props As PropertyDefinitionDictionary =
myConnection.PropertyManager.GetPropertyDefinitions _
(VDF.Vault.Currency.Entities.EntityClassIds.Files, _
Nothing, PropertyDefinitionFilter.IncludeAll)
Dim statusProp As PropertyDefinition =
props(PropertyDefinitionIds.Client.VaultStatus)
Dim _status As EntityStatusImageInfo =
TryCast(myConnection.PropertyManager.GetPropertyValue _
(_FileIteration, statusProp, Nothing), EntityStatusImageInfo)
System.Windows.Forms.MessageBox.Show _
("Status = " & _status.Status.ToString())
_img = _status.GetImage()
'Display a form that will show the Image
Dim _Frm As Form1 = New Form1
_Frm.Show()
Else
System.Windows.Forms.MessageBox.Show _
("Did not find " & strFileName & " in the vault")
End If
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show("Error occurred: " & ex.ToString())
'Debug.Print("unable to get Folder. " & ex.ToString())
End Try
End Sub