モデル編集の概要
エクステンションではAPIで次のようにモデル編集が可能です。
モデルを追加するにはIProjectオブジェクトのAddNewRootModelメソッドやIModelオブジェクトのAddNewModelメソッドを用います。また、フィールドへの値のセットはIModelオブジェクトのSetFieldメソッドを用います。
public void AddNewRootModel(ICommandContext c, ICommandParams p)
{
    // プロジェクトにモデルを作成します
    IModel ucModel = c.App.Workspace.CurrentProject.AddNewRootModel("UseCaseModel");
    // ユースケースのモデルとアクタのモデルを作成します
    IModel uc1 = ucModel.AddNewModel("UseCases", "UseCase");
    uc1.SetField("Name", "定速走行す  る");
    uc1.SetField("Description", "・・・");
    IModel uc2 = ucModel.AddNewModel("UseCases", "UseCase");
    uc2.SetField("Name", "追従走行する");
    IModel ac1 = ucModel.AddNewModel("Actors", "Actor");
    ac1.SetField("Name", "ドライバ");
    IModel ac2 = ucModel.AddNewModel("Actors", "Actor");
    ac2.SetField("Name", "コントロールパネル");
}
フィールドの値の取得はIModelオブジェクトのGetFieldメソッドやGetFieldStringメソッドを用います。
public void GetField(ICommandContext c, ICommandParams p)
{
    // 現在のモデルを取得します
    IModel model = c.App.Workspace.CurrentModel;
    // "SomeField"のフィールド値を取得します
    object someFieldValue = model.GetField("SomeField");
    // 文字列型でフィールド値を取得します
    string someStringField = model.GetFieldString("SomeField");
}
関連付けは IModelオブジェクトのRelateメソッドを使います。参照フィールドを指定した場合関連付けを行いますが、所有フィールドを指定した場合関連付けは行われ  ません。
public void Relate(ICommandContext c, ICommandParams p)
{
    // 関連付け対象のモデルを取得します
    IModel uc1 = ..
    IModel ac1 = ..
    IModel ac2 = ..
    // ユースケースの参照フィールドを指定してアクタと関連付けを行います
    uc1.Relate("MainActor", ac1);
    
    // ユースケースの所有フィールドを指定した場合、関連付けは行われません
    uc1.Relate("SubActors", ac2);
}
IModelオブジェクトのSetFieldメソッドを用いても関連付けできます。参照フィールドを指定した場合は参照関連を追加、所有フィールドを指定した場合はモデルを移動します。詳しい利用方法は、こちらを参照してください。
public void Relate(ICommandContext c, ICommandParams p)
{
    // 関連付け対象のモデルを取得します
    IModel uc1 = ..
    IModel ac1 = ..
    IModel ac2 = ..
    // ユースケースの参照フィールドを指定してアクタと関連付けを行います
    uc1.SetField("MainActor", ac1);
    
    // ユースケースの所有フィールドを指定してアクタをユースケース下に移動します
    // 既に設定されていたモデルは削除されます
    uc1.SetField("SubActors", ac2);
}
モデルの移動はIModelオブジェクトのMoveToメソッド、削除はIModelオブジェクトのDeleteメソッドを用います。
public void MoveToAndDelete(ICommandContext c, ICommandParams p)
{
    // 操作対象のモデルを取得します
    IModel uc1 = ..
    IModel uc2 = ..
    // ユースケースのシナリオを追加します
    var scenario1 = uc1.AddNewModel("Scenarios", "Scenario");
    // インデックスを指定して追加します
    var scenario2 = uc1.AddNewModelAt("Scenarios", "Scenario", "after", 0);
    // シナリオを移動します
    scenario1.MoveTo(uc2, "Scenarios", "after", 0);
    // シナリオを削除します
    scenario2.Delete();
}