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
  • 使用列表
  • 查询
  • 操作
  • 练习
  • 列表操作
  • List.Count
  • List.GetItemAtIndex
  • List.Reverse
  • List.ShiftIndices
  • List.FilterByBooleanMask
Edit on GitHub
Export as PDF
  1. 基本节点和概念
  2. 使用列表进行设计

使用列表

Previous什么是列表Next列表的列表

Last updated 1 month ago

使用列表

既然我们已经建立了列表,那么让我们来介绍如何对它执行操作。将一个列表想象为一副纸牌。一副纸牌即是列表,每张纸牌表示一个项目。

查询

我们可以在列表中进行哪些查询?这将访问现有特性。

  • 一副纸牌中纸牌的张数?52.

  • 玩家人数?4.

  • 材料?纸。

  • 长度?3.5" 或 89mm。

  • 宽度?2.5" 或 64mm。

操作

我们可以对列表执行哪些操作?这将基于给定操作更改列表。

  • 我们可以洗牌。

  • 我们可以按值对一副纸牌进行排序。

  • 我们可以按玩家对一副纸牌进行排序。

  • 我们可以拆分一副纸牌。

  • 我们可以通过发牌来划分一副纸牌。

  • 我们可以选择一副纸牌中某张特定纸牌。

上面列出的所有操作都有类似 Dynamo 节点来用于处理常规数据列表。下面的课程将演示可以对列表执行的一些基本操作。

练习

列表操作

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

下图是我们在两个圆之间绘制直线以表示基本列表操作的基础图形。我们将探讨如何管理列表中的数据,并通过下面的列表操作演示可视结果。

  1. 从 “代码块” 开始,其中值为 500;

  2. 连接到 “Point.ByCoordinates” 节点的 x 输入。

  3. 将上一步中的节点连接到 “Plane.ByOriginNormal” 节点的原点输入。

  4. 使用 “Circle.ByPlaneRadius” 节点,将上一步中的节点连接到平面输入。

  5. 使用 “代码块” ,为半径指定值 50;。这是我们将创建的第一个圆。

  6. 使用 “Geometry.Translate” 节点,将圆沿 Z 方向向上移动 100 个单位。

  7. 使用 “Code Block” 节点,通过以下一行代码定义一系列 10 个介于 0 和 1 之间的数字:0..1..#10;

  8. 将上一步中的代码块连接到两个 “Curve.PointAtParameter” 节点的 “param” 输入。将 “Circle.ByPlaneRadius” 插入到顶部节点的曲线输入,并将 “Geometry.Translate” 连接到其下节点的曲线输入。

  9. 使用 Line.ByStartPointEndPoint,连接两个 Curve.PointAtParameter 节点。

List.Count

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

“List.Count” 节点简单明了:它计算列表中值的数量,并返回该数量。随着我们使用列表的列表,此节点会变得更加微妙,但我们会在接下来的各部分中进行演示。

  1. “List.Count”**** 节点会返回 “Line.ByStartPointEndPoint” 节点中线的数量。在本例中,该值为 10,表示与从原始 “Code Block” 节点创建的点数一致。

List.GetItemAtIndex

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

“List.GetItemAtIndex” 是用于查询列表中项的基本方法。

  1. 首先,在 “Line.ByStartPointEndPoint” 节点上单击鼠标右键以关闭其预览。

  2. 使用 “List.GetItemAtIndex” 节点,我们选择索引 “0” 或线列表中的第一项。

将滑块值更改为介于 0 和 9 之间,以使用 “List.GetItemAtIndex” 选择其他项目。

List.Reverse

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

“List.Reverse” 可反转列表中所有项的顺序。

  1. 要正确显示反转的线列表,请通过将 “代码块” 更改为 0..1..#50; 来创建更多线

  2. 复制 “Line.ByStartPointEndPoint” 节点,在 “Curve.PointAtParameter” 和第二个 “Line.ByStartPointEndPoint” 之间插入“List.Reverse”节点

  3. 使用 “Watch3D” 节点预览两个不同的结果。第一个显示没有反向列表的结果。这些线垂直连接到相邻点。但是,反转列表会将所有点以相反顺序连接到其他列表。

List.ShiftIndices

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

“List.ShiftIndices” 是适用于创建扭曲或螺旋图案或者任何其他类似数据操作的工具。此节点会将列表中的项目移动给定数量的索引。

  1. 在与反转列表相同的过程中,将 “List.ShiftIndices” 插入到 “Curve.PointAtParameter” 和 “Line.ByStartPointEndPoint” 中。

  2. 使用 “代码块”,指定值为“1”以将列表移动一个索引。

  3. 请注意,更改很细微,但在连接到另一组点时,较低 “Watch3D” 节点中的所有线都已移动一个索引。

例如,通过将 “代码块” 更改为较大值(“30”),我们注意到对角线存在明显差异。在本例中,该移动类似于照相机的光圈,从而以原始圆柱形式创建扭曲。

List.FilterByBooleanMask

单击下面的链接下载示例文件。

可以在附录中找到示例文件的完整列表。

“List.FilterByBooleanMask” 将基于布尔值列表移除某些项目,或通过读取“true”或“false”值来移除某些项目。

为了创建读取“true”或“false”的值列表,我们需要做更多的工作...

  1. 使用 “代码块”,通过以下语法定义一个表达式:0..List.Count(list);。将 “Curve.PointAtParameter” 节点连接到 “list” 输入。我们将在代码块章节中详细介绍此设置,但本例中的该行代码会为我们提供一个列表,该列表表示 ”Curve.PointAtParameter” 节点的每个索引。

  2. 使用 “%” **(求模)**节点,将 代码块 的输出连接到 x 输入,将值 4 连接到 y 输入。当将索引列表除以 4 时,这将为我们提供余数。求模节点对于创建图案而言确实非常有用。所有值将读取为 4 的可能余数:0、1、2、3。

  3. 在 “%” (求模) 节点中,我们知道值为 0 意味着索引是 4 的倍数(0、4、8,依此类推)。通过使用 “==” 节点,我们可以针对值 “0” 对其进行测试,以测试其可除性。

  4. “Watch” 节点仅显示以下情况:我们有一个“true/false”模式,其读取:true,false,false,false...。

  5. 使用此 true/false 模式,连接到两个 “List.FilterByBooleanMask” 节点的遮罩输入。

  6. 将 “Curve.PointAtParameter” 节点连接到 “List.FilterByBooleanMask” 的每个列表输入。

  7. “Filter.ByBooleanMask” 的输出读取 “in” 和 “out”。“in” 表示遮罩值为 “true” 的值,而 “out” 表示值为 “false” 的值。通过将 “in” 输出连接到 “Line.ByStartPointEndPoint” 节点的 “startPoint” 和 “endPoint” 输入,我们创建了过滤后的线列表。

  8. “Watch3D” 节点显示线数少于点数。通过仅过滤 true 值,我们仅选择了 25% 的节点!

照片由 提供

Christian Gidlöf
7KB
List-Operations.dyn
8KB
List-Count.dyn
8KB
List-GetItemAtIndex.dyn
8KB
List-Reverse.dyn
8KB
List-ShiftIndices.dyn
11KB
List-FilterByBooleanMask.dyn
纸牌
合计
练习
练习
练习
练习