跳转至

STK Advance

Exceptions

  • 引入库: agi.stk12.utilities.exceptions
Exception Description
STKInitializationError STKDesktop and STKEngine unable to init or attach to the STK application
STKInvalidCastError cast an object to an unsupported interface or class type
STKRuntimeError STK method call fails
STKAttributeError set an unrecognized attribute within the STK API

Events

Events can be accessed directly in applicable parent objects.

alt text

  1. 使用 Parent Object 上的 subscribe() 访问事件(“订阅这个事件,timeline一直延展”)
  2. 使用 += / -= 进行事件回调处理
  3. 不再需要事件处理时,使用 Unsubscribe() 方法取消订阅

当Python拥有 "事件订阅者" 时,STK桌面应用程序用户界面可能对用户输入无反应,并且STK应用程序试图回到Python解释器中以通知事件

STK's built-in Python Plugins

API Modules

Interfaces 都存储在 agi.stk12.plugins

获得某个 STK Object Model (of a plugin) 的方式是: 用 IAgStkPluginSite.StkRootObject 获取Object Root

Add properties for Python plugins

如果Interface有某种属性,那Class中显然也得有对应的属性

STK支持两种方式在类中设定属性

1)初始化类成员的属性

Python
1
2
3
class CAgAccessConstraintPlugin(object):
    def __init__(self):
        self.DisplayName = 'PythonRangeExample'

2)@property装饰器

  • 对带有属性名称的方法/函数,使用 @property 装饰器
  • 返回类型必须匹配属性定义的类型

这里给出一种等价写法:

Python
1
2
3
4
5
6
class CAgAccessConstraintPlugin(object):
    # ...

@property
def DisplayName(self) -> str:
    return 'PythonRangeExample'

Hidden parameters for the Object Model

  • root: 是脚本与 STK 对象模型交互的入口点
    • versionString = root.ExecuteCommand('GetStkVersion /') 获取root“句柄”
  • abortMCS: 用于控制任务序列是否中止
    • 控制 MCS(Mission Control Sequence,任务控制序列)的执行行为
    • 当设置为 True 时,STK 会在脚本执行后停止 MCS 序列; 默认值为 False
  • iteration: 用于指定任务的迭代次数或条件

gRPC Features

对于gRPC而言:

  • agi.stk12.stkruntime.STKRuntimeApplication
  • agi.stk12.stkdesktop.STKDesktopApplication
  • agi.stk12.stkengine.STKEngineApplication

这三个Interfaces, 每个都有下面两个方法:

  • SetGrpcOptions
  • NewGrpcCallBatcher

对于 SetGrpcOptions

alt text

TL;DR
  • release batch size:
    • a form of garbage-collection added to reduce the communication over the gRPC server
    • 默认值 (int)12;设置成 1 表示禁用 batch 批处理
  • collection iteration batch size:
    • When iterating a collection using the syntax for object in collection:..., the values are requested in batches rather than as each iteration occurs to reduce the communication over the gRPC server
    • 默认值 (int) 100;设置成 1 表示禁用 batch 批处理
  • disable batching
    • Disables batching of all agi.stk12.utilities.grpcutilities.GrpcCallBatcher objects.
    • 默认值为 False;设置成 true 会在debug时更有用!

对于 NewGrpcCallBatcher

略之,详见官方文档!