2

潜在的に多くの形状を作成し、形状データをさまざまな値に設定するコードがいくつかあります。一部の形状には、5つの形状データ行と約20(または他のさまざまな値)がある場合があります。

これはVB.Netで書かれており、パフォーマンスを向上させたいと思います。ここでのガイドラインに従う:

http://blogs.msdn.com/b/mailant/archive/2004/09/22/233082.aspx

私は.DropManyと.SetFormulasへの呼び出しを見てきました。

1つの問題は、多くのシェイプデータ行を追加したいということです-1回のヒットで複数の行を実行する.AddShapes呼び出しが存在しますが、シェイプデータセクションに相当するものはありません-.AddNamedRowへの複数の呼び出しを残します(私はAddRowsですが、Shape Dataセクションで使用するとエラーが発生します)。

現在のアルゴリズム:

Work out which masters to use for which shapes (not all the same)
pg.DropMany(with array of masters and appriate X/Y coords)
for each shape dropped:
    for each shape data row (e.g. 5 - 10 times per shape):
        shp.AddNamedRow()
pg.SetFormulas(for all shapes on page and all properties)

パフォーマンスを改善するための他の提案はありますか?

4

2 に答える 2

2

Visio アプリケーション オブジェクトでScreenUpdatingプロパティを使用することをお試しください。False に設定すると、プロパティが再度 True に設定されるまで、Visio はウィンドウを更新しません。以前に Visio オートメーションを使用したことはありませんが、これを Word で使用したことがあり、非常に役立ちます。秘訣は、更新の速度と頻度の間で適切なトレードオフを見つけることです。更新をオフにしすぎると、ユーザーは Visio がクラッシュしたと考える可能性があります。

于 2013-02-13T18:43:35.517 に答える
0

Shape Data が関連付けられている対象に応じて、 DeferRecalc 、 LiveDynamics 、 AutoLayout 、および UndoEnabled ( Applicationオブジェクトのすべてプロパティ)も確認する必要があります。

于 2013-02-18T14:46:05.860 に答える