Sample Code: Conditional Styling

Version: HPS 2020
Language: C#
Description:

This function will apply conditional styling to a SegmentKey. See our Programming Guide about Using conditional styles for more information.

void SetConditionalStyle(Canvas _canvas)
{
    HPS.SegmentKey modelKey = GetCanvas().GetFrontView().GetAttachedModel().GetSegmentKey();
    HPS.PortfolioKey myPortfolio = GetCanvas().GetFrontView().GetAttachedModel().GetPortfolioKey();
    
    // Create a line style with condition "c1"
    HPS.LinePatternKit myLinePatternKit = HPS.LinePatternKit.GetDefault(HPS.LinePattern.Default.Dashed);
    myPortfolio.DefineLinePattern("pattern1", myLinePatternKit);
    SegmentKey line_style_key1 = Database.CreateRootSegment();
    myPortfolio.DefineNamedStyle("linestyle1", line_style_key1);
    line_style_key1.GetLineAttributeControl().SetPattern("pattern1");
    HPS.ConditionalExpression condition1 = new HPS.ConditionalExpression("c1");
    
    // Create another line style with condition "c2"
    HPS.LinePatternKit myLinePatternKit2 = HPS.LinePatternKit.GetDefault(HPS.LinePattern.Default.LongDash);
    myPortfolio.DefineLinePattern("pattern2", myLinePatternKit2);
    SegmentKey line_style_key2 = Database.CreateRootSegment();
    myPortfolio.DefineNamedStyle("linestyle2", line_style_key2);
    line_style_key2.GetLineAttributeControl().SetPattern("pattern2");
    HPS.ConditionalExpression condition2 = new HPS.ConditionalExpression("c2");
    
    // push both style to model key
    modelKey.GetStyleControl().PushNamed("linestyle1", condition1);
    modelKey.GetStyleControl().PushNamed("linestyle2", condition2);
    modelKey.GetVisibilityControl().SetLines(true);
    modelKey.Subsegment("line").InsertLine(new Point(-1, 0, 0), new Point(1, 0, 0));
    
    //  set your condition
    modelKey.SetCondition("c1");
}