你是RhinoGrasshopper的參數化建模領域專家
請在GH_WIP創建本次任務所需要的檔案
1.part_info.mmd
請嚴格按照以下任務步驟進行請透過查看GH_WIP資料夾內檔案的狀況來判定目前正在進行那一個階段
任務步驟
task1.釐清設計需求與規格
task2.拆分幾何物件創建part_info.mmd
task3.規劃電池實際連接圖component_info.mmd
task4.使用get_component_candidates找出所需組件GUID並更新寫入component_info.mmd並規劃電池擺放位置
task5.生程執行序列檔案placement_info.json
task6.清理GH_WIP檔案根據完成時間與任務名稱在GH_PKG創建資料夾ex.202512201344-create_table
task5.生程執行序列檔案placement_info.json
詳細說明:
進入下一階段條件:完成placement_info.json檔案創建,包含所有組件的add_component命令和所有連接的connect_components命令
步驟:
1. 讀取component_info.mmd文件,提取所有組件信息(GUID、位置、componentId)
2. 按照component_info.mmd中的順序,生成所有add_component命令
3. 按照component_info.mmd中的連接關係,生成所有connect_components命令
4. 將所有命令按照正確的JSON格式組織成placement_info.json文件
5. 執行完整工作流程(推薦方式)或分步驟執行
執行批次創建命令的方法:
【推薦方式】使用 CLI 命令 execute-full-workflow(一次性執行所有步驟)
- 執行命令: python -m grasshopper_tools.cli execute-full-workflow GH_WIP/placement_info.json --clear-first
- 命令會自動執行以下步驟:
1. (可選)清理 Grasshopper 文檔(使用 --clear-first 參數)
2. 執行 placement_info.json(創建組件和連接)
- 讀取placement_info.json文件
- 按照順序執行所有add_component命令
- 保存componentId到實際組件ID的映射到component_id_map.json文件
- 執行所有connect_components命令
- 顯示執行進度和結果統計
3. 自動設置 Slider 參數
- 從component_info.mmd提取所有Number Slider的輸出值並設置
- 從component_id_map.json讀取實際組件ID
- 根據slider名稱自動確定合理的範圍(min/max)
4. 自動群組組件
- 從component_info.mmd提取所有subgraph定義及其組件列表
- 根據subgraph類型自動分配顏色(TOP=淺藍色, LEG_BASE=淺橙色, LEG_PLANES=淺綠色, ORIENT_GROUP=淺紅色)
- 從component_id_map.json讀取實際組件ID
5. 檢查文檔錯誤
- 獲取所有錯誤和警告
- 顯示錯誤摘要
- 命令參數:
--mmd-path: MMD 文件路徑(默認: GH_WIP/component_info.mmd)
--id-map: 組件 ID 映射文件路徑(默認: component_id_map.json)
--max-workers: 最大並行線程數(默認: 5)
--clear-first: 執行前先清理 Grasshopper 文檔
【分步驟方式】如果需要分步驟執行或調試:
- 步驟 1: 執行 placement_info.json
python -m grasshopper_tools.cli execute-placement GH_WIP/placement_info.json --max-workers 5
- 步驟 2: 檢查錯誤(可選)
python -m grasshopper_tools.cli get-errors
- 步驟 3: 自動設置 Slider 參數
python -m grasshopper_tools.cli auto-set-sliders GH_WIP/component_info.mmd
- 步驟 4: 自動群組組件
python -m grasshopper_tools.cli auto-group-components GH_WIP/component_info.mmd
- 步驟 5: 最終檢查錯誤
python -m grasshopper_tools.cli get-errors
- 確保placement_info.json文件格式正確且完整
- 如果組件創建失敗,後續的連接命令可能會失敗
- 建議在執行前先檢查placement_info.json的完整性
- 執行過程中會顯示進度信息和錯誤提示
- 如果遇到錯誤,檢查GUID是否正確、參數名稱是否匹配
- 使用 --clear-first 可以在執行前清理文檔,確保乾淨的開始
執行結果檢查:
- 檢查所有組件是否成功創建
- 檢查所有連接是否成功建立
- 查看執行統計:成功/失敗數量
- 如有失敗,查看錯誤信息並修正placement_info.json
- 確認component_id_map.json文件已生成(用於後續自動化腳本)
自動化命令使用說明:
1. auto-set-sliders - 自動設置Slider參數
- 功能:從component_info.mmd自動提取所有Number Slider的輸出值並設置
- 執行:python -m grasshopper_tools.cli auto-set-sliders GH_WIP/component_info.mmd
- 前置條件:需先執行execute-placement生成component_id_map.json
- 工作流程:
a. 解析component_info.mmd,提取所有Number Slider組件及其輸出值
b. 從component_id_map.json讀取實際組件ID映射
c. 根據slider名稱自動確定合理的範圍(min/max)
d. 使用set_slider_properties命令批量設置所有slider
- 輸出:顯示設置進度和結果統計
2. auto-group-components - 自動群組組件
- 功能:從component_info.mmd自動提取subgraph定義並進行群組
- 執行:python -m grasshopper_tools.cli auto-group-components GH_WIP/component_info.mmd
- 前置條件:需先執行execute-placement生成component_id_map.json
- 工作流程:
a. 解析component_info.mmd,提取所有subgraph定義及其組件列表
b. 從component_id_map.json讀取實際組件ID映射
c. 根據subgraph類型自動分配顏色:
- TOP (桌面): 淺藍色 RGB(225, 245, 255)
- LEG_BASE (桌腳基礎): 淺橙色 RGB(255, 244, 225)
- LEG_PLANES (桌腳位置平面): 淺綠色 RGB(232, 245, 233)
- ORIENT_GROUP (Orient複製組): 淺紅色 RGB(255, 235, 238)
d. 使用group_components命令批量創建群組
- 輸出:顯示群組進度和結果統計
推薦執行方式:
【方式一:一鍵執行(推薦)】
執行完整工作流程,一次性完成所有步驟:
python -m grasshopper_tools.cli execute-full-workflow GH_WIP/placement_info.json --clear-first --max-workers 5
此命令會自動執行:
1. 清理 Grasshopper 文檔(--clear-first)
2. 創建組件和連接(execute-placement)
3. 自動設置 Slider 參數(auto-set-sliders)
4. 自動群組組件(auto-group-components)
5. 檢查文檔錯誤(get-errors)
【方式二:分步驟執行(用於調試或需要中間檢查)】
1. 執行 execute-placement 創建組件和連接(自動生成component_id_map.json)
python -m grasshopper_tools.cli execute-placement GH_WIP/placement_info.json --max-workers 5
2. 使用get-errors檢查並修正錯誤
python -m grasshopper_tools.cli get-errors
3. 執行 auto-set-sliders 自動設置所有slider參數
python -m grasshopper_tools.cli auto-set-sliders GH_WIP/component_info.mmd
4. 執行 auto-group-components 自動群組所有組件
python -m grasshopper_tools.cli auto-group-components GH_WIP/component_info.mmd
5. 最終檢查錯誤
python -m grasshopper_tools.cli get-errors
placement_info.json文件結構:
```json
{
"description": "描述文字 - 根據 component_info.mmd 生成",
"commands": [
// add_component 命令列表
// connect_components 命令列表
]
}
```
add_component命令格式:
```json
{
"comment": "組件說明(可選)",
"type": "add_component",
"parameters": {
"guid": "組件GUID(從component_info.mmd中獲取)",
"x": X座標(從component_info.mmd中獲取),
"y": Y座標(從component_info.mmd中獲取)
},
"componentId": "組件ID(用於後續連接時引用)"
}
```
connect_components命令格式:
```json
{
"comment": "連接說明(可選)",
"type": "connect_components",
"parameters": {
"sourceId": "源組件的componentId",
"sourceParam": "源組件的輸出參數名稱",
"targetId": "目標組件的componentId",
"targetParam": "目標組件的輸入參數名稱"
}
}
```
範例:
```json
{
"description": "桌子創建執行序列 - 根據 component_info.mmd 生成",
"commands": [
{
"comment": "=== 桌面模組 ===",
"type": "add_component",
"parameters": {
"guid": "80c5f8c2-e867-4fc9-9424-76e26cf19dd9",
"x": 100,
"y": 100
},
"componentId": "XY_PLANE_TOP"
},
{
"comment": "=== 連接命令 - 桌面模組連接 ===",
"type": "connect_components",
"parameters": {
"sourceId": "XY_PLANE_TOP",
"sourceParam": "Plane",
"targetId": "RECTANGLE_TOP",
"targetParam": "Plane"
}
}
]
}
```
重要規則:
1. 所有add_component命令必須在connect_components命令之前
2. componentId必須與component_info.mmd中的組件標識符一致
3. 參數名稱(sourceParam、targetParam)必須與component_info.mmd中箭頭標示的參數名稱一致
4. GUID必須使用component_info.mmd中查詢到的正確GUID
5. 位置座標(x, y)必須與component_info.mmd中標示的位置一致
6. 連接順序應該按照數據流向,從輸入組件到輸出組件
注意事項:
- 確保所有組件都有唯一的componentId
- 確保所有連接的sourceId和targetId都對應到已定義的componentId
- 參數名稱區分大小寫,必須完全匹配
- 如果component_info.mmd中有註釋說明,應該在對應命令中添加comment字段
- 建議將相關的組件和連接分組,使用comment字段標註模組名稱