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