C 進行Visio二次開發之電氣線路停電分析邏輯

2021-09-05 19:09:03 字數 2683 閱讀 6551

停電分析,顧名思義,是對圖紙進行停電的邏輯分析。在電氣化線路中,一條線路是從乙個電源出來,連線著很多很多的裝置的,進行停電分析,有兩個重要的作用:一是看圖紙上的shape元件是否連線正常,二是看哪些裝置有電無電。通過給有電的裝置一種顏色(如綠色),無電的裝置一種顏色(如紅色),那麼就可以很明顯地看到通電的不同變化。

對一張visio繪製的電氣線路圖,我們如何進行停電分析呢?下面我們看看相關的序列邏輯先。

在上面的序列圖中,主要實現了這樣的思路:

停電分析是通過儲存裝置相關連線資訊到資料庫,以電源(如飛達)為起點,對裝置資訊進行線路的拓撲分析,把分析儲存到資料庫中,然後獲得拓撲模型中有電的裝置,對圖紙的裝置顏色進行更新(有電為綠色,無電為紅色),如果撞電,則恢復所選開關的顏色。

由於以上的關係表,只是對乙個飛達進行了線損模型分析,因此只會存在乙個

-1即飛達的情況,其他

id都是和該飛達相關聯的下游裝置

id;如果我們找到每乙個的裝置

id和其父

id(上游裝置

id)即滿足要求。

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

equipment

為裝置的id,

connectionshapes

為關聯的裝置

id集合

1、先在

connectionshapes

尋找有-1

的equipment

得到下列模型:

idpid1-1

2、下面再找

1下游裝置;在關係表中尋找

equipment=1

的connectionshapes

有那些關聯裝置,發現有-1,

2;-1是

1的上游裝置,不能使用,因此剩下

2,得到如下表。 id

pid1-12

1 3、

繼續找2

的下游裝置;發現2有

1、3、

8、7、

10和其關聯,1是

2的上游裝置,不能使用,剩下的列出來。 id

pid1-12

1328

27210

2 4、

依次對3、8

、7、10

進行分析,得到以下資料,下面先對

3下游裝置進行分析 id

pid1-12

1328

27210

24311

3 繼續對4、

11進行分析,先對

11進行分析,發現

11只有

3相連,

3為上游裝置,結束; 再對

4進行分析,如下。 id

pid1-12

1328

27210

24311

35412

4 繼續對5、和

12進行分析,先對

12進行分析,發現

12只有

4相連,

4為上游裝置,結束;對

5進行分析,如下。 id

pid1-12

1328

27210

24311

35412

465

繼續對6進行分析,有

13相連;繼續分析

13下游裝置沒有,結束,得到如下。 id

pid1-12

1328

27210

24311

35412

46513

6 5、

繼續第上面步驟的分析,上面說到

2下游裝置有3、

8、7、

10,還有8、

7、10沒有分析,對

8下游裝置繼續分析。 id

pid1-12

1328

27210

24311

35412

46513

698

對9繼續分析 id

pid1-12

1328

27210

24311

35412

46513

69815

916917

9189繼續分析15、

16、17、

18發現沒有下游裝置,結束。

根據上面的分析結果,我們就

可以得到線路的拓撲樹狀圖,即乙個倒立的樹,分析的儲存結果為下圖所示。

其中關鍵的id、pid是用來在樹之間漫遊的,loginip用來區分不同使用者的分析結果,belongto在多個電源通電的時候,區分不同的電源(即構造幾顆倒立的樹),其他資訊用作輔助。注意:斷開的開關,看成是樹的分支終點。構造模型的時候不會記錄該開關裝置的資訊,分析的時候會自動斷層。

最後附上分析的結果,紅的紅,綠的綠,多好看,哈哈

Visio二次開發(一) 巧用Visio巨集

最近做的專案中需要用到visio二次開發,安裝了visio的sdk,還有從網上找了一些這方面的部落格,visio的sdk是全英文的,看著有點費勁,很多的東西都不知道該如何去找,不過網上的一些部落格還是有一些不錯的,前兩天發現乙個有助於visio二次開發的方法,下面分享給大家。就是巧用visio的巨集...

visio二次開發 事件篇

visio 二次開發的事件程式設計主要分為四個步驟 首先,需要建立 visio 事件 和 visio 事件處理類,並新增需要處理的事件 其次,對需要處理的事件向物件進行註冊,即新增到物件的 eventlist 事件列表中,並同時指定 visio 事件處理類。這樣,當物件觸發了相應的事件後,能夠向事件...

C 進行Visio二次開發之知識點考核試題

本人做過多年的visio二次開發,根據個人的經驗總結及專案積累,寫了一些小小的隨筆文章 具體可參考 伍華聰的visio二次開發文章 上月有幸給深圳乙個團隊做了兩天的visio培訓,當了一回客座老師,重新拉起visio二次開發這面大旗,個人覺得這也是一次比較難忘的一次經歷。本次準備的培訓,除了全面介紹...