STK ObjectsSend comments on this topic.
MultipleThresholdCrossings Method (IAgDrInterval)
See Also
ElemName
The element name.
Thresholds
An array of the thresholds.
Windows





Windows & Linux

Description

Returns an array of two-dimensional arrays. Each two-dimensional array contains start and stop times based on the boundaries passed in. The DataSets property must contain the Time dataset for this method to work correctly.

Syntax

[Visual Basic .NET]
Public Function MultipleThresholdCrossings( _
    ByVal ElemName As String, _
    ByVal Thresholds As System.Array _
) As System.Array
[C#]
public System.Array MultipleThresholdCrossings(
    string ElemName,
    System.Array Thresholds
);
[Managed C++]
public: System::Array MultipleThresholdCrossings(
    String __gc ^ ElemName,
    System::Array ^ Thresholds
);
[Unmanaged C++]
public: HRESULT MultipleThresholdCrossings(
    BSTR ElemName,
    SAFEARRAY * * Thresholds,
    SAFEARRAY * * ppCrossings
);
[Java]
public AgSafeArray multipleThresholdCrossings(
    String ElemName,
    AgSafeArray Thresholds
);
[Python - STK API ]
def MultipleThresholdCrossings(self, ElemName:str, Thresholds:list) -> list:

Parameters

ElemName
The element name.
Thresholds
An array of the thresholds.

Return Type

An array of two-dimensional arrays. Each two-dimensional array contains start and stop times. Some indexes may not contain any data.


See Also

Example

Execute an object coverage data provider and dump its result
[C#]
IAgStkObject aircraft = root.CurrentScenario.Children["aircraft340"];

IAgStkObjectCoverage objectCoverage = aircraft.ObjectCoverage;
objectCoverage.Clear();
objectCoverage.Assets.Add("Constellation/gps_const");
objectCoverage.Compute();

IAgDataPrvTimeVar provider = objectCoverage.DataProviders["FOM by Time"] as IAgDataPrvTimeVar;

IAgDrResult result = provider.Exec("1 Jan 2012 12:00:00.00", "1 Jan 2012 13:00:00.00", 1);

foreach (IAgDrSubSection section in result.Sections)
{
    foreach (IAgDrInterval interval in section.Intervals)
    {
        Array arBoundaries = new object[]
                             {
                                 1.0, 2.0, 3.0, 4.0, 5.0
                             };

        // MultipleThresholdCrossings expects the second parameter
        // to be a one demensional array of boundary index values
        Array arRanges = interval.MultipleThresholdCrossings("FOM Value", ref arBoundaries);

        for (int iRange = 0; iRange < arRanges.GetLength(0); iRange++)
        {
            Console.Write("\nRange: {0}\n", iRange);

            Array arTimeSpans = arRanges.GetValue(iRange) as Array;
            for (int iSpan = 0; iSpan < arTimeSpans.GetLength(0); iSpan++)
            {
                string strStart = arTimeSpans.GetValue(iSpan, 0).ToString();
                string strStop = arTimeSpans.GetValue(iSpan, 1).ToString();

                Console.Write("Start: {0}	Stop: {1}\n", strStart, strStop);
            }
        }
    }
}
Execute an object coverage data provider and dump its result
[Visual Basic .NET]
Dim aircraft As IAgStkObject = root.CurrentScenario.Children("aircraft340")

Dim objectCoverage As IAgStkObjectCoverage = aircraft.ObjectCoverage
objectCoverage.Clear()
objectCoverage.Assets.Add("Constellation/gps_const")
objectCoverage.Compute()

Dim provider As IAgDataPrvTimeVar = TryCast(objectCoverage.DataProviders("FOM by Time"), IAgDataPrvTimeVar)

Dim result As IAgDrResult = provider.Exec("1 Jan 2012 12:00:00.00", "1 Jan 2012 13:00:00.00", 1)

For Each section As IAgDrSubSection In result.Sections
	For Each interval As IAgDrInterval In section.Intervals
		Dim arBoundaries As Array = New Object() {1, 2, 3, 4, 5}

		' MultipleThresholdCrossings expects the second parameter
		' to be a one demensional array of boundary index values
		Dim arRanges As Array = interval.MultipleThresholdCrossings("FOM Value", arBoundaries)

		Dim iRange As Integer = 0
		While iRange < arRanges.GetLength(0)
			Console.Write(vbLf & "Range: {0}" & vbLf, iRange)

			Dim arTimeSpans As Array = TryCast(arRanges.GetValue(iRange), Array)
			Dim iSpan As Integer = 0
			While iSpan < arTimeSpans.GetLength(0)
				Dim strStart As String = arTimeSpans.GetValue(iSpan, 0).ToString()
				Dim strStop As String = arTimeSpans.GetValue(iSpan, 1).ToString()

				Console.Write("Start: {0}" & vbTab & "Stop: {1}" & vbLf, strStart, strStop)
				System.Math.Max(System.Threading.Interlocked.Increment(iSpan),iSpan - 1)
			End While
			System.Math.Max(System.Threading.Interlocked.Increment(iRange),iRange - 1)
		End While
	Next
Next
© 2024 Analytical Graphics, Inc. All Rights Reserved.