ADN Open CIS
Сообщество программистов Autodesk в СНГ

24/09/2014

Лёгкое программирование под Autodesk Vault Часть 40

Этот пример на VB использует GetPropertyDefinitions() и GetPropertyValue() из PropertyManager для получения значения системного и определенного пользователем свойства (UDP) файла.

Может быть не совсем очевидно, как получить параметрPropertyDefinition, который передается в GetPropertyValue().

Для получения PropertyDefinition вы можете использовать GetPropertyDefinitions(), который возвращает PropertyDefinitionDictionary, который является парой ключ-значение. Значение KeyValuePairare является определениями свойств.

В этом примере отображаемое имяPropertyDefinition используется для нахождения определяемого определенного пользователем свойства для передачи его GetPropertyValue().

Для системных свойств вы можете использовать один из членовPropertyDefinitionIds.Server. Этот пример использует PropertyDefinitionIds.Server.LifeCycleDefinition и PropertyDefinitionIds.Server.VersionNumber.

Для проверки этого кода вы можете добавить кнопку к примеру VaultList из Vault SDK и скопировать этот код в проект.

Код - VBA: [Выделить]
  1. Private Sub Button5_Click(sender As System.Object, _
  2.         e As System.EventArgs) Handles Button5.Click
  3.  
  4.     ' С целью демонстрации,
  5.     ' эта информация записана жестко
  6.     Dim results As VDF.Vault.Results.LogInResult =
  7.         VDF.Vault.Library.ConnectionManager.LogIn _
  8.       ("localhost""Vault""Administrator""", _
  9.                   VDF.Vault.Currency.Connections. _
  10.              AuthenticationFlags.StandardNothing)
  11.  
  12.     If Not results.Success Then
  13.         Return
  14.     End If
  15.  
  16.     Dim m_conn As  _
  17.         VDF.Vault.Currency.Connections.Connection _
  18.                                = results.Connection
  19.  
  20.     Dim props As PropertyDefinitionDictionary = _
  21.      m_conn.PropertyManager.GetPropertyDefinitions(
  22.    VDF.Vault.Currency.Entities.EntityClassIds.Files,
  23.        Nothing, PropertyDefinitionFilter.IncludeAll)
  24.  
  25.     Dim myKeyValPair As KeyValuePair _
  26.                      (Of String, PropertyDefinition)
  27.     Dim myUDP_DayOFSave As PropertyDefinition _
  28.                                            = Nothing
  29.  
  30.     Dim propDef As PropertyDefinition
  31.     For Each myKeyValPair In props
  32.         ' Определение свойства из KeyValuePair
  33.         propDef = myKeyValPair.Value()
  34.         ' Используем отображаемое имя
  35.         ' для определения PropertyDefinition
  36.         If propDef.DisplayName = _
  37.                          "wb_Day_Of_IDW_Save" Then
  38.             'It is the PropertyDefinition
  39.             myUDP_DayOFSave = propDef
  40.             Exit For
  41.         End If
  42.     Next
  43.  
  44.     Dim myLifeCycleDef As PropertyDefinition = _
  45.     props(PropertyDefinitionIds.Server. _
  46.                             LifeCycleDefinition)
  47.  
  48.     Dim myVerNumDef As PropertyDefinition = _
  49.     props(PropertyDefinitionIds.Server. _
  50.                                   VersionNumber)
  51.  
  52.     ' Получаем FileIteration
  53.     Dim fileIter As  _
  54. VDF.Vault.Currency.Entities.FileIteration = Nothing
  55.  
  56.     ' Измените это на имя файла в вашем хранилище
  57.     fileIter = _
  58. getFileIteration("wB_Assembly_9-23-13.idw", m_conn)
  59.  
  60.     ' Имя определения жизненного цикла
  61.     Dim strLifeCycleName As String = _
  62.         m_conn.PropertyManager.GetPropertyValue _
  63.                   (fileIter, myLifeCycleDef, Nothing)
  64.  
  65.     ' Номер версии
  66.     Dim strVersionNumber As String = _
  67.         m_conn.PropertyManager.GetPropertyValue _
  68.                     (fileIter, myVerNumDef, Nothing)
  69.  
  70.     ' Получить значение определенного пользователем свойства
  71.     If Not myUDP_DayOFSave Is Nothing Then
  72.         Dim strPropertyVal As String = _
  73.             m_conn.PropertyManager.GetPropertyValue _
  74.                  (fileIter, myUDP_DayOFSave, Nothing)
  75.  
  76.         MessageBox.Show("Значение пользовательского свойства " _
  77.             & myUDP_DayOFSave.DisplayName.ToString() _
  78.             & " = " & strPropertyVal)
  79.     End If
  80.  
  81. End Sub

Вот код, который получает FileIteration.

Код - VBA: [Выделить]
  1. Public Function getFileIteration _
  2.           (nameOfFile As String, _
  3.                   connection As  _
  4.              VDF.Vault.Currency. _
  5.          Connections.Connection) _
  6.           As VDF.Vault.Currency. _
  7.            Entities.FileIteration
  8.  
  9.     Dim conditions As ACW.SrchCond()
  10.  
  11.     ReDim conditions(0)
  12.  
  13.     Dim lCode As Long = 1
  14.  
  15.     Dim Defs As ACW.PropDef() = _
  16.   connection.WebServiceManager. _
  17.                PropertyService. _
  18. GetPropertyDefinitionsByEntityClassId("FILE")
  19.  
  20.     Dim Prop As ACW.PropDef = Nothing
  21.  
  22.     For Each def As ACW.PropDef In Defs
  23.         If def.DispName = _
  24.                   "File Name" Then
  25.             Prop = def
  26.         End If
  27.     Next def
  28.  
  29.     Dim searchCondition As  _
  30. ACW.SrchCond = New ACW.SrchCond()
  31.  
  32.     searchCondition.PropDefId = _
  33.                           Prop.Id
  34.  
  35.     searchCondition.PropTyp = _
  36. ACW.PropertySearchType.SingleProperty
  37.     searchCondition.SrchOper = lCode
  38.  
  39.     searchCondition.SrchTxt = nameOfFile
  40.  
  41.     conditions(0) = searchCondition
  42.  
  43.     ' Ищем файлы
  44.     Dim FileList As List _
  45. (Of Autodesk.Connectivity.WebServices.File) = _
  46.     New List _
  47. (Of Autodesk.Connectivity.WebServices.File) '()
  48.     Dim sBookmark As String = String.Empty
  49.     Dim Status As ACW.SrchStatus = Nothing
  50.  
  51.     While (Status Is Nothing OrElse _
  52.          FileList.Count < Status.TotalHits)
  53.  
  54.         Dim files As Autodesk.Connectivity. _
  55. WebServices.File() = connection.WebServiceManager.
  56. DocumentService.FindFilesBySearchConditions _
  57.                              (conditions, _
  58.             NothingNothingTrueTrue, _
  59.                          sBookmark, Status)
  60.  
  61.         If (Not files Is Nothing) Then
  62.             FileList.AddRange(files)
  63.         End If
  64.     End While
  65.  
  66.     Dim oFileIteration As  _
  67.         VDF.Vault.Currency.Entities. _
  68.                FileIteration = Nothing
  69.     For i As Integer = _
  70.               0 To FileList.Count - 1
  71.         If FileList(i).Name = _
  72.                       nameOfFile Then
  73.             oFileIteration = _
  74.            New VDF.Vault.Currency. _
  75. Entities.FileIteration(connection, _
  76.                         FileList(i))
  77.         End If
  78.     Next
  79.  
  80.     Return oFileIteration
  81.  
  82. End Function

Источник: http://adndevblog.typepad.com/manufacturing/2013/11/vault-2014-api-example-getting-property-values-of-a-file.html

Обсуждение: http://adn-cis.org/forum/index.php?topic=977

Опубликовано 24.09.2014
Отредактировано 24.09.2014 в 13:50:52