在Visio的二次開發中,當發布圖紙的時候,我們往往需要保存圖紙和圖紙的設備信息到數據庫,圖紙是將文件以二進制保存到數據庫中,設備信息是保存圖紙對應的Shape的各種自定義屬性。本文主要介紹如何保存圖紙背後的設備信息。
這裡圖紙的設備信息可以通過一個設備表如Device1來放置同一類型的設備信息,如負荷開關存放在Device1,架空線放在Device2等等,Device(n)是我們詳細放置某種類型設備的表,其結構如下
另外主要我們再新建一個表來管理那種類型的設備對應那個表即可。如下圖所示:
一旦建立了上表的關系,我們就知道那個類型的設備對應的表名是多少了。我們通過代碼
List<DeviceTableInfo> deviceTables = deviceTableDAL.GetDeviceTables();
就可以獲取到所有的設備類型表的信息了,這可以為我們下一步保存設備信息做准備。
為了獲取到某個設備類型對應的表信息,我們可以這樣拿到它的對應信息。
string deviceType = VisioUtility.GetShapeCellValue(shape, "設備類型");
DeviceTableInfo tableInfo = deviceTableDAL.GetTableNameByDevice(deviceTables, deviceType);
我們知道,圖紙有很多信息,我們遍歷圖紙設備的時候,可以通過遍歷其選區實現,如下所示
if (VisioUtility.HasShapeInWindow(visWindow))
{
visWindow.SelectAll();
foreach (Visio.Shape shape in visWindow.Selection)
{
}
visWindow.DeselectAll();
}