2015-04-23 52 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