- UID
- 681698
- 积分
- 394
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2013-7-14
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
- static void Asdkaddvertexaddvertex(void)
- {
- // Add your code for command Asdkaddvertex.addvertex here
- ads_name ss; ads_point pt,pt1;
- if (acedEntSel(_T("\n选择要加点的二维线:"),ss,pt)!=RTNORM)
- {
- return;
- }
- AcDbObjectId id;
- acdbGetObjectId(id,ss);
- AcDbEntity *pEnt;
- acdbOpenObject(pEnt,id,AcDb::kForWrite);
- if (pEnt->isKindOf(AcDb2dPolyline::desc()))
- {
- if (acedGetPoint(pt,_T("\n指定插入点:"),pt1)!=RTNORM)
- {
- return;
- }
- AcDb2dPolyline *pPline = AcDb2dPolyline::cast(pEnt);
- if (pPline->polyType()!=AcDb::k2dSimplePoly)
- {
- AfxMessageBox(_T("请选择非拟合线!"));
- pEnt->close();
- return;
- }
- AcGePoint3d p0 (pt[X],pt[Y] ,0.0);
- AcGePoint3d p1 (pt1[X],pt1[Y],0.0);
- AcGePoint3d p2;
- pPline->getClosestPointTo(p0,p2);
- double param1(0);
- pPline->getParamAtPoint(p2,param1);
- int n = int (param1) ;
- AcDbObjectIterator *pVertIter = pPline->vertexIterator();
- AcDb2dVertex *pVertex;
- AcGePoint3d location;
- AcDbObjectId vertexObjId;
-
- for (int vertexNumber = 0; !pVertIter->done(); vertexNumber++, pVertIter->step())
- {
- vertexObjId = pVertIter->objectId();
- acdbOpenObject(pVertex, vertexObjId, AcDb::kForRead);
- double bugle = pVertex->bulge();
- double startwidth = pVertex->startWidth();
- double endwidth = pVertex->endWidth();
- double tangen = pVertex->tangent();
- location = pVertex->position();
- if(vertexNumber == n)
- {
- AcDb2dVertex *pNewVertex = new AcDb2dVertex(p1,bugle,startwidth,endwidth,tangen);
-
- AcDbObjectId newId;
- pPline->insertVertexAt(newId,vertexObjId,pNewVertex);
- pNewVertex->close();
- }
- pVertex->close();
- }
- delete pVertIter;
-
-
- }
- else
- {
- AfxMessageBox(_T("请选择二维线!"));
-
- }
- pEnt->close();
- }
|
|