メインコンテンツまでスキップ

モデルファイルの情報を取得する

指定モデルが所属しているモデルファイル(またはプロジェクトファイル)については IModelオブジェクトのModelUnitプロパティ(IModelUnit型)で取得できます。IModelUnitのプロパティを用いることで、モデルファイルの情報にアクセスできます。

モデルのファイルパス

public void GetModelFilePath(ICommandContext c, ICommandParams p)
{
var model = c.App.Workspace.CurrentModel;

// モデルファイルパスを取得します
var modelFilePath = model.ModelUnit?.UnitPath ?? "";

//...
}

モデルのファイルが読み取り専用かを調べる

public void CheckModelFileIsReadOnly(ICommandContext c, ICommandParams p)
{
var model = c.App.Workspace.CurrentModel;

// 読み取り専用かを判定します
var isModelFileReadOnly = model.ModelUnit?.IsReadonly ?? false;

//...
}
備考

IModel オブジェクトの IsReadonly メソッドを用いると ModelUnit プロパティへのアクセスをショートカットしてモデルのファイルが読み取り専用か調べることができます。

拡張メソッドの例

次のように拡張メソッドを用意しておくと便利です。

public static class IModelExtension
{
/// <summary>
/// モデルファイルのパスを取得します。
/// </summary>
/// <param name="self">対象モデル。</param>
/// <returns>モデルユニットと関連付けられていればそのユニットパス、それ以外は空文字列です。</returns>
public static string GetModelUnitPath(this IModel self) => self.ModelUnit?.UnitPath ?? "";
}