IMsCalculationChainSystem.AddModel

Синтаксис Fore

AddModel(Model: IMsModel);

Синтаксис Fore.NET

AddModel(Model: Prognoz.Platform.Interop.Ms.IMsModel);

Параметры

Model. Добавляемая модель.

Описание

Метод AddModel добавляет указанную модель в систему уравнений.

Комментарии

Допускается добавление следующих видов уравнений:

Для удаления уравнения из системы используйте метод IMsCalculationChainSystem.RemoveModel.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MODEL_SPACE», содержащим метамодель с идентификатором «METAMODEL» и модель детерминированного уравнения с идентификатором «MODEL_DETERM». Модель не должна входит в цепочку расчёта метамодели.

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

Sub AddModel;
Var
    mb: IMetabase;
    MsObj: IMetabaseObjectDescriptor;
    Meta: IMsMetaModel;
    CalcChain: IMsCalculationChainEntries;
    ChainEntry: IMsCalculationChainEntry;
    Model: IMsModel;
    i: Integer;
    CalcSystem: IMsCalculationChainSystem;
Begin
    mb := MetabaseClass.Active;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById("MODEL_SPACE");
    // Получаем метамодель
    Meta := mb.ItemByIdNamespace("METAMODEL", MsObj.Key).Edit As IMsMetaModel;
    CalcChain := Meta.CalculationChain;
    // Если цепочка расчёта содержит систему уравнений,
    // то добавляем уравнение в систему 
    For i := 0 To CalcChain.Count - 1 Do
        ChainEntry := CalcChain.Item(i);
        If ChainEntry.Type = MsCalculationChainEntryType.System Then
            CalcSystem := ChainEntry As IMsCalculationChainSystem;
            Model := mb.ItemByIdNamespace("MODEL_DETERM", MsObj.Key).Edit As IMsModel;
            CalcSystem.AddModel(Model);
        End If;
    End For;
    // Сохраняем изменения
    (Meta As IMetabaseObject).Save;
End Sub AddModel;

Результат выполнения примера: если цепочка расчёта метамодели «METAMODEL» содержит систему уравнений, то в неё будет добавлена модель «MODEL_DETERM».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsObj: IMetabaseObjectDescriptor;
    Meta: IMsMetaModel;
    CalcChain: IMsCalculationChainEntries;
    ChainEntry: IMsCalculationChainEntry;
    Model: IMsModel;
    i: Integer;
    CalcSystem: IMsCalculationChainSystem;
Begin
    mb := Params.Metabase;
    // Получаем контейнер моделирования
    MsObj := mb.ItemById["MODEL_SPACE"];
    // Получаем метамодель
    Meta := mb.ItemByIdNamespace["METAMODEL", MsObj.Key].Edit() As IMsMetaModel;
    CalcChain := Meta.CalculationChain;
    // Если цепочка расчёта содержит систему уравнений,
    // то добавляем уравнение в систему 
    For i := 0 To CalcChain.Count - 1 Do
        ChainEntry := CalcChain.Item[i];
        If ChainEntry.Type = MsCalculationChainEntryType.mccetSystem Then
            CalcSystem := ChainEntry As IMsCalculationChainSystem;
            Model := mb.ItemByIdNamespace["MODEL_DETERM", MsObj.Key].Edit() As IMsModel;
            CalcSystem.AddModel(Model);
        End If;
    End For;
    // Сохраняем изменения
    (Meta As IMetabaseObject).Save();
End Sub;

См. также:

IMsCalculationChainSystem