電氣圖紙的停電分析是配電自動化系統的核心功能。本文揭示如何將 Visio 圖形轉為拓撲模型,以電源為起點進行深度優先搜尋,建立樹狀拓撲結構,並依通電狀態動態著色(綠=有電、紅=無電),支援開關分合閘即時模擬。
將圖形連接關係持久化至資料庫:
| Equipment (設備ID) | ConnectionShapes (關聯設備ID集合) |
|---|---|
| 1 (電源/飛達) | -1, 2 |
| 2 | 1, 3, 8, 7, 10 |
| 3 | 2, 4, 11 |
| ... | ... |
-1 代表虛擬根節點(電源輸入端)。斷開開關視為樹葉節點,不再向下遞迴。
ConnectionShapes 找含 -1 的設備 → 根節點(如 ID=1)。ID, PID, BelongTo, LoginIP,構成倒置樹。
// 初始:根節點
ID PID
1 -1
// 展開 1 的下游:2
ID PID
1 -1
2 1
// 展開 2 的下游:3,8,7,10(排除上游 1)
ID PID
1 -1
2 1
3 2
8 2
7 2
10 2
// 繼續展開 3 → 4,11;4 → 5,12;5 → 6,13...
// 最終得到完整拓撲樹
// 取得有電設備 ID 清單
List poweredIds = powerCutBLL.RunPowerCutAnalyzing(app, selectedShape, ref msg);
foreach (string idStr in poweredIds) {
int shapeId = int.Parse(idStr);
Shape shape = visDoc.Pages[1].Shapes.ItemFromID[shapeId];
shape.CellsU["LineColor"].ResultIU = (double)VisDefaultColors.visDarkGreen; // 綠色
Application.DoEvents(); // 強制 UI 重繪
Thread.Sleep(500); // 動畫延遲
}
// 無電設備著黑/紅
shape.CellsU["LineColor"].ResultIU = (double)VisDefaultColors.visBlack;
Application.DoEvents() 讓訊息迴圈處理重繪,實現逐步動畫效果。LoginIP 隔離)。BelongTo 欄位支援多電源並聯場景(構建多棵樹)。此架構已成功應用於配電網圖形化管理系統,支援千節點級拓撲即時分析。