gpt4 book ai didi

c# - Visio 中的形状连接器

转载 作者:行者123 更新时间:2023-11-30 21:14:06 27 4
gpt4 key购买 nike

我正在使用 C# 在 Studio 2010 中编写 Visio 2010 的加载项。我需要阅读当前在 Visio 中打开的图表。我知道如何阅读图表的形状。

问题是

  1. 如果我有一个形状对象,哪些属性可以给我页面上的形状和其他形状(如果有的话)的坐标,当前的形状与之相连,
  2. 如果我有一个连接器对象,哪些属性可以为我提供它连接的形状和连接方向。

最佳答案

Visio 中的连接是通过连接对象处理的。每个形状都有一个传入连接对象和传出连接对象的集合。它们的名称分别是 FromConnects 和 Connects。

每个连接对象都有一个 FromSheet 和 ToSheet 属性,它们只是指向 Shape 对象的指针,FromSheet 形状是连接到 ToSheet 形状的形状。

因此,如果您有一个方形 (shape1) 通过连接线 (connector) 连接到另一个方形 (shape2),您实际拥有的是:连接器连接到 shape1连接器连接到 shape2

所以在 shape1 上,您将查看 FromConnects 并看到一个 Connects 项,其中 FromSheet 引用连接器,ToSheet 引用 shape1。形状 2 将是相同的。如果您查看连接器形状上的连接,您会看到相同的连接项目,引用相同的对象。

因此,要确定 shape1 是否连接到 shape2 或反之亦然,就是查看连接器上的顺序...连接对象 1 将是“从”形状,连接对象 2 将是“到”形状。

这里有两个 VBA 例程,它们在您传入的形状上获取传入和传出粘附,并返回一个集合对象。我知道您说您使用的是 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

关于c# - Visio 中的形状连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456831/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com