发电机和计算设计Dynamo 是一个平台,使设计人员能够探索可视化编程、解决问题和创建自定义工具。 可视化编程是建立规则的过程,这些规则可以描述设计各部分之间的关系。规则和关系被形式化为算法。 算法是执行任务时要遵循的一组指令。这些说明可以是简单的英语、意大利语或法语等文本,也可以以图形方式表达,例如使用 UML 或 BPMN 等语言。 为了使计算机能够理解这些指令,需要采用一种人类可读但计算机也可以理解的中间语言。有几种可能的传统脚本语言,如C#,Python,JavaScript。 Dynamo 是一个可以直观地定义算法的平台,并且指令序列是使用称为节点的块生成的,这些块执行预定义的任务,使用连接器按顺序连接在一起。Dynamo 算法称为图形,用于强调可视化编程方法,这是 Dynamo 与任何其他脚本语言之间的主要区别之一。 Dynamo是某种数字瑞士刀,可以包含恰到好处的刀片,即使它的使用方式非常直观,它也非常有效。Dynamo的另一个重要特征是,无论出于何种原因,如果缺少刀片,它支持多种方法,要么从外部包的公共存储库添加一个刀片,要么使用传统的脚本语言(如Python或C#)创建更复杂的功能。 Dynamo 将编程商品化,使其更接近设计人员,负责复杂的操作,例如处理数据库和事务、序列化更改和更新模型,而不是执行“即发即弃”的自动化。Dynamo处于交互式工具(如Civil 3D或Revit)和更传统的脚本语言之间,以利用产品API。 Dynamo可以作为称为沙盒的独立应用程序找到,但也与Revit或Civil 3D等主机应用程序集成。有关 Dynamo 集成以及从何处获取它的更多信息,请访问 https://dynamobim.org/download/。 对于与主机应用程序(如 Revit)的更成熟的 Dynamo 集成,Dynamo 附带了一个称为 Dynamo Player 的可选简化界面,允许您从列表中选择图形,通过动态界面提供必要的用户输入,并运行图形的执行。Dynamo Player 可以将 Dynamo 图形转换为在许多方面类似于主机应用程序的自定义加载项的内容,其优点是无需深入了解主机应用程序 API 即可开发它们。 为什么使用 DynamoDynamo 允许设计人员执行更多操作并控制复杂的建模,否则使用主机应用程序的开箱即用功能手动完成这些建模是不可能的、极其困难或耗时的。 Dynamo 可以提供一种方法来实现更高级别的模型数据一致性,以确保跨多个项目和团队获得更好的质量,而无需依赖个人的技能,捕获最佳实践并通过自动化在整个业务中扩展它们。 Dynamo 允许重复性任务的自动化,减少实现相同结果所需的工作量,并允许设计师专注于需要批判性思维的工作部分。 Dynamo 特别通用,允许没有编码背景的设计人员对解决方案进行原型设计,以解决眼前的问题,并以专业开发人员易于理解的语言表达他们的需求。开发人员有可能专注于充足的开发和实施,而不会冒成为其他部门瓶颈的风险。如有必要,经验丰富的开发人员可以扩展 Dynamo 中的节点,甚至可以覆盖或向应用程序添加新行为,以满足公司需求和项目要求。此外,Dynamo 还提供开箱即用的功能,例如读取和写入 Excel 电子表格或实现创建-读取-更新-删除范例。Dynamo 还减少了发布新 API 时更新代码的需求,因为可视化编程方法几乎不受弃用周期的影响。 Dynamo 文件的结构为 JSON 文件,这是 Dynamo 应用程序用来实现动态解释此文本中的内容的逻辑的有组织的数据集合。这意味着 Dynamo 文件不能像用 C# 编写的插件那样“兼容”或锁定以防止有人摆弄节点的逻辑,归根结底它只是一个任何人都可以打开的文本文件文本编辑器。 CivilConnection 和 CivilPythonCivilConnection 是 Dynamo for Revit 的 Dynamo 自定义包的名称,它为 Autodesk Consulting 项目启用 Civil 3D - Dynamo - Revit 技术堆栈,这些项目被称为“线性结构”。它允许使用在打开的Civil 3D文档中定义的线性参考系统(例如,道路,路线,要素线等)来创建和/或更新Revit文档中的图元。它还使您能够将图元从 Revit 文档导入和更新到 Civil 3D 文档中。 自动化在基础设施领域并不是什么新鲜事。过去有过几次尝试,反复使用基于约束表单的插件来执行非常具体的任务。尽管它们不需要用户了解自动化步骤,但这些插件不够灵活,无法满足所有项目要求和需求。最重要的是,一些插件已经退役,留下了需要解决的技术差距。在考虑了所有这些因素之后,设计师直接为设计师开发的定制工具仍然是最佳解决方案。 CivilConnection通过工具包理念简化了原型的定义:它包含一系列通用的功能,足以涵盖大多数用例,可以组合起来解决非常具体的项目挑战。所有这些都使用可视化编程方法,而不是传统的脚本语言。 CivilConnection主要基于一种称为组件对象模型或COM的技术。多年来,Civil 3D和大多数Autodesk产品都引入了基于.NET的更高效API。 CivilPython背后的意图是启用与Revit中的Dynamo用户相同的原型设计方法,使用Python语法来利用.NET Revit API。CivilPython是一个自定义命令,可以在AutoCAD和Civil 3D中选择和执行Python脚本。它还具有命令的命令行版本,可以通过COM从CivilConnection启动。就是这样,现在CivilPython还包含一些命令,这些命令是CivilConnection使用.NET而不是COM访问数据所必需的。 CivilConnection和CivilPython是开源的,可以在此链接中找到,以及设计自动化 https://github.com/Autodesk/civilconnection 示例和文档 传统上,设计师运用他们的直觉来定义建筑物或桥梁的设计。设计意图在详细的图纸中捕获,并使用尺寸、文本注释等说明设计部件之间的关系、质量和数量。我们可以将这种过程称为“静态设计”。 借助专用的建模软件和智能参数化对象,设计过程发生了根本性的变化。设计师现在可以更快地探索更多选项;该软件负责更新三维零件之间关系的复杂系统,这要归功于以分析方式(例如,更改子装配体中的“厚度”)或图形方式(例如,使用目标覆盖子装配体中的“宽度”或“高程”参数)表示的参数。例如,在Civil 3D中,设计人员定义以下输入:对齐和垂直轮廓,基线区域并分配组件,指定采样频率并指定目标。然后,软件负责生成所有道路子元素(例如特征线、曲面、实体),并在任何用户输入发生变化时动态更新它们。 设计演变的下一步是引入算法,一组指令,允许生成对象并可以产生可预测结果的规则系统的可能性。这种方法增强了设计人员在软件中引入新的动态关系的能力,这些关系最初不是为软件设计的。Civil 3D 中一个非常简单的应用是沿走廊创建离散元素(例如,沿铁轨的混凝土连接),以便将离散对象的位置和方向连接到走廊中的要素线。 计算设计需要在设计师和软件之间有一个中间环境来原型化和组装这些新关系。它还需要在设计和软件之间使用一种中间语言,以将设计意图的规则转换为软件的说明。中间环境可以是VBA宏编辑器,Visual Lisp编辑器,MS Visual Studio等,以利用某种传统的脚本来定义指令序列。 Dynamo是一个中间环境,允许设计人员通过Python利用可视化编程和传统脚本,并在日常工作中探索计算设计方法。 对于开始进行计算设计的人,无论编码的专业水平如何,我能给出的最好的建议是计划自动化。定义算法中的所有步骤,识别输入及其供应商,定义使用输入的过程,并创建合适的输出,以后可以使用这些输出用于其他BIM用途。 一个非常直观的工具,允许您以可视化方式起草任何算法,称为业务流程建模表示法或BPMN。这种方法允许您抽象和分析手头的问题,并将其细分为可以在稍后阶段解决的较小问题,但不会失去对总体目标的关注。 这使您能够识别自动化的机会,以更少的努力提高效率。例如,如果输入的提供方式与通常略有不同,则可以大大简化流程(例如,减少步骤数,减少要处理的决策数量等),输入供应商可以毫不费力地做到这一点(例如,在子组件中采用点代码的命名约定),但在获取时可以带来很大的好处, 解释和处理数据。 BPMN还可用于“调试”现有流程或算法(无论它们是使用传统的脚本还是可视化编程开发的)。有一个名为BPMN的免费基于Web的工具。用于创建本文档中的关系图的 IO。强烈建议在任何设计过程中引入类似的东西,以捕捉想法,计划开发并构建问题,以便在寻求帮助时提出非常精确的问题。 继同年 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 库中的组织方式、对象类型之间的关系以及当前限制是什么。 发电机绑定当 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 模型之间的关系。
保罗·埃米利奥·塞拉(Paolo Emilio Serra)是一名建筑工程师。他曾在意大利米兰的一家建筑公司担任BIM经理5年。自2014年以来,他担任Autodesk的BIM实施顾问。在欧特克,他一直为工程公司提供客户成功服务,支持其业务流程中的BIM工作流程和数字化转型。Paolo的主要重点是自动化,创成式设计,AEC和ENI行业之间的集成。Paolo 自 2006 年以来一直是建筑爱好者和 Revit 用户。他开始发现使用Autodesk产品API和Dynamo实现自动化和定制的可能性。他开发了 CivilConnection Dynamo 包,用于在 Civil 3D 和 Revit 之间为线性结构 BIM 工作流创建动态关系。他还为Autodesk的产品团队提供支持,以引入Civil 3D的Dynamo。他拥有博客Punto Revit。 Safi Hage是一名结构工程师。自 2014 年以来,他是欧特克的指定支持专家,与专注于 AEC 行业的全球企业优先客户合作。在加入高级支持组织之前,他曾担任欧特克 BIM 技术顾问 6 年。 想要更多?下载完整的课程讲义以继续阅读。 |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-6-5 13:16
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.