找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: 李四

[求助] 两条曲线,如果能构成封闭区域,如何求他们的交,差,并

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-30 18:29:18 | 显示全部楼层
最初由 hothua 发布
[B]ARX带的一些求交的几何运算函数对搞设计的可能比较适合,数据量不会很大,对于GIS\,地图来说,那些求交的方法写的程序我想没有人能够有耐心等待程序执行完成
对于GIS,将矢量数据栅格化,找出可能相关的曲线,再用矢量算?.. [/B]


我们现在用的ARX是FOR ACAD的。

ADESK其他在ACAD平台下面的如Autodesk MAP 、ADT、MDT、INVENTOR、LAND、CIVIL、ONSITE.....都有自己的ARX库的,这些专业平台的ARX库,对各个专业提供了更多的支持,比如你说的MAP下的GIS方面的处理。本空间下载中心也提供了ObjectARX for MAP,没有用过,不过我想里面肯定有更多关于专业GIS方面的处理。

我们在ACAD(包括MAP。。等)下面开发,能利用的东西,还是去找ADESK要,这样自己方便,不容易出错。只有ADESK没有提供的,自己在找图形学算法(当然这肯定不多)。

ARX 各个库提供的是底层的ARX 图形方法,在高层面上的具体执行起来,肯定和每个人不同的理解,包括程序算法方面的设计有关。有算法效率高的,肯定也有算法效率低的,这个就和ARX无关了。

实现过虑需要处理的实体,包括组织他们数据结构,为了更方便,是必要的,晓东工具箱里面的消除重线,20万条曲线,只要2秒就处理完毕。很多看过的软件,快的也得5分钟。就是先做了过虑、排序等后,显著提高的,时间复杂度降了一个数量级。实体越多,越显著。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-30 18:37:24 | 显示全部楼层
谢谢你的详细介绍,让我的学了不少东西,剑招是死的,剑法是活,具体如何应用,全凭各人的修为,知道的愈多,便可兴之所致,见招撤招
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-30 18:42:55 | 显示全部楼层
最初由 hothua 发布
[B]谢谢你的详细介绍,让我的学了不少东西,剑招是死的,剑法是活,具体如何应用,全凭各人的修为,知道的愈多,便可兴之所致,见招撤招 [/B]


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

使用道具 举报

发表于 2002-11-30 19:19:28 | 显示全部楼层
~sigh~,我早将这个叶子加到了收藏夹,前段时间就是上不来,而刚好我在作ARX的活,想找点参考都没得办法,后来有几个人(包括我),在明经问XD的CAD这么上不去,版主陈告诉了我的连接地址后才上来.要不你以后改变了连接方法,给每个会员发个Email也好.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-30 20:06:29 | 显示全部楼层
最初由 夜语 发布
[B]XD,受益非浅,以后还要多向你请教。 [/B]


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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-30 21:26:33 | 显示全部楼层
最初由 hothua 发布
[B]~sigh~,我早将这个叶子加到了收藏夹,前段时间就是上不来,而刚好我在作ARX的活,想找点参考都没得办法,后来有几个人(包括我),在明经问XD的CAD这么上不去,版主陈告诉了我的连接地址后才上来.要不你以后改变了连接方法,?.. [/B]


有三个域名: 要牢记在心

1、 www.xdcad.net

2、 www.xdcad.net

3、 xdsoft.126.com

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

使用道具 举报

发表于 2002-12-1 08:10:00 | 显示全部楼层
XD,查了半天资料,还是不清楚AcGeInterval和AcGeCurve2d的关系,或者说AcGeInterval如何转为AcGeCurve2d,“并”后的
AcGeCurve2d如何得到?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-1 14:04:22 | 显示全部楼层
最初由 夜语 发布
[B]XD,查了半天资料,还是不清楚AcGeInterval和AcGeCurve2d的关系,或者说AcGeInterval如何转为AcGeCurve2d,“并”后的
AcGeCurve2d如何得到? [/B]


“并”后,用 getBounds 得到 两个参数值,这两个参数值反过去,就是原来两条几何曲线上的两个参数值啊(两条曲线共有的两个参数值)。

AcGeIntrval 不能转化几何实体,这个类代表一段范围。根据这个范围,我们从原来的几何曲线,得到相应范围的新的几何曲线。

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

使用道具 举报

发表于 2002-12-2 10:17:42 | 显示全部楼层
还是有问题:求交后AcGeInterval的参数值和原曲线AcGeInterval的参数值是一样的。
AcGeCurv1->getinterval->getbounds(0.000,267.34)
AcGeCurv2->getinterval->getbounds(0.000,329.05)
求交后AcGeInterval->getbounds(0.000,267.34)
不知何故?不知这一段能否给出示例代码?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-2 11:23:03 | 显示全部楼层
最初由 夜语 发布
[B]还是有问题:求交后AcGeInterval的参数值和原曲线AcGeInterval的参数值是一样的。
AcGeCurv1->getinterval->getbounds(0.000,267.34)
AcGeCurv2->getinterval->getbounds(0.000,329.05)
求交后AcGeInterval->getb... [/B]


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

使用道具 举报

发表于 2002-12-2 12:14:39 | 显示全部楼层

请指正

void Tintersect()
{
        // TODO: Implement the command
        ads_name en;
        ads_point pp0;
        AcDbObjectId e0Id,e1Id;
        AcGeCurve2d *Gpln0,*Gpln1;
        AcGeInterval Ginv0,Ginv1,Ginv2;
        //=============================
        //选择两条多义线
        if(RTNORM!=acedEntSel("\nSelect 1st Polyline: ",en,pp0))
                return;
        acdbGetObjectId(e0Id,en);
        if(RTNORM!=acedEntSel("\nSelect 2nd Polyline: ",en,pp0))
                return;
        acdbGetObjectId(e1Id,en);
        //DBcurv2GEcurv()使用了XD提供的代码,仅修改了函数名
        DBcurv2GEcurv(e0Id,Gpln0);
        DBcurv2GEcurv(e1Id,Gpln1);
        Gpln0->getInterval(Ginv0);
        Gpln1->getInterval(Ginv1);
        Ginv0.intersectWith(Ginv1,Ginv2);
        //到这里就有问题了,以下是测试AcGeInterval参数值的代码.
        CString cs0;
        double bv0,bv1;
        Ginv0.getBounds(bv0,bv1);
        cs0.Format("0:bv0=%f,bv1=%f",bv0,bv1);  AfxMessageBox(cs0);
        Ginv1.getBounds(bv0,bv1);
        cs0.Format("1:bv0=%f,bv1=%f",bv0,bv1);  AfxMessageBox(cs0);
        Ginv2.getBounds(bv0,bv1);
        cs0.Format("2:bv0=%f,bv1=%f",bv0,bv1);  AfxMessageBox(cs0);
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-12-2 12:32:10 | 显示全部楼层

Re: 请指正

最初由 夜语 发布
[B]void Tintersect()
{
        // TODO: Implement the command
        ads_name en;
        ads_point pp0;
        AcDbObjectId e0Id,e1Id;
        AcGeCurve2d *Gpln0,*Gpln1;
        AcGeInterval Ginv0,Ginv1,Ginv2;
        //=====================... [/B]



1、把你测试的两条曲线的截图,贴论坛来吧。
2、intersectWith 测试下返回码是否是kTrue
3、可以先判断下 AcGeInterval::isDisjoint  ,两个范围是否是分离的。
4、是否保证了几何曲线完全模拟了DB曲线?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-12-2 16:01:14 | 显示全部楼层

奇怪现象

不知为何,不管两条多义线是否相交,用isDisjointT判断的结果始终为Adesk::kFalse(相交)?????
DB曲线转为GE曲线应该是正确的,因为用GE转DB的方法画出的曲线和原曲线完全相同。

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

使用道具 举报

发表于 2002-12-4 14:47:30 | 显示全部楼层
晓东,演示的flash不错,不知用什么工具做的?哪可下载?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 10:22 , Processed in 0.438600 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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