教学材料《CAD技术概论》-CAD-7_第1页
教学材料《CAD技术概论》-CAD-7_第2页
教学材料《CAD技术概论》-CAD-7_第3页
教学材料《CAD技术概论》-CAD-7_第4页
教学材料《CAD技术概论》-CAD-7_第5页
已阅读5页,还剩129页未读 继续免费阅读

下载本文档

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

文档简介

第7章CAD技术的二次开发7.8AutoCAD二次开发中的尺寸标注7.9AutoCAD二次开发中幻灯片和脚本的定制7.10AutoCAD二次开发齿轮设计7.11AutoCAD二次开发技术在带传动设计中的应用7.12AutoCAD二次开发中的图层上一页7.1CAD二次开发简介7.1.1CAD二次开发技术的发展国际和国内知名的CAD/CAM软件如Pro/ENGINEER,UG;I-DEAS,MasterCAM,SolidEdge等,都是商品化的通用平台,基本上覆盖了整个制造行业,但专业针对性差,因而不能满足各种各样具体产品的设计需要,在实际的工程设计中难以达到理想效果,几乎不能真正实现灵活高效的特点。因此CAD软件的二次开发问题,就成为CAD技术推广应用过程中所必须面对和解决的课题之一。二次开发就是把商品化、通用化的CAD系统用户化、本地化的过程,即以优秀的CAD系统为基础平台,研制开发符合国家标准、适合企业实际应用的用户化、专业化、集成化软件。下一页返回7.1CAD二次开发简介

1963年,MIT的Dr.I.E.Sutherland首次在SJCC上发表了《SIETCIPAD—人机对话系统》一文,提出了计算机图形学、交互技术等概念。所谓CAD技术,顾名思义是研究用计算机用其外围设备帮助人们进行工程和产品设计的技术。但一个实用的CAD系统并不是具体的传统的设计流程和方法的简单映像,而是能反映当代先进的设计方法和进程,并充分利用和发挥计算机优势的计算机辅助设计系统。从20世纪50年代末美国MIT开发了APT(AutomaticallyProgrammedTools)程序系统至今,CAD技术经历了几个阶段的发展,从低级到高级,从二维到三维,从平面到实体,CAD软件的开发也由早期的DOS,UNIX下的冗长烦琐的程序设计变成了在成熟软件、现有基础上进行的高起点的二次开发。CAD软件工程是一个复杂、高智能、高专业的上一页下一页返回7.1CAD二次开发简介投入过程,使用好的开发工具进行软件设计与开发已经成了人们的共识。在现代的CAD设计中,常选择某种已有的实体建模软件作为图形支撑,某种数据库系统作为底层数据环境,利用motify图形用户界面工具,使用一种宿主语言,开发独立的CAD系统。成熟的现代CAD软件一般都提供有供用户进行二次开发的接口,如AutoCAD的AutoCADDevelopmentSystem(ADS),I-DEAS的OpenArchitecturesCOA等。它给用户提供一系列工具,可以完成用户界面定制,宏程序执行,编写外部程序等来扩充系统功能和Pro/ENGINEER的二次开发的接口Pro/Toolkit7.1.2Can开发中的关键技术上一页下一页返回7.1CAD二次开发简介CAD开发中的关键技术主要涉及:软件工程技术、集成产品模型研究、分布式环境技术、集成环境中统一的工程数据库管理系统技术、人工智能技术、面向对象技术、多媒体技术。CAD软件的设计作为一种软件工程,有着其自身的特点。因为CAD技术是面向实际产品的设计,不只是在计算机图形学上实现其基本图形的显示,现代CAD技术要求能够实现对产品设计本身真正意义上的辅助(Aided)。按照软件工程的要求,CAD软件的设计利用生存周期法,有利于将来的开发、维护与升级。由于CAD软件面向工程技术,因此所要处理的数据库系统也十分庞大。研究各数据之间的逻辑关系,也就是研究数据结构,是开发CAD软件的重要内容之一。从系统论、信息论和控制论的观点看,CAD系统是一个信息系统。上一页下一页返回7.1CAD二次开发简介

CAD过程也就是对大量的数据进行处理和加工的过程,其中既有相对不变的静态数据,也有在设计过程中生成和变化的动态数据。采用先进、有效的数据管理技术是CAD的需要,也是集成化系统的关键。对于CAD开发中的具体的关键技术,请参阅相关的专业书籍,这里不再赘述。7.1.3最新CAD软件与我国CAD软件现状

CAD软件的发展已经进入第四代,正朝着所谓的NAD(NetAidedDesign)方向发展当代CAD软件设计的两大主要理论基础为:参数化造型理论和变量化造型理论。现代先进的三维设计软件有:I-DEAS,Pro/ENGINEER,CATIA,UG等;先进的有限元设计软件有:SAP,ASIA,上一页下一页返回7.1CAD二次开发简介NASTRAN,ANSYS等。本文中所述CAD软件一般是指设计软件。而人工智能:AI技术、网络技术、接口技术及硬件设备的飞速发展,使得CAD技术越来越集成化、智能化、网络化、标准化,成为发展的必然趋势。我国的CAD技术起步于20世纪60年代,在引进国外先进软件、技术的同时,大力开发有自主版权的CAD系统,如中科院、清华大学、北航、东大阿尔派等科研院所都为国内CAD技术的进一步发展、提高和应用起到了积极的促进作用。据统计,CAD在我国不同行业的分布为:机械占39%,电子占28%,建筑占33%,其他占10%。上一页返回7.2二维CAD软件的二次开发技术7.2.1概述二维CAD软件中应用最为广泛的是Autodesk公司的AutoCAD系列软件。AutoCAD是一种具有高度开放结构的CAD软件开发平台,它提供给编程者一个强有力的二次开发环境在R10版本以前,可供使用的开发工具主要是AutoLisp;Rll版本推出ADS,其最显著的特点是:随着R13版推出ARX,AutoCAD进入全新的面向对象的开发环境。自R14版以后,AutoCAD引入了面向对象的ActiveXAutomationInterface(即ActiveX自动化界面)技术,可方便地使用各种面向对象的高级开发语言,为开发人员提供了多种可选择的开发工具。

7.2.2AutoLisp技术下一页返回7.2二维CAD软件的二次开发技术

AutoLisp一种嵌入AutoCAD内部的Lisp语言,它继承了Lisp语言的语法、传统约定和基本函数与数据类型,并扩充了强大的图形处理功能,语法简洁、表达能力强、函数种类多、程序控制结构灵活,既能完成常用的科学计算和数据分析,又能调用绝大多数的AutoCAD命令,具有强大的图形处理能力,是AutoCAD早期版本的主要开发工具。AutcLisp的一般程序结构为:全局变量赋初值;子函数定义(局部变量赋初值,函数体);主函数定义(变量赋初值,函数体)。在加载函数后,可在任何需要的时候调用该函数。AutcLisp是嵌入AutoCAD的解释型过程语言,尽管具有较强的开发能力,但其运行速度较慢,程序规模小,保密性不强,缺乏低层和系统支持,不宜用于高强度的数据处理上一页下一页返回7.2二维CAD软件的二次开发技术7.2.3ADS技术

ADS(AutoCADDevelopmentSystem)是AutoCADRll开始支持的一种基于C语言的灵活的开发环境。ADS可直接利用用户熟悉的C编译器将应用程序编译成可执行文件后在AutoCAD环境下运行,从而既利用了AutoCAD环境的强大功能,又利用了C语言的结构化编程、运行效率高的优势。与AutoLisp相比,ADS优越之处在于:①具备错综复杂的大规模处理能力;②编译成机器代码后执行速度快;③编译时可以检查出程序设计语言的逻辑错误;④程序源代码的可读性好于AutoLisp。而其不便之处在于:10G语言比Lisp语言难于掌握和熟练应;②ADS程序的隐藏错误往往导致AutoCAD乃至操作系统的崩溃;上一页下一页返回7.2二维CAD软件的二次开发技术③需要编译才能运行,不易见到代码的效果;④同样功能的ADS程序源代码比AutoLisp代码长很多7.2.4ARX(C++)技术

ARX(AutoCADRuntimeExtension)是AutoCADR13之后推出的一个以C++语言为基础的面向对象的开发环境相应用的程序接口。ARX程序本质上为Windows动态链接库(DLL)程序,与AutoCAD共享地址空间,直接调用AutoCAD的核心函数,可直接访问AutoCAD数据库的核心数据结构和代码,以便能够在运行期间扩展AutoCAD固有的类及其功能,创建能够全面享受AutoCAD固有命令特权的新命令。ARX程序与AutoCAD,Windows之间均采用Windows、消息传递机制直接通信。上一页下一页返回7.2二维CAD软件的二次开发技术

ObjectARX应用程序以C++为基本开发语言,具有面向对象编程方式的数据可封装性、可继承性及多态性的特点,用其开发的CAD软件具有模块性好、独立性强、连接简单、使用方便、内部功能高效实现以及代码可重用性强等特点,并且支持MFC基本类库,能简洁高效地实现许多复杂功能。7.2.5VBA技术

VBA(VisualBasicforApplication)最早是内嵌在Office97中的一种编程语言,由于易学易用,功能强大,Autodesk公司开始在AutoCADR14版中内置了VBA开发工具,同时提供了适用的对象模M和开发环境,到AutoCAD2000时,相应的功能得到了加强。从语言构上讲,VBA是VB(VisualBasic)的一个子集,它们的语法上一页下一页返回7.2二维CAD软件的二次开发技术结构是相同的,VBA依附于主应用程序AutoCAD,它与主程序的通信简单而高效,由于共享内存空间,使它具有更快的执行速度,且其语法结构简洁,便于用户快速有效的开发出适用的应用软件,近期获得了广泛的应用。7.2.6其他开发工具

Delphi是Inprise公司推出的基于ObjectPascal语言的可视化编程工具。作为编程语言,它是完整的面向对象语言,具有严格意义上的对象、封装、继承和重载的概念,并具有异常处理的功能。

JAVA是SUNMicrosvstems公司研制的一种崭新的程序设计语言、它是面向对象的语言之一。具有独立于上一页下一页返回7.2二维CAD软件的二次开发技术体系结构的特性;JAVA特别适用于开发基于Internet的应用程序,它开发的程序能够在任何平台上运行。VisualC++是Microsoft研制的程序开发环境、是用于JAVA编程的Windows集成环境这两种语言都是面向对象语言,二次开发人员可以很好地利用其与Windows系统紧密结合的特点,开发出高效的AutoCAD程序。上一页返回7.3三维CAD软件的二次开发技术7.3.1开发原则与主要研究方向三维软件的二次开发要遵循工程化、模块化、标准化和继承性等一系列的原则,依据工程化的思想对二次开发进行统筹规划,具体实现坚持模块化、标准化和继承性原则。三维软件二次开发的主要研究方面包括:建立参数化图库,国外商品化CAD系统一般都未提供标准件库和通用件库。为适应产品快速开发的需要,建立参数化或变量化的三维实体模型库是进行产品设计所必需的环节。建立参数化图库的关键是标准件和通用件特征参数值的存储和处理,有两种方法:一种是使用数据文件的形式存放参数值;另一种是使用数据库管理系统建立新系统的数据库。使用第二种方法既安全可读,又具有很好的开放性,是用户建立参数值数据库的理想选择下一页返回7.3三维CAD软件的二次开发技术二维工程图的自动生成技术:国外通用的CAD系统在常用符号、标注等方面都是依照国际标准,与国家标准有所不同,如尺寸标注、形位公差符号、表面粗糙度符号等,这就需要对其符号进行二次开发。处理程序可以通过软件自带的二次开发语言,也可利用其他高级语言编制。产品设计智能化开发技术:CAD智能化是把人工智能的思想、方法和技术引入传统的CAD系统中,分析归纳设计,工艺知识,模拟人脑推理分析,提出设计,工艺方案,从而提高设计、工艺水平,缩短周期,降低成本。现在的CAD系统是人机交互式工作,把需要由知识和经验决策的设计问题留给用户,使产品设计水平受到工程师学科知识和设计经验的制约。开发基于通用化CAD系统的智能CAD(IntelligentCAD)可以克服这一缺点,提高设计质量和效率,它的技术上一页下一页返回7.3三维CAD软件的二次开发技术核心就是以专家知识和经验建立专家系统(ExpertSystem,ES)模型规则控制下的产生式系统和启发式推理来实现系统的智能化ES。特征映射器的开发技术:前优秀的机械设计自动化软件都是基于参数化或变量化的特征建模技术,将CAD/CAM集于一身。特征在不同的应用领域有着不同的特征模型,设计特征不可能与制造特征完全一致,这就会导致特征信息的歧义与混乱,因此,需要一种特征映射(FeatureConversion)机制来完成特征信息由设计域向制造域的转化即特征映射器。特征映射器可自动将CAD系统的设计特征转变为CAPP系统所需的制造特征,从而实现CAD/LAPP的有效集成,其中特征提取(FeatureExtraction)和特征识别(FeatureRecognition)是开发特征映射器的技术关键。上一页下一页返回7.3三维CAD软件的二次开发技术7.3.2Pro/ENGINEER的二次开发

Pro/ENGINEER是一种采用了特征建模技术,基于统一数据库的参数化的通用CAD系统。利用它提供的二次开发工具在Pro/E的基础上进行二次开发,可以比较方便地实现面向特定产品的程序自动建模功能。并且可以把较为丰富的非几何特征如材料特征、精度特征加入所产生的模型中,所有信息存入统一的数据库,是实现CAD/CAE/CAM集成的关键技术之一。

Pro/ENGINEER提供了丰富的二次开发工具,常用的有:族表(FamilyTable)、用户定义特征(UDF)、Pro/program、J-link、Pro/toolkit等。

1.开发工具简介上一页下一页返回7.3三维CAD软件的二次开发技术族表(FamilyTable):通过族表可以方便地管理具有相同或相近结构的零件,特别适用于标准零件的管理。族表通过建立通用零件为父零件,然后在其基础上对各参数加以控制生成派生零件。整个族表通过电子表格来管理,所以又被称为表格驱动。用户定义特征(UDF):用户定义特征是将若干个系统特征融合为一个自定义特征,使用时作为一个整体出现,系统将UDF特征.gph文件保存。适用特定产品中的特定结构,有利于设计者根据产品特征快速生成几何模型。

Pro/program:软件对于每个模型都有一个主要设计步骤和参数列表—Pro/program。它是由类似BASIC的高级语言构成的,用户可以根据设计需要来编辑该模型的program,使其作为一个程序来工作。通过运行该程序,上一页下一页返回7.3三维CAD软件的二次开发技术系统通过人机交互的方法来控制系统参数、特征出现与否和特征的具体尺寸等。

J-link是Pro/ENGINEER中自带的基于JAVA语言的二次开发工具。用户通过JAVA编程实现在软件Pro/ENGINEER中添加功能。

Pro/toolkit:Pro/toolkit同J-link一样也是Pro/ENGINEER自带的二次开发工具,不过它是基于C语言的。Pro/toolkit(17版本之前为Pro/develop)能实现与Pro/ENGINEER的无缝集成,是Pro/ENGINEER自带的功能最强大的二次开发工具。它封装了许多针对Pro/ENGINEER底层资源调用的库函数与头文件,借助第三方编译环境进行调试。Pro/toolkit使用面向对象的风格,在Pro/ENGINEER与应用程序之间通过函数调用来实现上一页下一页返回7.3三维CAD软件的二次开发技术数据信息的传输。

2.Pro/toolkit技术简介

Pro/toolkit采用的是功能强大的面向对象的方式来编写的。因此,用来在Pro/ENGINEER和应用程序之间传送信息的数据结构对应用程序来讲是不可见的,而只能通过Pro/toolkit中函数来访问,在Pro/toolkit中最基本的两个概念是对象(Object)和行为(Action)。在Pro/toolkit中每个C函数完成一个特定类型对象的某个行为,每个函数的命名约定是“Pro”前缀+对象(Object)的名字+行为的名字。一个Pro/toolkit的对象是一个定义完整、功能齐全的C结构,能够完成与该对象有关的行为,大多数对象对应的是Pro/ENGINEER数据库中的一个元素(Item)例如:特征面等。然而,另外一些对象就比较抽象或是暂时的上一页下一页返回7.3三维CAD软件的二次开发技术Pro/toolkit中还有其他一些特点:统一的、广泛的函数出错报告;统一的函数或数据类型的命名约定等。使用Pro/toolkit开发应用程序包含三个步骤:编写源文件,生成可执行文件,可执行文件在Pro/ENGINEER中注册并运行。源文件包括三种类型:菜单文件、窗口信息文件和C程序。其中:C程序文件包含了用户定义的菜单内容与菜单动作。在定义动作函数时可以调用本身的Pro/toolkit函数,也可以调用用户自定义函数。为了将菜单文件载入,需要在C文件中完成菜单调入,菜单注册和菜单动作定义三个步骤。

Pro/ENGINEER为应用程序提供了两种工作模式:同步模式和异步模式,由于后者使用复杂而很少使用。前者又分为Spawn(多进程模式)或,dll(动态链接库模式)根据工作上一页下一页返回7.3三维CAD软件的二次开发技术模式不同,编译时的生成文件也不同。若采用Spawn模式工作,必须将源文件编译生成:若用,dll模式工作,将把源文件生成动态链接库应用程序有两种注册方式:自动注册和手工注册。自动注册是指将注册文件放在指定的目录下(如Pro/ENGINEER的启动目录)运行Pro/ENGINEER,此时注册文件中的所有Pro/toolkit应用程序将被自动注册。手工注册是指注册文件不在指定目录时,启动Pro/ENGINEER之后在UTILITIES下选择“AuxiliaryApplication”菜单项,然后在对话框中选取"Register”进行注册。上一页下一页返回7.3三维CAD软件的二次开发技术7.3.3Solidedge的二次开发

Solidedge软件是美国UG公司的四大产品之一,它基于Windows平台,兼具二维和三维的功能且界面友好,目前在国内已经有很大的装机量。该软件特点是:具有完全可编辑的、基于特征的参数化实体造型功能;支持自上而下和自下而上的大规模装配;具有二维工程图模块,可独立绘图和标注,同时也可以由三维实体直接生成各视图和剖面图等;具有增强的镀金模块;具有三维装配件的爆炸、渲染和动画制作功能;具有一定的文件管理功能,如版本管理、查询等

Solidedge的开发接口采用OLEAutomation技术。OLEAutomation建立在以>M基础之上,具有语言无关性和进程透明性。它不同于以往CAD系统采用的专用开发上一页下一页返回7.3三维CAD软件的二次开发技术工具,如AutoCAD的AutoLisp语言。自动化技术通过Windows里COM的IDispatch接口。使不同程序之间进行相互通讯。用户可以通过任何支持OLEAutomation的语言对Solidedge进行二次开发,其中包括VC,BC,VB和Delphi等,甚至可以使用Office里的宏命令(Macro)直接驱动Solidedge。

Solidedg。的开发接口主要是通过自动化对象的方法(Method)和属性(Property)来实现的。属性是自动化对象的数据特征,本质上是一个值,既可以被设置,也可以被获取。一般来说,属性以只读方式居多。方法要比属性灵活得多,它可以不带参数,也可以具有多个参数。利用方法可以实现多种操作,如设置和获取某些对象的数据,或完成某些动作等。上一页下一页返回7.3三维CAD软件的二次开发技术

Sohdedge的二次开发主要就是靠定义特征的属性、调用方法对象来实现的。其中以VB对Sohdedge的开发最为简单,Sohdedge内部的help文件中对各特征的属性和方法的说明就是用VB编写的,程序开发人员可方便地调用各个已经成熟的模块,利用参数化造型的方法,开发出实用的Solidedge程序。当Solidedge被安装之后,其相关的模块会自动注册到OLEAutomation中,VB可以很方便地进行调用。7.3.4UG与CATIA的二次开发

Unigraphics(以下简称UG)是美国EDS(ElectronicDataSystem)公司推出的一个著名的CAD/CAM/CAE软件包。UG所提供的二次开发语言模块上一页下一页返回7.3三维CAD软件的二次开发技术UG/OPENGRIP,UG/OPENAPI和辅助开发模块UG/OpenManuscript与UG/Openuistyle:及其良好的高级语言接口,使UG的图形功能和计算功能有机地结合起来,成为便于用户开发专用的CAD系统

UG/OPENGRIP提供的二次开发语言模块,UG的内嵌语言,能够实现强大的图形绘制、装配、工程图的生成和一定的文件管理功能,主要进行UG的功能调用。GRIP程序一般是在UG平台下编制的,有独特的开发工具、编译链接过程、程序语法和文件格式

UG/OpenAPI是UG提供的另外一个二次开发语言模块,也具有与外部高级开发语言接口。UG/OpenAPI程序所能实现的UG功能与GRIP程序大致相同。不同的是,UG/OpenAPI程序是用C编制的,因此,它除了能够在上一页下一页返回7.3三维CAD软件的二次开发技术UG的环境下对UG进行功能调用外,还能在程序中使用C支持的全部功能,并且支持对GRIP程序的调用,有很大的灵活性。UG/OpenAPI提供的UG功能全部以标准C语言头文件(.h文件)的形式保存在UG中,不同的头文件包含了不同的UG功能。由于与各种C编辑环境(TC,BC,VC等)有良好的兼容性,UG/OpenAPI程序的使用范围最为广泛。

CATIA(ComputerAidedThree-dimensionalInteractive)是法国达索飞机公司(Dassault即stem)在其开发的系统设计应用软件的基础上与美国IBM公司合作研究发展、共同支持和销售的CAD/CAM/CAE软件系统。CATIA是一个先进的自动设计、制造及工程分析软件,主要应用于机械制造、工程设计及电子行业上一页下一页返回7.3三维CAD软件的二次开发技术基于CATIA的应用开发可分为以下几类:批处理、IUA(InteractiveUserAccess)命令、GII(GraphicsInteractiveInterface)交互功能。通常使用的开发工具为IUA,但IUA仅提供应用程序与CATIA的交互功能,而实际用户界面则需要AIX系统及CATIA支持的Motif图形界面工具来开发。

OSF/Motif是开放软件基金会在20世纪90年代初期推出的一个图形用户界面系统,目前它已经作为软件产品在多种操作系统平台上实现。在图形用户界面的层次结构中,Motif位于用户模型层,它建立在X窗口系统之上,也就是说它以X-Windows窗口系统作显示模型和窗口模型。Motif风格的用户界面有两个显著的特点:第一,它支持鼠标和键盘两种交互输入工具;第二,它支持三维的视感构件。其上一页下一页返回7.3三维CAD软件的二次开发技术开发过程这里不再详细叙述,请参考相关文献一般而言,现代CAD的二次开发工具有两大类:一类是基于OLEAutomation的工具,即第三方工具,如文中所述的开发AutoCAD的VBA技术,用于Solidedg。开发的VB模块等;另一类是CAD软件本身所提供的开发平台,如Pro/ENGINEER的Pro/toolkit,UG的UG/OpenAPI等。但现代CA二次开发工具都朝着面向对象技术发展,人性化的设计界面、强大的兼容性和可移植性是必不可少的。当今CAD技术的主要潮流是参数化造型与变量化造型,而CAD的二次开发技术也正是基于这两大理论之上的。随着网络技术的发展,设计、开发工作的数字化、异地化也是必然的发展趋势,CAD软件二次开发工程的实现将更加灵活、有效。上一页返回7.4AutoCAD的常用零件二次开发随着CAD/CAM技术的发展应用及市场经济的全球化,各企业的产品纷纷走向世界,要求顺应市场经济规律,采用CAD/CAM技术改造落后的设计制造和营销手段,企业才能以短周期、高质量、低成本的产品强占市场。目前,工程领域兴起的并行工程、智能技术、集成技术、产品数据管理(PDM)技术应是企业发展的方向,也是现代设计制造系统的发展目标。因此,推广应用(C3P(CAD/CAM/CAE&PDM)技术势在必行。企业要改造落后技术,要实现设计制造自动化、工程数据和过程面向产品生命周期一体化,都需建立起适合本企业的常用零件库,这样,产品开发设计中就不必过多地考虑标准件的实现细节,而将主要精力致力于新产品的开发上。对于机械制造行业,开发出标准件的计算方法库,建立零件图形库更是具有重大的意义。下一页返回7.4AutoCAD的常用零件二次开发7.4.1常用零件CAD系统的基本组成常用零件CAD将绘图初始化、特征设计绘图、国标零件库、图形标注、图库管理五个子系统结合在一起,形成了数据结构统一、全面开放的CAD系统,图样是表达工程设计的语言,CAD国标绘图依据最新的国家机械制图标准,提供覆盖整个制图过程、使用方便内容全面的绘图工具。如图7-1所示。7.4.2CAD系统的数据处理零部件的方案构思和技术设计,都需查阅设计手册、检索设计资料(如各种标准、规范、经验数据、经验公式等)。如何有效地处理这些设计资料是CAD系统中十分关键且复杂的问题,由于手册及标准中的资料大多是线图或表格方式,上一页下一页返回7.4AutoCAD的常用零件二次开发因而,归结为对线图及表格的处理。①简单数表的处理。机械设计手册中有很大部分是简单数表,通常可用建立数据文件的方法处理。但是,这种方法却有数据冗余大、存取效率低、管理不便等缺点。因此,CAD系统中采用建立数据库的方法存放和管理这些数据,以供系统运行时检索、查询。②列表函数数表(表格)的处理。需要列表函数数表的处理与简单数表的处理不尽相同,除与简单数表一样,需要解决存储和检索问题外还有插值计算,根据列表函数数表中给出的函数值和自变量数值,分别将其作为曲线拟合的节点进行数据拟合,得到拟合近似公式。上一页下一页返回7.4AutoCAD的常用零件二次开发7.4.3系统菜单的定制技术为了保护用户及开发商的既有积累,使新产品过渡较为平缓,又能充分地挖掘Microsoft的最新技术潜力,AutoCAD2004既保留了原有菜单的结构,又进行了新的扩展,用户界面进行了方便的定制,使得用户和开发商都能充分使用Windows2000/NT平台的图形用户界面(GUI)定制技术。AutoCAD使用基础菜单和局部菜单。基础菜单是上一次使用MENU装载的菜单。局部菜单是用MENU,LOAD命令装载的任何命令装卸局部菜单,并让用户在菜单条上增加和安排下拉菜单。当局部菜单被加载,所有的由该菜单定义的菜单域都可使用。当然也可使用MENU,LOAD命令卸载局部菜单,即从菜单上一页下一页返回7.4AutoCAD的常用零件二次开发条上去调下拉菜单。本系统中采用了局部菜单装卸的办法。在AutoCAD2004的菜单文件acad.mnu中作如下修改:***POPID_TYJ通用件设计。。(command"menuload"“c:/programfilies/AutoCAD/support/通用件commoncomponent.)

这样,当用户在AutoCAD2004的菜单“绘图”下选择“常用件设计”时,系统就会自动装卸局部菜单“常用.mnu",并且会在“绘图”后动态加入有关常用件设计的新的下拉菜单。用户只需选择AutoCAD2004的下拉菜单“绘图”的子菜单项“常用件设计”,系统将会自动在菜单节“绘图前加入菜单节“零件选择”,这时用户可在上一页下一页返回7.4AutoCAD的常用零件二次开发“零件选择”菜单节下选择所要设计的零件总之,本系统注重工程应用,将零件的设计计算与辅助绘图集成在统一的环境中,从而实现了设计与绘图一体化,明显提高了产品的设计效率。开放性好。本系统采用了模块化结构,使得用户可以扩展CAD系统,例如加入新的零件类而不会影响到其他模块的运行和工作,这使用户可在CAE的基础上做进一步的开发工作。上一页返回7.5AutoCAD开发工具综述随着CAD技术的发展,CAD领域的支撑软件也越来越多,国内外许多公司相继推出了其主导产品,Autodesk公司是目前世界上比较成功的CAD领域的开发商,其开发的AutoCAD一直是CAD市场中的主流产品,随着AutoCAD的日益普及,在其上进行二次开发的工具也相继由该公司推出。许多企业购进AutoCAD软件,并非只是用作“代替图板”。只有真正地在其上实现了二次开发,才能充分发挥AutoCAD的作用。到目前为止,Autodesk公司提供了4种主要的二次开发工具:AutoLisp(VisuaLisp),ADS,ObjectARX及VBA(VB)。本文就此向大家分别做一介绍。7.5.1AutoLisp语言下一页返回7.5AutoCAD开发工具综述

Lisp语言是一种表处理语言,是广泛应用于人工智能的语言。AutoLisp语言完全嵌套在AutoCAD内部,同AutoCAD有机地结合成一体,它既具备一般高级语言的基本结构和功能,又具备一般高级语言所没有的图形处理能力。AutoLisp可直接调用绝大多数AutoCAD的命令,从而进行AutoCAD的二次开发。利用AutoLisp开发AutoCAD的一个典型例子就是实现参数化绘图的程序设计。

AutoLisp具有如下特点:①AutoLisp语言是一种以解释方式运行于AutoCAD内部的解释性程序设计语言。②AutoLisp没有语句概念或其他语法结构,程序非常简明。它的所有成分都是以函数形式给出的。执行Auto上一页下一页返回7.5AutoCAD开发工具综述Lisp程序就是执行一些函数,然后再调用其他函数③AutoLisp把数据和程序统一表达为表结构,故可把程序当做数据来处理,也可把数据当做程序来执行。④AutoLisp语言中的程序运行过程就是对函数的求值过程,在对函数求值的过程中实现函数的功能。⑤AutoLisp语言的主要控制结构采用递归方式。递归方式的使用,使程序简单易懂。

VisuaLisp是AutoLisp的发展,它利用可视化的编程环境为学习减小难度。它的特点可以归纳出十几条,但基本上是可视化与AutoLisp的结合,不再列出。上一页下一页返回7.5AutoCAD开发工具综述7.5.2ADS(AutoCADDevelopmentSystem)开发系统

ADS是从AutoCADRll开始引入的基于C语言开发应用程序的系统。ADS不是C语言的一个子集,也不是基于C而编制的专用语言(如Microstation的MDL),但它包括了C的全部功能。它对开发人员C语言要求较高,C是编译型语言,功能强大,因此,ADS很轻易地克服了AutoLisp所固有的许多缺点,而具有速度快、安全性高的特点。ADS不包含于AutoCAD内部,而是作为一组AutoLisp外部函数由AutoLisp解释器装入、解释并请求AutoCAD运行。其特点如下:上一页下一页返回7.5AutoCAD开发工具综述①ADS程序是一个可执行文件,需要通过AutoLisp和AutoCAD进行通信。②ADS程序更“绝缘”,ADS程序是一系列独立的过程,程序崩溃并不一定导致AutoCAD系统崩溃(尽管并不总是如此)。③ADS程序是不可重复加载的。④ADS程序的运行过程类似于宏(macro)。ADS中的函数(如ads_command)以及与AutoLisp的通信,使ADS程序的工作过程类似于自动作用的宏⑤ADS仍然只能使用传统的C语言进行编程,只能采用传统的结构化编程方式。早期国内常见的应用软件多是用ADS进行开发的,但ADS程序必须经过AutoLisp解释上一页下一页返回7.5AutoCAD开发工具综述加载,因此ADS的各方面性能受到限制。同时,随着网络技术的迅速发展,面向过程的ADS已有些力不从心了,所以,在AutoCADR13中提供了面向对象的开发工具ARX。有关ADS的实例代码,因与ARX类似,这里不再给出。7.5.3ObjectARX(AutoCADRuntimeExtension)开发系统近几年广为应用的ObjectARX是从AutoCADR13开始推出的一个全新的面向对象的开发环境,是AutoCAD提供的第一个面向对象的开发工具。它提供了以C++为基础的面向对象的开发环境及应用程序接口,能真正快速访问AutoCAD图形、数据库。ObjectARX支持面向对象编程方法,同时向下兼容ADS。它的特点是很明显的:上一页下一页返回7.5AutoCAD开发工具综述①ARX程序在很多方面与ADS程序和AutoLisp程序都不相同。最重要的一点是,ARX程序实质上是一个动态链接库(DLL),它和AutoCAD共享地址空间并且直接和AutoCAD进行通信。在ARX中,每个命令都有独立的入口。ARX程序还可以创建新的类(class),这些类可以为其他程序所共享,从而充分利用面向对象的编程的优点。ARX程序创建的实体和AutoCAD的内在实体几乎是完全等同的。②对于需要经常和AutoCAD通信的应用程序来说,ARX程序比ADS程序运行速度更快,这里的运行速度主要指是访问AutoCAD数据库的速度。但ARX更“脆弱”,ARX程序和AutoCAD共享进程空间,ARX程序崩溃通常会导致AutoCAD系统的崩溃。③相比之下,ARX程序是比宏更基本的程序。主程序上一页下一页返回7.5AutoCAD开发工具综述(AutoCAD)可调用每个由ARX程序注册的命令。④ARX程序具有ADS程序和AutoLisp程序所不具备的访问和控制AutoCAD的能力。ARX程序可以监控和处理AutoCAD各种事件,可以定义AutoCAD命令,包括可以透明执行的命令。这些命令可以像AutoCAD自身的命令一样被AutoLisp和ADS所调用。⑤ARX提供了面向对象的编程技术,面向对象的编程技术已经成为软件开发的主流技术。ARX可充分支持C++,充分支持面向对象编程技术⑥对于ARX编程,Autodesk公司建议使用VisualC++4.2及以上版本的开发环境,这一点对于语言的学习要求较高。这里给出直线绘制函数的部分代码:上一页下一页返回7.5AutoCAD开发工具综述voidmvLine(AcGcPoint3d.AcGePoint3dPt2)AcDhLine?pline=newAcDhLine(Ptl,Pt2):AcDhBlockTahle*pBlockTahle:AcdhCurDwg()->getBlockTahle(pBlockTahle.AcDh::kForRead);AcDhBlockTahleRecord*pBlockTahleRecord;pBlockTahle->getAt(ACDBMODEL_SPACEpBlockTahleRecord,AcDh::kForWrite);pBlockTahle->close();AcDhOhjectldlineld;pBlockTahleRecord-appendAcDhEntitv(lineld,pline):上一页下一页返回7.5AutoCAD开发工具综述pBlockTahleRecord->close();pLine->close();}7.5.4VBA(VisualBasicforApplication)和VB

作为从AutoCADR14之后提供的二次开发工具VBA(VB),使渴望CAD编程的人有一个更好的选择,用户不必学习ADS,ARX和AutoLisp就可以用VBA(VB)来开发AutoCAD,Autodesk公司从R14开始内置了VBA开发工具,同时提供了适于VBA(VB)开发的ActiveXAutomation对象模型。VBA(VB)的主要特点如下:①VBA最早是内嵌在Office97中的一种编程语言,它上一页下一页返回7.5AutoCAD开发工具综述易学易用,功能强大。所以Autodesk公司从Rl4之后把它也嵌入了AutoCAD中。②VBA(VB)可以利用ActiveXAutomation提供的接口访问和控制AutoCAD所有图形对象和非图形对象,并且可以访问这些对象的方法和属性。③VBA(VB)数据类型丰富、界面友好。④VBA是内嵌在AutoCAD中的一种编程语言,对平台有依赖性,但VB对此有改善。⑤正如ADS需要C语言做基础一样,VBA(VB)开发AutoCAD也必须以熟悉VB语言为前提。这里同样给出一段直线的绘制程序。用VBA编制如下:上一页下一页返回7.5AutoCAD开发工具综述Dimstet,enptAsVariantDimpromptl,prompt2AsStringDimstartpoint(1To3)AsDoubleDimendpoint(1To3)AsDoubleDimlineohjAsAcadlinepromptl=NL&”起点:”prompt2=NL&”终点:”stet=ThisDrawing.Utility.(}etPoint(,promptl)enpt=ThisDrawing.Utility.(}etPoint(stet,prompt2)startpoint(1)=stet(0)上一页下一页返回7.5AutoCAD开发工具综述startpoint(2)=sptt(1)startpoint(3)=stet(2)endpoint(1)=enpt(0)endpoint(2)=enpt(1)endpoint(3)=enpt(2)Setlineohj=ThisDrawing.ModelSpace.AddLine(startpomt,endpoint)

用VB对AutoCAD开发与VBA的主要区别是当前图形对象的引用方法不同。VB中对象均获得要使用Getohject)和CreatOhject)函数,从而有效地启动和切换AutoCAD窗口,具体代码如下:上一页下一页返回7.5AutoCAD开发工具综述PublicacadDocAsObjectPublicModSpaceAsObjectPublicacadAppAsObjectOnErrorResumeNext,0错处理

SetacadlApp=GetObject(,”AutoCAD.Application")IfErrThenErr.ClearSet=cadlApp=Create0hject(”AutoCAD.Application"IfErrThen上一页下一页返回7.5AutoCAD开发工具综述MsgBoxErr.DescriptionExitsubEndIfEndIfAcadApp.Visible=TrueSetacadDoc=acadApp.ActiveDocumentSetModSpace=acadDoc.ModelSpace接下来绘制直线的代码与VBA基本相同,只要把ThisDrawing换成acadDoc即可。上一页下一页返回7.5AutoCAD开发工具综述总之,通过以上分析可以看出AutoLisp仍然是AutoCAD的基本开发手段,它适合一般开发者用于较为简单交互性程序的开发。ADS将逐步被更为完善的ARX所取代。VBA则成为AutoCAD用户二次开发的另一支生力军。AutoCAD提供的开发手段让各类开发者都能有适合于自己的开发工具。上一页返回7.6机床夹具的二次开发在机械行业中,机床夹具设计是一项重要而常规的任务,特别是针对机床夹具零部件的设计(一般为企业内部常用件和标准件),如压板、定位销、V型块等。这些零件虽具有相似的结构,但并不具有通用性,而且尺寸需经常变动。为满足工程应用的需要,减少重复性劳动,提高设计效率,AutoCAD通过OLE(对象链接与嵌入)技术为用户提供了强大的二次开发接口,凡支持OLE比编程的开发工具,如VB,VC,Delphi,C++Builder等均可用于AutoCAD的二次开发。在此,笔者利用Delphi开发工具,它具有众多优越的特性以及很大的开放性和灵活性,它的开放体结构支持多个数据库引擎,与其他开发工具相比,Delphi的开发效率高、应用程序稳定,它与AutoCAD的ActiveXAutomation技术的结合,可提供功能强大的接口。下一页返回7.6机床夹具的二次开发7.6.1机床夹具零部件库的系统组成

1.库的信息流程机床夹具零部件库有如下几个主要的功能模块:零部件库应用程序、零部件数据库、图片库和AutoCADo“图片库”用于存放不同种类夹具的工程图,供预览用。“零部件数据库”是将机床夹具零部件国家标准GB2148-GB2269-1980中的所有零部件的尺寸数据输入计算机中,建立起多个数据文件,构成数据库。其中每种类型夹具不同规格的尺寸构成一个数据文件,供应用程序在AutoCAD中生成工程图用。功能模块的信息流程如图7-2所示。应用程序调用图片库中的某种类型夹具的工程图,在相应对话框中输入必要的上一页下一页返回7.6机床夹具的二次开发参数,并通过接口程序调用零部件数据库中相应类型夹具的某种规格的尺寸数据,最后调用各绘图程序在AutoCAD界面下生成指定规格的夹具图。

2.库的结构机床夹具的种类繁多,为便于用户很快检索到所需的零部件,有必要对夹具的种类进行合理的组织。查阅机床夹具设计手册,我们将夹具零部件分为9大类近40种不同规格,如图7-3所示(篇幅所限此处仅列出部分规格),其中:①定位元件:定位销、固定支撑、可调支撑,V型块②辅助支撑:自动调节支撑、推引式辅助支撑③导向元件:钻套,套、衬套、钻套衬套螺钉④对刀元件:对刀块、对刀用塞尺上一页下一页返回7.6机床夹具的二次开发⑤对定元件:手拉式定位器、枪栓式定位器、齿条式定位器⑥夹紧元件:螺钉、螺母、螺栓、垫圈、压板、偏心轮、支座、快速夹紧装置、其他夹紧元件⑦键:定位键、定向键⑧支柱、支脚、脚铁⑨操作件:手把、手柄以及其他专用元件:导板、薄挡块、铰链7.6.2机床夹具零部件库的界面和用法

1.机床夹具零部件库的用户界面机床夹具零部件库是一个独立的应用程序,运行时通过ActiveXAutamatio。可自动打开AutoCAD,并在其界上一页下一页返回7.6机床夹具的二次开发面上生成零部件工程图图片。运行该程序,出现机床夹具零部件库主界面。该界面由“夹具大类”下拉列表框、“夹具小类”下拉列表框、夹具零件类型列表框、两个命令按钮和图形框组成。“夹具大类”列表框用来选择夹具的9大类型;定位元件、夹紧元件和其他专用元件等。当选中其中一类后,夹具小类会显示相应的小类,同样选中其中一类后,夹具零件类型列表框也会显示相应的零件具体类型供用户选择。图形框会实时显示不同类型零件信息和内容。单击“取消”,按钮用于退出夹具库,“确定”按钮进入下一级对话框。“上一页”按钮用来回到机床夹具零部件库主界面,此窗体由详细规格框架栏、规格列表框、输入框、图形框和三个命令按钮组成。当选择不同的夹具零部件类型时,在详细规格框架栏、规格列表框、输入框和图形框会实时显示不同的上一页下一页返回7.6机床夹具的二次开发信息和内容。在机床夹具零部件库主界面中:型号输入框选择A型或B型定位衬套,图形框会实时显示相应结构,再在规格列表框选择不同的尺寸d后,单击“确定”按钮,在AutoCAD环境下自动生成所需的夹具图。

2.机床夹具零部件库的用法以选用定位衬套为例。运行数据库应用程序,首先选择夹具大类“定位元件”,然后在夹具小类下拉列表中选择“定位销”,再在夹具零件类型列表框选择“定位衬套”,此时图形框会实时显示“定位衬套”示意图。单击“确定”按钮。出现第二个对话框后分别选择夹具“定位衬套(GB2201-1980)”、型号(A或B)及内径d(如:30)后,单击“确定”按钮。运行夹具库程序后直接在AutoCAD中生成型号为A、内径d=30mm的定位衬套工作图,如图7-4所示。上一页下一页返回7.6机床夹具的二次开发7.6.3开发中的关键技术

1.采用AutoCADOLEAutomation技术利用AutoCAD所提供的ActiveXAutomation功能,可很好地实现其用高级语言进行二次开发。ActiveXAutomation是面向对象的编程接口,它使用了OLE的Automation技术,通过引用AutoCAD的类型库文件Acad.TLB,AutoCAD被登录为一个其他程序可以操作的对象,然后即可调用它的对象、属性、方法进行编程。用户可以访问AutoCAD所有的绘图对象和非绘图对象,ActiveX是微软制定的一种实现程序间通信、调用的软件复用规范,它提供了一种控制AutoCAD的机制,即凡是AutoCAD中每一个裸露的对象,如Circle,line都可以用上一页下一页返回7.6机床夹具的二次开发支持ActiveX的Delphi,VB等语言来控制。每一个对象都有其相应的属性、方法,可以读取或改变其属性,可以用方法来控制对象的动作。利用该项技术做AutoCAD二次开发,编写基于AutoCAD的数据库程序,有着显而易见的优越性,ActiveXAutomation技术为AutoCAD业已丰富的二次开发又提供了一个崭新的大地。

2.注册ActiveX类库首先要把AutoCAD的ActiveX类库在Delphi中注册使其成为Delphi中的一个可用控件,具体步骤如下:

启动Delphi;在项日菜单栏中选择输入类库;在进入人类库对话框中选择增加,并浏览到AutoCAD的系统目录中选择Acad.TLB文件;将对话框中的输入目录设置为Delphi的系统目录中的Import目录;单击“安装”,系统会提示重新上一页下一页返回7.6机床夹具的二次开发编译dclusr50.dpk文件,单击,系统就会自动生成“AutoCAD_TLB.PAS”文件。它是Acad.TLB类库,为Delphi可识别的接口文件、关闭所有文件,当提示是否保存dclusr50.dpk文件时,单击“是”,即可完成ActiveX的注册。此时在Delphi的ActiveX控件页中将会看到AutoCAD的可视控件

3.获得AutoCAD实体时像在完成以上的操作后,可在以上的控件页中选择AcadDocument控件放置在窗体中,并设置其AutoConnect属性为true,那么在此程序运行时会自动启动AutoCAD。当AutoCAD启动后,窗体中的AcadDocument控件即为AutoCAD的一个实体。在程序启动时AcadDocument控件会自动启动AutoCAD,这时AutoCAD的应用程序是上一页下一页返回7.6机床夹具的二次开发一个独立的应用平台。

4.建立夹具零部件数据库采用适合机械零件的零部件和常用件的系列设计方法,应用表格驱动几何图形。通过分析夹具零部件数据,为每一小类零部件建立数据库,每个数据库又有相应若干个数据表。将与设计有关的各种数据即将以上的近40种规格以表的形式分别存放在用Acres建立的不同数据库中,各个表都具有独立的名称,各数据库及其下的数据表结构关系与图7-3相同。建立表中记录与设计模型的联系,通过访问不同表中的记录达到改变几何图形的目的。在工程设计中,Office软件包中的Acres是一个很好的选择,它以实现选择、查询、添加、删除等操作来维护数据库的目的,并与AutoCAD有上一页下一页返回7.6机床夹具的二次开发兼容性,特别适用于小型数据库,它可以全面地支持SQL(结构化查询语句)。

这里运用了AutoCAD的ActiveXAutomation技术和Delphi进行二次开发,通过访问数据库,实现了参数化设计的要求。实践证明,它使用简单方便、迅速可靠,可以大量节省设计人员在工程出图时花费的时间和精力,具有一定的推广和借鉴价值。上一页返回7.7AutoCAD二次开发菜单的加载随着软件开发的日趋完善,大多数软件都提供用户进行二次开发的平台,使用户能够根据需要设计开发新的模块,以满足用户的多方面需求。开发完成后,使用时必然要将用户自行设计的模块加载到软件中。如果二次开发模块使用较频繁,可以考虑制作成菜单,这样使用非常方便且更加形象。

AutoCAD是使用非常广泛的绘图软件,特别是绘制二维平面图。它是一种极其灵活而又开放的应用系统,同其他软件一样,AutoCAD提供了许多开放式的接口,允许用户通过这些接口对CAD进行二次开发,用户可以通过编程的方式对其进行定制,从而满足不同的需要。近年来,较为常用的有AutoLisp和VBA。这里重点讨论AutoCAD二次开发中加载菜单的问题。

1.加载菜单的两种方式下一页返回7.7AutoCAD二次开发菜单的加载下拉菜单是AutoCAD中调用命令的有效工具,它不占用太多的屏幕空间。制作下拉菜单可以通过修改AutoCAD原始菜单后利用MENU命令加载,可以利用VBA下拉菜单的开发功能来编辑和增加现有的菜单结构。

2.菜单加载的实现以齿轮加工模块为例,采用AutoCAD中的MENU命令实现菜单加载。此模块是在AutoCAD的菜单后面加入齿轮模块的下拉菜单,其菜单下包括:直齿圆柱齿轮、斜齿圆柱齿轮、变位齿轮、人字齿轮、直齿锥齿轮、斜齿锥齿轮、曲线齿锥齿轮,共7种类型的齿轮,齿轮模块框图如图7-5所示。制作此菜单的方法是,复制AutoCAD的原始菜单文件acad.mns,打开后在popll后面添加下列内容,即可生成上一页下一页返回7.7AutoCAD二次开发菜单的加载齿轮菜单。文献【2】中对原始菜单所进行的修改有较为详细的解释,可作为参考:***POP12

。。齿轮

ID齿轮[齿轮(&(})]ID直齿圆柱齿轮[直齿圆柱齿轮]"CC-vharunmkl.mklID—斜齿圆柱齿轮[斜齿圆柱齿轮]rc"C-vharunmkl.ink2ID—人字齿轮[人字齿轮]rC-vharunmk1.ink3ID—变位齿轮[变位齿轮]1'CC-vharunmkl.ink4ID直齿锥齿轮[直齿锥齿轮]rCC-vharunink2.mkl上一页下一页返回7.7AutoCAD二次开发菜单的加载ID—斜齿锥齿轮[斜齿锥齿轮]1'CC-vharunink2.ink2ID曲线齿锥齿轮[曲线齿锥齿轮]1CC-vharunink2.ink3

mkl.mkl的内容为:直齿圆柱齿轮三维参数化设计.show,当点选齿轮模块菜单的直齿圆柱齿轮时,齿轮窗体所示窗体就会显示出来。用户就可以通过输入参数得到需要的图形。使用时打开AutoCAD,在命令行使用MENU命令,在弹出的选择菜单文件对话框中,选中需要加载菜单,就得到了齿轮模块。局部加载和全部加载的问题,主要区别在于是加载在上一页下一页返回7.7AutoCAD二次开发菜单的加载AutoCAD主菜单后,还是加载时不加入主菜单而是自成菜单。菜单加载成功后,加载工程。齿轮模块工程加载时,在主菜单的工具/宏/加载工程,然后弹出的打开VBA工程对话框,单击齿轮模块工程gear.Dvb。

这里仅以AutoCAD软件为例介绍了加载菜单的方法,利用这种方法把二次开发工程形象直观地作为AutoCAD主菜单内容,使得工程的使用方便、快捷,达到快速地启动工程的目的,为二次开发工作做了基础性的工作,提供了思路。上一页返回7.8AutoCAD二次开发中的尺寸标注

AutoLisp语言是嵌套于AutoCAD内部,将LISP语言和AutoCAD有机结合的产物,使用AutoLisp可直接调用全部AutoCAD命令,可实现参数化程序设计绘图。在程序中可对所设计的对象进行尺寸标注,也可用已标注尺寸驱动图形,实现图形的自动修改。因此,尺寸标注也是AutoLisp程序设计中的一个很重要的环节。7.8.1尺寸标注方式在AutoLisp程序中进行尺寸标注时,首先要设置尺寸标注方式。尺寸标注方式是由一组尺寸标注变量控制的,其中有些变量只是“on/off'’开关,控制文字的书写,是水平书写还是垂直书写,是写在延伸线之间还是写在延伸线之外等,如DIMSEI,DIMSE2,DIMTIH,DIMTOH,下一页返回7.8AutoCAD二次开发中的尺寸标注DIMTAD,DIMTOL等。有些变量控制尺寸或距离等,如DIMASZ,DIMTSZ,DIMCEN等,它们的值可通过输入一段距离或指定两点来确定。7.8.2尺寸标注方法在AutoLisp程序中进行尺寸标注时,可以直接利用绘图时建立的条件进行尺寸标注。

1.直接利用绘图时生成的控制点作为尺寸界线的起始点直接利用绘图时生成的控制点作为尺寸界线的起始点,这种方法比较简单。2.使用双元表响应标注命令的提示(1)程序设计上一页下一页返回7.8AutoCAD二次开发中的尺寸标注在生成装配图或较大的零件图进行尺寸标注时,实际的绘图程序会由于显示比例较小,而对象选择框相对较大,所选中的图线可能除了圆弧之外还有其他的图线,造成AutoCAD不能正确标注半径,如上述程序在Zoom.0.Olx显示操作之后,执行出错。为了解决这个问题,在标注尺寸之前可进行局部显示放大,但这会影响程序的速度,要很好地解决这个问题,可使用“双元表”。“双元表”是AutoLisp的表数据类型之一。对于一些在指目标时,所指点位与处理结果有关的命令,应当用双元表来精确响应要目标的提示。双元表中的图元名取自这条线的第2段,具体程序如下:(DefunC:fg();绘制键槽(Set(po(GetPoint"\n插入点:”))(SetQalf(GetAnglepo"\n旋转角:”))上一页下一页返回7.8AutoCAD二次开发中的尺寸标注(Set(11(GetDistpo"\n键槽长:”))(SetQh(GetDistpo"\n键槽宽:”))(Set(r(。0.5h)11(一1h))(SetQp1(Polarp0(+alf(。0.Spi))r))(SctQp2(Polarp1all11))(SetQp3(Polarp2(+alf(?1.5pi))h))(SetQp4(Polarp1(+alf(?1.5pi))h))(SPtc}pt(Cetvar"plinetype"))(SetVar"plinetype"0)(VL-CmdF"pline"p1p2"a"p3”1”p4}}(Set(ren(EntNext(EntNext(EntLast))))上一页下一页返回7.8AutoCAD二次开发中的尺寸标注(VL-CmdF"dim"”hor"p1p2"@(),10"(polarp4120))”””””PXl")(SetVar"plinetype"pt)

(2)程序分析在上述程序中,当绘制多义线时,将Pline.typ。系统变量设置成“0",则多义线的类型为标准多义线,而不是LYPolytype,这样就可以对多义线中的单个图形实体进行尺寸标注。在应用程序中使用Ent.next函数在多义线顶点间逐步跳动从而实现圆弧段尺寸的标注。在AutoCADR14以上的版本中,2D多义线如果没有使用PEDIT命令进行曲线拟合处理,则生成LW多义线。一条上一页下一页返回7.8AutoCAD二次开发中的尺寸标注LW多义线在图形数据库中被定义为单个图形实体,而标准多义线则被定义为一组子实体程序中标半径用了(ListIen(Polarp4120))表达式,显然这个双元表中的点位并没有落在所标的弧片段上,也没有必要必须落在所标的弧片段上,因为这个点所起的作用只是确定半径尺寸线的方向,这一点与手工操作有所不同。7.8.3结论①尺寸标注是AutoLisp程序设计中的一个很重要的环节,可以直接利用绘图时建立的条件进行尺寸标注,优化了程序设计②在编程时,当响应关于要目标的提示时,不是使用点位,而是使用双元表,从而大大提高了程序运行结果的稳定性。上一页返回7.9AutoCAD二次开发中幻灯片和脚本的定制

AutoCAD是作为一个通用绘图系统而设计的。但每个行业和专业都有自己的行业和专业标准。许多单位也有自己的技术规格和企业标准。每个设计工程师和绘图员更有各自独特的工作方式,因而,AutoCAD不可能完全满足每个用户的具体要求。比如,在机械图样中,所涉及的关于标题栏的问题,就会因国家或企业的不同要求会有所差异。为了解决这类问题,于是,AutoCAD系统提供了开放式体系结构

温馨提示

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

最新文档

评论

0/150

提交评论