乐筑天下

帖子
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 68|回复: 4

循环添加实体应用

[复制链接]

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2010-12-12 08:54:00 | 显示全部楼层 |阅读模式
请老师帮助在以下绘制圆的程序中增加一个循环(while)...
执行程序效果是:当运行画圆程序后,就可以一直连续选点画圆,如果我需要退出画圆,只需要右键就结束...
回复

使用道具 举报

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2010-12-12 08:55:00 | 显示全部楼层

以下是绘圆程序,请老师帮助修添加一个循环
  1.         public void CreateCircle()
  2.         {
  3.             Document doc = Application.DocumentManager.MdiActiveDocument;
  4.             Editor ed = doc.Editor;
  5.             PromptPointOptions p = new PromptPointOptions("\n请选取圆心点:");
  6.             PromptPointResult result = ed.GetPoint(p);
  7.             if (result.Status != PromptStatus.OK)
  8.                 return;
  9.             Point3d centerPoint = result.Value;
  10.             Database db = doc.Database;
  11.             using (doc.LockDocument())
  12.             using (Transaction tr = db.TransactionManager.StartTransaction())
  13.             {
  14.                 BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
  15.                 BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  16.                 Circle c1 = new Circle(centerPoint, Vector3d.ZAxis, 10);              
  17.                 btr.AppendEntity(c1);
  18.                 tr.AddNewlyCreatedDBObject(c1, true);
  19.                 tr.Commit();
  20.             }   
  21.         }
回复

举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2010-12-12 10:52:00 | 显示全部楼层

        public void CreateCircle()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
Database db = doc.Database;
            PromptPointOptions p = new PromptPointOptions("\n请选取圆心点:");
            PromptPointResult result = ed.GetPoint(p);
            while (result.Status == PromptStatus.OK)
            {      
            using (Transaction tr = db.TransactionManager.StartTransaction())
            {
                BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
                BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
                Circle c1 = new Circle(result.Value, Vector3d.ZAxis, 10);              
                btr.AppendEntity(c1);
                tr.AddNewlyCreatedDBObject(c1, true);
                tr.Commit();
            }
            result = ed.GetPoint(p);
             }
        }
//备注:未做过测试
回复

举报

0

主题

37

帖子

2

银币

初来乍到

Rank: 1

铜币
37
发表于 2010-12-12 11:09:00 | 显示全部楼层
可以一直连续选点:while
右键就结束:p.AllowNone = true;
自己试下吧,加几行代码就行了
回复

举报

84

主题

543

帖子

12

银币

中流砥柱

Rank: 25

铜币
886
发表于 2010-12-12 12:52:00 | 显示全部楼层

谢谢各位老师的指导,问题已解决了。。。
回复

举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁體中文

GMT+8, 2025-3-16 15:11 , Processed in 2.011835 second(s), 63 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表