STK with Python¶
这篇文章会告诉你如何将基于 Spyder / Pycharm 的 Python 与 STK 互联
旨在让你能够 通过Python指令控制STK显示器
我们的步骤是:
- 在 windows 上安装配置 anaconda
- 安装配置 Pycharm (Community Version)
- 在 Pycharm 中配置选定 Anaconda 虚拟环境
- 在Pycharm中,将其与STK进行第一次连接
- 之后就可以“随心所欲”使用Pycharm控制STK了
Windows 配置 Anaconda¶
参考 这篇博客
这一步尤其要注意 环境变量 和 路径设置,建议是直接将 Anaconda 放在C盘根目录下,比较直观
这一部分只需要参考Anaconda的下载与配置,VSCode讲解不用管
Note
笔者在这一步使用conda create -n stk-env
创建了stk-env
这一虚拟环境
Windows 安装配置 Pycharm¶
参考 这篇博客
这里有个小雷,需要注意一下:
Warning
在 “选择编译环境” 这一步中,你之前创建的stk-env
可能找不到,会有红字报错,说“未找到虚拟环境”
原因未知,笔者在这里耗了很长时间都没解决
最后的解决办法是:
直接在Pycharm中创建 一个虚拟环境stk-exp
,这个就可以直接识别出来了,而且亲测后续都没问题
后续我们将全部基于此处创建的stk-exp
进行开发 🚀
Pycharm 选定 Anaconda 虚拟环境¶
如果你的界面 (看右下角显示stk-exp
) 也是这样,那就说明你的此 Python Project 已经关联上 stk-exp
环境了
初始化STK和Python的连接¶
这一步非常非常非常重要!
使用 Spyder¶
使用 Spyder 作为文本编辑器连接
STK和Python交互的逻辑是:
- 第一次必须先用“前置脚本”为环境添加STK“标记”
- 现在在电脑看来,你的Python环境已经和“STK”连接在一起了
- 可以在虚拟环境的文件夹中检查
- 后续就直接连接即可
因此我们在这里介绍如何做“第一次连接” 🚀
在虚拟环境中安装Spyder¶
进入你的虚拟环境并安装Spyder
Bash | |
---|---|
1 2 |
|
现在就安装完成了,后续可以通过在CLI中敲入 spyder
打开界面
Bash | |
---|---|
1 2 |
|
配置第一次连接¶
1)在虚拟环境中安装 comtypes
Bash | |
---|---|
1 |
|
2)此时检查C:\anaconda3\envs\stk-exp\Lib\site-packages\comtypes
只有你看到:C:\anaconda3\envs\stk-exp\Lib\site-packages\comtypes
呈现存在类似的文件系统,才说明安装成功!
3)在 Spyder 中运行“前置脚本”进行连接
将这段代码复制进去(针对版本STK12.2)
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
点击运行即可!
注意,此代码仅运行一次,运行后,将会在上述 comtypes
文件夹下创建 gen
目录,并创建以下模块:
Bash | |
---|---|
1 2 3 4 5 6 7 |
|
运行完成后,将打开的STK程序关闭即可。
小心
这个例子现在不要关,放在后台运行就行,后面会提到用处
4)安装 AGI 库
在STK的安装目录里找到 <your path>:STK\bin\AgPythonAPI
里面的agi.stk12-12.2.0-py3-none-any.whl
比如笔者的在: "C:\Program Files\AGI\STK 12\bin\AgPythonAPI\agi.stk12-12.2.0-py3-none-any.whl"
右击,“用终端打开”,然后输入: pip install agi.stk12-12.2.0-py3-none-any.whl
Bash | |
---|---|
1 2 |
|
至此,你的“第一次连接”就全部完成了 🎉🎉🎉
后续连接¶
这里我们会给出一个例子,在“首次连接”之后
我们想在 Spyder 中写一段代码,它能跟STK交互,让STK生成一条纵向、经过南北极的环
获得STK_PID
还记得我们上面提到 “这个例子现在不要关,放在后台运行就行”吗?
用处就在这里体现!因为我们要看它(一个执行程序)的PID!
如何查看STK_PID
直接在Anaconda的Shell中敲入 tasklist
指令,找到 AgUiApplication.exe
:
记住它的PID,这就是STK_PID
!
Warning
特别注意,PID每次运行的都不相同,这与系统线程有关
每次运行STK的时候,都要取得“当前”的STK_PID
进行连接
将“第一次连接”的例子代码全部删除,复制下面的代码进去,点击运行:
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
如果你得到的结果是:
Bash | |
---|---|
1 |
|
那就说明一切OK!
添加场景
将原来在Spyder中的代码全部删去,用下面这段代码:
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
点击运行即可!
在STK中稍等几十秒,应该就可以看见这样的场景了:
我的工作流
每当我想使用Python控制STK行为时,我会按如下的顺序去做
- 双击STK桌面图标,开启应用
-
在PowerShell中
Bash 1 2
conda activate stk-exp tasklist
找到对应的
AgUiApplication.exe
的STK_PID -
在虚拟环境中开启
Spyder
去做
使用 Pycharm¶
使用 Pycharm 作为文本编辑器连接