明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2672|回复: 5

确认和取消按钮事件

[复制链接]
发表于 2010-11-8 20:19:00 | 显示全部楼层 |阅读模式

请教各位高手帮助写个简单的按钮事例!!!
     在C#中新建一个类(.dll),同时再添加一个窗体(如下图片),最后点[确认]按钮就可以执行以下程序在CAD中指定位置画一个圆,如果点[取消]按钮,则直接退出窗体就不用执行以下程序。(以下是画圆的代码)



 

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-11-8 20:20:00 | 显示全部楼层
以下是画圆的代码:(请帮助增加一个如同以上窗体中的[确认]按钮和[取消]按钮的动作)
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.EditorInput;
  7. [assembly: CommandClass(typeof(ClassLibrary.YdsClass))]
  8. namespace ClassLibrary
  9. {
  10.     public class YdsClass
  11.     {
  12.         [CommandMethod("test")]
  13.         static public void test()
  14.         {
  15.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  16.             PromptPointOptions p = new PromptPointOptions("");
  17.             p.Message = "请选取圆心!";
  18.             PromptPointResult result = ed.GetPoint(p);
  19.             if (result.Status.ToString() == "OK")
  20.             {
  21.                 Point3d centerPoint = result.Value;
  22.                 Document acDoc = Application.DocumentManager.MdiActiveDocument;
  23.                 Database acCurDb = acDoc.Database;
  24.                 using (Transaction acTrans = acDoc.TransactionManager.StartTransaction())
  25.                 {
  26.                     BlockTable acTab = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
  27.                     BlockTableRecord acBlkTblRec = acTrans.GetObject(acTab[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  28.                     Circle newCircle = new Circle();
  29.                     newCircle.SetDatabaseDefaults();
  30.                     newCircle.Center = centerPoint;
  31.                     newCircle.Radius = 10;
  32.                     acBlkTblRec.AppendEntity(newCircle);
  33.                     acTrans.AddNewlyCreatedDBObject(newCircle, true);
  34.                     acTrans.Commit();
  35.                 }
  36.             }
  37.         }
  38.     }
  39. }
发表于 2010-11-8 22:02:00 | 显示全部楼层
在窗体上设置下面的属性:

            button1.DialogResult = DialogResult.OK;
            this.AcceptButton = button1;
            this.CancelButton = button2;

button1添加事件:

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

你的代码写的有点奇怪,哎
  1. using System;
  2. using Autodesk.AutoCAD.Runtime;
  3. using Autodesk.AutoCAD.Geometry;
  4. using Autodesk.AutoCAD.ApplicationServices;
  5. using Autodesk.AutoCAD.DatabaseServices;
  6. using Autodesk.AutoCAD.EditorInput;
  7. [assembly: CommandClass(typeof(ClassLibrary3.YdsClass))]
  8. namespace ClassLibrary3
  9. {
  10.     public class YdsClass
  11.     {
  12.         [CommandMethod("test")]
  13.         static public void test()
  14.         {
  15.             Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
  16.             Form1 frm = new Form1();
  17.             var res = Application.ShowModalDialog(frm);
  18.             if (res == System.Windows.Forms.DialogResult.Cancel)
  19.             {
  20.                 ed.WriteMessage("\n命令被取消!");
  21.                 return;
  22.             }
  23.             PromptPointOptions p = new PromptPointOptions("");
  24.             p.Message = "\n请选取圆心:";
  25.             PromptPointResult result = ed.GetPoint(p);
  26.             if (result.Status == PromptStatus.OK)
  27.             {
  28.                 Point3d centerPoint = result.Value;
  29.                 Document acDoc = Application.DocumentManager.MdiActiveDocument;
  30.                 Database acCurDb = acDoc.Database;
  31.                 using (Transaction acTrans = acDoc.TransactionManager.StartTransaction())
  32.                 {
  33.                     BlockTable acTab = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable;
  34.                     BlockTableRecord acBlkTblRec = acTrans.GetObject(acTab[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  35.                     Circle newCircle = new Circle();
  36.                     newCircle.SetDatabaseDefaults();
  37.                     newCircle.Center = centerPoint;
  38.                     newCircle.Radius = 10;
  39.                     acBlkTblRec.AppendEntity(newCircle);
  40.                     acTrans.AddNewlyCreatedDBObject(newCircle, true);
  41.                     acTrans.Commit();
  42.                 }
  43.             }
  44.         }
  45.     }
  46. }
 楼主| 发表于 2010-11-8 22:03:00 | 显示全部楼层

狐哥

你可否在以上的程序上再帮我补上这两个按钮的动作啊

发表于 2010-11-8 23:00:00 | 显示全部楼层

还是把工程上传吧,汗

本帖子中包含更多资源

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

x
 楼主| 发表于 2010-11-9 07:40:00 | 显示全部楼层

狐哥

非常感谢你的再次帮助...我会去慢慢的理解你的程序...这对于象我这样还没有入门的初学者来说确实很难阿...

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

本版积分规则

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

GMT+8, 2024-11-26 00:44 , Processed in 0.164574 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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