以编程方式更新/替换visio图表中的形状(C#)

以编程方式更新/替换visio图表中的形状(C#),c#,visio,C#,Visio,我希望以编程方式(C#)更新/替换给定visio流程图(*.vsd)的所有形状。图表布局保持不变(所有连接、坐标等都相同),但主图形应不同(来自不同的模具)。 任何例子、建议和想法都将受到高度赞赏 谢谢你的建议!源图有许多分组的受保护形状(+多个子形状),因此我想如果我获取给定源形状的所有信息,然后从目标模具中删除一个新的主控形状并设置这些属性,效果会更好。下一步,我将采取下一个形状,并做同样的事情。我将创建一个新的Visio文档,因为我不确定源页面ShapeSheet是否以某种方式进行了自定

我希望以编程方式(C#)更新/替换给定visio流程图(*.vsd)的所有形状。图表布局保持不变(所有连接、坐标等都相同),但主图形应不同(来自不同的模具)。 任何例子、建议和想法都将受到高度赞赏


谢谢你的建议!源图有许多分组的受保护形状(+多个子形状),因此我想如果我获取给定源形状的所有信息,然后从目标模具中删除一个新的主控形状并设置这些属性,效果会更好。下一步,我将采取下一个形状,并做同样的事情。我将创建一个新的Visio文档,因为我不确定源页面ShapeSheet是否以某种方式进行了自定义。但我不知道如何在C#g中以编程方式完成基本步骤

  • 如何在C#中创建新的vsd文件(可能是 申请.文件.附录(“”)
  • 然后必须使用application.document.OpenEx打开此文档,或者该文档已打开/处于活动状态
  • 我必须在此文档中创建新页面吗 -

在本文中:将介绍类似的步骤,但使用VBA而不是C#。

我建议只使用Visio 2013,它具有现成的功能

然而,这可能对你不起作用。我在过去采取了两种不同的路线,这取决于原始形状和替换形状之间的差异

一种方法是,在形状之间复制尽可能多的属性,并复制胶水和所有东西。因此,要做到这一点,你只需复制宽度、高度、针脚等,然后逐步通过原始形状中的所有胶水,并将胶水移动到新形状

另一种方法,在我看来,更干净一点,是将所有几何体部分从原始形状整体复制到目标形状中。这样,你就不必担心胶水、格式等问题,只需复制组成形状的图形即可

如果您有一个包含多个子图形的分组图形,则可能更容易删除新的主控形状,但如果它只是一个简单的图形类型图形,则复制几何图形可能会更好

使用“复制几何体”方法需要注意的一点是,必须确保新形状中任何几何体单元之前的任何用户单元或控件也存在于原始形状中。Visio的Cell类告诉您单元格的先例,因此这很容易做到


希望对您有所帮助。

我想您可以从这两个链接中提取一些信息并使用它们: