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

C# Visio 二次開發系列(二):巨集錄製分析與子形狀分離重組技術

     編輯:關於C語言

目標效果展示

左右組合圖形互換變化效果

實現組合圖形內部子形狀的位置互換(左右對調)。

巨集錄製:手動操作轉代碼

透過 Visio 巨集錄製功能,捕獲手動分解、移動、重組的完整操作序列:

Sub Macro1()
    Dim UnDOScopeID1 As Long
    UndoScopeID1 = Application.BeginUndoScope("移動對象")
    ActiveWindow.DeselectAll
    ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(60), visSubSelect
    Application.ActiveWindow.Selection.Move 0.405512, -0#
    ActiveWindow.Selection.RemoveFromGroup
    Application.EndUndoScope UnDOScopeID1, True
    
    ActiveWindow.DeselectAll
    ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(25), visSubSelect
    Application.ActiveWindow.Selection.Move 0.314961, -0#
    
    Dim UnDOScopeID2 As Long
    UndoScopeID2 = Application.BeginUndoScope("移動對象")
    ActiveWindow.DeselectAll
    ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(60), visSelect
    Application.ActiveWindow.Selection.Move -0.688976, 0#
    ActiveWindow.DeselectAll
    ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(22), visSelect
    ActiveWindow.Select Application.ActiveWindow.Page.Shapes.ItemFromID(60), visSelect
    ActiveWindow.Selection.AddToGroup
    Application.EndUndoScope UnDOScopeID2, True
End Sub

關鍵洞察

  1. 分解→移動→重組:子形狀必須先從群組移除(RemoveFromGroup),移動後再加入(AddToGroup)
  2. UndoScope 管理:使用 BeginUndoScope/EndUndoScope 將操作包裝為單一可復原單位
  3. 定位策略升級:巨集依賴 ItemFromID 硬編碼 ID,實際開發改用自訂屬性「設備類型」(如「閥A」、「閥B」)動態定位

技術路線確立

驗證了「化整為零」策略可行:透過程式控制分解群組、操作子形狀、重新組合,實現動態變化效果。

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