- UID
- 159690
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2004-7-22
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我想通过程序删除3DPolyline线的一些顶点,我发现只要我删除了第一个顶点时,删除后的这条线就不完整了,如果不查看顶点看不出来问题所在,只要用CAD属性窗口移动顶点时,发现就有问题了,顶点数就0和1之间跳,而且顶点坐标都为0了,不知有谁能告诉我怎么解决,急死了?
下面是简单例子:
void MyTest()
{
#ifdef OARXWIZDEBUG
acutPrintf ("\nOARXWIZDEBUG - Ftest() called.");
#endif // OARXWIZDEBUG
ads_name ss;
long nLen;
ads_name entName;
AcDbObjectId entId;
if(acedSSGet(NULL, NULL, NULL, NULL, ss) == RTNORM)
{
acedSSLength(ss, &nLen);
for(int i=0; i<nLen; i++)
{
acedSSName(ss, i, entName);
acedGetObjectId(entId, entName);
}
acedSSFree(ss);
}
AcDb3dPolyline *p3dPline=NULL;
if(acdbOpenObject(p3dPline, entId, AcDb::kForWrite) == Acad::eOk)
{
AcDbObjectIterator *pVertIter=p3dPline->vertexIterator();
AcDb3dPolylineVertex *pVert;
int i = 0;
for(pVertIter->start(); !pVertIter->done(); pVertIter->step())
{
if(i>=1)
continue;
AcDbObjectId idTemp;
idTemp = pVertIter->objectId();
if(idTemp.isErased() || !idTemp.isValid())
{
continue;
}
if(p3dPline->openVertex(pVert,idTemp,AcDb::kForWrite) == Acad::eOk)
{
pVert->erase();
pVert->close();
i++;
}
}
delete pVertIter;
pVertIter = NULL;
p3dPline->close();
p3dPline = NULL;
}
} |
|