MATLAB与STK互联12:卫星对象操作(3)—二维显示

当建立好卫星对象时,就需要设置其在STK界面中的显示状态了。STK的场景显示分为二维显示和三维显示,本文首先介绍与卫星对象二维显示相关的设置。
%代码如下
uiap = actxserver(‘STK11.application’);
root = uiap.Personality2;
root.NewScenario(‘exam’);
sc = root.CurrentScenario;
sat = sc.Children.New(18,‘mysat’);
tle = [‘SetState */Satellite/mysat TLE “1 10637U 78012A 04113.40484266 .00000000 00000-0 10000-3 0 9453” “2 10637 40.1939 40.6913 1575431 119.1582 257.4005 1.00053877 48625” TimePeriod "’,sc.StartTime,’" “’,sc.StopTime,’”’];

root.ExecuteCommand(tle);
sat.Propagator.Propagate;

%二维显示对象控制句柄为sat.Graphics
通过sat.Graphics.get查看二维显示对象的属性
MATLAB与STK互联12:卫星对象操作(3)—二维显示
各属性与STK卫星的二维属性设置页相对应,大家可以参照以下。这里只对IsObjectGraphicsVisible进行示例。这个属性对于STK9不适用,用STK9的同学请注意

sat2D = sat.Graphics;
sat2D.IsObjectGraphicsVisible = 0;
执行上述语句后,卫星将不显示在场景中。当卫星数量比较多时,可通过该命令进行自动化设置。其实现代码如下:
%先生成10个卫星
for j = 1:10
satName = [‘sat_’,num2str(j)];
sat.CopyObject(satName);
%因为执行上面代码时,会使mysat为不显示状态,因此重新设置
sat.Graphics.IsObjectGraphicsVisible = 1;
end

以下代码更多的应用于这样的应用场合:加载已建立的STK场景,设置所有卫星不显示。
%获取所有卫星对象的路径
satcollection = root.ExecuteCommand(‘ShowNames * Class Satellite’);
satPaths = satcollection.Item(0);
satPaths = regexp(satPaths,’ ',‘split’);
satPaths(cellfun(@isempty,satPaths)) = [];

%设置所有卫星对象不显示
for k = 1:length(satPaths)
sath = root.GetObjectFromPath(satPaths{k});
sath.Graphics.IsObjectGraphicsVisible = 0;
end

以上代码均经过验证。