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

APS Viewer加载STEP模型时遇TranslationWorker解压失败问题求助

解决APS模型转换「TranslationWorker-Internal Failure: Tr worker failed to unzip」错误

问题核心分析

你遇到的解压失败错误,并非模型文件本身问题(VSCode APS扩展可成功转换验证了这一点),而是转换请求的参数和代码细节存在错误,导致Model Derivative服务误判文件类型并尝试执行不必要的解压操作。

关键错误点及修复方案

  1. 错误设置compressedUrn参数
    你的STEP模型是直接上传的非压缩文件,但请求体中设置了compressedUrn: true,这会强制服务尝试解压该文件,进而触发解压失败错误。
    修复:将compressedUrn改为false。

  2. Authorization请求头缺少Bearer前缀
    代码中仅传入token字符串,不符合API要求的授权格式,可能引发权限验证异常,间接导致转换失败。
    修复:授权头格式改为Bearer <your-access-token>。

  3. URL中多余的$符号
    两个API请求的URL开头存在多余的$字符,会导致请求地址无效,属于潜在的语法错误。
    修复:移除URL中的$符号。

  4. 状态检查变量不统一
    循环中使用modelURN检查状态,但前面定义的变量是URN,可能导致检查错误的模型状态。
    修复:统一使用URN变量。

修复后的完整代码示例

// 生成符合要求的URN
const base64EncodedObjectId = window.btoa(objectId);
const base64EncodedObjectIdURLSafe = base64EncodedObjectId.replace(/\+/g, '-').replace(/\//g, '_');
const URN = base64EncodedObjectIdURLSafe.replace(/=+$/, '');

const startTranslationToSVF = async (URN, modelName) => {
    const token = await getAutodeskBearerToken();
    const importURL = "https://developer.api.autodesk.com/modelderivative/v2/designdata/job";
    const headers = {
        Authorization: `Bearer ${token}`,
        "Content-Type": "application/json"
    };

    const body = {
        input: {
            urn: URN,
            compressedUrn: false,
            rootFilename: modelName
        },
        output: {
            destination: {
                region: "us"
            },
            formats: [
                {
                    type: "svf",
                    views: ["2d", "3d"]
                }
            ]
        }
    };
    try {
        const resp = await axios.post(importURL, body, { headers });
        return resp;
    } catch (error) {
        return onHandleError(error);
    }
};

const checkSVFTranslationStatus = async (URN) => {
    const token = await getAutodeskBearerToken();
    const importURL = `https://developer.api.autodesk.com/modelderivative/v2/designdata/${URN}/manifest`;
    const headers = {
        Authorization: `Bearer ${token}`
    };
    try {
        const resp = await axios.get(importURL, { headers });
        return resp;
    } catch (error) {
        return onHandleError(error);
    }
};

const expectedStatus = "complete";
let translationStatus = "incomplete";

// 执行转换及状态轮询
await startTranslationToSVF(URN, modelName);
while (translationStatus !== expectedStatus) {
    const status = await checkSVFTranslationStatus(URN);
    if (status.data.progress === "complete") {
        translationStatus = "complete";
        console.log("translation completed");
        break;
    }
    await new Promise(resolve => setTimeout(resolve, 2500));
}

额外建议

  • 确认上传的STEP文件完整性:本地用CAD软件打开验证文件是否损坏。
  • 检查token权限:确保获取的token包含data:read和data:write权限,这是模型转换的必要权限。
  • 调整状态轮询间隔:对于大模型,可适当延长间隔时间,避免触发API限流。

内容的提问来源于stack exchange,提问作者Praful Bharate

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 09:00:09