天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 71|回复: 0

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

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
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;
}

 

 

 

 

ObjectARX中三维多段线转二维多段线的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 10:28 , Processed in 0.139068 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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