我正在使用 C# 在 Studio 2010 中编写 Visio 2010 的加载项。我需要阅读当前在 Visio 中打开的图表。我知道如何阅读图表的形状。
问题是
- 如果我有一个形状对象,其属性可以给我页面上的形状和其他形状(如果有)的坐标,当前的形状与,
- 如果我有一个连接器对象,哪些属性可以给我它连接的形状和连接的方向。
Visio 中的连接是通过 Connect 对象处理的。每个形状都有传入连接对象和传出连接对象的集合。它们的名称分别是 FromConnects 和 Connects。
每个连接对象都有一个 FromSheet 和 ToSheet 属性,它们只是指向 Shape 对象的指针,FromSheet 形状是连接到 ToSheet 形状的形状。
因此,如果您有一个正方形(shape1)通过连接线(连接器)连接到另一个正方形(shape2),那么您实际拥有的是:
连接器连接到 shape1
连接器连接到 shape2
因此,在 shape1 上,您将查看 FromConnects 并看到一个 Connects 项,其中 FromSheet 引用连接器,而 ToSheet 引用 shape1。
形状 2 是相同的。
如果您查看连接器形状上的“连接”,您会看到相同的“连接”项,并引用了相同的对象。
因此,要确定 shape1 是否连接到 shape2 或反之亦然,只需查看连接器上的顺序即可...连接对象 1 将是“从”形状,而连接对象 2 将是“到”形状。
以下是两个 VBA 例程,它们将 Incoming 和 Outgoing 粘合到传入的形状上,并返回一个集合对象。我知道您说过您使用的是 C#,但我使用 Visio 的 VBA。该代码仅说明原始连接信息。我建议你尝试使用 VBA 来看看这一切是如何工作的,因为它仍然让我感到困惑。
Public Function GetShapesThatConnectTo(TheShp As Visio.Shape) As Collection
Dim Result As Collection
Set Result = New Collection
For i = 1 To TheShp.FromConnects.Count
Result.Add TheShp.FromConnects.Item(i).FromSheet
Next i
Set GetShapesThatConnectTo = Result
End Function
Public Function GetWhatShapeConnectsTo(TheShp As Visio.Shape) As Collection
Dim Result As Collection
Set Result = New Collection
For i = 1 To TheShp.Connects.Count
Result.Add TheShp.Connects.Item(i).ToSheet
Next i
Set GetWhatShapeConnectsTo = Result
End Function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)