基于CAD二次开发的六角螺母库模块.doc_第1页
基于CAD二次开发的六角螺母库模块.doc_第2页
基于CAD二次开发的六角螺母库模块.doc_第3页
基于CAD二次开发的六角螺母库模块.doc_第4页
基于CAD二次开发的六角螺母库模块.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CAD二次开发的六角螺母库模块 摘要:由于大量的应用领域提供了特有的几何问题,对于这些问题必须建立有效的算法,从而得以画出更加精确的图形,就这样,CAD的二次开发孕育而生。本文着重就基于CAD二次开发的六角螺母库模块进行研究。关键词:CAD 二次开发 指令 六角螺母一、二次开发概述和总体要求1.1 二次开发概述 二次开发是指在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能。AutoCAD尽管已经提供了肺腑的图形处理命令和线型、图案、文字以及符号库等,但是仍然不能满足用户的专业需要。因此要高效率地使用CAD,就有必要对它们进行扩充与修改,即CAD二次开发。1.2 二次开发的总体要求a、必须支持自动化。对自动化的支持使得其他程序能调用CAD系统的文档,可以使用宿主程序调用CAD二次开发系统的文档,并且可以应用宿主程序的自动化接口创建独立的程序。b、创建至少一个语法解释器。语法解释器是执行用户CAD二次开发脚本代码的关键,解释器的性能好坏是CAD二次开发易用和稳定的基础。c、程序需具有动态定义CAD模型的能力。构建CAD模型是CAD系统的根本要求,应用用户编写的脚本调用系统基本模型来构建复杂模型、或用外部语言生成模型模块、在系统中无缝调用是CAD二次开发扩展功能的捷径。d、程序能支持DLL插件。支持DLL插件使得系统具有更强的伸缩性。e、所有的内部CAD模型都有组件封装,并由文档创建。 2、 方案设计,流程图,程序功能说明2.1方案设计: 在Visual Studio软件上使用指令“AddNutPara”、指令“PrintNutPara”和指令“PlaceNut”编辑六角螺母的尺寸参数及其位置,角度等链表式储存和读取的程序,然后添加引用CAD安装包中“acdbmgd”和“acmgd”,最后在CAD调用程序进行调试即可。2.2 流程图:基于CAD二次开发的六角螺母库模块PrintNutPara指令PlaceNut指令AddNutPara指令打印所有螺母参数调整螺母的放置位置、角度和X、Y切变量输入公称直径D和对边宽S程序结束程序结束程序结束2.3 程序功能说明 本程序可以快速在CAD中绘制出用户想要的六角螺母的尺寸,以及可以很方便地调整位置,角度和X、Y切变量,大大地提高了CAD软件的绘图效率。三、程序各开发模块、函数说明3.1 开发模块链表模块:主要是将文本框(textbox)的内容通过一个按钮控件赋值给链表。函数用到string,字符串函数是char型的一维数组,可以把字符串中的字符作为数组中的元素访问,或利用char型指针对其访问。类:集合程序中的对象以及相关操作程序,实现操作的内部处理。3.2 函数说明math函数:定义数学函数Line():直线Point3d():建立三维坐标Write():写入内容,不换行WriteLine():写入内容,自动换行四、总结随着科技的快速发展,机械自动化的普及早已不可阻挡,CAD/CAM技术恰好非常适合这样的局势,而这也是我选修这门课程的主要原因。经过了一学期的学习,我不仅对VB,C+等软件更加熟悉,而且认识到了CAD二次开发的重要性。而课程设计”基于CAD二次开发的六角螺母库模块”更是让我见识到了二次开发的高效率绘图方式,我相信将来CAD二次开发将会得到更广泛的应用在各个领域。五、代码附录using System;using Autodesk.AutoCAD.EditorInput;using Autodesk.AutoCAD.ApplicationServices;namespace CircleAndArc public class CircleAndArc CommandMethod(Fan) public static void Fan() /获取当前图形数据库 Database db = HostApplicationServices.WorkingDatabase; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor ; using (Transaction trans = db.TransactionManager.StartTransaction() /定义六角螺母的六个点 double Radius = 39.55/2; double Radius1=Radius*Math.Sqrt(3); double Radius2 = 12; double Radius3 = 0.85 * Radius2; double StartAngle = 0 * Math.PI / 180; double aAngle = 60 * Math.PI /180 ; double bAngle = 120 * Math.PI / 180; double cAngle = 180 * Math.PI / 180; double dAngle = 240 * Math.PI / 180; double EndAngle = 300 * Math.PI / 180; double eAngle = -15 * Math.PI / 180; double gAngle = 255 * Math.PI / 180; Point3d Center = new Point3d(); Input frm = new Input() ; if (frm.ShowDialog() = System.Windows.Forms.DialogResult.OK) /Radius = double.Parse (frm.txtRadius.Text); /StartAngle = double.Parse(frm.txtSt.Text); /aAngle = double.Parse(frm.txtSt.Text); /bAngle = double.Parse(frm.txtSt.Text); /cAngle = double.Parse(frm.txtSt.Text); /dAngle = double.Parse(frm.txtSt.Text); / EndAngle = double.Parse(frm.txted.Text); Center = new Point3d (double.Parse(frm.txtCenX.Text),double.Parse(frm.txtCenY.Text),0); ed.WriteMessage(R: + Radius.ToString() + , St: + StartAngle.ToString() + , Ed: + EndAngle.ToString() ); /画扇形的圆弧 Arc arc1 = new Arc(Center, Radius2, eAngle, gAngle); /Arc arc2 = new Arc(Center, Radius2, fAngle, gAngle); /创建六角螺母的六个角与六条边 Point3d startPoint = new Point3d(Center.X + Radius * Math.Cos(StartAngle), Center.Y + Radius * Math.Sin(StartAngle), 0); Point3d aPoint = new Point3d(Center.X + Radius * Math.Cos(aAngle), Center.Y + Radius * Math.Sin(aAngle), 0); Point3d bPoint = new Point3d(Center.X + Radius * Math.Cos(bAngle), Center.Y + Radius * Math.Sin(bAngle), 0); Point3d cPoint = new Point3d(Center.X + Radius * Math.Cos(cAngle), Center.Y + Radius * Math.Sin(cAngle), 0); Point3d dPoint = new Point3d(Center.X + Radius * Math.Cos(dAngle), Center.Y + Radius * Math.Sin(dAngle), 0); Point3d endPoint = new Point3d(Center.X + Radius * Math.Cos(EndAngle), Center.Y + Radius * Math.Sin(EndAngle), 0); Line line1 = new Line(startPoint, aPoint); Line line2 = new Line(aPoint, bPoint); Line line3 = new Line(bPoint, cPoint); Line line4 = new Line(cPoint, dPoint); Line line5 = new Line(dPoint, endPoint); Line line6 = new Line(endPoint, startPoint); Circle Cir1 = new Circle(Center, new Vector3d(0, 0, 1), Radius1); Circle Cir2 = new Circle(Center, new Vector3d(0, 0, 1), Radius3); /将图形实体加载至当前图形数据库 AddToModelSpace(ref db,line1, line2, line3, line4, line5, line6, Cir1, Cir2, arc1); trans.Commit(); CommandMethod(Cir) public static void Cir() /获取当前图形数据库 Database db = HostApplicationServices.WorkingDatabase; Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; using (Transaction trans = db.TransactionManager.StartTransaction() /定义圆弧上的三个点 double Radius = 50; Point3d Center = new Point3d(); Input frm = new Input(); if (frm.ShowDialog() = System.Windows.Forms.DialogResult.OK) Center = new Point3d(double.Parse(frm.txtCenX.Text), double.Parse(frm.txtCenY.Text), 0); ed.WriteMessage(R: + Radius.ToString() + r + n); ed.WriteMessage(Center: + Center.ToString(); /画圆 Circle Cir1 = new Circle(Center, new Vector3d (0,0,1) ,Radius); /将图形实体加载至当前图形数据库 AddToModelSpace(ref db, Cir1); trans.Commit(); / / 将实体添加到模型空间 / / 数据库对象 / 要添加的实体 / 返回添加到模型空间中的实体ObjectId public static ObjectId AddToModelSpace(ref Database db, Entity ent) ObjectId entId;/用于返回添加到模型空间中的实体ObjectId /定义一个指向当前数据库的事务处理,以添加直线 using (Transaction trans = db.TransactionManager.StartTransaction() /以读方式打开块表 BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead); /以写方式打开模型空间块表记录. BlockTableRecord btr = (BlockTableRecord)trans.GetObject(btBlockTableRecord.ModelSpace, OpenMode.ForWrite); entId = btr.AppendEntity(ent);/将图形对象的信息添加到块表记录中 trans.AddNewlyCreatedDBObject(ent, true);/把对象添加到事务处理中 trans.Commit();/提交事务处理 return entId; /返回实体的ObjectId / / 将实体添加到模型空间 / / 数据库对象 / 要添加的多个实体 / 返回添加到模型空间中的实体ObjectId集合 public static ObjectIdCollection AddToModelSpace(ref Database db, params Entity ents) ObjectIdCollection ids = new ObjectIdCollection(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论