用VLISP与DCL整合实现绘制抛物线.docx
- 文档编号:16877356
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:21
- 大小:465.78KB
用VLISP与DCL整合实现绘制抛物线.docx
《用VLISP与DCL整合实现绘制抛物线.docx》由会员分享,可在线阅读,更多相关《用VLISP与DCL整合实现绘制抛物线.docx(21页珍藏版)》请在冰点文库上搜索。
用VLISP与DCL整合实现绘制抛物线
延边大学本科毕业论文
用VLISP与DCL整合实现绘制抛物线
作者
院系
专业
年级
学号
指导教师
职称
答辩日期
成绩
摘要
本次毕业设计任务是学习AutoCAD的开发工具VisualLisp与对话框DCL语言整合的具体过程,并通过学习开发简单的实例。
VisualLisp是为加速AutoLisp程序开发而设计的软件开发工具,为AutoCAD提供了一个完整的集成开发环境。
对话框DCL语言所建立的对话框形象、直观,可随意输入、修改,鼠标、键盘并用,是一种深受用户欢迎的界面。
本文对AutoCAD的二次开发工具和对话框DCL语言进行了简单的介绍,对VisualLisp与对话框DCL语言整合过程进行了详细的介绍,并利用VisualLisp与对话框DCL语言整合实现制作抛物线的全过程,对具体的步骤进行了详尽的分析,提出了基本的设计思路,最后给出了利用抛物线的几个生活实例。
关键词:
VisualLisp对话框二次开发抛物线
ABSTRACT
ThisgraduationdesignsthemissionistheconcreteprocessthatthedevelopmenttoolVisualLispthatstudiestheAutoCADintegrateswiththedialogboxDCLlanguage,andpasstheinbriefsolidexampleofthestudydevelopment.TheVisualLispisinordertoacceleratetheAutoLispproceduredevelopmentbutsoftwareofdesignsdevelopmenttool,providedfortheAutoCADagathercompletelydeveloptheenvironment.ThedialogboximagethatthedialogboxDCLlanguagebuildup,keeptheview,caninput,modifyatwill,themouse,keyboardcounteract,isakindofinterfaceforwelcome.ThistextdevelopsthetoolanddialogboxDCLlanguagestocarryonthesimpleintroductiontotheAutoCADtwotimes,integratedtheprocesstocarryonthedetailedintroductiontotheVisualLispanddialogboxDCLlanguage,andmakeuseofthewholeprocessthattheVisualLispintegrateswiththedialogboxDCLlanguagetherealizationmanufactureparabola,carryingonthedetailedanalysistotheconcretestep,puttingforwardthebasicdesignwayofthinking,theendgivemakeuseofthelivingsolidexampleofseveralsoftheparabola.
KEYWORDS:
VisualLispDialogboxsecondDevelopparabola
目录
一、前言………………………………………………………………………………3
二、AutoCAD二次开发工具及对话框综述……………………………………………3
三、VisualLISP设计及具体开发抛物线程序
1.问题提出…………………………………………………………………………7
2.预期目标…………………………………………………………………………7
3.需求分析…………………………………………………………………………7
4.总体设计…………………………………………………………………………7
5.详细设计…………………………………………………………………………8
6.程序流程图………………………………………………………………………10
7.程序源代码………………………………………………………………………11
8.应用实例图………………………………………………………………………14
四、总结………………………………………………………………………………15
五、参考文献……………………………………………………………………………16
一、前言
随着计算机辅助技术的急速发展,美国AutoDesk公司的AutoCAD已成为设计人员手中的一件利器。
随着AutoCAD应用的深入,越来越多的用户发现仅仅利用AutoCAD提供的交互功能已不能满足设计要求,在解决专业性的问题时,这一点显得尤为突出。
这就需要一种智能化的软件,能够通过编程方式来大量成批地去解决一些问题。
AutoCAD的开发性和丰富的开发工具为我们解决新局面这个问题提供了有效的手段。
VLISP和DCL正是解决这一问题的两大法宝。
利用VLISP编程,可以强化AutoCAD原有的命令,创造更有用的AutoCAD新命令。
DCL简化繁琐的环境设定或绘图步骤,进行参数式绘图,从而达到真正灵活控制AutoCAD的目的。
二、AutoCAD二次开发工具及对话框综述
1.AutoCAD二次开发工具综述
AutoCAD是目前微机上应用最为广泛的通用交互式计算机辅助绘图与设计软件包。
AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。
其通用性使得它在机械、电子、航空、船舶、建筑、服装等领域得到了极为广泛的应用。
下面对AutoCAD的三代开发工具进行浅析。
第一代开发工具——AutoLISP是1986年随AutoCADv2.18提供的二次开发工具。
它是一种人工智能语言,是嵌入AutoCAD内部的COMMONLISP的一个子集。
在AutoCAD的二次开发工具中,它是唯一的一种解释型语言。
使用AutoLISP可直接调用几乎所有的AutoCAD命令。
AutoLISP语言最典型的应用之一是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。
另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL(DialogControlLanguage)文件,创建自己的对话框。
AutoLISP具有以下优点:
(1)语言规则十分简单,易学易用;
(2)接针对AutoCAD,易于交互;
(3)解释执行,立竿见影。
AutoLISP的缺点是:
(1)功能单一,综合处理能力差;
(2)解释执行,程序运行速度慢;
(3)缺乏很好的保护机制,源程序保密性差;
(4)LISP用表来描述一切,并不能很好地反映现实世界和过程,跟人的思维方式也不一致;不能直接访问硬件设备、进行二进制文件的读写。
AutoLISP的这些特点,使其仅适合于有能力的终端用户完成一些自己的开发任务。
第二代开发工具——ADS(AutoCADDevelopmentSystem)是AutoCADR11开始支持的一种基于C语言的灵活的开发环境。
ADS可直接利用用户熟悉的C编译器,将应用程序编译成可执行文件后在AutoCAD环境下运行,从而既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势。
与AutoLISP相比,ADS优越之处在于:
(1)具备错综复杂的大规模处理能力;
(2)编译成机器代码后执行速度快;
(3)编译时可以检查出程序设计语言的逻辑错误;
(4)程序源代码的可读性好于AutoLISP。
而其不便之处在于:
(1)C语言比LISP语言难于掌握和熟练应用;
(2)ADS程序的隐藏错误往往导致AutoCAD,乃至操作系统的崩溃;
(3)需要编译才能运行,不易见到代码的效果;
(4)同样功能,ADS程序源代码比AutoLISP代码长很多。
第三代开发工具—VisualLISP,ARX及基于ActiveXAutomation技术的VBA等
1.VisualLISP(VLISP)
VLISP是AutoLISP的换代产品。
它与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCADLISP语言。
VLISP对语言进行了扩展,可以通过MicrosoftActiveXAutomation接口与对象交互。
同时,通过实现反应器函数,还扩展了AutoLISP响应事件的能力。
作为开发工具,VLISP提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以提高二次开发的效率。
另外,VLISP还提供了工具用于发布独立的应用程序。
2.ARX
ARX(AutoCADRuntimeeXtension)是AutoCADR13之后推出的一个以C++语言为基础的面向对象的开发环境和应用程序接口。
ARX程序本质上为Windows动态链接库(DLL)程序,与AutoCAD共享地址空间,直接调用AutoCAD的核心函数,可直接访问AutoCAD数据库的核心数据结构和代码,以便能够在运行期间扩展AutoCAD固有的类及其功能,创建能够全面享受AutoCAD固有命令特权的新命令。
ARX程序与AutoCAD、Windows之间均采用Windows消息传递机制直接通讯。
3.基于ActiveXAutomation技术的VBA等开发工具
ActiveXAutomation技术的完全面向对象化编程的特点,使其开发环境具备了强大的开发能力和简单易用的优良特点,开发工具的选择也具有很大的灵活性。
所以,利用ActiveXAutomation技术,是极具潜力的一种开发手段。
4.Visual LISP 特色显著
由于AutoLisp存在自身无法解决的问题,为了适应AutoCAD环境下的较大型用户化CAD应用系统的开发,Autodesk公司从AutoCADR11开始,推出采用C语言的开发环境ADS(AdvanceDevelopmentSystem),借助C/C++语言的性能和资源,完成许多AutoLISP语言难以实现的任务。
随着Windows平台,面向对象编程技术等先进技术的日益成熟和普及,AutoCAD也和其他系统一样迫切需要一种全新的面向对象编程的开发环境。
在AutoCADR13之后,又推出了新一代的直接面向对象的二次开发工具ARX(AutoCADRuntimeExtension)以及更新的AutoCADR14ObjectARXSDK开发工具包。
为开发高自动化程度,高集成化及高性能的用户化CAD系统提供了一种极为有效的工具。
是AutoCAD目前用户化的主流开发工具。
Visual LISP与AutoCAD
Visual LISP作为一个完整的集成开发环境(IDE),具有自己的窗口和菜单,但它并不能独立于AutoCAD运行。
当用户从Visual LISP IDE中运行AutoLISP程序时,经常需要与AutoCAD图形交互或在命令窗口响应程序提示。
如果Visual LISP 把控制传给AutoCAD时AutoCAD已被最小化,用户必须手动恢复并激活AutoCAD才可继续,Visual LISP不会自动恢复AutoCAD 窗口。
相反,Visual LISP窗口中会出现并保持一个 Visual LISP符号,直到激活AutoCAD并响应了在AutoCAD命令提示处的提示。
启动Visual LISP可在AutoCAD下边的命令栏中输入VLISP,也可在工具中启动,如图:
启动Vlisp后的界面如下图所示:
各组成部分的说明如下:
(1) 菜单栏:
通过选取各菜单项来发出Visual LISP命令。
(2) 工具栏:
提供了对常用Visual LISP命令的快速调用。
Visual LISP共提供了五个工具栏:
“Standard(标准)”、“Search(搜索)”、“View(视图)”、“Debug(调试)”和“Tools(工具)”,如图36-2所示,每个工具栏各自代表不同功能的命令组。
(3) 编辑窗口:
用于编辑LISP文件代码。
如果用户同时编辑多个文件,则Visual LISP使用多个编辑窗口来分别显示文件。
(4) 控制台窗口:
类似于AutoCAD的命令窗口,可在其中输入AutoLISP命令,也可以不使用菜单或工具栏而直接在控制台窗口中调用Visual LISP命令。
(5) 跟踪窗口:
在启动Visual LISP,该窗口将显示Visual LISP当前版本的信息。
而如果Visual LISP在启动时遇到错误,它还会包含相应的错误信息。
(6) 状态栏:
显示提示信息。
比如,当菜单上的某一个菜单项被亮显,则状态栏上将显示相关命令功能的简介;当鼠标指针在工具栏某按钮上停留几秒钟后,Visual LISP将显示工具提示说明按钮功能,并同时在状态栏上显示更详细的描述;当Visual LISP在编辑窗口中打开文件时,状态栏上将显示文件名名称及其路径。
(7) 其他窗口:
有些Visual LISP函数将创建它们自己的窗口来显示结果。
用户不能在这些输出窗口中输入文本,但可以从中复制,并将其粘贴到编辑器或控制台窗口中。
2.对话框综述
AutoCAD随着版本的逐步提高,人机交互界面也越来越先进,在各类对话框中输入参数的交互方式已逐步替代从命令提示行中输入参数的基本方式,因此对AutoCAD进行二次开发,设计定制自己的对话框是必不可少的工作。
对话框使用的界面的设计分为两个部分:
外观与功能。
外观定义对话框有哪些组件,以及这些组件如何布局。
功能则定义每个组件的内容、动作、要返回哪个数据、对其他组件有何影响。
对话框由对话框控制语言DCL编写并定义在ASCII文件中。
对话框中的元素,如按钮、列表、文本、图像、滑动杆和编辑框等都被认为是控件。
每个控件的大小和功能都由控件的属性决定。
对话框的大小和它各个组成部分的布局通过少量的定位信息自动设置完成。
对话框本身并不能完成它所设计的功能,功能的实现要通过AutoLISP等程序语言来控制。
VisualLISP中提供了观察对话框的工具,并且还提供了在应用程序中控制对话框的参数。
要实现对话框的预定义功能,主要分为两个步骤:
首先要编制一个DCL对话框定义文件
该文件是由一个或几个“对话框描述”构成的ASCII文件,扩展名为.dcl,对话框描述定义了该对话框的工作方式和其中包含的成分(如各类按钮、正文编辑框、列表、滑动杆、属性等),并按层次结构加以描述:
然后要编写一个相应的AutoLISP应用程序来控制DCL文件预定义功能,从某种程度上,DCL文件只定义了对话框的工作方式,说明可以拾取哪些按钮、显示什么文件、列表等,但对话框的功用及其行为方式还将取决于调用它的应用程序,而AutoLISP提供了各类管理对话框的函数,包括加载、显示和终止对话框,接受用户响应,初始化动作表达式,存取控件及属性,建立列表和生成图像等。
对话框设计的一般原则
特色:
1.美观2.便于操作3.语言文字说明准确、便于理解4.控件设计风格一致性5.操作控制顺序随意6.实时反馈及时7.对待操作人员宽容8.提供帮助9.测试
通用规范:
1.布局合理2.对话框的大小和位置3.控件的禁止使用4.嵌套对话框5.隐藏对话框6.默认值7.键盘输入8.颜色9.标准化
三、VisualLISP与对话框设计及具体开发抛物线程序
1.问题的提出
传统手工制图以纸、笔、三角板、直尺、圆规等作为辅助工具,用图形和尺寸的形式进行表达说明,这种表达方式大大超越了传统的文字叙述方法。
近几年,随着信息工业的高速发展,计算机软、硬件迅速更新,操作界面逐渐个性化,促使计算机融入人们的日常生活之中。
以纸、笔、尺等为工具的绘图工作,也逐步被计算机所代替,从而形成了计算机辅助绘图(ComputerAidedDesign)的技术领域。
因此计算机辅助绘图不仅应具有计算机操作系统(如Windows98、WindowsNT、Windows2000)本身的功能(如复制与删除文件、中文输入等),而且,应具备传统的制图规范准则。
运用计算机强大的计算和存储功能并具有绘图功能的软件,称为计算机辅助绘图软件。
计算机辅助绘图软件有很多,笔者在学习AutoCAD2002绘制建筑、物理、机械所用图时,经常遇到绘制类似抛物线这类曲线的图形问题。
抛物线必须显示在坐标平面。
在AutoCAD中,如果你只要一个大概的形状,可以用多义线大约画出圆弧状的图形,但是在实际应用中,如建筑绘图、机械制造等方面就要求精度较高的弧状图形,如建设拱桥时,由力学专家给出最佳的方案,既考虑到桥的最大承重能力,又要考虑制造建桥材料的可行性,这是就需要精确的绘制抛物线图形了。
考虑到用户使用方便,笔者使绘制程序与操作简便的对话框相结合,只要在编辑框种输入数据就可以了。
2.预期目标
根据用户的需求设计应用程序再设计对话框,驱动对话框,将用户提供的数据输入到对话框中,单击确定就可得到运算后的图形,如下图抛物线的演示图形:
3.需求分析
需求分析的基本任务是准确的回答“系统必须做什么?
”这个问题。
这一阶段是对系统认识最全面、准确、清晰、得体的一个比较关键的时期。
需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。
因此,必须用行之有效的方法对软件需求进行严格的审查验证,为下一步的总体设计打好基础。
AutoCAD是一种用计算机硬、软件系统辅助人们对产品或工程进行设计的方法和技术,包括设计、绘图、工程分析与文档制作等设计活动。
在设计过程中,设计人员处于主导地位,计算机处于辅助地位。
AutoCAD在建筑、数学、物理等学科都有广泛的应用,将其功能实现以对话框的形式呈现给用户非常受欢迎,因此,笔者就两者的结合情况作了详细的研究,并开发了绘制抛物线这个小程序用以具体实现一下。
下面我具体的介绍一个此软件的系统环境。
(一)功能介绍:
编写对话框程序,将运算程序装入,驱动对话框就可实现其绘图功能。
(二)运行要求
●操作系统为Windows98,Windows2000或WindowsXP。
●内存推荐为64兆以上,128或以上更加。
●具有300MHz处理器(或更高档处理器)的IBMPC兼容机。
●鼠标,键盘。
4.总体设计
经过了需求分析阶段的工作,系统必须“做什么”已经清楚了,现在决定“怎么做”的时候了。
总体设计的基本目的就是回答“概括地说,系统应该如何实现?
”这个问题。
因此,总体设计又称为概要设计或初步设计。
笔者从简单的对话框设计入手,先编写用户可见的对话框.dcl文件,然后编写通过输入的数值运算及绘制抛物线的应用程序.lsp文件,再制作用于显示在对话中的示例幻灯片.sld文件,最后编写驱动对话框的.lsp文件,使输入数值后能调用画图程序显示出来。
5.详细设计
详细设计阶段的根本目标是确定应该怎样具体实现所需要的程序,也就是说,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
下图就是绘制抛物线对话框的结构图:
根据抛物线的方程y=ax2+bx+c,我们只需要输入a,b,c的值就可以,所以选用了三个编辑框,并对它们赋予初值。
为了使对话框美观,直观,又放入了幻灯片文件作为图像显示。
编写绘制抛物线程序时,先选定坐标原点,以坐标原点为基础,将x定为2,4,6三个值,再根据给定的a,b,c的值,依次计算出y的值,再以这些点画直线,将单位都改为毫米,连起来的直线段就看起来就成为了曲线,将单位选的再小一些看起来就效果更好了。
对话框中的图像是在绘图板中制作的AutoCAD幻灯片文件,将需要加工的图片在绘图板中放到最大,在命令栏内输入mslide(制作幻灯片)命令,再保存。
在对话框驱动程序中调用start_image命令,给出幻灯片存放的位置,调用成功后图像就能显示在对话框中,如果调用失败则图像位置为背景色,因为在制作对话框DCL文件时,设定color=-2是取背景色。
最后一项也是本次毕业设计的关键,就是vlisp与dcl的整合,也就是对话框的驱动。
对话框中的控件本身并没有实际意义,需要经过驱动程序才能实现它自身的功能。
下图是一般情况下的对话框驱动过程。
1.加载对话框文件
Vlisp程序首先调用load_dialog函数加载指定的对话框文件,若加载成功则返回一个大于零的整数。
返回的整数类似于文件标识号,是显示和卸载对话框文件的主要参数,应该将其赋给一个变量保存,以备程序调用。
2.将对话框显示到屏幕上
调用new_dialog函数,将以加载的对话框文件中指定名字的对话框按照指定的位置显示到屏幕上,默认位置在屏幕中央。
3.初始化控件
根据对话框文件中控件的属性值对控件初始化,也可调用set_tile、mode_tile或action_tile等函数对控件初始化。
只有经过初始化的控件才有初始的外观、状态、功能。
4.激活对话框
调用start_dialog函数,对话框处于激活状态,等待并接受用户施加在对话框上的操作,直到某一操作直接或间接地调用了done_dialog函数,对话框才消失。
5.用户操作对话框
用户可随意进行单击或切换开关、向编辑框键入字符、选取列表的选项或拖动滑动条等操作。
控件根据用户的操作,执行相应的动作。
6.卸载对话框文件
如果用户选择了“OK”、“Cancel”、“Exit”或其他含有退出功能控件的按钮,则先调用done_dialog函数,对话框从屏幕上消失,再调用unload_dialog函数,卸载对话框文件,释放对话框所占用的存储空间。
7.对话框向应用程序传递函数
“OK”等按钮的动作不但调用了done_dialog函数,同时还设置了对话框退出时的不同状态。
应用程序根据对话框退出是的状态决定是否确认对话框当前接纳的数据。
AutoCAD的二次开发基本都可以按照以上详细设计步骤进行。
7.程序源代码
(1)对话框的设计:
pwx:
dialog{
label="绘制抛物线";//显示在对话框顶部的标签
:
row{//引用行
:
image//引用图像的控件
{width=30;//图像的宽
height=8;//图像的高
key="img_cr";//图像的关键字
color=-2;//图像的背景色
}
:
boxed_column{//引用加框列
label="y=ax2+bx+c";//加框列的标签
:
edit_box{//引用编辑框1
label="&A(mm)";//编辑框1的标签
edit_width=8;//编辑框1的宽度
key="a";//编辑框1的关键字
}
:
edit_box{
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VLISP DCL 整合 实现 绘制 抛物线