IMsProblemCalculation.CalculationTree

Синтаксис

IMsCalculationTree: IMsCalculationTree;

Описание

Свойство CalculationTree возвращает дерево расчёта задачи моделирования.

Комментарии

Дерево расчёта в иерархической форме представляет последовательность расчёта, а также позволяет отображать на какой узел дерева установлена точка останова.

Пример

Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с идентификатором Button1 и компонента TreeList с идентификатором TreeList1. В репозитории должен присутствовать контейнер моделирования с идентификатором MODEL_SPACE, содержащий задачу моделирования с идентификатором PROBLEM.

Добавьте ссылки на системные сборки: Metabase, Ms.

Пример будет выполняться при нажатии на кнопку.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    Mb: IMetabase;
    ModelSpaceDescr: IMetabaseObjectDescriptor;
    Problem: IMsProblem;
    CalcSettings: IMsProblemCalculationSettings;
    Calculation: IMsProblemCalculation;
    CalculationTree: IMsCalculationTree;
    CalcChildren: IMsCalculationTreeNodes;
Begin
    Mb := MetabaseClass.Active;
    ModelSpaceDescr := Mb.ItemById("MODEL_SPACE");
    Problem := Mb.ItemByIdNamespace("PROBLEM", ModelSpaceDescr.Key).Bind As IMsProblem;
    CalcSettings := Problem.CreateCalculationSettings;
    CalcSettings.FactIncluded := True;
    Calculation := Problem.Calculate(CalcSettings);
    CalculationTree := Calculation.CalculationTree;
    CalcChildren := CalculationTree.Children;
    FillCalcList(CalcChildren, Null);
    End Sub Button1OnClick;

Sub FillCalcList(Items: IMsCalculationTreeNodes; ParentNode: ITreeListNode);
Var
    TreeNodes: ITreeListNodes;
    i: Integer;
    Item: IMsCalculationTreeNode;
    TreeNode: ITreeListNode;
    Text: String;
Begin
    TreeNodes := TreeList1.Nodes;
    For i := 0 To Items.Count - 1 Do
        Item := Items.Item(i);
        Text := Item.Text;
        If Item.Kind = MsCalculationTreeNodeKind.Model Then
            Text := Text + " (установлена точка остановы!)";
        End If;
        TreeNode := TreeNodes.AddChild(ParentNode, Text);
        FillCalcList(Item.Children, TreeNode);
        TreeNode.Expand(False);
    End For;
End Sub FillCalcList;

После выполнения примера в компонент TreeList будет выведено дерево расчёта задачи моделирования.

См. также:

IMsProblemCalculation