VBA サブアセンブリを置き換える

VBA カスタム サブアセンブリを .NET へ移行し、カタログ ファイルにインストールしたら、図面を更新して、新しいコードを使用できるようにする必要があります。このタスクを実行する .NET マクロの例を次に示します。このマクロでは、名前(「VBASubassembly」)によってサブアセンブリが取得されます。次に、新規の SubassemblyGenerator オブジェクトが作成され、モード(「UseDotNet」)で新規サブアセンブリが存在する dll および .NET サブアセンブリの名前が渡されます。最後に、サブアセンブリ GeometryGenerator パラメータが新規の SubassemblyGenerator に設定されます。トランザクションがコミットされると、サブアセンブリが置換されます。

[CommandMethod("ConvertVbaSA")]
public void ConvertVbaSA()
{
    using(Transaction trans = m_transactionManger.StartTransaction())
    {
    ObjectId saId = Autodesk.Civil.ApplicationServices.CivilApplication.ActiveDocument.SubassemblyCollection["VBASubassembly"];
    Subassembly sa = trans.GetObject(saId, OpenMode.ForWrite) as Subassembly;
    SubassemblyGenerator genData = new SubassemblyGenerator(SubassemblyGeometryGenerateMode.UseDotNet, "C3DStockSubassemblies.dll", "Subassembly.DotNetSubassembly");
    sa.GeometryGenerator = genData;
    trans.Commit();
    }
}