Skip to main content
Glama
COMPONENT_DUPLICATE_HANDLING.md6.75 kB
# 處理多個同名組件的指南 ## 問題說明 在 Grasshopper 中,可能會有多個組件具有相同的名稱(例如來自不同的插件或庫)。當使用 `add_component` 命令時,如果只提供組件名稱,系統可能會無法確定要創建哪一個組件。 ## 解決方案 ### 1. 使用 GUID(最可靠的方式) 每個 Grasshopper 組件都有一個唯一的 GUID。如果知道組件的 GUID,可以直接使用它來唯一標識組件。 **JSON 格式:** ```json { "type": "add_component", "parameters": { "type": "Number Slider", "x": 100.0, "y": 200.0, "guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } ``` **Python 調用:** ```python add_component( component_type="Number Slider", x=100.0, y=200.0, guid="a1b2c3d4-e5f6-7890-abcd-ef1234567890" ) ``` ### 2. 使用 Category(類別) 如果組件屬於不同的類別,可以使用 `category` 參數來區分。 **JSON 格式:** ```json { "type": "add_component", "parameters": { "type": "Point", "x": 100.0, "y": 200.0, "category": "Params" } } ``` **Python 調用:** ```python add_component( component_type="Point", x=100.0, y=200.0, category="Params" ) ``` 常見的類別包括: - `"Params"` - 參數組件 - `"Maths"` - 數學運算組件 - `"Vector"` - 向量組件 - `"Curve"` - 曲線組件 - `"Surface"` - 曲面組件 ### 3. 使用 Library(庫/插件名稱) 如果組件來自不同的插件或庫,可以使用 `library` 參數來區分。 **JSON 格式:** ```json { "type": "add_component", "parameters": { "type": "Custom Component", "x": 100.0, "y": 200.0, "library": "MyPlugin" } } ``` **Python 調用:** ```python add_component( component_type="Custom Component", x=100.0, y=200.0, library="MyPlugin" ) ``` ### 4. 組合使用多個參數 可以同時使用多個參數來更精確地定位組件: ```json { "type": "add_component", "parameters": { "type": "Number Slider", "x": 100.0, "y": 200.0, "category": "Params", "library": "Grasshopper" } } ``` ## 錯誤處理 ### 情況 1:只有一個匹配 如果只有一個組件匹配名稱,系統會自動使用它,無需額外參數。 ### 情況 2:多個匹配但未提供過濾參數 如果有多個同名組件,但沒有提供過濾參數,系統會**智能選擇**最合適的組件: 1. **優先排除廢棄的組件**:自動過濾掉標記為 Obsolete 或 Deprecated 的組件 2. **優先選擇原生內建組件**:如果有多個候選項,優先選擇來自 Grasshopper 原生庫的組件 3. **如果仍然有多個匹配**:選擇第一個(通常是最常用的) 如果智能選擇後仍然無法確定,系統會返回詳細的錯誤信息,包含: - **組件名稱和 GUID** - **類別和子類別** - **庫名稱**(標記是否為 Built-in) - **是否廢棄**(標記是否推薦使用) - **組件描述** - **輸入參數列表**(名稱、類型、描述) - **輸出參數列表**(名稱、類型、描述) 示例錯誤信息: ``` Multiple components found with name 'Number Slider' (3 matches). Please specify additional parameters (guid, category, or library) to distinguish. Recommendation: Prefer non-obsolete, built-in components. Available candidates: - Number Slider (GUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890) Category: Params, SubCategory: Primitive Library: Grasshopper (Built-in - Recommended) Obsolete: No (Recommended) Description: Creates a slider for numeric input with adjustable range Inputs: (none) Outputs: N (Number) - Number Slider (GUID: b2c3d4e5-f6a7-8901-bcde-f12345678901) Category: Params, SubCategory: Primitive Library: CustomPlugin Obsolete: No (Recommended) Description: Enhanced slider with additional features Inputs: (none) Outputs: N (Number) - Number Slider (GUID: c3d4e5f6-a7b8-9012-cdef-123456789012) Category: Params, SubCategory: Legacy Library: OldPlugin Obsolete: Yes (Not Recommended) Description: Legacy slider component (deprecated) Inputs: (none) Outputs: N (Number) ``` ### 情況 3:過濾後沒有匹配 如果提供的過濾參數無法匹配任何組件,系統會返回錯誤並列出所有候選項: ``` Multiple components found with name 'Number Slider' but none match the specified filters (category=WrongCategory, guid=, library=). Available candidates: - Number Slider (GUID: a1b2c3d4-e5f6-7890-abcd-ef1234567890, Category: Params, Library: Grasshopper) ... ``` ## 智能選擇機制 系統會自動執行以下智能選擇邏輯(當沒有明確指定 GUID 時): 1. **排除廢棄組件**:自動過濾掉標記為 Obsolete 或 Deprecated 的組件 2. **優先原生內建組件**:優先選擇來自 Grasshopper 原生庫的組件,而不是第三方插件 3. **選擇第一個匹配**:如果仍然有多個候選項,選擇第一個(通常是最常用的) 這意味著在大多數情況下,**您只需要提供組件名稱**,系統會自動選擇最合適的組件。 ## 最佳實踐 1. **優先使用 GUID**:如果知道組件的 GUID,這是最可靠的方式 2. **使用 Category**:如果組件屬於不同的類別,使用 category 參數 3. **信任智能選擇**:在大多數情況下,只提供組件名稱即可,系統會自動選擇未廢棄的原生內建組件 4. **檢查錯誤信息**:如果遇到多個匹配的錯誤,查看錯誤信息中列出的候選項,特別注意: - **Built-in (Recommended)**:原生內建組件,優先使用 - **Obsolete: No (Recommended)**:未廢棄的組件,優先使用 - **Obsolete: Yes (Not Recommended)**:廢棄的組件,避免使用 - **輸入輸出參數**:幫助判斷組件是否符合需求 5. **測試簡單名稱**:首先嘗試只使用組件名稱,如果只有一個匹配,系統會自動處理 ## 示例場景 ### 場景 1:標準組件(無重複) ```json { "type": "add_component", "parameters": { "type": "Circle", "x": 100.0, "y": 200.0 } } ``` ✅ 正常工作,因為只有一個 "Circle" 組件 ### 場景 2:多個同名組件 假設有兩個 "Custom Point" 組件,一個來自 "PluginA",一個來自 "PluginB": ```json { "type": "add_component", "parameters": { "type": "Custom Point", "x": 100.0, "y": 200.0, "library": "PluginA" } } ``` ✅ 使用 library 參數區分 或者使用 GUID: ```json { "type": "add_component", "parameters": { "type": "Custom Point", "x": 100.0, "y": 200.0, "guid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } ``` ✅ 使用 GUID 精確指定

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AmemiyaLai/grasshopper-mcp-workflow'

If you have feedback or need assistance with the MCP directory API, please join our Discord server