基于AutoCAD命令行计算功能的二次开发.doc_第1页
基于AutoCAD命令行计算功能的二次开发.doc_第2页
基于AutoCAD命令行计算功能的二次开发.doc_第3页
基于AutoCAD命令行计算功能的二次开发.doc_第4页
基于AutoCAD命令行计算功能的二次开发.doc_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

基于AutoCAD命令行计算功能的二次开发完成日期: 指导教师签字: 答辩小组成员签字: 潍坊科技学院学士学位论文 摘要摘要AutoCAD作为一种计算机辅助画图软件,由于其强大的设计作用,目前已经广泛的应用到机械、建筑、电气、服装等设计领域,在世界范围内受到了广大人民的好评,并且也是计算机设计中必不可少的一部分。不过我们平常在使用的过程中,相信大家也已经看到了这个软件并不是完美无缺的,也是存在很多缺点的。最常见的就是在绘图过程中我们会发现无法显示长度数据,虽然是因为计算机本身配置也比较低,但是这也是一方面的缺点。另外例如,在执行画直线这一命令时经常需要加减运算也就是需要行计算命令,但是在默认状态下直接输入计算数据回车之后系统不予计算,而是必须先输入计算命令再进行数据计算,因此使得画图变得更加麻烦。所以,本片论文就AutoCAD软件本身这一不足之处提出解决方案在软件本身基础之上对行计算功能进行二次开发,所谓二次开发就是用高级语言进行运相应的运算程序的编写,并把相应的运行参数组织起来通过外部程序(参数)入口,植入到AutoCAD软件内部在原有的计算命令基础上进行改善,解决实际画图操作中带来的不便,使画图过程更加快速流畅、更加高效。为了我们以后更好的体验AutoCAD这个软件,我们要想办法对其进行二次设计发明。关键词:AutoCAD,命令行,二次开发,高级语言ABSTRACTAutoCAD is a kind of computer aided drawing software, because of its design, powerful, has been widely applied to machinery, building, electrical, clothing design field, in the world scope by the majority of the people of praise, and is also a part of computer design will not be less. But we usually in the use process, I believe we have already seen this software is not be the pink of perfection, but also has many disadvantages. The most common is in the drawing process we will find cannot display the length of data, although because the computer itself configuration is relatively low, but it is also a disadvantage. As in the execution of this command when drawing a straight line often require the addition and subtraction is the need for calculation command, but by default directly into the system will not be calculated after the calculation data enter, but must first enter the calculation command and data calculation, thus drawing more trouble. So, in this paper AutoCAD software itself this deficiency were put forward based on the software itself carries on two times of developments on line calculation function, the so-called two development is the use of advanced language to carry the corresponding calculation program, and the corresponding operation parameter organized through the external program (parameters) entrance, implantation to the AutoCAD software to improve the calculation of the original command basis, to solve the actual drawing operation inconvenience, the drawing process is more rapid and smooth, more efficient. For our future better experience AutoCAD this software, we must think of a way to carry on the two time design method.Keywords: AutoCAD, command line, senior, secondary development潍坊科技学院学士学位论文 摘要目 录1前 言11.1选题背景11.2存在问题21.3二次开发的目的与意义32 AutoCAD功能及现状介绍42.1软件的主要应用42.2开发现状介绍52.3国内外研究状态73计算功能的二次开发93.1计算功能上的缺点93.2改进的具体分析103.3程序的编写134 结论264.1展望未来前景264.2对企业的效益28致 谢29参考文献30潍坊科技学院学士学位论文 前言1前 言1.1选题背景 AutoCAD是由美国著名的公司欧特克优先发明创造的,主要是用来画图的设计软件。目前应用最广的领域是机械和其他领域,用其进行绘图和设计工作。作为绘图工具同样在国际上也非常普及。AutoCAD的软件界面设计的非常人性化很方便人们学习使用,界面上有许多简单易懂的图标和文字表述,这样有个好处就是即使使用的人不是专业的,以前没用过或者对电脑不熟悉也能很快掌握这个软件的使用,并且还能使人们在使用的过程中能发掘新的方法或者技巧,使以后的工作更加简便。与此同时,这个软件还有一个非常好的优点,那就是可以适用大多数的计算机系统。AutoCAD二次开发的发展情况:伴随着现代社会的发展,绝大多数企业对于产品的内部结构和外形设计的要求越来越严苛,同时产品更新换代的速度也越来越快,很显然此时的传统绘图方式已经不能满足时代和企业的需求。所以说计算机辅助设计软件的使用对于近代工业的发展具有划时代的意义,它大大的提升了画图效率,同时也缩短了产品开发设计时间。作为计算机辅助和绘图软件,AutoCAD是欧特克在1982年十二月份研发出来的,在经过了三十多年的不断更新与发展,该软件得到了迅速应用普及。这项技术在内容方面的改进还是比较大的,这也成为一个国家的软件实力的重要指标。同时它也成为企业拓展市场的最为主要的技术手段。这个软件从被发明到现在利用率很高,并且很快的被普及,原因很简单,那就是他画图准确并且方便快捷。并且图片的质量和画图的速度也有很大的提高。设计精度在一定程度上也得到了提升。该软件的引用将人类的智慧和创造力与计算机强大的计算能力,以及庞大的存储数据能力结合起来。 在这个经济发展迅速科学技术水平不断提高的年代,AutoCAD在各个国家都受到了很好的欢迎,并且它的发展还正处在上升的时期,前途更是不可限量。例如,我国就非常重视该技术的发展与应用,并已经视为重点来抓,国家相关部门已经实施了许多应用工程,在全国范围内创建了专门的网络培训,并将软件的开发视为重点项目。目前许多较大和中型甚至一些小企业都在积极发展这一技术,并寄希望于通过该技术增强企业产品在市场上的竞争力同时占据更多的市场份额。此外,AutoCAD教学也在各大院校受到了高度关注,基于这一基础使得我国的CAD技术整体水平快速得到提高。1.2存在问题AutoCAD软件设计的初衷是缩短绘图时间解放人们的生产力,这就注定了它是一款大众软件,也就是说它能解决市面上的大多数大众问题.但这就使得软件本身存在一个很大的缺陷,软件设计不可能面面俱到,因此对于许多客户的特殊要求该软件是不能解决的,就像许多类似凸轮机构,转动副还有一些螺栓等。假如我们要是逐个绘制的话,就会浪费很多时间和精力从而使得制图效率大打折扣。基于这一缺点就使许多软件用户颇受困扰,所以,对AutoCAD软件的二次开发就显得极为重要而且迫在眉睫。 此外除了上述的缺点还有就是软件命令行计算问题上的缺陷,平时在命令行输入表达式如8+2默认情况下敲击回车是不输出计算结果的,比如在日常绘图时如执行直线命令指定起点位置并输入计算表达式敲击回车键在系统默认的情境下系统不会对该命令给予相应的计算并给出结果,如果需要计算数据必须首先启动cal命令再输入相应的计算数值系统才会进行数据计算并给出结果。此举在实际绘图中带来了诸多不便,需要重复的执行计算命令时更是会浪费许多时间和精力使得绘图过程变得更加繁琐。我国CAD二次开拓手艺始于70年月初,部门大中型企业和研讨所开端采取CAD二次开拓手艺。到今朝为止,CAD二次开拓手艺已在良多企业尝试。不过它的二次开发也并不是非常完美的,也是有缺陷的。比如在绘图的过程中我们没有真正的使用到这个软件,很多在脑海中想到的画面不能再软件上画出。其次产物和零部件的尺度化缺乏。再有就是集成化水平不高。贫乏完全的数据经管系统和过程经管系统。由于贫乏完善的数据经管和过程经管,企业的少量数据和设想过程得不到有用的掌握和经管,使得设想使命间的等候时候长,各部门之间的消息传送速度缓慢,数据分歧性差,安全性差。CAD的二次开发设计也是具有重大历史意义的。CAD二次的开发设计融合以前所有领域的设计理念,它的发展水平已经影响到一个国家在国际中的地位。我国一向看重CAD二次开拓手艺的引进、奉行和利用任务,但同时也很是看重CAD软件的自立开拓。现如今,我们世界上最流行的CAD二次开发系统有国际主权版的CAD系统和国外商品化的CAD系统。因为国外的CAD技术比较成熟,发展比国内的早好多,所以在市场中仍然是占了很大一部分。1.3二次开发的目的与意义AutoCAD二次开发的目的意义:AutoCAD技术目前已经广泛深入并且应用到国家经济的大多数生产和设计领域,在轻工业、纺织业、医疗方面、动画制作、机械、机电乃至体育及其他方面都是能够发现它的踪影。AutoCAD软件大幅度缩短了设计时间,并使设计方案变得更加完美、使得技术人员的工作量大大减少,该软件的使用可以说是相当于解放了工作人员的大部分的体力和脑力,这对于企业和社会的效益是不言而喻的。 目前就AutoCAD这一软件的应用和推广在我国各大中小型企业都已经初具规模。像对于一些起步比较早的企业来说,他们由于实力较为雄厚,所以他们也就拥有足够的资金用于软件的二次开发,并有更多的硬件可供选择用来配置,软件也能及时的得到更新。AutoCAD已经成了这个领域的领军人物,受到了广泛的欢迎和使用。因为AutoCAD软件拥有十分精确的坐标系,因此我们在使用的时候便是能绘制出精确的图形,并能够就图形进行随意的缩进和修改支持数字化仪的精确输入。虽然这样,但是应为AutoCAD是作为一个通用的绘制软件来设计开发的,现实情况下每个企业都有自己的企业和行业标准,甚者许多单位都有自己的技术规格和企业标准,就连一些普通的小企业也是不例外,有着数量庞大的各种图纸设计规范。所以,AutoCAD就不可能做到百分之百完全的满足每个客户的需求。但是AutoCAD本身拥有开放性的体系结构,所以它就允许设计者和使用者在软件的很多方面进行再次的开发和修改,并且可以使用多种高级语言开发,(这些高级语言在本文的后端也会逐一介绍)通过开发就会改善软件本身的一些不足之处从而在个人绘制图形时就会更加得心应手,在这个基础上制图效率就会得到大幅提升给企业或者个人带来的效益就不言而喻了。AutoCAD的二次开发现状基本就是这些了。换句话说,这项技术的创新点主要有两个,一个是功能创新,另一个是工具创新。总之我们的要求就是尽最大的可能来满足使用者的实际需要。3潍坊科技学院学士学位论文 AutoCAD功能及现状介绍2 AutoCAD功能及现状介绍2.1软件的主要应用 Computer Aided Design中文名称:计算机辅助设计即我们通常所说的CAD软件技术。利用计算机及它的图形设备辅助绘图人员进行图形设计工作。在产品以及工程设计中,计算机可以帮助设计人员承担制图、信息存储,图形设计等多项工作。在设计中通常要用计算机对不同的方案设计进行大量的分析、计算和比较,最终以决定最佳方案;对于各种设计信息,不论是文字的、数字的或者是图形的来说,都能存放在计算机的外存或者内存里面,并能很快的地检索;设计师常常用到的设计草图,草图极为繁琐的工作可以交给辅助设计计算机来完成;由计算机自动产生的设计结果,可以很快的作出图形样式出来,使设计人员及时对设计作出修改和调整;利用计算机可以进行与图形的缩小、放大、旋转、平移、拉伸等有关的图形数据加工工作。AutoCAD 能够减轻设计人员的工作量,缩短设计时间和提高设计效率。自20世纪50年代第一台计算机绘图系统在美国诞生以来,开始出现具有简单绘图输出功能的被动式的计算机辅助设计技术。在六十年代初的CAD表面技术,在计算机图形学中商业化推出设备。七十年代,完整的CAD 系统开始形成,后来出现了能产生形象逼真图形的光栅扫描显示仪器 , 推出了图形输入板、手动游标等许多种样式的图形输入设备,促进了CAD技术的发展。在八十年代,随着微处理器的出现使得超大规模集成电路的强和存储设备,工程工作站的产生,在中小企业愈发流行的CAD技术。八十年代中期以来,CAD 技术向智能化、集成化、标准化方向发展。一些标准的图形功能和接口软件相继产生,为CAD 技术的推广、数据共享软件移植起了重要的推动作用;系统构造由过去的简单功能变成强大的综合功能,出现了计算机辅助制造与辅助设计联成一个整体的计算机集成制造体系;并行处理技术、多处理机、网络技术、固化技术在CAD中的应用,大大地提升了CAD系统的性能;专家系统和人工智能技术引入CAD,出现了智能CAD技术,使CAD 系统的问题求解能力大为提高,设计过程更加趋向于自动化。现在,CAD 已在电气电子、软件开发、科学研究、机电设计 、出版业、工厂自动化、建筑工程、地质勘测、艺术等各个领域得到广泛应用。系统组成通常以具有图形功能的交互计算机系统为基础,主要设备有:图形显示终端,计算机主机,磁带机,扫描仪,打印机,图形输入板,绘图仪,以及各类软件。 工程工作站一般指具有三维图形处理超级和小型机功能的一种单用户交互式计算机系统。它有强大的计算能力,用严格的图形软件,有较高分辨率的显示终端,而且能够在资源共享的局域网操作,已形成目前最流行的CAD系统。2.2开发现状介绍由于AutoCAD二次开发的工具包是市面上普通计算机通用的一种版本。所以通用性成了他的最大的生命力的所在。也正是这样,才使他能在多个领域内广泛的应用。不过在不同的领域内对软件的要求也就会有所不同,所以这个软件业充分考虑了这个问题,从开发到现在已经出了好多的版本和工具以适应不同的工作环境。下面对AutoCAD的三代开发工具进行浅析。一、第一代开发工具AutoLISP AutoLISP是第一个被开发出来的CAD工具。这是一种语音装置设计具有自主辨别性能,在所有的语言中,他具有很大的方便性和实用性,是CAD二次开发的一项重大的成就。这个工具在CAD软件中充当了指挥者的地位,几乎大部分的命令都可以通过它来执行。 AutoLISP这个工具最重要的一个作用是在绘图的过程中能够实现参数化的设计,能够自主实现参数设置,自己更改参数,非常方便。AutoLISP的优越性有很多,最实用也是很重要的一点就是语言设计简洁易懂,这样不管是新手还是老手都能很轻松的上手。再一个就是此软件直接是CAD的二次开发,很容易与CAD联系起来,在画图的过程中很方便的用到。不过任何软件有优点就必然有缺点,首先AutoLISP的功能不是很全面,只能处理特定的那一件事情。其次它在工作过程中运行速度相对于其他软件来说并不快。并且这个程序很容易被偷取。LISP毕竟是机器软件,他在很多表述方面还是不尽人意,还有很多方面人们比较盲目。AutoLISP的这些特点,使其仅适合于有能力的终端用户完成一些自己的开发任务。二、第二代开发工具ADSADS是一种非常灵活并且方便实用的编译软件。ADS可以通过C语言编辑器对许多不被识别的程序软件转化成CAD能识别的软件,然后通过CAD表现出来。这样有一个好处就是把CAD和C语言这两方面的优点都综合到了一块,提高了工作效率和质量。ADS本身有很强大的功能,并且他的工作能力很广泛,这与AutoLISP不同,也是相比于前者优越的地方。还是就是他的工作效率很高,速度也快。并且在自己编辑的时候能够同时找出程序的错误之处并修改,这也给使用者带来了极大的方便。可读性也强。 而他的缺点便是这个软件不太适应新手,也就是说入手性不是很强,因为C语言编辑很难被掌握,所以也就不适应与大部分人。同时这个程序还有个很大的缺陷就是由于自身的不足或者出现错误往往会导致系统的崩溃。并且这种代码和AutoLISP比起来要长很多,编译起来不是很方便。三、第三代开发工具Visual LISP,ARX和VBA等1Visual LISP(VLISP)VLISP其实就是AutoLISP的进一步扩展和开发利用,AutoLISP有的功能VLISP也全都有,并且在此基础上还有很多AutoLISP所没有的新功能。VLISP对语言进行了扩展,可以通过Microsoft ActiveX Automation接口与对象交互。作为一个扩展版的工具,VLISP综合了很多的工具的功能,从而在工作的过程中提高了工作效率,并且VLISP还能单独发布一些程序软件。2ARXARX是一种直接面对对象的开发环境和接口。ARX的地址空间并不是单独就有,而是和CAD同时享用一个。这也有一个方便就是APK能够直接访问AutoCAD数据库,从而为我们提供相应的函数和数据等等。并且能够为我们提供CAD所独有的功能和实惠。是用户充分体验CAD所带来的方便和快捷。ARX与AutoCAD、Windows之间是直接通讯的。AutoLISP和ADS和AutoCAD通讯的方式跟前者是不一样的,这也导致它们与AutoCAD并不是结合在一起,而在上面我们说到ARX和AutoCAD时共享一个地址,所以,程度的运行速度和稳定新是前者无法比拟的。因为APK是在Windows和VC+编程环境下进行的,所以,对于设计者来说必须具备相关的专业知识才能进行这项工作。能简洁高效地实现许多复杂功能。这里顺便提一下ADSRX。ADSRX也是CAD的一个开发设计环境,是包含在APK里面的一个小部分,他的大体工作流程和ADS差不多。都是同时用到了C语言和AutoCAD。3VBA等多种开发工具在计算机界有一套标准那就是ActiveX Automation。在这个标准中最最重要的一方面就是在Windows中,一个应用程序可以被另一个应用程序所控制,ActiveX Automation服务器在CAD中得到了广泛的应用,并且CAD的许多功能可以由他来操纵。不管是从外部还是从内部二次开发CAD7,都是通过调用AutoCAD的对象体系结构来进行的。这项技术将AutoCAD 2000的许多功能和用法都综合在了AutoCAD ActiveX对象中,供编程使用。许多高级语言都可以实现CAD的二次开发工作,例如,高级语言C+也就是C语言也可以进行程序的二次编写与原有的CAD程序进行对接使得软件实现更强大的功能。2.3国内外研究状态 CAD这项绘图技术在这几年的发展可以说是突飞猛进,并且受到了广大人士的欢迎,在一个国家中它现在,已经是一个衡量工业水平的重要标准。它对加速工程和产品的开发,减少产品的设计生产制造时间,并提升产品的质量,同时减少生产产品的成本,增强企业竞争力与创新发挥着重要作用。它的出现在各种领域引起了巨大的变革,特别是在产品设计领域彻底改变了以往的手工绘图模式,大大提高了工作效率,并且还能保证完美的准确性。给企业的运行和生产带来了巨大的影响。这几年, AutoCAD方面的应用软件越来越多,并且样式也多种多样,其本身的作用也就显得越来越重要。现在市场上的CAD软件各种各样,让人们眼花缭乱,所以许多购买者也比较纳闷,因为他们没有那么多的精力来把所有的软件都学会,那么如何购买及使用到自己最为符合的软件是至关重要。 在我国,大多数人们及各大高校企业等使用的都是AutoCAD,所以我们也比较亲切。这个软件是由美国的Autodesk公司即我们平时说的欧特克公司研制出来的,从一开始被研发出来到现在,此软件在各大行业应用极为广泛。并且这项程序软件在很早便是进入了我国,这几十年来也是经历了好多的版本。最早的时候这个软件还是用DOS操作命令来执行,而现在是一种以windows窗口这样的界面来执行的,给使用者提供了大大的方便。AutoCAD软件最早主要是在二维平面上画图设计,但随着社会的进步,这项技术也越来越完善,二维画图已经不能满足人们的工作需求,因为人们就开始考虑用其进行三维画图设计,经过不懈的努力,我们最终开发出了CAD的三维画图设计。这也使他的功能越加完善。不过这也有一些缺陷,随着三维设计的不断进步和发展,这些缺陷也一步步的走了出来。现如今,在各个行业由于工作环境不一样,所以各企业都针对本行业的需求对CAD进行二次开发,并已有许多商品化软件问世。每个行业中CAD的二次开发水平也不尽相同。不过现在我国已经开发出了许多有用的软件,并且形成了一个专门的开发团队。在很早以前,CAD技术在我国还并不是广泛被应用,只在一些大企业中被用到。但是现在,这项技术已经很是流行,不管是在企业还是家庭,还是学校等教育机构都有所应用。并且很多大型企业都已经出现了一个专门的开发团队进行CAD的开发研究。国外很多的企业都不仅仅是止步于现在的CAD技术。他们都想继续往前开发研究,制定了较高的开发战略。他们并不是不停的在一直开发旧的技术上,那样没有成长的可能。他们的眼光一直在往前看,他们是要在已经现有的技术条件下进行二次开发,这样大大提高了工作的效率,并且还能保证自己产品的质量。8潍坊科技学院学士学位论文 计算功能的二次开发3计算功能的二次开发3.1计算功能上的缺点 目前该软件的局限缺点分析及其具体改进措施改进过程中用到的工具及具体方法总结,解决现有AutoCAD软件在命令行只能进行整数除法运算问题,与其他软件相比具有很大局限性,现开发一程序,能在命令行输入输入数据时自动计算。如:可输入10+2;87.5等等自动计算。(现在只能结合cal命令,比较麻烦)。平时我们再在进行平面甚至是许多其他图形的绘制时,常常要进行许多加减运算从而得出画图数据,但是当我们进行运算时就必须要用到计算命令来进行相应的数据计算,但是AutoCAD本身的行计算命令应用起来十分的繁琐,这常常是一个比较令人苦恼的地方。为此,在AutoCAD软件在命令行只能进行整数除法运算问题的现状上,决定改进此不足之处,现开发一程序,能在命令行输入输入数据时自动计算。如:可输入10+2;87.5等等自动计算。论文主要是基于AutoCAD开发语言进行命令行计算程序的重新编写进一步扩展现有的计算功能,通过AutoCAD软件的外部程序入口,附加到原有的AutoCAD软件上,进而实现行计算功能的扩充,同时本文还对CAD的未来的发展进行了描述,还有未来的功能和实际操作给人们带来的方便。下面是AutoCAD命令行计算的两种情况的示例,分别是输入cal命令前后表达式的运算结果显示情况如下图(以10+20为例):上图所示是未输入cal命令下的表达式运算结果,在默认状态下无法输出运算结果。 上图是执行cal命令后的表达式运算结果,且运算结果正常输出。以上的例子是AutoCAD的命令行计算功能的相关演示。从上述例子中我们不难看出,在画图时要使用加减运算就必须启动键盘输入cal这四个字符,且每次执行该命令都务必要做到这一点,然而这一点较不输入该命令软件系统就能进行相应的四则运算而言就显得过于繁琐,给画图的同时加大了时间上带来的压力,使得画图效率迟迟不能提高。但是就该系统而言在执行命令行计算的时候不启动cal来计输入计算表达式就相当于是无稽之谈。因为程序拒绝在未输入cal的前提下计算表达式的结果。 又因为AutoCAD自身有着良好的二次开发条件,软件本身对于软件的开发具有很大的包容性。为此本文提出基于目前的命令行计算功能上的二次开发。3.2改进的具体分析基于上述3.1节中出现的问题我们提出二次开发,并分析具体原因和解决方法,说到原因我们就不得不在脑海中提出两个问题,为什么系统默认的状态下无法实现命令行计算?而为什么输入cal命令就能实现命令行计算呢?对于这两个问题我们细细分析就能得出结果。当我们输入cal命令式系统就会出现正确的表达式输入框所以输入计算数据自然就能得出计算结果。而在默认情况下输入计算数据是无法达到这一点的。所以为此就提出设计方案,利用AutoCAD本身良好的二次开发条件在利用高级语言工具C+的基础上编写系统默认情况下输入数据回车就能输出计算结果的命令行计算程序,从而解决本文中提出的问题,以应用到实际中,给实际的制图过程带来便利。就AutoCAD软件本身这一不足之处提出解决方案在软件本身基础之上对行计算功能进行二次开发,所谓二次开发就是用高级语言进行运相应的运算程序的编写把新的程序通过软件自身的程序接口进一步的进行整合,并把相应的参数综合到一块附加到软件上,然后在原有的计算命令基础上进行改进,这样有利于为使用者在画图的过程中提供方便,使画图过程更加快速流畅、更加高效。AutoCAD本身拥有开放性的体系结构,所以它就允许设计者和使用者在软件的很多方面进行再次的开发和修改,并且可以使用多种高级语言开发,(这些高级语言在本文的后端也会逐一介绍)通过开发就会改善软件本身的一些不足之处从而在个人绘制图形时就会更加得心应手,在这个基础上制图效率就会得到大幅提升给企业或者个人带来的效益就不言而喻了。由于软件本身的行计算功能的不足,现提出二次开发用高级语言VC+作为开发工具也就是C语言编写加法与减法程序然后进行与原有的软件程序整合进而满足本论文的设计目的。1.AutoCAD的C语言开发系统ADSAutoCAD能成为一种通用的CAD系统,因为它提供了强大的命令集和直观易用的用户界面,更主要的是它具有开放的体系结构,允许用户根据自己的需要扩充各种库文件、实用命令和应用程序。扩充AutoCAD命令可以采用AutoLISP语言或AutoCADC语言开发系统(ADS:AutoCAD Development System)两种方式。其中AutoLISP语言因其提供的早,与AutoCAD环境溶为一体,而得到广泛的应用,但AutoLISP语言具有编制烦琐、解释执行、运行效率低的缺陷。从11.0版起AutoCAD提供了ADS,使用现在流行的C语言编制各种AutoCAD实用命令或应用程序,编译后在AutoCAD环境下执行,具有结构化编程、运行效率高、保密性好等优点,因而有广阔的开发应用前景。AutoCAD支持的C语言编译器和连接器有很多种,例如:BorlandC+、MicrosoftC等,用户可根据自己使用的版本和环境选择编译器和连接器。开发ADS应用程序除使用C语言标准库函数和头文件外,还必须使用AutoCAD提供的ADS函数库和头文件,定义ADS的库函数和头文件都安装在AutoCAD的ADS子目录下。它们提供了对ADS的各种定义和说明,编程时必须包含ADS提供的头文件ADSLIB.H,连接时则必须连接ADS的目标库ADS.LIB。编译后的ADS应用程序的扩展名是.EXE。用C语言编制AutoCAD的ADS应用程序与普通的C语言程序不同,它必须支持和使用由ADS环境定义与AutoLISP通讯的接口程序,建立并使用两者之间的通讯接口。按照接口要求,ADS应用程序须按特定顺序,使用特定数值调用特定ADS库函数。在ADS应用程序中,可定义多个实用命令的外部函数。ADS应用程序本身并不能独立使用,而是作为外部函数由AutoLISP加载调用。ADS应用程序编译后用AutoLISP的(XLOAD)函数加载,加载成功后ADS应用程序的外部函数都处于非激活状态,等待AutoLISP发出请求,此时ADS应用程序的外部函数就可以同AutoLISP定义的函数一样使用。执行ADS外部函数时,ADS应用程序对AutoLISP的请求做出响应,在此响应过程中,AutoCAD和AutoLISP都处于非激活状态,等待ADS的外部函数返回结果。这就是ADS的由消息驱动机制。ADS应用程序都采用一个无限循环来实现消息分发机制,将外部函数置于无限循环中,等待AutoLISP发出请求,直到卸载该ADS应用程序。编写ADS应用程序时,建立和使用与AutoLISP的接口、采用无限循环的消息分发机制,基本上是固定的,可以从AutoCADCustomizationManual中获得,用户所要做的是编写实现自己目的的外部函数。加载的ADS应用程序一直驻留在内存中,为了提高系统的运行速度,对暂时不使用的ADS应用程序可以使用(XUNLOAD)函数卸载。2.AutoCAD的对话框编程(PDB)为了使用户能设计与AutoCAD内部命令一致的用户界面,AutoCAD提供了可编程对话框接口PDB(Programmable Dialog Boxes),允许用户很方便地设计与AutoCAD提供的对话框一致的对话框。对话框设计采用的是AutoCAD提供的对话框控制语言DCL(Dialog-boxControlLanguage),用以描述对话框的组成和工作方式。而对话框如何使用取决于调用它的应用程序,ADS提供了使用对话框的函数。使用DCL语言描述对话框形成的文件扩展名为.DCL。一个对话框由一个框和框中的若干个控件组成。AutoCADPDB预定义了一些基本控件,如按钮(Button)、编辑框(EditBox)、图象(Image)、列表框(ListBox)等(AutoCAD提供的BASE.DCL文件中有完整的描述)。根据需要用户可引用、改变预定义的控件或定义新的控件,还可将若干个控件通过行(ROW)或列(COLUMN)的方式组合成一个控件组,形成一个树形结构的对话框,其根部是对话框本身,树叶是每个控件。一个对话框一般都有确定按钮和取消按钮,以便接受或放弃对话框中的输入,并关闭对话框1。控件的布局、外观和行为是由控件的各种属性决定,每种属性由名字和值组成,属性的值必须有一个特定类型,就象程序设计语言中的变量有变量类型一样,属性的值有如下类型:整数、实数、字符串和保留字。用户可以改变控件属性的值。有些属性适用于所有控件,有些属性则是某些控件专用的。属性的指定是可选的,不指定时取默认值。此外用户还可以自定义属性,但属性名不得与预定义属性名冲突。DCL语言仅仅定义对话框,如何使用取决于调用该对话框的应用程序。AutoLISP和ADS均提供了管理对话框的各种函数(如装入、显示、初始化对话框、存取控件属性、卸载等等操作)。用C语言编写ADS应用程序时,如果使用对话框,必须包含ADSDLG.H,ADS应用程序中处理对话框的定义和说明均在该头文件中。3. AutoCAD图形数据库的结构 AutoCAD是一个完整的交互式图形系统,它维持着一个十分紧凑的图形数据库,ADS提供了大量对AutoCAD图形数据库进行访问和修改的函数,通过这些函数对图形数据库进行操作,可以扩充绘图和编辑命令。AutoCAD的图形由若干实体组成,实体实际上是AutoCAD预先定义的图形元素,例如由Line命令生成的是LINE实体,由Pline、Polgon、Ellipse、dount、3dmesh命令生成的是PLINE实体,此外还有CIRCLE、ARC、TEXT、3DFACE、POINT等等实体。所有实体的信息都包含在图形数据库中。图形数据库由顺序出现的标题节、表节、块节和实体节组成。标题节用来记录与图形有关的变量设置。表节包含多个表,即线型表、层表、字体表等,每个表由数量可变的表项组成,用来记录图形中使用的线形定义、图层定义和字体定义等等。块节用来记录图形中所有块的定义信息。块节中实体的格式和实体节中相同。实体节用来记录图形中所有实体的定义信息。ADS的选择集操作函数、实体操作函数和符号表访问函数可以实现对AutoCAD图形数据库的访问和修改。在AutoCAD操作界面下,以VC+为开发工具编写好程序后,通过“工具”菜单下的“加载应用程序”选项,再选择加载的程序来源路径,选中后开启AutoCAD加载的程序便会自动启动,这样就可使实现二次开发,及AutoCAD命令行计算功能得到了加强。下面一节内容就运算程序的编写进行展开。3.3程序的编写简单地VC+四则运算程序分别有整形(int)和浮点型(float)。下面分别对两种类型的数字计算进行程序编写:3.3.1 加法程序通过上面的描述,首先设计一个加法运算的程序进行试验。VC+程序需要经过编译以及组建两个过程,将文件最终转换成*.exe的可执行文件同时检测程序是否含有错误,然后才能够运行程序。加法程序编写如下:#include stdio.hint add_number(int num1, int num2)int num3 = num1 + num2;return num3;int main()int number_1=0, number_2=0,number_target=0;scanf(%d%d, &number_1, &number_2);if (number_1 0 & number_2 0)number_target = add_number(number_1, number_2);printf(%d,number_target);scanf(%d+%d, &number_1, &number_2);return 0;将程序输入Visual C+,调试检查是否正确并运行,过程如下:图3.3加法编译程序图3.4加法程序组建程序编译组建正常,运行如下:图3.5 加法程序运行由上述可知,程序运行正常,并且可以实现预想的计算。现将程序加载到AutoCAD,显示运算结果如下图:图3.6 加法程序在AutoCAD中运行如上图所示,达到预期的结果,未运行cal命令依然实现了10+20=30的计算。综上所述,通过VC+加法程序可以实现对AutoCAD命令行计算的二次开发。下面进行AutoCAD命令行计算的减法运算。3.2.2减法程序程序如下:#include stdio.hint add_number(int num1, int num2)int num3 = num1 - num2;return num3;int main()int number_1=0, number_2=0,number_target=0;scanf(%d-%d, &number_1, &number_2);if (number_1 0 & number_2 0)number_target = add_number(number_1, number_2);printf(%d,number_target);scanf(%d%d, &number_1, &number_2);return 0;将程序输入VC+,并且编译组建如下: 图3.7减法程序编译 图3.8减法程序组建程序编译组建正常且无误,将程序执行,结果如下:图3.9 减法程序运行减法程序执行正常且没有错误,将程序加载到AutoCAD中,进行运算,结果如下:图3.10 减法程序在AutoCAD中运行上述结果可以看出,减法程序同样可以正确运行。接着进行乘法程序。3.2.3乘法程序程序如下:#include stdio.hint add_number(int mul_num1, int mul_num2)int num3 = mul_num1 * mul_num2;return num3;int _tmain()int mul_number_1=0, mul_number_2=0,mul_number_target=0;scanf(%d*%d, &mul_number_1, &mul_number_2);if (mul_number_1 = 0 & mul_number_2 = 0)mul_number_target = add_number(mul_number_1, mul_number_2);printf(%d,mul_number_target);scanf(%d%d, &mul_number_1, &mul_number_2);return 0;将程序输入VC+进行编译,如下:图3.11乘法程序编译程序编译无误,继续进行组建,结果如下:图3.12 乘法程序组建程序组建无误,将程序执行,结果如下:图3.13 乘法程序运行乘法程序运行正常并且结果无误,将程加载至AutoCAD中并且执行命令,结果如下:图3.14乘法程序在AutoCAD中的运行如上图所示,乘法程序执行无误,并且可以实现不在cal命令下的命令行计算。经过上述三个外部应用程序的加载AutoCAD可以实现整型的加法、乘法以及减法运算,同时另对非整型也就是浮点型数据的计算我们可以编写相应的程序经过调试无误后加载到软件本身上去也可以实现小数形式的数据的四则运算,下面以浮点型的乘法和除法进行程序开发的演示示例:3.3.4浮点型乘法程序程序编写如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication4 class Program static void Ma

温馨提示

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

评论

0/150

提交评论