### Skyline 开发文档知识点详解
#### 一、TerraExplorer API 概览
TerraExplorer API 是一个功能丰富的接口集合,旨在支持 TerraExplorer、TerraExplorer Pro 及用户自定义应用程序之间的集成与扩展。该 API 基于 COM 协议,并提供了多种语言的支持,包括但不限于 JavaScript、C++、VB 和 .NET。
- **API 接口**:提供了访问外部信息的能力,如数据库查询和基础地理空间数据处理。
- **脚本语言支持**:可以通过 JavaScript 进行操作。
- **非脚本语言控制**:支持 C++、VB、Delphi 或 .NET 等非脚本语言的直接控制。
- **ActiveX 控件**:包含一组 ActiveX 控件,用于在用户自定义的界面上嵌入 3D 视图、信息树和导航图表等元素。
- **Runtime 模块**:使用户自定义应用程序更容易进行分发。
#### 二、ITerraExplorer5 接口详解
ITerraExplorer5 接口提供了对用户界面的高级控制能力,包括获取软件版本信息、设置单位参数以及加载和保存工程文件等功能。
- **属性**:
- `Type`:类型信息。
- `FlyName`:当前飞行动态的名字。
- `DisplayErrorMessages`:是否显示错误消息。
- **方法**:
- `Load`:加载工程文件。
- `SetCPUSavingMode`:设置 CPU 节省模式。
- `GetUserUnits`:获取用户的单位设置。
- `GetTEVersion`:获取 TerraExplorer 的版本信息。
- `LoadEx`:扩展加载功能。
- `Save`:保存工程文件。
- `SaveAs`:另存为新文件。
- `SetParam`:设置参数。
- `GetParam`:获取参数值。
#### 三、Load 方法示例
- **C# 示例**:
```csharp
using System;
using System.Windows.Forms;
using TerraExplorerX;
namespace Load_Test
{
public partial class Form1 : Form
{
private TerraExplorerClass objTerraExplorer;
public Form1()
{
InitializeComponent();
}
private void LoadButton_Click(object sender, EventArgs e)
{
objTerraExplorer = new TerraExplorerClass();
objTerraExplorer.Load(@"E:\Skyline Pro Interface\数据\数据\Default.fly");
}
}
}
```
此段代码展示了如何使用 C# 语言调用 TerraExplorer API 的 Load 方法加载一个名为 "Default.fly" 的工程文件。
- **VBScript 示例**:
```vbscript
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>Load</title>
</head>
<script type="text/vbscript">
Sub Load()
set ITerraExplorer5 = TE.interface("ITerraExplorer5")
ITerraExplorer5.load "E:\Skyline Pro Interface\数据\数据\Default.fly"
end Sub
</script>
<body leftmargin="0" topmargin="0">
<input type="button" value="Load" onClick="Load()" />
<table width="100%" height="100%" border="1">
<tr>
<td><OBJECT ID="TerraExplorerInformationWindow" CLASSID="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" width="200" height="760"></OBJECT></td>
<td><OBJECT ID="TerraExplorer3DWindow" CLASSID="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" width=800 height=760></OBJECT></td>
</tr>
</table>
<OBJECT ID="TE" CLASSID="CLSID:3a4f9191-65a8-11d5-85c1-0001023952c1"></OBJECT>
</body>
</html>
```
上述代码展示了如何在 HTML 页面中使用 VBScript 调用 Load 方法加载工程文件,并在页面上显示相关信息和 3D 视图。
#### 四、Save 方法示例
- **VBScript 示例**:
```vbscript
Sub Save()
Set ITerraExplorer = TE.interface("ITerraExplorer5")
ITerraExplorer.save
End Sub
```
此示例展示了如何使用 VBScript 保存当前的工程文件。需要注意的是,根据文档描述,此方法仅能保存 `.fly` 工程文件,而 `.mpt` 文件则无法保存。
TerraExplorer API 提供了一系列强大的工具和技术支持,可以帮助开发者轻松地集成并扩展 TerraExplorer 的功能。无论是通过脚本语言还是非脚本语言,开发人员都能有效地利用这些 API 来增强其应用程序的功能性和灵活性。