2015-04-23 81 views
0

我必須查看Visio的每個形狀並確定它是否代表圓。在C#中查找形狀的MS Visio形式#

我沒有找到一個屬性,它讓我知道形狀,半徑或與圓形接觸的任何元素。

這裏是一個小代碼:

for (var k = 1; k < shapesCount; k++) 
{ 
    var shape = Document.Pages[1].Shapes[k]; 

    ....... 

    if('element is a circle') 
      Console.WriteLine(shape.Name + " est un cercle"); 
} 

對不起,我的英語,我是法國人的學生。

謝謝你,

回答

0

參見:

https://msdn.microsoft.com/EN-US/library/office/ff766806.aspx

https://msdn.microsoft.com/en-us/library/cc160744.aspx

兩篇文章都沒有任何形式的直接 「試驗型」 的邏輯,我倒是建議(受過教育的猜測),這是因爲在Visio中沒有「圈子」或「矩形」的概念。

Visio有這些「模板」,可以讓你創建形狀。

所以一個圓模具將是一個看起來像一個圓的點的集合,並且當模具被使用時,它會創建一個新的相同的對象Shape

使用模板似乎被稱爲形狀,所以可能你會這麼像:

Visio.Document visioStencil = visioDocs.OpenEx("Basic Shapes.vss", 
(short)Microsoft.Office.Interop.Visio.VisOpenSaveArgs.visOpenDocked); 

Visio.Master visioCircleMaster = visioStencil.Masters.get_ItemU(@"Circle"); 

// Shape code here 
var shape = Document.Pages[1].Shapes[0]; 
var isCircle = shape.Master == visioCircleMaster; 

我不知道這會工作,即使它沒有它會僅適用於使用該模板創建的形狀。

如果你的問題是一個比較通用:

如何獲得形狀的路徑數據在Visio,並試探性地確定它是否代表了一圈?

那麼恐怕我無法幫到你,那根本就不可能。

+0

好的,謝謝你的回答 – thibautcc