zoukankan      html  css  js  c++  java
  • ObjectARX2010 学习笔记004:复制多段线点生成新多段线

    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;
    }
    
  • 相关阅读:
    简单理解同步与异步
    Python3.x 安装Scrapy框架
    Python命名规范
    python 02/100例
    raw_input与input的区别
    二叉排序树
    串和广义表
    数据结构整理 第一章
    时间复杂度
    Music
  • 原文地址:https://www.cnblogs.com/swtool/p/3815776.html
Copyright © 2011-2022 走看看