Я создал плагин APS Revit, который успешно обрабатывает URL-адреса файлов Revit из S3 и GCS. Моя цель — расширить его функциональность для обработки URL-адресов, указывающих на файлы Revit, хранящиеся в ACC.
Я предоставил необходимые разрешения моему плагину APS в проекте ACC. Я использую следующее руководство для доступа к облачной модели ACC из APS: https://aps.autodesk.com/blog/design-automation-api-supports-revit-cloud-model
Но когда я пытаюсь получить доступ к файлу, я получаю следующую ошибку:
[25.04.2024, 08:02:18] Autodesk.Revit.Exceptions.RevitServerUnauuthenticatedUserException: необходимо войти в Autodesk 360, чтобы выполнить это действие. [25.04.2024, 08:02:18] в Autodesk.Revit.DB.ModelPathUtils.ConvertCloudGUIDsToCloudPath(String Region, Guid projectGuid, Guid modelGuid) [25.04.2024 08:02:18] в SwappDesignAutomationPlugin.SwappExternalDBApplication.Execute (данные DesignAutomationData) [25.04.2024, 08:02:18] в SwappDesignAutomationPlugin.SwappExternalDBApplication.HandleDesignAutomationReadyEvent (отправитель объекта, DesignAutomationReadyEventArgs e) [25.04.2024, 08:02:18] в DesignAutomationFramework.DesignAutomationBridge.RaiseDesignAutomationReadyEvent(DesignAutomationReadyEventArgs e) [25.04.2024, 08:02:18] в RevitCoreEngineTest.RceConsoleApplication.Program.UserMain(CommandLineArgs cl)
Я использую двусторонний токен для плагина APS. Судя по документации, казалось, что если я хочу получить доступ только к модели, не изменяя ее, этого будет достаточно.
Нужно ли мне переходить на трехногий токен для доступа к ACC? Я упускаю что-то еще?
Спасибо за ваш вопрос, он заставил меня уточнить требования. Я уточнил и изменил свой вопрос.
Спасибо. Как вы уже догадались, вам понадобится жетон 3 LO. Я поделился соответствующей документацией в своем ответе.
Если URL-адрес вашего файла ACC выглядит так, как показано ниже, мы можем извлечь из него идентификатор проекта и элемент элемента, а затем вызвать API управления данными.
https://acc.autodesk.com/docs/files/projects/e976d832-93f7-44d3-9051-625bf228d216?folderUrn=urn%3Aadsk.wipprod%3Afs.folder%3Aco.j0erY7apSNGl6hJHUTHhOQ&entityId=urn%3Aadsk.wipprod%3Adm.lineage%3AmgJecIvQQ2OfqTbZSH8zxg&viewModel=detail&moduleId=folders&viewableGuid=250a6ce5-ee70-fdca-bfc9-4111f54e9baa
Идентификатор проекта, указанный выше, — e976d832-93f7-44d3-9051-625bf228d216
. Для использования API управления данными необходимо добавить b.
к этому руководству. то есть b.e976d832-93f7-44d3-9051-625bf228d216
.
Идентификатор элемента Revit из приведенного выше — urn%3Aadsk.wipprod%3Adm.lineage%3AmgJecIvQQ2OfqTbZSH8zxg
, URL-адрес которого закодирован. Мы можем System.Web.HttpUtility.UrlDecode, чтобы декодировать его в urn:adsk.wipprod:dm.lineage:mgJecIvQQ2OfqTbZSH8zxg
.
Затем следуйте этому руководству, чтобы загрузить файл Revit, хранящийся в ACC: https://aps.autodesk.com/en/docs/bim360/v1/tutorials/document-management/download-document-s3/, если ваш Модель Revit не является облачной моделью Revit или моделями совместной работы в облаке.
Я недостаточно ясно сформулировал свой вопрос: я хочу получить доступ к модели напрямую из APS, без необходимости загружать ее и затем обращаться к APS. Я думаю, что недавний API для интеграции облачных моделей ACC с APS — это именно то, что мне нужно.
Нужно ли мне переходить на трехногий токен для доступа к ACC? Я упускаю что-то еще?
В настоящее время живые облачные модели в Design Automation for Revit поддерживаются только с трехсторонним токеном. См. объявление в блоге для получения документации и образцов.
Короче говоря, вы предоставите контексту пользователя специальный аргумент adsk3LeggedToken
. Мы настроим контекст, и тогда ваш Revit API сможет функционировать аналогично тому, как он работает для этого пользователя при входе в систему на рабочем столе.
Поддержка двухногих токенов с олицетворением пользователя не планируется.
Вы можете получить доступ к действующей облачной модели или к опубликованной версии?