Visio二次開發可以實現的項目情景很多,如電氣線路分析、配電網絡分析、流程圖等,現因為項目需要,又認識多了一個應用場合,液壓傳動的仿真。項目效果圖如下所示:
動態仿真,其實也就是模擬實際線路的走向,實現動畫的展現。以前我的Visio的項目,基本上都是基於靜態的圖形展現,並沒有設置太多的動態展現。原來配電網絡的通電線路的分析,嚴格來說也是靜態的,因為基本上是一次性把通電和不通電的線路給繪制出來。而動態仿真則要求慢慢的動畫展現線路的走向和顏色變化。
如活塞運動的仿真,要求不停止動畫的情況下,可以一直循環的變化。 如下圖所示的效果:
本文介紹如何實現線路走向、顏色變化,以及特定圖形(如活塞)的動態仿真效果。
首先實現動態仿真效果,必須先分析出整個圖紙的拓撲網絡順序及層次,這樣我們才能知道正確的線路走向以及動畫的變化順序,如配電網絡線路圖中,必定是電源開始,通過導線或者設備傳遞電源,以實現電路的貫通。在液壓線路中,由油箱開始,經過一系列設備,最後又回到油箱。
要在Visio圖紙上實現如上圖的動畫效果,其中最重要的奧秘是使用下面代碼:
System.Windows.Forms.Application.DoEvents();
很多情況下,我們可能對這個DoEvents函數的功能不是很熟悉,其實我們可以理解為主動觸發事件,讓消息流提前進入處理流程,這樣我們就能夠看到在Visio圖紙上的圖形更新效果了。
整個圖形分析的過程,分為3個步驟:
1)進行簡單的拓撲分析,把設備周邊的關系保持到數據庫進行分析。
2)根據數據庫結構,對設備關系進行分析,獲得拓撲網絡的設備層次結構列表
3)根據不同的設備類型和圖紙當前狀態,對設備進行適當的繪制和動畫仿真展示。
大致的代碼如下所示:
private void PowerCutAnalyze(Visio.Application app)