プロジェクトファイルを分割統合する
プロジェクトファイルの分割や統合はIProjectUnitManager
オブジェクトのメソッドを用います。IProjectUnitManager
オブジェクトは、IProject
オブジェクトのUnitManager
プロパティを用いて取得できます。
注意
分割統合を行った場合、変更内容が保存されます。事前に変更内容を確認してから分割統合を行うよう注意してください。
プロジェクトファイルを分割する
プロジェクトファイルからモデルユニットを分割するにはIProjectUnitManager
オブジェクトのSplitModelUnits
メソッドを用います。
public void SplitModelUnits(ICommandContext c, ICommandParams p)
{
// カレントのナビゲータで選択中のモデルを取得します
var currentNavigator = c.App.Window.EditorPage.CurrentNavigator;
var targetModels = currentNavigator.SelectedItems.OfType<IModel>();
// 取得したモデルをモデルユニットに分割します
IProjectUnitManager unitManager = c.App.Workspace.CurrentProject.UnitManager;
unitManager.SplitModelUnits(targetModels);
}
分割時にモデルユニットのファイル名を指定するには、IProjectUnitManager
オブジェクトのSplitModelUnit
メソッドを用います。
public void SplitModelUnit(ICommandContext c, ICommandParams p)
{
// モデルナビゲータにて選択中のカレントモデルを取得します
var targetModel = c.App.Workspace.CurrentModel;
// 取得したモデルをモデルユニットに分割します
IProjectUnitManager unitManager = c.App.Workspace.CurrentProject.UnitManager;
// ユニットのファイル名を決定します
// ここでは、例としてファイル名が8文字より長い場合に省略したファイル名を作成します
// 他にもファイル名に所有元モデル名を含めて作成するなど、任意のファイル名を指定できます
var unitName = targetModel.Name;
if (unitName.Length > 8)
{
unitName = $"{unitName.Substring(0, 7)}_";
}
// ユニットのファイル名を指定して分割します
unitManager.SplitModelUnit(targetModel, unitName);
}
注意
ユニットのファイル名を指定する場合は、プロジェクト内で一意となるようにしてください。
プロジェクトファイルを統合する
モデルユニットをプロジェクトファイルに統合するにはIProjectUnitManager
オブジェクトのUnifyModelUnits
メソッドを用います。
public void UnifyModelUnits(ICommandContext c, ICommandParams p)
{
// カレントのナビゲータで選択中のモデルを取得します
var currentNavigator = c.App.Window.EditorPage.CurrentNavigator;
var targetModels = currentNavigator.SelectedItems.OfType<IModel>();
// 取得したモデルが所属するモデルユニットを取得します
IEnumerable<IModelUnit> modelUnits = targetModels.Select(model => model.ModelUnit).Distinct();
// 取得したモデルユニットをプロジェクトファイルに統合します
IProjectUnitManager unitManager = c.App.Workspace.CurrentProject.UnitManager;
unitManager.UnifyModelUnits(modelUnits);
}