我們將在 Dynamo Studio 的目前建置 (1.3) 中使用此節點。選取與此相符的套件版本。
請注意,我們也已將類別檔案更名為 Grids.cs
接下來,我們需要建立 RectangularGrid 方法將位於的命名空間和類別。節點會根據方法名稱和類別名稱在 Dynamo 中命名。我們還不需要將此內容複製到 Visual Studio。
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
}
}
}
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);
pList.Add(rect);
}
}
return pList;
}
}
}
如果專案看起來與此類似,請繼續並嘗試建置 .dll。
選擇「建置」>「建置方案」
檢查專案的 bin 資料夾是否有 .dll。如果建置成功,我們可以將 .dll 加入 Dynamo。
Dynamo 資源庫中的自訂 RectangularGrids 節點
圖元區上的自訂節點
將 .dll 加入 Dynamo 的「加入」按鈕
修改自訂節點
在以上範例中,我們建立了一個相當簡單的節點,此節點除了 RectangularGrids 方法外沒有定義太多其他內容。但是,我們也許需要建立輸入埠的工具提示,或為節點提供類似標準 Dynamo 節點的摘要。將這些功能加入自訂節點,可以讓使用者更輕鬆地使用這些節點,尤其是當使用者想要在資源庫中搜尋這些節點時。
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);
pList.Add(rect);
Point cPt = rect.Center();
}
}
return pList;
}
}
}
對方法參數指定值來提供輸入預設值:RectangularGrid(int xCount = 10, int yCount = 10)
建立輸入和輸出的工具提示、搜尋關鍵字,以及 XML 文件前面有 /// 的摘要。
若要加入工具提示,專案目錄中需要一個 xml 檔案。透過啟用選項,Visual Studio 可以自動產生 .xml。