Get model file information
You can get the model file (or project file) to which the specified model belongs with the ModelUnit
property (IModelUnit
type) of the IModel
object. You can access the model file information by using the IModelUnit
property.
Model file path
public void GetModelFilePath(ICommandContext c, ICommandParams p)
{
var model = c.App.Workspace.CurrentModel;
//Get model file path
var modelFilePath = model.ModelUnit?.UnitPath ?? "";
//...
}
Check if model file is read-only
public void CheckModelFileIsReadOnly(ICommandContext c, ICommandParams p)
{
var model = c.App.Workspace.CurrentModel;
//Determine if it is read-only
var isModelFileReadOnly = model.ModelUnit?.IsReadonly ?? false;
//...
}
info
The IsReadonly
method of the IModel
object is used to check the ModelUnit
You can check if a model file is read-only by shortcutting property access.
Example of extension method
It is useful to prepare an extension method as follows.
public static class IModelExtension
{
///<summary>
///Get the path of the model file.
///</summary>
///<param name="self">Target model. </param>
///<returns>If associated with a model unit, the unit path, otherwise an empty string. </returns>
public static string GetModelUnitPath(this IModel self) => self.ModelUnit?.UnitPath ?? "";
}