You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于使用JavaScript/Python更新Revit(BIM)模型及网页查看的技术咨询

当然可以用 JavaScript 或 Python 来更新 Revit (BIM) 模型,同时也有成熟的方案能让你在网页浏览器里查看这些模型。作为经常处理Revit自动化和可视化的开发者,我给你详细拆解下这两个问题:

一、用 JavaScript/Python 更新 Revit 模型

1. JavaScript 方案

如果你想通过 JavaScript 操作 Revit 模型,最常用的是 Autodesk Forge Design Automation API(基于 Node.js 环境)。它允许你在云端调用 Revit 核心功能,无需本地安装 Revit 就能完成模型修改,比如批量调整构件参数、创建新元素等。

举个简单的 Node.js 示例,提交一个修改 Revit 模型参数的作业:

const { DesignAutomationClient } = require('forge-apis');

// 初始化客户端(需配置 Forge 开发者凭证)
const client = new DesignAutomationClient();

// 创建工作项,指定要运行的 Revit 插件和模型文件
const workItem = {
  activityId: '你的自定义活动ID',
  arguments: {
    inputFile: { url: 'oss://你的存储桶/input.rvt' },
    outputFile: { url: 'oss://你的存储桶/output.rvt', verb: 'put' },
    parameterName: { value: 'WallHeight' },
    parameterValue: { value: '3000' }
  }
};

// 提交工作项
client.createWorkItem(workItem, {}, {}, accessToken)
  .then(res => console.log('作业提交成功:', res.body))
  .catch(err => console.error('出错了:', err));

注意:你需要先在 Forge 平台创建自定义活动(Activity),关联一个能修改参数的 Revit 插件(可用 .NET 编写后打包上传)。

2. Python 方案

Python 操作 Revit 模型的生态更成熟,核心工具主要有两个:

  • pyRevit:开源的 Revit 插件框架,能直接在 Revit 内运行 Python 脚本,调用完整的 Revit API。
  • RevitPythonShell:类似 pyRevit,提供了 Revit 内部的 Python 代码运行环境。

比如用 pyRevit 编写修改墙高度的脚本:

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

# 获取当前 Revit 文档
doc = __revit__.ActiveUIDocument.Document

# 获取选中的墙元素
selected_elements = __revit__.ActiveUIDocument.Selection.GetElementIds()

# 开启事务修改模型(Revit API 要求修改必须在事务内)
with Transaction(doc, '批量修改墙高度') as trans:
    trans.Start()
    for elem_id in selected_elements:
        wall = doc.GetElement(elem_id)
        # 查找墙的高度参数(参数名称需匹配你的族定义)
        height_param = wall.LookupParameter('无连接高度')
        if height_param and height_param.IsEditable:
            height_param.Set(3000)  # Revit 内部单位为毫米,这里设置3米
    trans.Commit()

直接把这段代码复制到 pyRevit 的脚本编辑器中运行,就能修改选中墙的高度了。

二、在网页浏览器中查看 Revit 模型

最主流的方案是用 Autodesk Forge Viewer,这是基于 WebGL 的开源浏览器查看器,支持加载 Revit、CAD 等多种格式的模型。核心步骤如下:

  1. 将 Revit 模型上传到 Forge 的对象存储服务(OSS)。
  2. 调用 Forge 模型转换 API,将 .rvt 文件转换成浏览器支持的 SVF 格式。
  3. 在网页中嵌入 Forge Viewer 的 JS 库,加载转换后的模型。

给你一个简单的 HTML 示例,展示如何嵌入 Viewer:

<!DOCTYPE html>
<html>
<head>
    <title>Revit 模型在线查看</title>
    <!-- 引入 Forge Viewer 核心脚本与样式 -->
    <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"></script>
    <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css">
</head>
<body>
    <div id="forgeViewer" style="width: 100%; height: 800px;"></div>

    <script>
        // 初始化 Viewer 配置
        const viewerOptions = {
            env: 'AutodeskProduction',
            accessToken: '你的 Forge 访问令牌'
        };

        // 创建 Viewer 实例
        const viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
        viewer.start();

        // 加载转换后的模型(替换成你的模型URN对应的查看链接)
        const modelUrl = 'https://developer.api.autodesk.com/modelderivative/v2/designdata/你的模型URN/viewables/3d';
        Autodesk.Viewing.Document.load(modelUrl, (doc) => {
            const defaultView = doc.getRoot().getDefaultGeometry();
            viewer.loadDocumentNode(doc, defaultView);
        }, (err) => {
            console.error('模型加载失败:', err);
        });
    </script>
</body>
</html>

你需要先在 Forge 平台注册开发者应用,获取访问令牌,完成模型上传与转换后,才能得到可用的模型加载链接。

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

火山引擎 最新活动