找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1139|回复: 11

[求助]:函数“intersectWith”失效!请各位帮我看如何求得如下两条曲线的交点!

[复制链接]
发表于 2004-4-22 09:55:14 | 显示全部楼层 |阅读模式

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

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

×
我用“AcDbEntity”类的成员函数“intersectWith”求两条曲线的交点一直没什么问题,但是对于附件中的这两条简单的曲线却失效!请斑竹及各位帮帮我,看如何求得如下两条曲线的交点!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-4-22 15:57:43 | 显示全部楼层
两条线不在一个面上时,必须指定投影面!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-23 11:10:00 | 显示全部楼层
楼上的兄弟,这一点我当然知道,而且我的附件中的图形不知你检查过了没有,是共面的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2004-4-23 14:49:45 | 显示全部楼层
用下列代码可以计算(已用您所附的图测试)
[php]
void test()
{
ads_name ename;
AcDbObjectId id1,id2;
ads_point p1;
AcDbEntity *pE1,*pE2;
AcGePlane plane;
AcDb::Planarity flag;
if(ads_entsel("\n选择:",ename,p1)!=RTNORM)  return ;
acdbGetObjectId(id1, ename);
if(ads_entsel("\n选择:",ename,p1)!=RTNORM)  return ;
acdbGetObjectId(id2, ename);
AcGePoint3dArray aa;
if(acdbOpenObject(pE1,id1,AcDb::kForRead)!=Acad::eOk) return ;
if(acdbOpenObject(pE2,id2,AcDb::kForRead)!=Acad::eOk){
  pE1->close();
  return ;
  }
pE1->getPlane(plane,flag);//在第一个实体的面上计算
if(pE1->intersectWith(pE2,AcDb::kOnBothOperands,plane,aa)!=Acad::eOk) return ;
pE1->close();
pE2->close();
if(aa.length()<=0) return;
ads_printf("\nx=%lf y=%lf",aa[0].x,aa[0].y);
}
[/php]
在说一句,你的图直线有Z值,但另一条线Z为0
这样不用plane参数是不能返回结果的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-4-23 15:24:38 | 显示全部楼层

Re: [求助]:[求助]:函数“intersectWith”失效!请各位帮我看如何求得如下两条曲线的交点!

最初由 DARCY 发布
[B]我用“AcDbEntity”类的成员函数“intersectWith”求两条曲线的交点一直没什么问题,但是对于附件中的这两条简单的曲线却失效!请斑竹及各位帮帮我,看如何求得如下两条曲线的交点! [/B]


你用下楼上的代码试试,另外以后不要只发图,要把你的代码贴论坛来,大家才好讨论,因为出错的都是因为代码的问题。

代码用应该检查两曲线是否共面,如不共面,用intersectWith的第二个方法,指定投影平面后计算交点。

[field]
virtual Acad::ErrorStatus

intersectWith(

const AcDbEntity* pEnt,

AcDb::Intersect intType,

const AcGePlane& projPlane,

AcGePoint3dArray& points,

int thisGsMarker = 0,

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

使用道具 举报

 楼主| 发表于 2004-4-24 12:28:56 | 显示全部楼层
“ymd”兄,非常感谢!是我自己的错误,我没有发现附件中直线“Z坐标”的问题!最近心态不太好,自己这么简单的错误竟然没发现,程序就是这样,不管你的主观情绪如何:)

对了,斑竹的要求我今后会注意照办。

一点启发:
     通常情况下,我们会习惯对于多参数函数的某些参数使用“缺省值”,但是在稍微特殊一点的情况下(象我的第一贴)就不行了!所以还是要弄清楚每个参数的功能,做到“该省时再省”!就象函数:intersectWith(
const AcDbEntity* pEnt,
AcDb::Intersect intType,
const AcGePlane& projPlane,
AcGePoint3dArray& points,
int thisGsMarker = 0,
int otherGsMarker = 0) const;
中的最后两个参数,在有些情况下(如复杂实体)就要注意输入正确的参数值!
---希望和大家共同进步!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-4-25 10:45:47 | 显示全部楼层
最初由 DARCY 发布
[B]“ymd”兄,非常感谢!是我自己的错误,我没有发现附件中直线“Z坐标”的问题!最近心态不太好,自己这么简单的错误竟然没发现,程序就是这样,不管你的主观情绪如何:)

对了,斑竹的要求我今后会注意照办。

... [/B]



能跟大家说说“那最后两个参数”在什么情况下需要注意什么呢?把你的体会分享给大家吧,谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-5-4 11:24:55 | 显示全部楼层
关于最后的两个参数的问题,还拿我的附件中的图形举例:对于图中的多段线和直线求交,多段线指针->intersectWith(直线指针,intType,projPlane,points, thisGsMarker, 0) ;将“thisGsMarker”分别用“0”(起点)和“300”(终点)代入大家就可以看到效果了:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-7 21:12:17 | 显示全部楼层
最初由 DARCY 发布
[B]关于最后的两个参数的问题,还拿我的附件中的图形举例:对于图中的多段线和直线求交,多段线指针->intersectWith(直线指针,intType,projPlane,points, thisGsMarker, 0) ;将“thisGsMarker”分别用“0”(起点)和“... [/B]


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

使用道具 举报

 楼主| 发表于 2004-5-8 21:59:58 | 显示全部楼层
我认为通过最后的这两个参数可以控制“复杂实体”求得的交点,至于用途当然要更据实际情况来决定采用什么参数了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-24 17:32:39 | 显示全部楼层
怎么vba里用intersectWith方法不能指定投影平面呢?有没有办法用vba求两个不共面的线交点?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 00:34 , Processed in 0.278293 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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