找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1155|回复: 3

[求助]:getLoopAt的使用

[复制链接]
发表于 2005-1-11 23:15:21 | 显示全部楼层 |阅读模式

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

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

×
1 Acad::ErrorStatus getLoopAt(int loopIndex,Adesk::Int32& loopType, AcGeVoidPointerArray& edgePtrs, AcGeIntArray& edgeTypes) const;

2 Acad::ErrorStatus getLoopAt( int loopIndex, Adesk::Int32& loopType, AcGePoint2dArray& vertices,AcGeDoubleArray& bulges) const;

在acdbhatch中,xd说对于kPolyline用方法数2取得loop,其他用方法1去取得loop。
问题1:用什么方法去判断loop的类型?
问题2:在AcGeVoidPointerArray中用什么方法取得队列中的每一个点?用AcGeVoidPointerArray.at(int index)吗?但是好像总出错?

希望版主和大虾们能指点迷津!!谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-1-11 23:34:55 | 显示全部楼层
不对吧:
1号函数是获取指定索引对应的环,返回:
loopType 为环的类型
edgePtrs 为组成此环的所有边的指针数组(AcGeCurve型)
edgeTypes 为组成此环的每条边的类型数组,与edgePtrs一一对应。

2号函数也获取指定索引对应的环,只不过环用表示多义线的方法表示,即各点的坐标和各点的
bulges值。

两者的区别在于:
1、对环的表示法不同。
2、1号函数可提取几乎任意类型(包括直线段、圆弧、椭圆弧、非均匀有理B样条曲线(NURBS))边组成的环,只不过要获取坐标数据,还需进一步处理。
3、2号函数可直接提取组成环的顶点坐标和凸度(bulges),但只能提取由直线和圆弧组成的环。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-1-12 14:53:51 | 显示全部楼层
能否进一步说明,“1号函数可提取几乎任意类型(包括直线段、圆弧、椭圆弧、非均匀有理B样条曲线(NURBS))边组成的环,只不过要获取坐标数据,还需进一步处理。”我看论坛上有人说,利用acdbregion createFromCurves(const AcDbVoidPtrArray& curveSegments,AcDbVoidPtrArray& regions);去处理,这种方式对吗?如果不对的话,应该怎么处理AcGeVoidPointerArray& edgePtrs, AcGeIntArray& edgeTypes这些数据才能得到这些环对应的坐标和特征?这些使用AcArray类模板的模板类怎么用呢??
能指点指点吗?? 非常感谢你的帮助!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-12 22:38:02 | 显示全部楼层
for(int i=0;i<edgePtrs.length();i++)
{
if(edegeTypes==kLine)//直线段
{
AcGeLineSeg2d *LnSeg=(AcGeLineSeg2d *)edgePtrs;
...
...
}
else if(edgeTypes==kCirArc)//圆弧段
{
AcGeCircArc2d *CirArc=(AcGeCirArc2d *)edgePtrs;
...
...
}
else if(edgeTypes==kEllArc)//椭圆弧段
{
AcGeEllipArc2d *EllArc=(AcGeEllipArc2d *)edgePtrs;
...
...
}
else if(edgeTypes==kSpline)//NURBS曲线段
{
AcGeNurbCurve2d *Spline=(AcGeNurbCurve2d *)edgePtrs;
...
...
}
else//未知类型曲线
continue;
}

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 07:36 , Processed in 0.191676 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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