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初始化三维球并添加到容器中
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.rhkb.cn/news/214605.html

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

相关文章

【Azure 架构师学习笔记】- Azure Databricks (2) -集群

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (1) - 环境搭建 前言 在上文中提到了ADB 的其中一个核心就是集群&#xff0c;所以这里专门研究一下ADB 的集群。 ADB 集群 首先了解一下ADB…

golang学习笔记——go流水线示例

range与数组、切片、集合 Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值&#xff0c;在集合中返回 key-value 对。 for 循环的 range 格式可以对 slice、map、数组、字…

SVN的下载的文件/文件夹,绿色图标没出来的解决办法

文章目录 一、适用情况示例二、SVN中文件左下角图标消失的解决步骤1. 图标消失的原因2.打开注册表3.svn相关设置4.重启生效 一、适用情况示例 SVN 下载&#xff1a; 如下图&#xff0c;左侧绿/红色图标没出来&#xff1a; 二、SVN中文件左下角图标消失的解决步骤 1. 图标消失…

html通过CDN引入Vue组件抽出复用

html通过CDN引入Vue组件抽出复用 近期遇到个需求&#xff0c;就是需要在.net MVC的项目中&#xff0c;对已有的项目的首页进行优化&#xff0c;也就是写原生html和js。但是咱是一个写前端的&#xff0c;写html还可以&#xff0c;.net的话&#xff0c;开发也不方便&#xff0c;还…

Redis 五大经典业务问题

一 缓存穿透 缓存穿透是指当请求的数据既不在缓存中也不存在于数据库中时&#xff0c;请求会直接穿透缓存层&#xff0c;到达数据库层。这通常是由于恶意攻击或者程序错误造成的&#xff0c;比如攻击者故意请求不存在的大量数据&#xff0c;导致缓存不命中&#xff0c;所有的请…

Servlet学习笔记

简介 浏览器请求处理流程&#xff1a;浏览器发请求 > 服务器tomcat( > 应用程序 ( > servlet) ) Servlet应用的三大作用域&#xff1a;request&#xff0c;session&#xff0c;application tomcat存放项目的层级结构 注释&#xff1a;servlet原引用包名 javax.serv…

机场信息集成系统系列介绍(2):机场航班报文处理系统

本文介绍机场航班报文处理系统。#机场##sita##AFTN##航空# 一、定义 机场航班报文处理系统是一种基于计算机技术的自动化处理系统&#xff0c;用于接收、解析、处理和传递与航班相关的报文信息。这些报文可能包括航班计划、航班状态更新、旅客信息等&#xff0c;通常来源于航…

(C++)只出现一次的数字I--异或

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://le…

〖大前端 - 基础入门三大核心之JS篇㊿〗- 面向对象之对象的方法、遍历、深浅克隆

说明&#xff1a;该文属于 大前端全栈架构白宝书专栏&#xff0c;目前阶段免费&#xff0c;如需要项目实战或者是体系化资源&#xff0c;文末名片加V&#xff01;作者&#xff1a;哈哥撩编程&#xff0c;十余年工作经验, 从事过全栈研发、产品经理等工作&#xff0c;目前在公司…

【Linux】进程间通信之共享内存/消息队列/信号量

文章目录 一、共享内存的概念及原理二、共享内存相关接口说明1.shmget函数2.ftok函数3.shmat函数4.shmdt函数5.shmctl函数 三、用共享内存实现server&client通信1.shm_server.cc2.shm_client.cc3.comm.hpp4.查看ipc资源及其特征5.共享内存的优缺点6.共享内存的数据结构 四、…

【GIS】JDK版本升级到17后,GeoServer的图层无法通过openLayer预览

JDK版本升级到17后&#xff0c;图层无法通过openLayer预览 1. 错误图示 终端输出的错误 网页端无法显示图层&#xff0c;并且输出错误提示 2.原因猜测 估计可能是由于java17的模块化&#xff0c;Java被分成了多个独立部署和运行的模块&#xff0c;这使得Java应用能够更快…

Wireshark添加自定义协议解析

最终效果如下&#xff1a; 参考文档&#xff1a;https://mika-s.github.io/topics/ 此参考文档中7个例子教我们如何编写lua脚本去识别我们自定义的协议 安装Wireshark https://www.wireshark.org/上下载安装包安装即可。我的安装路径是D:\Install\Wireshark&#xff0c;在W…

kafka学习笔记--基础知识概述

本文内容来自尚硅谷B站公开教学视频&#xff0c;仅做个人总结、学习、复习使用&#xff0c;任何对此文章的引用&#xff0c;应当说明源出处为尚硅谷&#xff0c;不得用于商业用途。 如有侵权、联系速删 视频教程链接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;从入门到调优…

IT新闻资讯系统,使用mysql作为后台数据库,此系统具有显示数据库中的所有信息和删除两大功能。

表的准备&#xff1a; -- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.40-community /*!40101 SET OLD_CHARACTER_SET_CLIENTCHARACTER_SET_CLIENT */; /*!40101 SET OLD_CHARACTER_SET_RESULTSCHAR…

nodejs+vue+微信小程序+python+PHP个性化服装搭配系统APP-计算机毕业设计推荐 android

考虑到实际生活中在个性化服装搭配方面的需要以及对该系统认真的分析,将app权限按管理员和用户这两类涉及用户划分。 (a) 管理员&#xff1b;管理员使用本系统涉到的功能主要有个人中心、用户管理、个性穿搭管理、我的衣橱管理、服饰分类管理、我的收藏管理、系统管理等功能。 …

Unity使用打成图集的Sprite作为模型贴图使用的问题

大家好&#xff0c;我是阿赵。   有时候用Unity引擎做项目的时候&#xff0c;会遇到这样的需求&#xff0c;美术做了一些模型或者特效&#xff0c;然后策划想在游戏运行的时候&#xff0c;读取一些游戏图标放在特效或者模型上面当做贴图使用。   这个需求实现起来很简单&am…

【Hive】启动beeline连接hive报错解决

1、解决报错2、在datagrip上连接hive 1、解决报错 刚开始一直报错&#xff1a;启动不起来 hive-site.xml需要配置hiveserver2相关的 在hive-site.xml文件中添加如下配置信息 <!-- 指定hiveserver2连接的host --> <property><name>hive.server2.thrift.bin…

DIP——边缘提取与分割

1.使用canny算法进行边缘提取 本实验比较简单&#xff0c;基本思路是对原图像进行一个高斯模糊处理&#xff0c;用于去噪&#xff0c;之后转换为灰度图&#xff0c;直接调用cv库中的canny记性边缘提取。若想直接得到彩色边缘&#xff0c;则通过按位与操作&#xff0c;将原始彩色…

【小沐学Python】Python实现TTS文本转语音(speech、pyttsx3、百度AI)

文章目录 1、简介2、Windows语音2.1 简介2.2 安装2.3 代码 3、pyttsx33.1 简介3.2 安装3.3 代码 4、ggts4.1 简介4.2 安装4.3 代码 5、SAPI6、SpeechLib7、百度AI8、百度飞桨结语 1、简介 TTS(Text To Speech) 译为从文本到语音&#xff0c;TTS是人工智能AI的一个模组&#xf…

Redis 持久化 —— 超详细操作演示!

四、Redis 持久化 四、Redis 持久化4.1 持久化基本原理4.2 RDB持久化4.3 AOF持久化4.4 RDB与AOF对比4.5 持久化技术转型 五、Redis 主从集群六、Redis 分布式系统七、Redis 缓存八、Lua脚本详解九、分布式锁 数据库系列文章&#xff1a; 关系型数据库: MySQL —— 基础语法大全…