Python 节点
为什么要在 Dynamo 的可视化编程环境中使用文本编程?可视化编程有许多优势。它使您无需在直观的可视化界面中学习特殊语法即可创建程序。但是,可视化程序可能会变得混乱,有时可能会在功能上有所降低。例如,Python 提供了更多可实现的方法来编写条件语句 (if/then) 和循环。Python 是一款功能强大的工具,可扩展 Dynamo 的功能,并允许您将许多节点替换为几行简明的代码。
可视化程序:

文本程序:
Python 节点
与代码块一样,Python 节点也是可视化编程环境中的脚本编写界面。Python 节点位于库中的“脚本”>“编辑器”>“Python 脚本”下。

双击节点会打开 Python 脚本编辑器(也可以在节点上单击鼠标右键,然后选择 “编辑...” )。您会注意到顶部的一些样本文字,旨在帮助您引用所需的库。输入存储在 IN 数组中。通过将值指定给 OUT 变量,可将这些值返回给 Dynamo

Autodesk.DesignScript.Geometry 库使您能够使用与代码块类似的点符号。有关 Dynamo 语法的详细信息,请参见 https://github.com/DynamoDS/DynamoPrimerNew/blob/master-chs/coding-in-dynamo/7_code-blocks-and-design-script/7-2_design-script-syntax.md以及 DesignScript 手册(要下载此 PDF 文档,请在链接上单击鼠标右键并选择“将链接另存为...”)。键入几何图形类型(如“Point.”),将显示用于创建和查询点的方法列表。

方法包括构造函数(如 ByCoordinates)、操作(如 Add)和查询(如 X、Y 和 Z 坐标)。
练习:使用 Python 脚本从实体模块创建图案的自定义节点
第 I 部分:创建 Python 脚本
单击下面的链接下载示例文件。
可以在附录中找到示例文件的完整列表。
在本示例中,我们将编写一个 Python 脚本,该脚本用于从实体模块创建图案,并将其转换为自定义节点。首先,我们使用 Dynamo 节点创建实体模块。

Rectangle.ByWidthLength:创建一个矩形,它将作为实体的基础。
Surface.ByPatch:将矩形连接到“closedCurve”输入以创建底部曲面。

Geometry.Translate:将矩形连接到“geometry”输入以向上移动它,从而使用代码块指定实体的基础厚度。
Polygon.Points:查询平移的矩形以提取角点。
Geometry.Translate:使用代码块创建与四个点对应的一列四个值,从而向上平移实体的一个角。
Polygon.ByPoints:使用平移的点来重建顶部多边形。
Surface.ByPatch:连接多边形以创建顶部曲面。
现在,我们有了顶面和底面,接下来让我们在两个轮廓之间放样来创建实体的侧面。

List.Create:将底部矩形和顶部多边形连接到索引输入。
Surface.ByLoft:放样两个轮廓以创建实体的侧面。
List.Create:将顶面、侧面和底面连接到索引输入以创建曲面列表。
Solid.ByJoinedSurfaces:连接曲面以创建实体模块。
现在,我们有了实体,接下来将 Python 脚本节点拖动到工作空间。

要向节点添加其他输入,请单击节点上的“+”图标。输入命名为 IN[0]、IN[1] 等,以指示它们表示列表中的各项。
首先定义输入和输出。双击该节点以打开 Python 编辑器。按照下面的代码,在编辑器中修改代码。

随着我们在练习中的进展,此代码将更有意义。接下来,我们需要考虑排列实体模块所需的信息。首先,我们需要知道实体的尺寸以确定平动距离。由于存在边界框 Bug,因此我们需要使用边曲线几何图形来创建边界框。

在 Dynamo 中查看 Python 节点。请注意,我们使用的语法与在 Dynamo 中节点标题中看到的语法相同。查看下面注释的代码。
由于我们将平移并旋转实体模块,因此我们使用 Geometry.Transform 操作。通过查看 Geometry.Transform 节点,我们知道需要源坐标系和目标坐标系来变换实体。源是实体的上下文坐标系,而目标是每个阵列模块的不同坐标系。这意味着我们需要遍历 X 和 Y 值,以每次变换不同的坐标系。

单击“运行”,然后保存代码。将 Python 节点与现有脚本连接,如下所示。

将 “Solid.ByJoinedSurfaces” 的输出连接为 Python 节点的第一个输入,然后使用“代码块”定义其他输入。
创建 “Topology.Edges” 节点,并使用 Python 节点的输出作为其输入。
最后,创建 “Edge.CurveGeometry” 节点,并使用“Topology.Edges”的输出作为其输入。
尝试更改种子值以创建不同的图案。还可以更改实体模块本身的参数以实现不同的效果。

第 II 部分:将 Python 脚本节点转换为自定义节点
现在,我们已创建了一个有用的 Python 脚本,接下来我们将它另存为一个自定义节点。选择 Python 脚本节点、在工作空间上单击鼠标右键,然后选择“创建自定义节点”。

指定名称、描述和类别。

这将打开一个新的工作空间,可以在其中编辑自定义节点。

输入:将输入名称更改为更具描述性的名称,并添加数据类型和默认值。
输出:更改输出名称。
将节点另存为 .dyf 文件,然后您应该会看到自定义节点反映了我们刚才所做的更改。

Last updated