Вопрос или проблема
Я работаю с APS и мне нужно получить абсолютно последнюю версию файла в ACC. Эта версия новее той, которая сейчас опубликована/поделена.
Есть ли способ сделать это в APS, или мне нужно рассмотреть другие решения? Буду признателен за примеры кода или конкретные рабочие процессы!
Ответ или решение
Для доступа к самой последней версии файла в Autodesk Collaboration for Revit (ACC), которая новее опубликованной версии, вам действительно потребуется рассмотреть несколько шагов. К сожалению, стандартный интерфейс пользователя ACC может не предоставлять прямого доступа к не опубликованным версиям файлов. Однако есть возможность использовать API для получения доступа к последней версии.
Вот общий план действий и пример кода, который поможет вам получить нужную версию файла:
-
Подключение к API ACC: Убедитесь, что у вас есть доступ к Autodesk Forge и правильные учетные данные, чтобы использовать API ACC.
-
Получение файлов из ACC:
- Используйте API, чтобы получить список всех версий файла.
- Отфильтруйте их, чтобы найти самую последнюю версию, которая новее опубликованной.
- Базовый пример кода на Python с использованием библиотеки
requests
:
import requests
# Задайте ваши учетные данные и конечную точку API
client_id = 'ВАШ_CLIENT_ID'
client_secret = 'ВАШ_CLIENT_SECRET'
bucket_key = 'ВАШ_BUCKET_KEY'
file_key = 'ВАШ_FILE_KEY'
# Получите токен доступа
def get_access_token(client_id, client_secret):
url = 'https://developer.api.autodesk.com/authentication/v1/authenticate'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
data = {
'client_id': client_id,
'client_secret': client_secret,
'grant_type': 'client_credentials',
'scope': 'data:read data:write'
}
response = requests.post(url, headers=headers, data=data)
return response.json()['access_token']
# Получите версии файла
def get_file_versions(access_token, bucket_key, file_key):
url = f'https://developer.api.autodesk.com/oss/v2/buckets/{bucket_key}/objects/{file_key}/versions'
headers = {
'Authorization': f'Bearer {access_token}',
}
response = requests.get(url, headers=headers)
return response.json()
# Пример использования
access_token = get_access_token(client_id, client_secret)
versions = get_file_versions(access_token, bucket_key, file_key)
# Найдите самую последнюю версию
latest_version = None
for version in versions['data']:
if latest_version is None or version['createdAt'] > latest_version['createdAt']:
latest_version = version
if latest_version:
print(f"Последняя версия файла: {latest_version['id']} создана {latest_version['createdAt']}")
else:
print("Нет доступных версий файла.")
- Обновление и загрузка файла: Если вам нужно использовать эту версию для локальной работы или дальнейшей обработки, вы можете доработать вышеуказанный код, чтобы загрузить файл на локальное хранилище.
Обратите внимание, что вам может потребоваться установить дополнительные библиотеки (например, requests
), если они еще не установлены.
Если у вас есть дополнительные требования или вопросы касательно процессов или кодирования, пожалуйста, дайте знать, и я помогу вам.