You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 18:45:58