找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5990|回复: 7

[分享] C# CAD二次开发入门(VS2005+CAD2008)

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-5-28 18:14:11 | 显示全部楼层 |阅读模式

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

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

×
C# CAD二次开发入门(VS2005+CAD2008)   

原文地址

C#做二次开发显然比C++简单得多。希望公司将来能由C++转向C#

步骤一:
新建C#类库项目HelloArx
0.jpg
找到CAD2008的安装目录,添加acdbmgd.dll和acmgd.dll的引用

1.jpg


修改Class1.cs如下:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. using Autodesk.AutoCAD;
  5. using Autodesk.AutoCAD.Geometry;
  6. using Autodesk.AutoCAD.Runtime;
  7. using Autodesk.AutoCAD.DatabaseServices;
  8. using Autodesk.AutoCAD.ApplicationServices;
  9. using Autodesk.AutoCAD.EditorInput;
  10. using Autodesk.AutoCAD.Colors;
  11. using DBTransMan = Autodesk.AutoCAD.DatabaseServices.TransactionManager;

  12. namespace HelloArx
  13. {
  14.     public class Class1
  15.     {
  16.         //加载实体到数据库
  17.         public static ObjectId AppendEntity(Entity ent)
  18.         {
  19.             Database db = HostApplicationServices.WorkingDatabase;
  20.             ObjectId entId;
  21.             using (Transaction trans = db.TransactionManager.StartTransaction())
  22.             {
  23.                 BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
  24.                 BlockTableRecord btr = (BlockTableRecord)trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite);
  25.                 entId = btr.AppendEntity(ent);
  26.                 trans.AddNewlyCreatedDBObject(ent, true);
  27.                 trans.Commit();

  28.             }
  29.             return entId;
  30.         }
  31.         //由两点创建直线
  32.         public static ObjectId AddLine(Point3d startPt, Point3d endPt)
  33.         {

  34.             Line ent = new Line(startPt, endPt);
  35.             ObjectId entId = AppendEntity(ent);
  36.             return entId;
  37.         }
  38.     }
  39. }


步骤三:
新建一个类NewCmd用来建立Cad命令


  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;

  4. using Autodesk.AutoCAD.Runtime;
  5. using Autodesk.AutoCAD.Windows;
  6. using Autodesk.AutoCAD.ApplicationServices;
  7. using Autodesk.AutoCAD.DatabaseServices;
  8. using Autodesk.AutoCAD.Geometry;
  9. using Autodesk.AutoCAD.Colors;
  10. using Autodesk.AutoCAD.EditorInput;
  11. using System.Collections;
  12. using AcadApp = Autodesk.AutoCAD.ApplicationServices.Application;

  13. [assembly: CommandClass(typeof(HelloArx.NewCmd))]

  14. namespace HelloArx
  15. {
  16.     class NewCmd
  17.     {
  18.         //新建一个命令
  19.         [CommandMethod("test")]
  20.         public void Test()
  21.         {
  22.             Point3d ptSt = new Point3d(0, 0, 0);
  23.             Point3d ptEnd = new Point3d(10, 20, 54);
  24.             Class1.AddLine(ptSt, ptEnd);
  25.         }
  26.     }
  27. }

步骤四:
右击项目->属性->调试->启动外部程序输入cad的路径
比如F:\Program Files\AutoCAD 2008\acad.exe
2.jpg
Shift+Ctrl+B编译之后。生成HelloArx.dll

打开Cad2008输入命令netload找到HelloArx.dll然后输入命令test
可以看到效果。
3.jpg

如果看不到,就输入zoom e查看



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-5-28 19:45:12 | 显示全部楼层
就这么简单么,没有函数库连接等的设置么。如果真是确实是简单呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-5-28 21:34:38 | 显示全部楼层
GTJ116600 发表于 2013-5-28 19:45
就这么简单么,没有函数库连接等的设置么。如果真是确实是简单呀

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

使用道具 举报

发表于 2013-5-29 07:13:38 | 显示全部楼层
本帖最后由 GTJ116600 于 2013-5-29 07:15 编辑

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-5-29 08:09:00 | 显示全部楼层
GTJ116600 发表于 2013-5-29 07:13
那太好了。如果前辈能在论坛开个C# CAD二次开发讲座就好了。

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

使用道具 举报

发表于 2013-6-10 15:28:00 | 显示全部楼层
以前跟你学LISP,以后跟你学C##了:lol

点评

一起玩吗,Lisp 现在很少用了,不是XD鼓动也没有决心和动力再学这个C#  详情 回复 发表于 2013-6-10 17:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-6-10 17:29:45 | 显示全部楼层
snsj 发表于 2013-6-10 15:28
以前跟你学LISP,以后跟你学C##了

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

使用道具 举报

发表于 2014-1-5 20:38:30 | 显示全部楼层
这个好像真的不错啊  有空研究一下啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 09:55 , Processed in 0.367819 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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