对于与主机应用程序(如 Revit)的更成熟的 Dynamo 集成,Dynamo 附带了一个称为 Dynamo Player 的可选简化界面,允许您从列表中选择图形,通过动态界面提供必要的用户输入,并运行图形的执行。Dynamo Player 可以将 Dynamo 图形转换为在许多方面类似于主机应用程序的自定义加载项的内容,其优点是无需深入了解主机应用程序 API 即可开发它们。
为什么使用 Dynamo
Dynamo 允许设计人员执行更多操作并控制复杂的建模,否则使用主机应用程序的开箱即用功能手动完成这些建模是不可能的、极其困难或耗时的。
Dynamo 可以提供一种方法来实现更高级别的模型数据一致性,以确保跨多个项目和团队获得更好的质量,而无需依赖个人的技能,捕获最佳实践并通过自动化在整个业务中扩展它们。
Dynamo 允许重复性任务的自动化,减少实现相同结果所需的工作量,并允许设计师专注于需要批判性思维的工作部分。
Dynamo 特别通用,允许没有编码背景的设计人员对解决方案进行原型设计,以解决眼前的问题,并以专业开发人员易于理解的语言表达他们的需求。开发人员有可能专注于充足的开发和实施,而不会冒成为其他部门瓶颈的风险。如有必要,经验丰富的开发人员可以扩展 Dynamo 中的节点,甚至可以覆盖或向应用程序添加新行为,以满足公司需求和项目要求。此外,Dynamo 还提供开箱即用的功能,例如读取和写入 Excel 电子表格或实现创建-读取-更新-删除范例。Dynamo 还减少了发布新 API 时更新代码的需求,因为可视化编程方法几乎不受弃用周期的影响。
Dynamo 文件的结构为 JSON 文件,这是 Dynamo 应用程序用来实现动态解释此文本中的内容的逻辑的有组织的数据集合。这意味着 Dynamo 文件不能像用 C# 编写的插件那样“兼容”或锁定以防止有人摆弄节点的逻辑,归根结底它只是一个任何人都可以打开的文本文件文本编辑器。
CivilConnection 和 CivilPython
CivilConnection 是 Dynamo for Revit 的 Dynamo 自定义包的名称,它为 Autodesk Consulting 项目启用 Civil 3D - Dynamo - Revit 技术堆栈,这些项目被称为“线性结构”。它允许使用在打开的Civil 3D文档中定义的线性参考系统(例如,道路,路线,要素线等)来创建和/或更新Revit文档中的图元。它还使您能够将图元从 Revit 文档导入和更新到 Civil 3D 文档中。
设计演变的下一步是引入算法,一组指令,允许生成对象并可以产生可预测结果的规则系统的可能性。这种方法增强了设计人员在软件中引入新的动态关系的能力,这些关系最初不是为软件设计的。Civil 3D 中一个非常简单的应用是沿走廊创建离散元素(例如,沿铁轨的混凝土连接),以便将离散对象的位置和方向连接到走廊中的要素线。
继同年 4 月民用 3D 2020 全球发布后,2019 年 6 月首次在 Dynamo for Civil 3D 上举办了关于设计自动化的现场网络研讨会。在网络研讨会中,介绍了如何将自动化用于铁路、公路和现场开发的土木工作流程的示例。查看网络研讨会录像。网络研讨会中演示的示例中使用的演示文稿和数据集可以在 Dynamo 论坛的 Civil 3D 部分的这篇文章中找到。
民用 3D 发电机
在Civil 3D 2020中,可以找到与Dynamo 的集成。最初,Dynamo for Civil 3D 作为单独的安装提供,可从 Civil 3D 2020 插件下的 manage.autodesk.com 访问。在Civil 3D 2020.1中,Dynamo直接随产品一起提供。
当工作区设置为Civil 3D时,可以从功能区上“可视化编程”面板下的“管理”选项卡访问Civil 3D的Dynamo for Civil 3D。当前有两个图标,一个用于启动 Dynamo 应用程序界面,另一个用于启动运行脚本的无外设 Dynamo 会话。
或者,可以在命令行中键入AECCLAUNCHDYNAMO命令启动Dynamo。
Dynamo for Civil 3D 附带一组示例用例,用于展示如何应用计算设计来通过自动化增强运输工作流程。需要考虑两个组件:AutoCAD 对象和 Civil 3D 对象。在 Dynamo for Civil 3D 的这些初始版本中,可用的节点主要集中在启用处理路线和走廊的运输模型创作工作流上。在未来,我们可以期待找到更多可通过Dynamo访问的对象,并实现可以实现其他土木学科和BIM使用的功能(例如,图纸制作,可视化)。
Dynamo 可以读取 DWG 文件中的数据,对于对象,它可以返回代理或表示 Dynamo 库中节点的“包装器”。Dynamo 还可以将一组给定的对象(例如直线、折线、圆、文本、块参考等)写回 DWG,并在此过程中跟踪通过 Dynamo 创建的对象。
AutoCAD 和 Civil 3D 节点
本节的目的不是列出 Dynamo for Civil 3D 中当前存在的节点 - 这将毫无意义,因为它们可以在版本之间发生很大变化。更重要的是了解节点在 Dynamo 库中的组织方式、对象类型之间的关系以及当前限制是什么。
民用 3D 发电机的节点结构。
发电机绑定
当 Dynamo 应用程序可见并且图形在 DWG 中创建对象时,可以在 Dynamo 文件本身中序列化 Dynamo 拥有的对象的跟踪。此机制称为“绑定”:对于从 Dynamo 创建对象到 DWG 的每个节点,Dynamo 将其“指纹”存储在 Dynamo JSON 结构的“绑定”部分中,以便在输入发生更改时,Dynamo 可以放心地仅相应地更新图形拥有的对象。用户需要在执行后保存文件,以便 Dynamo 能够将跟踪数据存储到“绑定”部分中。
如果 Dynamo 图中没有有效的绑定(例如,绑定已从 JSON 文件中删除,或者有人手动删除了 Dynamo 生成的对象,或者 Dynamo 图以前用于其他 DWG 文件),则在执行后将创建新对象而不是更新现有对象,并且 JSON 文件中的绑定关系将在用户保存 Dynamo 文件后立即被覆盖。
根据设计,Dynamo for Civil 3D 一次连接一个 DWG 文档,并且在整个会话中仅与该文档交互。这是一个限制,它模仿了我们在 Dynamo for Revit 中找到的相同实现。这部分是由于 Dynamo 中的绑定的工作方式:仅当您确保 Civil 3D 模型和 Dynamo 文件之间存在 1:1 关系时,才能具有动态行为。
使用“运行脚本”选项时,Dynamo 界面不可见,这意味着在执行后,用户无法保存图形。这意味着 JSON 文件的绑定部分在执行后被清除,Dynamo 图更像是“即发即弃”,而不是动态更新现有对象。我们发现,如果对象是通过 Python 脚本而不是使用 Dynamo 节点创建的,则会发现类似的行为(无绑定)。因此,建议为 Dynamo 图定义一个命名约定,以显示图形与 Civil 3D 模型之间的关系。
发电机标准
当 Dynamo 在 2015 年允许创建节点组和颜色时 (0.8.1),我开发了一个标准来统一 Dynamo 图形的外观和感觉。该标准基于一个非常简单的事实:模型上的每个自动化,无论使用何种语言,都是一系列功能任务。我在 Dynamo 的调色板中为这些逻辑函数序列关联了一种颜色,从左到右,就像看书一样。
采用标准可提高可读性,并支持在公司内采用 Dynamo 图形。此外,围绕逻辑留下详尽的评论是一种附加值和最佳实践,应始终应用于任何开发。
但是,对于节点组,最好非常简洁,并分配一个简短的句子来表达任务,例如Verb + Noun,它迫使开发人员传达组中节点集合应该做什么的高级想法。这就是为什么建议使用例如 BPMN 图来规划开发,以用作在 Dynamo 中重命名节点组的草稿。
创建/更新模型对象,这是一组功能,可将 Dynamo 抽象对象转换为主机应用程序的具体模型对象。此工作流的一个例子可能是沿路边创建护柱。
在路边创建护柱的逻辑。
土木工作流程的计算设计
上面提到的网络研讨会简要讨论了一些用例,以演示 Dynamo 在三个不同领域的设计自动化应用:铁路、公路和现场开发。本文的范围是提供一些上下文,并突出显示网络研讨会期间使用的图形背后的逻辑,并指出用于获取结果的 Dynamo for Civil 3D 功能。本文档中使用的方法解释了目标和用于实现目标的逻辑、所涉及的对象类型以及如何使用 Dynamo 节点查找将逻辑保持在一起的关系。
轨
Civil 3D 2020 在支持铁路工作流方面进行了许多改进。有关这些改进的完整列表,请参阅发行说明下的Civil 3D联机帮助。在自动化方面,识别与其结果相关的任务组件总是很有用的,例如做得更多、做得更好或用更少的努力去做。
Civil 3D已经提供了一套工具来处理线性元素(如实际轨道)的建模和管理,那么自动化可以做些什么来改善建模工作流程呢?下面介绍的用例涵盖了不同的方面,从详细建模到通过可视化编程使用外部数据源,利用 Dynamo 实现 Civil 3D 功能。
混凝土系带沿着铁路走廊轨道的中心线,块参考以 2' (ca 0.6m) 的固定间隔放置,与路线正交。在高级别上,相对容易考虑放置块参照所需的内容:名称、图层、X、Y 和 Z 中的位置(其中 Z 是线性参照的高程,例如基线或轨道要素线)以及围绕垂直轴的旋转。要放置块引用,需要更多数据,但可以安全地假设这些是默认值(例如比例因子,当然还有我们需要创建块引用的目标块,换句话说,文档的模型空间)。
现在是时候看看混凝土关系的旋转了:要求是使这些元素与对齐正交。块参考的默认方向是已知的(例如,平行于全局 X 轴),因此要求计算使块参考与给定站的对齐正交所需的旋转。在 Dynamo 中,要计算角度,需要使用矢量进行操作。关于 DynamoPrimer.com,每个 Dynamo 用户都应该熟悉一些非常有用的三角函数概念,这里的假设是读者理解这是如何完成的。
在 Dynamo 的 2020.1 版本中,通过引入一个将坐标系作为输入的节点,块参考的创建得到了极大的简化 - 了解更多信息。该对象立即传达了位置和方向的信息,并为我们节省了很多麻烦,试图计算每个混凝土拉杆的旋转。
在几何术语中,要求是计算位于给定站点的基线或特征线曲线上的点(该站点沿用于创建走廊的路线进行测量)以及该点中的曲线方向。有一个 Dynamo 节点正是这样做的。
Dynamo 中的循环通过几个称为系带策略和复制指南的范例进行处理。有关其工作原理的详细说明,请参阅Dynamo GitHub上的Wiki页面,从这里开始。
简而言之:节点上的每个输入端口都有一个默认的输入“等级”(单个输入、输入列表、输入列表列表等)。如果提供的输入的秩高于默认值,这将触发循环,节点定义的函数将重复多次。在每次重复时,函数将遍历输入列表。为了准确确定如何完成、多少次以及如何构建输出,用户可以通过右键单击和/或使用节点输入端口旁边的 V 形来指定节点上的系带策略。