C# の Studio 2010 で Visio 2010 へのアドインを作成しています。現在 Visio で開いている図を読み取る必要があります。図の形の読み方を知っています。
質問は
- ページ上の形状の座標と他の形状 (存在する場合) を取得できる形状オブジェクトがある場合、現在の形状は接続されています。
- コネクタ オブジェクトがある場合、どのプロパティを使用すると、接続する形状と接続の方向を指定できますか。
C# の Studio 2010 で Visio 2010 へのアドインを作成しています。現在 Visio で開いている図を読み取る必要があります。図の形の読み方を知っています。
質問は
Visio での接続は、Connect オブジェクトを通じて処理されます。各シェイプには、着信接続オブジェクトと発信接続オブジェクトのコレクションがあります。それらの名前は、それぞれ FromConnects と Connects です。
各接続オブジェクトには FromSheet および ToSheet プロパティがあり、これらは単なる Shape オブジェクトへのポインターであり、FromSheet 形状は ToSheet 形状に接続する形状です。
したがって、コネクタ ライン (コネクタ) で別の正方形 (shape2) に接続された正方形 (shape1) がある場合、実際には次のようになります: コネクタは shape1 に接続されています コネクタは shape2 に接続されています
したがって、shape1 で FromConnects を見ると、1 つの Connects アイテムが表示され、FromSheet はコネクタを参照し、ToSheet は shape1 を参照しています。形状 2 も同じです。コネクタ シェイプの Connects を見ると、同じ Connects 項目が表示され、同じオブジェクトが参照されています。
したがって、shape1 が shape2 に接続するか、またはその逆かを判断するには、コネクタの順序を確認する必要があります。Connects オブジェクト 1 は「From」シェイプになり、Connects オブジェクト 2 は「To」シェイプになります。
次に示すのは、渡された形状の着信および発信グルーを取得し、コレクション オブジェクトを返す 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
座標の場合:
foreach (Visio.Page Page in Pages)
{
Visio.Shapes Shapes = Page.Shapes;
foreach (Visio.Shape Shape in Shapes)
{
double x = Shape.Cells["PinX"].ResultIU;
double y = Shape.Cells["PinY"].ResultIU;