ADN Club > Vault API
Как получить свойства текущего файла?
Пашин Евгений:
Так вроде сработало, но я не уверен, что правильно задал параметр:
--- Код - vb.net [Выбрать] --- Public Sub Get_Lifecycle_Changes(ByVal sender As Object, ByVal e As Autodesk.Connectivity.WebServices.UpdateFileLifeCycleStateCommandEventArgs) Dim Connection As Autodesk.DataManagement.Client.Framework.Vault.Currency.Connections.Connection = VltApp.Connection Dim WebManager As Autodesk.Connectivity.WebServicesTools.WebServiceManager = Connection.WebServiceManager Dim allUsers() As Autodesk.Connectivity.WebServices.User = WebManager.AdminService.GetAllUsers() For Each mUsr As Autodesk.Connectivity.WebServices.User In allUsers Dim newUsr As New vltUser With newUsr .firstName = mUsr.FirstName .lastName = mUsr.LastName .name = mUsr.Name .userEmail = mUsr.Email .userId = mUsr.Id .userIsActive = mUsr.IsActive End With VltUsers.allUsers.Add(newUsr) Next MsgBox("Вы только что изменили состояние жизненного цикла") ' Here is message that user changed the state of lifecycle of selected file Dim nf As New Main(VltUsers) nf.ShowDialog() 'Dim selection As id = e.FileMasterIds 'CurrentSelectionSet.First() ' ???????????????????????????????????????????????????? Is not working Dim fileProperties As Autodesk.Connectivity.WebServices.PropInst() = WebManager.PropertyService.GetPropertiesByEntityIds("FILE", New Long() {e.FileMasterIds(0)}) 'For a selected file 'Dim folderProperties As Autodesk.Connectivity.WebServices.PropInst() = WebManager.PropertyService.GetPropertiesByEntityIds("FLDR", New Long() {FileID}) ' For a selected folder MsgBox(e.FileMasterIds(0)) End Sub
Прошу меня поправить, если что!
Пашин Евгений:
Решение оказалось не совсем простым, но всё же получилось:
--- Код - vb.net [Выбрать] ---Imports Autodesk.Connectivity.Explorer.ExtensibilityImports Autodesk.Connectivity.Extensibility.Framework <Assembly: ApiVersion("10.0")><Assembly: ExtensionId("F184B08F-C81C-46F6-A58F-55BD9991F28F")>Public Class VENs Implements IExplorerExtension Public Property VltApp As IApplication ' Пришлось создать публичный параметр для доступа к приложению Public Function CommandSites() As IEnumerable(Of CommandSite) Implements IExplorerExtension.CommandSites Return Nothing End Function Public Function CustomEntityHandlers() As IEnumerable(Of CustomEntityHandler) Implements IExplorerExtension.CustomEntityHandlers Return Nothing End Function Public Function DetailTabs() As IEnumerable(Of DetailPaneTab) Implements IExplorerExtension.DetailTabs Return Nothing End Function Public Function HiddenCommands() As IEnumerable(Of String) Implements IExplorerExtension.HiddenCommands Return Nothing End Function Public Sub OnLogOff(application As IApplication) Implements IExplorerExtension.OnLogOff End Sub Public Sub OnLogOn(application As IApplication) Implements IExplorerExtension.OnLogOn ' Создание соединения Dim Connection As Autodesk.DataManagement.Client.Framework.Vault.Currency.Connections.Connection = application.Connection ' Подключаем менеджер сервисов Dim WebManager As Autodesk.Connectivity.WebServicesTools.WebServiceManager = Connection.WebServiceManager ' Устанавливаем значение параметра для доступа к приложению VltApp = application ' Регстрируем обработчик события UpdateFileLifecycleStateEvents.Post и привязываем его к процедуре, которая его обработает AddHandler Autodesk.Connectivity.WebServices.DocumentServiceExtensions.UpdateFileLifecycleStateEvents.Post, AddressOf Get_Lifecycle_Changes End Sub ' Процедура обработки события Public Sub Get_Lifecycle_Changes(ByVal sender As Object, ByVal e As Autodesk.Connectivity.WebServices.UpdateFileLifeCycleStateCommandEventArgs) ' Создание соединения Dim Connection As Autodesk.DataManagement.Client.Framework.Vault.Currency.Connections.Connection = VltApp.Connection ' Подключаем менеджер сервисов Dim WebManager As Autodesk.Connectivity.WebServicesTools.WebServiceManager = Connection.WebServiceManager ' Определяем все версии файлой текущего/выделенного файла Dim files As Autodesk.Connectivity.WebServices.File() = WebManager.DocumentService.FindLatestFilesByMasterIds(e.FileMasterIds) ' Получаем значения всех свойств текущей (надеюсь, что 0 - индекс текущего файла) версии файла Dim values As Autodesk.Connectivity.WebServices.PropInst() = WebManager.PropertyService.GetPropertiesByEntityIds("FILE", New Long() {files(0).Id}) ' Перебираем все свойства в цикле и выводим в сообщении их имя и значение For Each vl As Autodesk.Connectivity.WebServices.PropInst In values ' Имя свойства Dim propName As String = WebManager.PropertyService.GetPropertyDefinitionInfosByEntityClassId("FILE", New Long() {vl.PropDefId})(0).PropDef.DispName ' Значение свойства Dim propValue As String = vl.Val.ToString ' Сообщение MsgBox(propName & vbCrLf & propValue) Next End Sub Public Sub OnShutdown(application As IApplication) Implements IExplorerExtension.OnShutdown End Sub Public Sub OnStartup(application As IApplication) Implements IExplorerExtension.OnStartup End SubEnd ClassЯ умышленно не стал вводить сокращения в коде.
Навигация
Перейти к полной версии