フィーチャ間の関連を設定する
フィーチャ間の関連を操作する方法を説明します。
フィーチャ間に制約関係を追加する
フィーチャ間に制約関係を追加するには、IFeatureModel
オブジェクトのAddFeatureConstraint
メソッドを用います。
制約の種類には以下の値を指定できます。
- "Conflicts" ... 排他関係
- "Implicit" ... 相互依存関係
- "Requires" ... 依存関係
public void AddFeatureConstraint(ICommandContext c, ICommandParams p)
{
IFeatureModel featureModel = c.App.Workspace.CurrentProject.ProductLineModel.FeatureModels.FirstOrDefault();
IFeature sourceFeature = featureModel.GetFeature("設定車間距離表示");
IFeature targetFeature = featureModel.GetFeature("追従走行");
// 指定のフィーチャ間に依存関係を追加します
featureModel.AddFeatureConstraint(sourceFeature, targetFeature, "Requires");
}
フィーチャ間の制約関係を取得する
フィーチャ間の制約関係を取得するには、IFeatureModel
オブジェクトのGetFeatureConstraint
メソッドを用います。
public void GetFeatureConstraint(ICommandContext c, ICommandParams p)
{
IFeatureModel featureModel = c.App.Workspace.CurrentProject.ProductLineModel.FeatureModels.FirstOrDefault();
IFeature sourceFeature = featureModel.GetFeature("設定車間距離表示");
IFeature targetFeature = featureModel.GetFeature("追従走行");
// 指定のフィーチャ間の制約関係を取得します
var constraint = featureModel.GetFeatureConstraint(sourceFeature, targetFeature, "Requires");
if (constraint != null)
{
c.App.Output.WriteLine("sample", $"{sourceFeature.Name} と {targetFeature.Name} 間に依存関係があります");
}
}
フィーチャ間の制約関係を削除する
フィーチャ間の制約関係を削除するには、IFeatureModel
オブジェクトのRemoveFeatureConstraint
メソッドを用います。
public void RemoveFeatureConstraint(ICommandContext c, ICommandParams p)
{
IFeatureModel featureModel = c.App.Workspace.CurrentProject.ProductLineModel.FeatureModels.FirstOrDefault();
IFeature sourceFeature = featureModel.GetFeature("設定車間距離表示");
IFeature targetFeature = featureModel.GetFeature("追従走行");
// 指定のフィーチャ間の依存関係を削除します
featureModel.RemoveFeatureConstraint(sourceFeature, targetFeature, "Requires");
}