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 Player
    • 有用的软件包
    • 资源
  • Forma Beta 版中的 Dynamo
    • 在 Forma 中设置 Dynamo Player
    • 在 Dynamo Player 中添加和共享图形
    • 在 Dynamo Player 中运行图形
    • Dynamo 计算服务与 Desktop 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 集成
      • 为 Dynamo For Revit 开发
      • 发布软件包
      • 从 Visual Studio 构建软件包
      • 软件包形式的扩展
    • 拉取请求
    • 测试期望
    • 示例
  • 附录
    • 常见问题解答
    • 可视化编程和 Dynamo
    • 资源
    • 发行说明
    • 有用的软件包
    • 示例文件
    • 主体集成图
    • 下载 PDF
    • Dynamo 键盘快捷键
Powered by GitBook
On this page
  • 目标
  • 关键概念
  • 版本兼容性
  • 数据集
  • 解决方案
  • 获取 Excel 数据
  • 获取道路要素线
  • 生成坐标系
  • 创建块参照
  • 结果
  • 小贴士:在 Dynamo 中可视化
  • 想法
Edit on GitHub
Export as PDF
  1. Dynamo for Civil 3D
  2. 样例工作流
  3. 道路

灯杆放置

Previous道路Next浇口面

Last updated 1 month ago

Dynamo 的许多绝佳用例之一是沿道路模型动态放置离散对象。通常情况下,需要将对象放置在与沿道路插入的装配无关的位置,手动完成这项任务非常繁琐。当道路的水平或垂直几何图形发生更改时,会引入大量返工。

目标

关键概念

  • 从外部文件读取数据(在本例中为 Excel)

  • 组织词典中的数据

  • 使用坐标系控制位置/比例/旋转

  • 放置块参照

  • 在 Dynamo 中可视化几何图形

版本兼容性

此图形将在 Civil 3D 2020 及更高版本上运行。

数据集

首先下载下面的样例文件,然后打开 DWG 文件和 Dynamo 图形。

最好将 Excel 文件和 Dynamo 图形保存在同一目录中。

解决方案

下面概述了此图形中的逻辑。

  1. 读取 Excel 文件并将数据输入到 Dynamo 中

  2. 从指定的道路基准线获取要素线

  3. 沿道路要素线以所需的桩号生成坐标系

  4. 使用坐标系将块参照放置在模型空间中

开始吧!

获取 Excel 数据

在本示例图形中,我们将使用 Excel 文件来存储 Dynamo 将用于放置灯杆块参照的数据。该表如下所示。

使用 Dynamo 从外部文件(如 Excel 文件)读取数据是一个很好的策略,尤其是当数据需要与其他团队成员共享时。

Excel 会如下所示输入到 Dynamo 中。

现在,我们已有数据,需要按列(“道路”、“基准线”、“点代码” 等)对数据进行拆分,以便可以在图形的其余部分中使用该数据。执行此操作的常见方法是使用 List.GetItemAtIndex 节点并指定我们所需每列的索引号。例如,“道路” 列位于索引 0 处,“基准线” 列位于索引 1 处,依此类推。

看起来不错,对吧?但这种方法有潜在问题。如果 Excel 文件中列的顺序将来发生更改,该怎么办?在两列之间添加新列,又该怎么办?然后,图形将无法正常运行,需要更新。我们可以通过将数据放入到词典中、将 Excel 列标题作为 键、将数据的其余部分作为 值,来使图形适应未来变化。

如果您对使用词典不熟悉,请参见 Dynamo 中的词典 部分。

由于这允许灵活更改 Excel 中列的顺序,从而使图形更具弹性。只要列标题保持不变,即可使用 键(即列标题)从词典中检索数据,这是我们接下来要执行的操作。

获取道路要素线

现在,我们已输入 Excel 数据并准备就绪,让我们开始使用该数据以从 Civil 3D 中获取有关道路模型的一些信息。

  1. 按名称选择道路模型。

  2. 获取道路内的特定基准线。

  3. 通过点代码获取基准线内的要素线。

生成坐标系

现在,我们将沿道路要素线以我们在 Excel 文件中指定的桩号值生成坐标系。这些坐标系将用于定义灯杆块参照的位置、旋转和比例。

如果您对使用坐标系不熟悉,请参见 向量、平面和坐标系 部分。

请注意,在此处使用代码块可旋转坐标系,具体取决于坐标系位于基准线的哪一侧。这可以使用多个节点序列来实现,但这是一个很好的例子,说明只需编写代码块即可。

如果您对使用代码块不熟悉,请参见 代码块和 DesignScript 部分。

创建块参照

我们即将完成!我们已有能够实际放置块参照所需的所有信息。首先,使用 Excel 文件中的 块名称 列获取我们所需的块定义。

在此处,最后一步是创建块参照。

结果

当运行图形时,您应该会在模型空间中看到新的块参照沿道路显示。以下是一个很酷的部分 - 如果图形的执行模式设置为“自动”,然后您编辑 Excel 文件,则块参照会自动更新!

可以在 用户界面 部分中,了解有关图形执行模式的详细信息。

以下是一个使用 Dynamo 播放器运行图形的示例。

如果您对使用 Dynamo 播放器不熟悉,请参见 Dynamo Player 部分。

小贴士:在 Dynamo 中可视化

在 Dynamo 中可视化道路几何图形以提供上下文可能会很有帮助。此特定模型已在模型空间中提取了道路实体,因此让我们将这些道路实体输入到 Dynamo 中。

但我们还需要考虑其他一些事项。实体是一种较“重”的几何图形类型,这意味着此操作会降低图形的运行速度。如果有一种简单方法来 选择 我们是否需要查看实体,那就太好了。显而易见的答案是,只需断开连接 Corridor.GetSolids 节点,但这会对所有下游节点产生警告,这有点乱。在这种情况下,ScopeIf 节点的作用确实显著。

  1. 请注意,Object.Geometry 节点的底部有一个灰色条。这意味着节点预览处于关闭状态(可通过在节点上单击鼠标右键进行访问),从而使 GeometryColor.ByGeometryColor 节点能够避免与其他几何图形“争抢”后台预览中的显示优先级。

  2. ScopeIf 节点基本上使您能够有选择地运行整个节点分支。如果 test 输入为 false,则连接到 ScopeIf 节点的每个节点都不会运行。

以下是 Dynamo 后台预览中的结果。

想法

以下是一些有关如何扩展此图形功能的想法。

将 旋转 列添加到 Excel 文件中,然后使用该列来驱动旋转坐标系。

将 水平或垂直偏移 添加到 Excel 文件中,以便灯杆可以根据需要偏离道路要素线。

直接在 Dynamo 中使用起点桩号和典型间距生成桩号值,而不是使用具有桩号值的 Excel 文件。

沿道路在 Excel 文件中指定的桩号值处放置灯杆块参照。

任务完成!

🎯
🎉
232KB
Roads_CorridorBlockRefs.dyn
54MB
Roads_CorridorBlockRefs.dwg
12KB
LightPoles.xlsx
Excel 文件表结构
将 Excel 数据输入到 Dynamo 中
将 Excel 数据放入到词典中
从词典中检索数据
沿道路要素线获取坐标系
从文档中获取我们所需的块定义
在模型空间中创建块参照
更新 Excel 文件并在 Civil 3D 中快速查看结果
使用 Dynamo 播放器运行图形并在 Civil 3D 中查看结果
在 Dynamo 中可视化道路几何图形