• ObjectARX中三维多段线转二维多段线的方法


    Acad::ErrorStatus

    AcDb3dPolylineToAcDb2dPolyline(AcDbObjectId objId, int flag /* =0 */)
    {
     
        Acad::ErrorStatus es;
        AcDbEntity *pEnt = NULL;
        double elev = 0.0;
        es = acdbOpenObject(pEnt, objId, AcDb::kForWrite);
        int i = 0;
        if (pEnt->isKindOf(AcDb3dPolyline::desc()))
        {
            AcDb2dPolyline *pNewline = new AcDb2dPolyline();
            AcDb3dPolyline *pPline = AcDb3dPolyline::cast(pEnt);
            AcDbObjectIterator *pItr = pPline->vertexIterator();
     
            for (pItr->start(); !pItr->done(); pItr->step())
            {
                AcDb3dPolylineVertex *pVertex = NULL;
                AcDbObjectId vId = pItr->objectId();
                acdbOpenObject(pVertex, vId, AcDb::kForRead);
                AcDb::Vertex3dType verType = pVertex->vertexType();
                if (verType != AcDb::k3dControlVertex)
                {
                    i++;
                    AcDb2dVertex *p2dVertex = new AcDb2dVertex(pVertex->position());
                    p2dVertex->setXData(pVertex->xData());
                    pNewline->appendVertex(p2dVertex);
                    p2dVertex->close();
                }
                if (flag == 1)
                {
                    elev += pVertex->position().z;
                }
     
                pVertex->close();
            }
            delete pItr;
            pItr = 0;
            double eleva = elev / i;
     
            pNewline->setElevation(eleva);
            pNewline->setPropertiesFrom(pPline);
            if (pPline->isClosed())
            {
                pNewline->makeClosed();
            }
            pNewline->setXData(pPline->xData());
            m_DbUtil.PostToModelSpace(pNewline);
            pPline->erase();
     
        }
        pEnt->close();
     
        return es;
    }
  • 相关阅读:
    vim常用命令
    Leetcode686.Repeated String Match重复叠加字符串匹配
    Leetcode686.Repeated String Match重复叠加字符串匹配
    (转)Sql server中 如何用sql语句创建视图
    (转)Sql server中 如何用sql语句创建视图
    SQL Sever实验三 视图与数据更新
    SQL Sever实验三 视图与数据更新
    Leetcode653.Two Sum IV
    Leetcode653.Two Sum IV
    Leetcode661.Image Smoother图片平滑器
  • 原文地址:https://www.cnblogs.com/mjgw/p/12452541.html
Copyright © 2020-2023  润新知