设计工作经常涉及在设计的各部分之间建立视觉、系统或几何关系。多数情况下,这些关系由工作流开发,工作流按一定规则实现从概念到结果的形成。也许并不了解,其实我们是按一定算法进行工作的 - 定义一组循序渐进的操作,这些操作遵循输入、处理和输出的基本逻辑。编程让我们可以继续通过这种方式进行工作,但采用的方法是对算法进行规范化。
尽管提供了一些强大机会,但算法这一术语本身可能会带来一些误解。算法可能会产生意想不到、疯狂或酷炫的效果,但它们并不是魔术。实际上,它们本身平淡无奇。让我们使用一个实例,如折纸鹤。我们从一张正方形纸开始(输入)、遵循一系列折叠步骤(处理操作),然后完成折叠一张纸鹤(输出)。
算法存在于何处?它是抽象的步骤集,我们可以通过两种方式来表示它们 - 文字或图形。
文字说明:
从一张正方形纸开始,有颜色的一面朝上。对折,然后打开。换另一方向对折。
翻转纸张,白色一面朝上。将纸张对折、折出折痕并打开,然后换另一方向再次对折。
使用折出的折痕,将模型的 3 个顶角向下折到底角。展平模型。
向中心折叠顶部三角形翼片,然后展开。
向下折叠模型顶部、折出折痕,然后展开。
打开模型最上方的翼片、将它向上翻折,同时向内按压模型两侧。向下展平,折出折痕。
翻转模型,然后对另一侧重复步骤 4-6。
向中心折叠顶部翼片。
对另一侧重复上述操作。
向上折叠模型的两条“腿”、折出折痕,然后展开。
沿刚才折出的折痕向内反向折叠“腿”。
向内反向折叠一侧以制作头部,然后向下折叠翅膀。
现在,已完成制作一个纸鹤。
图形说明:
使用其中任一组说明都应该可以完成纸鹤制作;如果您按照自己的方式制作,那么您已应用了一种算法。唯一的区别是我们读取该组说明的形式化的方式,该方式会引导我们进行编程。编程(通常是 计算机编程 的简写)是将一系列操作的处理规范化为可执行程序的行为。如果我们将上述用于制作纸鹤的说明转换为计算机可以读取和执行的格式,那么我们就是在编程。
编程的关键及我们会遇到的第一个障碍是:必须依靠某种形式的抽象形式,才能与计算机进行有效通信。采用任何数量的编程语言(如 JavaScript、Python 或 C)形式。如果我们可以写出一组可重复的说明(如用于折纸鹤),我们只需为计算机转换它即可。我们正在努力让计算机能够制作纸鹤,甚至众多不同的纸鹤(其中每个纸鹤都略微不同)。这就是编程的力量 - 计算机将重复执行我们分配给它的任何任务或任务集,而不会出现延迟和人为错误。
可视化编程已定义
单击下面的链接下载示例文件。
可以在附录中找到示例文件的完整列表。
如果您的任务是为折叠纸鹤编写说明,您将如何处理?您要使用图形、文字还是两者的某种组合来制作它们?
如果您的回答中包含图形,那么可视化编程绝对适合您。编程和可视化编程的过程基本相同。它们利用相同的规范化框架;但是,我们通过图形(或“可视化”)用户界面定义程序的说明和关系。我们将预打包的节点连接在一起,而不是键入语法约束的文字。下面是对同一算法(即“通过点画圆”)的比较,分别用节点和代码编程:
可视化程序:
文本程序:
我们的算法结果:
以此类方式进行编程的可视化特性降低了入门门槛,无需与设计师经常沟通。Dynamo 属于可视化编程范例,但正如我们稍后所见到的,我们仍可以在应用程序中使用文本编程。
在本节中,您可以找到使 Dynamo 技能更进一步的资源。我们还在此 Primer 中添加了重要节点的索引、一组有用的软件包以及示例文件库。请随意添加到此部分...请记住,Dynamo Primer 是开源的!
“此 Wiki 用于了解如何使用 Dynamo API、支持库和工具进行开发。”
https://github.com/DynamoDS/Dynamo/wiki
此博客是 Dynamo 团队编写的最新文章集合,这些文章讨论了新功能、工作流和有关 Dynamo 的所有内容。
编程语言旨在表达创意,通常涉及逻辑和计算。除了这些目标,还创建了 Dynamo 文本语言(以前称为 DesignScript)来表达设计意图。通常,计算设计是探索式设计,Dynamo 尝试支持此方法:我们希望语言灵活且快速,能够将设计从概念通过设计迭代到达最终形式。本手册旨在让没有编程或建筑几何图形知识的用户全面了解这两个交叉领域的各种主题。
http://dynamobim.org/wp-content/links/DesignScriptGuide.pdf
Dynamo Primer 是一个开源项目,由 Matt Jezyk 和 Autodesk 的 Dynamo 开发团队发起。本入门的第一个版本由 Mode Lab 开发。要为其作出贡献,请创建分支库、添加内容,然后提交 Pull 请求。
https://github.com/DynamoDS/DynamoPrimer
此页面概述了使用“Zero Touch”界面以 C# 开发自定义 Dynamo 节点的过程。在大多数情况下,可以输入 C# 静态方法和类而无需修改。如果库仅需要调用函数,而不构建新对象,则可以通过静态方法轻松实现。当 Dynamo 加载 DLL 时,它会去除类的名称空间,并将所有静态方法显示为节点。
https://github.com/DynamoDS/Dynamo/wiki/Zero-Touch-Plugin-Development
Python 是一种解释性、交互式、面向对象的编程语言。它包含模块、例外、动态类型、非常高级的动态数据类型和类。Python 将强大的功能与非常清晰的语法相结合。它可与许多系统调用和库以及各种窗口系统进行接合,并且可在 C 或 C++ 中扩展。它还可用作扩展语言,用于需要可编程界面的应用程序。最后,Python 是可移植的:它在许多 Unix 变量、Mac 以及 Windows 2000 及更高版本上运行。Python 的初学者手册会链接到其他介绍性教程和资源,可用于学习 Python。
https://www.python.org/about/gettingstarted
AForge.NET 是开源 C# 框架,专为“计算机视觉和人工智能”领域(图像处理、自然网络、遗传算法、模糊逻辑、机器学习、机器人等)的开发人员和研究人员而设计。
http://www.aforgenet.com/framework/
MathWorld 是一个在线数学资源,由 Eric W. Weisstein 组建,并由数千名贡献者提供协助。由于 MathWorld 的内容在 1995 年首次上线,因此在数学和教育社区中 MathWorld 都作为数学信息的联结而出现。其条目在涵盖所有教育级别的期刊和书籍中被广泛引用。
“这些帖子主要与 Revit 平台有关,其中提供有关如何体验它的建议。”
“此记事本会尝试在设计工作流环境中学习和应用 Revit API 时弥补一些‘资源缺陷’”
http://wiki.theprovingground.org/revit-api
“RevitPythonShell 向 Autodesk Revit 和 Vasari 添加了 IronPython 解释器。” 此项目早于 Dynamo,是用于 Python 开发的一个很好参考。RPS 项目:
https://github.com/architecture-building-systems/revitpythonshell
开发人员博客:
http://darenatwork.blogspot.com/
来自 BIM 领域的一位顶尖专家的强大 Revit API 工作流目录。
archi-lab 是包含 50 多个自定义软件包的集合,这些软件包极大扩展了 Dynamo 与 Revit 交互的能力。archi-lab 软件包中包含的节点种类繁多,从基本的列表操作到适用于 Revit 的高级分析可视化框架节点。archi-lab 在软件包管理器中提供
BimorphNodes 是一个万能的功能强大工具节点的集合。该软件包的亮点包括超高效的碰撞检测和几何图形相交节点、ImportInstance (CAD) 曲线转换节点以及解决 Revit API 中限制的链接图元收集器。要全面了解可用的节点,请访问 BimorpNodes 词典。BimorphNodes 在软件包管理器中提供。
Bumblebee 是一种 Excel 和 Dynamo 互操作性插件,可显著提高 Dynamo 读写 Excel 文件的能力。
Clockwork 是用于 Dynamo 可视化编程环境的自定义节点集合。它包含许多与 Revit 相关的节点,但还包含许多用于其他目的节点,例如列表管理、数学运算、字符串操作、单位转换、几何操作(主要是边界框、网格、平面、点、曲面、UV 和向量)和嵌板。
DataShapes 是一个用于扩展 Dynamo 脚本用户功能的软件包。这一软件包侧重于为 Dynamo 播放器添加更多功能。有关详细信息,请访问 https://data-shapes.net/。要创建出色的 Dynamo 播放器工作流?使用此软件包。
DynamoSAP 是 SAP2000 的参数化界面,基于 Dynamo 构建。该项目使设计师和工程师能够使用 Dynamo 来驱动 SAP 模型,从而在 SAP 中大量生成和分析结构系统。该项目规定了一些常见工作流(这些工作流在随附的示例文件中进行了介绍),并为自动执行 SAP 中的典型任务提供了各种机会。
该库通过让用户可以展开曲面和多边形曲面几何图形,从而扩展 Dynamo/Revit 功能。该库允许用户先将曲面转换为平面镶嵌拓扑,然后在 Dynamo 中使用 Protogeometry 工具展开它们。此软件包还包含一些实验节点以及一些基本示例文件。
从 Illustrator 或使用 .svg 的 Web 输入向量图。这让您可以将手动创建的图形输入到 Dynamo 中,以便进行参数化操作。
Energy Analysis for Dynamo 允许在 Dynamo 0.8 中进行参数化能量建模和整体建筑能量分析工作流。Energy Analysis for Dynamo 允许用户从 Autodesk Revit 配置能量模型、提交到 Green Building Studio for DOE2 能量分析,以及深入研究分析返回的结果。该软件包由 Thornton Tomasetti 的核心工作室开发。
Firefly 是一组节点,这些节点使 Dynamo 能够与输入/输出设备(如 Arduino 微控制器)交互。由于数据流“实时”发生,因此 Firefly 通过 Web 摄像头、移动电话、游戏控制器、传感器等为数字世界和物理世界之间的交互式原型开发提供了许多机会。
Genius Loci 是适用于 Dynamo 的节点的汇编。它包含有益于 Revit 用户的有用节点。安装该软件包以探索某些功能,例如轻松与链接文件和 Revit 文档交互。
Mantis Shrimp 是一个互操作性项目,使您可以轻松将 Grasshopper 和/或 Rhino 几何图形输入到 Dynamo。
Dynamo Mesh Toolkit 提供了许多有用工具,用于处理网格几何图形。此软件包的功能包括能够输入外部文件格式的网格、从已有的 Dynamo 几何图形对象生成网格,以及通过顶点和连接信息手动构建网格。此外,此工具包还包含用于修改和修复网格几何图形的工具。
🧐 Monocle
Monocle 是适用于 Dynamo 2.0.x 的视图扩展。Monocle 包含一组用于软件包识别、图形清理等的有用工具!Monocle 旨在以一种让您认为_“这是内置在 Dynamo 中?”_的无缝方式向 Dynamo UI 添加功能。Monocle 在软件包管理器中提供。
Optimo 为 Dynamo 用户提供了使用各种进化算法来优化自定义设计问题的功能。用户可以定义问题目标或目标集以及特定的适应度函数。
Rhynamo 节点库为用户提供了从 Dynamo 中读写 Rhino 3DM 文件的功能。Rhynamo 使用 McNeel 的 OpenNURBS 库将 Rhino 几何图形转换为可用的 Dynamo 几何图形,从而支持可以在 Rhino 和 Revit 之间流畅地交换几何图形和数据的新工作流。此软件包还包含一些实验性节点,这些节点允许对 Rhino 命令行进行“实时”访问。
Rhythm 是一组有用的节点,可帮助您的 Revit 项目与 Dynamo 保持良好的节奏。基本上,它确实起到了一些相当好的作用。Rhythm 是开源的,主要使用 C# 构建,并向您的 Dynamo 添加 Revit 节点、核心节点和视图扩展。Rhythm 在软件包管理器上提供。
Spring 节点主要用于改进 Dynamo 与 Revit 的交互。更广泛的目标是探索任何有助于加快以 BIM 为中心的工作流的所有方法。许多节点使用 IronPython 或 DesignScript,可以作为学习两者特定语法和深入学习的良好起点。Spring 节点在软件包管理器上提供。
ARCHI-LAB
BimorpNodes
BumbleBee for Dynamo
Clockwork For Dynamo
Data|Shapes
DynamoSAP
Dynamo Unfold
Dynastrator
Energy Analysis for Dynamo
Firefly for Dynamo
Genius Loci
Mantis Shrimp
Mesh Toolkit
Optimo
Rhynamo
Rhythm
Spring 节点