关于APS Viewer输出文件下载及SVF转STEP的技术实现咨询
APS Viewer APIs 相关解决方案
1. 生成APS Viewer输出文件的下载链接
要生成APS Viewer输出文件(如SVF、缩略图等)的下载链接,需通过APS Data Management API获取文件的带签名临时URL。以下是基于Node.js的实现示例:
const { AuthClientTwoLegged, DataManagementApi } = require('forge-apis'); // 配置APS凭证与资源信息 const clientId = 'YOUR_CLIENT_ID'; const clientSecret = 'YOUR_CLIENT_SECRET'; const bucketKey = 'YOUR_BUCKET_KEY'; const sourceFileUrn = 'YOUR_SOURCE_FILE_URN'; // 源文件URN,需Base64编码 const derivativeUrn = 'YOUR_DERIVATIVE_URN'; // 衍生输出文件的URN async function getDerivativeDownloadUrl() { // 获取2-legged认证令牌 const authClient = new AuthClientTwoLegged(clientId, clientSecret, ['data:read']); const credentials = await authClient.authenticate(); // 初始化Data Management API客户端 const dmApi = new DataManagementApi(); dmApi.accessToken = credentials.access_token; // 获取衍生文件的临时下载URL(默认有效期1小时) const manifestRes = await dmApi.getDerivativeManifest(bucketKey, sourceFileUrn, derivativeUrn); const tempDownloadUrl = manifestRes.body.derivatives[0].downloadUrl; // 生成带签名的长期下载URL(最长有效期24小时) const signedRes = await dmApi.createSignedResource( bucketKey, sourceFileUrn, { access: 'read', expiresIn: 86400 } ); const signedDownloadUrl = signedRes.body.signedUrl; console.log('临时下载URL:', tempDownloadUrl); console.log('带签名长期下载URL:', signedDownloadUrl); } getDerivativeDownloadUrl().catch(err => console.error(err));
- 替换所有
YOUR_*占位符为你的APS实际凭证与资源信息 derivativeUrn可从Model Derivative API的转换结果清单中获取
2. 将SVF输出转换为STEP文件并获取下载链接
SVF是APS Viewer专用的轻量化格式,无法直接转换为STEP。需基于原始设计文件(如DWG、Revit、Inventor等)通过Model Derivative API提交转换任务,生成STEP格式衍生文件后再获取下载链接。以下是Node.js实现示例:
const { AuthClientTwoLegged, ModelDerivativeApi } = require('forge-apis'); // 配置APS凭证与资源信息 const clientId = 'YOUR_CLIENT_ID'; const clientSecret = 'YOUR_CLIENT_SECRET'; const sourceFileUrn = 'YOUR_SOURCE_FILE_URN'; // 源文件URN,需Base64编码且不带前缀 async function convertToStepAndGetDownloadUrl() { // 获取2-legged认证令牌 const authClient = new AuthClientTwoLegged(clientId, clientSecret, ['data:read', 'data:write']); const credentials = await authClient.authenticate(); // 初始化Model Derivative API客户端 const mdApi = new ModelDerivativeApi(); mdApi.accessToken = credentials.access_token; // 提交STEP格式转换任务 const jobPayload = { input: { urn: sourceFileUrn }, output: { formats: [{ type: 'step', views: ['2d', '3d'] }] } }; await mdApi.translate(jobPayload, {}, {}); // 轮询等待转换完成(生产环境建议用Webhook监听状态) let manifest; do { await new Promise(resolve => setTimeout(resolve, 5000)); manifest = await mdApi.getManifest(sourceFileUrn); } while (['pending', 'inprogress'].includes(manifest.body.status)); if (manifest.body.status !== 'success') { throw new Error(`转换失败:${manifest.body.status}`); } // 获取STEP文件的下载链接 const stepDerivative = manifest.body.derivatives.find(d => d.outputType === 'step'); const tempDownloadUrl = stepDerivative.downloadUrl; // 生成带签名的长期下载URL const signedRes = await mdApi.createSignedResource( sourceFileUrn, stepDerivative.urn, { access: 'read', expiresIn: 86400 } ); const signedDownloadUrl = signedRes.body.signedUrl; console.log('STEP文件临时下载URL:', tempDownloadUrl); console.log('STEP文件带签名长期下载URL:', signedDownloadUrl); } convertToStepAndGetDownloadUrl().catch(err => console.error(err));
- 确保原始设计文件支持转换为STEP格式(APS支持的源格式可参考官方能力列表)
- 生产环境建议配置Webhook接收转换完成通知,避免轮询占用资源
内容的提问来源于stack exchange,提问作者Ravi Kumar UnoTEAM
相关产品推荐
相关产品推荐

