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(); } }