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属性标记容器
在这里插入图片描述

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初始化三维球并添加到容器中
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. 原文跳转 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/226329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka C++实现消费者

文章目录 1 Kafka 消费者的逻辑2 Kafka 的C API2.1 RdKafka::Conf2.2 RdKafka::Event2.3 RdKafka::EventCb2.4 RdKafka::TopicPartition2.5 RdKafka::RebalanceCb2.6 RdKafka::Message2.7 RdKafka::KafkaConsumer&#xff08;核心&#xff09; 3 Kafka 消费者客户端开发3.1 必要…

springboot监听器模式源码精讲

1.前言 很多时候我们看源码的时候看不下去&#xff0c;其中一个原因是系统往往使用了许多设计模式&#xff0c;如果你不清楚这些设计模式&#xff0c;这无疑增加了你阅读源码的难度。 springboot中就大量使用了设计模式&#xff0c;本文主要介绍其中的一种监听器模式&#xf…

谈谈 .NET8 平台中对 LiteDB 的 CRUD 操作

哪个啥&#xff01;纯 C# 编写的 LiteDB 你还不会操作&#xff1f; LiteDB 简介LiteDB 安装1、同步版 LiteDB2、异步版 LiteDB.Async LiteDB StudioLiteDB CRUD 操作举例1、.net cli 命令创建项目2、项目添加相关 nuget 包3、改造项目结构4、改造项目代码 LiteDB vs SQLite 对比…

泳道图绘制全攻略,一图胜千言,快速上手

泳道图是一种流程图的形式&#xff0c;通过在不同的泳道中展示不同的参与者&#xff0c;帮助我们更好地理解和分析流程。它是一种非常有用的工具&#xff0c;可以帮助我们在团队协作、流程管理和问题解决等方面取得更好的效果。 1. 泳道图的定义 泳道图是一种以泳道为基础的流程…

postgresql从入门到精通 - 第37讲:postgres物理备份和恢复概述

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第37讲&#…

提高工厂能源效率的关键:工厂能耗监测平台

工业做为能源消耗的重要场所&#xff0c;所以节能减排对工业来讲是一个亟需解决的问题。除了对设备进行更新换代外&#xff0c;还需要能源管理消耗监测平台&#xff0c;帮助企业实现节能减排的目标。 工厂能源消费量非常庞大&#xff0c;能源比较难以监测与控制。传统能源的管…

路径规划之RRT算法

系列文章目录 路径规划之Dijkstra算法 路径规划之Best-First Search算法 路径规划之A *算法 路径规划之D *算法 路径规划之PRM算法 路径规划之RRT算法 路径规划之RRT算法 系列文章目录前言一、RRT算法1.起源2.流程3. 优缺点3.1 优点3.2 缺点 4. 实际效果 前言 PRM方法相比于传…

正则表达式(3):入门

正则表达式&#xff08;3&#xff09;&#xff1a;入门 小结 本博文转载自 从这篇文章开始&#xff0c;我们将介绍怎样在Linux中使用”正则表达式”&#xff0c;如果你想要学习怎样在Linux中使用正则表达式&#xff0c;这些文章就是你所需要的。 在认识”正则表达式”之前&am…

图像处理之把模糊的图片变清晰

1.图片如果是有雾化效果的对图像产生影响的,要先进行图形增强,Retinex是基于深度神经网络了,我在之前图形处理的文章一路从神经网络(概率统计)—>积卷神经网络(对区域进行概率统计,对图片进行切割多个识别对象)–>深度积卷神经网络(RetinexNet也是模拟人脑的处理过程,增加…

挑选分支中某一个提交进行合并

复制提交的哈希(sha-1)值 挑选提交 git cherry-pick 复制过来的哈希值 若有冲突&#xff0c;解决冲突&#xff0c;没有冲突&#xff0c;即合并完成

C语言普里姆(Prim)算法实现计算国家建设高铁运输网最低造价的建设方案

背景&#xff1a; 描述&#xff1a;为促进全球更好互联互通&#xff0c;亚投行拟在一带一路沿线国家建设高铁运输网&#xff0c;请查阅相关资料 画出沿线国家首都或某些代表性城市的连通图&#xff0c;为其设计长度最短或造价最低的高铁建设方案。 要求&#xff1a;抽象出的图…

Linux-进程之间的通信

目录 ​编辑 一.什么是进程之间的通信 二.进程之间的通信所访问的数据 三.进程之间的通信是如何做到的 四.基于内存文件级别的通信方式——管道 1.什么是管道 2.管道的建立过程——匿名管道 a.什么是匿名管道 b.匿名管道特点&#xff1a; c.使用匿名管道的…

Peter算法小课堂—贪心算法

课前思考&#xff1a;贪心是什么&#xff1f;贪心如何“贪”&#xff1f; 课前小视频&#xff1a;什么是贪心算法 - 知乎 (zhihu.com) 贪心 贪心是一种寻找最优解问题的常用方法。 贪心一般将求解过程分拆成若干个步骤&#xff0c;自顶向下&#xff0c;解决问题 太戈编程第…

邮政单号查询,邮政快递物流查询,并进行提前签收分析

批量查询邮政快递单号的物流信息&#xff0c;并将提前签收件分析筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;第一次使用的朋友记得先注册&#xff0c…

关于svn如何上传一个完整的项目

注意&#xff1a;请一定要按照该步骤进行操作&#xff0c;请上传新项目时将项目名称进行规范命名 例如原始文件是arrange_v2 将此项目需要注入新的医院 则命名为 arrange_某医院名称_门诊或者医技或者药房_v2 重新命名文件夹名称快捷键 &#xff08;F12&#xff09; 一 &…

【Linux】公网远程访问AMH服务器管理面板

目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装Cpolar4. 配置AMH面板公网地址5. 远程访问AMH面板6. 固定AMH面板公网地址 AMH 是一款基于 Linux 系统的服务器管理面板&#xff0c;它提供了一系列的功能&#xff0c;包括网站管理、FTP 管理、数据库管理、DNS 管理、…

UI自动化测试工具的定义及重要性

UI自动化测试工具在现代软件开发中起着不可或缺的作用。它们能够提高测试效率、减少人为错误、提供全面的测试覆盖&#xff0c;并支持持续集成。通过有效使用UI自动化测试工具&#xff0c;开发团队可以提高软件质量&#xff0c;提供更可靠的应用程序&#xff0c;满足用户的需求…

Jsoup爬取HTTPS页面数据资源,并导入数据库(Java)

一、实现思路 示例页面&#xff1a; 2020年12月中华人民共和国县以上行政区划代码 忽略https请求的SSL证书通过Jsoup获取页面标签遍历行标签&#xff0c;分别获取每个行标签的第二个和第三个列标签将获取到的行政代码和单位名称分别插入sql语句占位符执行sql语句&#xff0c…

掌汇云 | 全场景数据追踪,多维了解用户偏好,提高运营效率

掌汇云拥有黄金“三件套”&#xff1a;掌头条、汇互动、云品牌。群硕借助这些功能套件&#xff0c;面向细分领域如&#xff1a;会展&#xff0c;食品饮料、医药以及工业等&#xff0c;定制综合性信息服务平台&#xff0c;提供资讯、商机、企业人脉、上下游资源、活动等高质量服…

<软考>软件设计师-3程序设计语言基础(总结)

(一) 程序设计语言概述 1 程序设计语言的基本概念 1-1 程序设计语言的目的 程序设计语言是为了书写计算机程序而人为设计的符号语言&#xff0c;用于对计算过程进行描述、组织和推导。 1-2 程序语言分类 低级语言 : 机器语言&#xff08;计算机硬件只能识别0和1的指令序列)&…