2012-09-07 64 views
0

我構建了一個簡單的轉換Add In,但其行爲與不同的Visio版本(Visio 2010 Professional和Visio 2010 Premium)不同。 Add In接受一個用Stencil_1.vss中的Shapes創建的Process-Diagram,並用Stencil_2.vsd中的Shapes創建一個新的略有不同的Process-Diagram。它通過一個Visio頁面循環,併爲每個形狀創建一個新的形狀從新的主形狀(從Stencil_2.vsd),並將其放入新頁面。幾何,字幕等都是一樣的,只有形狀外觀改變了。下面是源圖:當我運行的代碼爲Visio 2010專業泳道形狀繪製正確相同的C#代碼在Visio Professional和Premium中產生不同的輸出

the source diagram

run from Visio 2010 Prof

當我運行從Visio高級相同的代碼的泳道的外觀和佈局不匹配: run from Visio 2010 Premium

這兩次I(來自相同的模版「泳道」)下降相同的形狀進帶有SAME代碼片段的頁面:

Visio.Master vm = swimlane_stencil.Masters.get_ItemU(@"Swimlane"); 
Visio.Shape TargetShape = targetPage.Drop(vm, shape_x, shape_y); 

如何確保代碼在任何時間產生相同(正確)的輸出?我必須禁用泳道形狀表中的任何(高級)功能嗎?

回答

0

交叉功能流程圖形狀由一個插件支持,因此形狀可以在泳道和頁面等內正確定位。大多數形狀都有一個放置事件,它會針對其各自的功能調用插件。

通過它的外觀,插件不會在您的Visio Premium實例中被正確調用。例如,有一個在EventDrop cell的函數:

= RUNADDONWARGS( 「CFF14」, 「/ CMD = 20001」)

..where CFF14是2010版的交叉功能流程圖附加的。

請記住,2010年在跨功能流程圖解決方案中也使用container shapes。你是否使用了正確的2010'目標'形狀?

就專業和高級版本而言,就我所知,在功能上應該沒有差異,就跨功能流程圖而言。

0

謝謝你的時間!

請記住,2010年也使用 交叉功能流程圖解決方案中的容器形狀。您是否使用了正確的2010'目標'形狀?

兩種情況下的「目標」形狀都是跨功能流程圖模板中的Swimlanes。

我測試了相同的另一個「專業」 - 機器添加代碼,它是成功的,我的意思是「泳道」形狀定位正確,沒有分隔符和標題部分。 我也卸載並重新安裝Premium實例,沒有任何更改,相同的代碼生成上面繪製的相同的圖。 Swimlanes PinX被改變,分隔符和標題部分被添加。

  • 我注意到的是,在「錯誤圖」僅第一下降 泳道形狀是正確
  • 下面(後丟棄)泳道被錯誤地定位和分離器和標題欄相加。他們有: User.msvShapeCategories = 「CFF集裝箱; DoNotContain」,右邊泳道,形狀有:User.msvShapeCategories = 「泳道; DoNotContain」
  • 另外我注意到,那錯泳道衍生 從xfunc_m.vss(User.visMasterStencil = 「xfunc_m.vss」)
  • 我從User.visMasterStencil細胞 刪除值‘xfunc_m.vss’並更新模版

現在它工作得很好,我跳e此解釋對其他人有用,有人可以比我更好地解釋這種行爲:)

相關問題