找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2143|回复: 2

[求助] 创建动态多段线

[复制链接]
发表于 2014-9-3 08:50:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下面是创建动态多段线的代码,能够加载成功,但是在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);
  }

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-3 08:59:18 | 显示全部楼层
if (acedGetPoint(NULL,_T("\n输入第一点: "),ptStart))
  {
        return;
  }

acedGetPoint 的返回值你没判断啊,永远为T啊,是不是应该判断下是否等于RTNORM?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-9-3 09:59:43 | 显示全部楼层
{:soso_e179:}哦,原来是这样啊.忘了判断返回值了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-10 05:39 , Processed in 0.367901 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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