C# 找到形状';C语言中MS Visio的s形式#

C# 找到形状';C语言中MS Visio的s形式#,c#,visio,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

我必须查看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");
}
for(var k=1;k
对不起我的英语,我是法国学生

谢谢,请参见:

这两篇文章都没有任何直接的“形状测试”逻辑,我建议(有根据的猜测),这是因为在Visio中没有“圆”或“矩形”的概念

Visio有这些“模具”,允许您创建形状

因此,圆形模具将是看起来像圆形的点的集合,当使用模具时,它将创建一个相同的新
形状
对象

使用模具似乎被称为母版形状,因此您可以这样做:

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中获取形状的路径数据,并以启发式方式确定它是否表示圆

那恐怕我帮不了你,这可能根本不可能