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

フィーチャ間の関連を設定する

フィーチャ間の関連を操作する方法を説明します。

フィーチャ間に制約関係を追加する

フィーチャ間に制約関係を追加するには、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");
}