乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 149|回复: 9

[编程交流] C++自定义实体方法实现超大影像AutoCAD秒加载

[复制链接]

9

主题

66

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2020-7-18 10:16:00 | 显示全部楼层 |阅读模式
附件压缩包中是利用C++和自定义实体方法实现的超大影像快速加载软件源代码,非常不完善,仅供大家做开发思路参考。
新版CASS有一个超大影像管理功能,可以实现BigTiff等超大影像在AutoCAD中的加载与显示。除了初次加载由于需要计算金字塔等运行速度较慢,后面再次加载基本上都是秒加载,效率很高。由于类似于勘察设计的行业需要经常处理超大影像,所以这个功能很有用。
这个软件必须在cass环境下运行,因此测绘专业利用这个功能处理完成的图像,到了没有cass软件系统的设计专业人员手里就又打不开了。这有点过分了,你总不能让设计方也购买cass软件吧。类似于这种View的功能,市面上国内外大多数软件都是免费的。和南方公司联系了一下,人家坚持说要钱。
为此,自己尝试着用C++语言,AutoCAD自定义实体方法,实现类似功能。
使用C++编程是很久远的事了,自从有了C#,就没碰过C++了。我的C++代码大家将就看吧。
我只是做了一个尝试,基本框架有了,但是非常不完善,可能是存在内存渗漏的问题吧,经常导致AutoCAD崩溃,还不能正常使用。我发这个帖子,目的是给想了解自定义对象、图像处理等技术的朋友们提供一个参考。
这个功能没有继续完善的原因有以下三点:
(1)我感觉cass这个方式本身就是一条错误的技术路线:不管收费与否,用户总是要安装软件在后台进行支持,这本身就不友好。
(2)AutoCAD支持影像金字塔读取,如果在影像中生成有足够级别的金字塔,AutoCAD处理大影像已经可以做到秒开了,效率已不成问题。
(3)关于AutoCAD不支持BigTiff格式影像的问题,以及AutoCAD加载大尺寸影像效率低下的问题,完全可以开发一个,实现将BigTiff影像裁切为小尺寸常规GeoTiff影像、生成影像金字塔等功能,利用这个工具处理过的影像,就能在AutoCAD中快速加载了。利用这种思路处理过的影像,转到第三方(如设计人员)的AutoCAD中,不需要额外软件支持,直接利用AutoCAD原生功能即可快速打开,解决了(1)中的问题。
压缩包中的C++项目,基于的环境是GDAL开源图像处理软件包、Visualstudio2019、AutoCAD2020。GDAL库所需的dll文件在压缩包中已附带,不需要另行下载了。
最后,如果哪位能将该项目完善一下,还请再发回到论坛。我们从乐筑天下学到很多,得到很多帮助,让我们回馈乐筑天下,让乐筑天下的精神继续传递。







本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

2

主题

185

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
188
发表于 2020-7-20 16:22:00 | 显示全部楼层
曲高和寡
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2020-7-22 14:05:00 | 显示全部楼层
先下载了,后面再学习,现在没有机会做CAD二次开发,无奈!
回复

使用道具 举报

36

主题

330

帖子

19

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
467
发表于 2021-12-12 12:00:00 | 显示全部楼层
顶一下!!!!!!!!
回复

使用道具 举报

16

主题

130

帖子

11

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
193
发表于 2021-12-13 22:53:00 | 显示全部楼层
大佬你好,我也是做测绘的,现在主要用cass3d做图。不知道你用不用这款软件?
回复

使用道具 举报

9

主题

66

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2021-12-14 11:13:00 | 显示全部楼层

抱歉,,,,,,,,
回复

使用道具 举报

9

主题

66

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2021-12-14 11:14:00 | 显示全部楼层
这一按Ctrl-Enter,竟然自动回复了!
我们公司也用,好多套正版CASS软件。公司有些人也在用cass 3d。不过,我没用过,
回复

使用道具 举报

16

主题

130

帖子

11

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
193
发表于 2021-12-14 14:43:00 | 显示全部楼层

哦 这样啊。有个问题不知道你有没有兴趣帮忙解决一下
cass3d给了段二次开发的源码例子,好像是c++的 ,不知道能不能编译成功能函数让lsp调用,如果很麻烦那这段代码能不能添砖加瓦,让他选择我给的没有高程的坐标文件 ,在模型里面把高程返回出来。
之所以需要这样的程序是因为cass3d自带的,只能entsel这样单选多段线提取线上高程,很少麻烦。
这是他们给的源码
void Get3DHeightFromPt()
{根据坐标点获取z值
        ads_point pt = { 0 };
        int err = ads_getpoint(NULL, _T("
根据坐标获取高程:"), pt);
        if (err != RTNORM)
        {
                return;
        }
        resbuf *list = NULL;
        resbuf *result = NULL;
        list = acutBuildList(RTSTR, _T("cass3D_getHeight"), RTPOINT, pt, RTNONE);
        if (list != NULL)
        {
                err = acedInvoke(list, &result);
                ads_relrb(list);
                if (err != RTNORM)
                {//三维窗口未打开或者获取高程失败
                        return;
                }
        }
        double z = 0.0;//根据xy计算出来的模型上的高程
        if (result != NULL)
        {
                if (RTREAL == result->restype)
                {
                        z = result->resval.rreal;
                }
                ads_relrb(result);
        }
}
回复

使用道具 举报

9

主题

66

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2021-12-14 16:32:00 | 显示全部楼层

C++的东西我现在基本上做不了了。差不多20年都没怎么用过C++了
回复

使用道具 举报

16

主题

130

帖子

11

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
193
发表于 2021-12-14 17:51:00 | 显示全部楼层

那太遗憾了。测绘界的一大损失。  不过还是很感谢。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 02:05 , Processed in 0.158247 second(s), 77 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表