1

プログラムで(C#)特定のVisioフローチャート(* .vsd)のすべての形状を更新/置換したいと思います。ダイアグラムのレイアウトは同じままです(すべての接続、座標などは同じです)が、マスターシェイプは(異なるステンシルから)異なる必要があります。例、提案、アイデアは大歓迎です。


あなたの提案をありがとう!ソースダイアグラムには、グループ化された多くの保護されたシェイプ(+複数のサブシェイプ)があるため、特定のソースシェイプのすべての情報を取得してから、ターゲットステンシルから新しいマスターをドロップすると、より良いと思います。これらのプロパティを設定します。次に、次のシェイプを取得して同じことを行います。ソースのPage-ShapeSheetが何らかの方法でカスタマイズされていないかどうかわからないため、新しいVisioドキュメントを作成します。しかし、C#でプログラムで基本的な手順を実行する方法がわかりません。

  • C#内で新しいvsdファイルを作成する方法(多分application.Documents.AddEx(“”))
  • 次に、このドキュメントをapplication.Document.OpenExで開く必要があります。そうでない場合、ドキュメントはすでに開いている/アクティブです。
  • このドキュメント内に新しいページを作成する必要があります-…</li>

この投稿では、 「Visioドキュメントのビジュアルベーシックマクロを保存して閉じる」と同様の手順を説明しましたが、C#ではなくVBAで説明しました。

4

2 に答える 2

2

すぐに使える機能を備えた Visio 2013 を使用することをお勧めします。

ただし、それはおそらくうまくいかないでしょう。元の形状と交換後の形状にどのような違いがあったかによって、過去に 2 つの異なるルートをたどりました。

これを行う 1 つの方法は、形状間でできるだけ多くの属性をコピーし、接着剤とすべてを複製することです。これを行うには、幅、高さ、ピンなどをコピーしてから、元の形状のすべての接着剤をステップスルーし、接着剤を新しい形状に移動します。

私の意見では、もう少しクリーンなもう 1 つの方法は、すべてのジオメトリ セクションを元の形状から目的の形状に大規模にコピーすることです。これにより、接着剤や書式設定などについて心配する必要がなくなり、形状を構成するグラフィックスをコピーするだけです.

複数のサブシェイプを含むグループ化されたシェイプがある場合は、おそらく新しいマスターを削除する方が簡単ですが、単純なグラフィック タイプのシェイプの場合は、ジオメトリをコピーする方がよいでしょう。

「ジオメトリをコピーする」方法で注意すべきことの 1 つは、新しい形状のジオメトリ セルの前にあるユーザー セルまたはコントロールが、元の形状にも存在することを確認する必要があることです。Visio の Cell クラスは、セルの前例を教えてくれるので、これは簡単に行うことができます。

それが役立つことを願っています。

于 2012-08-08T14:18:09.723 に答える
0

これらの 2 つのリンクからいくつかの情報を抽出して、それで遊ぶことができると思います。

Visio シェイプ - X、Y 位置を取得

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

于 2012-08-17T06:53:46.663 に答える