明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1763|回复: 4

intersectWith()函数引起的速度问题?

[复制链接]
发表于 2005-6-6 16:56:00 | 显示全部楼层 |阅读模式
我想求的一条多段线和所有等高线的交点。 首先获取了等高线的所有ID,然后依次打开 利用intersectWith()函数求交点, 由于等高线都是有高程的,而用来交点的多段线没有高程,所以我把这条多段线依次在使用求交函数之前,高程设置了等高线的高程(否则没有交点)。但是执行起来,却特别慢,100多个等高线遍历完需要8秒多。 请问用什么方法可以好一点?谢谢 部分源代码: IdArr为等高线ID号数组 crossptArr为三维点数组AcGePoint3dArray类 pPolyX用来求交点的多段线指针 for(int i=0;i<IdArr.length();i++)
{
Id=IdArr.at(i);

acdbOpenAcDbEntity(pEntity,Id,AcDb::kForRead);
AcDbPolyline *test=AcDbPolyline::cast(pEntity);
AcGePoint3dArray points;
double elev;
elev=test->elevation();
pPolyX->setElevation(elev); //设定在一个高程
pPolyX->intersectWith(test,AcDb::kOnBothOperands,points,NULL,NULL);

if(points.length()!=0) //如果有交点的话 假定只有一个交点
{

for(int i=0;i<points.length();i++)
{
AcGePoint3d pd=points.at(i);
crossptArr.append(pd);
}
}

test->close();
pEntity->close();

}//for
发表于 2005-6-7 10:15:00 | 显示全部楼层
首先不在于等高线的条数,而是单条等高线的段数,也就是说单条Polyline的顶点数,如果顶点数太多,计算自然时间倍儿长。
 楼主| 发表于 2005-6-7 16:00:00 | 显示全部楼层
确实如此,由于等高线为数字化所得,等高线顶点个数很多,


请问版主有什么好的办法可以解决这个问题?
发表于 2005-6-7 16:35:00 | 显示全部楼层
写个程序去掉一些顶点
发表于 2005-9-29 20:12:00 | 显示全部楼层
去掉顶点,那交点是不是不准确呢??
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 04:28 , Processed in 0.150147 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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