モデルファイルの情報を取得する
指定モデルが所属しているモデルファイル(またはプロジェクトファイル)については 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 ?? "";
}