Skip to content

Commit 0734bcc

Browse files
committed
GetVaultFileStatus() implemented
new sample rules for AddFile() and GetVaultFileStatus()
1 parent d300d39 commit 0734bcc

File tree

5 files changed

+165
-3
lines changed

5 files changed

+165
-3
lines changed

iLogic-Vault-QuickstartLibrary/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("2021.1.0.3")]
36-
[assembly: AssemblyFileVersion("2021.1.0.3")]
35+
[assembly: AssemblyVersion("2021.1.0.5")]
36+
[assembly: AssemblyFileVersion("2021.1.0.5")]
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
AddReference "QuickstartiLogicLibrary.dll"
2+
'enable iLogicVault commands and validate user's login state
3+
break
4+
Dim iLogicVault As New QuickstartiLogicLibrary.QuickstartiLogicLib
5+
If iLogicVault.LoggedIn = False
6+
Logger.Error("Not Logged In to Vault! - Login first and repeat executing this rule.")
7+
Exit Sub
8+
End If
9+
10+
'don't run rules for AnyCAD components.
11+
If ThisDoc.Document.FullFileName.Contains("*LocalDocs*") = True Then
12+
Exit Sub
13+
End If
14+
15+
Dim oAssyDoc As Inventor.AssemblyDocument
16+
Dim oAssyCompDef As Inventor.AssemblyComponentDefinition
17+
Dim oBom As Inventor.BOM
18+
Dim oBomView As Inventor.BOMView
19+
Dim oBomRow As Inventor.BOMRow
20+
Dim oBomRowEnum As Inventor.BOMRowsEnumerator
21+
22+
Try
23+
oDoc = ThisDoc.Document
24+
If oDoc.DocumentType = kAssemblyDocumentObject Then
25+
oAssyDoc = oDoc
26+
oAssyCompDef = oAssyDoc.ComponentDefinition
27+
End If
28+
oBom = oAssyCompDef.BOM
29+
oBom.StructuredViewEnabled = True
30+
oBom.StructuredViewFirstLevelOnly = False
31+
32+
'secure constant item numbers
33+
oBomView = oBom.BOMViews.Item("Structured")
34+
For Each oBomRow In oBomView.BOMRows
35+
oBomRow.ItemNumberLocked = True
36+
Next
37+
38+
Catch ex As Exception
39+
Logger.Error("Something went wrong while enabling BOM Structured View.")
40+
End Try
41+
42+
'derive export file name from this document
43+
Dim oBOMExpFile = ThisDoc.ChangeExtension("xlsx")
44+
45+
'enable LOD Master (BOM export is not support using other LOD)
46+
Try
47+
oAssyCompDef.RepresentationsManager.LevelOfDetailRepresentations.Item("Master").Activate(True)
48+
Catch ex As Exception
49+
Logger.Error("Something went wrong while activating LOD Master")
50+
End Try
51+
52+
'Delete existing file to avoid overwrite restrictions
53+
Dim oFileInfo As New System.IO.FileInfo(oBOMExpFile)
54+
If oFileInfo.Exists = True Then
55+
If (oFileInfo.Attributes) Then
56+
oFileInfo.Attributes = (oFileInfo.Attributes And Not oFileInfo.Attributes.ReadOnly)
57+
System.IO.File.Delete(oBOMExpFile)
58+
End If
59+
End If
60+
61+
'create BOM export
62+
ThisBOM.Export("Structured", oBOMExpFile, kMicrosoftExcelFormat)
63+
'attach result
64+
If System.IO.File.Exists(oBOMExpFile) Then
65+
Dim mReturn As Boolean
66+
Dim mVaultPath As String = iLogicVault.ConvertLocalPathToVaultPath(oBOMExpFile)
67+
mReturn = iLogicVault.AddFile(oBOMExpFile, mVaultPath, True)
68+
Else
69+
Logger.Error("Something went wrong exporting BOM (ThisBOM.Export()")
70+
End If
71+
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
AddReference "QuickstartiLogicLibrary.dll"
2+
'DISCLAIMER:
3+
'---------------------------------
4+
'In any case, code, templates, and snippets of this solution are of "work in progress" character.
5+
'Neither Markus Koechl, nor Autodesk represents that these samples are reliable, accurate, complete, or otherwise valid.
6+
'Accordingly, those configuration samples are provided “as is” with no warranty of any kind and you use the applications at your own risk.
7+
8+
Sub Main
9+
break
10+
'enable iLogicVault commands and validate user's login state
11+
Dim iLogicVault As New QuickstartiLogicLibrary.QuickstartiLogicLib
12+
If iLogicVault.LoggedIn = False
13+
Logger.Error("Not Logged In to Vault! - Login first and repeat executing this rule.")
14+
Exit Sub
15+
End If
16+
17+
'Retrieve the active document's Vault file status as name/value pairs
18+
Dim mDocVaultStatus As New Dictionary(Of String, String)
19+
mDocVaultStatus = iLogicVault.GetVaultFileStatus(ThisDoc.PathAndFileName(True))
20+
If mDocVaultStatus.Item("ErrorState") = "None"
21+
Logger.Info("CheckOutState = " + mDocVaultStatus.Item("CheckOutState"))
22+
Logger.Info("ConsumableState = " + mDocVaultStatus.Item("ConsumableState"))
23+
Logger.Info("ErrorState = " + mDocVaultStatus.Item("ErrorState"))
24+
Logger.Info("LocalEditsState = " + mDocVaultStatus.Item("LocalEditsState"))
25+
Logger.Info("LockState = " + mDocVaultStatus.Item("LockState"))
26+
Logger.Info("RevisionState = " + mDocVaultStatus.Item("RevisionState"))
27+
Logger.Info("VersionState = " + mDocVaultStatus.Item("VersionState"))
28+
Else
29+
Logger.Error("ErrorState = " + mDocVaultStatus.Item("ErrorState"))
30+
End If
31+
End Sub

iLogic-Vault-QuickstartLibrary/iLogic-Vault QuickstartLibrary.cs

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
using ACW = Autodesk.Connectivity.WebServices;
88
using VDF = Autodesk.DataManagement.Client.Framework;
99
using VltBase = Connectivity.Application.VaultBase;
10+
using Autodesk.DataManagement.Client.Framework.Vault.Currency.Properties;
1011

1112
namespace QuickstartiLogicLibrary
1213
{
@@ -58,6 +59,7 @@ public VDF.Vault.Currency.Connections.Connection GetVaultConnection()
5859
return null;
5960
}
6061

62+
/// <summary>
6163
/// Adds local file to Vault.
6264
/// </summary>
6365
/// <param name="FullFileName">File path and name of file to add in local working folder.</param>
@@ -299,7 +301,10 @@ public string GetFileByFullFilePath(string VaultFullFileName, ref Dictionary<str
299301

300302

301303
/// <summary>
302-
///
304+
/// Downloads Vault file using full file path, e.g. "$/Designs/Base.ipt". Returns full file name in local working folder(download enforces override, if local file exists),
305+
/// returns nothing if the file does not exist at indicated location.
306+
/// File and Item property dictionaries return all values converted to text. Access the value using the Vault property display name as key.
307+
/// Preset Options: Download Children (recursively) = Enabled, Enforce Overwrite = True
303308
/// </summary>
304309
/// <param name="VaultFullFileName"></param>
305310
/// <param name="VaultFileProperties"></param>
@@ -363,6 +368,59 @@ public string GetFileByFullFilePath(string VaultFullFileName, ref Dictionary<str
363368
return null;
364369
}
365370

371+
372+
/// <summary>
373+
/// Get the local file's status in Vault. Validate the ErrorState = "None" to get all return values.
374+
/// </summary>
375+
/// <param name="LocalFullFileName">Local path and file name, e.g., ThisDoc.FullFileName</param>
376+
/// <returns>ErrorState only if file does not exist, otherwise CheckOutState, ConsumableState, ErrorState, LocalEditsState, LockState, RevisionState, VersionState</returns>
377+
public Dictionary<string, string> GetVaultFileStatus(string LocalFullFileName)
378+
{
379+
Dictionary<string, string> keyValues = new Dictionary<string, string>();
380+
381+
//convert the local path to the corresponding Vault path
382+
string FileName = null;
383+
System.IO.FileInfo fileInfo = new System.IO.FileInfo(LocalFullFileName);
384+
if (fileInfo.Exists)
385+
{
386+
FileName = fileInfo.Name;
387+
}
388+
else
389+
{
390+
keyValues.Add("ErrorState", "Local file not found");
391+
return keyValues;
392+
}
393+
string VaultFilePath = ConvertLocalPathToVaultPath(LocalFullFileName) + "/" + FileName;
394+
395+
//get the file object consuming the Vault Path; if the file does not exist return the file-non-exist status information
396+
Autodesk.Connectivity.WebServicesTools.WebServiceManager mWsMgr = conn.WebServiceManager;
397+
ACW.File mFile = mWsMgr.DocumentService.FindLatestFilesByPaths(new string[] { VaultFilePath }).FirstOrDefault();
398+
399+
if (mFile.Id == -1)// file not found
400+
{
401+
keyValues.Add("ErrorState", "File does not exist in Vault.");
402+
return keyValues;
403+
}
404+
405+
VDF.Vault.Currency.Entities.FileIteration mFileIteration = new VDF.Vault.Currency.Entities.FileIteration(conn, mFile);
406+
407+
PropertyDefinitionDictionary mProps = conn.PropertyManager.GetPropertyDefinitions(VDF.Vault.Currency.Entities.EntityClassIds.Files, null, PropertyDefinitionFilter.IncludeAll);
408+
409+
PropertyDefinition mVaultStatus = mProps[PropertyDefinitionIds.Client.VaultStatus];
410+
411+
EntityStatusImageInfo status = conn.PropertyManager.GetPropertyValue(mFileIteration, mVaultStatus, null) as EntityStatusImageInfo;
412+
413+
keyValues.Add("CheckOutState", status.Status.CheckoutState.ToString());
414+
keyValues.Add("ConsumableState", status.Status.ConsumableState.ToString());
415+
keyValues.Add("ErrorState", status.Status.ErrorState.ToString());
416+
keyValues.Add("LocalEditsState", status.Status.LocalEditsState.ToString());
417+
keyValues.Add("LockState", status.Status.LockState.ToString());
418+
keyValues.Add("RevisionState", status.Status.RevisionState.ToString());
419+
keyValues.Add("VersionState", status.Status.VersionState.ToString());
420+
421+
return keyValues;
422+
}
423+
366424
/// <summary>
367425
/// Copy Vault file on file server and download using full file path, e.g. "$/Designs/Base.ipt".
368426
/// Create new file name using default or named numbering scheme.

iLogic-Vault-QuickstartLibrary/iLogic-Vault QuickstartLibrary.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
<Generator>SettingsSingleFileGenerator</Generator>
115115
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
116116
</None>
117+
<None Include="Sample Rules iLogic-Vault\iLogicVault_AddFile.iLogicVb" />
117118
<None Include="Sample Rules iLogic-Vault\iLogicVault_CheckFilesExists.iLogicVb">
118119
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
119120
</None>
@@ -166,6 +167,7 @@
166167
<None Include="Sample Rules iLogic-Vault\iLogicVault_GetThumbnailFileBySourceFullFilePath.iLogicVb">
167168
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
168169
</None>
170+
<None Include="Sample Rules iLogic-Vault\iLogicVault_GetVaultFileStatus.iLogicVb" />
169171
<None Include="Sample Rules iLogic-Vault\iLogicVault_UndoCheckOut.iLogicVb">
170172
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
171173
</None>

0 commit comments

Comments
 (0)