Dynamo
Primer for v2.0
简体中文
简体中文
  • 关于
  • 简介
    • 什么是 Dynamo 以及它是如何工作的?
    • Primer 用户手册、Dynamo 社区和平台
  • Dynamo 设置
  • 用户界面
    • 工作空间
    • 库
  • 节点和导线
  • 基本节点和概念
    • 节点索引
    • 计算设计的几何图形
      • 几何图形概述
      • 向量、平面和坐标系
      • 点
      • 曲线
      • 曲面
      • 实体
      • 网格
    • 程序的构建块
      • 数据
      • 数学
      • 逻辑
      • 字符串
      • 颜色
    • 使用列表进行设计
      • 什么是列表
      • 使用列表
      • 列表的列表
      • n 维列表
    • Dynamo 中的词典
      • 什么是词典
      • 词典节点
      • 代码块中的词典
      • Revit 使用案例
  • 自定义节点和软件包
    • 自定义节点
      • 自定义节点简介
      • 创建自定义节点
      • 发布到库
    • 软件包
      • 软件包简介
      • 软件包案例研究 - Mesh Toolkit
      • 开发软件包
      • 发布软件包
      • Zero-Touch 输入
  • 适用于 Revit 的 Dynamo
    • Revit 连接
    • 选择
    • 编辑
    • 创建
    • 自定义
    • 记录
  • Dynamo for Civil 3D
    • Civil 3D 连接
    • 快速入门
    • 节点库
    • 样例工作流
      • 道路
        • 灯杆放置
      • 浇口面
        • 服务设施放置
      • 公共设施
        • 重命名结构
      • 轨道
        • 间隙包络
      • 勘测
        • 点编组管理
    • 高级主题
      • 对象绑定
      • Python 和 Civil 3D
    • Dynamo 播放器
    • 有用的软件包
    • 资源
  • 在 Dynamo 中编码
    • 代码块和 DesignScript
      • 什么是代码块
      • DesignScript 语法
      • 简写
      • 函数
    • 使用 DesignScript 的几何图形
      • DesignScript 几何图形基础知识
      • 几何基本体
      • 向量数学
      • 曲线:内插和控制点
      • 平移、旋转和其他变换
      • 曲面:内插、控制点、放样、旋转
      • 几何参数化
      • 相交和修剪
      • 几何布尔
      • Python 点生成器
    • Python
      • Python 节点
      • Python 和 Revit
      • 设置自己的 Python 模板
    • 语言更改
  • 最佳做法
    • 图形策略
    • 脚本编写策略
    • 脚本参考
    • 管理您的程序
    • 在 Dynamo 中高效处理大型数据集
  • 样例工作流
    • 快速入门工作流
      • 参数化花瓶
      • 吸引器点
    • 概念索引
  • 开发人员入门
    • 从源代码构建 Dynamo
      • 从源代码构建 DynamoRevit
      • 在 Dynamo 中管理和更新依赖项
    • 为 Dynamo 开发
      • 快速入门
      • Zero-Touch 案例研究 - 网格节点
      • 在 Zero-Touch 节点中执行 Python 脚本 (C#)
      • 进一步了解 Zero-Touch
      • 高级 Dynamo 节点自定义
      • 在 Dynamo 软件包中使用 COM(互操作)类型
      • NodeModel 案例研究 - 自定义 UI
      • 更新 Dynamo 2.x 的软件包和 Dynamo 库
      • 更新 Dynamo 3.x 的软件包和 Dynamo 库
      • 扩展程序
      • 为 Dynamo 2.0+ 定义自定义软件包组织
      • Dynamo 命令行界面
      • Dynamo 集成
      • 为适用于 Revit 的 Dynamo 开发
      • 发布软件包
      • 从 Visual Studio 构建软件包
      • 软件包形式的扩展
    • 拉取请求
    • 测试期望
    • 示例
  • 附录
    • 常见问题解答
    • 可视化编程和 Dynamo
    • 资源
    • 发行说明
    • 有用的软件包
    • 示例文件
    • 主体集成图
    • 下载 PDF
    • Dynamo 键盘快捷键
Powered by GitBook
On this page
  • 几何图形生成与细分
  • 内存使用
  • Revit API
Edit on GitHub
Export as PDF
  1. 最佳做法

在 Dynamo 中高效处理大型数据集

Previous管理您的程序Next样例工作流

Last updated 2 months ago

此页面介绍在 Dynamo 中高效处理大型数据集的一些经验法则。希望您可以使用这些提示来识别图表中的瓶颈,以便您的图表在几分钟内执行,而不是几个小时。

内容:

  • 几何图形生成与细分

  • 内存使用

  • Revit API

几何图形生成与细分

在 Dynamo 中,创建几何图形和绘制它是两个完全不同的事件。通常,与绘制对象相比,创建几何图形的速度要快得多,使用的内存也更少。您可以将几何图形视为制作西装的测量值列表,而细分是西装本身。您可以从它的尺寸中看出很多关于这套西装的信息:手臂有多长,它要花多少钱等,但您几乎总是需要看到并试穿完成的西装,看看它是否正确。同样,对于未细分的几何图形,可以确定其边界框、面积、体积;使其与其他几何图形相交;并将其导出为 SAT 或 Revit。但是,您几乎总是必须细分几何图形才能感觉到它是否正确。

如果 Dynamo 图形包含许多对象,并且在执行过程中速度降低,则可以从图形中移除细分步长以加快速度。

Dynamo 中的几何图形节点始终是镶嵌细分的*。这样,您就有两个选项来处理未细分的几何图形:Python 节点和 ZeroTouch 节点。只要您不从 Python 或 ZeroTouch 节点返回几何图形对象,就不会细分该几何图形。对于实例,如果图形具有多个点节点,这些节点连接到多个线节点、连接到多个放样节点、连接到多个加厚节点,则将在每一步中细分几何图形。相反,可以将此逻辑捆绑到 Python 或 ZeroTouch 节点中,并且仅从节点返回最终对象。

有关使用 ZeroTouch 节点的详细信息,请参见本 Primer 的部分。

内存使用

如果不再细分几何图形,则可能会因过多的几何图形累积而遇到内存瓶颈。Dynamo 中的几何图形对象在创建时消耗的内存量很小,但并非微不足道。如果您正在处理数十万或数百万个对象,这可能会累积起来并导致 Dynamo 或 Revit 崩溃。在 Dynamo 2.5 及更高版本中,通过处理未使用的对象以隐式方式处理该操作,但如果使用的版本早于 2.5,则避免创建大量几何图形的一种方法是,在完成对象处理后处理这些对象。例如,假设您正在创建数十万条 NurbsCurve,每条 NurbsCurve 需要数十个点。创建它们的一种方法是在 Dynamo 中创建二维列表,并将其输入到“NurbsCurve.ByPoints”节点。但是,这需要创建数百万个点。另一种方法是使用 Python 或 ZeroTouch 节点。在此节点中,可以创建十几个点,将其发送到 NurbsCurve.ByPoints 中,然后使用 Dispose() 方法调用处理这十几个点。有关使用 ZeroTouch 节点的详细信息,请参见本 Primer 的部分。在某些情况下,在创建几何图形对象后处理这些几何图形对象会显著减少您使用的内存量;尽管我们会为使用 Dynamo 2.5 及更高版本的用户处理此问题,但如果用例需要在确定性时间减少内存,我们建议用户仍显式处理几何图形。请参见 ,以详细了解 Dynamo 2.5 中引入的新稳定性功能。

Revit API

如果您积极地在 ZeroTouch 或 Python 节点中处理对象,但仍遇到内存或性能问题,则可能需要完全绕过 Dynamo,直接通过 API 创建 Revit 对象。例如,可以解析 Excel 文件以获取点信息,然后使用该信息通过其 API 创建 XYZ 图元和其他 Revit 图元。此时,Revit 将成为无法避免的最终瓶颈。

针对 Dynamo 开发
针对 Dynamo 开发
Dynamo 几何图形稳定性改进