建立场景,判断是否有已存在场景,建立连接并储存
tic
try
progID = 'STK11.application';%stk版本号
con = actxGetRunningServer(progID);%返回服务器的默认接口的句柄,创建进程内服务器
checkempty = root.Children.Count;%连接端口号是否建立
root = con.Personality2;%抓取STK应用程序根目录上的句柄,后续所有操作源头
if checkempty == 0 %当前不存在场景
con.Visible = 1;%不显示stk场景状态
root.NewScenario('bigstar');%建立场景 root.Children.New('eScenario','DIY_Matlab')
%场景第一次保存,第二次为root.Save(),加载场景为root.LoadScenario(‘D:\STK_Job\Try3\bigstar.sc’)
root.SaveScenarioAs('D:\STK_Job\Try3');%制定存储文件位置
bs = root.CurrentScenario;%当前场景设置为句柄
else%存在场景
rtn = questdlg({'是否关闭现有场景?',' ','(WARNING: 选择“Yes”需首先自行保存场景)'});
if ~strcmp(rtn,'Yes')
return
else
root.CurrentScenario.Unload%卸载存在的场景
uiapp.visible = 1;
root.NewScenario('bigstar');
bs = root.CurrentScenario;
end
end
end
toc
设置场景参数
bs.SetTimePeriod('1 Mar 2021 04:00:00.000','1 Apr 2021 04:00:00.000');%时间
root.ExecuteCommand('Animate * Reset');%重置场景命令,help演示文档得出 bs.Unload;删除当前场景
%设置场景中的单位
root.UnitPreferences.SetCurrentUnit('Distance','km');
root.UnitPreferences.SetCurrentUnit('Latitude','deg');
root.UnitPreferences.SetCurrentUnit('Longitude','deg');
root.ExecuteCommand('Window3D * Maximize');%最大化3D图窗
设置测控站
facility = bs.Children.New('eFacility','ck2021');
facility.Position.AssignGeodetic(30,120,0);%经纬度高程
建立设置卫星
satellite1 = bs.Children.New('eSatellite','wei1');
satellite1.SetPropagatorType('ePropagatorJ2Perturbation');
keplerian = satellite1.Propagator.InitialState.Representation.ConvertTo('eOrbitStateClassical');%经典轨道六参数
keplerian.SizeShapeType = 'eSizeShapeAltitude'; % 调节轨道参数类型为远,近地点型
%wei2 = wei1.CopyObject(‘my_newsat’);复制卫星1并命名
%设置卫星参数
keplerian.SizeShape.PerigeeAltitude = 35788.1; % km 近地点
keplerian.SizeShape.ApogeeAltitude = 35788.1; % km 远地点
keplerian.Orientation.Inclination = 60; % deg 轨道倾角
keplerian.Orientation.ArgOfPerigee = 0; % deg 近地点角
keplerian.Orientation.AscNode.Value = 245; % deg RAAN升交点赤经
keplerian.Location.Value = 180; % deg
%wei.get查看卫星参数
学习渠道
- “拜火先知”博客
- stk官方程序学习,链接:个人整理