天气与日历 切换到窄版

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

arx绘制多边形并计算其面积的一个demo

[复制链接]
  • TA的每日心情
    开心
    2024-8-31 15:58
  • 签到天数: 89 天

    [LV.6]常住居民II

    488

    主题

    207

    回帖

    3366

    积分

    管理员

    积分
    3366
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    1. int drawPolyline()
    2. {
    3.         Acad::ErrorStatus es = Acad::eOk;
    4.         AcGePoint3dArray vertexArray;
    5.         int iErrSta = 0, i = 0;
    6.         while (1)
    7.         {
    8.                 //由于是多边形,即最终要封闭,所以就不需要提示用户来封闭它,如果
    9.                 //多边形变成了多义线,只需要这个判断,即加入acedInitGet,即关键字进行判断
    10.                 AcGePoint3d tempPt = AcGePoint3d::kOrigin;
    11.                 if ( 0 == i)
    12.                         iErrSta = acedGetPoint(NULL, _T("/n指定下一点:"), asDblArray(tempPt));
    13.                 else
    14.                         iErrSta = acedGetPoint(asDblArray(vertexArray.at(i-1)),_T("/n指定下一点:"), asDblArray(tempPt));
    15.                 if (RTNORM  == iErrSta)
    16.                         vertexArray.append(tempPt);
    17.                 else
    18.                         break;               
    19.                 if (i>0)
    20.                 {
    21.                         //模拟橡皮筋效果,如果生成数组直线或者圆弧,加入到模型,最后删除效果更好
    22.                         acedGrDraw(asDblArray(vertexArray.at(i-1)),asDblArray(tempPt),256,0);
    23.                 }
    24.                 i ++;
    25.         }
    26.         if (vertexArray.length() < 2)
    27.                 return 1;
    28.         //加入到模型空间中
    29.         AcDbBlockTable* pTable = NULL;
    30.         if (Acad::eOk != acdbHostApplicationServices() ->workingDatabase()->getBlockTable(pTable, AcDb::kForRead))
    31.                 return 2;
    32.         AcDbBlockTableRecord* pBlockTableReocrd;
    33.         if (Acad::eOk != pTable ->getAt(ACDB_MODEL_SPACE, pBlockTableReocrd, AcDb::kForWrite))
    34.         {
    35.                 pTable ->close();
    36.                 return 3;
    37.         }
    38.         pTable ->close();
    39.         AcDbPolyline* pPolyline = new AcDbPolyline(vertexArray.length());
    40.         for (int i = 0; i < vertexArray.length(); i ++)
    41.         {
    42.                 pPolyline ->addVertexAt(i, vertexArray[i].convert2d(AcGePlane::kXYPlane));
    43.         }
    44.         pPolyline ->setClosed(Adesk::kTrue);
    45.         AcDbObjectId polylineId;
    46.         pBlockTableReocrd ->appendAcDbEntity(polylineId, pPolyline);
    47.         //获取多边形的面积
    48.         double dArea = 0.0;
    49.         pPolyline ->getArea(dArea);
    50.         pPolyline ->close();
    51.         pBlockTableReocrd ->close();
    52.         acutPrintf("/n多边形的面积为:%lf",dArea);
    53.         return 0;
    54. }
    复制代码

     

     

     

     

    arx绘制多边形并计算其面积的一个demo
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 09:20 , Processed in 0.074805 second(s), 27 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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