基于MS进行点云的二次开发已经有一段时日,对已经实现的功能作一个回顾:

1.首先是点云的导入功能,MS CE目前只支持pod格式点云文件,加载速度很快,因为其并没有全部读入点云数据,目前的理解是仅仅读入了点云的头文件,有很好的显示效果,但无法获取实际点云坐标;

解决办法是使用pdal库读入las文件,las再转成pod,当需要处理点云时,根据点云元素ID后台读取las,仅仅测图时则不使用las以保证流畅的点云显示效果:

2.点云导入后需要对其进行管理,因此搭建了一个点云管理列表,记录每个点云的名称、数量、ID、最大最小值。

同时实现选中高亮显示、删除功能,在删除选中某行时,对应的点云也删除。

3.实现基本的测图功能:

包括上述简单绘图功能,鼠标选点,构建线串,动态显示,是否闭合等;

更新视图是对视图内所有的点云元素进行遍历,并显示到点云管理列表中。

4.真正的点云处理功能:

此处也很艰难,PCL和MS SDK无法兼容,我选择了调用外部exe的方法,将待处理点云以及一些参数传到由PCL写好的exe中进行处理。

目前实现的功能都很简单,基础的PCL都能轻松解决,主要是移植到MS中有很多问题。

其中裁剪盒的构建花费了较长时间,最后通过构建线串的方法实现了动态的裁剪盒拉伸,效果如下:

任重道远,C++基础太差了,每一步都很难,坚持不下去就听听野草。

我顺着剥落的高墙走路
风吹来四面是灰土 四方有雾
我感到绝望 我感到枯竭
我这一路上再也没有遇到青年…

5.五月十四更新

昨晚困扰了很久的bug,早上一来就想通了,扫描的SCANBUF应当放在元素类型的判断下,否则会在后续的删除过程中导致ID和实际元素无法完全对应;

今天上午改进了裁剪框的搭建,不再垂直XY轴,而是任意矩形,然后改进裁剪方法,这里又出现了很多问题,还好一一解决了,裁剪框内部点的判断方法为射线法,看有几个交点,奇数则在内部,偶数在外部。但是构成多边形的点的顺序一定要设定好,很重要!!!

下午又是出现了一个让人吐血的bug,在构建多个裁剪框后,发现第二次导入的裁剪后点云始终没有变化,但是把第一次导入的裁剪点云删除就可以正常显示;

原因竟然是第一次导入las转pod,pod在软件中已经运行,导致第二次裁剪导入的时候无法覆盖上一个pod,使得las数据正确,但是导入的pod一直是上一个pod,吐血,看了一下午才反应过来。主要还是代码写的不好,调用exe输出的裁剪后点云都是同名文件,每次处理都会覆盖上一个las文件,但是当MS中打开了pod文件的时候再进行二次裁剪,无法导入新的pod,导致这个问题。真的头疼。后续还要好好修改,如何给每一次裁剪得到的点云不同的文件名。

6.五月二十二更新

昨日又出现了一个很大的bug,las转pcl格式经过处理再转出时,点云竟然不一样了,数量一致,但是变成了一条条线,翻来覆去不知何故,最终发现double格式的点云数据转成pcl格式float,丢失了小数点精度,导致点云出现了误差;下面是对比图。

解决思路一是自己定义一个double类型,但是在后续使用PCL算法时报错,思路二时将点云数据同时减去xyz最大值,使得double转float时不会丢失数据精度,此方法成功。

第二个小问题:当多选点云元素进行处理时,不知道何时清空记录选中点云行数的vector,暂时在取消选择这一子菜单中写了清空,但还是很不方便,需要后续解决。

基于MicroStation CE的点云软件二次开发相关推荐

  1. vb杨辉三角代码编写_「二次开发」——基于VB.NET的NX UG软件二次开发基础

    前几期中为大家介绍了CATIA软件.AutoCAD软件基于VB.NET的二次开发,本期再来为大家介绍一下NX UG软件基于VB.NET的二次开发. NX UG软件版本:NX 12.0.0.27 开发软 ...

  2. 基于VB.NET的NX UG软件二次开发基础

    本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 前几期中为大家介绍了CATIA软件.AutoCAD软件基于VB.NET的二次开发,本期再来为大家介绍一下N ...

  3. c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...

  4. c#获取autocad安装位置_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发. 开发语言同样是基于 .NET框架的C#语言或VB语言. Smart组件是Robotstudio软件 ...

  5. 基于android系统的单词学习软件设计与开发【附项目源码+论文说明】分享

    基于android系统的单词学习软件设计与开发演示 摘要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心的转变.智能手机正在逐步融入我们的生活,并影响和改变着我们的生活.由于现在各种智 ...

  6. pythoncad二次开发视频_revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档...

    二次开发 revit二次开发|bim软件二次开发|revit二次开发教程|Revit二次开发技术文档2019-07-08赞( 0 ) 记录一下CAD二次开发的一些简单实例. 1.helloworld ...

  7. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发

    基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...

  8. 欢迎光临CAX软件二次开发开源社区!

    欢迎光临CAX软件二次开发开源社区! http://uucax.uueasy.com 转载于:https://www.cnblogs.com/uucax/archive/2011/02/20/1959 ...

  9. JEECG企业微云快速二次开发平台-新版本首页展示

    JEECG企业微云快速二次开发平台-新版本首页展示 [首页升级包下载:http://t.cn/8F48L4k]

最新文章

  1. c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题
  2. 跑得比TensorBoard快多了,极简可视化工具Aim发布 | Reddit高热
  3. c语言中dfs用pos做参数,使用DFS解决8-Puzzle
  4. 性能提升2.58倍!阿里最快KV存储引擎揭秘
  5. linux 添加用户_linux ---添加普通用户账号
  6. 使用Testcontainers和PostgreSQL,MySQL或MariaDB的Spring Boot测试
  7. OpenMap教程第2部分–使用MapHandler构建基本地图应用程序–第1部分
  8. java学习(96):线程的睡眠
  9. 一个figure存在多个legend:多行多列图例
  10. 1.Nginx 简介
  11. mysql.exe怎么全屏_监控怎么调为全屏
  12. 数据结构用c语言描述第二版高等教育出版社,耿国华《数据结构-c语言描述(第2版)》,高等教育出版社...
  13. hadoop2.7.2+hbase1.2.5+storm1.1.0+spark2.1.1环境搭建
  14. 个人财务管理系统mysql_个人财务管理系统功能模块设计
  15. Spring学习笔记(五)--Spring概述
  16. IT项目经理岗位职责
  17. [转帖]从壹开始前后端分离【重要】║最全的部署方案 最丰富的错误分析
  18. 开奖名单公布!百度超级链专属好礼有你一份,速戳!
  19. Asp.net Ajax框架教程[教程下载]
  20. 陶瓷充电电池行业研究及十四五规划分析报告

热门文章

  1. 根据正规文法构建状态转换图
  2. 服务器ping值不稳定,服务器网络ping值过高的原因
  3. SAP中由生产版本有误导致的生产报工时提示“错误确定成本核算”问题实例
  4. 初中计算机课堂游戏设计,如何设计初中信息技术课堂作业
  5. 金针探底技术分析(下)
  6. 【OpenCV】马赛克算法
  7. 【CSS3 transition】解决元素高度不固定时,设置transition不生效的问题
  8. SSM毕设项目校园设备巡检管理系统04b46(java+VUE+Mybatis+Maven+Mysql)
  9. 洽谈 5G 时代“音视频”开发前景及学习方向
  10. regulatory domain