- UID
- 734517
- 积分
- 28
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2014-7-21
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
下面是创建动态多段线的代码,能够加载成功,但是在AutoCAD中,只能拾取一个点,命令就结束了。希望高手指点一下
int index=2; //当前输入点的次数
ads_point ptStart; //起点
if (acedGetPoint(NULL,_T("\n输入第一点: "),ptStart))
{
return;
}
ads_point ptPrevious,ptCurrent; //前一个参考点,当前拾取的点
acdbPointSet(ptStart,ptPrevious);
AcDbObjectId polyId; //多段线的ID
while(acedGetPoint(ptPrevious,_T("\n输入下一点: "),ptCurrent)==RTNORM)
{
if(index==2)
{
//创建多段线
AcDbPolyline*pPoly=new AcDbPolyline(2);
AcGePoint2d ptGe1,ptGe2; //两个节点
ptGe1[X]=ptPrevious[X];
ptGe1[Y]=ptPrevious[Y];
ptGe2[X]=ptCurrent[X];
ptGe2[Y]=ptCurrent[Y];
pPoly->addVertexAt(0,ptGe1);
pPoly->addVertexAt(1,ptGe2);
//添加到模型空间
polyId=PostToModelSpace(pPoly);
}
else if(index>2)
{
//修改多段线,添加最后一个顶点
AcDbPolyline*pPoly;
acdbOpenObject(pPoly,polyId,AcDb::kForWrite);
AcGePoint2d ptGe;
ptGe[X]=ptCurrent[X];
ptGe[Y]=ptCurrent[Y];
pPoly->addVertexAt(index -1,ptGe);
pPoly->close();
}
index++;
acdbPointSet(ptCurrent,ptPrevious);
}
|
|