1

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


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

  • 如何在 C# 中创建新的 vsd 文件(可能是 application.Documents.AddEx(“”))
  • 然后我是否必须使用 application.Document.OpenEx 打开此文档,或者该文档已经打开/处于活动状态
  • 我必须在此文档中创建一个新页面吗?-...</li>

在这篇文章中:“保存和关闭 visio 文档 Visual Basic 宏”解释了类似的步骤,但在 VBA 中而不是在 C# 中。

4

2 回答 2

2

我建议只使用 Visio 2013,它具有开箱即用的功能。

但是,这可能对您不起作用。过去我采取了两条不同的路线,具体取决于原始形状和替换形状之间的差异。

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

在我看来,另一种更简洁的方法是将所有几何部分从原始形状批量复制到目标形状中。这样您就不必担心胶水和格式等问题,而只需复制构成形状的图形。

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

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

希望有帮助。

于 2012-08-08T14:18:09.723 回答
0

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

Visio 形状 - 获取 X、Y 位置

http://msdn.microsoft.com/en-us/library/cc160747.aspx

于 2012-08-17T06:53:46.663 回答