在C#中找到MS Visio的Shape形式

时间:2015-04-23 13:30:55

标签: c# visio

我必须查看每个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");
}

对不起我的英语,我是法国学生。

谢谢,

1 个答案:

答案 0 :(得分:0)

请参阅:

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

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

这两篇文章都没有任何形式的直接测试&#34;逻辑,我建议(有教养的猜测),这是因为在Visio中没有一个&#34;圈&#34;的概念。或者一个&#34;矩形&#34;。

Visio拥有这些&#34;模板&#34;允许你创建形状。

因此,圆形模板将是一个看起来像圆形的点的集合,并且当使用模板时,它会创建一个相同的新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中形状的路径数据并启发式确定它是否代表圆圈?

然后,我担心我无法帮助你,可能根本不可能。