天气与日历 切换到窄版

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

ObjectARX :复制多段线点生成新多段线

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
[code]static void swtArxProject5plcopy(void)
    {
        // Add your code for command swtArxProject5.plcopy here
        //定义对象名和点
        ads_name ename;ads_point pt;
        //如果没有选择到实体
        if(acedEntSel(NULL,ename,pt)!=RTNORM)
        {
            return;
        }
        //定义并获取ID
        AcDbObjectId id;
        acdbGetObjectId(id,ename);
        //定义并获取实体
        AcDbEntity *pEnt;
        acdbOpenObject(pEnt,id,AcDb::kForRead);
        //定义点集
        AcGePoint2dArray pts;
        //判断是否是多段线
        if(pEnt->isKindOf(AcDbPolyline::desc()))
        {
            //如果是,定义多段线
            AcDbPolyline *pPline=AcDbPolyline::cast(pEnt);
            //点数量
            int num=pPline->numVerts();
            //在点中循环
            for (int i=0;i<num;i++)
            {
                AcGePoint2d pt;
                //取得每个点
                pPline->getPointAt(i,pt);
                //将点加入到点集
                pts.append(pt);
            }
            pPline->close();
        }
        //关闭实体
        pEnt->close();
        //创建多段线
        CreatePolyline(pts,1.0);
    }
AcDbObjectId CreatePolyline(AcGePoint2dArray pts,double width)
{
        int numVertex =pts.length();
        AcDbPolyline *pPoly=new AcDbPolyline(numVertex);
        for (int i=0;i<numVertex;i++)
        {
                pPoly->addVertexAt(i,pts.at(i),0,width,width);
        }
        AcDbObjectId polyId;
        pPoly->setColorIndex(1);
        polyId=PostToModelSpace(pPoly);
        pPoly->close();
        return polyId;
}[/code]

 

 

 

 

ObjectARX :复制多段线点生成新多段线
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-1 09:30 , Processed in 0.133207 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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