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;
|
|
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 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');
|
|
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;
objCoverageFOM.SetDefinitionType('eFmCoverageTime');
objCoverageFOM.Definition.SetComputeType('eTotal');
|
|
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 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 = 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
% IAgCrdnPoint centerPtSat: point 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
% IAgCrdnEventIntervalListFixed custom: interval list 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 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 ' 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');
|
|