SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)——环境准备及项目配置

作者:超图研究院技术支持中心-于丁^1^

SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)------环境准备及项目配置

三维场景框选是一种在三维空间中进行选择和操作的功能,它可以让使用者通过鼠标拖动来创建一个矩形框,以选择场景中的一部分或多个对象。这种框选功能在三维场景编辑和操作中非常有用,因为它可以帮助用户快速、准确地选择需要操作的对象,从而进行进一步的编辑、移动、删除等操作。

该功能在GIS行业的各类业务中是有极大作用的,比如:

在城市规划中,规划师可以框选一个街区或建筑物,进行细致的测量和规划,以便更有策略性的调控管理;

在土地资源管理中,管理者可以框选土地的某一部分一个地块或一条河流,进行详细的观察和分析;

在环境监测和保护中,环保工作者可以框选一片森林或一个湖泊,然后对其进行更细致的监测和保护;

在交通规划中,交通工程师可以框选一段道路或一座桥梁,然后对其进行更细致的规划和设计。

但是框选功能在iObject.NET组件中,并不像拖拽、漫游等功能有现成可用的接口,该项目将通过三篇详尽步骤文章,让完全没用过SuperMap iObject.NET的入门级新手,可以从0开始完成自己的业务项目。

《SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)------环境准备及项目配置》

《SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(二)------拖拽框选高亮的实现》

《SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(三)------选择对象实时属性可视化》

本文《SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(一)------环境准备及项目配置》将包括"获取组件+创建工程级框架配置+添加组件至工程+配置组件环境变量+项目添加iObject.NET引用+界面制作并添加三维场景球"这六个部分的详细步骤。

(在最后一篇文章会提供完整源码和示例数据)

一、使用工具及环境

Windows 11 专业版23H2

Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.7.5(以下简称vs)

SuperMap iObject.NET 11i(2023)V11.1.1及以上版本。(以下简称iObject或NET组件)

二、使用数据(仅演示)

三维点、线、面数据集数据各一份

白模模型数据集一份

精模模型数据一份

三、实现详解

1.获取组件

1.1下载SuperMap官网最新版iObject.NET

(当前最新版11i(2023)V11.1.1)

http://support.supermap.com.cn/DownloadCenter/ProductPlatform.aspx

1.2解压下载的组件包

1.3找到组件的Bin_x64目录内为组件内容

2.创建工程及框架配置

2.1创建.NET Framework窗体应用工程

2.2填写项目名称并选用.NET Framework4.0框架

2.3 调整项目编译调试方案为64位

(因为当前最新版iObject.NET组件是64位的)

2.3.1调试模式下拉菜单选择"配置管理器..."
2.3.2活动解决方案平台下拉窗选择"<新建...>"
2.3.3新建x64的解决方案平台

键入或选择新平台选择"x64" ,从此处复制设置选择"空",勾选创建新的项目平台

2.3.4新建x64解决方案平台成功,平台选择"x64"确认
2.3.5快捷调试方案模式里选择刚刚新建的"x64"
2.3.6启动运行调试,窗体启动成功则项目基本调试框架配置成功

3.添加组件至工程

方便项目完成后打包部署至应用客户端

3.1找到项目输出路径

解决方案下------方案名右键------属性------生成------输出路径

3.2项目输出文件夹中创建一个新文件夹"SuperMapiObject.NET"用来存放组件

(该文件夹名称可任意)

3.3将解压出来的组件"Bin_x64"部分完整解压到文件夹中

4.配置组件环境变量

将Bin_x64目录设为电脑系统path环境变量

4.1菜单栏输入"编辑系统环境变量"

4.2将"步骤1.3"中看到的Bin_x64完整路径设置为系统path环境变量

高级------环境变量------系统环境变量里的"Path"------编辑------新建------写入"组件Bin_x64目录"的完整路径

4.3将刚刚创建的环境变量"上移"至第一个确认

5.项目添加iObject.NET引用

5.1解决方案资源管理器下------解决方案------项目------引用右键"添加引用"

5.2浏览------打开组件"Bin_x64"目录位置------选择本次要使用的dll包

SuperMap.Data.dll

SuperMap.Realspace.dll

SuperMap.Realspace.Three3DDesign.dll

SuperMap.UI.Control.dll

5.3确认添加引用

5.4 可在右侧引用树中看到

6.界面制作并添加三维场景球

6.1重命名项目主窗体Form1

6.2命名为自己需要的名字并应用于所有

6.3修改窗体标题为自己需要的

点击窗体------属性面板------Text属性

6.4打开工具箱找到容器

工具箱(左侧选项卡或Ctrl+Alt+X)------容器------panel

6.5使用panle进行页面布局设计

(1)通过通拽到界面设计器上添加容器

(2)通过调整dock规整布局

(3)通过修改name属性标记容器

iObject.NET三维场景拖拽---Panel布局设计

6.6生成窗体启动事件

点窗体空白处------右下角切换至窗体Form的属性------点击"闪电"进入事件------找到Load双击空白处生成窗体启动事件

6.7添加三维场景控件SceneControl

6.7.1主窗体代码中添加组件引用

using SuperMap.Data;

using SuperMap.Realspace;

using SuperMap.Realspace.ThreeDDesigner;

using SuperMap.UI;

6.7.2初始化三维球并添加到容器中
csharp 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using SuperMap.Data;
using SuperMap.Realspace;
using SuperMap.Realspace.ThreeDDesigner;
using SuperMap.UI;

namespace Scene_BoxSelect
{
    public partial class mainForm : Form
    {
        //定义该窗体内通用变量
        SceneControl sceneControl_Main;
        public mainForm()
        {
            InitializeComponent();
        }

        private void mainForm_Load(object sender, EventArgs e)
        {
            //实例化SceneControl三维场景控件
            sceneControl_Main = new SceneControl();
            //控制场景控件在容器内填充满
            sceneControl_Main.Dock = DockStyle.Fill;
            //将三维场景控件添加到界面设计的目标容器中
            panel_Scene.Controls.Add(sceneControl_Main);
        }
    }
}
6.7.3启动调试可见三维球

详细步骤的说明内容较多,文章篇幅有限接下来的教程,请查看下期内容《SuperMap iObject.NET三维场景拖拽框选实现详解及完整源代码(二)------拖拽框选高亮的实现》。

若对本文内容有疑问或讨论,可以向超图研究院支持中心进行咨询。


  1. 原文跳转 ↩︎
相关推荐
向宇it6 小时前
【unity小技巧】unity 什么是反射?反射的作用?反射的使用场景?反射的缺点?常用的反射操作?反射常见示例
开发语言·游戏·unity·c#·游戏引擎
九鼎科技-Leo6 小时前
什么是 WPF 中的依赖属性?有什么作用?
windows·c#·.net·wpf
Heaphaestus,RC7 小时前
【Unity3D】获取 GameObject 的完整层级结构
unity·c#
baivfhpwxf20238 小时前
C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
开发语言·c#
直裾8 小时前
Scala全文单词统计
开发语言·c#·scala
ZwaterZ9 小时前
vue el-table表格点击某行触发事件&&操作栏点击和row-click冲突问题
前端·vue.js·elementui·c#·vue
dot.Net安全矩阵11 小时前
.NET 通过模块和驱动收集本地EDR的工具
windows·安全·web安全·.net·交互
zls36536511 小时前
.NET开源实时应用监控系统:WatchDog
.net
djk888811 小时前
.net将List<实体1>的数据转到List<实体2>
数据结构·list·.net
ZwaterZ11 小时前
el-table-column自动生成序号&&在序号前插入图标
前端·javascript·c#·vue