找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1857|回复: 8

[编程申请]:如何用intersectWith()求AcDb3dPolyline和其它实体的交点

[复制链接]
发表于 2004-10-29 09:38:31 | 显示全部楼层 |阅读模式

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

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

×
用intersectWith()可以求两实体的交点。
AcDbLine、AcDbPolyline、AcDb2dPolyline都可以顺利求得交点。
为何AcDb3dPolyline用intersectWith()却不能得到交点。
苦思冥想,不得其解。。。
好象涉及到子实体的问题了,3维多义线的顶点是子实体?
请小东和各位高手相助呀!!!
我今天会一直看这个帖子,等你们的解答的!!!
谢谢你们!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-2 14:00:11 | 显示全部楼层
求的是三维的点
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-11-18 16:16:44 | 显示全部楼层
pLine->intersectWith(templine,AcDb::kExtendBoth,Array);

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

使用道具 举报

 楼主| 发表于 2004-11-25 11:13:06 | 显示全部楼层
这个函数我经常用了,理解得没有问题。对于一般的实体,除了3dpoly外,都可以顺利求得交点。楼上的,不信你试试,用3dpoly画条线,看能不能跟别的实体求得交点,呵呵。
我的解决办法,就是先遍历三维线的顶点,生成一条多义线,然后与别的实体求交点。只能走这样的曲线救国的道路了。
谢谢大家支持!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-10-19 15:09:17 | 显示全部楼层
我的解决办法,就是先遍历三维线的顶点,生成一条多义线,然后与别的实体求交点。只能走这样的曲线救国的道路了。

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

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2006-10-22 15:15:40 | 显示全部楼层
//是否是面的问题
void rplane(AcDbEntity *pE,AcGePlane &plane)
{
AcDb::Planarity flag;
//ads_printf("\nname=%s",pE->isA()->name());
if(strcmp(pE->isA()->name(),"AcDbLine")==0) {
  AcDbLine *pl=AcDbLine::cast(pE);
  pl->getPlane(plane,flag);
  }
else if(strcmp(pE->isA()->name(),"AcDb2dPolyline")==0) {
  AcDb2dPolyline *pl=AcDb2dPolyline::cast(pE);
  pl->getPlane(plane,flag);
  }
else if(strcmp(pE->isA()->name(),"AcDbPolyline")==0) {
  AcDbPolyline *pl=AcDbPolyline::cast(pE);
  pl->getPlane(plane,flag);
  }
else if(strcmp(pE->isA()->name(),"AcDb3dPolyline")==0) {
  AcDb3dPolyline *pl=AcDb3dPolyline::cast(pE);
  pl->getPlane(plane,flag);
  }
else if(strcmp(pE->isA()->name(),"AcDbText")==0) {
  }
}
//以第一个实体所在的面为基准面计算
AcGePoint3dArray insert1(AcDbObjectId id1,AcDbObjectId id2)
{
AcGePlane plane;
AcGePoint3dArray aa;
AcDbEntity *pE1,*pE2;
acdbOpenObject(pE1,id1,AcDb::kForRead);
if(pE1==NULL) return aa;
acdbOpenObject(pE2,id2,AcDb::kForRead);
if(pE2==NULL) {
  pE1->close();
  return aa;
  }
rplane(pE2,plane);
//if(pE1->intersectWith(pE2,AcDb::kOnBothOperands,aa)!=Acad::eOk) return 0;
if(pE1->intersectWith(pE2,AcDb::kOnBothOperands,plane,aa)!=Acad::eOk) return 0;
pE1->close();
pE2->close();
ads_printf("\nn=%d",aa.length());
return aa;
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-25 20:36:50 | 显示全部楼层
用getProjectedCurve()将封闭的3d多义线投影到另一个平面实体上,然后求交点,求出后将交点返回到原3d多义线上去就可以了。
我把求得的交点按距起点远近排好序后,用getSplitCurves()最后一段曲线应该是最后一个顶点与起点间的曲线,但是结果却是最后一个顶点与坐标原点间的曲线,请问是怎么回事?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 08:55 , Processed in 0.451637 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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