明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3482|回复: 16

[基础] 拾取点时出现的问题

  [复制链接]
发表于 2011-1-10 21:20:54 | 显示全部楼层 |阅读模式
请教斑竹 在点取坐标的时候 怎样用一个循环语句 可以一直点取 直到确定为止,显示在命令行里?
 楼主| 发表于 2011-1-10 23:12:57 | 显示全部楼层
发表于 2011-1-11 09:58:29 | 显示全部楼层
本帖最后由 雪山飞狐_lzh 于 2011-1-11 10:19 编辑

仔细看下这两天的帖子,有这方面的代码:
http://bbs.mjtd.com/thread-85028-1-1.html
  1.         [CommandMethod("t2")]
  2.         public static void Test2()
  3.         {
  4.             Document doc = Application.DocumentManager.MdiActiveDocument;
  5.             Database db = doc.Database;
  6.             Editor ed = doc.Editor;

  7.             var optPt = new PromptPointOptions("\n选择第一点");
  8.             optPt.AllowNone = true;
  9.             var resPt = ed.GetPoint(optPt);
  10.             optPt.Message = "\n选择下一点";
  11.             optPt.UseBasePoint = true;
  12.             while (resPt.Status == PromptStatus.OK)
  13.             {
  14.                 optPt.BasePoint = resPt.Value;
  15.                 resPt = ed.GetPoint(optPt);
  16.             }
  17.         }

 楼主| 发表于 2011-1-11 14:58:29 | 显示全部楼层
飞狐大哥 下面这段代码加个循环 ,该怎么编? 先谢谢了
[CommandMethod("PP")]
public void Pickpt()
        {
            Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
            Point3d pt = Pick("\n 拾取点");
            ed.WriteMessage("\n{0:f1}", pt);
        }
      public static Point3d Pick(string word)
      {
          Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
          Editor ed = doc.Editor;
          PromptPointResult pt = ed.GetPoint(word);
          if (pt.Status == PromptStatus.OK)
          {
              return (Point3d)pt.Value;
          }
          else
          {
              return new Point3d();
          }
      }
发表于 2011-1-11 15:57:19 | 显示全部楼层
[CommandMethod("PP")]
  public void Pickpt()
  {
   Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
   Point3d pt = Pick("\n 拾取点");
   ed.WriteMessage("\n{0:f1}", pt);
  }
  public static Point3d Pick(string word)
  {
   Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
   Editor ed = doc.Editor;
   PromptPointResult pt = ed.GetPoint(word);
   bool isSelected = false;
   while (!isSelected) {
    if (pt.Status == PromptStatus.OK) {
     isSelected = true;
     return (Point3d)pt.Value;
    } else {
     continue;
    }
   }

希望会对你有用。
  
 楼主| 发表于 2011-1-11 16:27:18 | 显示全部楼层
还是不能连续点取么?
发表于 2011-1-11 17:21:43 | 显示全部楼层
把返回类型改成point3dCollection,
用选择集来获取选中的点试试。
不过你得获得用户什么时候取消选择了。
 楼主| 发表于 2011-1-11 19:42:56 | 显示全部楼层
我的目的是在cad中连续点取任意实体上的坐标,我是初学者,还望高手能帮帮忙。不过还是要谢谢 epwt
 楼主| 发表于 2011-1-11 21:26:30 | 显示全部楼层
恳请斑竹 帮帮我这个初学者 谢谢
发表于 2011-1-11 22:07:08 | 显示全部楼层
这个,还是看不懂你的要求,说明清楚点?
如果有必要,贴图说明下吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 22:48 , Processed in 0.186985 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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