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
  • 父对象
  • 子项
  • 练习:球体(按 Z)
Edit on GitHub
Export as PDF
  1. 在 Dynamo 中编码
  2. 代码块和 DesignScript

函数

Previous简写Next使用 DesignScript 的几何图形

Last updated 2 months ago

函数可以在代码块中创建,并在 Dynamo 定义中的其他位置进行调用。这将在参数化文件中创建另一层控制,并且可以作为基于文本版本的自定义节点进行查看。在这种情况下,“父”代码块可以随时访问,并且可以位于图形上的任意位置。不需要引线!

父对象

第一行包含关键字“def”,接着是函数名称,然后是括号中的输入名称。大括号定义函数的主体。使用“return =”返回值。定义函数的代码块没有输入或输出端口,因为它们是从其他代码块调用的。

/*This is a multi-line comment,
which continues for
multiple lines*/
def FunctionName(in1,in2)
{
//This is a comment
sum = in1+in2;
return sum;
};

子项

通过提供名称和相同数量的参数,调用同一文件中具有另一代码块的函数。其工作原理与库中现成的节点一样。

FunctionName(in1,in2);

练习:球体(按 Z)

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

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

在本练习中,我们将创建一个通用定义,该定义将通过输入的点列表创建球体。这些球体的半径由每个点的 Z 特性驱动。

首先从 0 到 100 的十个值范围开始。将这些值插入到 “Point.ByCoordinates” 节点,以创建对角线。

创建 “代码块”,然后引入我们的定义。

  1. 使用以下代码行:

    def sphereByZ(inputPt)
    {
    
    };

“inputPt” 是我们提供的名称,用于表示将驱动函数的点。目前,该函数不会执行任何操作,但我们会在后续步骤中构建此函数。

  1. 通过添加到 “代码块” 函数,我们放置注释和 “sphereRadius” 变量(该变量会查询每个点的 “Z” 位置)。请记住,“inputPt.Z”不需要圆括号用作方法。这是对现有图元特性的“查询”,因此不需要输入:

def sphereByZ(inputPt,radiusRatio)
{
//get Z Value, ise ot to drive radius of sphere
sphereRadius=inputPt.Z;
};
  1. 现在,我们再次调用在另一个 “代码块” 中创建的函数。如果双击画布以创建新的 “代码块”,然后键入 “sphereB”,我们会注意到 Dynamo 建议使用已定义的 “sphereByZ” 函数。您的函数已添加到智能库!非常棒。

  1. 现在,我们调用相应函数并创建一个名为 “Pt” 的变量,以连接在之前步骤中创建的点:

    sphereByZ(Pt)
  2. 在输出中,我们注意到所有值都为空值。这是为什么呢?在定义函数后,我们会计算 “sphereRadius” 变量,但是我们未定义函数应 “返回” 为 “输出” 的内容。可以在下一个步骤中修复该问题。

  1. 一个重要步骤是,我们需要定义函数的输出,方法是将一行代码 return = sphereRadius; 添加到 “sphereByZ” 函数。

  2. 现在,我们看到“代码块”的输出为我们提供了每个点的 Z 坐标。

现在,让我们通过编辑 “父” 函数,来创建实际球体。

  1. 首先,我们使用代码行定义一个球体:sphere=Sphere.ByCenterPointRadius(inputPt,sphereRadius);

  2. 接下来,我们将返回值更改为 “sphere”,而不是 “sphereRadius”:return = sphere;。这会在 Dynamo 预览中为我们提供一些巨大的球体!

1.要调整这些球体的大小,我们通过添加分隔器来更新“sphereRadius”值:sphereRadius = inputPt.Z/20;。现在,我们可以看到单独的球体,然后开始了解半径和 Z 值之间的关系。

  1. 在 “Point.ByCoordinates” 节点上,通过将连缀从“最短列表”更改为“叉积”,我们将创建点栅格。“sphereByZ” 函数仍然完全有效,因此所有点都会使用基于 Z 值的半径创建球体。

  1. 仅是为了测试水域,我们将原始数字列表连接到 “Point.ByCoordinates” 的 X 输入。现在,我们得到了一个球体的立方体。

  2. 注意:如果在计算机上的计算需要较长时间,请尝试将 “#10” 更改为 “#5” 之类的值。

请记住,我们创建的 “sphereByZ” 函数是一个通用函数,因此我们可以调用前一课中的螺旋,然后对其应用该函数。

最后一步:使用用户定义的参数来控制半径比。为此,我们需要为该函数创建新输入,并将 “20” 除数替换为参数。

  1. 将 “sphereByZ” 定义更新为以下内容:

    def sphereByZ(inputPt,radiusRatio)
    {
    //get Z Value, use it to drive radius of sphere
    sphereRadius=inputPt.Z/radiusRatio;
    //Define Sphere Geometry
    sphere=Sphere.ByCenterPointRadius(inputPt,sphereRadius);
    //Define output for function
    return sphere;
    };
  2. 通过向输入中添加“ratio”变量来更新子 “代码块”:sphereByZ(Pt,ratio);。将滑块插入到新创建的 “代码块” 输入中,并根据半径比改变半径大小。

30KB
Functions_SphereByZ.dyn