找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1604|回复: 5

[求助] 交点打断

[复制链接]

已领礼包: 38个

财富等级: 招财进宝

发表于 2016-3-10 17:10:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
AppendLine(AcDbCurve *pInsertCurve)
{
        std::list<std::pair<double,AcGePoint3d> > instrectPts;
        if (pInsertCurve==NULL)
                return;

        int nLines=m_curveSegments.length();
        if (nLines<1)
                m_curveSegments.append(pInsertCurve);
        else{       
                int i=0;
                for(i=nLines-1; i>=0; i--)       
               {
                        AcDbCurve *pCurCurve=AcDbCurve::cast((AcRxObject*)m_curveSegments);
                        std::list<std::pair<double,AcGePoint3d> > jds;
                        GetCurveInstrectPts(pInsertCurve,pCurCurve,jds,instrectPts);
                        //对交点排序.
                        jds.sort( );
                        if(jds.size() > 0){
                                AcGePoint3dArray pts;
                                std::list<std::pair<double,AcGePoint3d> >::iterator iter;
                                for(iter=jds.begin();iter!=jds.end();iter++){
                                        std::pair<double,AcGePoint3d> item=*iter;
                                        pts.append(item.second);
                                }
                                BreakCurve(pts,pCurCurve,/*curvePtrArr*/m_curveSegments);
                                if (pCurCurve!=NULL){
                                        m_curveSegments.removeAt(i);
                                        delete pCurCurve;
                                        pCurCurve=NULL;
                                }
                        }
                }

                instrectPts.sort();
                AcGePoint3dArray ptArr;
                std::list<std::pair<double,AcGePoint3d> >::iterator iter;
                for(iter=instrectPts.begin();iter!=instrectPts.end();iter++)
               {
                        std::pair<double,AcGePoint3d> item=*iter;
                        ptArr.append(item.second);
                }
                BreakCurve(ptArr,pInsertCurve,m_curveSegments);
                if (pInsertCurve!=NULL){
                        delete pInsertCurve;
                        pInsertCurve=NULL;
                }
        }
}
交点打断,但是在点排序这里编译不过,求高手指点!

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2016-3-10 17:29:27 | 显示全部楼层
自己定义 compare 函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 38个

财富等级: 招财进宝

 楼主| 发表于 2016-3-10 19:08:22 | 显示全部楼层
多谢,能大概说说吗?我还是不太明白

点评

bool compare (const pair &t1,const pair &t2) { return t1.first < t2.first; } jds.sort(compare);  详情 回复 发表于 2016-3-11 10:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2016-3-11 10:32:28 | 显示全部楼层
llq_78 发表于 2016-3-10 19:08
多谢,能大概说说吗?我还是不太明白

bool compare (const pair<double,AcGePoint3d> &t1,const pair<double,AcGePoint3d>  &t2)
{
return t1.first < t2.first;
}

jds.sort(compare);

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 38个

财富等级: 招财进宝

 楼主| 发表于 2016-3-11 15:53:11 | 显示全部楼层
:)多谢!我试试
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 112个

财富等级: 日进斗金

发表于 2016-10-3 15:03:42 | 显示全部楼层

您好!对于一个AcGePoint3dArray ptarry数组,如何按X从小到大进行排序,当X相等时,按Y从小到大排序?能帮助写一个这样的一个完整吗?
如AcGePoint3d为
(1.0,2.0,0.0)
(5.0,0.0,0.0)
(3.0,1.0,0.0)
(7.0,2.0,0.0)
(5.0,-2.0,0.0)
(3.0,2.0,0.0)
按X升序Y升序后的排序结果为:
(1.0,2.0,0.0)
(3.0,1.0,0.0)
(3.0,2.0,0.0)
(5.0,-2.0,0.0)
(5.0,0.0,0.0)
(7.0,2.0,0.0)
请问如何实现?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-26 07:34 , Processed in 0.289696 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表