乐筑天下

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

急!请教高手

[复制链接]

7

主题

11

帖子

3

银币

初来乍到

Rank: 1

铜币
39
发表于 2004-6-12 13:47:00 | 显示全部楼层 |阅读模式
我编的打断线条的代码,为了测试,再求出交点后,在交点位置生成acdbtext,显示交点序号。命令执行后,如果删除生成的文字,就会出现 scran.cpp!eHadMultipltReader的错误,然后死掉。请教高手到底是啥子问题。
代码如下:
Acad::ErrorStatus TOMbreakEnt(ads_name entSrc,ads_name entDis,int &intersectNum)
{
        AcDbEntity *pEntSrc,*pEntDis;
        AcDbObjectId idSrc,idDis;
        if (entSrc[0]==entDis[0] && entSrc[1]==entDis[1])
                return Acad::eInetUnknownError;
        if (acdbGetObjectId(idDis,entDis)!=Acad::eOk)
                return Acad::eInetUnknownError;
        if (acdbOpenObject(pEntDis,idDis,AcDb::kForRead)!=Acad::eOk)
                return Acad::eInetUnknownError;
        if (!pEntDis->isKindOf(AcDbCurve::desc()) )
                return Acad::eInetUnknownError;
        if (acdbGetObjectId(idSrc,entSrc)!=Acad::eOk)
                return Acad::eInetUnknownError;
        if (acdbOpenObject(pEntSrc,idSrc,AcDb::kForRead)!=Acad::eOk)
                return Acad::eInetUnknownError;
        AcGePoint3dArray aIntersect;
        AcGePoint3d or(0,0,0);
        AcGeVector3d vx(1,0,0),vy(0,1,0);
        AcGePlane pl(or,vx,vy);
        ads_name entLast;
        ads_point p1;
        //pEntDis->intersectWith(pEntSrc,AcDb::kOnBothOperands,pl,aIntersect);
        pEntSrc->intersectWith(pEntDis,AcDb::kOnBothOperands,pl,aIntersect);
        pEntSrc->close();
        pEntDis->close();
        if (aIntersect.length()>intersectNum)
                intersectNum=aIntersect.length();
        AcDbText *pText;
        char text[100];
        if (!aIntersect.isEmpty()){
                for (long i=aIntersect.length()-1;i>=0;i--){
                        p1[X]=(aIntersect[i])[X];
                        p1[Y]=(aIntersect[i])[Y];
                        p1[Z]=(aIntersect[i])[Z];
                        acedCommand(RTSTR,"_break",RTLB, RTENAME, entDis, RTPOINT, p1, RTLE,RTPOINT,p1,RTNONE);
                //测试用代码,如果把文字的插入点改为一样的,比如AcGePoint3d        point1
        //pText=new AcDbText(point1,text,AcDbObjectId::kNull,1,0)就不会出错了
                        sprintf(text,"%d",i);
                        pText=new AcDbText(aIntersect[i],text,AcDbObjectId::kNull,1,0);
                        AddEntity(pText);
                        pText->close();
                }
        }
        return Acad::eOk;
}
回复

使用道具 举报

14

主题

202

帖子

4

银币

后起之秀

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

铜币
258
发表于 2004-6-12 19:57:00 | 显示全部楼层
acedCommand(RTSTR,"_break",RTLB, RTENAME, entDis, RTPOINT, p1, RTLE,RTPOINT,p1,RTNONE);
you delete this line.maybe error caused because of this line.
try.
good luck!
回复

使用道具 举报

7

主题

11

帖子

3

银币

初来乍到

Rank: 1

铜币
39
发表于 2004-6-15 17:25:00 | 显示全部楼层
我解决乐,是有些entdis已经在上层函数中打开了,结果不能调用break打断它
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-2-4 20:42 , Processed in 0.171172 second(s), 58 queries .

© 2020-2025 乐筑天下

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