使用C#(winform)调用STK并展示其3D/2D控件

devtools/2024/11/13 9:42:34/

最近有个需求要求对STK做二次开发,要用自己写的界面但又要嵌入STK的3D/2D控件展示,后台调用STK引擎做计算。官方文档语焉不详,网上的资料要么太多重复(到处抄来抄去),要么有诸多错漏之处,找了很久,python、C++(qt)、C#相关的资料都找了很多,最后终于用C#的winform技术实现了,写个博客记录一下,我也不敢保证自己百分百正确,权当做个参考,也希望能够帮助到后来者。

本文主要参考了C#对STK11.4二次开发的Hello World_c# usim stk-CSDN博客和Visual Studio 2019 STK11.6 C#(WPF)二次开发_stk11.6与c#互联-CSDN博客。

STK 11.6,vs2022。

首先打开vs新建winform工程,这里注意要选.NET Framework的,不要选.NET Core的,.NET Framework版本我这里选的是4.8。

新建完工程后,首先右键点击项目,修改属性,在其中“生成”下面选择目标平台,确保和所安装的STK一样,64位的选64位,32位的选32位。

然后还是右键点击项目->添加->引用,打开引用管理器

首先选择COM一栏,选中“AGI STK Objects 11”

之后进入浏览选择“AGI.STKX.Interop.dll”和“AGI.STKX.Controls.Interop.dll”。如果这里没有的话可以选择右下角浏览,找到 你的STK安装目录/bin/Primary Interop Assemblies/ 这个目录下面找到相应的文件添加。

之后点击确定,可以看到引用中多了我们刚才所添加的内容以及一些依赖。

之后右键点击其中“AGI.STKX.Interop”,选择属性,将“嵌入互操作类型”改为False。

然后找到工具箱,在其中右键新建选项卡,命名为agi,右键agi这个选项卡,选择“选择项”,在出现的“选择工具箱项”界面中点击“浏览”,在本地找到你之前添加的“AGI.STKX.Controls.Interop.dll”文件,加入,然后点击确定,得到新的控件,其中VOCntrl是3D控件,2DCntrl是2D控件。

到这里,基本上准备工作就做完了,然后就是愉快的拖控件环节了!

将3D控件和2D控件拖到窗口中,再加个按钮。

双击按钮,添加按钮的响应代码

var root = new AgStkObjectRoot();
root.NewScenario("Test");

其中“Test”是新场景的名字,可以起个自己喜欢的。

然后运行程序,点击按钮,就会发现控件内容刷新了,呈现出了想要的3D和2D场景!


http://www.ppmy.cn/devtools/90905.html

相关文章

三、Spring-WebFlux实战案例-流式

目录 一、springboot之间通讯方式 1. 服务端 (Spring Boot) 1.1 添加依赖 1.2 控制器 2. 客户端 (WebClient) 2.1 添加依赖 2.2 客户端代码 3. 运行 二、web与服务之间通讯方式 1、服务端代码 2、客户端代码 3、注意事项 三、移动端与服务端之间通讯方式…

安卓将子模块打aar包,并将其远程依赖打包进去

生成 AAR 包 在Android Studio Terminal 窗口输入以下命令: ./gradlew :monitor:assembleRelease把 monitor 换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件 注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运…

【系统架构设计师】二十四、安全架构设计理论与实践②

目录 三、系统安全体系架构规划框架 3.1 信息系统安全体系规划 3.2 信息系统安全规划框架 3.2.1 信息系统安全规划依托企业信息化战略规划 3.2.2 信息系统安全规划需要围绕技术安全、管理安全、组织安全考虑 3.2.3 信息系统安全规划以信息系统与信息资源的安全保护为核心…

【区块链】控制台的配置、操作及常用命令②

常用命令-账户管理 常用命令-区块信息 在控制台中编译部署智能合约 启动节点 在fisco目录下 bash nodes/127.0.0.1/start_all.sh启动控制台 cd ~/fisco/console && bash start.sh部署合约 deploy HelloWorldtransaction hash: 交易的哈希值 contract address&#x…

Python面试题:结合Python技术,如何使用PyBrain进行神经网络和机器学习

PyBrain(Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library)是一个用于神经网络和机器学习的 Python 库。以下是一些使用 PyBrain 进行神经网络和机器学习的示例: 安装 PyBrain 首先,…

动态规划之——背包DP(进阶篇)

文章目录 概要说明多重背包(朴素算法)模板例题思路code 多重背包(二进制优化)模板例题思路code 多重背包(队列优化)模板例题思路 混合背包模板例题思路code1code2 二维费用背包模板例题思路code 概要说明 本文讲多重背包、混合背包以及二维费用背包&…

2024第五届华数杯数学建模竞赛C题思路+代码

目录 原题背景背景分析 问题一原题思路Step1:数据读取与处理Step2:计算最高评分(Best Score, BS)Step3:统计各城市的最高评分(BS)景点数量 程序读取数据数据预处理 问题二原题思路Step1: 定义评价指标Step2: 收集数据Step3: 标准化…

Linux OS:线程封装 | RAII封装锁 | 随机数运算任务封装

Linux OS:线程封装 | RAII封装锁 | 随机数运算任务封装 一、Linux OS:线程封装1.1 线程私有成员1.2 线程成员函数1)构造函数初始化相关数据2)启动线程接口3)线程等待4)获取线程名 1.3 总体代码 二、RAII封装…