CAD的二次开发软件在教学中的应用.docx
- 文档编号:26249585
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:14
- 大小:150.15KB
CAD的二次开发软件在教学中的应用.docx
《CAD的二次开发软件在教学中的应用.docx》由会员分享,可在线阅读,更多相关《CAD的二次开发软件在教学中的应用.docx(14页珍藏版)》请在冰豆网上搜索。
CAD的二次开发软件在教学中的应用
AUTOCAD的二次开发软件在数铣一体化教学中的应用
摘要:
本文探讨AUTOCAD2004的二次开发软件VLisp及VBA在数控铣一体化教学中的实际应用。
VLisp可以用来扩展数控加工零件的参数化设计绘制功能,VBA可以用来实现参数化的刀路仿真,很多功能两者都可以实现。
为了让学生更好地完成数控铣一体化学习,为了使教学过程更加清晰明了,我充分利用AUTOCAD2004的二次开发软件,在实际教学中取得了不错的效果。
关键词:
VLisp,VBA,数控铣,教学,参数化
1.绪论
一体化教学已成为当今中高职学校教学模式的新趋势。
数控铣一体化是数控专业的中高职学生在技校期间的一门重要课程,该课程学习效果的好坏直接关系到中高级数控铣操作工的考证、中高级CAM程序员的考证、数控铣方向毕业设计的完成、数控铣相关工作岗位的面试……老师在教学过程中为了讲好各个知识点,从理论到实际操作都不能有一丝马虎,然而尽管如此,还是有很多学生对一些知识点无法理解或理解不透彻,于是老师们会借助一些辅助手段更好地完成知识点的讲解,比较常用的手段有——利用PowerPoint制作幻灯片演示,利用FlashMX制作动画演示,利用专门的仿真软件进行仿真演示,利用AUTOCAD边画图边讲解,利用MasterCAM、CAXA、UG等工具直接画图及设置刀路,播放操作视频,实操演示等。
多一种教学手段便多一分讲解效果,除了以上手段外,我发现利用AUTOCAD2004的二次开发软件VLisp及VBA可以更好地辅助教学,VLisp可以用来扩展数控加工零件的参数化设计绘制功能,VBA可以用来实现参数化的刀路仿真,很多功能两者都可以实现,而这些功能中的参数化效果是其他手段望尘莫及的。
2.VLisp及VBA简介
VLisp是VisualLisp的缩写,LISP(全名ListProcessor,即链表处理语言)是由约翰·麦卡锡在1960年左右创造的一种基于λ演算的函数式编程语言。
VisualLisp是AutoCAD自带的一个集成的可视化AutoLisp开发环境,最早的AutoLisp程序需要用文本编辑工具如记事本等编辑,然后在AutoCAD中加载调试,很不方便。
从AutoCAD2000开始,有了集成的开发环境:
VisualLisp。
作为开发工具,VisualLisp提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以实时调试AutoLisp命令。
VisualLisp具有自己的窗口和菜单,但它并不能独立于AutoCAD运行。
VBA是基于VisualBasic发展而来的,它们具有相似的语言结构。
90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得不学习一种不同的自动化语言。
例如:
可以用EXCEL的宏语言来使EXCEL自动化,使用WORDBASIC使WORD自动化,等等。
微软决定让它开发出来的应用程序共享一种通用的自动化语言——VisualBasicForApplication(VBA),可以认为VBA是非常流行的应用程序开发语言VisualBasic的子集。
实际上VBA是寄生于VB应用程序的版本。
3.用VBA编程解释刀具半径补偿与加工余量的关系
3.1准备工作
在计算机上安装AutoCAD2004程序,事实上2000以上版本都可以。
AutoCAD2004打开后点击菜单【工具】—【宏】—【VisualBasic编辑器】,或按快捷方式ALT+F11打开VBA编程界面,通过菜单插入模块和用户窗体后【工程资源管理器】窗口如图1,可以看出【AutoCAD对象】、【窗体】和【模块】三个部分是相互关联的,我们的任务之一就是设计窗体并为窗体添加程序代码,任务之二就是添加应用程序代码。
图1.【工程资源管理器】窗口
3.2添加窗体及控件
鼠标左键双击【工程资源管理器】窗口中的树状分支【UserForm1】并通过菜单【视图】打开【工具箱】,将【属性】窗口中【caption】的“UserForm1”改为“外形加工”,窗体屏幕显示如图2。
图2.窗体及【工具箱】
现在就可以在窗体上添加标签控件(单击控件工具箱中的图标
)、文字框控件(单击控件工具箱中的图标
)、图象控件(单击控件工具箱中的图标
,设置好大小后,单击【属性】窗口“Picture”右侧的图标
打开【加载图片】对话框,选择事先创建好的相关图片即可)、命令按钮控件(单击控件工具箱中的图标
),各控件的内容、大小、颜色等通过【属性】窗口中的各个参数来设置。
各控件添加后的效果如图3所示。
图2.添加控件后的【外形加工】窗体
3.3为窗体添加程序代码
为了能从窗体输入数据,需要为窗体和控件添加程序代码。
双击窗体,出现了几乎与代码窗口一样的窗口界面,但左右上角的组合框内容则完全不同了,左上角是窗体及控件对象组合框,右上角是事件组合框,如图3所示。
图3.左右上角组合框
首先把对象“UserForm”初始化,在事件框中选择Initialize,并在Initialize的过程框架内加入下列代码:
PrivateSubUserForm1_Initialize()
UserForm1.TextBox1.Text=""‘加载“TextBox1”控件并将其“Text”置空
UserForm1.TextBox2.Text=""
UserForm1.TextBox3.Text=""
UserForm1.TextBox4.Text=""
UserForm1.TextBox1.SetFocus=""
EndSub
以上程序的主要作用是加载并将文字框控件置空,SetFocus的作用是聚焦“TextBox1”控件。
接下来给4个变量赋值并给两个按钮“确定”和“取消”添加程序代码如下,效果如图4所示:
PrivateSubCommandButton1_Click()
L1=Val(UserForm1.TextBox1.Text)‘将“TextBox1”控件的“Text”属性值赋给L1
L2=Val(UserForm1.TextBox2.Text)
r=Val(UserForm1.TextBox3.Text)
m=Val(UserForm1.TextBox4.Text)
UnloadMe‘卸载窗体
Callmill‘调用“mill”过程,按输入的参数画图
EndSub
PrivateSubCommandButton2_Click()
UnloadMe‘卸载窗体
EndSub
图4.窗体过程代码窗口
3.4在代码窗口编辑应用程序代码
此处的应用程序代码分三个小部分,分别是“定义公共变量”、“创建一个加载窗体的过程”和“创建一个绘制示意图的过程”,具体代码如下:
Publicl1AsDouble,l2AsDouble,rAsDouble,mAsDouble‘定义公共的双精度型变量
PublicSubmill_main()‘创建公共的子过程
UserForm1.Show‘调用窗体
EndSub
PublicSubmill()‘创建公共的子过程
Dimp1AsVariant‘定义变体型变量
Dimp2(0To2)AsDouble,p3(0To2)AsDouble,p4(0To2)AsDouble,p5(0To2)AsDouble
Dimp6(0To2)AsDouble,p7(0To2)AsDouble,p8(0To2)AsDouble,p9(0To2)AsDouble
Dimp10(0To2)AsDouble,p11(0To2)AsDouble,p12(0To2)AsDouble,p13(0To2)AsDouble
Dimp14(0To2)AsDouble,a1AsDouble,a2AsDouble
DimlineobjAsAcadLine,arcobjAsAcadArc
p1=ThisDrawing.Utility.GetPoint(,"零件左下角定位:
")‘以下是计算各个点坐标
p2(0)=p1(0)+l1:
p2
(1)=p1
(1)
p3(0)=p2(0):
p3
(1)=p2
(1)+l2
p4(0)=p3(0)-l1:
p4
(1)=p3
(1)
p5(0)=p1(0)-10-r-m:
p5
(1)=p1
(1)-10-r-m
p6(0)=p1(0):
p6
(1)=p1
(1)-m-r
p7(0)=p2(0)+m+r:
p7
(1)=p6
(1)
p8(0)=p7(0):
p8
(1)=p3
(1)+r+m
p9(0)=p4(0)-r-m:
p9
(1)=p8
(1)
p10(0)=p9(0):
p10
(1)=p5
(1)
p11(0)=p1(0)-m:
p11
(1)=p1
(1)-m
p12(0)=p2(0)+m:
p12
(1)=p2
(1)-m
p13(0)=p3(0)+m:
p13
(1)=p3
(1)+m
p14(0)=p4(0)-m:
p14
(1)=p4
(1)+m
a1=0:
a2=6.28'以下在模型空间创建直线对象
Setlineobj=ThisDrawing.ModelSpace.AddLine(p1,p2):
lineobj.color=acRed
Setlineobj=ThisDrawing.ModelSpace.AddLine(p2,p3):
lineobj.color=acRed
Setlineobj=ThisDrawing.ModelSpace.AddLine(p3,p4):
lineobj.color=acRed
Setlineobj=ThisDrawing.ModelSpace.AddLine(p4,p1):
lineobj.color=acRed
Setlineobj=ThisDrawing.ModelSpace.AddLine(p5,p6):
lineobj.color=acGreen
Setlineobj=ThisDrawing.ModelSpace.AddLine(p6,p7):
lineobj.color=acGreen
Setlineobj=ThisDrawing.ModelSpace.AddLine(p7,p8):
lineobj.color=acGreen
Setlineobj=ThisDrawing.ModelSpace.AddLine(p8,p9):
lineobj.color=acGreen
Setlineobj=ThisDrawing.ModelSpace.AddLine(p9,p10):
lineobj.color=acGreen
Setlineobj=ThisDrawing.ModelSpace.AddLine(p11,p12)
Setlineobj=ThisDrawing.ModelSpace.AddLine(p12,p13)
Setlineobj=ThisDrawing.ModelSpace.AddLine(p13,p14)
Setlineobj=ThisDrawing.ModelSpace.AddLine(p14,p11)
'以下在模型空间创建圆弧对象
Setarcobj=ThisDrawing.ModelSpace.AddArc(p5,r,a1,a2):
arcobj.color=acBlue
Setarcobj=ThisDrawing.ModelSpace.AddArc(p6,r,a1,a2):
arcobj.color=acBlue
Setarcobj=ThisDrawing.ModelSpace.AddArc(p7,r,a1,a2):
arcobj.color=acBlue
Setarcobj=ThisDrawing.ModelSpace.AddArc(p8,r,a1,a2):
arcobj.color=acBlue
Setarcobj=ThisDrawing.ModelSpace.AddArc(p9,r,a1,a2):
arcobj.color=acBlue
Setarcobj=ThisDrawing.ModelSpace.AddArc(p10,r,a1,a2):
arcobj.color=acBlue
EndSub
‘在VBA中应用AUTOCAD命令
PublicSubcommand()
ThisDrawing.SendCommand"_rectang"&vbCr&"50,50"&vbCr&"200,150"&vbCr
EndSub
3.5宏的运行
将上述操作得到的宏保存为Project.dvb,接下来就可以调试和运行程序了,给学生讲课的时候可以用到。
来到AutoCAD2004的界面点击菜单【宏】—【宏】或按快捷方式ALT+F8弹出【宏】对话框,点击【VBA管理器】按钮后效果如图5所示,然后就可以加载和运行Project.dvb,效果如图6所示。
图5.【VBA管理】窗口
图6.【宏】窗口
运行该宏后出现对话框【外形加工】如图7所示,可以在文字框内输入零件大小、刀具半径R及加工余量m,然后按【确定】按钮得到外形加工仿真图。
当然,由于其参数化特点,L1,L2,R,m四个变量可以任意赋值,于是可以看到各种赋值效果如图8所示。
图7.【外形加工】窗口
图8.各种赋值后的效果图
3.6宏的修改
在实际教学中,也可能对以上效果并不满意,于是可以进行一系列的修改,如线条的颜色(“lineobj.color=acRed”的作用就是让零件轮廓的颜色显示为红色),刀具半径右补偿G42的体现(如图9所示)等等。
图8.刀补G42的体现
以上的示例将VBA的参数化特性表现了出来,由于讲解的数铣内容比较浅显,因此VBA的强大特性还不能完全体现出来,有待在今后的数铣一体化教学中进一步开发。
4.用VLisp编程画正弦曲线
随着数铣一体化教学的深入开展,一些简单的轮廓和曲面的绘图与加工已经不能满足教学的需要,曲面主要是一些复杂的昆氏曲面,曲线则是一些多元函数曲线。
CAXA、MasterCAM等软件也有相关曲面曲线的绘制功能,然而当条件不足或功能使用受阻时呢?
当我们用VLisp编程开发出一些自己需要的功能时,所有问题都迎刃而解,与VBA有一定的区别,VLisp编程得到的不是宏,而是一个指令。
当然,VLisp与VBA也可以结合来使用。
以下阐述用VLisp编程画正弦曲线的过程,正弦曲线的方程为:
y=rsin(2πx/h),0≤x≤h,周期是h,幅值是r
4.1准备工作
AutoCAD2004打开后点击菜单【工具】—【AutoLisp】—【VisualLisp编辑器】来到【VisualLisp为AutoCAD】的工作界面,当然也可以在记事本上把程序编写好后粘贴过来。
4.2编程及运行
了解编程的规则,新建文件后就可以开始编程了,以下是程序及说明:
(DEFUNc:
sin();定义函数”c:
sin”
(setqsp(getpoint"起点:
"));输入起点“sp”
(setqr(getint"输入幅值:
"));输入幅值整数r
(setqh(getreal"输入周期:
"));输入周期实数h
(setqxs(nth0sp));分离起点“sp”的x分量
(setqys(nth1sp));分离起点“sp”的y分量
(setqpt1sp);将“sp”的值赋给点“pt1”
(setqx0.0);x初始化为0
(setqy0.0);y初始化为0
(setqdx(/h180));计算x增量
(setqi1);i初始化为1
(while(<=i180);开始循环
(setqx(+xdx));计算下一点的x
(setqy(*r(sin(*x(/6.28h)))));计算下一点的y
(setqxe(+xxs));计算平移后的x
(setqye(+yys));计算平移后的y
(setqpt2(listxeye));构造点表
(command"line"pt1pt2"");从点“pt1”画到点“pt2”
(setqpt1pt2);把当前的“pt2”赋给“pt1”
(setqi(+1i));循环记数器加1
(command"");中止画线命令程序检查无误后保存为sin.lsp到硬盘,然后回到AutoCAD界面,点击菜单【工具】—【AutoLisp】—【加载】,系统弹出对话框如图9所示,选择sin.lsp后点【加载】按钮,此时AutoCAD命令提示行提示为“命令:
_appload已成功加载sin.LSP”,在命令提示行输入“sin”并按空格键,显示该命令可以正常使用了。
图9.VLisp程序的加载
根据提示任意给出起点、幅值和周期,就可以得到相应的正弦曲线了,譬如给出幅值为60,周期为200后得到的正弦曲线如图10所示。
在实际教学中,各种复杂的曲线方程变化多端,但此时实现起来却并不难,变的只是公式,将上述程序中的公式稍作变化就可以满足各种需求,且其参数化特点更加增强了我们设计的灵活性。
5.小结
以上只是针对AUTOCAD2004的二次开发软件VLisp及VBA在数控铣一体化教学中的实际应用各列举了一个例子,并不能完全体现VLisp及VBA的强大功能,随着数控铣一体化教学对教师越来越高的要求,充分利用VLisp及VBA的强大功能促进教学已经刻不容缓,
事实上VLisp及VBA编程已被用到“图形编程”领域,即通过“图形交互界面”就可以得到数控加工代码,当然也可以用来仿真,相信随着更深入地学习,我也可以达到这个水平。
参考文献:
[1]张振宇,刘彦国AutoCAD二维图形数控自动编程系统的设计,兰州工业高等专科学校学报,2002.2
[2]张振宇,用VisualC++6.0可视化设计AutoCAD对话框的方法,兰州工业高等专科学校学报.2002.4
[3]张振宇,梁补女,刘彦国,用ObjectARX开发AutoCAD2000功能,兰州工业高等专科学校学报,2003.1
[4]刘林,AutoCAD2008中文版高级应用教程,华南理工大学出版社,2008.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAD 二次开发 软件 在教 中的 应用
