天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 59|回复: 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 13:31 , Processed in 0.137589 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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