找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 159|回复: 0

[每日一码] 显示封闭多边形的形心

[复制链接]

1

主题

0

回帖

43

积分

管理员

积分
43
发表于 2024-3-14 20:14:57 | 显示全部楼层 |阅读模式
  1. void cmdDispProperty()
  2. {
  3.     ArxDbgUiPrEntity prEnt(采用T("请选择由 Pline组成的封闭多边形"), NULL);
  4.     prEnt.addAllowedClass(AcDbPolyline::desc());
  5.     if (prEnt.go() != ArxDbgUiPrBase::kOk)
  6.     {
  7.         return;
  8.     }
  9.     AcDbEntity* pEnt1 = NULL;
  10.     acdbOpenObject(pEnt1,prEnt.objectId(),AcDb::kForRead);
  11.     //获得封闭形顶点
  12.     AcDbPolyline *Polygon = NULL ;
  13.     Polygon = AcDbPolyline::cast(pEnt1);
  14.     ASSERT( Polygon != NULL );
  15.     if (Polygon == NULL)
  16.     {
  17.         AfxMessageBox(采用T("线型不为多义线"));
  18.         pEnt1->close();
  19.         return;
  20.     }
  21.     if( !Polygon->isClosed() )
  22.     {
  23.         Polygon->close();
  24.         AfxMessageBox(采用T("外轮廓不封闭"));
  25.         return;
  26.     }
  27.     AcGePoint3d *pPtArray;//记录外轮廓上的点
  28.     int VertNum = (int)Polygon->numVerts() ;
  29.     pPtArray = new AcGePoint3d[VertNum];
  30.     int i;
  31.     for( i = 0; i < VertNum; i ++ )
  32.     {
  33.         AcGePoint3d    Temp;
  34.         Polygon->getPointAt(i,Temp);
  35.         pPtArray<i> = Temp;        
  36.     }
  37.     pEnt1->close();
  38.     AcGePoint3d centroid;
  39.    
  40.     GetCentroidPt(pPtArray, VertNum, centroid);
  41.     TCHAR Text[132];
  42.     采用stprintf(Text, 采用T("%.3f"), centroid.y);   
  43.    
  44.     DelGroupEnt(采用T("neuotrol"));
  45.     DrawElevLine2(centroid,Text,采用T("Neuotrol"));
  46. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2025-1-11 00:45 , Processed in 0.107974 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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