明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2495|回复: 4

怎样用C#实现画圆

[复制链接]
发表于 2010-8-3 14:23:00 | 显示全部楼层 |阅读模式
怎样用C#实现交互式画圆,并得到几何体
发表于 2010-8-3 17:16:00 | 显示全部楼层

交互式绘图要用Jig的

先看下相关内容吧

 楼主| 发表于 2010-8-3 17:45:00 | 显示全部楼层
定义了类
  1. public class Cir:EntityJig
  2. {
  3.    private Point3d m_Start;
  4.         private Point3d m_End;
  5.         private double m_dir;
  6.         private Vector3d m_normal;
  7.         private MgGeometry m_MgGeo;
  8.         public Cir(Point3d start)
  9.             : base(new Circle())
  10.         {
  11.             Plane plane = new Plane(
  12.                                Application.DocumentManager.MdiActiveDocument.Database.Ucsorg,
  13.                                Application.DocumentManager.MdiActiveDocument.Database.Ucsxdir,
  14.                                Application.DocumentManager.MdiActiveDocument.Database.Ucsydir
  15.                                );
  16.             m_Start = start;
  17.             m_End = start;
  18.             m_normal = new Vector3d(0.0, 0.0, 1.0);
  19.             m_dir = m_Start.DistanceTo(m_End);
  20.             if (m_dir == 0)
  21.                 m_dir = 0.1;
  22.             Point2d pt = start.Convert2d(plane);
  23.             ((Circle)Entity).Center = m_Start;//.AddVertexAt(0, point, 0, 0, 0);
  24.             ((Circle)Entity).Radius = m_dir;
  25.             ((Circle)Entity).Normal = m_normal;
  26.             //((Circle)Entity).Closed = true;
  27.             // Set the color of the selection to Red
  28.             this.Entity.Color = Autodesk.AutoCAD.Colors.Color.FromColor(System.Drawing.Color.Red);
  29.         }
  30.         /// <summary>
  31.         /// Acquires user input and define the state of the entity being acquirede.
  32.         /// </summary>
  33.         /// <param m_name="prompts"> A collection of sampling functions for Jig data acquisition.</param>
  34.         protected override SamplerStatus Sampler(JigPrompts prompts)
  35.         {
  36.             JigPromptPointOptions jigOpts = new JigPromptPointOptions();
  37.             jigOpts.UserInputControls = (UserInputControls.Accept3dCoordinates
  38.                 | UserInputControls.NoZeroResponseAccepted
  39.                 | UserInputControls.NoNegativeResponseAccepted);
  40.             SamplerStatus result = SamplerStatus.NoChange; ;
  41.             // For rectangle it only need input once for the next point.            
  42.             jigOpts.Message = "\n指定另一个对角点";
  43.             PromptPointResult promptResult = prompts.AcquirePoint(jigOpts);
  44.             if (promptResult.Status == PromptStatus.OK)
  45.             {
  46.                 if (promptResult.Value == m_Start)
  47.                     return SamplerStatus.NoChange;
  48.                 m_End = promptResult.Value;
  49.                 m_dir = m_Start.DistanceTo(m_End);
  50.                 result = SamplerStatus.OK;
  51.             }
  52.             return result;
  53.         }
  54. }
  55. 另外在命令里面调用
  56. public void draw()
  57.         {
  58.             Editor ed = Util.AcadEditor;
  59.             PromptPointOptions opts = new PromptPointOptions("\n指定第一个对角点:");
  60.             PromptPointResult res = ed.GetPoint(opts);
  61.             // Cancel input at the beginning, no need to draw selection
  62.             if (res.Status == PromptStatus.Cancel)
  63.             {
  64.                 return;
  65.             }
  66.             Cir newcir = new Cir(res.Value);
  67.             PromptPointResult pr = (PromptPointResult)(ed.Drag(newcir));
  68.             if (pr.Status != PromptStatus.OK)
  69.             {
  70.                 return;
  71.             }
  72.             newcir.SetCir();
  73.         }

确定圆心后 移动鼠标确定半径的过程中显示的却是一小段弧段,不知道什么原因,请二楼指点一下,多谢了
发表于 2010-8-3 22:08:00 | 显示全部楼层
发表于 2010-10-31 18:13:00 | 显示全部楼层
正需要象这样的基础程序来学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 00:36 , Processed in 0.176950 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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