MATLAB Code Snippets

Introduction

The following code snippets demonstrate tasks that are commonly encountered when working with the STK Object Model.

How do I ...

Initialization

STK Objects

Connect

Camera

Graphics

Graphics

Analysis Workbench

Scenario

Engine

Get a reference to the AgStkObjectRoot using the running STK instance

[MATLAB] Copy Code

% Get reference to running STK instance
uiApplication = actxGetRunningServer('STK11.application');

% Get our IAgStkObjectRoot interface
root = uiApplication.Personality2;


Start STK and get a reference to IAgStkObjectRoot

[MATLAB] Copy Code

%Create an instance of STK
uiApplication = actxserver('STK11.application');
uiApplication.Visible = 1;

%Get our IAgStkObjectRoot interface
root = uiApplication.Personality2;


Add a Exclusion Zone access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection
excludeZone = accessConstraints.AddNamedConstraint('ExclusionZone');
excludeZone.MaxLat = 45;
excludeZone.MinLat = 15;
excludeZone.MinLon = -75;
excludeZone.MaxLon = -35;


Add and configure a lighting condition access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

% Condition constraint
light = accessConstraints.AddConstraint('eCstrLighting');
light.Condition = 'eDirectSun';


Add and configure a LOS sun exclusion access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

% Angle constraint
cnstrAngle = accessConstraints.AddConstraint('eCstrLOSSunExclusion');
cnstrAngle.Angle = 176.0;


Add and configure a lunar elevation angle access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

minmax = accessConstraints.AddConstraint('eCstrLunarElevationAngle');
minmax.EnableMin = true;
minmax.Min = 11.1;
minmax.EnableMax = true;
minmax.Max = 88.8;


Add and configure a sun elevation angle access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

minmax = accessConstraints.AddConstraint('eCstrSunElevationAngle');
minmax.EnableMin = true;
minmax.Min = 22.2;
minmax.EnableMax = true;
minmax.Max = 77.7;


Add and configure a third body obstruction access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessconstraints: Access Constraint collection
% Get IAgAccessCnstrThirdBody interface
thirdBodyConstraint = accessConstraints.AddConstraint('eCstrThirdBodyObstruction');

% AvailableObstructions returns a one dimensional array of obstruction paths
availableArray = thirdBodyConstraint.AvailableObstructions;

% In this example add all available obstructions
disp('Available obstructions');
for i=1:length(availableArray)
   disp(availableArray{i,1});
   thirdBodyConstraint.AddObstruction(availableArray{i,1});
end

% AssignedObstructions returns a one dimensional array of obstruction paths
assignedArray = thirdBodyConstraint.AssignedObstructions;

disp('Assigned obstructions');
for i=1:length(assignedArray)
    disp(assignedArray{i,1});
end


Add and configure an altitude access constraint

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

% Attitude constraint
altitude = accessConstraints.AddConstraint('eCstrAltitude');
altitude.EnableMin = true;
altitude.Min = 20.5;    % km


Add multiple access constraints of the same type to an STK Object

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection

% Add constraints
% Only the eCstrApparentTime, eCstrDuration, eCstrGMT, eCstrIntervals, eCstrLocalTime constraint
% types can be added multiple times to the constraint collection.
time1 = accessConstraints.AddConstraint('eCstrLocalTime');
time1.Min = '00:00:00.000';
time1.Max = '23:00:00.000';


Compute Access with Advanced Settings

[MATLAB] Copy Code

% IAgStkAccess access: Access object

access.Advanced.EnableLightTimeDelay = true;
access.Advanced.TimeLightDelayConvergence = .00005;
access.Advanced.AberrationType = 'eAberrationAnnual';
access.Advanced.UseDefaultClockHostAndSignalSense = false;
access.Advanced.ClockHost = 'eIvBase';
access.Advanced.SignalSenseOfClockHost = 'eIvTransmit';
access.ComputeAccess;


Compute an access between two STK Objects (using IAgStkObject interface)

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
% IAgFacility facility: Facility object

% Get access by STK Object
access = satellite.GetAccessToObject(facility);

% Compute access
access.ComputeAccess();


Compute an access between two STK Objects (using object path)

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object

% Get access by object path
access = satellite.GetAccess('Facility/MyFacility');

% Compute access
access.ComputeAccess();


Compute an access for one point

[MATLAB] Copy Code

% IAgStkObject facility: Facility object
onePtAccess = facility.CreateOnePointAccess('Satellite/MySatellite');

% Configure properties (if necessary)
onePtAccess.StartTime = root.CurrentScenario.StartTime;
onePtAccess.StopTime = root.CurrentScenario.stopTime;
onePtAccess.StepSize = 600;
onePtAccess.SummaryOption = 'eOnePtAccessSummaryDetailed';

% Compute results
results = onePtAccess.Compute();

% Print results
for i = 0:results.Count - 1
    result = results.Item(i);
    disp(['Time: ' result.Time ' HasAccess: ' num2str(result.AccessSatisfied)]);

    for j = 0:result.Constraints.Count - 1
        constraint = result.Constraints.Item(j);
        disp(['Constraint: ' constraint.Constraint ' Object: ' constraint.ObjectPath ' Status: ' constraint.Status ' Value: ' num2str(constraint.Value)]);
    end
end


Compute and extract access interval times

[MATLAB] Copy Code

% IAgStkAccess access: Access calculation
% Get and display the Computed Access Intervals
intervalCollection = access.ComputedAccessIntervalTimes;

% Set the intervals to use to the Computed Access Intervals
computedIntervals = intervalCollection.ToArray(0, -1);
access.SpecifyAccessIntervals(computedIntervals);


Configure the access analysis time period to specified time instants.

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root

satellite = root.GetObjectFromPath('/Satellite/MySatellite');
facility = root.GetObjectFromPath('/Facility/MyFacility');

% For this code snippet, let's use the time interval when the satellite reached min and max altitude values.
% Note, this assumes time at min happens before time at max.
timeOfAltMin = satellite.Vgt.Events.Item('GroundTrajectory.Detic.LLA.Altitude.TimeOfMin');
timeOfAltMax = satellite.Vgt.Events.Item('GroundTrajectory.Detic.LLA.Altitude.TimeOfMax');

% Set the access time period with the times we figured out above.
access = satellite.GetAccessToObject(facility);
access.AccessTimePeriod = 'eUserSpecAccessTime';
accessTimePeriod = access.AccessTimePeriodData;

accessTimePeriod.AccessInterval.State = 'eCrdnSmartIntervalStateStartStop';

accessStartEpoch = accessTimePeriod.AccessInterval.GetStartEpoch();
accessStartEpoch.SetImplicitTime(timeOfAltMin);
accessTimePeriod.AccessInterval.SetStartEpoch(accessStartEpoch);

accessStopEpoch = accessTimePeriod.AccessInterval.GetStopEpoch();
accessStopEpoch.SetImplicitTime(timeOfAltMax);
accessTimePeriod.AccessInterval.SetStopEpoch(accessStopEpoch);


Configure the access interval to the availability time span of the object where access is being computed to.

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root

satellite = root.GetObjectFromPath('/Satellite/MySatellite');
facility = root.GetObjectFromPath('/Facility/MyFacility');
access = satellite.GetAccessToObject(facility);

access.AccessTimePeriod = 'eUserSpecAccessTime';
accessTimePeriod = access.AccessTimePeriodData;

if (satellite.Vgt.EventIntervals.Contains('AvailabilityTimeSpan'))
    availabilityTimeSpan = satellite.Vgt.EventIntervals.Item('AvailabilityTimeSpan');
    accessTimePeriod.AccessInterval.SetImplicitInterval(availabilityTimeSpan);
end


Get handle to the object access constraints

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
accessConstraints = satellite.AccessConstraints;


GetAccessBetweenObjectsByPath using the output of GetExistingAccesses

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
scenario = root.CurrentScenario;
accesses = scenario.GetExistingAccesses();

[row, col] = size(accesses);  % number of accesses

object1 = accesses{1,1};   % e.g. "Satellite/MySatellite"
object2 = accesses{1,2};  % e.g.  "Facility/MyFacility"
computed = accesses{1,3};          % e.g. true  (if access has been computed)

access = scenario.GetAccessBetweenObjectsByPath(object1, object2);


Remove all access constraints except for LOS

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection
for i=accessConstraints.Count - 1:-1:0
    constraint = accessConstraints.Item(i).ConstraintName;

    if (strcmp(constraint,'LineOfSight')) == false
        if (strcmp(constraint,'ThirdBodyObstruction'))
            thirdBodyConstraint = accessConstraints.GetActiveNamedConstraint('ThirdBodyObstruction');
            assignedArray = thirdBodyConstraint.AssignedObstructions;

            for j=1:length(assignedArray)
                thirdBodyConstraint.RemoveObstruction(assignedArray{j});
            end

        elseif (strcmp(constraint,'ExclusionZone'))
            accessConstraints.GetActiveNamedConstraint('ExclusionZone').RemoveAll;

        else
            accessConstraints.RemoveNamedConstraint(constraint);
        end
    end
end


Return a list of available constraints

[MATLAB] Copy Code

% IAgAccessConstraintCollection accessConstraints: Access Constraint collection
constraintArray = accessConstraints.AvailableConstraints;

disp('List of Available Constraints:');
for i=1:length(constraintArray)
   disp(constraintArray{i,1});
end


Create a New AdvCAT Object

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
advCAT = scenario.Children.New('eAdvCAT','AdvCAT');


Add Array of Waypoints to Aircraft

[MATLAB] Copy Code

% IAgAircraft aircraft: Aircraft object
route = aircraft.Route;
ptsArray = {37.5378,14.2207,3.0480,0.0772,2;
            47.2602,30.5517,3.0480,0.0772,2};
route.SetPointsSmoothRateAndPropagate(ptsArray);
%Propagate the route
route.Propagate;


Create a New Aircraft (on the current scenario central body)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
aircraft = root.CurrentScenario.Children.New('eAircraft', 'MyAircraft');


Create a New Aircraft (on the current scenario central body)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
aircraft = root.CurrentScenario.Children.New('eAircraft', 'MyAircraft');


Set Great Arc Propagator and Add Individual Waypoints to Aircraft

[MATLAB] Copy Code

% IAgAircraft aircraft: Aircraft object
% Set route to great arc, method and altitude reference
aircraft.SetRouteType('ePropagatorGreatArc');
route = aircraft.Route;
route.Method = 'eDetermineTimeAccFromVel';
route.SetAltitudeRefType('eWayPtAltRefMSL');
% Add first point
waypoint = route.Waypoints.Add();
waypoint.Latitude = 37.5378;
waypoint.Longitude = 14.2207;
waypoint.Altitude = 5;  % km
waypoint.Speed = .1;    % km/sec
% Add second point
waypoint2 = route.Waypoints.Add();
waypoint2.Latitude = 47.2602;
waypoint2.Longitude = 30.5517;
waypoint2.Altitude = 5; % km
waypoint2.Speed = .1;    % km/sec
%Propagate the route
route.Propagate;


Set the Attitude of the Aircraft

[MATLAB] Copy Code

% IAgAircraft aircraft: Aircraft object
aircraft.Attitude.Basic.SetProfileType('eCoordinatedTurn');


Create an area target (on the current scenario central body)

[MATLAB] Copy Code

%IAgStkObjectRoot root: STK Object Model Root

% Create the AreaTarget on the current scenario central body (use
% NewOnCentralBody to specify explicitly the central body)
areaTarget = root.CurrentScenario.Children.New('eAreaTarget', 'MyAreaTarget');


Define area target boundary and position from list of lat/lon/alt

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgAreaTarget areaTarget: AreaTarget object

% By using the fine grained interfaces,
% BeginUpdate/EndUpdate prevent intermediate redraws
root.BeginUpdate();
areaTarget.AreaType = 'ePattern';
patterns = areaTarget.AreaTypeData;
patterns.Add(48.897, 18.637);
patterns.Add(46.534, 13.919);
patterns.Add(44.173, 21.476);
root.EndUpdate();
areaTarget.AutoCentroid = true;


Define area target boundary and position from list of lat/lon/alt (using common tasks)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgAreaTarget areaTarget: AreaTarget object
% Remove all points in the area target
areaTarget.AreaTypeData.RemoveAll;

% By using the CommonTasks interface,
% make an array of lattitude and longitude boundary points
boundary = {29, -12;
            29, 34;
            6, 34;
            6, -12};

% SetAreaTypePattern expects a two dimensional array of latitude and longitude values
areaTarget.CommonTasks.SetAreaTypePattern(boundary);


List all points in an area target

[MATLAB] Copy Code

% IAgAreaTarget areaTarget: AreaTarget object
if strcmp(areaTarget.AreaType,'ePattern')

    % Get IAgAreaTypePatternCollection interface from AreaTypeData
    patternPoints = areaTarget.AreaTypeData;

    % ToArray returns a two dimensional array of latitude and longitude points
    areaTargetPoints = patternPoints.ToArray();

    disp('All points in Area Target');
    for i= 1:length(areaTargetPoints)
        disp(['Latitude ' num2str(areaTargetPoints{i,1}) ' Longitude: ' num2str(areaTargetPoints{i,2})]);
    end
end


Set an elliptical area target

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgAreaTarget areaTarget: AreaTarget object

% By using the fine grained interfaces,
% BeginUpdate/EndUpdate prevent intermediate redraws
root.BeginUpdate();
areaTarget.AreaType = 'eEllipse';
ellipse = areaTarget.AreaTypeData;
ellipse.SemiMajorAxis = 85.25; % in km (distance dimension)
ellipse.SemiMinorAxis = 80.75; % in km (distance dimension)
ellipse.Bearing = 44; % in deg (angle dimension)
root.EndUpdate();


Set an elliptical area target (using common tasks)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgAreaTarget areaTarget: AreaTarget object

% By using the CommonTasks interface
areaTarget.CommonTasks.SetAreaTypeEllipse(85.25, 80.75, 44);


Create a chain (on the current scenario central body)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% Create the Chain on the current scenario central body (use
% NewOnCentralBody to specify explicitly the central body)
chain = root.CurrentScenario.Children.New('eChain', 'MyChain');


Define and compute a chain (advance)

[MATLAB] Copy Code

% IAgChain chain: Chain object
% IAgSatellite satellite: Satellite object

% Remove all previous accesses
chain.ClearAccess();

% Add some objects to chain
chain.Objects.Add('Facility/MyFacility');
chain.Objects.AddObject(satellite);

% Configure chain parameters
chain.AutoRecompute = false;
chain.EnableLightTimeDelay = false;
chain.TimeConvergence = 0.001;
chain.DataSaveMode = 'eSaveAccesses';

% Specify our own time period
chain.SetTimePeriodType('eUserSpecifiedTimePeriod');

% Get chain time period interface
chainUserTimePeriod = chain.TimePeriod;
chainUserTimePeriod.SetTimePeriod(root.CurrentScenario.StartTime, root.CurrentScenario.StopTime); % Set to scenario period

% Compute the chain
chain.ComputeAccess();


Define and compute a chain (basic)

[MATLAB] Copy Code

% IAgChain chain: Chain object

% Add some objects to chain (using STK path)
chain.Objects.Add('Facility/MyFacility');
chain.Objects.Add('Satellite/MySatellite');

% Compute the chain
chain.ComputeAccess();


Prints the strand intervals of chain object

[MATLAB] Copy Code

% IAgChain chain: Chain Object
% Compute the chain access if not done already.
chain.ComputeAccess();

% Considered Start and Stop time
disp(['Chain considered start time: ' chain.Vgt.Events.Item('ConsideredStartTime').FindOccurrence.Epoch]);
disp(['Chain considered stop time: ', chain.Vgt.Events.Item('ConsideredStopTime').FindOccurrence.Epoch]);

objectParticipationIntervals = chain.Vgt.EventIntervalCollections.Item('StrandAccessIntervals');
intervalListResult = objectParticipationIntervals.FindIntervalCollection();

for i = 0:intervalListResult.IntervalCollections.Count -1

    if intervalListResult.IsValid

        disp(['Link Name: ' objectParticipationIntervals.Labels(i+1)]);
        disp('--------------');
        for j = 0:intervalListResult.IntervalCollections.Item(i).Count - 1

            startTime = intervalListResult.IntervalCollections.Item(i).Item(j).Start;
            stopTime = intervalListResult.IntervalCollections.Item(i).Item(j).Stop;
            disp(['Start: ' startTime ' Stop: ' stopTime]);
        end
    end
end


Create a New Antenna Object

[MATLAB] Copy Code

% IAgSTKObject satellite: STK object
antenna = satellite.Children.New('eAntenna', 'MyAntenna');


Modify Antenna Graphics

[MATLAB] Copy Code

% IAgAntenna antenna: Antenna object
contours = antenna.Graphics.ContourGraphics;
contours.SetContourType('eAntennaContourTypeGain');
contours.Show = true;
for i = -30:5:30
    contours.Contour.Levels.Add(i);
end
antenna.VO.ShowContours = true;
antenna.VO.VolumeGraphics.Show = true;
antenna.VO.VolumeGraphics.GainOffset = 15; %db
antenna.VO.VolumeGraphics.GainScale = 0.005; %km


Modify Antenna Model Type

[MATLAB] Copy Code

% IAgAntenna antenna: Antenna object
antenna.SetModel('Dipole');
antennaModel = antenna.Model;
antennaModel.DesignFrequency = 15; %GHz
antennaModel.Length = 1.5; %m
antennaModel.LengthToWavelengthRatio = 45;
antennaModel.Efficiency = 85; %Percent


Modify Antenna Orientation and Position

[MATLAB] Copy Code

% IAgAntenna antenna: Antenna object
antOrientation = antenna.Orientation;
antOrientation.AssignAzEl(0,-90,1) % 1 represents Rotate About Boresight
antOrientation.PositionOffset.X = 0.0; %m
antOrientation.PositionOffset.Y = 1; %m
antOrientation.PositionOffset.Z = 0.25; %m


Modify Antenna Refraction

[MATLAB] Copy Code

% IAgAntenna antenna: Antenna object
antenna.UseRefractionInAccess = true;
antenna.Refraction = 'eITU_R_P834_4';
refraction = antenna.RefractionModel;
refraction.Ceiling = 5000; %m
refraction.AtmosAltitude = 10000; %m
refraction.KneeBendFactor = 0.2;


Create a New Receiver Object

[MATLAB] Copy Code

% IAgSTKObject satellite: STK object
receiver = satellite.Children.New('eReceiver', 'MyReceiver');


Modify Orientation of the Receiver Antenna

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
antennaControl = recModel.AntennaControl;
antOrientation = antennaControl.EmbeddedModelOrientation;
antOrientation.AssignAzEl(45, 85, 1); % 1 represents Rotate About Boresight
antOrientation.PositionOffset.X = 0.5; %m
antOrientation.PositionOffset.Y = 0.75; %m
antOrientation.PositionOffset.Z = 1; %m


Modify Receiver Demodulator Properties

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
recModel.AutoSelectDemodulator = false;
recModel.SetDemodulator('16PSK');


Modify Receiver Embedded Antenna

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
antennaControl = recModel.AntennaControl;
antennaControl.SetEmbeddedModel('Hemispherical');
antennaControl.EmbeddedModel.Efficiency = 85; %Percent


Modify Receiver Filter Properties

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
recModel.EnableFilter = true;
recModel.SetFilter('Bessel');
recFilter = recModel.Filter;
recFilter.LowerBandwidthLimit = -20;
recFilter.UpperBandwidthLimit = 20;
recFilter.CutoffFrequency = 10;


Modify Receiver Model Type

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
receiver.SetModel('Complex Receiver Model');
recModel = receiver.Model;
recModel.AutoTrackFrequency = false;
recModel.Frequency = 11.81;


Modify Receiver Polarization Properties

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
recModel.EnablePolarization = true;
recModel.SetPolarizationType('ePolarizationTypeLinear');
polarization = recModel.Polarization;
polarization.ReferenceAxis = 'ePolarizationReferenceAxisZ';
polarization.CrossPolLeakage = -60; %dB


Modify Receiver System Noise Temperature

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
recModel.SystemNoiseTemperature.ConstantNoiseTemperature = 280; %K


Receiver Additonal Gain

[MATLAB] Copy Code

% IAgReceiver receiver: Receiver object
recModel = receiver.Model;
gain = recModel.PreReceiveGainsLosses.Add(5); %dB
gain.Identifier = 'Example Gain';


Create a New Transmitter Object

[MATLAB] Copy Code

% IAgSTKObject satellite: STK object
transmitter = satellite.Children.New('eTransmitter', 'MyTransmitter');


Modify the Linked Antenna

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
transmitter.SetModel('Complex Transmitter Model')
transmitter.Model.AntennaControl.ReferenceType = 'eAntennaControlRefTypeLink';
transmitter.Model.AntennaControl.LinkedAntennaObject = 'Antenna/MyAntenna';


Modify Transmitter Embedded Antenna

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
antennaControl = txModel.AntennaControl;
antennaControl.SetEmbeddedModel('Isotropic');
antennaControl.EmbeddedModel.Efficiency = 85; %Percent


Modify Transmitter Filter

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
txModel.EnableFilter = true;
txModel.SetFilter('Butterworth');
recFilter = txModel.Filter;
recFilter.LowerBandwidthLimit = -20;
recFilter.UpperBandwidthLimit = 20;
recFilter.CutoffFrequency = 10;


Modify Transmitter Model Type

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
transmitter.SetModel('Complex Transmitter Model');
txModel = transmitter.Model;
txModel.Frequency = 14; %GHz
txModel.Power = 25; %dBW
txModel.DataRate = 15; %Mb/sec


Modify Transmitter Modulator Properties

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
txModel.SetModulator('BPSK');
txModel.Modulator.AutoScaleBandwidth = true;


Modify Transmitter Orientation and Position

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
antennaControl = txModel.AntennaControl;
antOrientation = antennaControl.EmbeddedModelOrientation;
antOrientation.AssignAzEl(0, 90, 1); % 1 represents Rotate About Boresight
antOrientation.PositionOffset.X = 0.0; %m
antOrientation.PositionOffset.Y = 1; %m
antOrientation.PositionOffset.Z = 0.25; %m


Modify Transmitter Polarization Properties

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
txModel.EnablePolarization = true;
recModel.SetPolarizationType('ePolarizationTypeLinear');
polarization = txModel.Polarization;
polarization.ReferenceAxis = 'ePolarizationReferenceAxisY';
polarization.TiltAngle = 15; %deg


Transmitter Additonal Gain

[MATLAB] Copy Code

% IAgTransmitter transmitter: Transmitter object
txModel = transmitter.Model;
gain = txModel.PostTransmitGainsLosses.Add(-5); %dB
gain.Identifier = 'Example Loss';


Define a constellation

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
constellation = root.CurrentScenario.Children.New('eConstellation','MyConstellation');
constellation.Objects.AddObject(satellite);
constellation.Objects.Add('*/Facility/MyFacility');


Add Grid Constraint to Coverage

[MATLAB] Copy Code

% IAgCoverageDefinition coverage: Coverage object
coverage.PointDefinition.GridClass = 'eGridClassFacility';
coverage.PointDefinition.UseGridSeed =  true;
coverage.PointDefinition.SeedInstance = 'Facility/MyFacility';


Compute Coverage

[MATLAB] Copy Code

% IAgCoverageDefinition coverage: Coverage object
coverage.ComputeAccesses;


Create a New CoverageDefinition (on the current scenario central body)

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
%Create new Coverage Defintion and set the Bounds to an area target
coverage = scenario.Children.New('eCoverageDefinition', 'MyCoverage');
coverage.Grid.BoundsType = 'eBoundsCustomRegions';
covGrid = coverage.Grid;
bounds = covGrid.Bounds;
bounds.AreaTargets.Add('AreaTarget/MyAreaTarget');
%Define the Grid Resolution
Res = covGrid.Resolution;
Res.LatLon = .5;   %deg
%Set the satellite as the Asset
coverage.AssetList.Add('Satellite/MySatellite');

% Turn off Show Grid Points
coverage.Graphics.Static.IsPointsVisible = false;


Set Advanced Settings for Coverage

[MATLAB] Copy Code

% IAgCoverageDefinition coverage: Coverage object
advanced = coverage.Advanced;
advanced.AutoRecompute = false;
advanced.DataRetention = 'eAllData';
advanced.SaveMode = 'eSaveAccesses';


Set the Coverage Interval to an object's availability Analysis interval

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
% IAgCoverageDefinition coverage: Coverage object
satVGT = satellite.vgt;
AvailTimeSpan = satVGT.EventIntervals.Item('AvailabilityTimeSpan');
IntResult = AvailTimeSpan.FindInterval;
coverage.Interval.AnalysisInterval.SetStartAndStopTimes(IntResult.Interval.Start,IntResult.Interval.Stop)


Extracting Elements from Data Providers with Groups

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
% IAgScenario scenario: Scenario object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
satPosDP = satellite.DataProviders.Item('Cartesian Position').Group.Item('ICRF').Exec(scenario.StartTime,scenario.StopTime,60);
satx = cell2mat(satPosDP.DataSets.GetDataSetByName('x').GetValues);
saty = cell2mat(satPosDP.DataSets.GetDataSetByName('y').GetValues);
satz = cell2mat(satPosDP.DataSets.GetDataSetByName('z').GetValues);

satVelDP = satellite.DataProviders.GetDataPrvTimeVarFromPath('Cartesian Velocity/ICRF').Exec(scenario.StartTime,scenario.StopTime,60);
%There are 4 Methods to get DP From a Path depending on the kind of DP:
%   GetDataPrvTimeVarFromPath
%   GetDataPrvIntervalFromPath
%   GetDataPrvInfoFromPath
%   GetDataPrvFixedFromPath
satvx = cell2mat(satVelDP.DataSets.GetDataSetByName('x').GetValues);
satvy = cell2mat(satVelDP.DataSets.GetDataSetByName('y').GetValues);
satvz = cell2mat(satVelDP.DataSets.GetDataSetByName('z').GetValues);



Extracting Elements from Data Providers with PreData

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgFacility facility: Facility object
% IAgScenario scenario: Scenario object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
facChooseDP = facility.DataProviders.Item('Points Choose System');
dataProvCenter = facChooseDP.Group.Item('Center');
%Choose the referense system you want to report the Center point in
dataProvCenter.PreData = 'CentralBody/Earth TOD';
rptElems = {'Time';'x';'y';'z'};
results = dataProvCenter.ExecElements(scenario.StartTime, scenario.StopTime, 60, rptElems);
datasets = results.DataSets;
Time = cell2mat(datasets.GetDataSetByName('Time').GetValues);
facTODx = cell2mat(datasets.GetDataSetByName('x').GetValues);
facTODy = cell2mat(datasets.GetDataSetByName('y').GetValues);
facTODz = cell2mat(datasets.GetDataSetByName('z').GetValues);


Getting Data for a Single Point in Time

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
satPassDP = satellite.DataProviders.Item('Precision Passes').ExecSingle(2600);
pass = cell2mat(satPassDP.DataSets.GetDataSetByName('Precision Pass Number').GetValues);


Getting Data for Specific Points and Elements

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
times = {0;15000;20000;55000};
elems = {'Time';'Precision Pass Number'};
satPassesDP = satellite.DataProviders.Item('Precision Passes').ExecSingleElementsArray(times,elems);
passes = cell2mat(satPassesDP.GetArray(cast(1,'int32')));


Getting Time Dependent Data that's broken into Sections

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgScenario scenario: Scenario object
% IAgStkAccess access: Access calculation
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
accessAER = access.DataProviders.Item('AER Data').Group.Item('BodyFixed').Exec(scenario.StartTime, scenario.StopTime,60);
AERTimes = cell2mat(accessAER.Interval.Item(cast(0,'int32')).DataSets.GetDataSetByName('Time').GetValues);
Az = cell2mat(accessAER.Interval.Item(cast(0,'int32')).DataSets.GetDataSetByName('Azimuth').GetValues);
El = cell2mat(accessAER.Interval.Item(cast(0,'int32')).DataSets.GetDataSetByName('Elevation').GetValues);
for i = 1:1:accessAER.Interval.Count-1
    AERTimes = [AERTimes; cell2mat(accessAER.Interval.Item(cast(i,'int32')).DataSets.GetDataSetByName('Time').GetValues)];
    Az = [Az; cell2mat(accessAER.Interval.Item(cast(i,'int32')).DataSets.GetDataSetByName('Azimuth').GetValues)];
    El = [El; cell2mat(accessAER.Interval.Item(cast(i,'int32')).DataSets.GetDataSetByName('Elevation').GetValues)];
end


Using an interval Data Provider

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
% IAgFacility facility: Facility object

%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
%Get the current scenario
scenario = root.CurrentScenario;
%Set up the access object
access = satellite.GetAccessToObject(facility);
access.ComputeAccess;
%Get the Access AER Data Provider
accessDP = access.DataProviders.Item('Access Data').Exec(scenario.StartTime, scenario.StopTime);
%DP results return cell data types.  cell2mat
accessStartTimes = cell2mat(accessDP.DataSets.GetDataSetByName('Start Time').GetValues);
accessStopTimes = cell2mat(accessDP.DataSets.GetDataSetByName('Stop Time').GetValues);


Using an Time Dependent Data Provider and requesting only specified elements

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
% IAgScenario scenario: Scenario object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
elems = {'Time';'q1';'q2';'q3';'q4'};
satDP = satellite.DataProviders.Item('Attitude Quaternions').ExecElements(scenario.StartTime, scenario.StopTime, 60, elems);
%Whenever you pass an index to an array, you need to cast it to a long
%equivalent (int32)
satTime = cell2mat(satDP.DataSets.Item(cast(0,'int32')).GetValues);
satq1 = cell2mat(satDP.DataSets.Item(cast(1,'int32')).GetValues);
satq2 = cell2mat(satDP.DataSets.Item(cast(2,'int32')).GetValues);
satq3 = cell2mat(satDP.DataSets.Item(cast(3,'int32')).GetValues);
satq4 = cell2mat(satDP.DataSets.Item(cast(4,'int32')).GetValues);


Using an Time Independent Data Provider

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgFacility facility: Facility object
%Change DateFormat dimension to epoch seconds to make the data easier to handle in
%MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
facDP = facility.DataProviders.Item('Cartesian Position').Exec;
facx = cell2mat(facDP.DataSets.GetDataSetByName('x').GetValues);
facy = cell2mat(facDP.DataSets.GetDataSetByName('y').GetValues);
facz = cell2mat(facDP.DataSets.GetDataSetByName('z').GetValues);


Add a AzEl Mask to a Facility

[MATLAB] Copy Code

% IAgFacility facility: Facility Object
facility.SetAzElMask('eTerrainData',0);


Create a facility (on the current scenario central body)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
facility = root.CurrentScenario.Children.New('eFacility', 'MyFacility');


Set the geodetic position of the facility

[MATLAB] Copy Code

% IAgFacility facility: Facility Object
facility.Position.AssignGeodetic(41.9849,21.4039,0) % Latitude, Longitude, Altitude

% Set altitude to height of terrain
facility.UseTerrain = true;

% Set altitude to a distance above the ground
facility.HeightAboveGround = .05;   % km


Display the AzElMask in 2D/3D

[MATLAB] Copy Code

% IAgFacility facility: Facility Object
azelMask = facility.Graphics.AzElMask;
azelMask.RangeVisible = true;
azelMask.NumberOfRangeSteps = 10;
azelMask.DisplayRangeMinimum = 0;   % km
azelMask.DisplayRangeMaximum = 100;  % km
azelMask.RangeColorVisible = true;
azelMask.RangeColor = 16776960; % cyan


Configure the Contours of the FOM and define a color ramp

[MATLAB] Copy Code

% IAgCoverageDefinition coverage: Coverage object
% IAgFigureOfMerit fom: Figure Of Merit object
satisfaction = coverage.Graphics.Static;
satisfaction.IsRegionVisible = false;
Animation = fom.VO.Animation;
Animation.IsVisible = false;
VOcontours = fom.VO.Static;
VOcontours.IsVisible = true;
contours = fom.Graphics.Static.Contours;
contours.IsVisible = true;
contours.ContourType = 'eSmoothFill';
contours.ColorMethod = 'eColorRamp';
contours.LevelAttributes.RemoveAll;

contours.LevelAttributes.AddLevelRange(590, 660, 10);   %Start, Start, Step
contours.RampColor.StartColor = 255;        %Red
contours.RampColor.EndColor = 16711680;     %Blue


Create a new Figure of Merit of type Access Duration

[MATLAB] Copy Code

% IAgCoverageDefinition coverage: Coverage object
fom = coverage.Children.New('eFigureOfMerit', 'AccessDuration');
fom.SetDefinitionType('eFmAccessDuration');
fom.Definition.SetComputeType('eMaximum');


Add Array of Waypoints to Ground Vehicle and Interpolate over Terrain

[MATLAB] Copy Code

% IAgGroundVehicle grndVehicle: Ground Vehicle object
route = grndVehicle.Route;
ptsArray = {41.97766217,21.44863761,0,0.026,.5;
            41.97422351,21.39956154,0,0.026,.5;
            41.99173299,21.40796942,0,0.026,.5};
route.SetPointsSmoothRateAndPropagate(ptsArray);
route.SetAltitudeRefType('eWayPtAltRefTerrain');
route.AltitudeRef.Granularity = .001;
route.altitudeRef.InterpMethod = 'eWayPtTerrainHeight';
%Propagate the route
route.Propagate;


Create a New Ground Vehicle (on the current scenario central body)

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
grndVehicle = scenario.Children.New('eGroundVehicle','MyVehicle');
grndVehicle.SetRouteType('ePropagatorGreatArc');


Set Great Arc Propagator and Add Individual Waypoints to Ground Vehicle

[MATLAB] Copy Code

% IAgGroundVehicle grndVehicle: Ground Vehicle object
% Set route to great arc, method and altitude reference
grndVehicle.SetRouteType('ePropagatorGreatArc');
route = grndVehicle.Route;
route.Method = 'eDetermineTimeAccFromVel';
route.SetAltitudeRefType('eWayPtAltRefWGS84');
% Add first point
waypoint = route.Waypoints.Add();
waypoint.Latitude = 56.18;
waypoint.Longitude = 40.91;
waypoint.Altitude = 0;  % km
waypoint.Speed = .026;    % km/sec
% Add second point
waypoint2 = route.Waypoints.Add();
waypoint2.Latitude = 50.22;
waypoint2.Longitude = 11.05;
waypoint2.Altitude = 0; % km
waypoint2.Speed = .026;    % km/sec
%Propagate the route
route.Propagate;


Create a New LineTarget (on the current scenario central body)

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
lineTarget = scenario.Children.New('eLineTarget','MyLineTarget');
point1 = lineTarget.Points.Add(34.72, -118.34);
point2 = lineTarget.Points.Add(30.83, -82.67);


Create a New Missile (on the current scenario central body)

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
missile = scenario.Children.New('eMissile','MyMissile');
missile.SetTrajectoryType('ePropagatorBallistic');
trajectory = missile.Trajectory;
trajectory.StartTime = 0;
trajectory.Launch.Lat = 29;
trajectory.Launch.Lon = -81;
trajectory.ImpactLocation.Impact.Lat = 27;
trajectory.ImpactLocation.Impact.Lon = -43;
trajectory.ImpactLocation.SetLaunchControlType('eLaunchControlFixedApogeeAlt');
trajectory.impactLocation.LaunchControl.ApogeeAlt = 1200;   % km
trajectory.Propagate;


Create a New MTO (on the current scenario central body)

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
mto = scenario.Children.New('eMTO','MyMTO');
mtoTimes = {0; 7200};
mtoLats = {36.77; 34.80};
mtoLons = {-77.25; -78.37};
mtoAlts = {5; 5};

track1 = mto.Tracks.AddTrack(1,mtoTimes,mtoLats,mtoLons,mtoAlts);
track1.Interpolate = true;
% Change the color of the track
mto.Graphics.Tracks.GetTrackFromId(1).Color = 255;


Load MTO track points from file

[MATLAB] Copy Code

% LoadPoints expects the path an Ephemeris file path
% IAgMto mto: MTO Object
track2 = mto.Tracks.Add(2);
track2.Points.LoadPoints('C:\Program Files\AGI\STK 11\Help\stktraining\text\EphemerisLLATimePosVel_Example.e');
track2.Interpolate = true;


Compute Object Coverage

[MATLAB] Copy Code

% IAgAircraft aircraft: Aircraft object
objCoverage = aircraft.ObjectCoverage;
objCoverage.Assets.RemoveAll;
objCoverage.Assets.Add('Satellite/MySatellite');
objCoverage.UseObjectTimes = true;
objCoverage.Compute;

objCoverageFOM = objCoverage.FOM;
if objCoverageFOM.IsDefinitionTypeSupported('eFmAccessDuration')
    objCoverageFOM.SetDefinitionType('eFmAccessDuration');
    objCoverageFOM.Definition.SetComputeType('eMaximum');
end


Create a New Planet

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
planet = scenario.Children.New('ePlanet','Mars');
planet.CommonTasks.SetPositionSourceCentralBody('Mars','eEphemJPLDE');


Modify Planet 2D Properties

[MATLAB] Copy Code

% IAgPlanet planet: Planet object
planet2D = planet.Graphics;
planet2D.Color = 255;   % Red
planet2D.Inherit = false;
planet2D.OrbitVisible = true;
planet2D.SubPlanetPointVisible = false;
planet2D.SubPlanetLabelVisible = false;


Create a satellite (on the current scenario central body)

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
satellite = root.CurrentScenario.Children.New('eSatellite', 'MySatellite');


Export an ephemeris file to scenario folder

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgSatellite satellite: Satellite object
scenPath = root.ExecuteCommand('GetDirectory / Scenario').Item(0);
satelliteFilePath = [scenPath '\' satellite.InstanceName '.e'];
satellite.ExportTools.GetEphemerisStkExportTool.Export(satelliteFilePath);


Set initial state of satellite and propagate

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
keplerian = satellite.Propagator.InitialState.Representation.ConvertTo('eOrbitStateClassical'); % Use the Classical Element interface
keplerian.SizeShapeType = 'eSizeShapeAltitude';  % Changes from Ecc/Inc to Perigee/Apogee Altitude
keplerian.LocationType = 'eLocationTrueAnomaly'; % Makes sure True Anomaly is being used
keplerian.Orientation.AscNodeType = 'eAscNodeLAN'; % Use LAN instead of RAAN for data entry

% Assign the perigee and apogee altitude values:
keplerian.SizeShape.PerigeeAltitude = 500;      % km
keplerian.SizeShape.ApogeeAltitude = 600;       % km

% Assign the other desired orbital parameters:
keplerian.Orientation.Inclination = 90;         % deg
keplerian.Orientation.ArgOfPerigee = 12;        % deg
keplerian.Orientation.AscNode.Value = 24;       % deg
keplerian.Location.Value = 180;                 % deg

% Apply the changes made to the satellite's state and propagate:
satellite.Propagator.InitialState.Representation.Assign(keplerian);
satellite.Propagator.Propagate;


Set satellite attitude basic spinning

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
basic = satellite.Attitude.Basic;
basic.SetProfileType('eProfileSpinning')
basic.Profile.Body.AssignXYZ(0,0,1)
basic.Profile.Inertial.AssignXYZ(0,1,0);
basic.Profile.Rate = 6;  % rev/sec


Set satellite attitude external

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.Attitude.External.Load('C:\Program Files\AGI\STK 11\Help\stktraining\text\AttitudeTimeEulerAngles_Example.a');


Set satellite attitude targeting

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
attitudePointing = satellite.Attitude.Pointing;
attitudePointing.UseTargetPointing = 1;
attitudePointing.Targets.RemoveAll;
attitudePointing.Targets.Add('AreaTarget/MyAreaTarget');
attitudePointing.TargetTimes.UseAccessTimes;


Set satellite model pointing

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.VO.ModelPointing.AddInterval('SPP_Arrays-000000', 'Sun', root.CurrentScenario.StartTime, root.CurrentScenario.StopTime);


Set satellite propagator to Astrogator and clear segments

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.SetPropagatorType('ePropagatorAstrogator');
driver = satellite.Propagator;
%Clear all segments from the MCS
driver.MainSequence.RemoveAll();


Set satellite propagator to HPOP and set force model properties

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.SetPropagatorType('ePropagatorHPOP');
set(satellite.Propagator,'Step',60);
satellite.Propagator.InitialState.Representation.AssignCartesian('eCoordinateSystemFixed',6406.92,-1787.59,-506.422,2.10185,6.48871,3.64041);

forceModel = satellite.Propagator.ForceModel;
forceModel.CentralBodyGravity.File = 'C:\Program Files\AGI\STK 11\STKData\CentralBodies\Earth\WGS84_EGM96.grv';
forceModel.CentralBodyGravity.MaxDegree = 21;
forceModel.CentralBodyGravity.MaxOrder = 21;
forceModel.Drag.Use=1;
forceModel.Drag.DragModel.Cd=0.01;
forceModel.Drag.DragModel.AreaMassRatio=0.01;
forceModel.SolarRadiationPressure.Use=0;

integrator = satellite.Propagator.Integrator;
integrator.DoNotPropagateBelowAlt=-1e6;
integrator.IntegrationModel=3;
integrator.StepSizeControl.Method=1;
integrator.StepSizeControl.ErrorTolerance=1e-13;
integrator.StepSizeControl.MinStepSize=0.1;
integrator.StepSizeControl.MaxStepSize=30;
integrator.Interpolation.Method=1;
integrator.Interpolation.Order=7;

satellite.Propagator.Propagate;


Set satellite propagator to J4 and assign cartesian position

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.SetPropagatorType('ePropagatorJ4Perturbation');
propagator = satellite.Propagator;
propagator.InitialState.Representation.AssignCartesian('eCoordinateSystemICRF',6678.14,0,0,0,6.78953,3.68641)
propagator.Propagate;


Set satellite propagator to SGP4 and propagate

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.SetPropagatorType('ePropagatorSGP4');
propagator = satellite.Propagator;
propagator.UseScenarioAnalysisTime;
propagator.CommonTasks.AddSegsFromOnlineSource('25544'); % International Space Station
propagator.AutoUpdateEnabled = true;
propagator.Propagate;


Set satellite propagator to SPICE and propagate

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
% IAgStkObjectRoot root: STK Object Model Root
satellite.SetPropagatorType('ePropagatorSPICE');
propagator = satellite.propagator;
propagator.Spice = 'C:\Program Files\AGI\STK 11\STKData\Spice\planets.bsp';   % Make sure this is a valid path
propagator.BodyName = 'MARS';

propagator.StartTime = root.CurrentScenario.StartTime;  % Set to scenario start time
propagator.StopTime = root.CurrentScenario.StopTime;    % Set to scenario stop time
propagator.Step = 60.0;
propagator.Propagate;


Create a new component through the Component Browser

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
% IAgScenario scenario: Scenario object
%Get the Prop Funct Folder
compBrowser = scenario.ComponentDirectory.GetComponents('eComponentAstrogator').GetFolder('Propagator Functions');
%Get the Atmospheric Models Folder
atmos = compBrowser.GetFolder('Atmospheric Models');
%Grab the Mars Exponential Model
mars = atmos.Item('Exponential - Mars');
%Make a copy of the Model to Edit it
marsClone = mars.CloneObject;

%Grab a handle of the new Mars Model and edit properties
newMars = atmos.Item('Exponential - Mars1');
newMars.Name = 'New Mars';
newMars.ReferenceAltitude = 0; %km
newMars.ReferenceDensity = 20000000; %kg/km^3
newMars.ScaleAltitude = 11.1; %km


Insert a Propagate State Segment into the MCS and Add/Remove Stopping Conditions

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
transferEllipse = driver.MainSequence.Insert('eVASegmentTypePropagate', 'Transfer Ellipse', '-');

transferEllipse.Properties.Color = 255; % Red
transferEllipse.PropagatorName = 'Earth Point Mass';
transferEllipse.StoppingConditions.Add('Apoapsis');
transferEllipse.StoppingConditions.Remove('Duration');


Insert a Propagate State Segment into the MCS and configure

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
propagate = driver.MainSequence.Insert('eVASegmentTypePropagate', 'Propagate', '-');
propagate.PropagatorName = 'Earth Point Mass';
propagate.Properties.Color = 16711680;  % Blue
propagate.StoppingConditions.Item('Duration').Properties.Trip = 7200;


Insert a Target Sequence Segment into the MCS and configure

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
ts = driver.MainSequence.Insert('eVASegmentTypeTargetSequence', 'Start Transfer', '-');
dv1 = ts.Segments.Insert('eVASegmentTypeManeuver', 'DV1', '-');
%Insert maneuver into target sequence and target thrust vector
dv1.SetManeuverType('eVAManeuverTypeImpulsive');
impulsive = dv1.Maneuver;
impulsive.SetAttitudeControlType('eVAAttitudeControlThrustVector');
thrustVector = impulsive.AttitudeControl;
thrustVector.ThrustAxesName = 'Satellite/MySatellite VNC(Earth)';
dv1.EnableControlParameter('eVAControlManeuverImpulsiveCartesianX');
dv1.Results.Add('Keplerian Elems/Radius of Apoapsis');
%Handle to differential corrector profile
dc = ts.Profiles.Item('Differential Corrector');
%Set up control parameter
xControlParam = dc.ControlParameters.GetControlByPaths('DV1','ImpulsiveMnvr.Cartesian.X');
xControlParam.Enable = true;
xControlParam.MaxStep = 0.3;
%Set up result for control parameter
roaResult = dc.Results.GetResultByPaths('DV1', 'Radius Of Apoapsis');
roaResult.Enable = true;
roaResult.DesiredValue = 42238;
roaResult.Tolerance = 0.1;

dc.MaxIterations = 50;
ts.Action = 'eVATargetSeqActionRunActiveProfiles';


Insert an Initial State Segment into the MCS and configure

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
initState = driver.MainSequence.Insert('eVASegmentTypeInitialState', 'Inner Orbit', '-');
initState.InitialState.Epoch = scenario.StartTime;
initState.SetElementType('eVAElementTypeKeplerian');
kep = initState.Element;
kep.PeriapsisRadiusSize = 6700;
kep.ArgOfPeriapsis = 0;
kep.Eccentricity = 0;
kep.Inclination = 0;
kep.RAAN = 0;
kep.TrueAnomaly = 0;


Run the Astrogator MCS

[MATLAB] Copy Code

% IAgVADriverMCS driver: MCS driver interface
driver.RunMCS;


Add a Data Display to the 3D Window

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
%Remove all data displays so you can easily pick one that may already be in
%the list
satellite.VO.DataDisplay.RemoveAll;
%Add LLA data display and change size/title
datadisplay = satellite.VO.DataDisplay.Add('LLA Position');
datadisplay.IsVisible = true;
datadisplay.FontSize = 'eMedium';
datadisplay.TitleText = 'My Data Display';
datadisplay.IsShowNameEnabled = false;


Add a Vector to display in 3D

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
vector = satellite.VO.Vector;
angVel = vector.RefCrdns.Add('eVectorElem', 'Satellite/MySatellite AngVelocity');
angVel.LabelVisible = true;


Add Fixed System Orbit System in 3D Display

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
orbitsystems = satellite.VO.OrbitSystems;
orbitsystems.FixedByWindow.IsVisible = true;
orbitsystems.FixedByWindow.Inherit = false;
orbitsystems.FixedByWindow.Color = 65535;   %yellow


Change the 3D Model and marker properties

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
model = satellite.VO.Model;
model.ModelData.Filename = 'STKData\VO\Models\Space\dsp.mdl';
orbitmarker = model.OrbitMarker;
orbitmarker.SetMarkerImageFile('C:\Program Files\AGI\STK 11\STKData\VO\Markers\Satellite.ppm');
orbitmarker.MarkerData.IsTransparent = true;
orbitmarker.PixelSize = 18;
orbitmarker.OrientationMode = 'eVOMarkerOrientationFollowDirection';


Change the Display Label of the vehicle

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
satellite.Graphics.UseInstNameLabel = false;
satellite.Graphics.LabelName = 'Matlab Satellite';


Change the graphics resolution of the orbit for a smooth path

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
resolution = satellite.Graphics.Resolution;
resolution.Orbit = 60;


Display droplines in 3D Window

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
orbitDroplines = satellite.VO.DropLines.Orbit;
wgs84 = orbitDroplines.Item(0); %   Droplines to WGS84 surface
wgs84.IsVisible = true;
wgs84.LineWidth = 1;
wgs84.Use2DColor = false;
wgs84.Color = 255;  %red


Display Vector and set properties in 3D Display

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
vector = satellite.VO.Vector;
sunVector = vector.RefCrdns.GetCrdnByName('eVectorElem','Satellite/MySatellite Sun Vector');
vector.VectorSizeScale = 2;
sunVector.Visible = true;
sunVector.Color = 65535;    %yellow
sunVector.LabelVisible = true;
sunVector.MagnitudeVisible = true;


Modify the Detail Thersolds Levels

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
details = satellite.VO.Model.DetailThreshold;
details.EnableDetailThreshold = true;
details.All = 1;    %   km
details.ModelLabel = 2; %   km
details.MarkerLabel = 40000;    %   km
details.Marker = 500000;    %   km
details.Point = 500000; %   km


Set 2D Display times to Custom and add intervals

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
graphics = satellite.Graphics;
graphics.SetAttributesType('eAttributesCustom');
graphics.Attributes.Default.IsVisible = false;

interval1 = graphics.Attributes.Intervals.Add(0,3600);
interval1.GfxAttributes.IsVisible = true;
interval1.GfxAttributes.Inherit = false;
interval1.GfxAttributes.Line.Width = 1;
interval1.GfxAttributes.Line.Style = 'eLongDash';
interval1.GfxAttributes.Color = 16711935;
interval1.GfxAttributes.MarkerStyle = 'X';

interval2 = satellite.Graphics.Attributes.Intervals.Add(7200,86400);
interval2.GfxAttributes.IsVisible = true;
interval2.GfxAttributes.Inherit = false;
interval2.GfxAttributes.Line.Width = 1;
interval2.GfxAttributes.Line.Style = 'eDashed';
interval2.GfxAttributes.Color = 65280;
interval2.GfxAttributes.MarkerStyle = 'Point';


Set 2D Graphics display properties

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
% IAgSatellite satellite: Satellite object
%Change the line width, style, color and marker

graphics = satellite.Graphics;
graphics.SetAttributesType('eAttributesBasic');
attributes = graphics.Attributes;
attributes.Inherit = false;
attributes.Line.Width = 3;
attributes.Line.Style = 'eLongDash';
attributes.Color = 65280;
attributes.MarkerStyle = 'C:\Program Files\AGI\STK 11\STKData\Pixmaps\MarkersWin\m010Satellite.bmp';


Set 2D Swath

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
%Set swath in the 2D properties
swath = satellite.Graphics.Swath;
swath.SetElevationType('eElevationGroundElevation');
swath.Elevation.Angle = 30;  % deg
satellite.Graphics.Swath.Options = 'eOptionsEdgeLimits';


Set 2D/3D Elevation Contours

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
%Set the contours in the 2D properties
contours = satellite.Graphics.ElevContours;
contours.IsVisible = true;
contours.NumOfDecimalDigits = 0;
contours.Elevations.AddLevelRange(0,90,10); %   Min, Max, Step
%Turn the contours on in the 3D properties
satellite.VO.ElevContours.IsVisible = true;


Set 2D/3D Pass Display Properties

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
%Display one pass for ground track and orbit on 2D
passdata = satellite.Graphics.PassData;
groundTrack = passdata.GroundTrack;
groundTrack.SetLeadDataType('eDataOnePass');
groundTrack.SetTrailSameAsLead;
orbit = passdata.Orbit;
orbit.SetLeadDataType('eDataOnePass');
orbit.SetTrailSameAsLead;
%Display one orbit pass and no ground track on 3D
passdata3D = satellite.VO.Pass.TrackData.PassData;
groundTrack3D = passdata3D.GroundTrack;
groundTrack3D.SetLeadDataType('eDataNone');
groundTrack3D.SetTrailSameAsLead;
orbit3D = passdata3D.Orbit;
orbit3D.SetLeadDataType('eDataOnePass');
orbit3D.SetTrailSameAsLead;


Set 2D/3D Range Contours

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
%Set a contour level in the 2D properties
rangeContours = satellite.Graphics.RangeContours;
rangeContours.IsVisible = true;
rangeLevel = rangeContours.LevelAttributes.AddLevel(2000);  % km
rangeLevel.Color = 16711935;
rangeLevel.LineWidth = 4;
rangeLevel.LabelAngle = 90;
rangeLevel.UserTextVisible = true;
rangeLevel.UserText = 'Range';
%Turn the contours on in the 3D properties
satellite.VO.RangeContours.IsVisible = true;


Set Vehicle Lighting Properties

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
lighting = satellite.Graphics.Lighting;
%Settings for vehicle in sunlight
sunlight = lighting.Sunlight;
sunlight.Visible = true;
sunlight.Color = 65535; %yellow
sunlight.LineWidth = 3;
%Settings for vehicle in penumbra
penumbra = lighting.Penumbra;
penumbra.Visible = true;
penumbra.Color = 42495; %orange
penumbra.LineWidth = 2;
%Settings for vehicle in umbra
umbra = lighting.Umbra;
umbra.Visible = true;
umbra.Color = 255;  %red
umbra.LineWidth = 1;


Attach a Sensor Object to a Vehicle

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
sensor = satellite.Children.New('eSensor','MySensor');


Sensor Body Mask

[MATLAB] Copy Code

% IAgSensor sensor: Sensor object
sensor.SetAzElMaskFile('C:\Program Files\AGI\STK 11\Help\stktraining\text\BodyMask_hga.bmsk');


Set a Targeted Sensor

[MATLAB] Copy Code

% IAgSensor sensor: Sensor object
sensor.CommonTasks.SetPointingTargetedTracking('eTrackModeTranspond', 'eBoresightRotate', '*/AreaTarget/MyAreaTarget');


Set Sensor Properties

[MATLAB] Copy Code

% IAgSensor sensor: Sensor object
% Change pattern and set
sensor.CommonTasks.SetPatternRectangular(20,25);
% Change pointing and set
sensor.CommonTasks.SetPointingFixedAzEl(90,60,'eAzElAboutBoresightRotate');
% Change location and set
sensor.SetLocationType('eSnFixed');
sensor.LocationData.AssignCartesian(-.0004,-.0004,.004);


Sensor Persistence

[MATLAB] Copy Code

% IAgSensor sensor: Sensor object
projection = sensor.Graphics.Projection;
projection.Persistence = 7200;  % sec
projection.ForwardPersistence = true;
projection.FillPersistence = true;
sensor.Graphics.FillVisible = true;
sensor.Graphics.PercentTranslucency = 50;


Execute Connect command

[MATLAB] Copy Code

root.ExecuteCommand('New / */Target MyTarget');


Execute multiple Connect commands

[MATLAB] Copy Code

commandList = {'New / */Place MyPlace';'SetPosition */Place/MyPlace Geodetic 37.9 -75.5 0.0'};
root.ExecuteMultipleCommands(commandList,'eExceptionOnError');


Extract data from Connect result

[MATLAB] Copy Code

result = root.ExecuteCommand('Report_RM */Place/MyPlace Style "Cartesian Position"');

for i = 0:result.Count-1
    cmdRes = result.Item(i);
    fprintf(' %s \n', cmdRes);
end


Camera view object with offset

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
% IAgScenario scenario: Scenario object
axes = satellite.Vgt.Axes.Item('TopoCentric');
point = satellite.vgt.Points.Item('Center');
offset = {0.0975; 0.0279; 0.0273};
upDirection = {-0.0906; -0.6908; 0.7173};

manager = scenario.SceneManager;
camera = manager.scenes.Item(0).Camera;
camera.ViewOffsetWithUpAxis(axes , point, offset, upDirection);
camera.ConstrainedUpAxis = 'eStkGraphicsConstrainedUpAxisZ';
camera.FieldOfView = deg2rad(45);
camera.LockViewDirection = false;
manager.Render;


Change camera reference frame

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% IAgStkObjectRoot root: STK Object Model Root
manager = scenario.SceneManager;
manager.scenes.Item(0).Camera.ViewCentralBody('Earth', root.CentralBodies.Earth.Vgt.Axes.Item('Fixed'));
manager.Render;


Change camera view to Imagery Extents

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% IAgStkGraphicsAGIProcessedImageGlobeOverlay imageryTile: Image Overlay object
manager = scenario.SceneManager;
extent = imageryTile.Extent;
% Change extent in the default 3D window
manager.scenes.Item(0).Camera.ViewExtent('Earth', extent);
manager.Render;


Add Imagery and Terrain to the Scene

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% Retrieve the boundaries of the imported files
manager = scenario.SceneManager;
% Add Terrain
terrainTile = manager.Scenes.Item(0).CentralBodies.Earth.Terrain.AddUriString('C:\Program Files\AGI\STK 11\Help\stktraining\samples\SRTM_Skopje.pdtt');
extentTerrain = terrainTile.Extent;
disp(['Terrain boundaries: LatMin: ' num2str(extentTerrain{1}) ' LatMax: ' num2str(extentTerrain{3}) ' LonMin: ' num2str(extentTerrain{2}) ' LonMax: ' num2str(extentTerrain{4})]);
% Add Imagery
imageryTile = manager.Scenes.Item(0).CentralBodies.Earth.Imagery.AddUriString('C:\Program Files\AGI\STK 11\Help\stktraining\imagery\NPS_OrganPipeCactus_Map.pdttx');
extentImagery = imageryTile.Extent;
disp(['Imagery boundaries: LatMin: ' num2str(extentImagery{1}) ' LatMax: ' num2str(extentImagery{3}) ' LonMin: ' num2str(extentImagery{2}) ' LonMax: ' num2str(extentImagery{4})]);


Control Display of Stars and Water Texture

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% Turn off the stars and water texture
manager = scenario.SceneManager;
manager.Scenes.Item(0).ShowStars = false;
manager.Scenes.Item(0).ShowWaterSurface = false;


Control the Lighting of the 3D scene

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% Modify the lighting levels
manager = scenario.SceneManager;
lighting = manager.Scenes.Item(0).Lighting;
lighting.AmbientIntensity = .20;    %Percent
lighting.DiffuseIntensity = 4;  %Percent
lighting.NightLightsIntensity = 5;  %Percent


Create a Bounding Sphere

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
sphere = manager.Initializers.BoundingSphere.Initialize({-1061.22;-5773.98;4456.04},100);


Display a Primitive During an Interval

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% IAgStkGraphicsModelPrimitive model: Graphics Primitive
manager = scenario.SceneManager;
composite = manager.Initializers.CompositeDisplayCondition.Initialize;
start = root.ConversionUtility.NewDate('EpSec', num2str(scenario.StartTime));
stop = root.ConversionUtility.NewDate('EpSec', num2str(scenario.StartTime + 600));
timeInterval = manager.Initializers.TimeIntervalDisplayCondition.InitializeWithTimes(start, stop);
composite.Add(timeInterval);
model.DisplayCondition = composite;


Draw a new Model Primitive

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% Create a model primitive and sets properties
manager = scenario.SceneManager;
model = manager.Initializers.ModelPrimitive.InitializeWithStringUriAndUpAxis('C:\Program Files\AGI\STK 11\STKData\VO\Models\Air\f-22a_raptor.mdl','eStkGraphicsModelUpAxisNegativeX');
model.SetPositionCartographic('Earth',{0;-3;15});    % Lat,Lon,Alt
model.Scale = 10000;
model.Translucency = 0;
manager.Primitives.Add(model);
manager.Render;


Draw a new Model Primitive in a Reference Frame

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% IAgSatellite satellite: Satellite object
% Create a model primitive and sets properties
manager = scenario.SceneManager;
modelRefFrame = manager.Initializers.ModelPrimitive.InitializeWithStringUriAndUpAxis('C:\Program Files\AGI\STK 11\STKData\VO\Models\Space\cubesat.mdl','eStkGraphicsModelUpAxisNegativeX');
modelRefFrame.Position = {0;.005;0};
modelRefFrame.ReferenceFrame = satellite.Vgt.Systems.Item('Body');
modelRefFrame.Scale = 1;
manager.Primitives.Add(modelRefFrame);
manager.Render;


Draw a new Polyline Primitive

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% 3(n) x 1 cell result: cell of LLA values
% Create a polyline primitive and sets properties
manager = scenario.SceneManager;
polyline = manager.Initializers.PolylinePrimitive.InitializeWithType('eStkGraphicsPolylineTypeLineStrip');
polyline.SetCartographic('Earth', result);
polyline.Color = 255; % Red
polyline.Width = 3;
polyline.Translucency = 0;
polyline.Display = true;
polyline.DisplayOutline = false;
manager.Primitives.Add(polyline);
manager.Render;

%%
path = manager.Initializers.PathPrimitive.Initialize();
path.Width = 2;

interpolator = manager.Initializers.GreatArcInterpolator.InitializeWithCentralBody('Earth');
interpolator.Granularity = 1;
interpolator.PolylineType(1);

result = interpolator.Interpolate({2.383;13.049;10;0.054;35.919;10});
%path.AddRangeToFront(reshape(result,length(result)/3,3));

counter = 1;
for i=counter:3:length(result)
    cartesian = root.ConversionUtility.ConvertPositionArray('eGeodetic',{result{i}, result{i+1}, result{i+2}},'eCartesian');
    pt = manager.Initializers.PathPoint.Initialize;
    pt.Position = cartesian';
    pt.Translucency = .25;

    counter = counter + 1;
    if (rem(counter,2) == 0)
        pt.Color = 255;
    else
        pt.Color = 65280;
    end
    path.AddBack(pt);
end

manager.Primitives.Add(path);
manager.Render;


Draw a new Surface Extent Triangulator

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
texture = manager.Textures.LoadFromStringUri('C:\Program Files\AGI\STK 11\CodeSamples\CustomApplications\Data\HowTo\Textures\agi_logo_transparent.png');
mesh = manager.Initializers.SurfaceMeshPrimitive.Initialize();
mesh.Texture = texture;
mesh.Translucency = 0;
cartographicExtent = {-55;10;-24;30};

triangles = manager.Initializers.SurfaceExtentTriangulator.ComputeSimple('Earth', cartographicExtent);
mesh.Set(triangles);
mesh.Translucency = .25;
c0 = {10;-55};
c1 = {30;-55};
c2 = {30;-24};
c3 = {10;-24};

mesh.TextureMatrix = manager.Initializers.TextureMatrix.InitializeWithRectangles(c0,c1,c2,c3);
mesh.TransparentTextureBorder = true;
manager.Primitives.Add(mesh);
manager.Render;


Draw a new Surface Mesh

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
cartesianPts = {6030.721052;1956.627139;-692.397578;
    5568.375825;2993.600713;-841.076362;
    5680.743568;2490.379622;-1480.882721};  % X,Y,Z (km)

triangles = manager.Initializers.SurfacePolygonTriangulator.Compute('Earth',cartesianPts);
surfaceMesh = manager.Initializers.SurfaceMeshPrimitive.Initialize();
surfaceMesh.Color = 255;    % red
surfaceMesh.Set(triangles);
manager.Primitives.Add(surfaceMesh);
manager.Render;


Draw a new Text Primitive

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
font = manager.Initializers.GraphicsFont.InitializeWithNameSizeFontStyleOutline('MS Sans Serif', 24, 'eStkGraphicsFontStyleBold', true);
textBatch = manager.Initializers.TextBatchPrimitive.InitializeWithGraphicsFont(font);
textBatch.SetCartographic('Earth', {0;0;0},{'Example Text'});   % Lat,Lon,Alt
manager.Primitives.Add(textBatch);


Draw a new Texture Screen Overlay

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
overlays = manager.ScreenOverlays.Overlays;
textureOverlay = manager.Initializers.TextureScreenOverlay.InitializeWithXYWidthHeight(0,0,128,128);
textureOverlay.Texture = manager.Textures.LoadFromStringUri('C:\Program Files\AGI\STK 11\STKData\VO\Textures\AGI_logo_big.ppm');
textureOverlay.MaintainAspectRatio = true;
textureOverlay.Origin = 'eStkGraphicsScreenOverlayOriginTopLeft';
textureOverlay.Position = {0;20;'eStkGraphicsScreenOverlayUnitPixels';'eStkGraphicsScreenOverlayUnitPixels'};
overlays.Add(textureOverlay);
%Render the Scene
manager.Render;


Draw a new Video Stream primitive

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
video = manager.Initializers.VideoStream.InitializeWithStringUri('C:\Program Files\AGI\STK 11\CodeSamples\CustomApplications\Data\HowTo\Videos\ShenzhouVII_BX1.wmv');
% Playback options are 'eStkGraphicsVideoPlaybackTimeInterval'
% 'eStkGraphicsVideoPlaybackRealTime'
video.Playback = 'eStkGraphicsVideoPlaybackRealTime';
video.Loop = true;
overlay = manager.Initializers.TextureScreenOverlay.InitializeWithXYWidthHeight(0,0,video.Width / 3, video.Height / 3);
overlay.MaintainAspectRatio = true;
overlay.Translucency = 0;
overlay.BorderSize = 1;
overlay.BorderTranslucency = .25;
overlay.Origin = 'eStkGraphicsScreenOverlayOriginTopRight';
overlay.Texture = scenario.SceneManager.Textures.FromRaster(video);
manager.ScreenOverlays.Overlays.Add(overlay);
%Render the Scene
manager.Render;


Draw a Point Primitive and set properties

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
point = manager.Initializers.PointBatchPrimitive.Initialize();
ptPosition = {0;-1;0};  %Lat,Lon,Alt

point.SetCartographic('Earth',ptPosition)
point.PixelSize = 15;
point.Color = 65280;
point.DisplayOutline = true;
point.OutlineWidth = 5;
point.OutlineColor = 255;

manager.Primitives.Add(point);
%Render the Scene
manager.Render;


Draw a Solid Box Primitive and set properties

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
originBox = root.ConversionUtility.NewPositionOnEarth();
originBox.AssignGeodetic(0, 3, 100);

orientBox = root.ConversionUtility.NewOrientation();
orientBox.AssignAzEl(0,0,'eAzElAboutBoresightRotate');

size = {100; 100; 200};
result = manager.Initializers.BoxTriangulator.Compute(size);
solidBox = manager.Initializers.SolidPrimitive.Initialize();
solidBox.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed');
solidBox.Position = originBox.QueryCartesianArray;
solidBox.SetWithResult(result);
solidBox.Color = 255;
solidBox.OutlineColor = 16776974;
solidBox.Translucency = .75;
solidBox.Rotation = orientBox;
manager.Primitives.Add(solidBox);
manager.Render;


Draw a Solid Cylinder Primitive and set properties

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
originCylinder = root.ConversionUtility.NewPositionOnEarth();
originCylinder.AssignGeodetic(0, 7, 100);

orientCylinder = root.ConversionUtility.NewOrientation();
orientCylinder.AssignAzEl(0,0,'eAzElAboutBoresightRotate');

cylinder = manager.Initializers.CylinderTriangulator.CreateSimple(200,100);
solidCylinder = manager.Initializers.SolidPrimitive.Initialize();
solidCylinder.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed');
solidCylinder.Position = originCylinder.QueryCartesianArray;
solidCylinder.SetWithResult(cylinder);
solidCylinder.Color = 65280;
solidCylinder.OutlineColor = 16711680;
solidCylinder.OutlineWidth = 3;
solidCylinder.Translucency = .75;
solidCylinder.Rotation = orientCylinder;
manager.Primitives.Add(solidCylinder);
manager.Render;


Draw a Solid Ellipsoid Primitive and set properties

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
manager = scenario.SceneManager;
originEllipsoid = root.ConversionUtility.NewPositionOnEarth();
originEllipsoid.AssignGeodetic(0, 5, 100);

orientEllipsoid = root.ConversionUtility.NewOrientation();
orientEllipsoid.AssignAzEl(0,0,'eAzElAboutBoresightRotate');

radii = {200; 100; 100};
ellipsoid = manager.Initializers.EllipsoidTriangulator.ComputeSimple(radii);
solidEllipsoid = manager.Initializers.SolidPrimitive.Initialize();
solidEllipsoid.ReferenceFrame = root.CentralBodies.Earth.Vgt.Systems.Item('Fixed');%vgtSat.Systems.Item('Body');%
solidEllipsoid.Position = originEllipsoid.QueryCartesianArray;
solidEllipsoid.SetWithResult(ellipsoid);
solidEllipsoid.Color = 16777215;
solidEllipsoid.OutlineColor = 15863551;
solidEllipsoid.Translucency = .75;
solidEllipsoid.Rotation = orientEllipsoid;
manager.Primitives.Add(solidEllipsoid);
manager.Render;


GreatArcInterpolator Primitives

[MATLAB] Copy Code

% IAgScenario scenario: Scenario object
% Create a array of LLA values and interoplate them over the specified
% central body
positionArray = {35.017; -118.540; 0; 44.570; -96.474; 0; 31.101; -82.619; 0};
manager = scenario.SceneManager;
% Interpolate points over great arc
interpolator = manager.Initializers.GreatArcInterpolator.InitializeWithCentralBody('Earth');
interpolator.Granularity = .1;
result = interpolator.Interpolate(positionArray);


Create a Data Element Scalar

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
calcFactory = vgtSat.CalcScalars.Factory;
trueAnom = calcFactory.Create('TrueAnomaly','','eCrdnCalcScalarTypeDataElement');
trueAnom.SetWithGroup('Classical Elements','ICRF','True Anomaly');


Create a Function XY Scalar

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnCalcScalar displScalar: calc scalar component
% IAgCrdnCalcScalar trueAnom: calc scalar component
calcFactory = vgtSat.CalcScalars.Factory;
functionScalar = calcFactory.CreateCalcScalarFunction2Var('FunctionXY','Difference between the 2 scalars');

functionScalar.X = displScalar;
functionScalar.Y = trueAnom;
functionScalar.A = 1;
functionScalar.B = 1;
functionScalar.C = 1;
functionScalar.SelectedFunction = 'a*x-b*y';
functionScalar.OutputDimensionInheritance = 'eCrdnDimensionInheritanceFromX';


Create a new Aligned and Constrained Axes

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnVectorDisplacement Sat2EarthCenter: vector component
% IAgCrdnVectorFixedInAxes bodyYSat: vector component
AxesFactory = vgtSat.Axes.Factory;
AlignConstain = AxesFactory.Create('AlignConstrain','Aligned to displacement vector and constrained to Body Y','eCrdnAxesTypeAlignedAndConstrained');
AlignConstain.AlignmentReferenceVector.SetVector(Sat2EarthCenter);
AlignConstain.AlignmentDirection.AssignXYZ(1,0,0);
AlignConstain.ConstraintReferenceVector.SetVector(bodyYSat);
AlignConstain.constraintDirection.AssignXYZ(0,0,1);


Create a new Assembled System

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnPointFixedInSystem fixedPt: point component
% IAgCrdnAxes bodyAxes: axes component
SysFactory = vgtSat.Systems.Factory;
assemSys = SysFactory.Create('FixedPtSystem','System with origin at the new point','eCrdnSystemTypeAssembled');
assemSys.OriginPoint.SetPoint(fixedPt);
assemSys.ReferenceAxes.SetAxes(bodyAxes);


Create a new Attitude Parameter Set

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnAxes bodyAxes: axes component
% IAgCrdnAxes icrfAxes: axes component
paraFactory = vgtSat.ParameterSets.Factory;
paraSet = paraFactory.Create('attitudeICRF','Attitude Set','eCrdnParameterSetTypeAttitude');
paraSet.Axes = bodyAxes;
paraSet.ReferenceAxes = icrfAxes;


Create a new Between Vectors Angle

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnVectorDisplacement Sat2EarthCenter: vector component
% IAgCrdnVectorFixedInAxes bodyYSat: vector component
AngFactory = vgtSat.Angles.Factory;
betwVect = AngFactory.Create('SatEarth2Y','Displacement Vector to Sat Body Y','eCrdnAngleTypeBetweenVectors');
betwVect.FromVector.SetVector(Sat2EarthCenter);
betwVect.ToVector.SetVector(bodyYSat);


Create a new Central Body Intersection Point

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnPoint centerPtSat: point component
PtFactory = vgtSat.Points.Factory;
cbIntersectPt = PtFactory.Create('CBIntersectPt','Point on surface along nadir vector','eCrdnPointTypeCentralBodyIntersect');
cbIntersectPt.CentralBody = 'Earth';
cbIntersectPt.ReferencePoint = centerPtSat;
cbIntersectPt.DirectionVector = vgtSat.Vectors.Item('Nadir(Detic)');
cbIntersectPt.IntersectionSurface = 'eCrdnIntersectionSurfaceAtCentralBodyEllipsoid';


Create a new Collection of Interval List

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnIntervalCollection custom: collection of interval list component
timeCollListFactory = vgtSat.EventIntervalCollections.Factory;
timeColl = timeCollListFactory.CreateEventIntervalCollectionLighting('LightingList','Collection of lighting intervals');
timeColl.UseObjectEclipsingBodies = true;
timeColl.Location = centerPtSat;


Create a new Collection of Interval List

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnIntervalCollection custom: collection of interval list component
timeCollListFactory = vgtSat.EventIntervalCollections.Factory;
timeColl = timeCollListFactory.CreateEventIntervalCollectionLighting('LightingList','Collection of lighting intervals');
timeColl.UseObjectEclipsingBodies = true;
timeColl.Location = centerPtSat;


Create a new Condition

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnCalcScalarDataElement trueAnom: calc scalar component
condFactory = vgtSat.Conditions.Factory;
scaleBound = condFactory.Create('BelowMax','Valid for displacement','eCrdnConditionTypeScalarBounds');
scaleBound.Scalar = trueAnom;
scaleBound.Operation = 'eCrdnConditionThresholdOptionBelowMax';
maxValue = root.ConversionUtility.NewQuantity('Angle', 'deg', 180);
scaleBound.SetMaximum(maxValue); %Maximum


Create a new Cross Product Vector

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnVectorDisplacement Sat2EarthCenter: vector component
% IAgCrdnVectorDisplacement fixedAxesVector: vector component
VectFactory = vgtSat.Vectors.Factory;
lineOfNodesVector = VectFactory.CreateCrossProductVector('CrossProduct',Sat2EarthCenter,fixedAxesVector);


Create a new Custom Script Vector

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
VectFactory = vgtSat.Vectors.Factory;
customScript = VectFactory.Create('Script','Description','eCrdnVectorTypeCustomScript');
% Initialization script if needed
% customScript.InitializationScriptFile = '';
customScript.ScriptFile = 'C:\Program Files\AGI\STK 11\CodeSamples\Extend\PluginScripts\VB_CustomVector.vbs';
if customScript.IsValid == false
    disp('Script component not valid!');
    disp(['Copy vbs file from C:\Program Files\AGI\STK 11\CodeSamples\Extend\PluginScripts\VB_CustomVector.vbs to C:\Users\' getenv('USERNAME') '\Documents\STK 11\Config\Scripting\VectorTool']);
end


Create a new Displacement Vector

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnPoint centerPtSat: point component
% IAgCrdnPoint centerPtEarth: point component
VectFactory = vgtSat.Vectors.Factory;
Sat2EarthCenter = VectFactory.CreateDisplacementVector('Sat2EarthCenter',centerPtSat,centerPtEarth);


Create a new Fixed at Time Instant Point

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnSystemAssembled icrf: system component
PtFactory = vgtSat.Points.Factory;
timeInstantPt = PtFactory.Create('AtTimePt','Point at time instant','eCrdnPointTypeAtTimeInstant');
timeInstantPt.SourcePoint = vgtSat.Points.Item('Center');
timeInstantPt.ReferenceSystem = icrf;
timeInstantPt.ReferenceTimeInstant = vgtSat.Events.Item('AvailabilityStartTime');


Create a new Fixed in Axes

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgStkObjectRoot root: STK Object Model root
AxesFactory = vgtSat.Axes.Factory;
fixed = AxesFactory.Create('Fixed','Axes fixed in Earth Fixed frame using Euler 321 sequence','eCrdnAxesTypeFixed');
earthFixed = root.CentralBodies.Earth.Vgt.Axes.Item('Fixed');
fixed.ReferenceAxes.SetAxes(earthFixed);
fixed.FixedOrientation.AssignEulerAngles('e321',45,35,0);


Create a new Fixed in Axes Vector

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnAxes bodyAxes: axes component
VectFactory = vgtSat.Vectors.Factory;
fixedAxesVector = VectFactory.Create('FixedInAxes','','eCrdnVectorTypeFixedInAxes');
fixedAxesVector.ReferenceAxes.SetAxes(bodyAxes);
fixedAxesVector.Direction.AssignXYZ(0,0,1);


Create a new Fixed in System Point

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
PtFactory = vgtSat.Points.Factory;
fixedPt = PtFactory.Create('FixedPt','Point offest from Center','eCrdnPointTypeFixedInSystem');
fixedPt.FixedPoint.AssignCartesian(.005,0,.005);


Create a new Interval List

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% 2(n) x 1 cell interval: cell of time values
timeListFactory = vgtSat.EventIntervalLists.Factory;
custom = timeListFactory.Create('Custom','','eCrdnEventIntervalListTypeFixed');
custom.SetIntervals(interval);


Create a new Model Attachment Point

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
PtFactory = vgtSat.Points.Factory;
modelPt = PtFactory.Create('ModelPt','Attach point defined in model','eCrdnPointTypeModelAttachment');
modelPt.PointableElementName = 'MainSensor-000000';


Create a new Orbit Parameter Set

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
paraFactory = vgtSat.ParameterSets.Factory;
paraSetOribit = paraFactory.Create('orbitSun','Orbit','eCrdnParameterSetTypeOrbit');
paraSetOribit.OrbitingPoint = vgtSat.Points.Item('Center');
paraSetOribit.CentralBody = 'Sun';
paraSetOribit.UseCentralBodyGravitationalParameter = false;
paraSetOribit.GravitationalParameter = 398600; %km^3/sec^2


Create a new Projection Vector

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnVectorDisplacement Sat2EarthCenter: vector component
VectFactory = vgtSat.Vectors.Factory;
projectionVector = VectFactory.Create('Projection','','eCrdnVectorTypeProjection');
projectionVector.Source.SetVector(Sat2EarthCenter);
horizontalPlane = vgtSat.Planes.Item('LocalHorizontal');
projectionVector.ReferencePlane.SetPlane(horizontalPlane);


Create a new Quadrant Plane

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnSystemAssembled icrf: system component
PlaneFactory = vgtSat.Planes.Factory;
yzQuad = PlaneFactory.Create('YZQuad','YZ Quadrant','eCrdnPlaneTypeQuadrant');
yzQuad.ReferenceSystem.SetSystem(icrf);
yzQuad.Quadrant = 'eCrdnQuadrantYZ';


Create a new Time Array

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnEventArray custom: Time Array Component
timeArrayFactory = vgtSat.EventArrays.Factory;
timeArray = timeArrayFactory.CreateEventArrayStartStopTimes('StartTimes','Start Times of Custom Intervals');
timeArray.ReferenceIntervals = Custom;
timeArray.StartStopOption = 'eCrdnStartStopOptionCountStartOnly';


Create a new Time Array

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnEventArray custom: Time Array Component
timeArrayFactory = vgtSat.EventArrays.Factory;
timeArray = timeArrayFactory.CreateEventArrayStartStopTimes('StartTimes','Start Times of Custom Intervals');
timeArray.ReferenceIntervals = Custom;
timeArray.StartStopOption = 'eCrdnStartStopOptionCountStartOnly';


Create a new Time Instant

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% Change DateFormat dimension to epoch seconds to make the time easier to handle in
% MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
timeInstFactory = vgtSat.Events.Factory;
timeEpoch = timeInstFactory.CreateEventEpoch('FixedTime','Fixed Epoch Time');
timeEpoch.Epoch = 3600;


Create a new Time Interval

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% Change DateFormat dimension to epoch seconds to make the time easier to handle in
% MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
timeIntFactory = vgtSat.EventIntervals.Factory;
timeInterval = timeIntFactory.CreateEventIntervalFixed('TimeInterval','Fixed time interval');
timeInterval.SetInterval(60,120);


Create a new Time Interval List

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnEventIntervalList custom: interval list component
timeListFactory = vgtSat.EventIntervalLists.Factory;
Custom = timeListFactory.Create('Custom','','eCrdnEventIntervalListTypeFixed');
Custom.SetIntervals(interval);


Create a new Vector Magnitude Scalar

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgCrdnVectorDisplacement Sat2EarthCenter: vector component
calcFactory = vgtSat.CalcScalars.Factory;
displScalar = calcFactory.CreateCalcScalarVectorMagnitude('VectorDisplacement','Vector Magnitude of Displacement Vector');
displScalar.InputVector = Sat2EarthCenter;


Get a Scalar component and evaluate at a time

[MATLAB] Copy Code

% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% IAgScenario scenario: Scenario object
deticLatitude = vgtSat.CalcScalars.Item('GroundTrajectory.Detic.LLA.Latitude');
result = deticLatitude.Evaluate(scenario.StartTime);
disp(['The value of detic latitude is ' num2str(result.Value)]);


Get Center point and Inertial System of Earth CB

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model root
centerPtEarth = root.CentralBodies.Earth.Vgt.Points.Item('Center');
icrf = root.CentralBodies.Earth.Vgt.Systems.Item('ICRF');


Get default VGT component on vehicle

[MATLAB] Copy Code

% IAgSatellite satellite: Satellite object
vgtSat = satellite.vgt;
% Get handle to the Center point on the satellite
centerPtSat = vgtSat.Points.Item('Center');
% Get handle to the Body Y Vector
bodyYSat = vgtSat.Vectors.Item('Body.Y');
% Get handle to the Body Axes
bodyAxes = vgtSat.Axes.Item('Body');
icrfAxes = vgtSat.Axes.Item('ICRF');


Get Times From Defined Time Instant and create an cell array

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
% IAgCrdnProvider vgtSat: Vector Geometry Tool Interface
% Change DateFormat dimension to epoch seconds to make the time easier to handle in
% MATLAB
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('EpSec');
satStart= vgtSat.Events.Item('AvailabilityStartTime');
start = satStart.FindOccurrence.Epoch;

satStop= vgtSat.Events.Item('AvailabilityStopTime');
stop = satStop.FindOccurrence.Epoch;
interval = {start 540 600 stop}';   %EpSec


Add Terrain for Analysis

[MATLAB] Copy Code

%IAgStkObjectRoot root: STK Object Model Root
terrain = root.CurrentScenario.Terrain.Item('Earth').TerrainCollection.Add('C:\Program Files\AGI\STK 11\Help\stktraining\samples\SRTM_Skopje.pdtt','ePDTTTerrainFile');
terrain.UseTerrain = true;


Change animation mode

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
scenario = root.CurrentScenario;
root.AnimationOptions = 'eAniOptionStop';
root.Mode = 'eAniXRealtime';
scenario.Animation.AnimStepValue = 1;   % second
scenario.Animation.RefreshDelta = .03;  %second


Change scenario font

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
scenario = root.CurrentScenario;
scenario.VO.MediumFont.Name = 'Arial';
scenario.VO.MediumFont.PtSize = 18;
scenario.VO.MediumFont.Bold = true;
scenario.VO.MediumFont.Italic = false;


Change scenario time period

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.CurrentScenario.SetTimePeriod('30 Jul 2014 16:00:05.000', '31 Jul 2014 16:00:00.000');
root.CurrentScenario.Epoch = '30 Jul 2014 16:00:05.000';


Close an open Scenario

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.CloseScenario;


Close STK

[MATLAB] Copy Code

% AgUiApplication uiApplication: STK Application
uiApplication.Quit;
clear uiApplication root


Create a new Scenario

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.NewScenario('Example_Scenario');


Open a VDF

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.LoadVDF('C:\Program Files\AGI\STK 11\Data\ExampleScenarios\Intro_STK_Space_Systems.vdf','');


Reset the scenario time

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.Rewind;


Set unit preferences for Object Model

[MATLAB] Copy Code

% IAgStkObjectRoot root: STK Object Model Root
root.UnitPreferences.Item('DateFormat').SetCurrentUnit('UTCG');
root.UnitPreferences.Item('Distance').SetCurrentUnit('km');


STK window layout settings

[MATLAB] Copy Code

% COM.STK11_application uiApplication: STK Application
% Loop through the available windows to close the Timeline and maximize the
% 3D window
timelineWindow = '';
for i=0:uiApplication.Windows.Count - 1
    window = uiApplication.Windows.Item(i);
    if (strcmp(window.Caption,'3D Graphics 1 - Earth'))
        window.WindowState = 'eWindowStateMaximized';
    elseif (strcmp(window.Caption,''))
        timelineWindow = window;
    end
end
timelineWindow.Close;


Create instance of AgStkObjectRoot in STK Engine application

[MATLAB] Copy Code

% Before instantiating AgStkObjectRoot an instance of AgSTKXApplication or an STK X control must be created
% This also requires a STKX license to be present
STKXApplication = actxserver('STKX11.application');
rootEngine = actxserver('AgStkObjects11.AgStkObjectRoot');