如何在APS中访问ACC内比已发布版本更新的文件最新版本?
在APS中访问ACC文件的绝对最新版本
可以直接在APS生态内实现该需求,无需借助外部工具,核心是通过ACC的版本管理API结合APS Data Management模块来获取并加载未发布的最新工作版本。
核心工作流程
- 完成ACC/APS的身份认证,获取具备项目文件访问权限的访问令牌
- 定位目标文件的唯一标识符(
itemId) - 调用ACC API获取该文件的所有版本列表,筛选出状态为
work的最新版本(即未发布/共享的工作版本) - 通过APS Data Management API将该最新版本的文件加载到你的APS应用中
代码示例(JavaScript)
以下是关键步骤的代码实现:
1. 获取访问令牌(服务账号认证方式)
const axios = require('axios'); async function getAccessToken() { const response = await axios.post('https://developer.api.autodesk.com/authentication/v2/token', { grant_type: 'client_credentials', client_id: 'YOUR_CLIENT_ID', client_secret: 'YOUR_CLIENT_SECRET', scope: 'data:read bucket:read' }); return response.data.access_token; }
2. 获取文件的最新工作版本
async function getLatestWorkVersion(accessToken, projectId, itemId) { const url = `https://developer.api.autodesk.com/data/v1/projects/${projectId}/items/${itemId}/versions`; const response = await axios.get(url, { headers: { 'Authorization': `Bearer ${accessToken}` } }); // 筛选工作版本并按创建时间倒序排序,取第一个即为最新版本 const workVersions = response.data.data.filter(version => version.attributes.extension.data.status === 'work'); workVersions.sort((a, b) => new Date(b.attributes.createTime) - new Date(a.attributes.createTime)); return workVersions[0]; }
3. 加载最新版本到APS应用
async function loadLatestVersionIntoAPS(accessToken, versionId) { // 生成用于APS Viewer的URN const urn = Buffer.from(versionId).toString('base64'); console.log('Latest version URN for Viewer:', urn); // 后续可调用APS Viewer的loadDocument方法加载该URN对应的文件 // viewer.loadDocument(`urn:${urn}`); }
完整调用流程
async function main() { const token = await getAccessToken(); const projectId = 'YOUR_ACC_PROJECT_ID'; const itemId = 'YOUR_TARGET_FILE_ITEM_ID'; const latestVersion = await getLatestWorkVersion(token, projectId, itemId); if (latestVersion) { await loadLatestVersionIntoAPS(token, latestVersion.id); console.log('Successfully loaded the latest work version'); } else { console.log('No work version found for the target file'); } } main().catch(err => console.error(err));
注意事项
- 确保你的APS应用已被授权访问目标ACC项目,权限范围需包含
data:read - 工作版本(
work状态)是ACC中未发布的最新编辑版本,与已发布的published状态版本区分开 - 若需对该版本进行编辑操作,需额外申请
data:write权限
内容的提问来源于stack exchange,提问作者Eugene Shtoka
相关产品推荐
相关产品推荐

