> For the complete documentation index, see [llms.txt](https://primer2.dynamobim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://primer2.dynamobim.org/zh-tw/6_custom_nodes_and_packages/6-2_packages/2-mesh-toolkit.md).

# 套件案例研究 - Mesh Toolkit

Dynamo Mesh Toolkit 提供工具，透過 Dynamo 幾何圖形物件建立網格，並根據網格的頂點與索引手動建置網格。資源庫還提供工具來修改網格、修復網格，或萃取水平切片，以用於加工。雖然此工具套件也可用於匯入和查詢外部網格檔案，但此範例在腳本中包含了一組頂點與索引的網格，因此不需要額外的檔案。提供的圖表並非使用外部網格檔案，而是使用 **Data.Remember** 節點儲存所有必要的資訊，來重建著名的 Stanford Bunny 網格。

!

Dynamo Mesh Toolkit 是 Autodesk 持續進行網格研究的一部分，因此在未來的幾年將繼續成長。該工具箱將頻繁推出新方法，請隨時與 Dynamo 團隊聯繫以提供註解、錯誤以及新功能的建議。

### 網格與實體

下面的練習演示了使用 Mesh Toolkit 可執行的一些基本網格作業。在此練習中，我們將網格與一系列的平面相交，如果使用實體執行此作業，則運算成本很高。與實體不同，網格具有一組「解析度」，不以數學方式定義，而是以拓樸方式定義，我們可根據要執行的作業來定義此解析度。有關網格與實體關係的詳細資訊，您可以參考此手冊的[用於計算設計的幾何圖形](/zh-tw/5_essential_nodes_and_concepts/5-2_geometry-for-computational-design.md)一章。有關 Mesh Toolkit 的更詳細資訊，您可以參考 [Dynamo Wiki 頁面](https://github.com/DynamoDS/Dynamo/wiki/Dynamo-Mesh-Toolkit)。我們利用下面的練習來瞭解此套件。

### 安裝 Mesh Toolkit

在 Dynamo 中，前往頂部功能表列中的「套件」>「Package Manager...」。在搜尋欄位中，鍵入 MeshToolkit (全部一個字，無空格)。按一下「安裝」，系統請您確認時，請接受，即可開始下載。非常簡單！

<figure><img src="https://1226582865-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FmuqshfgEG0ZvIFN5DRfA%2Fuploads%2Fgit-blob-909ffe3add3f3b6b493a54bb1f0c80c65f3525e7%2Finstall-mesh-toolkit.png?alt=media" alt=""><figcaption></figcaption></figure>

## 練習：網格相交

> 按下方的連結下載範例檔案。
>
> 附錄中提供完整的範例檔案清單。

{% file src="/files/3MIJyvBKqpwBplztMVnq" %}

在此範例中，我們將瞭解 Mesh Toolkit 的 Intersect 節點。我們將從儲存的頂點產生網格，並將其與一系列輸入平面相交以建立切面。這是準備模型以使用鐳射切割、水刀切割或數控機床進行加工的起點。

首先，*在 Dynamo 中開啟 Mesh-Toolkit\_Intersect-Mesh.dyn*。

!

> 1. \*\*Data.Remember：\*\*這兩個節點包含網格頂點 (以點儲存) 和網格索引 (一系列整數)。兩者共同提供重建網格所需的所有資訊。
> 2. \*\*Mesh.ByVerticesAndIndices：\*\*連接資料節點中的頂點和索引以建置網格。

!

> 1. **Point.ByCoordinates：** 建構一個點 - 這將是弧的中心。
> 2. **Arc.ByCenterPointRadiusAngle：** 在該點週圍建構一個弧。這條曲線將用來定位一系列平面。 \_\_設定如下： \_\_ `radius: 40, startAngle: -90, endAngle:0`

建立一系列沿著弧轉向的平面。

!

> 1. **Code Block**：建立 25 個介於 0 和 1 之間的數字。
> 2. **Curve.PointAtParameter：** 將弧連接到 *curve* 輸入並將 Code Block 輸出連接至 *param* 輸入以擷取出一系列沿著曲線的點。
> 3. **Curve.TangentAtParameter：** 連接與前一個節點相同的輸入。
> 4. **Plane.ByOriginNormal：** 將點連接至 *origin* 輸入並將 vector 連接至 *normal* 輸入，在每個點建立一系列平面。

接下來，我們將使用這些平面與網格相交。

!

> 1. \*\*Mesh.Intersect：\*\*將這些平面與產生的網格相交，建立一系列 PolyCurve 輪廓線。在節點上按一下右鍵，並將交織設定為最長
> 2. **PolyCurve.Curves：** 將 PolyCurve 切斷為曲線段。
> 3. **Curve.EndPoint：** 擷取每條曲線的端點。
> 4. **NurbsCurve.ByPoints：** 使用點來建構 NURBS 曲線。使用設定為 *True* 的 Boolean 節點，以封閉曲線。

在繼續之前，請關閉某些節點 (例如：Mesh.ByVerticesAndIndices、Curve.EndPoint、Plane.ByOriginNormal 以及 Arc.ByCenterPointRadiusAngle) 的預覽，以更清楚地查看結果。

!

> 1. **Surface.ByPatch：** 為每條輪廓線建構曲面修補，以便建立網格的「切片」。

新增第二組切片，產生格子/蛋盒的效果。

!

您可能會發現與一個差不多的實體相比，網格相交作業的計算速度更快。例如本練習中示範的工作流程非常適合用於網格。
