如何在基于forge-apis的应用中启用Autodesk Forge新IFC模型衍生管线?
启用Autodesk Forge基于Revit的IFC处理器(使用forge-apis npm包)
没错,新的Revit驱动IFC处理器确实在处理精度、元素映射和兼容性上比旧的Navisworks-based版本表现更好——我之前帮不少开发者配置过这个,其实方法很简单,只是需要在转换作业的参数里手动添加一个advanced配置项,forge-apis包本身是支持传递这个自定义参数的,只是默认没有暴露成单独的选项。
下面是具体的实现步骤和代码示例:
核心原理
要启用新的IFC处理器,你需要在提交Model Derivative转换请求时,在output对象的advanced属性中添加"ifc": { "useRevit": true }的配置。这个参数会告诉Forge后台使用Revit的IFC导入逻辑来处理你的文件,而不是默认的Navisworks管线。
代码示例(使用forge-apis)
这里是完整的Node.js代码片段,展示如何构造带有该配置的转换作业:
const { DerivativesApi, JobPayload, JobPayloadInput, JobPayloadOutput, JobSvfOutputPayload } = require('forge-apis'); // 提交转换作业的函数 async function submitIfcTranslationWithRevitProcessor(modelUrn, accessToken) { const derivativesApi = new DerivativesApi(); // 构建作业输入 const inputPayload = new JobPayloadInput(); inputPayload.urn = modelUrn; // 构建作业输出(这里以SVF格式为例,你可以换成需要的格式) const outputPayload = new JobPayloadOutput([ new JobSvfOutputPayload() ]); // 关键:添加advanced配置启用Revit IFC处理器 outputPayload.advanced = { "ifc": { "useRevit": true } }; // 组装完整的转换作业 const translationJob = new JobPayload(); translationJob.input = inputPayload; translationJob.output = outputPayload; try { const response = await derivativesApi.translate(translationJob, {}, accessToken); console.log('转换作业已提交,状态码:', response.statusCode); return response; } catch (error) { console.error('提交转换作业失败:', error.response?.data || error.message); throw error; } }
注意事项
- 这个配置仅对IFC格式的文件有效,其他格式(如RVT、DWG)不需要添加,也不会生效。
- 确保你的Forge应用已经申请了
model derivative:write的权限,否则无法提交转换作业。 - 新的Revit处理器在处理大型IFC文件时,可能会比旧管线稍慢,但输出的模型在元素完整性、属性映射上会更接近Revit原生导出的效果,尤其适合需要和Revit协同的场景。
- 不需要更新forge-apis包,因为这个参数是通过JSON payload传递的,只要你正确构造
advanced对象即可,包会自动将其序列化到请求中。
内容的提问来源于stack exchange,提问作者DeStoi
相关产品推荐
相关产品推荐

