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

Design Automation for Revit调用SaveAsCloudModel遇身份验证异常求助

解决Revit Design Automation中调用SaveAsCloudModel的身份验证问题

问题核心

在Revit本地插件中正常运行的SaveAsCloudModel()功能,放到Design Automation环境中触发Autodesk.Revit.Exceptions.RevitServerUnauthenticatedUserException,提示需登录Autodesk 360。这是因为Design Automation是无头运行环境,没有本地用户的Autodesk登录上下文,必须通过服务端身份验证(2-legged token)授权访问BIM 360资源。

解决方案步骤

1. 配置Forge应用权限

  • 确保你的Forge应用已启用BIM 360 API,并拥有data:write、data:read等必要权限。
  • 将Forge应用添加到目标BIM 360项目的成员列表中,分配至少能创建/修改云模型的权限(如项目管理员、文档编辑者)。

2. 修改Activity定义,添加身份验证参数

在Activity中新增authToken参数,用于传递2-legged访问令牌:

{
  "id":"SaveModelTestActivity8",
  "commandLine": [ "$(engine.path)\\revitcoreconsole.exe /i \"$(args[rvtFile].path)\" /al \"$(appbundles[SaveModelTest8].path)\"" ],
  "parameters": {
    "rvtFile": {
      "zip": false,
      "ondemand": false,
      "verb": "get",
      "description": "Input Revit model",
      "required": true,
      "localName": "$(rvtFile)"
    },
    "authToken": {
      "description": "2-legged access token for BIM 360 authentication",
      "required": true,
      "type": "string"
    },
    "result": {
      "zip": false,
      "ondemand": false,
      "verb": "put",
      "description": "Results",
      "required": true,
      "localName": "result.rvt"
    }
  },
  "engine": "Autodesk.Revit+2022",
  "appbundles": [ "SAVE_CLOUD_MODEL.SaveModelTest8+current" ],
  "description": "Save revit model to BIM 360 cloud"
}

3. 更新Work Item,传入2-legged令牌

在Work Item的arguments中添加authToken参数,值为提前获取的有效2-legged访问令牌:

{
  "activityId": "SAVE_CLOUD_MODEL.SaveModelTestActivity8+current",
  "arguments": {
    "rvtFile": {
      "url": "https://cdn.us.oss.api.autodesk.com/oss/v2/signedresources/372091ac-8274-4187-95f0-22414d21c9f2?region=US",
      "pathInZip": "MYFILE.rvt"
    },
    "authToken": {
      "value": "YOUR_VALID_2_LEGGED_ACCESS_TOKEN"
    },
    "result": {
      "verb": "put",
      "url": "https://cdn.us.oss.api.autodesk.com/oss/v2/signedresources/372091ac-8274-4187-95f0-22414d21c9f2?region=US"
    }     
  }
}

4. 在AppBundle代码中注入身份令牌

调用SaveAsCloudModel()前,通过Revit API设置云访问令牌:

// 从Work Item参数中获取authToken
string authToken = args["authToken"].Value;

// 设置Revit云身份验证令牌
Autodesk.Revit.DB.CloudUtility.SetCloudAccessToken(authToken);

// 构建目标BIM 360云路径并保存
ModelPath cloudModelPath = ModelPathUtils.ConvertCloudGUIDsToCloudPath(
    new Guid("YOUR_BIM360_ACCOUNT_ID"),
    new Guid("YOUR_BIM360_PROJECT_ID"),
    new Guid("TARGET_FOLDER_ID"),
    "NEW_CLOUD_MODEL_NAME.rvt"
);

document.SaveAsCloudModel(cloudModelPath);

关键注意事项

  • 2-legged令牌的有效期为1小时,需确保Work Item提交时令牌未过期。
  • 确认目标BIM 360文件夹的GUID正确,且Forge应用有权限访问该文件夹。
  • Revit 2022及以上版本支持CloudUtility.SetCloudAccessToken方法,低版本需使用对应兼容API。

内容的提问来源于stack exchange,提问作者Frank P Archi Dev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:27:46