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
  • Booleans
  • 條件陳述式
  • 練習:邏輯和幾何圖形
  • 第 I 部分:篩選清單
  • 第 II 部分:從邏輯到幾何圖形
Edit on GitHub
Export as PDF
  1. 基本節點和概念
  2. 程式的建置區塊

邏輯

Previous數學Next字串

Last updated 1 month ago

藉由邏輯,或者更明確地說,藉由條件邏輯,我們可以根據測試指定單一或一組動作。在評估測試時,我們可以使用表示 True 或 False 的Boolean值控制程式流程。

Booleans

數值變數可以儲存所有範圍的不同數字。Boolean 變數只能儲存兩個值,稱為 True 或 False、是或否、0 或 1。由於 booleans 值範圍有限,因此很少使用 booleans 值執行計算。

條件陳述式

「If」陳述式是程式設計中的關鍵概念:「如果 這 是真的,則會發生 那件事,否則會發生 其他事。」陳述式所產生的動作由boolean值驅動。在 Dynamo 中,可以採用多種方式定義「if」陳述式:

圖示
名稱 (語法)
輸入
輸出

If (If)

test、true、false

result

Code Block ((x?y:z);)

x? y, z

result

接下來瞭解使用條件「if」陳述式的三種有效節點中每種節點的簡單範例。

在此影像中,boolean 設為 true,這意味著結果是字串 「this is the result if true」。建立 If 陳述式的三個節點在這裡的工作方式完全相同。

再說一次,節點的工作方式完全相同。若 boolean 變更為 false,則結果是數字 Pi,如原始 If 陳述式所定義。

練習:邏輯和幾何圖形

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

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

第 I 部分:篩選清單

  1. 接下來使用邏輯將數字清單分隔為偶數清單與奇數清單。

a.Number Range - 在圖元區加入一個數字範圍。

b.Numbers - 在圖元區加入三個數字節點。每個數字節點的值應為:0.0 (start)、10.0 (end) 與 1.0 (step)。

c.輸出 - 輸出是一個 11 個數字 (從 0 到 10) 的清單。

d.模除 (%)- 將 Number Range 連接至 x,將 2.0 連接至 y。這會計算清單中的每個數字除以 2 產生的餘數。此清單的輸出是 0 與 1 交替顯示的數值清單。

e.相等性測試 (==) - 在圖元區加入相等性測試。將 模除 輸出插入 x 輸入,將 0.0 插入 y 輸入。

f.Watch - 相等性測試的輸出是 true 與 false 交替顯示的清單。這些值用於分隔清單中的項目。0 (或 true) 表示偶數,1 (或 false) 表示奇數。

g.List.FilterByBoolMask - 此節點將根據輸入的boolean值,將這些值篩選到兩個不同清單中。將原始的 Number Range 插入 list 輸入,將 相等性測試 輸出插入 mask 輸入。輸出 in 表示 true 值,而輸出 out 表示 false 值。

h.Watch - 結果是我們現在產生了偶數清單與奇數清單。我們已使用邏輯運算子將清單分隔為多種樣式!

第 II 部分:從邏輯到幾何圖形

接下來我們將建置第一個練習中建立的邏輯,將此設置套用到塑型作業中。

2.我們從上一個練習開始,採用相同的節點。唯一的例外 (除了變更格式) 是:

a.使用 Sequence 節點搭配這些輸入值。

b.我們取消插入 List.FilterByBoolMask 的 list 輸入。暫時將這些節點放在一旁,這在稍後的練習中會有用。

3.我們先為圖表建立不同群組,如以上影像所示。此節點群組表示定義曲線所用的參數式方程式。一些註記如下:

a.第一個 Number Slider 表示波浪的頻率,最小值為 1,最大值為 4,步長為 0.01。

b.第二個 Number Slider 表示波浪的振幅,最小值為 0,最大值為 1,步長為 0.01。

c.PolyCurve.ByPoints - 若複製以上節點圖,在 Dynamo 預覽視埠中的結果將是一條正弦曲線。

此處採用的輸入方式:對比較靜態的性質使用數字節點,對比較彈性的性質使用數字滑棒。我們希望保留在這一步開始時定義的原始數字範圍。但是,我們在此建立的正弦曲線應具有某些彈性。我們可以移動這些滑棒以觀看曲線對其頻率與振幅的更新。

4.我們將對定義進行一些調整,因此接下來看一下最終結果,以便可以參考得到的結果。之前,前兩個步驟是分別執行的,現在我們要連接兩者。我們將使用基準正弦曲線以驅動拉鍊元件的位置,並使用 true/false 邏輯實現大小方塊的交替變化。

a.Math.RemapRange - 接下來使用步驟 02 中建立的數字序列,透過重新對映範圍建立新的數字系列。步驟 01 的原始數字介於 0-100 之間。這些數字的範圍分別由 newMin 與 newMax 輸入限制為從 0 到 1。

5.建立 Curve.PointAtParameter 節點,然後連接步驟 04 的 Math.RemapRange 輸出做為其 param 輸入。

此步驟將沿曲線建立點。我們將數字重新對映到從 0 至 1 的範圍,因為 param 的輸入會尋找此範圍內的值。0 值表示起點,1 值表示終點。這當中的所有數字都會在 [0,1] 範圍內運算。

6.將 Curve.PointAtParameter 的輸出連接至 List.FilterByBoolMask,以分隔奇數和偶數索引的清單。

a.List.FilterByBoolMask - 將上一步的 Curve.PointAtParameter 插入 list 輸入。

b.Watch - in 的 Watch 節點與 out 的 Watch 節點顯示我們有兩個分別代表偶數索引與奇數索引的清單。這些點按照在曲線上的位置順序排序,我們將在下一步示範。

7.接下來,我們將使用步驟 05 中 List.FilterByBoolMask 的輸出結果,根據其索引產生不同大小的幾何圖形。

Cuboid.ByLengths - 重新建立以上影像顯示的連接,以產生一條沿正弦曲線的拉鍊。立方體在這裡只是方塊,我們將根據方塊中心的曲線點定義其大小。現在,模型中應該已清晰呈現偶數/奇數的區分邏輯。

a.偶數索引處的立方體清單。

b.奇數索引處的立方體清單。

瞧!您剛剛根據本練習示範的邏輯作業,以程式設計了定義幾何圖形維度的過程。

73KB
Building Blocks of Programs - Logic.dyn