Autodesk Civil 3D 用に .NET プロジェクトをセットアップする

このセクションでは、Visual Studio と Autodesk Civil 3D のマネージド クラスを使用する .NET ソリューションのセットアップについて基本的な手順を説明します。手順は、Microsoft Visual C# .NET を使用しても Visual Basic .NET を使用してもほぼ同じです。次の例では、Visual Studio 2010 で C# を使用します。外観は多少異なりますが、Visual Studio の Express (フリー)バージョンを使用することもできます。

Microsoft Visual Studio で Autodesk Civil 3D のマネージド クラスを使用する新規プロジェクトを作成するには

  1. Visual Studio 2010 で、新規のクラス ライブラリ ソリューションおよびプロジェクトを作成します。

    Visual Studio の[新しいプロジェクト]ダイアログ

  2. [プロジェクト]メニュー[参照を追加]を選択するか、ソリューション エクスプローラで[参照]を右クリックして[参照を追加]を選択します。
  3. Autodesk Civil 3D のインストール フォルダを参照し、基本ライブラリ acdbmgd.dllacmgd.dllaccoremgd.dllAecBaseMgd.dllAeccDbMgd.dll を選択します。
    注:

    これらは基本の AutoCAD および Autodesk Civil 3D マネージド ライブラリです。ご使用の .NET アセンブリは、追加のライブラリで定義されたクラスを使用することができます。

    デバッグを可能にして、プロジェクトで必要なディスク領域を小さくするには、これらのライブラリを Visual Studio のソリューション エクスプローラで選択し、[ローカル コピー]プロパティを[False]に設定します。

  4. 必要に応じて、Visual Studio からアプリケーションを実行すると、Autodesk Civil 3D が起動されるようにプロジェクトを設定することが可能です。これはデバッグ時に役立ちます。
    注:

    このオプションは、Visual Studio の Express(フリー)バージョンでは利用できません。

    1. プロジェクトの[プロパティ]ページで、[デバッグ]パネルを選択します。
    2. [アクションを開始]領域の[外部プログラムを開始]を選択し、AutoCAD Civil 3D フォルダ内の実行可能なAutodesk Civil 3Dへのパスを入力します。
    3. [開始オプション]領域の[コマンド ライン引数]に、次のように入力します: /ld "C:¥Program Files¥Autodesk Civil 3D 2025¥AecBase.dbx" /p "<<C3D_Imperial>>"
    4. [開始オプション]領域の[作業ディレクトリ]に、たとえば次のように入力します: C:¥Program Files¥Autodesk Civil 3D 2025¥UserDataCache¥
  5. IExtensionApplication インタフェースをメイン クラスに実装します。Autodesk.AutoCAD.Runtime 名前空間(このインタフェースが定義される場所)、および IExtensionApplication をクラス定義の後に追加します。Visual Studio がインタフェースのスタブを実装するコード完成オプションを提示します。これで、コードは次のようになります。
    using System;
    using Autodesk.AutoCAD.Runtime;
     
    namespace GettingStarted
    {
        public class Class1 : IExtensionApplication
        {
            #region IExtensionApplication Members
     
            public void Initialize()
            {
                throw new System.Exception("The method or operation is not implemented.");
            }
     
            public void Terminate()
            {
                throw new System.Exception("The method or operation is not implemented.");
            }
     
            #endregion
        }
    }
    

    これらのメソッドの既定のコンテンツは削除したり、コメント アウトできます 。Initialize()AutoCAD Civil 3DAutodesk Civil 3D コマンドによってアセンブリが最初にロードされたときに呼び起こされます。また、リソースのセットアップ、構成ファイルの読み取り、その他の初期化タスクのためにも利用できます。Terminate()Autodesk Civil 3D がシャット ダウンしたときに呼び出され(.NET アセンブリをアンロードするためのNETUNLOAD コマンドはありません)、リソースをクリーンアップして解放するために使用できます。

  6. CommandMethod 属性のターゲットとなるパブリック メソッドを作成する準備ができました。この属性によって、メソッドを呼び出す Autodesk Civil 3D コマンドが定義されます。例:
    [CommandMethod("HelloWorld")]
    public void HelloWorld()
    {
     
    }
    
  7. コマンド ラインに「Hello World」メッセージがある、メソッドを印刷してみましょう。Autodesk.AutoCAD.ApplicationServices 名前空間を追加し、この行を HelloWorld() メソッドに追加します。
    Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nHello World!\n");
    

    アセンブリを作成して実行できるようになります。Autodesk Civil 3D を起動して、コマンド ラインに NETLOAD と入力します。[NET アセンブリを選択]ダイアログで、アセンブリ DLL(プロジェクトの設定を手順 1 から使用している場合は GettingStarted.dll)を参照します。コマンド ラインに HELLOWORLD と入力すると、コマンドの出力が表示されます。

  8. 直前の手順は、AutoCAD Aplication クラスからの機能を使用しています。これから、Autodesk Civil 3D のマネージド クラスに固有の機能をいくつか含めます。まず、2 つ以上の名前空間を追加します。Autodesk.AutoCAD.DatabaseServices および Autodesk.Civil.ApplicationServices。次に、これらの行を追加して現在の Civil ドキュメントを取得し、それに関する基本情報を入手し、情報を印刷出力します。
    public void HelloWorld()
    {
        CivilDocument doc = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument;
        ObjectIdCollection alignments = doc.GetAlignmentIds();
        ObjectIdCollection sites = doc.GetSiteIds();
        String docInfo = String.Format("\nHello World!\nThis document has {0} alignments and {1} sites.\n", alignments.Count, sites.Count);
        Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage(docInfo);
     
    }
    

    Autodesk Civil 3D で、線形とサイトを含むドキュメントを開くか作成します。HELLOWORLD コマンドを実行すると、次に似た出力結果を見ることになります。

他のサンプルについては、Autodesk Civil 3D¥samples¥dotNet フォルダを調べてみてください。