# Zero-Touch 案例研究 - 网格节点

#### 自定义矩形网格节点

1. 选择 `Class Library` 作为项目类型

2. 将项目命名为 `CustomNodes`

1. 浏览 ZeroTouchLibrary 软件包

2. 我们将要在 Dynamo Studio 的当前版本（即 1.3）中使用此节点。选择与此版本匹配的软件包版本。

3. 请注意，我们还将类文件重命名为 `Grids.cs`

``````using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
public class Grids
{
public static List<Rectangle> RectangularGrid(int xCount, int yCount)
{
//The method for creating a rectangular grid will live in here
}
}
}``````

`Autodesk.DesignScript.Geometry;` 将参照创建列表时所需的 ZeroTouchLibrary 软件包 `System.Collections.Generic` 中的 ProtoGeometry.dll

``````using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
public class Grids
{
public static List<Rectangle> RectangularGrid(int xCount, int yCount)
{
double x = 0;
double y = 0;

var pList = new List<Rectangle>();

for (int i = 0; i < xCount; i++)
{
y++;
x = 0;
for (int j = 0; j < yCount; j++)
{
x++;
Point pt = Point.ByCoordinates(x, y);
Vector vec = Vector.ZAxis();
Plane bP = Plane.ByOriginNormal(pt, vec);
Rectangle rect = Rectangle.ByWidthLength(bP, 1, 1);
}
}
return pList;
}
}
}``````

1. 选择“构建”>“构建解决方案”

1. Dynamo 库中的自定义 RectangularGrids 节点

2. 画布上的自定义节点

3. 用于将 `.dll` 添加到 Dynamo 中的“添加”按钮

#### 自定义节点修改

1. 默认输入值

2. xCount 输入的工具提示

RectangularGrid 节点需要其中的一些基本功能。在下面的代码中，我们添加了输入和输出端口描述、摘要和默认输入值。

``````using Autodesk.DesignScript.Geometry;
using System.Collections.Generic;

namespace CustomNodes
{
public class Grids
{
/// <summary>
/// This method creates a rectangular grid from an X and Y count.
/// </summary>
/// <param name="xCount">Number of grid cells in the X direction</param>
/// <param name="yCount">Number of grid cells in the Y direction</param>
/// <returns>A list of rectangles</returns>
/// <search>grid, rectangle</search>
public static List<Rectangle> RectangularGrid(int xCount = 10, int yCount = 10)
{
double x = 0;
double y = 0;

var pList = new List<Rectangle>();

for (int i = 0; i < xCount; i++)
{
y++;
x = 0;
for (int j = 0; j < yCount; j++)
{
x++;
Point pt = Point.ByCoordinates(x, y);
Vector vec = Vector.ZAxis();
Plane bP = Plane.ByOriginNormal(pt, vec);
Rectangle rect = Rectangle.ByWidthLength(bP, 1, 1);
Point cPt = rect.Center();
}
}
return pList;
}
}
}``````
• 通过为方法参数赋值，来为输入提供默认值：`RectangularGrid(int xCount = 10, int yCount = 10)`

• 创建输入和输出工具提示、搜索关键字以及前面带有 `///` 的 XML 文档摘要。

1. 在此处启用 XML 文档文件，然后指定文件路径。这将生成一个 XML 文件。

Last updated