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
  • 父系
  • 子系
  • 練習:透過 Z 建立圓球
Edit on GitHub
Export as PDF
  1. 在 Dynamo 中撰寫程式碼
  2. 程式碼區塊和 DesignScript

函數

Previous速寫Next使用 DesignScript 的幾何圖形

Last updated 2 months ago

可以在程式碼塊中建立函數,然後在 Dynamo 定義中的其他位置重新呼叫函數。此作業會在參數式檔案中建立另一個控制層,可視為自訂節點的文字版本。在此案例中,「父系」Code Block 可隨時存取,可在圖表中的任何位置找到。無需使用線路!

父系

第一行包含關鍵字「def」,然後依次是函數名稱與輸入的名稱 (在括號中)。大括號定義函數的本體。使用「return =」傳回值。定義函數的 Code Block 沒有輸入或輸出埠,因為會從其他 Code Block 呼叫。

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

子系

使用同一檔案中的其他 Code Block,只需提供名稱與相同數量的引數即可呼叫函數。其工作方式類似於資源庫中的現成節點。

FunctionName(in1,in2);

練習:透過 Z 建立圓球

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

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

在本練習中,我們將進行根據輸入點清單建立圓球的一般定義。這些圓球的半徑由每個點的 Z 性質驅動。

接下來先建立介於 0 到 100 之間的一系列十個值。將這些值插入 Point.ByCoordinates 節點,以建立對角線。

建立 Code Block 並介紹我們的定義。

  1. 使用以下程式碼行:

    def sphereByZ(inputPt)
    {
    
    };

inputPt 是我們為了表示驅動函數的點而提供的名稱。到現在為止,函數不會執行任何作業,但我們將在後續步驟中建置此函數。

  1. 加入 Code Block 函數後,我們加上註解和 sphereRadius 變數,它會查詢每個點的 Z 位置。請記住,inputPt.Z 是一個方法,不需要括號。這是 查詢 既有元素的性質,因此不需要任何輸入:

def sphereByZ(inputPt,radiusRatio)
{
//get Z Value, ise ot to drive radius of sphere
sphereRadius=inputPt.Z;
};
  1. 現在,我們呼叫在另一個 Code Block 中建立的函數。如果在圖元區上按兩下以建立新的 Code Block,然後鍵入 sphereB,我們發現 Dynamo 建議使用我們定義的 sphereByZ 函數。您的函數已加入 intellisense 資源庫!太酷了。

  1. 現在,我們呼叫函數,並建立一個稱為 Pt 的變數以插入先前步驟中建立的點:

    sphereByZ(Pt)
  2. 我們看到輸出全部都是空值。為何會發生這種情況?定義函數時,我們會計算 sphereRadius 變數,但沒有定義函數應 傳回 哪些項目做為 輸出。我們可以在下一步修正此問題。

  1. 我們需要在 sphereByZ 函數中加入 return = sphereRadius; 行定義函數的輸出,這是重要的步驟。

  2. 現在,我們可以看到 Code Block 的輸出提供每個點的 Z 座標。

現在,我們要編輯 父系 函數以建立實際的圓球。

  1. 我們首先使用以下程式碼行定義圓球:sphere=Sphere.ByCenterPointRadius(inputPt,sphereRadius);

  2. 接下來,我們將傳回值變更為 sphere,而不是 sphereRadius:return = sphere; 這會在 Dynamo 預覽中產生一些巨大的圓球!

1.若要調整這些圓球的大小,我們加入圓規來更新圓球半徑值: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. 在輸入 sphereByZ(Pt,ratio); 中加入 ratio 變數以更新子系 Code Block。將滑棒插入新建立的 Code Block 輸入,並根據半徑比變更半徑的大小。

30KB
Functions_SphereByZ.dyn