用C#来开发CAD插件,含源代码
2013-05-26 16:01
316 查看
CAD插件看起来很神秘,其实一个合格码农经过几天就能快速掌握。没什么秘密,开发CAD插件和winform一样简单学几个类库用法就是(只是太多人不喜欢知识分享),在CAD里展现界面和winform略有不同(整个项目工程在文章的最后有下载)。
学习CAD插件开发的动机是为了薪水,由于公司是做显示屏和触摸屏的,养了一堆CAD的设计工程师拿着8K以上的薪水,当时我做为信息系统开发人员才拿4K,4个人要开发维护整个公司(2万人,几十个部门)的系统,感觉严重不平衡,便挑战一下设计工程师,借此提高自身价值。
适用案例,公司做手机屏要放UV胶来贴合,用CAD画一个边框加一些线条。看着设计工程师们画画CAD也有那么多薪水,心里不平衡就搞出一个按照参数自动出图的东西。当然实际的项目比我放出的复杂得多,这里只是讲讲CAD插件技术,不涉及实际项目。总之无论多复杂,凡是根据参数生成固定图形的,CAD插件程序都可以胜任。
效果展示:
1,命令行:
View Code
整个工程打包上来,有兴趣的朋友跑起来玩玩。很少写博客,不知道哪里能上传,放个360网盘分享吧,http://yunpan.cn/Q5t2pTptiUm4b。
http://files.cnblogs.com/files/zkp2010/CAD%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E2%80%94%E2%80%94%E4%BB%A5CAD2006%E4%B8%BA%E4%BE%8B.rar CAD插件技术真心不难,无非是画点线条,CAD内部能实现的,C#调用acdbmgd.dll和acmgd.dll也能实现。
花几天时间让自己掌握多一件技术也是件开心的事,也可以拿去镇镇设计工程师,让他们知道码农的强大。
学习CAD插件开发的动机是为了薪水,由于公司是做显示屏和触摸屏的,养了一堆CAD的设计工程师拿着8K以上的薪水,当时我做为信息系统开发人员才拿4K,4个人要开发维护整个公司(2万人,几十个部门)的系统,感觉严重不平衡,便挑战一下设计工程师,借此提高自身价值。
适用案例,公司做手机屏要放UV胶来贴合,用CAD画一个边框加一些线条。看着设计工程师们画画CAD也有那么多薪水,心里不平衡就搞出一个按照参数自动出图的东西。当然实际的项目比我放出的复杂得多,这里只是讲讲CAD插件技术,不涉及实际项目。总之无论多复杂,凡是根据参数生成固定图形的,CAD插件程序都可以胜任。
效果展示:
1,命令行:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.Windows.ToolPalette; using Autodesk.AutoCAD.Windows; namespace Test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } float C;//长 float K;//宽 /// <summary> 画CAD图,根据计算出的坐标 /// /// </summary> void drawCAD() { Point3d p0 = new Point3d(0,0,0); Point3d p1 = new Point3d(C,0,0); Point3d p2 = new Point3d(C, K, 0); Point3d p3 = new Point3d(0, K, 0); using (DocumentLock doclock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument()) { // Database db = HostApplicationServices.WorkingDatabase; using (Transaction trans = db.TransactionManager.StartTransaction()) { BlockTable bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable; BlockTableRecord btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; //画4条直线的矩形 List<Line> lins = new List<Line>(); lins.Add(new Line(p0, p1)); lins.Add(new Line(p1, p2)); lins.Add(new Line(p2, p3)); lins.Add(new Line(p3, p0)); foreach (Line line in lins) { btr.AppendEntity(line); trans.AddNewlyCreatedDBObject(line, true); } //画圆,这里直接用矩形的四个点来画 List<Point3d> points = new List<Point3d>(); points.Add(p0); points.Add(p1); points.Add(p2); points.Add(p3); List<Circle> cirs = new List<Circle>(); foreach (Point3d p3d in points) { int R = 20; cirs.Add(new Circle(p3d, Vector3d.ZAxis, R)); } foreach (Circle cir in cirs) { cir.ColorIndex = 1; btr.AppendEntity(cir); trans.AddNewlyCreatedDBObject(cir, true); } trans.Commit(); } } } private void button1_Click(object sender, EventArgs e) { this.C = Convert.ToInt32(this.textBox1.Text);//int转成float一定可以,所以可以把int的值直接赋给float this.K = Convert.ToInt32(this.textBox2.Text); this.drawCAD(); this.Close(); } } }
View Code
整个工程打包上来,有兴趣的朋友跑起来玩玩。很少写博客,不知道哪里能上传,放个360网盘分享吧,http://yunpan.cn/Q5t2pTptiUm4b。
http://files.cnblogs.com/files/zkp2010/CAD%E6%8F%92%E4%BB%B6%E5%BC%80%E5%8F%91%E2%80%94%E2%80%94%E4%BB%A5CAD2006%E4%B8%BA%E4%BE%8B.rar CAD插件技术真心不难,无非是画点线条,CAD内部能实现的,C#调用acdbmgd.dll和acmgd.dll也能实现。
花几天时间让自己掌握多一件技术也是件开心的事,也可以拿去镇镇设计工程师,让他们知道码农的强大。
相关文章推荐
- 用C#来开发CAD插件,含源代码
- 用C#来开发CAD插件,含源代
- 用C#开发Windows Mobile开发今日插件附源代码
- 使用反射和codeDom实现C#插件开发(2)dll开发
- C#web便捷插件开发
- CAD .NET开发 教程(C#)——第四章
- skype api 开发 c#实例源代码
- 用Visual Studio 2005 开发VB.NET-C#语言转换插件
- C#插件开发简单模型
- C#开发ActiveX插件
- c#插件式程序开发(二):如何在插件中调用主程序资源
- 开发WAP之GOOGLEADSENSE移动广告代码之C#源代码
- 使用反射和codeDOM实现C#插件开发(1)由来
- 使用反射和codeDom实现C#插件开发(4)主程序开发之main函数编写
- 基于Visual Studio AddIns(插件)的形式开发的C#及JS的代码注释工具
- c# 开发CAD 只初始化窗口一次,并修改其内的数据
- C#的插件开发
- C#的插件开发
- C# 插件开发学习实例
- C#开发BHO插件UrlTrack