Dynamo
Primer for v2.0
繁體中文
繁體中文
  • 關於
  • 簡介
    • 什麼是 Dynamo?它如何運作?
    • 手冊使用者指南、Dynamo 社群與平台
  • 安裝 Dynamo
  • 使用者介面
    • 工作區
    • 資源庫
  • 節點和線路
  • 基本節點和概念
    • 節點的索引
    • 用於計算設計的幾何圖形
      • 幾何圖形概述
      • 向量、平面和座標系統
      • 點
      • 曲線
      • 曲面
      • 實體
      • 網格
    • 程式的建置區塊
      • 資料
      • 數學
      • 邏輯
      • 字串
      • 顏色
    • 使用清單設計
      • 什麼是清單
      • 使用清單
      • 清單的清單
      • n 維清單
    • Dynamo 中的字典
      • 什麼是字典
      • 字典節點
      • 程式碼區塊中的字典
      • Revit 使用情況
  • 自訂節點和套件
    • 自訂節點
      • 自訂節點簡介
      • 建立自訂節點
      • 發佈至資源庫
    • 套件
      • 套件簡介
      • 套件案例研究 - Mesh Toolkit
      • 開發套件
      • 發佈套件
      • Zero-Touch 匯入
  • 適用於 Revit 的 Dynamo
    • Revit 連接
    • 選取
    • 編輯
    • 建立
    • 自訂
    • 記錄
  • Dynamo for Civil 3D
    • Civil 3D 連接
    • 入門
    • 節點資源庫
    • 範例工作流程
      • 道路
        • 燈柱放置
      • 面
        • 服務放置
      • 公用程式
        • 更名結構
      • 鐵路
        • 間隙包絡線
      • 測量
        • 點群組管理
    • 進階主題
      • 物件併入
      • Python 和 Civil 3D
    • Dynamo 播放器
    • 有用的套件
    • 資源
  • Dynamo in Forma Beta 版
    • 設定 Forma 中的 Dynamo Player
    • 在 Dynamo Player 中加入和分享圖表
    • 在 Dynamo Player 中執行圖表
    • Dynamo 計算服務與桌面版 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 案例研究 - 自訂使用者介面
      • 針對 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
  • 速寫
  • 其他語法
  • 範圍和序列
  • 進階範圍
  • 建立清單與取得清單中的項目
  • 練習:正弦曲面
Edit on GitHub
Export as PDF
  1. 在 Dynamo 中撰寫程式碼
  2. 程式碼區塊和 DesignScript

速寫

速寫

程式碼區塊有一些基本的速寫方法,簡言之,這些方法可以 顯著 降低資料管理的難度。以下我們將分類講解基本知識,並討論如何使用此速寫來建立與查詢資料。

資料類型

標準 Dynamo

Code Block 對等項

數字

字串

序列

範圍

取得索引處的項目

建立清單

連接字串

條件陳述式

其他語法

節點

Code Block 對等項

附註

任何運算子 (+、&&、>=、Not... 等等)

+、&&、>=、!... 等等

請注意,「Not」變成「!」,但節點稱為「Not」以便與「階乘」區分

Boolean True

true;

請注意小寫

Boolean False

false;

請注意小寫

範圍和序列

定義範圍與序列的方法可以精簡為基本速寫。使用以下影像作為「..」語法的指南,以使用 Code Block 定義一系列數值資料。瞭解此標記法後,建立數值資料就會非常有效率:

  1. 在此範例中,數字範圍由定義 beginning..end..step-size; 的基本 Code Block 語法所取代。以數字方式表示,我們得到:0..10..1;

  2. 請注意,語法 0..10..1; 相當於 0..10; 步長大小 1 是速寫標記法的預設值。因此 0..10; 將產生從 0 到 10 且步長大小為 1 的序列。

  3. 序列 範例很類似,只是我們使用「#」來說明希望清單包含 15 個值,而非清單中的值不超過 15。在此範例中,我們將定義:beginning..#ofSteps..step-size: 序列的實際語法為 0..#15..2

  4. 使用上一步的 #,現在將其放在語法的 step-size 部分。現在,我們產生一個從 beginning 到 end 的 數字範圍,step-size 標記將許多值均勻分佈在這兩個值之間:beginning..end..#ofSteps

進階範圍

藉由建立進階範圍,我們能以簡單方式使用清單的清單。在以下範例中,我們將隔離變數與主要範圍標記,並建立該清單的另一個範圍。

1.建立巢狀範圍,對含與不含「#」的標記進行比較。套用基本範圍內的相同邏輯,只是變得稍複雜一些。

2.可以在主要範圍內的任何位置定義子範圍,請注意我們可以有兩個子範圍。

3.透過控制範圍內的「end」值,我們可以建立長度不同的多個範圍。

比較以上兩個速寫,並嘗試剖析 子範圍 與 # 標記如何產生結果輸出,來作為邏輯練習。

建立清單與取得清單中的項目

除了使用速寫建立清單外,我們也可以快速建立清單。這些清單可以包含多種元素類型,也可以進行查詢 (請記住,清單本身就是物件)。總而言之,使用 Code Block,您將使用括號 (方括號) 建立清單和查詢清單中的項目:

1.使用字串快速建立清單,並使用項目索引查詢清單。

2.使用變數建立清單,並使用範圍速寫標記查詢清單。

使用巢狀清單進行管理是類似的程序。請注意清單順序,並使用多組方括號呼叫:

1.定義清單的清單。

2.使用單邊括號查詢清單。

3.使用雙邊括號查詢項目。

練習:正弦曲面

按一下下方的連結下載範例檔案。

附錄中提供完整的範例檔案清單。

在本練習中,我們將靈活運用新的速寫技能,以建立由範圍與公式定義的炫酷蛋殼曲面。在本練習中,請注意我們如何搭配使用 Code Block 與既有 Dynamo 節點:我們對處理大量資料的工作使用 Code Block,而以視覺方式配置 Dynamo 節點以實現定義的易讀性。

首先,透過連接以上節點以建立曲面。不是使用數字節點來定義寬度與長度,而是按兩下圖元區,然後在 Code Block 中輸入 100;。

  1. 在 Code Block 中輸入 0..1..#50,定義介於 0 至 1 之間且分為 50 份的範圍。

  2. 將該範圍連接至 Surface.PointAtParameter,這會在曲面內為 u 與 v 指定介於 0 與 1 之間的值。請記得在 Surface.PointAtParameter 節點上按一下右鍵,將「交織」變更為「笛卡兒積」。

在此步驟中,我們使用第一個函數在 Z 方向將點的格線上移。此格線將根據基本函數驅動產生的曲面。如以下影像所示新增節點

  1. 我們使用包含 (0..Math.Sin(x*360)..#50)*5; 這一行的 Code Block。為了快速詳細說明這一點,我們將定義內含公式的範圍。此公式是正弦函數。正弦函數會接收 Dynamo 中輸入的角度,因此為了取得完整的正弦波形,我們將 x 值 (這是 0 到 1 的範圍輸入) 乘以 360。接下來,我們希望份數與每列的控制格線點數量相同,所以使用 #50 定義五十份。最後,乘數 5 只是為了增加平移的振幅,方便我們在 Dynamo 預覽中查看效果。

  1. 雖然上一個 Code Block 運作地很好,但它並非完全是參數式方法。我們要動態驅動其參數,因此我們將上一步的程式碼行取代為 (0..Math.Sin(x*360*cycles)..#List.Count(x))*amp;。藉此我們能根據輸入定義這些值。

透過變更滑棒 (範圍從 0 到 10),我們得到一些有趣的結果。

  1. 透過對數字範圍執行轉置,我們反轉窗簾波浪的方向:transposeList = List.Transpose(sineList);

  1. 加入 sineList 與 transposeList 後會得到一個扭曲的蛋殼曲面:eggShellList = sineList+transposeList;

變更下面指定的滑棒值,將此演算法「變平靜」。

最後,我們使用 Code Block 查詢資料的隔離部分。若要重新產生具有特定範圍點的曲面,請在 Geometry.Translate 與 NurbsSurface.ByPoints 節點之間加入以上 Code Block。這包括文字行:sineStrips[0..15..1];。這將選取前 16 列的點 (從 50 個點中)。重新建立曲面,我們可以看到已產生點格線的隔離部分。

  1. 在最後一個步驟中,為了讓此 Code Block 的參數式程度更高,我們使用範圍從 0 至 1 的滑棒來驅動該查詢。我們使用這一行程式碼執行此作業:sineStrips[0..((List.Count(sineStrips)-1)*u)];。這可能有些混亂,但使用該行程式碼可以快速運用介於 0 和 1 之間的乘數來擴充清單長度。

若使用滑棒值 0.53,會建立一個剛好通過格線中點的曲面。

與預期一致,使用滑棒值 1 時,會從完整的點格線建立一個曲面。

查看視覺圖表,我們可以亮顯 Code Block,並查看其中的每項函數。

1.第一個 Code Block 取代 Number 節點。

2.第二個 Code Block 取代 Number Range 節點。

3.第三個 Code Block 取代 List.Transpose、List.Count 和 Number Range 節點。

4.第四個 Code Block 查詢清單的清單,取代 List.GetItemAtIndex 節點。

PreviousDesignScript 語法Next函數

Last updated 2 months ago

20KB
Obsolete-Nodes_Sine-Surface.dyn