Select_(Coord: IMatrixCoord; [Value: Boolean = True);
@Select(Coord: Prognoz.Platform.Interop.Matrix.IMatrixCoord; Value: Boolean);
Coord. Координата в матрице, которую необходимо отметить для дальнейшего расчета значения по ней.
Value. Значение, определяющее состояние отметки координаты. True - координата отмечена, False - не отмечена.
Метод Select_ осуществляет отметку указанной координаты в матрице, для дальнейшего вычисления значения по данной координате.
Для выполнения примера, предполагается наличие вычисляемого куба с идентификатором "Calc_Cube". В кубе имеется два измерения.
Sub UserProc;
Var
MB: IMetabase;
Cube: ICalculatedCubeInstance;
Exe: ICalculatedCubeExecutor;
Mat: IMatrix;
Coord: IMatrixCoord;
Ite: IMatrixIterator;
Begin
MB := MetabaseClass.Active;
Cube := Mb.ItemById("Calc_Cube").Open(Null) As ICalculatedCubeInstance;
Exe := Cube.CreateExecutor(Null);
(Exe As ICubeInstanceDestinationExecutor).PrepareExecute(Null);
Mat := Exe.Matrix;
Ite := Mat.CreateIterator;
//Определяем координату
Coord := Mat.CreateCoord;
Coord.Item(0) := 0;
Coord.Item(1) := 1;
Exe.Select_(Coord); //Выделяем элемент по координате
//Определяем координату
Coord := Mat.CreateCoord;
Coord.Item(0) := 1;
Coord.Item(1) := 1;
Exe.Select_(Coord); //Выделяем элемент по координате
Exe.EvaluateOnly := EvaluateOnlyType.Selected; //Вычислять только выделенные координаты
Exe.Execute;
Ite.Move(IteratorDirection.First);
While Ite.Valid Do
Debug.WriteLine(Ite.Value);
Ite.Move(IteratorDirection.Next);
End While;
End Sub UserProc;
После выполнения примера у куба будут вычислены только выделенные координаты. Рассчитанные значения будут выведены в окно консоли.
Для выполнения примера, предполагается наличие вычисляемого куба с идентификатором "Calc_Cube". В кубе имеется два измерения.
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Cube: ICalculatedCubeInstance;
Exe: ICalculatedCubeExecutor;
Mat: IMatrix;
Coord: IMatrixCoord;
Ite: IMatrixIterator;
Begin
MB := Params.Metabase;
Cube := Mb.ItemById["Calc_Cube"].Open(Null) As ICalculatedCubeInstance;
Exe := Cube.CreateExecutor(Null);
(Exe As ICubeInstanceDestinationExecutor).PrepareExecute(Null);
Mat := Exe.Matrix();
Ite := Mat.CreateIterator();
//Определяем координату
Coord := Mat.CreateCoord();
Coord.Item[0] := 0;
Coord.Item[1] := 1;
Exe.@Select(Coord, True); //Выделяем элемент по координате
//Определяем координату
Coord := Mat.CreateCoord();
Coord.Item[0] := 1;
Coord.Item[1] := 1;
Exe.@Select(Coord, True); //Выделяем элемент по координате
Exe.EvaluateOnly := EvaluateOnlyType.ceotSelected; //Вычислять только выделенные координаты
Exe.Execute();
Ite.Move(IteratorDirection.itdFirst);
While Ite.Valid Do
System.Diagnostics.Debug.WriteLine(Ite.Value);
Ite.Move(IteratorDirection.itdNext);
End While;
End Sub;
Указанная процедура является точкой входа для .NET-сборки. После выполнения примера у куба будут вычислены только выделенные координаты. Рассчитанные значения будут выведены в окно консоли.
См. также: