如何为Design Automation API Workitem生成非Revit输出并导出JSON数据?
解决Forge Revit插件输出大体积族数据的问题
问题诊断
你的核心问题集中在两处:代码存在拼写错误导致文件写入失败,以及未正确匹配Design Automation的输出参数配置。
1. 修正插件代码中的错误
你的代码有两个明显问题:
- 枚举拼写错误:
Formating.Intended应为Formatting.Indented - 无需手动调用
sw.Close():using语句块会自动释放流资源,手动调用属于冗余操作
修正后的代码:
using (StreamWriter sw = File.CreateText("result.json")) { sw.WriteLine(JsonConvert.SerializeObject(familyData, Formatting.Indented)); }
2. 正确配置Activity与Workitem的输出参数
在Design Automation环境中,输出文件必须和Activity定义的参数绑定,否则Workitem会直接判定失败:
- 编辑你的Activity,在
OutputParameters中添加JSON输出配置:{ "Name": "outputJson", "LocalName": "result.json", "Required": true, "Type": "json" } - 提交Workitem时,为
outputJson参数指定可写入的云存储地址(比如Forge对象存储的预签名URL)
3. 确保插件写入正确路径
Design Automation的沙箱环境中,当前工作目录是可写区域,直接写入result.json即可匹配Activity中LocalName的配置。如果担心路径歧义,也可以显式指定当前目录:
string outputFilePath = Path.Combine(Directory.GetCurrentDirectory(), "result.json"); using (StreamWriter sw = File.CreateText(outputFilePath)) { sw.WriteLine(JsonConvert.SerializeObject(familyData, Formatting.Indented)); }
关于CountIt示例的注意点
你未从CountIt示例中获取到JSON结果,大概率是以下原因之一:
- Activity未正确配置输出参数
- 代码中文件路径与Activity的
LocalName不匹配 - Workitem提交时未指定输出文件的存储地址
内容的提问来源于stack exchange,提问作者Abhishek Singh
相关产品推荐
相关产品推荐

