C#/Visual Studio Vault numbering scheme

C#/Visual Studio Vault numbering scheme

m_baczewski
Advocate Advocate
251 Views
1 Reply
Message 1 of 2

C#/Visual Studio Vault numbering scheme

m_baczewski
Advocate
Advocate

Hello,

 

I've started developing a desktop application that will modify parameters in a model and then save that model according to the naming scheme used in Vault. However, I'm facing an issue where the application doesn't recognize the Vault connection. The Vault is running when the application is launched. The error I'm encountering is:

 

"The type initializer for 'Autodesk.DataManagement.Client.Framework.Forms.Library' threw an exception."

Sometimes, theConnection variable is null.

 

I found this code on the forum, but it was written in VB, so I translated it into C#. I do everything from within Visual Studio.

Code is below:

 

Using ACW = Autodesk.Connectivity.WebServices;
Using VDF = Autodesk.DataManagement.Client.Framework;
Using Autodesk.DataManagement.Client.Framework.Vault;
Using Autodesk.DataManagement.Client.Framework.Vault.Forms;
Using edm = Connectivity.InventorAddin.EdmAddin;
Using Autodesk.DataManagement.Client.Framework.Internal.ExtensionMethods;

 

Public void GetFilenamesFromVaultNamingScheme(String RequiredSchemeName, String RequiredSchemeString, Int numberOfNames)
{
    VDF.Vault.Currency.Connections.Connection Connection = edm.EdmSecurity.Instance.VaultConnection;
    String genNum = String.Empty;
    String first = String.Empty;
    String last = String.Empty;

    If (Connection != null)
    {
        var entityClassId = VDF.Vault.Currency.Entities.EntityClassIds.Files;
        ACW.NumSchm[] numSchemes = Connection.WebServiceManager.NumberingService.GetNumberingSchemes(entityClassId, 0);
        ACW.NumSchm requiredScheme = numSchemes.FirstOrDefault(sch => sch.Name == RequiredSchemeName);

        If (requiredScheme != null)
        {
            String[] numGenArgs = { RequiredSchemeString };

            For (Int i = 1; i <= numberOfNames; i++)
            {
                genNum = Connection.WebServiceManager.DocumentService.GenerateFileNumber(requiredScheme.SchmID, numGenArgs);
                If (i == 1) first = genNum;
                If (i == numberOfNames) last = genNum;
            }

            MessageBox.Show($"Numbers generated: {first} to {last}", "Success!");
        }
        Else
        {
            MessageBox.Show("Vault didn't work", "Fail!");
        }
    }
}

 

@JhoelForshav I mentioned you because I saw that you wrote this code. Can you help me? 

 

 

EDIT;

When I use this code directly in Inventor, it works correctly

 

 

0 Likes
252 Views
1 Reply
Reply (1)
Message 2 of 2

jose_oltra
Advocate
Advocate

If this is an autonomous desktop application you can't use the vault connection from Inventor.

You will have to connect to Vault from your own application. Using VDF will save you time

Inventor
Revit
Vault Professional
Autocad
0 Likes