STK12.2+Python开发(一):STK和Python开发环境配置

STK和Python连接

这部分介绍使用基于stk api二次开发的环境配置,以及桌面stk和python环境的连接

1.软件和环境

STK版本:12.2
python版本:3.10
开发环境:anaconda+jupyternotebook

2.首次连接环境配置

Python与STK的连接采用Object Model形式(通过COM组件方式),不同于C#连接STK(所有的dll已自动安装在bin目录下),Python所需的连接库文件需要在首次连接STK时创建。
首次连接完成后,最终在Anaconda的安装目录下的comtypes包内生成gen文件夹,具体路径为:[Anaconda3的地址]\Lib\site-packages\comtypes\gen

2.1安装comtypes库

pip install comtypes
# 导入com相关模块
import comtypes
from comtypes.client import CreateObject

2.2首次连接生成python开发所需要的库

# 打开STK桌面软件,创建STK实例
app=CreateObject("STK12.Application")
# 显示STK GUI界面
app.Visible = True

print('app的类型为:',type(app))

#  获取Object Model的根对象:IAgStkObjectRoot
#  此接口为Object Model中的最顶层接口,由此接口可创建场景、地面站、卫星等
root = app.Personality2

print('root的类型为:',type(root))

#  创建Astrogator相关的模块:AgStkGatorLib
# 如果报错[WinError -2147319779] 库没有注册。修改为FEAEF02E-48CE-42AE-B99B-FB9871A69E4B

comtypes.client.GetModule((comtypes.GUID("{090D317C-31A7-4AF7-89CD-25FE18F4017C}") ,1,0))
print('python 首次连接STK完成!')
print('STK Object Model API 的python模块已在comtypes\gen目录下创建!')
print('请关闭已打开的STK!')

如果报错[WinError -2147319779] 库没没有注册的话,就修改为

comtypes.client.GetModule((comtypes.GUID("{FEAEF02E-48CE-42AE-B99B-FB9871A69E4B}") ,1,0))

2.3 安装 agi 库

打开STK的安装路径,一般为XXX:\AGI\STK12\XX
找到X:\XXXXXXXX\AGI\STK 12\bin\AgPythonAPI文件夹,能够看到里面有whl格式的文件。whl文件(WHL file)也称为轮子(wheel),这是用于python分发(distribution)的标准内置包格式(standard built-package format),它包含安装所需的所有文件和元数据(metadata)。
在这里插入图片描述

打开anaconda promot,进入开发环境

activate <你的开发环境名称>

通过pip进行安装,输入whl的绝对路径

pip install "<STK 路径>/bin/AgPythonAPI/agi.stk12-12.4.0-py3-none-any.whl"

安装成功后,能看到提示
在这里插入图片描述
我们能够在环境的site-package中看到需要的依赖文件
在这里插入图片描述

2.4 导入二次开发需要的库

后续进行开发时可以首先将agi提供的库进行导入

from agi.stk12.stkdesktop import STKDesktop
from agi.stk12.stkobjects import *
from agi.stk12.stkutil import *
from agi.stk12.vgt import *
import os
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import sys
names = locals()

2.5 通过access获取STK12桌面应用

stk = STKDesktop.StartApplication(visible=True) #using optional visible argument
root = stk.Root
print(type(root))

等待几秒钟会跳出STK的界面
在这里插入图片描述
选择场景的位置,打开场景(这个场景是之前自己保存的)
在这里插入图片描述

获取当前场景

# Get reference to running STK instance using comtypes
from comtypes.client import GetActiveObject
uiApplication = GetActiveObject('STK12.Application')
uiApplication.Visible = True
root = stk.Personality2
#获取现在的场景
scenario = root.CurrentScenario

打印之后能够看到,成功获得了现在的场景
在这里插入图片描述

也可以通过以下的语句创建新的场景

# IAgStkObjectRoot root: STK Object Model Root
root.NewScenario('场景名称Scenario')
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值