乐筑天下

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

【求助】两段多段线,求交点后,程序执行到最后一个括号,就报发生冲突

[复制链接]

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-18 23:02:00 | 显示全部楼层 |阅读模式
哪位大哥能帮我运行以下这段代码,直接复制上去,一个命令就可以了,我这里老是在程序结束完了,释放 交点的时候 ,就报告说发生冲突,哪位大哥帮帮忙啊,运行一下。
AcDbEntity *ent=NULL;
        AcRxClass *cls=AcDbPolyline::desc();
        ads_name entName;
        ads_point pt;
        AcDbPolyline *pl1=NULL;
        AcDbPolyline *pl2=NULL;
        if(acedEntSel(TEXT("select pl1:\n"),entName,pt)==RTNORM){
            AcDbObjectId entId;
           ErrorStatus es=acdbGetObjectId(entId,entName);
           if(es==ErrorStatus::eOk){
               
               es=acdbOpenObject(pl1,entId,AcDb::kForWrite);
               if(es!=ErrorStatus::eOk){
                   return;
               }
           }
        }
        else{
            return;
        }
        if(acedEntSel(TEXT("select pl2:\n"),entName,pt)==RTNORM){
            AcDbObjectId entId;
            ErrorStatus es=acdbGetObjectId(entId,entName);
            if(es==ErrorStatus::eOk){
                es=acdbOpenObject(pl2,entId,AcDb::kForWrite);
                if(es!=ErrorStatus::eOk){
                    pl1->close();
                    return;
                }
            }
        }
        else{
            pl1->close();
            return;
        }
        AcGePoint3dArray ptArrJ;
        ErrorStatus es= pl1->intersectWith(pl2,AcDb::kOnBothOperands,ptArrJ);
        acutPrintf(L"%d",es);
        if(ptArrJ.length()>=2){
            pl1->close();
            pl2->close();
        }

直接复制在一个方法里就行了
回复

使用道具 举报

54

主题

552

帖子

11

银币

中流砥柱

Rank: 25

铜币
767
发表于 2020-2-19 19:43:00 | 显示全部楼层
if(ptArrJ.length()>=2){
            pl1->close();
            pl2->close();
        }
不管是否大于等于2都要释放的啊,你这个不是所有操作都有释放
回复

使用道具 举报

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-21 23:22:00 | 显示全部楼层
主要是在使用AcGePointArray或者AcDbVoidPtrArray的时候会出错
这两个是使用的acarray.h里的东西

                               
登录/注册后可看大图


主要是delete[] mpArray这里就出错。
但是我单独做个写几个点添加进AcGePointArray里,这个Point3dArray释放的时候又不会报错

                               
登录/注册后可看大图


回复

使用道具 举报

1

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2020-2-27 17:04:00 | 显示全部楼层
出现这个问题不是太正常了,你的vs2010用的库是一个版本,对应的cad2013-14,cad2012开发库用的是另一个版本,应该用vs2008来编译。你这个就是用一个库的new,另一个库的delete,当然会出问题。vs和cad匹配就可以了
回复

使用道具 举报

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-18 23:07:00 | 显示全部楼层
我怀疑是这个AcGePoint3dArray 最后释放点的时候会出错,我都不知道该怎么办才好了。
这是报的错

njkootjsvp1.png

njkootjsvp1.png

回复

使用道具 举报

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-19 13:48:00 | 显示全部楼层
我用vs2010+cad2012 在 win10 64位的电脑上就这样,但是我用vs2015+cad2018,同样的代码一点错误都没得,我该怎么办?
回复

使用道具 举报

2

主题

157

帖子

10

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
166
发表于 2020-2-19 19:52:00 | 显示全部楼层
WIN10 64位 CAD2016 未报错。
回复

使用道具 举报

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-19 21:10:00 | 显示全部楼层

我在我旧电脑上cad2018+vs2015开发的,win10 64位也没报错。真是太奇怪了。
回复

使用道具 举报

28

主题

248

帖子

20

银币

后起之秀

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

铜币
349
发表于 2020-2-20 22:23:00 | 显示全部楼层
WIN7X64+VS2010+CAD2016测试无问题。
回复

使用道具 举报

4

主题

28

帖子

5

银币

初来乍到

Rank: 1

铜币
46
发表于 2020-2-21 10:42:00 | 显示全部楼层
谁能用vs2010+cad2012测试一下呢?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 07:01 , Processed in 0.404416 second(s), 75 queries .

© 2020-2025 乐筑天下

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