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. 原文跳转 ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Verilog学习 | 用initial语句写出固定的波形

initial beginia 0;ib 1;clk 0;#10ia 1; #20ib 0;#20ia 0; endalways #5 clk ~clk; 或者 initial clk 0;initial beginia 0;#10ia 1; #40ia 0; endinitial beginib 1;#30 ib 0; endalways #5 clk ~clk;

新书推荐——《Copilot和ChatGPT编程体验:挑战24个正则表达式难题》

《Copilot和ChatGPT编程体验&#xff1a;挑战24个正则表达式难题》呈现了两方竞争的格局。一方是专业程序员David Q. Mertz&#xff0c;是网络上最受欢迎的正则表达式教程的作者。另一方则是强大的AI编程工具OpenAI ChatGPT和GitHub Copilot。 比赛规则如下&#xff1a;David编…

基于jsp+servlet的在线考试系统

基于jspservlet的在线考试系统, 演示地址:英语在线考试系统考生测试账号:用户名:stu,密码:stu,管理员测试账号用户名:admin,密码:admin &#xff08;源码里包含数据库文件&#xff09; 本系统分为两个角色&#xff0c;一个时考生&#xff0c;一个是管理员&#xff0c;考生可…

架构师一1.功能权限

1. RBAC 权限模型 系统采用 RBAC 权限模型&#xff0c;全称是 Role-Based Access Control 基于角色的访问控制。 简单来说&#xff0c;每个用户拥有多个角色&#xff0c;每个角色拥有多个菜单&#xff0c;菜单中存在菜单权限、按钮权限。这样&#xff0c;就形成了 “用户<-…

第二十一章网络通信总结博客

网络程序设计基础 局域网与互联网 为了实现两台计算机的通信&#xff0c;必须用一个网络线路连接两台计算机。如下图所示 网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。Internet 网络采用的协议是TCP/IP协议&#xff0c;其全称是Transmissio…

Linux 环境变量 与 命令行参数

什么是环境变量 从结构上来看&#xff0c;环境变量就是操作系统维护的一组&#xff1a;key-value 的键值对。 不知道你是否有一个疑问&#xff1a;为什么我们写代码编译链接 形成的可执行程序要运行起来需要带路径呢&#xff1f;Linux 内置的命令也是可执行程序&#xff0c;为…

html刷题笔记

1 em 12 pt 16 px 100% source元素为audio、video、picture元素指定多个媒体文件 margin是用来隔开元素与元素的间距&#xff1b;padding是用来隔开元素与内容的间隔。 margin用于布局分开元素使元素与元素互不相干&#xff1b;padding用于元素与内容之间的间隔&#xff0c;…

【前端架构】清洁前端架构

探索前端架构&#xff1a;概述与干净的前端架构相关的一些原则&#xff08;SOLID、KISS、DRY、DDD等&#xff09;。 在我之前的一篇帖子中&#xff0c;我谈到了Signals和仍然缺少的内容[1]。现在&#xff0c;我想谈谈一个更通用的主题&#xff0c;即Clean Frontend Architectu…

Mysql综合案例练习<1>

MySql综合案例练习<1> 题目一题目二题目三题目四题目五题目六题目七题目八题目九题目十题目十一题目十二题目十三题目十四题目十五题目十六题目十七题目十八题目十九 题目一 创建数据库test01_library 创建表 books&#xff0c;表结构如下&#xff1a; CREATE DATABASE …

量子纠缠通讯:未来通讯技术的革命性突破

量子纠缠通讯:未来通讯技术的革命性突破 引言 随着科学技术的不断发展,量子纠缠通讯已成为当今最热门的研究领域之一。作为一种革新性的通讯技术,量子纠缠通讯有望为我们的信息安全和传输速度带来前所未有的提升。那么,究竟什么是量子纠缠通讯,它的原理又是如何的呢?本…

股市复苏中的明懿金汇:抓住新机遇

2023年对于明懿金汇来说是充满挑战与机遇的一年。面对复杂多变的市场环境&#xff0c;明懿金汇展现了其对市场趋势的敏锐洞察和卓越的策略适应能力。以下是该公司在2023年的主要投资策略和市场适应方式的详细分析。 随着2023年中国股市迎来反弹&#xff0c;明懿金汇迅速调整了…

Linux Docker 安装Nginx

1.21、查看可用的Nginx版本 访问Nginx镜像库地址&#xff1a;https://hub.docker.com/_/nginx 2、拉取指定版本的Nginx镜像 docker pull nginx:latest #安装最新版 docker pull nginx:1.25.3 #安装指定版本的Nginx 3、查看本地镜像 docker images 4、根据镜像创建并运行…

java.lang.UnsupportedOperationException解决方法

问题描述 在实际开发中经常会有类似的这种代码&#xff0c;想要按类的某一个属性对列表中的元素分组。 例如&#xff1a; 有一些学生&#xff0c;然后根绝他们的年龄对他们进行分组。可以写出如下代码。 public class UnsupportedOperationExceptionDemo {DataNoArgsConstru…

关键字volatile作用和用法

目录 一、多线程编程中的volatile关键字 二、嵌入式编程中的volatile关键字 三、 优化编译器优化 四、 指针类型转换 一个定义为volatile的变量是说这变量可能会被意想不到地改变&#xff0c;这样&#xff0c;编译器就不会去假设这个变量的值了。 精确地说就是&#xff0c;…

【Docker】Swarm的ingress网络

Docker Swarm Ingress网络是Docker集群中的一种网络模式&#xff0c;它允许在Swarm集群中运行的服务通过一个公共的入口点进行访问。Ingress网络将外部流量路由到Swarm集群中的适当服务&#xff0c;并提供负载均衡和服务发现功能。 在Docker Swarm中&#xff0c;Ingress网络使…

RTL编码(2)——模块优化

一、顶层模块的划分 在RTL编码中&#xff0c;我们是以模块为单位进行设计的&#xff0c;模块之间的连接和嵌套关系对于电路结构有着很大的影响。一个好的系统设计中&#xff0c;我们应该使得模块尽量满足以下两个标准&#xff1a; 顶层模块扁平化内部模块层次化 1.1 顶层模块扁…

系列学习前端之第 3 章:一文精通 css

全套学习 HTMLCSSJavaScript 代码和笔记请下载网盘的资料&#xff1a; 链接: 百度网盘 请输入提取码 提取码: 6666 一、CSS基础 1. CSS简介 CSS 的全称为&#xff1a;层叠样式表 ( Cascading Style Sheets ) 。 CSS 也是一种标记语言&#xff0c;用于给 HTML 结构设…

使用arcpy移除遥感影像云层

先讲思路&#xff0c;然后上代码&#xff1a; 去除云层 思路1&#xff1a; 如果同一地理区域的多个图像&#xff0c;其中一些部分有丰富的云&#xff0c;而另一些部分没有云&#xff0c;则可以将它们组合起来&#xff0c;以便无云的部分替代多云的部分。这种方法很简单&…

C++ vector基本操作

目录 一、介绍 二、定义 三、迭代器 四、容量操作 1、size 2、capacity 3、empty 4、resize 5、reserve 总结&#xff08;扩容机制&#xff09; 五、增删查改 1、push_back & pop_back 2、find 3、insert 4、erase 5、swap 6、operator[] 一、介绍 vector…