- UID
- 247915
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2005-4-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
for( brFaTrav.setBrep( *pBrep); !brFaTrav.done(); brFaTrav.next() ) //有几个域(几个分开的域共同组成一个面域)
{
REGION_FACE regionFace; //连通域
AcBrFaceLoopTraverser faLoTrav;
AcBrFace face;
brFaTrav.getFace(face);
for( faLoTrav.setFace(face); !faLoTrav.done(); faLoTrav.next() ) //一个域的 内切边界,与外切边界
{
AcBrLoopEdgeTraverser loEdTrav;
loEdTrav.setLoop(faLoTrav);
REGION_BOUNDARY curves; //连通 域 的边界
if( loEdTrav.setLoop(faLoTrav) == AcBr::eOk )
{
for( ; !loEdTrav.done(); loEdTrav.next() )
{
REGION_CURVE regionCurve;
AcBrEdge edge;
loEdTrav.getEdge(edge);
edge.getCurveType(regionCurve.type);
if(regionCurve.type == AcGe::kLineSeg3d)
{
AcGeCurve3d* pLineSeg;
edge.getCurve(pLineSeg);
regionCurve.pCurve = pLineSeg;
regionCurve.bulge = 0.0;
}
else if(regionCurve.type == AcGe::kCircArc3d)
{
AcGeCurve3d* pArc;
edge.getCurve(pArc);
regionCurve.pCurve = pArc;
CString s; s.Format("%f,%f",((AcGeCircArc3d*)pArc)->endAng(),((AcGeCircArc3d*)pArc)->startAng()); AfxMessageBox(s);
double ang = 0.25 * (((AcGeCircArc3d*)pArc)->endAng() - ((AcGeCircArc3d*)pArc)->startAng()); //???此处我要取出弧的参数,可是起始角,中止角总返回0
regionCurve.bulge = tan(ang);
}
AcBrVertex ptV1, ptV2;
edge.getVertex1( ptV1 );
edge.getVertex2( ptV2 );
ptV1.getPoint(regionCurve.pt1);
ptV2.getPoint(regionCurve.pt2);
curves.append(regionCurve);
}
}
regionFace._inBoundaryArr.append(curves);
//regionFace._outBoundary = curves;
}
if(!regionFace._inBoundaryArr.isEmpty()) //最后进入边界数组的边界为域的外边界
{
regionFace._outBoundary = regionFace._inBoundaryArr[regionFace._inBoundaryArr.length()-1];
regionFace._inBoundaryArr.removeAt(regionFace._inBoundaryArr.length()-1);
}
region.append(regionFace);
}
我的问题就是,我用AcBrEdge::getCurve() 函数取出的AcGeCurve3d,判断其如果是弧的话,就取到它的弧参数(角度等等),可是取到的都是0,而起始点,中止点可以取到,如果是线的话也可以取到参数,就是弧的起始角,中止角取不到....有大侠用过没??这是怎么回事啊 |
|