毕业论文-AutoCAD设计与绘图应用软件开发_第1页
毕业论文-AutoCAD设计与绘图应用软件开发_第2页
毕业论文-AutoCAD设计与绘图应用软件开发_第3页
毕业论文-AutoCAD设计与绘图应用软件开发_第4页
毕业论文-AutoCAD设计与绘图应用软件开发_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

目录第一章绪论 11.1课题背景 11.2AutoCAD文档保护现状 3第二章CAD技术及二次开发工具 52.1CAD技术开展概况 52.2CAD系统组成 62.2.1CAD硬件系统 62.2.2CAD软件系统 62.3开发工具概述 7第一代开发工具 8第二代开发工具 8第三代开发工具 92.4各种工具的比拟与选择 12第三章电子印章插件的设计及分析 133.1设计要求 13功能需求: 13相关法律法规: 143.2系统设计方案 15电子印章的生成: 15系统方案分析: 16第四章电子印章插件的实现 174.1印章的制作方法 174.2印章子模块的实现 184.2.1日期模块的实现 184.2.2五角星模块的实现 184.2.3印章轮廓的实现 234.3印章插件的实现 25第五章程序在AutoCAD菜单中的嵌入 375.1编辑程序 375.2加载程序 38命令行方式 38对话框方式 39自动加载 415.3运行AutoLISP程序 425.4添加自定的按钮和菜单 44结论 46致谢 47参考文献 48第一章绪论1.1课题背景通信技术特别是互联网技术的飞速开展为人们共享信息提供了便利,但是也为企业重要文档在管理上提出了挑战。近些年来,企业重要文档资料泄漏已经从外部攻击转向内部泄密。如何有效防止内部人员泄密已经成为企业管理层迫切需要解决的问题。现有的防火墙或专用网技术已经可以解决外部人员非法访问的问题,但是无法解决内部人员通过各种方式将电子文档进行二次传播。内部人员窃取企业的机密信息往往比外部攻击的危害更大。内部人员非常容易接触敏感信息,并且他们所窃取信息都具有很强的针对性,往往是企业最核心的机密或数据。同时,内部人员对企业内部的管理机制、运营方法都非常熟悉,他们窃取内部机密就很难被发觉。当前许多企业在各地都建立了工厂及研发机构,同一工程的研发需要几十甚至上百名员工协作完成。由于工作需要,涉及企业机密信息的环节和人员都非常众多,给企业的知识产权保护带来管理上的困难。在以往的商业机密案例中,对知识产权被侵害的取证和赔偿方面的鉴定技术要求都非常高。我国现有知识产权保护法律尚有很多需要完善的地方。在现有技术条件和法律环境下,企业只用通过对自有知识产权进行严密保护、加强防范意识、制定切实可行的规章制度才是很好的选择。企业制定一系列规章制度对各种内部信息的流转加以标准的同时,还应该通过保密工作加强管理。企业在日常运营过程中,为员工提供了很多信息传输方式。这些传输方式方便了员工之间的交流,但是也为内部信息的窃取提供了可能。主要的泄密途径可以是网络(如电子邮件、即时通讯软件等),也可能是其他外部设备(U盘、移动硬盘、刻录机等)。采取断开网络,甚至禁用各种外部设备的方法虽然能够在一定程度上防止信息的泄漏,但是会严重影响企业正常运转。不能因为平安原因导致工作效率的急剧下降和企业资源的浪费。这就使得许多企业因此面临一个难题——即要保证正常的信息交流不受影响,又要最大限度地保障内部信息的平安。企业迫切需要一种切实有效的技术手段能够从根本上防止泄密事件的发生。由于大量的盗窃机密信息的手段往往是最简单的复制和粘贴,而企业网络中的防火墙、入侵检测等手段对这种看似简单的操作却无从下手,甚至起不到应有的防范作用。因此,必须从设计图纸等电子文档本身出发来进行平安防范,才能真正做到防止涉密事件的发生。电子图纸,特别是CAD电子图纸可以说是计算机和工程制图的完美结合。CAD软件是在软件行业里的一场革命,它将工程制图带入了个人计算机时代。在过去的十几年,全世界数以千万计的建筑工程设计师和产品制造工程师利用CAD的数字化设计技术,甩掉了笨重的图板、铅笔和角尺这些束缚人类创造力奔涌的传统设计工具,用数字化方式与无数的施工现场和车间交互各种各样的工程建筑与产品制造信息,使得在数字化工程设计上的设计效率普遍提高。CAD软件也为中国的改革开放和社会主义现代化建设创造了丰功伟绩[1]。电子图纸作为电子文档的一个重要组成局部,在文档信息平安中起着举足轻重的地位。因为电子图纸中所携带的信息往往是企业的具体工作内容,可以说电子图纸的地位要比其他电子文档(如Word文档等)要高得多。比方一张建筑工程图纸的价值可能就是几千万,一旦保护不当造成泄密就会直接导致企业几千万的直接经济损失。更为重要的是,我国军方保存着海量的CAD电子图纸,这些电子图纸迫切需要进行平安保护。因此,对电子图纸的信息平安保护势在必行,不但具有极其广阔的市场前景,而且有着极其重要的军事意义。工程制图方面,AutoCAD软件的广泛应用引起了设计单位工作方式的巨大变革。AutoCAD是由美国Autodesk公司于二十世纪八十年代初为微机上应用CAD技术而开发的绘图程序软件包,经过不断的完美,现已经成为国际上广为流行的绘图工具。AutoCAD可以绘制任意二维和三维图形,并且同传统的手工绘图相比,用AutoCAD绘图速度更快、精度更高、而且便于个性,它已经在航空航天、造船、建筑、机械、电子、化工、美工、轻纺等很多领域得到了广泛应用,并取得了丰硕的成果和巨大的经济效益。计算机辅助制图由于其制图快、清晰、准确,便于修改、传阅,容易保存等显而易见的优点必将源远流长。先进的计算机制图技术在提高工作效率的同时,也引发了一系列新的平安问题。这些平安问题已经成为技术进步和应用的巨大阻碍。在现代化工作方式中,电子图纸往往需要多个部门、多个设计人员合作。电子图纸可以通过网络提交和审批,可以方便地被不同设计人员根据自己的需要进行修改。在图纸被传输、审批和修改的过程中,如何保证图纸信息的完整性,以及如何确认设计者身份的真实性,如何保证设计者对而且只对自己作出的修改局部负责,这些平安问题为新的工作方式的普遍应用带来了新的挑战。在传统的制图过程中,现有的平安机制已经经受了时间的考验。例如:将图纸委托给信任的伙伴或亲自提交就可以保证作品不会被恶意篡改,手写签名或加盖公章也可以很好的验证设计者的身份。这些传统的方法虽然有效,但是工作效率低下,主要依赖于人与人之间的信任关系,而这种信任关系往往是不稳定的。因此,在计算机制图时代,在充分发挥计算机制图技术所带来的诸多优势的根底上,电子图纸技术的进步和应用迫切需要一个适宜的平安解决方案来保证设计人员与部门之间的信任关系。1.2AutoCAD文档保护现状AutoCAD是当今流行的二维绘图软件,拥有广泛的人群。AutoCAD电子图纸的平安问题也已经引起了人们的注意。但是与Word、PDF等格式的文档保护相比,国内外对于AutoCAD电子图纸的保护的研究和应用还处于初级阶段,相关的平安产品也并未得到广泛应用。现如今文档保护方法根本上都是版式化文档保护。它是指以文档版面描述语言为关键,包括文档生成、转换、显示和打印等步骤的文档技术。版式文档大多数情况下都不包含文档的结构化信息,如段落,小节等,但却能够明白的解释文档中的文字、图片和表格等元素,这样做就能够把各种不同格式的文档转换成统一的格式进行处理。现有的文档保护产品,就是利用了版式文档的这种优势,将各类格式的文档一律转换成类似PDF的版式文档,然后对版式文档进行保护。AutoCAD电子图纸以成版式文档保存后,不能直接转换回原来的DWG(或者DXF)格式。这就使得用户对文档的利用带来了困惑。我们希望平安产品在对文档进行保护的同时不影响用户对文档的合理使用。AutoCAD电子图纸的保护远远的落后于AutoCAD软件的应用。造成这种现状的原因主要有两点:1:各类工程图纸的格式的差异,现在仍然没有一个统一的格式来对所有工程图纸格式进行相互转换,即使同一种工程图纸软件(如AutoCAD)也会经常更新版本。2:图形的保护难度非常大。矢量图是用数学方式存储图形信息,它只存储了图形的结构信息,而忽略其它空白局部。矢量图文件格式比位图更加紧凑,在里面中嵌入版权信息的难度非常大。而且,由于Autodesk公司一直不公布DWG图纸格式,外部人员很难解析出文件的具体存储格式,这使得被保护的图纸内容受到限制。电子文档保护这一新兴研究领域越来越受到企业和政府的重视,目前国内外很多企业涉足电子文档保护领域。根据目前国内外电子文档保护所采用的技术,主要有以下几类方法。电子文档保护已经吸引了众多软件和系统开发商的积极参与。作为电子文档的一种重要组成局部,CAD电子图纸的文档平安问题也受到整个行业的广泛重视。Autodesk公司的AutoCAD是CAD软件中市场份额最高的主流CAD软件,在中国有着数以百万计的正版和盗版用户群。但是,与Word、PDF等各式的文档保护相比,国内外对于AutoCAD的文档保护还处于起步阶段。市场上还没有只针对AutoCAD等主流CAD软件进行平安保护的软件问世。这是由几个原因决定的。一是AutoCAD的文档格式难于解析。AutoCAD所在的Autodesk公司将AutoCAD自带的文件格式视为同可口可乐公司配方一样的绝对商业机密,外部人员破解Autodesk公司AutoCAD默认文档格式DWG文件的可能性极小,难度也相当大。文件格式无法解析,加密的强度就大大减小,甚至只能对整个文件进行加密,而不能对顶点、线段、圆等这样的元素进行加密。二是各类CAD软件的文档格式不统一,现在仍然没有一个统一的格式所有CAD软件格式进行相互转换,这就使得从事信息平安的公司不考虑针对某一个CAD软件进行文档保护的本钱问题。三是主流的CAD软件的更新换代速度太快。以Autodesk公司的AutoCAD为例,AutoCAD的更新速度根本上是每年推出一个新版本,而且几乎每三年推出一个全新的Release版本。新的Release版本对上一个版本都进行了大幅改动。这使得很多从事信息平安的公司不能只针对某一个版本进行开发。而且软件升级换代的速度也无法跟上AutoCAD的更新速度。四是矢量图的文档保护难度非常大。矢量图的根本组成局部是顶点、线、圆等元素。在矢量图中嵌入数字水印等版权信息的难度非常大。在矢量图中嵌入矢量印章的难度也非常大。五是现有的一些文档保护软件将各类软件格式一律转换成类似于PDF格式的版式文档,然后对版式文档进行文档保护。虽然国内外对版式文档的平安保护研究已经取得一定突破,但是从版式文档恢复成矢量图的难度非常大[3],在版式文档上对各个矢量元素进行编辑的难度也非常巨大。根据以上研究现状,可以得出如下结论:电子图纸文档保护市场需求量巨大,而且前景非常广阔,世界上数以千万计的CAD软件用户是这个市场的直接需求者。而且,一些主流的CAD软件公司(如Autodesk公司)近年来加强了对盗版软件的打击力度,这一行动的直接结果就是国产廉价的CAD软件近年来销售水平持续攀升。所以,如果对电子图纸文档进行保护,最好能够找到各类CAD软件支持的文档格式,而破解CAD软件默认格式不应该是一个行使有效的方法。同时,对电子图纸文档的保护应针对文件而不应针对版本,最好能够分解出矢量图中的各个元素。在文档保护方法上应采用透明文件加解密的方法对文件进行强制加解密。第二章CAD技术及二次开发工具2.1CAD技术开展概况计算机辅助设计(CAD,ComputerAidedDesign)是利用计算机作为工具帮助工程师进行设计的一切实用技术的总和。它是电子信息技术的一个重要组成局部是促进科研成果开发和转化、实现设计自动化、加快国民经济开展和国防现代化的一项关键新技术;是提高产品和工程设计水平、降低消耗、缩短科研和新产品开发周期、大幅度提高劳动生产率的重要手段;是科研单位提高自主研究与开发能力,企业提高创新能力和管理水平,参与国际竞争的重要条件也是进一步向计算机辅助制造(ComputerAidedManufacturing,简称CAM)、计算机集成制造系统(ComputerIntegratedManufacfaringSystem,简称CIMS)开展的重要根底。CAD技术开发与应用水平己成为衡量一个国家科技现代化的和工业现代化程度的重要标志之一。计算机辅助设计的内容有好多,例如:优化设计、概念设计、有限元分析、计算机仿真、计算机辅助绘图、计算机辅助设计过程管理等。在工程设计中,一般包括两种内容:带有创造性的设计(方案的构思、工作原理的拟定等)和非创造性的工作,如绘图、设计计算等。创造性的设计需要发挥人的创造性思维能力,创造出以前不存在的设计方案,这项工作一般应由人来完成。非创造性的工作是一些繁琐重复性的计算分析和信息检索,完全可以借助计算机来完成。一个好的计算机辅助设计系统既能充分发挥人的创造性作用,又能充分利用计算机的高速分析计算能力,即要找到人和计算机的最正确结合点。计算机辅助设计作为一门学科始于60年代初,一直到70年代,由于受到计算机技术的限制,CAD技术的开展很缓慢,进入80年代以来,计算机技术突飞猛进,特别是微机和工作站的开展和普及,再加上功能强大的外围设备,如大型图形显示器、绘图仪、激光打印机的问世,极大地推动了CAD技术的开展,CAD技术己进入实用化阶段,广泛效劳于机械、电子、宇航、建筑、纺织等产品的总体设计、造型设计、结构设计、工艺过程设计等环节。早期的CAD技术只能进行一些分析、计算和文件编写工作,后来开展到计算机辅助绘图和设计结果模拟,目前的CAD技术正朝着人工智能和知识工程方向开展,即所谓的ICAD(IntelligentCAD)。另外,设计和制造一体化技术即CAD/CAM技术以及CAD作为一个主要单元技术的CIMS技术都是CAD技术开展的重要方向。2.2CAD系统组成2.2.1CAD硬件系统硬件是CAD系统的物质根底。硬件又称计算机系统设备,由主机和外部设备组成,见图2.2.1图CAD硬件系统组成图框CAD系统的硬件由计算机及其外围设备和网络组成。计算机分为大型、中型、小型机,工作站和微机四大类。目前应用较多的是CAD工作站,国内主要是微机和工作站。外围设备包括鼠标、键盘、扫描仪等输入设备和显示器、打印机、绘图仪等输出设备。网络系统包括中继器(增加网线长度)、网桥(同种网相连)和路由器(选择加工路线)、网关(不同协议相连)、Modem方式连接到网络上,以实现资源共享。网络的连接方式即网络的拓扑结构可分为星形、总线形、环形、树形以及星形和环形的组合等形式。先进的CAD系统大都是以网络的形式出现的,特别是在并行工程环境中,为了进行产品的并行设计,网络更是必不可少。2.2.2CAD软件系统软件分为两大类:支撑软件和应用软件。支撑软件主要有操作系统,其实现对硬件的控制和资源的管理。计算机辅助设计系统与操作系统密切相关,在购置计算机时,应该选择配置功能完善、通用性好的操作系统,并注意他对高级语言的支持、内存寻址能力、是否具有虚拟存储和多用户多任务工作环境等方面的性能,特别是对己有软件的支持能力;另外程序设计语言(VB、VC、DelPhi)及其编辑系统,数据库管理系统(对数据的输入、输出、分类、存储、检索进行管理)和图形支撑软件(AutoCAD)也是必不可少的。它是计算机辅助设计的核心技术,这些软件为计算机辅助设计系统的开发提供了必要的软件环境,实现多种多样的计算机辅助设计功能,支撑软件是应用软件开发的根底,计算机辅助设计系统的功能和效率在很大程度上取决于支撑软件的性能。AutoCAD是美国AutoDesk公司开发的通用计算机辅助绘图和设计软件,被广泛应用于机械、电子、航天、造船、石油化工、土木工程、水利工程、气象、纺织、轻工等领域。AutoCAD是目前世界上应用最广的CAD软件,市场占有率位居世界第一。AutoCAD软件[4],具有如下特点:﹙l﹚具有完善的图形绘制功能;﹙2﹚具有强大的图形编辑功能;﹙3﹚可以采用多种方式进行二次开发或用户定制;﹙4﹚可以进行多种图形格式的转换,具有较强的数据交换能力;﹙5﹚支持多种硬件设备;﹙6﹚支持多种操作平台;﹙7﹚具有通用性、易用性,适用于各类用户。另一类是应用软件,它是根据本领域工程特点,利用支撑软件系统开发的解决本工程领域特定问题的应用软件系统。应用软件系统包括:设计计算方法库(常用数学方法库、统计数学方法库、常规设计计算方法库、优化设计方法库、可靠性设计软件、动态设计软件等)和各种专业程序库(常用机械零件设计计算方法库、常用产品设计软件包等)。计算机辅助设计系统的功能最终反映在解决具体设计问题的软件上,它一般需要具备如下要求:﹙l﹚能够切实可行地解决具体工程问题,给出直接设计的最终结果;﹙2﹚符合标准、标准和工程设计中的习惯;﹙3﹚充分利用计算机辅助设计系统的软件资源,具有较高的效率;﹙4﹚具有较好的设备无关性和数据存储无关性,便于运行于各类硬件环境以及与不同软件的连接;﹙5﹚使用方便、具有良好的人机交互界面;﹙6﹚运行可靠,维护简单,便于扩充,具有良好的再开发性。通常,应用软件需要用户自行开发,其专业性较强,涉及领域较广泛,开发需要专业人员的知识和经验,所以计算机辅助设计系统是工程技术与计算机技术相结合的综合性产物。2.3开发工具概述AutoCAD的强大生命力在于它的通用性、多种工业标准和开放的体系结构。其通用性使得它在机械、电子、航空、船舶、建筑、服装等领域得到了极为广泛的应用。但是,不同的行业标准使得各领域在使用AutoCAD的过程中均需根据自身特点进行定制或开发。Autodesk公司为满足广阔用户的需求,自AutoCADvZ.18版至AutoCAD2007短短20多年间,就相继推出了三代二次开发工具。可以说,AutoCAD的通用性为其二次开发提供了必要条件,而AutoCAD开放的体系结构那么使其二次开发成为可能。2.3.1第一代开发工具第一代开发工具AutoLISP(AutoCADLISPPrecessingLanguage)是1986年随AutoCADVZ.18提供的二次开发工具。它是一种人工智能语言,是嵌入AutoCAD内部的COMMONUSP的一个子集。在AutoCAD的二次开发工具中,它是惟一的一种解释型语言。使用AutoLISP可直接调用几乎所有的AutoCAD命令,具有强大的图形处理功能,比拟适合工程中的非结构化设计过程。AutoLISP语言典型应用之一是实现参数化绘图程序设计,包括尺寸驱动程序和鼠标拖动程序等。另一个典型应用就是驱动AutoCAD提供PDB模块构成DCL(DialogConirolLanguage)文件,创立自己的对话框。AutoLISP具有以下优点:﹙l﹚语言规那么十分简单,易学易用;﹙2﹚直接针对AutoCAD,易于交互;﹙3﹚解释执行,立竿见影。AutoLISP也具有以下缺点:﹙l﹚功能单一,综合处理能力差;﹙2﹚解释执行,程序运行速度慢;﹙3﹚缺乏很好的保护机制,源程序保密性差;﹙4﹚USP用表来描述一切,并不能很好地反映现实世界和过程,跟人的思维方式也不一致;﹙5﹚不能直接访问硬件设备、进行二进制文件的读写。2.3.2第二代开发工具第二代开发工具ADS(AutoCADDevelopmentSystem)是AutoCADRll开始支持的一种基于C语言的灵活的开发环境。ADS可直接利用用户熟悉的C编译器,将应用程序编译成可执行文件后在AutoCAD环境下运行,从而既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势。与AutoLISP相比,ADS优越之处在于:﹙l﹚具备错综复杂的大规模处理能力;﹙2﹚编译成机器代码后执行速度快;﹙3﹚编译时可以检查出程序设计语言的逻辑错误;﹙4﹚程序源代码的可读性好于AutoLISP。ADS不便之处在于﹙l﹚C语言比LISP语言难于掌握和熟练应用;﹙2﹚ADS程序的隐藏错误往往导致AutoCAD,乃至操作系统的崩溃;﹙3﹚需要编译才能运行,不易见到代码的效果;﹙4﹚同样功能,ADS程序源代码比AutoLISP代码长很多。另外对话框控制语言DCL(DialogConirolLanguage)是一种嵌入在AutoCAD内部的对话框控制程序设计语言,最早出现在AutoCADR12中。DCL的主要功能是在对话框中将AutoCAD的多样化接口与提供程序执行时所需的数据和选项集于一体,实现交互式的程序设计和人机对话操作。用户可以利用DCL创立应用对话框,通过对话框的操作来执行各种应用程序和几乎所有的AutoCAD命令。其特点是创立了动态对话窗口,利用窗口操作方式实现程序开发设计。同时,DCL是解释式的结构化程序设计语言,语法简单,功能强大,程序设计灵活,运行速度快,兼容性较好。另外,DCL程序通过AutoLISP相应函数来管理执行,比拟适合做终端开发。2.3.3第三代开发工具第三代开发工具包括VisualAutoLISP、ObjectARx以及VBA,特性如下:1.VisualAutoLISPVisua1AutoLISP[5]是AutoLISP的换代产品。它与AutoLISP完全兼容,并提供它所有的功能,是新一代的AutoCADLISP语言。VisualAutoLISP对语言进行了扩展,可以通过MicrosoftActiveXAutomation接口与对象交互。同时,通过实现反响器函数,还扩展了AutoLISP响应事件的能力。作为开发工具,VisualAutoLISP提供了一个完整的集成开发环境(IDE),包括编译器、调试器和其他工具,可以提高二次开发的效率。另外,VisualAutoLISP还提供了用于发布独立的应用程序的工具。2.VBAVBA(VisualBasicforApplication)作为一种面向对象的高级程序设计语言,语法简单,功能强大,使用方便,其语法结构与VisualBasic很类似,经过编译链接的VBA程序能直接在AutoCAD内部运行,也可以将VBA程序作为外部程序来执行,直接对AutoCAD对象进行操作。VBA主要通过AutoCADActiveXAutomation接口传递消息,实现其控制编程机制,具备强大的编程开发能力和灵活性[6]。用户可以利用ActiveXAutomation重新定义AutoCAD,与其他应用程序共享AutoCAD图形数据,能在其它的Windows编程环境下直接访问。AutoCAD图形,可以利用DAO或ADO技术连接数据库,能实现产品数据的自动管理伊DM),用户还可以利用VBScriPt技术实现企业生产综合数据库系统Intemet/Intranet应用,到达生产设计信息化、自动化、快速化目的。如果要以AutoCAD为根底平台开发出多功能集成的CAD系统,VBA无疑是最正确的开发工具。3.ObjectARXAutoCAD运行扩展ARX[7](AutoCADRuntimeeXtension〕最早在AutoCADR13中提供,它是在ADS根底上开展起来的一种面向对象的C++语言编程环境;将ADS函数归并为单一的库就形成了ADSRX,ADSRX是一种新型的ADS开发环境,它需要VisualC++料编译器并生成DLL(动态链接库)应用程序;在AutoCADR14及其以上的版本中,ARX被面向对象C料编程环境一ObjectARX所代替,它是一个面向对象的32位AutoCAD二次开发工具,ADSRX成了ObjectARX的一个子集。ObjectARX的最大特点是引入了面向对象的编程机制,它提供了大量的类库,同时还提供了兼容原来的ADS及ADSRX函数的新函数。与以往的AutoCAD二次开发工具AutoLisp和ADS不同,ObjecARX是一个DLL(动态链接库),共享AutoCAD的地址空间,直接调用AutoCAD的核心函数,所以,使用ARX编程的函数的执行速度得以大大提高,防止了使用过多的IPC,消耗过多的计算机内存空间;可直接访问AutoCAD的图形数据库和图形系统,可以定义类似于AutoCAD内置命令的自定义命令;可以使用MFC库来创立标准Windows风格的图形用户界面;用户还可以通过扩展ARX协议机制动态地为己有的AutoCAD类添加功能;ARX类库采用了标准的C++类库的封装形式,这也大大提高了程序员编程的可靠度和效率。同时ARX还具有如下优点:﹙l﹚可以直接实现多文档操作,而VisualLisp不能;﹙2﹚可以自定义图形或非图形对象,而VisualLisp不能;﹙3﹚可直接访问AutoCAD数据库的核心数据结构和代码,能够在运行其间扩展AutoCAD固有的类及其功能,创立能够全面享受AutoCAD固有命令特权的新命令。但由于ARX是在Windows及VisualC++编程环境运行,所以对开发者的编程能力要求较高,同时开发过程也相当复杂。ARX缺点是:﹙l﹚与AutocAD命令交互的功能,很难借用AutoCAD强大的绘图命令;﹙2﹚对程序设计者的计算和专业知识、软件专业知识要求较高。而且程序运行风险较大,ARX程序的崩溃,常常会连带AutoCAD甚至windows一起崩溃。4.VisualAutoLISP、VBA和ObjectARX的比拟从AutoCADR14开始提供了采用对象编程技术的VisualAutoLISP语言,大大增强了AutoLISP的编程能力,是AutoLISP[8]编程技术自1985年嵌入AutoCAD的百万用户传统的应用开发手段向新一代对象编程技术的飞跃。VisualAutoLISP是一个使用LISP语言开发和定制AutoCAD的可视化开发环境。它扩展和增强了现有的AutoLISP语言,提供了程序的编写和调试环境,可将LISP程序编译成ObjectARX,大大提高了CAD编程效率和性能,是一个崭新的一体化可视CAD编程环境。VisualAutoLISP提供标准Windows安装界面,安装方便。安装完后,进入AutoCAD,在命令行上输入VLIDE就可以进入Vsua1AutoLISP编程环境。对使用AutoLISP进行二次开发的人员,Visua1AutoLISP既是LISP编辑器又是编译器,它提供了一套简单的可视环境去开发和维护用户原有的AutoLISP源程序。VisualAutoLISP新特点如下:﹙l﹚使用VisualAutoLISP可使用户的AutoCAD应用程序运行更快,它的编译器将LISP源程序编译成ObjeetARX应用程序,由于LISP程序通过AutoCAD的ObjectARX接口运行,所以比AutoLISP加载运行快3倍~10倍,并且省去了每次翻开新图再调用的麻烦。﹙2﹚由于VisualAutoLISP采用ObjectARX平台,可以将AutoCAD和其他的应用程序如Windows、Office、ActiveX包含到AutoLISP源程序中,改善了ActiveX与AutoCAD对象模型之间接口特性,提高了应用程序的灵活性。﹙3﹚由于VisualAutoLISP编译成的二进制代码无法直接读取,所以它生成的应用程序更平安。VisualAutoLISP可视化编程提供了更多的实用功能:﹙1﹚提供控制台,在控制台的命令行作AutoLISP命令,可以直接看到结果。﹙2﹚彩色字符源代码检查,可以在编辑窗中同时显示AutoLIsP和DCL源程序的命令,注释、提示等以各种颜色区分表示出来,易于检查。﹙3﹚LISP程序自动缩进和标准格式化。﹙4﹚括号匹配检查。﹙5﹚多窗口同时编辑LISP和DCL文件,并提供DCL对话框预览功能。﹙6﹚可直接将用户的LISP+DCL文件编译成一个ObjectARX程序,并可连接ObjectARX、VC、VisualBasic、AetiveX的AutoCAD程序。使用VisualAut0LISP编程可防止LISP程序繁琐的调试过程,提高了编程效率,它不仅对CAD编程人员提供了新的强大编程工具,而且对每个AutoCAD使用者都提供了更简单易用的LISP环境。2.4各种工具的比拟与选择各种开发工具开发效率的比拟见表2.4开发工具开发语言性能执行速度开发难度ObjectARXC++非常强大快大VisualLISPAutoLISP一般慢小VBAVB一般很快很小表2.4AutoCAD几种主要二次开发工具性能比拟从上表可以看出VisualLISP和VBA简单易学,开发周期短,适合开发一些小型的实用工具。目前,第一代的AutoLISP己被第三代的VisualAutoLISP完全替代,第二代的ADS在AutoCAD2000中就己不再支持,所以,第三代开发工具将成为今后AutoCAD二次开发的必然选择。LISP对于AutoCAD的二次开发是一个既简单又实用的选择,同时也具有更广阔的应用前景,AutoLISP是内嵌于AutoCAD的LISP编程语言,作为应用接口语言,与VisualBasie、ADS、ObjectARX等其他二次开发语言相比,AutoLISP的突出优点就在于它最易学习和掌握,程序全部由函数组成,语法简单,不需要进行数据类型定义,从而防止了因数据类型不匹配而导致的程序错误;图形处理功能强大,它几乎能调用CAD所有的内部命令,可以方便地在计算、绘图之间进行切换;并能够通过与其他语言或方法的结合,实现复杂的AutoCAD操作。作为升级版的ViusalLISP那么与AuotLISP完全兼容,并新增了系统文件操作、内存相互通信、访问外部数据库等功能。在ViusalLISP提供的可视化的集成开发环境〔IDE〕中,程序的编辑,加载,调试将更加容易和方便。所以在本软件系统中采用LISP作为二次开发工具。第三章电子印章插件的设计及分析当前AutoCAD电子图纸面临的诸多平安问题,本章结合传统文档使用中的印章的作用,归纳总结出电子印章的功能需求和平安性需求。针对这些需求,结合相关法律规定,设计出完善的电印签章解决方案并对该方案进行了分析。3.1设计要求3.1.1功能需求:在传统的文档审批和发布过程中,人们往往通过对文档的签署(签名、签字、签章,本文只研究签章)行为说明对文档的拥有权或者某种意见。这表达了人们对于文档在身份认证和不可否认性方面的需求,而传统的签署过程正好满足了这些需求。表现在以下几个方面:〔1〕认证把签章人和其签署的文档关联起来,通过签章说明签章人身份的真实性。这个意义是建立在“签章和签名是不容易伪造的〞这一事实根底之上的。另外,签章自古以来都是身份和权力的象征,不管私人的还是公家的,都具有很高的可信度。签章的这种权威性使得我们都够信任签章即可代表签章人本身。〔2〕说明意向通过签章行为可以说明签章人对文档的某种意见,比方已阅览、审批通过或者未通过等,也可以表示签章人对文档拥有权的声明。〔3〕不可否认性分为内容不可否认性和操作不可否认性。内容不可否认是指文档的拥有者必须对其所拥有的文档的内容负责。操作不可否认性主要是指用户对其在文档上的签署行为负有责任。以上是传统签署过程所含有(或者可能隐含)的意义。除开这些,我们还希望签章表达的是签章人对当前文档的意向(即签章前瞬间所见的文档,签章后的修改应视作无效)。然而,传统纸质文档上的签章并不能保证数据的完整性,或者防止签章后的文件被非法篡改。由于办公文档的多元化开展,出现的文件格式越来越多,如Word、Excel、PowerPoint、PDF等,针对某一种格式的文档保护不仅消耗开发商的精力,也增加了用户使用上的复杂度。针对这种情况,开发者将各类文档统一转换成版式文档,然后对其进行保护。这样做提高了使用效率,但是却限制了用户的使用。为此我们可以参考传统签章的开展历程,总结出电子签章最本质的特性和意义,并根据AutoCAD特定的应用环境,设计出更为合理的电子签章。从传统签章到普通电子文档中的签章,再到AutoCAD电子图纸中的签章,签章的功能应该是一脉相承。因此,我们提出AutoCAD电子签章的功能需求如下:〔1〕能够对AutoCAD电子图纸进行签章,以说明签章人的身份。〔2〕接收方能够对已签章图纸进行验证,证明图纸内容的完整性和签章人身份的真实性。〔3〕在整个签章和签章验证的过程中,我们必须保证AutoCAD图纸的可用性,即能够对图纸进行正常的编辑,保存等操作。3.1.2相关法律法规:电子签章属于电子签名的一种,应该遵循国家相应的法律法规,才能被国家成认,被用户信任。在?中华人民共和国电子签名法?[9]中,关于电子签名与认证,有如下几条主要规定:第十三条电子签名同时符合以下条件的,视为可靠的电子签名:电子签名制作数据用于电子签名时,属于电子签名人专有;签署时电子签名制作数据仅由电子签名人控制;签署后对电子签名的任何改动能够被发现;签署后对数据电文内容和形式的任何改动能够被发现。第十六条电子签名需要第三方认证的,由依法设立的电子认证效劳提供者提供认证效劳。可以看出,签名表达了以下几个方面的保证,也是本课题在系统设计时必须到达的五个平安性要求:〔1〕签名是可信的签名使文件的接收者相信签名者是慎重地在文件上签名的。〔2〕签名是不可伪造的签名证明是本人而不是其他人。〔3〕签名不可重用签名是文件的一局部,不可能将签名移动到不同的文件上。〔4〕签名后的文件是不可变的在文件签名以后,文件就不能改变。〔5〕签名是不可抵赖的签名和文件是不可别离的,签名者事后不能声称他没有签过这个文件。3.2系统设计方案电子印章的生成:电子签章的存在形式,标量签章与矢量图之间不能做到完全兼容,给用户的使用上带来极大不便,因此在本方案中提出了矢量电子签章来解决这一问题。关于矢量电子签章的来源有两种:〔1〕根据用户需求绘制印章用户可以把自己对印章的要求用数据描述出来,如印章的大小,章内文字,图案等。程序保存这些配置信息,在需要时从程序中读取这些数据,调用AutoCAD的绘图命令绘制出签章。经过实验,绘制出的典型签章如下图:图3.2.1用〔2〕将独立的矢量签章文件插入到当前图纸为了最大限度地让电子签章接近于现实,我们可以将实际印章的图像转换成矢量格式,复制到需要签章的矢量图纸中去。在这种实现方式中,我们需要用扫描仪将纸质文档上的印章图像输出成位图文件,再用矢量化软件将其转换成DWG格式的矢量图。用户签章时,提供自己独有的DWG格式的签章文件即可。经过ICT实验室的允许,扫描出来的ICT印章。通过比拟两种实现方式,论文选择的是制图方式生成电子签章。主要有以下两点原因:〔1〕制图方式形成的签章更加形象,贴近实际形象。〔2〕在定制签章方法中,电子签章系统需要维护许多配置信息,而且用户根据有限参数描述出的签章也不一定令自己满意。比方签章周围出现的纹理信息,如果利用方法2绘制出来就需消耗更多的物力人力。系统方案分析:方案中的电子签章具有以下特性:〔1〕完整性如果图形文件(包括签名时间、签署意见)在相互传输过程中被修改或者伪造,那么接收者计算散列值与原有的散列值不同,数字签名不能通过;反之,接收到的图形文件与源文件是一致的。〔2〕身份认证验证方只有使用签章人的身份证书才能验证其签署后的图纸的有效性,从而确定签章人的身份。〔3〕不可抵赖性签章人不能抵赖他对图纸的签署行为,因为他人无法伪造电子签章的签名信息。〔4〕专业性二次开发是针对特定用户进行的,因此开发人员要既懂专业知识,又要具备软件开发能力;〔5〕实用性。二次开发是为了满足特定用户的特殊需要,因此成功的二次开发可以大幅度提高工作效率;〔6〕紧迫性。二次开发要解决的是实际工作中遇到的问题,直接影响工作的进度,因此在时间上有紧迫性;〔7〕复杂性。二次开发不仅涉及具体的应用,而且要求对支撑软件有深入的了解,因此工作量大,任务复杂。〔8〕直观性由于图纸的签章和验证是在AutoCAD环境中实现的,所以用户能够在看到图纸的情况下实现图纸的签名和验证。〔9〕高效性AutoCAD二次开发工具ObjectARX具有合理的设计架构,它共享AutoCAD软件的图形数据库,使开发人员能够开发出高效的应用程序。第四章电子印章插件的实现4.1印章的制作方法目前绝大多数的电子签章产品是基于标量图实现的。它有传统的标量图的理论支持,已经开展的比拟成熟。市场上也有一些矢量图电子签章产品将标量图签章嵌入到矢量图纸中。但是,矢量图纸和标量签章在视觉上并不能做到很好地兼容。矢量图经过放大后仍然保持很好的视觉效果,而标量签章在放大假设干倍后就会受到分辨率的制约。另外,AutoCAD等矢量图绘图软件中嵌入标量图是通过嵌入标量图的绝对路径来实现的。标量图无法和矢量图纸融为一体。根据用户需求,绘制电子签章用户可以根据实际的需求提出电子签章的具体参数,例如章体的大小、章内文字和字体、章体布局等[11]。根据用户提出的需求,可以在AutoCAD下利用相关绘图命令绘制出矢量电子签章。通用的方法可以利用AutoCAD的二次开发程序保存相应配置信息,在需要签章的时候绘制出所需要的矢量电子印章。在前面的章节中已经提到,课题中选择的是制图方式生成签章文件。这个过程中需要用到AutoCAD软件。电子签章的生成过程,制作方法可以分成以下四步:〔1〕日期模块的制作利用VisualLISP语言编写程序,到达该程序能够成功的按照用户输入的要求运行,成功的将日期显于在AutoCAD的绘图区域。〔2〕五角星模块的制作利用VisualLISP语言编写程序,通过加载,到达该程序能够成功的将五角星图案显现在AutoCAD的绘图区域。〔3〕印章轮廓模块的制作利用VisualLISP语言编写程序,通过加载,到达该程序能够成功的将印章的轮廓图案显现在AutoCAD的绘图区域。〔4〕电子印章的生成通过将前面三个模块编写的程序合并到一起,经调试,检验成功后,加载到CAD内存中,到达该程序能够成功的将电子印章的图案显现在AutoCAD的绘图区域,至此电子印章成功实现。4.2印章子模块的实现日期模块的实现机械绘图中经常需要在标题栏等处需要输入日期,通常手工书写时很方便,然而在AutoCAD中我们必须先选定需要书写日期的区域,然后通过设定再将所需要的日期输入。如果屡次反复执行这些操作,会明显限制绘图的速度。下面使用VisualLisp编写简单的程序,既可以满足要求,也可以反复使用,方便快捷。日期模块编写的程序如下:(defunC:inttime()(setqp1(getpoint"\n请指定插入位置点:"))(setqwz(getstring"请输入日期"))(command"_text""j""mc"pwz3.50wz"")(princ))演示上述程序,首先我们将AutoCAD软件翻开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:inttime的命令,系统会要求我们选择插入点的位置,我们只需利用鼠标拾取一点,系统会自动的在拾取点的位置上显示出准确的日期。如以下图所示:图程序执行示意图图日期模块的实现五角星模块的实现在机械绘图中我们经常发现某些常用的动作在AutoCAD中确变得非常复杂,步骤繁琐,感觉没有手工绘图来的快捷方便,从而影响绘图工作者的效率。为了解决这问题,我们可以VisualLisp编写成的相对应程序。五角星模块编写的程序如下:方案一:(defunc:wu()(command"_color""red""");将线型设定为红色(setqcen(getpoint"\n请指定五角星中心点"))(setqr(getreal"\n请输入五角星外接圆半径:"))(setqp1(polarcen(*pi0.5)r));对五角星的各个点进行设定和计算(setqp11(polarcen(*pi(/(+90(*361))180.0))(*r0.381966)))(setqp2(polarcen(*pi(/(+90(*721))180.0))r))(setqp21(polarcen(*pi(/(+90(*363))180.0))(*r0.381966)))(setqp3(polarcen(*pi(/(+90(*722))180.0))r))(setqp31(polarcen(*pi(/(+90(*365))180.0))(*r0.381966)))(setqp4(polarcen(*pi(/(+90(*723))180.0))r))(setqp41(polarcen(*pi(/(+90(*367))180.0))(*r0.381966)))(setqp5(polarcen(*pi(/(+90(*724))180.0))r))(setqp51(polarcen(*pi(/(+90(*369))180.0))(*r0.381966)))(command"line"p1p11p2p21p3p31p4p41p5p51"c");对设定的各点(command"line"p1cenp2"")进行连线(command"line"p3cenp4"")(command"line"p5cen"")(prin1))演示上述程序,首先我们将AutoCAD软件翻开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按“Enter〞键,五角星就会自动的出现在用户选定的位置上。如以下图所示:图程序执行示意图图五角星模块的实现方案二(defunc:wu2()(setqcen(getpoint"\n请指定五角星中心点"))(setqr(getreal"\n请输入五角星外接圆半径:"))(setqxp1(polarp1(*0.5pi)15))(setqxp2(polarp1(*(+0.50.4)pi)15))(setqxp3(polarp1(*(+0.50.8)pi)15))(setqxp4(polarp1(*(+0.51.2)pi)15))(setqxp5(polarp1(*(+0.51.6)pi)15))(setqxp11(polarp1(*pi0.7)5.5)xp21(polarp1(*pi1.1)5.5)xp31(polarp1(*pi1.5)5.5)xp41(polarp1(*pi1.9)5.5)xp51(polarp1(*pi0.3)5.5))(setqsp1(polarp1(*0.5pi)13))(setqsp2(polarp1(*(+0.50.4)pi)13))(setqsp3(polarp1(*(+0.50.8)pi)13))(setqsp4(polarp1(*(+0.51.2)pi)13))(setqsp5(polarp1(*(+0.51.6)pi)13))(command"_color""red""")(command"line"xp1xp11xp2xp21xp3xp31xp4xp41xp5xp51xp1"")(command"line"p1xp1"")(command"line"p1xp2"")(command"line"p1xp3"")(command"line"p1xp4"")(command"line"p1xp5"")(command"line"p1xp11"")(command"line"p1xp21"")(command"line"p1xp31"")(command"line"p1xp41"")(command"line"p1xp51"")(command"_color""bylayer""")(prin1))上述程序与方案一相比,主要区别在于程序段执行后,图形有些变化,立体感更强烈些。演示上述程序,首先我们将AutoCAD软件翻开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu2的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按“Enter〞键,五角星就会自动的出现在用户选定的位置上。如以下图所示:图程序执行示意图图五角星模块的实现方案三(defunc:wu3()(command"_color""red""")(setqcen(getpoint"\n请指定五角星中心点"))(setqr(getreal"\n请输入五角星外接圆半径:"))(command"zoom""w"pp1pp2)(setqxp1(polarp1(*0.5pi)15))(setqxp2(polarp1(*(+0.50.4)pi)15))(setqxp3(polarp1(*(+0.50.8)pi)15))(setqxp4(polarp1(*(+0.51.2)pi)15))(setqxp5(polarp1(*(+0.51.6)pi)15))(setqsp1(polarp1(*0.5pi)13))(setqsp2(polarp1(*(+0.50.4)pi)13))(setqsp3(polarp1(*(+0.50.8)pi)13))(setqsp4(polarp1(*(+0.51.2)pi)13))(setqsp5(polarp1(*(+0.51.6)pi)13))(command"_color""red""")(command"line"xp2xp5"")(command"line"xp5xp3"")(command"line"xp3xp1"")(command"line"xp1xp4"")(command"line"xp4xp2"")(command"_bhatch""p""s"sp1sp2sp3sp4sp5p1"""")(command"_color""bylayer""")(prin1))方案三与方案一、二相比,主要区别在于程序段执行后,图案得到填充了,整体感更浓厚。演示上述程序,首先我们将AutoCAD软件翻开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:wu3的命令,系统会要求我们指定五角星的中心点的位置,输入五角星外接圆半径,按下“Enter〞键,五角星就会自动的出现在用户选定的位置上。如以下图所示:图程序执行步骤图五角星模块的实现印章轮廓的实现机械绘图中我们经常要绘制特殊的图形,需要在特殊的图案上书写,标注等,就拿书写圆弧字来说,使用手工绘图时可以方便很多,然而在AutoCAD中我们要做出这样的效果,就必须计算好字符之间的间距,字符的旋转角度。虽然这些都是琐碎的小事,可如果每输入一个字符都需要进行这些操作就会显得很是麻烦,而且无法提高工作效率,严重影响着绘图圆们的制图速度和制图质量。下面的程序就可完成上述的操作:(defunC:yz()(setqp1(getpoint"请输入定位点"))(setqpp1(polarp1(*0.75pi)40))(setqpp2(polarp1(*-0.25pi)40))(setqxx(getstring"请输入学校名称"))(command"circle"p130)(command"zoom""w"pp1pp2)(setqpwz(polarp1(*1.5pi)20))(command"_text""j""mc"pwz3.50wz"")(setqcd(strlenxx))(setqcd(/cd2))(setqcd1(/cd2))(setqi1)(setqii0)(if(=(remcd2)0)(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1))))(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(+(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1)))))(princ00000000))将上述程序进行操作,首先我们将AutoCAD软件翻开,然后我们在AutoCAD中加载该程序段,并且在命令行输入:yz的命令,系统会要求我们输入定位点,输入学校名称,按下“Enter〞键,印章轮廓就会自动的出现在用户选定的位置上。如以下图所示:图程序执行示意图图印章轮廓的实现4.3印章插件的实现利用上一小节编写的三个子模块的程序段,合理的将其配合,杂糅到一起,成功的得到了三种印章的完整程序。印章的程序如下所示:1〕命令行方式:方案一(defunC:yz();对程序进行定义(setqp1(getpoint"请输入定位点"))(setqpp1(polarp1(*0.75pi)40))(setqpp2(polarp1(*-0.25pi)40))(setqwz(getstring"请输入日期"));自定义日期(setqxx(getstring"请输入学校名称"));自定义学校名称(command"circle"p130)(command"zoom""w"pp1pp2)(setqxp1(polarp1(*0.5pi)15));对五角星点位进行设定(setqxp2(polarp1(*(+0.50.4)pi)15))(setqxp3(polarp1(*(+0.50.8)pi)15))(setqxp4(polarp1(*(+0.51.2)pi)15))(setqxp5(polarp1(*(+0.51.6)pi)15))(setqxp11(polarp1(*pi0.7)5.5)xp21(polarp1(*pi1.1)5.5)xp31(polarp1(*pi1.5)5.5)xp41(polarp1(*pi1.9)5.5)xp51(polarp1(*pi0.3)5.5))(setqsp1(polarp1(*0.5pi)13))(setqsp2(polarp1(*(+0.50.4)pi)13))(setqsp3(polarp1(*(+0.50.8)pi)13))(setqsp4(polarp1(*(+0.51.2)pi)13))(setqsp5(polarp1(*(+0.51.6)pi)13))(command"_color""red""")(command"line"xp1xp11xp2xp21xp3xp31xp4xp41xp5xp51xp1"")(command"line"p1xp1"")(command"line"p1xp2"")(command"line"p1xp3"")(command"line"p1xp4"")(command"line"p1xp5"")(command"_color""bylayer""")(setqpwz(polarp1(*1.5pi)20))(command"_text""j""mc"pwz3.50wz"")(setqcd(strlenxx))(setqcd(/cd2))(setqcd1(/cd2))(setqi1)(setqii0)(if(=(remcd2)0)(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1))))(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(+(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1)))))(princ00000000))我们加载程序yz后,运行它,系统会提示:请输入定位点;请输入日期;请输入学校名称。答复完上面3个问题后,系统将自动绘制出用户所需要的电子印章的图形。如以下图所示:图电子印章〔一〕方案二(defunC:yz()(setqp1(getpoint"请输入定位点"))(setqpp1(polarp1(*0.75pi)40))(setqpp2(polarp1(*-0.25pi)40))(setqwz(getstring"请输入日期"))(setqxx(getstring"请输入学校名称"))(command"circle"p130)(command"zoom""w"pp1pp2)(setqxp1(polarp1(*0.5pi)15))(setqxp2(polarp1(*(+0.50.4)pi)15))(setqxp3(polarp1(*(+0.50.8)pi)15))(setqxp4(polarp1(*(+0.51.2)pi)15))(setqxp5(polarp1(*(+0.51.6)pi)15))(setqxp11(polarp1(*pi0.7)5.5)xp21(polarp1(*pi1.1)5.5)xp31(polarp1(*pi1.5)5.5)xp41(polarp1(*pi1.9)5.5)xp51(polarp1(*pi0.3)5.5))(setqsp1(polarp1(*0.5pi)13))(setqsp2(polarp1(*(+0.50.4)pi)13))(setqsp3(polarp1(*(+0.50.8)pi)13))(setqsp4(polarp1(*(+0.51.2)pi)13))(setqsp5(polarp1(*(+0.51.6)pi)13))(command"_color""red""")(command"line"xp1xp11xp2xp21xp3xp31xp4xp41xp5xp51xp1"")(command"line"p1xp1"")(command"line"p1xp2"")(command"line"p1xp3"")(command"line"p1xp4"")(command"line"p1xp5"")(command"line"p1xp11"")(command"line"p1xp21"")(command"line"p1xp31"")(command"line"p1xp41"")(command"line"p1xp51"")(command"_color""bylayer""")(setqpwz(polarp1(*1.5pi)20))(command"_text""j""mc"pwz3.50wz"")(setqcd(strlenxx))(setqcd(/cd2))(setqcd1(/cd2))(setqi1)(setqii0)(if(=(remcd2)0)(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1))))(progn(while(>cd0)(setqz(substrxxi2))(setqzd(polarp1(+(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi72))23))(setqjd(-(-(+(/pi2)(*cd1(/pi10)))(*(/pi10)ii))(/pi2)))(setqjd2(*(/jdpi)180))(command"_text"zd5jd2z"")(setqcd(-cd1))(setqi(+i2))(setqii(+ii1)))))(princ00000000))加载程序,答复完系统提示的三个问题后,将自动绘出用户所需要的电子印章的图形。如以下图所示:图电子印章〔二〕方案三(defunC:yz()(setqp1(getpoint"请输入定位点"))(setqpp1(polarp1(*0.75pi)40))(setqpp2(polarp1(*-0.25pi)40))(setqwz(getstring"请输入日期"))(set

温馨提示

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

评论

0/150

提交评论