cad二次开发三稿新.docx
- 文档编号:7677563
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:21
- 大小:883.85KB
cad二次开发三稿新.docx
《cad二次开发三稿新.docx》由会员分享,可在线阅读,更多相关《cad二次开发三稿新.docx(21页珍藏版)》请在冰豆网上搜索。
cad二次开发三稿新
编号:
059050441013
本科毕业论文
题目:
学院:
机械工程学院
专业:
机械设计制造及其自动化
年 级:
05级
姓名:
张海龙
指导教师:
李冬梅
完成日期:
目录
中文摘要………………………………………………………………………………1
英文摘要………………………………………………………………………………2
引言……………………………………………………………………………………3
一、AutoCAD技术概述…………………………………………………………………4
二、AutoCAD中常用的二次开发应用程序接口及其功能……………………………4
三、AutoLISP与VisualLISP简介………………………………………………5
3.1AutoLISP简介…………………………………………………………………5
3.2VisualLISP简介…………………………………………………………………5
3.3AutoLISP函数……………………………………………………………………7
四、AutoLISP编程实例……………………………………………………………10
4.1编写AutoLISP程序的操作步骤………………………………………………10
4.2加载和运行AutoLISP程序……………………………………………………10
4.3编写螺旋线程序思路…………………………………………………………11
4.4绘制弹簧有效段的步骤………………………………………………………11
4.5构造圆柱压缩弹簧有效段的过程………………………………………………11
4.6构造平面涡卷弹簧的过程……………………………………………………17
结论…………………………………………………………………………………22
参考文献……………………………………………………………………………23
致谢…………………………………………………………………………………24
摘要
AutoCAD软件是由美国Autodesk公司于20世纪80年代初推出的一种通用计算机辅助设计软件包,它是世界上最流行的辅助设计软件之一,在我国也得到了广泛的运用,这是因为AutoCAD易学易用,更主要的是具有开放式的体系结构,便于二次开发,CAD应用软件的二次开发已成为一种发展趋势。
CAD(ComputerAidedDesign)系统二次开发是在现有CAD软件的基础上,用高级语言进行开发,以提高和完善软件的功能。
AutoCAD软件开发工具有AutoLISP、VisualLISP、ObjectARX和VBA等,最常用的简单易学的开发技术有VisualLISP和VBA。
用VisualLISP编程语言对AutoCAD进行二次开发,可以实现直接增加和修改AutoCAD命令,扩大图形编辑功能、建立图形库和数据库,实现参数化绘图程序设计。
关键词:
AutoCAD;AutoLISP;VisualLISP
Abstract
AutoCADsoftware,autodeskarefromtheUnitedStatesinthe20thcentury,theearly80sintroducedagenericcomputer-aideddesignsoftwarepackage,whichistheworld'smostpopularaideddesignsoftware,oneofourcountryhasbeenatawiderangeofapplication,thisisbecauseAutoCADiseasytolearnanduse,aremoreimportanttohaveanopen-stylearchitecture,easeofsecondarydevelopment.CADapplicationsoftwareonthesecondarydevelopmenthasbecomeatrend.CAD(ComputerAidedDesign)system,thesecondarydevelopmentoftheexistingCADsoftware,basedontheuseofadvancedlanguagedevelopment,inordertoenhanceandimprovethesoftware.AutoCADsoftwaredevelopmenttoolshasAutoLISP,VisualLISP,ObjectARXandVBA,etc.themostcommonlyusedinthedevelopmentofeasytolearntechniqueshaveVisualLISPandVBA.
VisualLISPprogramminglanguageusedforthesecondarydevelopmentofAutoCAD,youcandirectlyincreasetheimplementationandrevisionofAutoCADcommands,expandinggraphicseditingfeatures,setupgraphicslibraryanddatabases,implementationofparametricdrawingprogramdesign.
Keywords:
AutoCAD;AutoLISP;VisualLISP
引言
AutoCAD的优点之一是它的可开发性。
这种可开发性得以实现的最重要因素在于AutoCAD的嵌入式程序设计语言——AutoLISP。
借助于AutoLISP,你可以建立自己的命令,并重新定义其他命令。
AutoLISP并不苛求其用户一定要具有程序员的水平,它是为普通用户设计的。
普通的AutoCAD用户只要经过简单的培训之后,即可使用AutoLISP。
AutoLISP是AutoCAD所支持的一种内嵌式高级编程语言,所谓内嵌式就是指AutoLISP已经集成到AutoCAD软件中。
在AutoCAD中,用户可十分方便地利用AutoLISP编程语言对AutoCAD进行二次开发,把自己日常生活中常用的某些操作以命令的形式添加到AutoCAD中,然后用户就可以像使用AutoCAD标准命令一样使用新添加的命令以完成特定的操作。
VisualLISP(VLISP)是一种专门用来加速AutoLISP程序开发的工具软件,现已正式内嵌于AutoCAD中。
通过VLISP集成开发环境IDE(IntegratedDevelopmentEnvironment)所提供的编辑器、调试器以及其他工具,用户可方便地编写和修改AutoLISP源程序代码,调试和运行AutoLISP程序。
本文结合具体实例给出利用VisualLISP对AutoCAD进行二次开发的方法。
一、CAD技术概述
从20世纪60年代开始,产生了电子计算机技术应用于各工程领域(如机械、建筑、电子等)产品设计的新兴交叉技术——计算机绘图和计算机辅助设计,简称CAD系统和CAD技术。
其定义为:
CAD是计算机系统在工程和产品设计的各阶段和过程中,为设计人员提供各种快速、有效的工具和手段,加快和优化设计过程和设计结果,以达到最佳设计效果的一种技术。
利用CAD技术可使工程设计人员从繁重的设计计算和绘图工作中解放出来,从而将更多的精力用于创造性的劳动。
经过40年的研究和发展,CAD技术已经成为众多领域,特别是工程设计领域中工程技术人员必须掌握的一门技术。
[1]
二、AutoCAD中常用的二次开发应用程序接口及其功能
AutoCAD可实现的常用的开发应用程序接口及功能如下:
[2]
1.AutoLISP与VisualLISP开发
AutoLISP作为LISP程序设计语言的专业化实现,是AutoCAD的一个有机组成部分。
用户可以自己编写AutoLISP程序或使用第三方提供的共享程序,以扩大AutoCAD的功效。
VisualLISP则是为用AutoLISP开发AutoCAD而提供的一个简单、高效的交互式集成开发环境。
利用VisualLISP提供的众多功能,可使AutoLISP程序代码的编写、修改以及测试与调试更加容易,是二次开发强有力的工具。
2.VBA开发
VBA是VisualBasicforApplication的简称,它提供了一个基于对象的集成编程环境,可直接在AutoCAD内部执行,是开发AutoCAD的有效工具之一。
3.ObjectARX编程接口
ObjectARX使用面向对象的C++应用程序开发机制,以动态链接库的形式与AutoCAD共享地址空间,并可被AutoCAD环境直接调用,具有较高的程序开发与执行效率。
三、AutoLISP与VisualLISP简介
3.1AutoLISP简介
AutoLISP是嵌入在AutoCAD内部的LISP编程语言,用它可以对AutoCAD进行二次开发,实现直接增加和修改AutoCAD命令,扩大图形编辑功能,实现参数化绘图程序设计。
它是开发AutoCAD的强有力的工具。
[3]
AutoLISP把数据和程序统一表达为表结构,每个表达式都以左小括号“(”开始,其后由函数名和函数的变元组成,最后,表达式以右小括号“)”结束。
在AutoLISP中采用的是“前缀表示法”,即把运算符放在表的第一个元素的位置,后面为其他参数。
3.2VisualLISP简介
VisualLISP是为增强AutoLISP程序开发能力,加速AutoLISP程序开发而设计的一种软件工具,它内嵌在AutoCAD中。
在AutoCAD2000以后,通过VisualLISP集成开发环境(IDE)所提供的编辑器、调试器以及其他工具,用户可以方便地编写和修改AutoLISP源程序代码,调试、运行程序,从而弥补了在此之前用户必须在文本编辑软件中编写程序代码才能加载运行该程序的不足。
[4]
现将VisualLISP界面中的各部分简介如下:
1.菜单栏
用户可以通过打开某个菜单,单击其中的某一命令来启动相关的VisualLISP命令,此时VLISP将在状态栏显示该命令的简要说明。
图3.2.1VisualLISP开发环境菜单栏
FIG.3.2.1VisualLISPIDEMenuBar
2.工具栏
工具栏是VisualLISP中最重要的操作按钮,它包含了VisualLISP集成开发环境中最常见的功能。
图3.2.2VisualLISP开发环境工具栏
FIG.3.2.2VisualLISPIDEToolBar
3.控制台
控制台是一个在VisualLISP应用程序主窗口中独立、内容可滚动显示的窗口。
在控制台窗口中,用户可输入并运行AutoLISP命令以查看运行结果,并显示AutoLISP诊断信息。
图3.2.3VisualLISP开发环境控制台
FIG.3.2.3VisualLISPIDEConsole
4.跟踪窗口
启动VisualLISP后,该窗口显示VisualLISP当前版本的有关信息。
图3.2.4VisualLISP开发环境跟踪窗口
FIG.3.2.4VisualLISPIDETrackingWindow
5.文本编辑窗口
在VisualLISP集成开发环境中,文本编辑窗口是最大的一个空白窗口。
利用该窗口,用户可以快速高效地编写和修改AutoLISP源程序代码。
图3.2.5VisualLISP开发环境文本编辑窗口
FIG.3.2.5VisualLISPIDEEditWindow
3.3AutoLISP函数
在AutoLISP中,函数有两种类型:
一种是AutoLISP所提供的基本函数,另一种是用户自定义的函数。
3.3.1AutoLISP的基本函数
AutoLISP中最常见的基本函数有以下几种:
1.设置变量函数[1]
格式:
(setq变量名1值1[变量名2值2变量名3值3…])
功能:
创建给定的变量,并赋特定值。
说明:
对于字符串类型的值,应加上“,”以示区别。
2.数学函数[5]
(1)加运算
格式:
(+[num1][num2][num3]…)
功能:
计算加号右边所有数值的和。
说明:
数值可为整数或实数,如果运算数有整数也有实数,则和为实数。
例如:
(+230450.0);返回值为86.0
(2)乘运算
格式:
(*[num1][num2][num3]…)
功能:
用于求所有在*号后运算数的乘积。
例如:
(*2.0-5.5-2);返回值为22.0
(3)除运算
格式:
(/[num1][num2][num3]…)
功能:
第一个数除以其他所有运算数的积。
例如:
(/-200-5.0);返回值为40.0
(4)三角函数
①正弦(sin)
格式:
(sinangle)
功能:
计算以弧度表示的角度的正弦值。
例如:
(sinpi);返回值为0.0
②余弦(cos)
格式:
(cosangle)
功能:
计算以弧度表示的角度的余弦值。
例如:
(cospi);返回值为-1
3.执行AutoCAD标准命令——command函数[1]
格式:
(command"标准命令""参数1""参数2"…)
说明:
标准命令必须全部写出,不能以简捷命令方式出现。
如在AutoLISP中要画直线只能采用Line而不能用L。
如果要画从(5,3)到(7,8)再到@10<0三点的连线,可采用:
(command"Line""5,3""7,8""@10<0""")
4.选择定点函数getpoint[1]
格式:
(getpoint"\n操作提示")
功能:
用户可以通过键盘输入具体的参数,也可以利用十字光标在屏幕区域内选取一点。
说明:
getpoint的操作提示中\n表示换行。
5.求坐标点函数polar[5]
格式:
(polar<中心点><方位角><距离>)
功能:
返回给定<中心点>,指定<方位角>和<距离>点的X、Y坐标。
说明:
<方位角>用弧度表示。
6.List函数[6]
格式:
(list<表达式1><表达式2>…)
功能:
可将任意的多个表达式组成一个表。
例如:
(list‘a’b’c);返回值为(ABC)
7.Repeat函数[7]
格式:
(repeat<数><表达式>…)
功能:
该函数按给定<数>(为正整数),重复计算每一个<表达式><数>次,返回最后表达式的计算结果。
8.输入距离函数getdist[9]
格式:
(getdist<点><提示>)
功能:
该函数等待用户输入一个距离值,并返回距离值。
例如:
(setqdist(getdist‘(1.03.5)"\nHowfar?
"));同时带<点>和<提示>
9.输入整数型函数getint[9]
格式:
(getint<提示>)
功能:
该函数等待用户输入一个整型数,<提示>是原样显示的任选字符串。
例如:
(setqa(getint"\n输入一个数"));输入的数赋给a
10.输入实型数函数getreal[9]
格式:
(getreal<提示>)
功能:
该函数等待用户输入一个实型数,<提示>是原样显示的任选字符串。
例如:
(setqc(getreal"输入比例因子"));输入的数赋给c
11.测试是否为空表函数null[9]
格式:
(null<项>)
功能:
该函数用于测试<项>是否为空表,若为空表返回T,否则返回NIL。
3.3.2用户自定义函数[10]
要想扩充AutoCAD基本命令,或更改、完善已有的绘图设计软件,就可以把常用的操作以自定义函数的方式加以定义。
AutoLISP提供defun函数用以自定义用户函数,操作格式如下:
(defunC:
XXX()
表达式
)
现就该格式作几点说明:
(1)defun函数后面所跟的C:
XXX()是一种特定的格式。
XXX是用户自定义函数的函数名。
(2)表达式可由AutoLISP基本函数、变量、字符串和运算符等组成,是用户自定义函数的核心部分。
(3)定义完函数后,用户就可像调用AutoLISP基本函数一样调用XXX()函数。
四、AutoLISP编程实例
4.1编写AutoLISP程序的操作步骤
编写AutoLISP程序操作步骤如下:
(1)启动VisualLISP,打开文本编辑窗口。
(2)在文本编辑窗口中编写程序。
(3)程序写完后,单击“标准”工具栏中的“保存”按钮,将该程序保存为XXX.LSP。
4.2加载和运行AutoLISP程序
要运行任何AutoLISP程序,通常用以下两种方法来加载AutoLISP程序,即:
1.利用对话框加载程序
在AutoCAD中,用户可通过以下两种方法启动Appload命令,以加载AutoLISP程序:
(1)单击“工具”、“加载应用程序”命令。
(2)在“命令”提示符后,输入“Appload”并回车。
2.在VisualLISP中加载程序
在VisualLISP中可以通过以下步骤加载AutoLISP程序:
(1)启动VisualLISP集成开发环境。
(2)单击“标准”工具栏中的“打开”按钮,打开“文件编辑/查看”对话框。
(3)在该对话框中,选择要加载的AutoLISP程序,并单击“打开”按钮,打开该程序。
(4)光标定位在文本编辑窗口内,然后单击“工具”工具栏中的“加载编辑器中的文字”按钮即可。
4.3编写螺旋线程序思路
根据弹簧的结构特点,绘制弹簧有效段的难点在于绘制螺旋线。
在AutoCAD2002中,没有专门的绘制螺旋线命令,所以要用三维线构造。
绘制三维线的命令主要有直线(LINE)、三维多段线(3DPLOY)和样条曲线(SPLINE),不过只有三维多段线适合绘制螺旋线。
由于三维多段线绘出的是直线,所以在绘制螺旋线时要大量的线段来逼近螺旋线,为此,要通过编制LISP程序的方法来完成。
绘制好螺旋线,弹簧丝就可以通过画出相应形状的截面沿螺旋线拉伸生成。
4.4绘制弹簧有效段的步骤
绘制弹簧有效段的步骤:
(1)根据弹簧结构[8],编制螺旋线生成程序,并加载该程序;
(2)绘制出弹簧簧丝螺旋线;
(3)在螺旋线端点绘制簧丝截面圆(对于平面涡卷弹簧应绘制矩形截面),拉伸生成弹簧有效段;
(4)消隐,体着色。
4.5构造圆柱压缩弹簧有效段的过程
1.设置绘图环境
选择【格式】/【图层】菜单命令,打开【图层特性管理器】对话框。
单击“新建”按钮,创建“构造线”图层,将颜色设置为“绿色”,线型为“CENTER”,线宽为“默认”。
同样方法创建“粗实线”图层,颜色设为“红色”,线型为“Continuous”,线宽为“默认”,单击“确定”按钮。
2.编制螺旋线程序
打开LISP程序编辑窗口,并在该窗口中输入如下程序。
(如图4.5.1所示)
(defunc:
lxx()
(setqb1(getpoint"请指定螺旋线基点:
"))//setq函数用于给变量赋值
(setqr(getreal"请指定螺旋线平均半径:
"))
(setqt1(getreal"请输入螺旋线节距:
"))
(setqn1(getint"请输入螺旋线圈数:
"))
(setqn(getint"请输入每圈细化段数<72>:
"))
(if(nulln)(setqn72))
(setqdelta(/(*2.0pi)n))
(setqj(/t1n))
(setqa0)//a为螺旋升角
(setqk0)
(command"UCS""0"b1)//将坐标原点移到指定的螺旋线基点
(command"3dpoly"(listr00))//以(r,0,0)为起点绘制多段线
(repeatn1
(repeatn//循环操作语句,n为循环次数
(setqk(+k1))
(setqa(+deltaa))
(setqpt2(list(*r(cosa))(*r(sina))(+0(*jk))))
(commandpt2)
))
(command"")
(princ)
)
图4.5.1写入程序
FIG.4.5.1Writer
选择【文件】/【保存】菜单命令,或单击“保存”按钮,将该文件以“lxx.LSP”名称保存到文件夹。
选择【文件】/【退出】菜单命令,关闭如图4.5.1所示的窗口。
选择【工具】/【AutoLISP】/【加载】菜单命令,打开【加载/卸载应用程序】对话框,如图4.5.2所示。
在该对话框中选择“lxx.LSP”程序,依次单击“加载”和“关闭”按钮。
此时已加载了绘制螺旋线的程序。
图4.5.2【加载/卸载应用程序】对话框
FIG.4.5.2【Load/UnloadApplications】dialogbox
3.绘制有效段簧丝
(1)绘制中心线
图4.3.3绘制中心线
FIG.4.3.3Drawingthecenterline
将“构造线”图层设为当前图层。
单击【绘图】工具栏上的【构造线】按钮,绘制中心线,如图4.5.3所示。
(2)绘制螺旋线
将“粗实线”图层设为当前图层。
在命令行输入“lxx”绘制螺旋线,系统提示:
命令:
lxx
请指定螺旋线基点:
//捕捉中心点
请指定螺旋线平均半径:
30↙
请输入螺旋线节距:
10↙
请输入螺旋线圈数:
10↙
请输入每圈细化段数:
72↙//一圈螺旋线72段组成
程序执行后,绘制出半径为30,节距为10的螺旋线。
单击【视图】工具栏上的【西南等轴测视图】按钮,结果如图4.5.4所示。
注:
在绘制螺旋线的过程中,要将【正交】和【自动捕捉】选项关闭,否则可能在螺旋线各段绘制过程中,捕捉了某些点而绘制出错误的图形。
图4.5.4绘制螺旋线
FIG.4.5.4SpiralDraw
(3)绘制簧丝截面图
图4.5.5绘制截面图
FIG.4.5.5Drawingsections
单击【UCS】工具栏上的【X轴旋转UCS】按钮,如图4.5.5所示,将UCS以x轴为旋转轴顺时针旋转90°。
单击【绘图】工具栏上的【圆】按钮,捕捉螺旋线端点为圆心绘制半径为“3”的圆,如图4.5.5所示。
(4)拉伸生成簧丝
单击【实体】工具栏上的【拉伸】按钮,系统提示:
命令:
_extrude
当前线框密度:
ISOLINES=4
选择对象:
//选择图4.5.5所示的截面圆
选择对象:
↙//确定对象选择完毕
指定拉伸高度或[路径(P)]:
p↙//确定按路径拉伸
选择拉伸路径:
//选择图4.5.5所示螺旋线
操作执行后,生成簧丝,如图4.5.6所示。
图4.5.6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- cad 二次开发 三稿新