Grasshopper 的物件屬性

  • 您是否曾因無法使用自訂屬性烘焙幾何物件而感到沮喪?
  • 關於顯示材質,您是否曾經想過能夠在 Grasshopper 顯示管線使用 Rhino 內建材質?
  • 您是否嘗試將檔案匯入 Grasshopper?當您嘗試匯入 CAD 檔案並遺失幾何圖形中包含的所有基本後設資料時,您是否曾經感到沮喪?

最新的 Rhino 8 現在擁有新的數據類型和元件,可擴展您的工作方式。

Grasshopper 1 具有常見的數據類型 - 有些被頻繁使用 (點、曲線、BREP、布林值、數字和文字等),而有些則較為零星地使用 (日期、時間、矩陣等)。

然而,Rhino 提供了許多以前在 Grasshopper 無法存取的不同類型的數據。Rhino 圖層、線型、剖面線、材質、字型和註解型式等現在作為本機數據類型包含在 Grasshopper 1 for Rhino 8 。而且,即將推出更多內容!

GH1 Object Attributes Toolbar

什麼是屬性?

所有這些新元件都可以讓您取得和/或設定指定數據類型的屬性。那麼,“屬性”到底是什麼呢?屬性就是構成該類型或物件的內容或項目。

讓我們以 Rhino 圖層為例進行說明。圖層可以透過以下屬性而定義:

  • 名稱
  • 處於使用狀態 (目前的)
  • 顯示/隱藏
  • 鎖定/未鎖定
  • 顯示顏色
  • 材質
  • 線型
  • 列印顏色
  • 列印線寬
  • 截平面
  • 斷面型式

我們可以在 Rhino 圖層的對話框查看和/或編輯每個屬性。現在,您可以在 Grasshopper 1 執行相同的操作!

Layer Attributes

快速入門

Rhino 8 的 Grasshopper 1 新增一個 Rhino 工具列,它分為幾個子類別 (圖層、線型、材質等)。每個子類別通常有兩種不同類型的元件。

  • Query Component Query 元件 - 可查詢使用中的 Rhino 文件的各種數據類型。這個特定的元件可讓您將所有 Rhino 圖層放入 Grasshopper 文件,您也可以查詢文件獲得線型、剖面線、註解型式等。Query 元件通常以放大鏡表示。

  • Datatype Component Datatype 元件 - 這些元件可讓您建構和/或解構各種屬性值的數據類型。這個特定的元件可讓您指定新 Rhino 圖層的屬性 (圖層名稱、顯示顏色、可見性設定等),或在 Rhino 模型中已定義的圖層上查看這些屬性值。

Constructor/Deconstructor vs. Pass-through 元件

Grasshopper 1 有許多使用建構/解構模式的數據型態 (點、向量、平面等)。這意味著,每種數據類型都有兩個不同的元件 - 一個用於處理建立數據類型(建構器 Constructor),例如一個包含三個數值輸入參數的點,另一個用於返回組成該數據類型的值 (解構器 Deconstructor)。

原本我們考慮將上述模式用於 Rhino 工具列發現的新數據類型,但最終我們選擇“Pass-through”元件的模式。Pass-through 元件可將建構和解構屬性的功能合併到一個元件。

Point Passthrough

接下來我們可以看看這是如何運作的。請注意 Pass-through 元件各有四個輸入端和輸出端 (建構/解構模式各有三個)。主數據類型 (Point3d) 是輸入端和輸出端的第一個參數。

Point Passthrough

如果我們想要使用 Pass-through 元件建立一個新的點,只需將代表點座標的三個數值輸入到三個座標輸入端,然後新的點就會從 Point 輸出端進行輸出。同樣地,如果我們想將現有的點分解為座標值,那麼我們只需將點從 Point 輸入端連接,相應的各個座標值就會從各自的輸出端輸出。

這就是 Pass-through 元件運作原理的基本設定。現在讓我們來看一個更具體的例子。假設我們要建立一個新的 Rhino 圖層並為其分配一些屬性,我們只需將一些值傳遞到輸入參數中,圖層輸出端 (主要數據類型始終是第一個輸入/輸出參數) 返回 Rhino 圖層及其所有設定。

請注意,我會使用 Query Linetypes 元件取得 Rhino 模型中存在的一種線型 (Linetype)。如果將過濾器留空 (或使用“*”),它將返回所有可用的線型。在下面的例子,我使用過濾器過濾“Dashed”(虛線),所以它只會返回與該名稱符合的線型。

Constructor

同樣地,如果我們想要引入一個已存在的 Rhino 圖層並檢查其屬性,我們可以使用相同的 Pass-through 元件。這次我們想要將已存在的 Rhino 圖層傳遞到圖層輸入端。請記住,主要數據類型始終是元件兩側的第一個參數。

首先,我們使用 Query Layers 元件取得現有的圖層 (只有一個名為“Default (預設)”的圖層),將其傳遞到圖層輸入端,然後透過相應的輸出參數傳遞圖層的屬性。

Deconstruct

現在假設我們要使用現有圖層作為範本,但需要複製並更改一些屬性,這時 Pass-through 元件會非常的有用。如果我們使用建構器/解構器模式,就必須要手動將建構器元件的每個輸出端連接到解構器元件的相對應輸入端。

Copy / Modify

正如您想像的那樣,對於有大量屬性的數據類型來說,這會變得相當繁瑣。因此,我們可以使用 Pass-through 元件執行此操作。

像以前的操作一樣,我們可以將現有的 Rhino 圖層傳遞到圖層輸入端,這樣它所有屬性都會傳遞到相應的輸出端。但是,如果另一個值連接到其他輸入端之一,那麼該值將取代從現有 Rhino 圖層傳入的屬性。

這裡我們可以將文字“MyLayer”傳遞到 Full Path 輸入端,它會覆蓋來自現有 Rhino 圖層的圖層名稱,但所有其它的值將保持不變。

透過僅使用一個 Pass-through 元件,不但節省螢幕空間,也避免必須將所有輸出參數連接到對應輸入端的繁瑣工作。

Copy / Modify

建構屬性

在上面的範例中,我們展示如何使用模型圖層 (Model Layer) 的 pass-through 元件建立 Rhino 圖層。然而建立的圖層在烘培之前還不是 Rhino 文件的圖層。自訂烘焙元件還在開發中,目前您可以右鍵點擊 Model Layer 元件並選擇烘焙 (Bake)。 在彈出的對話框按確定,您的圖層將被新增到 Rhino 文件中。

Construct Layer Panel

現在,假設我們要為 Rhino 文件加入一些幾何物件,但要確保它們分配到我們剛剛建立的圖層,我們可以簡單地使用 Model Object 元件為幾何物件賦予各種屬性。

Construct Layer Panel 2

Construct Layer Panel 3

在這裡,我們建立一個球體並將其命名為“MySphere”,也將剛剛建立的圖層分配給物件屬性。現在,如果我們右鍵點擊 Model Object 元件並選擇 Bake (烘焙),則球體將以這些屬性加到 Rhino 文件。

選取已經加到 Rhino 文件的球體,然後查看其物件屬性,檢查球體是否有分配到正確的名稱和圖層。

您可以為幾何物件指定任意數量的屬性。這只是一個非常簡單的範例,我們鼓勵您試試其他元件,了解更多好用的設定。

解構屬性

正如您所期望,我們也可以將數據類型分解為其組成的屬性。Query 元件是一個很有用的元件,它可以將各種 Rhino 數據類型 (幾何圖形、圖層、線型等) 引入您的 Grasshopper 定義,而且每一個都相對簡單。

我們可以在 Params 標籤和 Input 子類別下找到新的 Import Model 元件,這個新元件可讓我們匯入任何 3D 模型 (不限於 Rhino 模型) 並將內容分解為各種屬性。

這個新元件還有一個很有用的功能,它提供了一種以一致的方式將匯入的模型轉換為使用中文件單位的方法。讓我們看一個例子,解釋它是如何運作。

假設您已經下載一些想要在專案中使用的扣件 3D CAD 模型。其中一個文件 (法蘭六角螺栓) 儲存時單位設定為英吋,另一個包括蝶形螺母和墊圈的文件,單位設定為公釐。但是,您正在處理的使用中文件則是設定為公分。

Bolts & Nuts

如果我們以傳統方式匯入該模型,則必須計算自己的轉換因子才能使模型正確對齊。但是,如果我們使用 import model 其中之一的屬性,也就是 transform (變換),那我們就可以輕鬆地將匯入的幾何物件與使用中文件的比例進行匹配。

Scaled Model

Transform Geometry

另外,我們可以檢查匯入模型的其他屬性。在這個文件中,儲存了多種材質。現在我們可以在 Grasshopper 的自訂預覽顯示中使用任何 Rhino 材質!

上述句子會將字體加粗是因為這一件很重要的事,因為您將不再受限於 Grasshopper 傳統上所依賴的簡化顯示圖形。現在,您可以匯入 (或使用 Query Materials 元件) 將 Rhino 的內建材質帶入,並使用標準 Custom Preview 元件將其應用於 Grasshopper 幾何物件。

以下範例是使用匯入的 Rhino 材質的各種顯示模式的截圖。

Bolt-Nut Render

Material Display

未來會增加更多新功能!

這些只是新工具的第一個版本,工具集尚不完整,您可能偶爾會發現一些錯誤。如果您發現某些功能不太正常或有疑問,請告訴我們,我們隨時為您提供協助。

我們希望您能提供更多的意見和回饋,讓我們可以確定接下來應該要包含哪些數據類型,哪些類型又對您的工作流程最有用?您是否需要圖塊、燈光、尺寸、截平面、命名圖紙視圖等等? 我們有一個長遠的元件開發規劃,將在未來幾個月內開發這些元件,而我們會根據用戶的回饋確定哪些功能應該優先。

試試看

下載並開啟 ConstructObjectAttributes.gh 定義。