1

Office Automationを使用してvisioファイルを指定されたxml形式のフローチャートに変換していますが、ワークフロープロセスのコンテナーとしてスイムレーンデータを使用する必要があります。では、ワークフローの形状とスイムレーンの関係をどのように取得できますか?

コード

IVisio.Shape shape = o as IVisio.Shape;

double width = shape.Cells["Width"]
        .Result[Microsoft.Office.Interop.Visio.VisUnitCodes.visMillimeters];
double height = shape.Cells["Height"]
        .Result[Microsoft.Office.Interop.Visio.VisUnitCodes.visMillimeters];
double pinX = shape.Cells["PinX"]
        .Result[Microsoft.Office.Interop.Visio.VisUnitCodes.visMillimeters];
double pinY = shape.Cells["PinY"]
        .Result[Microsoft.Office.Interop.Visio.VisUnitCodes.visMillimeters];
4

3 に答える 3

2

着信接続と発信接続の両方に関連付けられている図形のIDを返します。

using Visio = Microsoft.Office.Interop.Visio;
visioObj = (Visio.Application)                  
     System.Runtime.InteropServices.Marshal.GetActiveObject("Visio.Application");

Array ids = shape.ConnectedShapes(Visio.VisConnectedShapesFlags
        .visConnectedShapesAllNodes, "");

// Using first item and get name   
string name = visioObj.ActivePage.Shapes[ids.GetValue(0)].Name;
于 2012-07-29T10:47:50.217 に答える
0

コンテナリレーションを見つけるには、次のメソッドでAPIを使用できます。

public class ShapeWrapper
{
    public IVisio.Shape Shape { get; set; }

    private List<ShapeWrapper> children = new List<ShapeWrapper>();
    public List<ShapeWrapper> Children { get { return this.children; } }

    public ShapeWrapper(IVisio.Shape shape)
    {
        Shape = shape;
    }
}

private void FindChildren(ShapeWrapper shapeWrapper, 
                              List<IVisio.Shape> addedShapes)
{
    IVisio.Selection children = shapeWrapper
       .Shape.SpatialNeighbors[
            (short)IVisio.VisSpatialRelationCodes.visSpatialContain, 
            0,
            (short)IVisio.VisSpatialRelationFlags.visSpatialFrontToBack];

    foreach (IVisio.Shape child in children)
    {
        if (!addedShapes.Contains(child))
        {
             //MessageBox.Show(child.Text);
             ShapeWrapper childWrapper = new ShapeWrapper(child);
             shapeWrapper.Children.Add(childWrapper);

             FindChildren(childWrapper, addedShapes);
        }
    }
}
于 2012-07-29T21:41:09.593 に答える
-1

PackagePartのデータを使用してXMLドキュメントを作成します。作成する特定のタイプのXMLドキュメントのスキーマを管理するXML名前空間に特別な注意を払う必要があります。XMLを含む新しいファイルを作成し、そのファイルをパッケージ内の場所に保存します。新しいPackagePartとPackageまたは他のPackagePartオブジェクトの間に必要な関係を作成します。新しいパーツを参照する必要がある既存のパーツを更新します。たとえば、新しいページコンテンツ部分(新しいページ)をファイルに追加する場合は、ページインデックス部分(/visio/pages/pages.xmlファイル)も更新して、新しいページに関する正しい情報を含める必要があります。

于 2017-03-07T07:04:33.030 に答える