遍历一个面域

Acad::ErrorStatus GetRegion(AcDbRegion* pRegion, AcGePoint3dArray& ptArray)
{
    if (pRegion == NULL)
        return Acad::eNullObjectPointer;
    //构造brep
    AcBrBrep brep;
    AcBr::ErrorStatus es = brep.set(*pRegion);
    //构造brepface迭代器
    AcBrBrepFaceTraverser traverser;
    es = traverser.setBrep(brep);
    for (; !traverser.done(); traverser.next())
    {
        //获取当前face
        AcBrFace face;
        es = traverser.getFace(face);
        //faceloop迭代器
        AcBrFaceLoopTraverser faceTraverser;
        es = faceTraverser.setFace(face);
        for (; !faceTraverser.done(); faceTraverser.next())
        {
            //loopedge
            AcBrLoopEdgeTraverser edgeTraverser;
            es = edgeTraverser.setLoop(faceTraverser);
            for (; !edgeTraverser.done(); edgeTraverser.next())
            {
                //edge
                AcBrEdge edge;
                es = edgeTraverser.getEdge(edge);
                AcBrVertex start;
                es = edge.getVertex1(start);
                AcGePoint3d pt;
                start.getPoint(pt);
                ptArray.append(pt);
                AcGeCurve3d* pCurve = NULL;
                es = edge.getCurve(pCurve);
                AcDbCurve* dbCurve = NULL;
                //acdbAssignGelibCurveToAcDbCurve(*pCurve, dbCurve);
                Acad::ErrorStatus aes = AcDbCurve::createFromAcGeCurve(*pCurve, dbCurve);
                delete pCurve;
                if (dbCurve != NULL)
                {
                    
                }
            }
        }
    }
    return Acad::eOk;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值