ObjectModel_diagram.pdf 文档详细总结
该文档是 AGI 官方STK Object Model(对象模型)完整 UML 类图套件 ,一共 18 页,是 STK 仿真内核的 COM 接口完整定义,对应 MATLAB 中
root = uiapp.Personality2之后全部仿真对象;与前面的 STKX(软件 GUI 层)、VGT(矢量几何计算层)共同构成完整 STK COM 自动化技术栈。STK Object Model 负责场景、各类作战实体、传感器、访问计算、姿态、轨道传播、约束、图形属性,你的午夜之锤项目:Facility 阵地、Aircraft 战机、Satellite 卫星、Sensor 雷达、Propagator 轨道传播器、Access 访问分析全部来源于这套对象模型。
一、总体架构与基础继承体系
1. 根基类 IAgStkObject
所有仿真实体全部继承IAgStkObject (Facility、Aircraft、Satellite、Missile、Sensor 等),是整个对象模型的顶层基接口。
公共成员(全部实体通用):
.Path:对象绝对路径,如/Facility/Natanz_Facility,对应GetObjectFromPath()查找接口;.Children:子对象集合,Facility 下面挂载 Sensor、Satellite 下面挂载 Sensor;.Vgt:VGT 矢量几何工具入口,对接 VGT‑diagram.pdf 的全部计算组件;.AccessConstraints:访问约束管理器(距离、仰角等约束);.Graphics:2D/3D 图形显示属性;- 方法:
GetAccessToObject()生成 Access 访问对象;CopyObject()复制对象;Unload()销毁对象。
2. 集合对象 IAgStkObjectCollection
scenario.Children就是该集合;提供.New()、.Contains()、.Count、.Item(index);- ⚠️集合下标从0 开始,MATLAB 数组从 1 开始,是高频 bug 来源。
3. 通用附属组件
- AccessConstraints(访问约束集合)
增加 / 删除距离、仰角、遮挡约束;雷达传感器最大探测距离就通过该接口配置;STK11 没有RemoveAllConstraints方法,需要循环逐个删除约束。 - Enumerations 枚举集合
实体类型eFacility/eAircraft/eSatellite、传播器类型ePropagatorHPOP、传感器指向模式eSnPtSpinning/eSnPtTargeted、波束模式全部在此定义。 - DataProviders:数据提供器,时序数据输出,与 VGT 协同工作。
- BeginUpdate() / EndUpdate():批量修改接口,继承自基对象;批量修改属性时关闭中间重绘,提升脚本运行速度。
完整三层调用链路回顾:
MATLAB → STKX (
IAgUiApplication) →.Personality2→ ObjectModel 根对象 → 各类仿真实体 →.Vgt→ VGT 几何计算组件。
二、主要模块划分(对应 PDF 分页)
Page1:根对象、Access 约束、DataProviders、基础属性
- 根对象
IAgStkObjectRoot:NewScenario()、Unload()、GetObjectFromPath()、UnitConvert()单位转换; IAgAccess访问对象:ComputeAccess()计算可视,ComputedAccessIntervalTimes得到intervals时间区间集合,就是代码中的雷达‑目标可见窗口;IAgAccessConstraintCollection约束管理。
Page2:姿态系统 Attitude Options
姿态相关全套接口:
SetAttitudeType()设置姿态模式:对地指向、惯性指向、跟随目标等;- 飞行器、卫星共用姿态接口;MUOS、铱星卫星
eAttitudeEarthPointing对地指向就在这部分; - 姿态配置对象、姿态事件、姿态文件导入接口。
Page3:图例说明 UML 标记
R/W‑Property读写属性;R/O‑Property只读属性;Method()成员方法;- 空心三角 = 继承;菱形 = 集合聚合;CoClass = 可实例化 COM 类;Interface = 抽象接口不能直接实例化。
Page4:Vehicle Propagators 飞行器 / 卫星传播器(轨道 / 航迹)
对应你代码中 Satellite 的
.Propagator,非常关键。
- 通用基接口
IAgVePropagator,必须调用QueryInterface()向下强转为具体传播器; - 支持传播器:
ePropagatorTwoBody二体;ePropagatorJ2PerturbationJ2 摄动(铱星 LEO);ePropagatorHPOP高精度数值传播器(MUOS GEO 卫星);ePropagatorSGP4两行 TLE 轨道;
- 成员:
.InitialState轨道初值;AssignClassical()赋值开普勒轨道根数;.Propagate()执行轨道计算。
注意:直接操作基接口
IAgVePropagator看不到InitialState,必须QueryInterface转型,是高频踩坑点。
Page5‑6:Aircraft 对象(飞行器,B‑2、EA‑18G、F‑22)
IAgAircraft:飞机实体对象
- 航点集合 Waypoints,设置时间、经纬度、高度、速度,GreatArc 大圆航迹传播;
- RCS 雷达散射截面配置;
- 2D/3D 图形属性:轨迹线、模型、标签;
.Children可以挂载Sensor传感器;- 姿态、光照、航迹绘制、轨迹尾迹配置。
Page7‑8:Facility 地面设施对象(纳坦兹、福尔道、伊斯法罕阵地)
IAgFacility地面固定阵地:
Position.AssignGeodetic(lat,lon,alt)设置经纬度高程;.Children挂载Sensor雷达传感器;- 2D/3D 图形、地标、标签设置。
Page11‑12:Missile 导弹对象(战斧巡航导弹)
IAgMissile导弹实体:
- 弹道传播器、发射点、落点;RCS;图形属性;挂载传感器。
Page14‑15:Satellite 卫星对象(MUOS‑4、Iridium 铱星)
IAgSatellite卫星对象:
.Propagator轨道传播器;.Attitude姿态;.EclipseBodies地影计算;.Children挂载 Sensor 通信载荷;- 2D/3D 图形:星下点轨迹、地面椭圆、轨道线、光照、地影显示;
- 数据导出接口,支持 CCSDS、STK 星历导出。
Page18:Sensor 传感器对象(雷达、通信载荷,本项目核心)
IAgSensor传感器类图,你的防空雷达、卫星通信波束全部由此实现:
.Pattern天线方向图:eSnSimpleConic / eSnComplexConic / eSnRectangular;.Pointing指向模式:eSnPtSpinning圆周扫描;eSnPtTargeted目标跟踪;搭配IAgSnTargetCollection目标集合,.AddObject()添加跟踪实体句柄;
.AccessConstraints距离 / 仰角约束;.Graphics波束颜色、波束开关显示;.Vgt传感器矢量几何数据入口。
重要:
IAgSnTargetCollection.AddObject()只能传入 COM 对象句柄,不能传路径字符串。
三、三大 COM 组件完整对比(论文可以直接引用)
表格
| 组件库 | 文档来源 | 主要职责 | MATLAB 入口 | 核心对象 |
|---|---|---|---|---|
| STKX | STKX_diagram.pdf | STK 软件 GUI、窗口、3D/2D 视图画布、绘图元素 | uiapp = actxGetRunningServer('STK11.application') |
IAgUiApplication |
| Object Model | ObjectModel_diagram.pdf | 仿真内核:场景、阵地、飞机、卫星、雷达、轨道、访问约束 | root = uiapp.Personality2 |
IAgStkObject及其派生类 |
| VGT(Vector Geometry Tool) | VGT_diagram.pdf | 矢量几何、距离角度计算、Evaluate()、FindTimes()事件检测 |
obj.Vgt(任意 StkObject 的 Vgt 属性) |
IAgVgtCalculationComponent |
四、与午夜之锤仿真项目的映射
表格
| UML 对象接口 | 项目中实体 | 关键用法 |
|---|---|---|
IAgStkObjectRoot |
仿真根对象 | NewScenario,GetObjectFromPath() |
IAgFacility |
纳坦兹、福尔道、伊斯法罕防空阵地 | 设置经纬度,挂载 Sensor 雷达 |
IAgAircraft |
B‑2、EA‑18G、F‑22 战机 | 设置航点、RCS |
IAgSatellite |
MUOS‑4、Iridium 铱星卫星 | HPOP/J2Perturbation 传播器,对地姿态,挂载通信 Sensor |
IAgMissile |
战斧巡航导弹 | 弹道仿真 |
IAgSensor |
S‑300、Bavar‑373 雷达;卫星通信波束 | Spinning 扫描↔Targeted 跟踪切换;波束配置;Access 约束设置 |
IAgSnTargetCollection |
雷达跟踪目标列表 | AddObject()添加 B‑2 目标句柄 |
IAgAccess |
雷达‑目标、卫星‑地面站访问分析 | ComputeAccess(),得到intervals可见区间 |
IAgVePropagator(HPOP/J2) |
卫星轨道传播器 | QueryInterface()转型,设置轨道根数 |
BeginUpdate/EndUpdate |
全部实体通用接口 | 批量修改参数,抑制界面重绘,提升脚本速度 |
五、工程开发关键提示(来自 UML 图与官方定义)
- 继承统一 :Facility/Aircraft/Satellite/Missile/Sensor 全部继承
IAgStkObject,共享.Children、.Vgt、.AccessConstraints、.Graphics接口; - 集合下标从 0 :所有
Collection.Item(index)索引从 0,MATLAB 循环需要做下标转换; - 传播器必须强转 :
Propagator基接口不能直接访问轨道初值,QueryInterface()向下转型是强制步骤; AddObject()接收对象句柄,禁止传入字符串路径;BeginUpdate/EndUpdate成对使用,减少 STKX 层 3D 视图频繁重绘,显著提升大脚本运行效率;- 区分:
intervals(Access 对象输出,连续可见时间段)和FindTimes()(VGT 输出离散事件点,极小 / 极大时刻); - 不要混淆三层组件:GUI 窗口操作交给 STKX;仿真实体建模交给 ObjectModel;时序几何计算交给 VGT。
六、论文写作可用总结片段
Object Model 是 STK 仿真内核的 COM 对象模型,定义了场景、地面设施、飞行器、卫星、导弹、传感器等全部仿真实体的接口规范。所有实体继承基接口
IAgStkObject,提供子对象管理、访问约束、图形属性、VGT 几何计算入口。通过 MATLAB COM 自动化调用 Object Model,可以完全脱离 STK 图形界面的手动操作,程序化完成实体创建、轨道航迹配置、传感器模式切换、访问分析计算,为 "午夜之锤行动" MATLAB‑STK 闭环联合仿真提供底层接口基础。