モデル内の探索

<< 目次を表示 >>

ページ位置:  API・アドイン・スクリプト > API > サンプルコード >

モデル内の探索

プロジェクトのモデル内を再帰的に探索するサンプルです。

 

    class DumpSample

    {

        //モデルルートに対して処理を実行します。

        public void DumpModel(EA.Repository repository)

        {

            // このメソッドが呼び出される前にリポジトリrepositoryは開かれていると仮定します。

            foreach (EA.Package package in repository.Models)

            {

                DumpPackage("", package);

            }

        }

 

        //パッケージの名前とパッケージに含まれる要素を表示し、子パッケージの内容を再帰的に表示します。

        private void DumpPackage(string indent, EA.Package package)

        {

            Console.WriteLine(indent + package.Name + "::" + package.PackageID);

            DumpElements(indent + "    ", package);

 

            foreach (EA.Package childPackage in package.Packages)

            {

                DumpPackage(indent + "    ", childPackage);

            }

        }

 

        //パッケージ内の要素を探索します。

        private void DumpElements(string indent, EA.Package package)

        {

            foreach (EA.Element element in package.Elements)

            {

                DumpElement(indent, element);

            }

        }

 

        //要素名を出力し、再帰的に子要素を探索します。

        private void DumpElement(string indent, EA.Element element)

        {

            Console.WriteLine(indent + "::" + element.Name + "::" + element.ElementID);

 

            foreach (EA.Element childElement in element.Elements)

            {

                DumpElement(indent + "    ", childElement);

            }

        }

    }