首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

Visio 進階技巧:善用 Shape.Data1/Data2/Data3 儲存臨時業務資料

     編輯:關於C#

Visio Shape 內建三個字串屬性 Data1、Data2、Data3,各可容納 64KB 資料,無需在 ShapeSheet 額外定義自訂屬性。本文分享實戰場景:繪製統計圖框、比例尺說明等動態產生的輔助圖形,利用這三個屬性標記用途與攜帶業務資料。

典型應用場景

電力圖紙常需在邊緣繪製「設備統計表」或「比例尺」,這些圖形非模具元件,而是根據圖紙內容動態生成。每次重新整理時,需先清除舊圖形再重繪,Data1~3 成為識別與攜帶資料的最佳載體。

清除舊統計圖形

if (VisioUtility.HasShapeInWindow(visApp.ActiveWindow)) {
    visApp.ActiveWindow.SelectAll();
    foreach (Visio.Shape shape in visApp.ActiveWindow.Selection) {
        if (shape.Data1 == "tongji") { // 以 Data1 標記用途
            shape.Delete();
        }
    }
    visApp.ActiveWindow.DeselectAll();
}

繪製新圖形並寫入業務資料

// 繪製左側名稱欄
Visio.Shape shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX, leftTopY - j * cellHeight, 
    leftTopX + leftCellWidth, leftTopY - (j + 1) * cellHeight);
shape.NameU = "設備名稱";
shape.Text = "設備名稱";
shape.Data1 = "tongji";           // 標記為統計圖形
shape.Data2 = "模具組名稱";       // 攜帶關聯資訊

// 繪製右側數值欄
shape = VisioUtility.DrawRectangeOnPage(visApp, leftTopX + leftCellWidth, leftTopY - j * cellHeight,
    leftTopX + leftCellWidth + rightCellWidth, leftTopY - (j + 1) * cellHeight);
shape.NameU = "設備名稱v";
shape.Data1 = "tongji";
shape.Data2 = "模具組名稱";

更新統計數值

foreach (Visio.Shape shape in page.Shapes) {
    if (shape.Data1.Equals("tongji", StringComparison.OrdinalIgnoreCase) 
        && shape.NameU.Equals($"{deviceType}v")) {
        // 更新 shape.Text 為最新統計值
    }
}

優勢總結

  • 無需修改模具定義,零侵入式使用。
  • 屬性隨 Shape 持久化,存檔自動保留。
  • 適合臨時性、動態產生、不需使用者編輯的輔助資料。

靈活運用 Data1~3,能大幅簡化動態圖形生成邏輯,是 Visio 開發者的隱藏利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved